أول مساهمة على روبي عربي من الأخ Ghassen Faidi جزاه الله خيرا 🎉
رابط المساهمة:
https://github.com/AliOsm/ruby3araby/pull/2
رابط المستودع:
https://github.com/AliOsm/ruby3araby
رابط المساهمة:
https://github.com/AliOsm/ruby3araby/pull/2
رابط المستودع:
https://github.com/AliOsm/ruby3araby
❤6
خان المُبرمجين (علي فاضل)
Photo
فكرة وجود شيء يُنفِّذ ما تطلبه منه بجودة معقولة طوال الوقت مُرهقة
تريد أن تجعله يعمل دون توقُّف لتُنجز أكبر قدر ممكن من العمل، ثم تحتاج لمراجعة جزء من هذا الإنجاز لأنك لن تستطيع مراجعته بالكامل غالبًا، ثم تحتاج لتجهيز الدفعة التالية من الأعمال، وهكذا تدور في دوَّامة لا نهاية لها.
من مشاكل هذه الدوَّامة أنك تستطيع التعامل معها بسهولة من حاسبك فقط، فكل الوسائل الأخرى جودة تجربة المستخدم فيها ضعيفة إلى حد كبير.
طبَّقت البارحة هذا الشرح:
https://sealos.io/blog/claude-code-on-phone
لربط هاتفي بحاسبي من خلال SSH للتحدِّث مع Claude Code وأنا بعيد عن الحاسب. أتابع تقدُّم المهام، وأعطيه الأوامر التالية لتنفيذها.
أُعجبت جدًّا بهذه الطريقة وهي سلسة نوعًا ما:
- تستخدم Tailscale لإنشاء شبكة خاصة بين أجهزتك
- تستخدم tmux لإنشاء Sessions على الحاسب وحفظ حالتها
- تستخدم تطبيقًا مثل Termius على هاتفك لتتحكم بالحاسب
ولكن هذه الطريقة تجعلك تغرق في الدوَّامة أكثر من السابق للأسف. للحظة ستشعر أنك أنت "عنق الزجاجة" لعجلة الإنتاجية الجميلة هذه.
فرصة تشتتك وعدم تركيزك في هذه الأزمان كبيرة جدًّا سواء على مستوى حياتك الشخصية أو اهتماماتك العملية والعلمية، لأنك تستطيع فعل كل شيء "نظريًّا" وأنت تكتب على هاتفك ودون تكلفة كبيرة إلى حد ما.
أسأل الله التوفيق وسداد الرأي لي ولكم.
تريد أن تجعله يعمل دون توقُّف لتُنجز أكبر قدر ممكن من العمل، ثم تحتاج لمراجعة جزء من هذا الإنجاز لأنك لن تستطيع مراجعته بالكامل غالبًا، ثم تحتاج لتجهيز الدفعة التالية من الأعمال، وهكذا تدور في دوَّامة لا نهاية لها.
من مشاكل هذه الدوَّامة أنك تستطيع التعامل معها بسهولة من حاسبك فقط، فكل الوسائل الأخرى جودة تجربة المستخدم فيها ضعيفة إلى حد كبير.
طبَّقت البارحة هذا الشرح:
https://sealos.io/blog/claude-code-on-phone
لربط هاتفي بحاسبي من خلال SSH للتحدِّث مع Claude Code وأنا بعيد عن الحاسب. أتابع تقدُّم المهام، وأعطيه الأوامر التالية لتنفيذها.
أُعجبت جدًّا بهذه الطريقة وهي سلسة نوعًا ما:
- تستخدم Tailscale لإنشاء شبكة خاصة بين أجهزتك
- تستخدم tmux لإنشاء Sessions على الحاسب وحفظ حالتها
- تستخدم تطبيقًا مثل Termius على هاتفك لتتحكم بالحاسب
ولكن هذه الطريقة تجعلك تغرق في الدوَّامة أكثر من السابق للأسف. للحظة ستشعر أنك أنت "عنق الزجاجة" لعجلة الإنتاجية الجميلة هذه.
فرصة تشتتك وعدم تركيزك في هذه الأزمان كبيرة جدًّا سواء على مستوى حياتك الشخصية أو اهتماماتك العملية والعلمية، لأنك تستطيع فعل كل شيء "نظريًّا" وأنت تكتب على هاتفك ودون تكلفة كبيرة إلى حد ما.
أسأل الله التوفيق وسداد الرأي لي ولكم.
❤5😱1😐1😨1
Screenshot 2026-02-18 at 11.11.01 AM.png
5.4 KB
أحدهم كان يفحص ثغرات MilkStraw AI 🤓
فتحت قائمة الوصول السريع (Command+K) في منصة MilkStraw البارحة وضغطت "/" صدفة لأجد هذا المستخدم يُحاول استخدام ezxss . com لفحص ثغرة XSS على المنصة.
الحمدلله أغلب هذه الثغرات البسيطة تُعالجها Ruby on Rails تلقائيًّا لنهتم نحن بمعالجة الثغرات في الشيفرة البرمجية التي نكتبها نحن.
وأنت صديقي، ابحث عن "/" في أسماء المستخدمين لديك 😂
فتحت قائمة الوصول السريع (Command+K) في منصة MilkStraw البارحة وضغطت "/" صدفة لأجد هذا المستخدم يُحاول استخدام ezxss . com لفحص ثغرة XSS على المنصة.
الحمدلله أغلب هذه الثغرات البسيطة تُعالجها Ruby on Rails تلقائيًّا لنهتم نحن بمعالجة الثغرات في الشيفرة البرمجية التي نكتبها نحن.
وأنت صديقي، ابحث عن "/" في أسماء المستخدمين لديك 😂
❤5😁1
أطلقنا مؤخراً في MilkStraw AI نظامًا للخصومات، وأثناء تنفيذه واجهنا تحديات تتعلق بتناسق البيانات (Data Consistency) نتيجة العمليات المتزامنة.
في هذه المقالة، استعرضت خمس مشكلات شائعة واجهتنا، وكيفية معالجتها برمجيًّا مع أمثلة توضيحية لتبسيط الفكرة.
https://www.milkstraw.ai/blog/database-race-conditions-coupon-system-rails
في هذه المقالة، استعرضت خمس مشكلات شائعة واجهتنا، وكيفية معالجتها برمجيًّا مع أمثلة توضيحية لتبسيط الفكرة.
https://www.milkstraw.ai/blog/database-race-conditions-coupon-system-rails
❤5
قلِّل استهلاك رموزك إذا كنت تستخدم Claude Code (أو غيره) 🤓
وجدت أداة rtk قبل قليل، وجربتها مع Claude Code ويبدو أنها مفيدة جدًّا
فكما هو موضح في الصورة، الأداة تستقبل مخرجات الأوامر المتعارف عليها (وهي كثيرة) والمستخدمة من قبل أدوات البرمجة بالذكاء الاصطناعي وتعيد صياغتها لتكون أكثر ملائمة للنماذج اللغوية من ناحية استهلاك الرموز.
طريقة تثبيت الأداة سهلة جدا (على الأقل على MacOS):
brew install rtk
rtk init --global
وهذا رابط المستودع:
https://github.com/rtk-ai/rtk
وجدت أداة rtk قبل قليل، وجربتها مع Claude Code ويبدو أنها مفيدة جدًّا
فكما هو موضح في الصورة، الأداة تستقبل مخرجات الأوامر المتعارف عليها (وهي كثيرة) والمستخدمة من قبل أدوات البرمجة بالذكاء الاصطناعي وتعيد صياغتها لتكون أكثر ملائمة للنماذج اللغوية من ناحية استهلاك الرموز.
طريقة تثبيت الأداة سهلة جدا (على الأقل على MacOS):
brew install rtk
rtk init --global
وهذا رابط المستودع:
https://github.com/rtk-ai/rtk
❤3
خان المُبرمجين (علي فاضل)
قلِّل استهلاك رموزك إذا كنت تستخدم Claude Code (أو غيره) 🤓 وجدت أداة rtk قبل قليل، وجربتها مع Claude Code ويبدو أنها مفيدة جدًّا فكما هو موضح في الصورة، الأداة تستقبل مخرجات الأوامر المتعارف عليها (وهي كثيرة) والمستخدمة من قبل أدوات البرمجة بالذكاء الاصطناعي…
أجريت الاختبار التالي 5 مرات على Claude Code مع وبدون استخدام rtk:
Read the changes in the last commit file by file then reply with the changed file names in a list.
كان متوسط استهلاك الرموز بدون rtk حوالي 3.2 ألف رمز، أما عند استخدام rtk فبلغ متوسط الاستهلاك 2.88 ألف رمز.
تحسين جيِّد بمتوسط 320 رمزًا تقريبًا، ولكن أحتاج لاختبار الأداة بشكل أفضل.
Read the changes in the last commit file by file then reply with the changed file names in a list.
كان متوسط استهلاك الرموز بدون rtk حوالي 3.2 ألف رمز، أما عند استخدام rtk فبلغ متوسط الاستهلاك 2.88 ألف رمز.
تحسين جيِّد بمتوسط 320 رمزًا تقريبًا، ولكن أحتاج لاختبار الأداة بشكل أفضل.
❤5
كيف أضفنا الـ Passkeys في MilkStraw AI خلال أسبوع واحد وبدون خدمات خارجية ؟.؟
في MilkStraw AI، نعتمد على Ruby on Rails مع InertiaJS و VueJS لبناء الواجهات، ومكتبة Devise لإدارة المستخدمين.
عندما قررنا تمكين الـ Passkeys، واجهتنا مشكلة: لم نجد دليلًا عمليًّا أو مقالات تشرح كيفية دمجها بسهولة باستخدام هذه الأدوات؛ لذا قررنا تنفيذها بأنفسنا ومشاركة التجربة معكم.
نشرنا سلسلة من 4 مقالات تقنية نفصِّل فيها الشيفرة البرمجية وكل ما يتعلق بالـ Passkeys. يمكنك الاستفادة منها مباشرة، أو تزويد أدوات الذكاء الاصطناعي بها لتنفيذ المهمة لك، بغض النظر عن التقنيات التي تستخدمها.
روابط المقالات في أول تعليق:
1. التجهيز وتسجيل الـ Passkeys
2. استخدام الـ Passkeys كعامل مصادقة ثنائي (2FA) ثم تسجيل الدخول بدون كلمة مرور
3. إنشاء رموز النسخ الاحتياطي (Backup codes)
4. القرارات التقنية والمفاضلات التي اتبعناها
في MilkStraw AI، نعتمد على Ruby on Rails مع InertiaJS و VueJS لبناء الواجهات، ومكتبة Devise لإدارة المستخدمين.
عندما قررنا تمكين الـ Passkeys، واجهتنا مشكلة: لم نجد دليلًا عمليًّا أو مقالات تشرح كيفية دمجها بسهولة باستخدام هذه الأدوات؛ لذا قررنا تنفيذها بأنفسنا ومشاركة التجربة معكم.
نشرنا سلسلة من 4 مقالات تقنية نفصِّل فيها الشيفرة البرمجية وكل ما يتعلق بالـ Passkeys. يمكنك الاستفادة منها مباشرة، أو تزويد أدوات الذكاء الاصطناعي بها لتنفيذ المهمة لك، بغض النظر عن التقنيات التي تستخدمها.
روابط المقالات في أول تعليق:
1. التجهيز وتسجيل الـ Passkeys
2. استخدام الـ Passkeys كعامل مصادقة ثنائي (2FA) ثم تسجيل الدخول بدون كلمة مرور
3. إنشاء رموز النسخ الاحتياطي (Backup codes)
4. القرارات التقنية والمفاضلات التي اتبعناها
🔥3
ألغيت اشتراك Cursor من أسابيع، ولم أشعر بالفرق
استخدمت Cursor لعامين تقريبًا، ولكن مع ظهور وانتشار أدوات البرمجة بالذكاء الاصطناعي كـ Claude Code وغيرها، وجدت نفسي أكتب شيفرة أقل من السابق بكثير.
فألغيت الاشتراك وانتقلت مرة أخرى إلى VSCode، وملاحظتي الأولى أن VSCode أفضل من Cursor، بمراحل 😂
حاليًّا، أحتاج المحرر فقط لمراجعة التعديلات بدقة وتعديل بعض الأسطر وكتابة ملفات MD 🤓 حتى أنني أعدت ترتيب الأزرار في VSCode ليكون زر مراجعة التعديلات في Git هو الأول.
استخدمت Cursor لعامين تقريبًا، ولكن مع ظهور وانتشار أدوات البرمجة بالذكاء الاصطناعي كـ Claude Code وغيرها، وجدت نفسي أكتب شيفرة أقل من السابق بكثير.
فألغيت الاشتراك وانتقلت مرة أخرى إلى VSCode، وملاحظتي الأولى أن VSCode أفضل من Cursor، بمراحل 😂
حاليًّا، أحتاج المحرر فقط لمراجعة التعديلات بدقة وتعديل بعض الأسطر وكتابة ملفات MD 🤓 حتى أنني أعدت ترتيب الأزرار في VSCode ليكون زر مراجعة التعديلات في Git هو الأول.
❤2
كيف استغنينا عن SSH واستبدلناه بـ AWS SSM لبنية تحتية أكثر أمانًا وتوافقية مع SOC2؟
تحدثنا في هذه المقالة عن كيفية تخصيص Kamal - الأداة التي نستخدمها لنشر منصة MilkStraw AI وخدماتها المختلفة - لاستبدال SSH بـ AWS SSM خطوة بخطوة.
لماذا قمنا بهذه النقلة؟
🔒 وصول أكثر أمانًا للخوادم دون الحاجة لمنفذ 22
🔑 إدارة مركزية للصلاحيات من خلال AWS IAM
📝 سجل كامل بعمليات الدخول والأوامر المستخدمة في كل جلسة
✅ توافقية كاملة مع متطلبات إطار SOC2
🚀 تبسيط للبنية التحتية، فلا حاجة لاستخدام VPN أو Bastion Hosts
رابط المقال:
https://www.milkstraw.ai/blog/kamal-ssm-deploy-ec2
*هذا المنشور لم يُكتب بواسطة الذكاء الاصطناعي*
تحدثنا في هذه المقالة عن كيفية تخصيص Kamal - الأداة التي نستخدمها لنشر منصة MilkStraw AI وخدماتها المختلفة - لاستبدال SSH بـ AWS SSM خطوة بخطوة.
لماذا قمنا بهذه النقلة؟
🔒 وصول أكثر أمانًا للخوادم دون الحاجة لمنفذ 22
🔑 إدارة مركزية للصلاحيات من خلال AWS IAM
📝 سجل كامل بعمليات الدخول والأوامر المستخدمة في كل جلسة
✅ توافقية كاملة مع متطلبات إطار SOC2
🚀 تبسيط للبنية التحتية، فلا حاجة لاستخدام VPN أو Bastion Hosts
رابط المقال:
https://www.milkstraw.ai/blog/kamal-ssm-deploy-ec2
*هذا المنشور لم يُكتب بواسطة الذكاء الاصطناعي*
❤1🔥1
لا داعي لاستخدام اعتماديات لا حاجة لها 🤓
أعمل على أحد المشاريع في MilkStraw AI، واحتجت إلى قراءة ملف YAML (نُحب YAML 😌). طلبت من Claude Code (كما يفعل الجميع) إضافة هذه الميزة سريعًا لتجربتها فوجدته كتب دالة باسم parseSimpleYaml تقرأ صيغةً مُبسَّطةً من ملفًّات YAML تدعم القيَم البسيطة فقط، كهذه:
name: Ali Fadel
company: MilkStraw AI
أعجبتني الفكرة، لأن ما يفعله كثير من المبرمجين تلقائيًّا هو اللجوء إلى اعتماديات جاهزة لتنفيذ هذه المهام، بينما قد تكفي أحيانًا دالة صغيرة وواضحة كالتي في الصورة، فتؤدي الغرض وتجنبك إضافة اعتمادية جديدة لا تحتاجها.
أعمل على أحد المشاريع في MilkStraw AI، واحتجت إلى قراءة ملف YAML (نُحب YAML 😌). طلبت من Claude Code (كما يفعل الجميع) إضافة هذه الميزة سريعًا لتجربتها فوجدته كتب دالة باسم parseSimpleYaml تقرأ صيغةً مُبسَّطةً من ملفًّات YAML تدعم القيَم البسيطة فقط، كهذه:
name: Ali Fadel
company: MilkStraw AI
أعجبتني الفكرة، لأن ما يفعله كثير من المبرمجين تلقائيًّا هو اللجوء إلى اعتماديات جاهزة لتنفيذ هذه المهام، بينما قد تكفي أحيانًا دالة صغيرة وواضحة كالتي في الصورة، فتؤدي الغرض وتجنبك إضافة اعتمادية جديدة لا تحتاجها.
❤3
خان المُبرمجين (علي فاضل)
Photo
حينما يُصبح البحث العلمي غير علمي 😪
بدأت العمل خلال الأسابيع الماضية على فكرة بحثية في مجال تشكيل النصوص العربية مع صديقي Ibraheem Tuffaha 🥛 حيث أن مشروع تخرجنا كان في نفس هذا المجال ولله الحمد حققنا فيه نتائج ممتازة سنة 2019.
الفكرة قديمة متجددة ولكن لم نجد الفرصة لتطبيقها، فبدأت العمل عليها بداية شهر رمضان، ولله الحمد النتائج ممتازة من أول تجربة ولا تزال في تحسُّن.
عندما وجدت النتائج جيدة وقابلة للنشر، بدأت البحث عن آخر الأبحاث في المجال لمعرفة آخر ما توصل إليه "العلم" وما حققه "الباحثون" من نتائج على بيانات الاختبار الموجودة، وهنا وجدت المشكلة.
أرقام ينشرها أصحابها فقط ليقولوا "حققنا أفضل نتائج في مجال س ولم يسبقنا لذلك أحد.."
ذكر أحد أكثر الباحثين اهتمامًا بمجال التشكيل في اللغة العربية في مقدمة ورقة بحثية له أنه حقق نتيجة س، وهي فعلا نتيجة مبهرة أُحييه عليها ووضعت نتائج تجاربنا الجديدة في ورطة.
فتحت البحث وبدأت بمراجعته مع Claude Code لأكتشف أنه وصل لـ س من خلال احتساب المسافات (Whitespaces) ومكافأة النموذج على "عدم تشكيلها"!
النتيجة الحقيقية في هذه الورقة من هذا "الباحث" كانت ص وهي أكبر من س بأكثر من 0.2% وهذا رقم لو تعلمون عظيم في مجال التشكيل.
هذا النوع من الأبحاث والباحثين - غالب الظن - هدفه وضع هذا الرقم في مقدمة البحث لجذب الانتباه، ثم يضع التفاصيل داخل الورقة، ولكن مشكلتي معه أنه يُصعِّب الأمر على من يأتي بعده بغير وجه حق.
فأنا الآن مضطر لمقارنة نتائجي الواقعية (احتساب النتيجة على الحروف العربية فقط) مع نتائجه الواقعية (ص) والعقيمة (س) وتبرير موقفي في البحث وشرح الفرق بين احتساب الحروف العربية فقط واحتساب غيرها من الحروف.
مكافئة النموذج على عدم تشكيله لمجموعة من الحروف التي يُمكن تجاوزها بجملة شرطية بسيطة (if-statement) ما هو إلا طريقة لتقليل الأخطاء وتحسين أرقام النموذج.
هذا ما ذكرناه في بحثنا سنة 2019 وسنبقى نذكره ونُذكِّر به بإذن الله، ليبقى الهدف هو خدمة هذه اللغة العظيمة وتحسين العلم، لا مجرد الأرقام والتفاخر والأوراق البحثية وعدد الاقتباسات.
والسلام عليكم 👋🏻
ملاحظة: لا أقول أن هذا الأمر مُتعلِّق بالباحثين العرب، ولا شك عندي في أنه مسلك يسلكه جزء لا بأس به من الباحثين حول العالم.
بدأت العمل خلال الأسابيع الماضية على فكرة بحثية في مجال تشكيل النصوص العربية مع صديقي Ibraheem Tuffaha 🥛 حيث أن مشروع تخرجنا كان في نفس هذا المجال ولله الحمد حققنا فيه نتائج ممتازة سنة 2019.
الفكرة قديمة متجددة ولكن لم نجد الفرصة لتطبيقها، فبدأت العمل عليها بداية شهر رمضان، ولله الحمد النتائج ممتازة من أول تجربة ولا تزال في تحسُّن.
عندما وجدت النتائج جيدة وقابلة للنشر، بدأت البحث عن آخر الأبحاث في المجال لمعرفة آخر ما توصل إليه "العلم" وما حققه "الباحثون" من نتائج على بيانات الاختبار الموجودة، وهنا وجدت المشكلة.
أرقام ينشرها أصحابها فقط ليقولوا "حققنا أفضل نتائج في مجال س ولم يسبقنا لذلك أحد.."
ذكر أحد أكثر الباحثين اهتمامًا بمجال التشكيل في اللغة العربية في مقدمة ورقة بحثية له أنه حقق نتيجة س، وهي فعلا نتيجة مبهرة أُحييه عليها ووضعت نتائج تجاربنا الجديدة في ورطة.
فتحت البحث وبدأت بمراجعته مع Claude Code لأكتشف أنه وصل لـ س من خلال احتساب المسافات (Whitespaces) ومكافأة النموذج على "عدم تشكيلها"!
النتيجة الحقيقية في هذه الورقة من هذا "الباحث" كانت ص وهي أكبر من س بأكثر من 0.2% وهذا رقم لو تعلمون عظيم في مجال التشكيل.
هذا النوع من الأبحاث والباحثين - غالب الظن - هدفه وضع هذا الرقم في مقدمة البحث لجذب الانتباه، ثم يضع التفاصيل داخل الورقة، ولكن مشكلتي معه أنه يُصعِّب الأمر على من يأتي بعده بغير وجه حق.
فأنا الآن مضطر لمقارنة نتائجي الواقعية (احتساب النتيجة على الحروف العربية فقط) مع نتائجه الواقعية (ص) والعقيمة (س) وتبرير موقفي في البحث وشرح الفرق بين احتساب الحروف العربية فقط واحتساب غيرها من الحروف.
مكافئة النموذج على عدم تشكيله لمجموعة من الحروف التي يُمكن تجاوزها بجملة شرطية بسيطة (if-statement) ما هو إلا طريقة لتقليل الأخطاء وتحسين أرقام النموذج.
هذا ما ذكرناه في بحثنا سنة 2019 وسنبقى نذكره ونُذكِّر به بإذن الله، ليبقى الهدف هو خدمة هذه اللغة العظيمة وتحسين العلم، لا مجرد الأرقام والتفاخر والأوراق البحثية وعدد الاقتباسات.
والسلام عليكم 👋🏻
ملاحظة: لا أقول أن هذا الأمر مُتعلِّق بالباحثين العرب، ولا شك عندي في أنه مسلك يسلكه جزء لا بأس به من الباحثين حول العالم.
❤7👏2
خان المُبرمجين (علي فاضل)
Photo
ملفات MD تعمل 😁
من فترة وجدت مستودعًا باسم superpowers وهو عبارة عن Claude Code plugin (يمكن استخدامه مع بقية الـ Harnesses) وهذا كان وصفه:
An agentic skills framework & software development methodology that works.
وكالعادة، مع كثرة أخبار الذكاء الاصطناعي، تجاهلته تمامًا لأن الأمر أصبح مملًّا، الكثير من المشاريع تظهر وتختفي كل يوم دون أن نعرف جدواها.
ثم ظهر لي مستودع آخر منذ أسبوعين تقريبًا باسم:
superpowers-ruby
فتوقفت ❤️
قرأت ملف README وظهر أنه Fork من مستودع superpowers مخصص للغة Ruby، فبدأت بتثبيته لتجربته، وكانت النتيجة ممتازة خلال الأسبوعين الماضيين.
المستودع الأصلي فيه الكثير من الـ Skills ولكن أكثر ما أعجبني منها هو التالي:
- brainstorming
- writing-plans
- executing-plans
- test-driven-development
- subagent-driven-development
- systematic-debugging
طريقة تفاعل Claude Code أو Codex تغيَّرت تمامًا بعد تثبيت هذه الـ Plugin بداية من بحثه في المشكلة والتخطيط لحلها وصولًا إلى تنفيذ المهام والتأكد من إنجازها.
أنصح بتجربة هذه الـ Plugin بناءً على تجربة شخصية، سواءً superpowers أو superpowers-ruby.
الروابط:
https://github.com/obra/superpowers
https://github.com/lucianghinda/superpowers-ruby
والسلام عليكم 👋🏻
من فترة وجدت مستودعًا باسم superpowers وهو عبارة عن Claude Code plugin (يمكن استخدامه مع بقية الـ Harnesses) وهذا كان وصفه:
An agentic skills framework & software development methodology that works.
وكالعادة، مع كثرة أخبار الذكاء الاصطناعي، تجاهلته تمامًا لأن الأمر أصبح مملًّا، الكثير من المشاريع تظهر وتختفي كل يوم دون أن نعرف جدواها.
ثم ظهر لي مستودع آخر منذ أسبوعين تقريبًا باسم:
superpowers-ruby
فتوقفت ❤️
قرأت ملف README وظهر أنه Fork من مستودع superpowers مخصص للغة Ruby، فبدأت بتثبيته لتجربته، وكانت النتيجة ممتازة خلال الأسبوعين الماضيين.
المستودع الأصلي فيه الكثير من الـ Skills ولكن أكثر ما أعجبني منها هو التالي:
- brainstorming
- writing-plans
- executing-plans
- test-driven-development
- subagent-driven-development
- systematic-debugging
طريقة تفاعل Claude Code أو Codex تغيَّرت تمامًا بعد تثبيت هذه الـ Plugin بداية من بحثه في المشكلة والتخطيط لحلها وصولًا إلى تنفيذ المهام والتأكد من إنجازها.
أنصح بتجربة هذه الـ Plugin بناءً على تجربة شخصية، سواءً superpowers أو superpowers-ruby.
الروابط:
https://github.com/obra/superpowers
https://github.com/lucianghinda/superpowers-ruby
والسلام عليكم 👋🏻
❤3
خان المُبرمجين (علي فاضل)
Photo
اهتمامنا بجمالية الشيفرة البرمجية قد يُفقدنا الأداء أحيانًا!
كنت أعمل البارحة على مشروع جانبي، واحتجت إلى معالجة بعض النصوص العربية، فكتبت دالة شبيهة بالتي في الصورة.
الدالة بسيطة: تستبدل الألف المهموزة أو الممدودة بألف عادية، والألف المقصورة بياء، والأرقام العربية (أو الهندية) بأرقام ASCII الإنجليزية (والخلاف حول تسمية هذه الأرقام لا ينتهي 😂).
في Ruby توجد دالة اسمها tr، وهي اختصار لكلمة translate. تستقبل سلسلتين نصيتين، ثم تستبدل كل حرف من السلسلة الأولى بالحرف المناظر له في السلسلة الثانية، داخل النص الذي تُستدعى عليه الدالة (text في مثالنا).
كتب Codex الدالة باستخدام سلسلة من الاستدعاءات المتتالية للدالة tr، بحيث يستبدل كل استدعاء جزءًا من الحروف المستهدفة.
وخلال مراجعتي للدالة، طلبت منه إجراء بعض الاختبارات للمقارنة بين سرعة تنفيذها عند استخدام سلسلة من الاستدعاءات، وبين سرعتها عند الاكتفاء باستدعاء واحد فقط يضم جميع الحروف. والمنطق يقول إنها ستكون أسرع في الحالة الثانية، وهذا ما حدث فعلًا.
كانت النتيجة أن الدالة ذات الاستدعاء الواحد أسرع بنحو الضعف من الدالة التي تستخدم سلسلة من الاستدعاءات.
قد يبدو الفرق ضئيلًا، لأنه يُقاس بالميكروثانية، لكن في الشيفرات التي تُستخدم بكثرة ومع ملايين الطلبات والمستخدمين، قد يصبح هذا الفرق مؤثرًّا.
الهدف توضيح فكرة واحدة: قد نخسر شيئًا من الأداء مقابل جمالية الشيفرة، وقد نخسر شيئًا من الجمالية مقابل الأداء، وهذا قد يكون مقبولًا بحسب السياق. لكن المهم أن يكون المبرمج واعيًا عند اتخاذ القرار.
والسلام عليكم 👋🏻
كنت أعمل البارحة على مشروع جانبي، واحتجت إلى معالجة بعض النصوص العربية، فكتبت دالة شبيهة بالتي في الصورة.
الدالة بسيطة: تستبدل الألف المهموزة أو الممدودة بألف عادية، والألف المقصورة بياء، والأرقام العربية (أو الهندية) بأرقام ASCII الإنجليزية (والخلاف حول تسمية هذه الأرقام لا ينتهي 😂).
في Ruby توجد دالة اسمها tr، وهي اختصار لكلمة translate. تستقبل سلسلتين نصيتين، ثم تستبدل كل حرف من السلسلة الأولى بالحرف المناظر له في السلسلة الثانية، داخل النص الذي تُستدعى عليه الدالة (text في مثالنا).
كتب Codex الدالة باستخدام سلسلة من الاستدعاءات المتتالية للدالة tr، بحيث يستبدل كل استدعاء جزءًا من الحروف المستهدفة.
وخلال مراجعتي للدالة، طلبت منه إجراء بعض الاختبارات للمقارنة بين سرعة تنفيذها عند استخدام سلسلة من الاستدعاءات، وبين سرعتها عند الاكتفاء باستدعاء واحد فقط يضم جميع الحروف. والمنطق يقول إنها ستكون أسرع في الحالة الثانية، وهذا ما حدث فعلًا.
كانت النتيجة أن الدالة ذات الاستدعاء الواحد أسرع بنحو الضعف من الدالة التي تستخدم سلسلة من الاستدعاءات.
قد يبدو الفرق ضئيلًا، لأنه يُقاس بالميكروثانية، لكن في الشيفرات التي تُستخدم بكثرة ومع ملايين الطلبات والمستخدمين، قد يصبح هذا الفرق مؤثرًّا.
الهدف توضيح فكرة واحدة: قد نخسر شيئًا من الأداء مقابل جمالية الشيفرة، وقد نخسر شيئًا من الجمالية مقابل الأداء، وهذا قد يكون مقبولًا بحسب السياق. لكن المهم أن يكون المبرمج واعيًا عند اتخاذ القرار.
والسلام عليكم 👋🏻
❤5👍1
This media is not supported in your browser
VIEW IN TELEGRAM
كتبت نفس البرنامج 3 مرات بـ 3 لغات مختلفة 😂 ذكرت هذا الأمر في هذا المنشور:
https://t.me/programmerskhan/269
واليوم انتهيت من المراجعة النهائية لتطبيق سطح المكتب الخاص بتحويل والمبرمج حدسيًّا (Vibe Coded) باستخدام Tauri (Rust + Vue3) لتحويل ملفات PDF والصور إلى نصوص بصيغة TXT و DOCX من خلال Google Drive OCR.
مشروع من الزمن الجميل، لا نماذج لغوية عملاقة ولا خوارزميات معقدة، مجرد API calls بسيطة باستخدام Google Drive API.
جودة التحويل ممتازة مقارنة بوقت المعالجة والموارد المطلوبة، يمكنكم تحميل نسخة البرنامج المتوافقة مع نظام تشغيلكم من هذا الرابط:
https://tahweel.ieasybooks.com
https://t.me/programmerskhan/269
واليوم انتهيت من المراجعة النهائية لتطبيق سطح المكتب الخاص بتحويل والمبرمج حدسيًّا (Vibe Coded) باستخدام Tauri (Rust + Vue3) لتحويل ملفات PDF والصور إلى نصوص بصيغة TXT و DOCX من خلال Google Drive OCR.
مشروع من الزمن الجميل، لا نماذج لغوية عملاقة ولا خوارزميات معقدة، مجرد API calls بسيطة باستخدام Google Drive API.
جودة التحويل ممتازة مقارنة بوقت المعالجة والموارد المطلوبة، يمكنكم تحميل نسخة البرنامج المتوافقة مع نظام تشغيلكم من هذا الرابط:
https://tahweel.ieasybooks.com
❤8