خان المُبرمجين (علي فاضل)
535 subscribers
91 photos
9 videos
115 links
قناة أنشر فيها ما أتعلمه خلال عملي على مشاريعي الخاصة 👀
Download Telegram
إذا كنت تستخدم Docker على MacOS فلا تستخدم Docker Desktop، فقط ثبّت Docker CLI من خلال الأمر brew install docker ثم استخدم Colima كـ runtime

https://github.com/abiosoft/colima
4
بعد انقطاع أسبوع تقريبا عن Discord لأسباب خارجة عن إرادة الشعب، عدت اليوم بعد تثبيت WARP من Cloudflare سهل التثبيت ويعمل بدون مشاكل 😄

وبعد مراجعة كل ما فاتني من رسائل، وجدت هذا الرابط في رسالة منها:
https://railsblocks.com

قد تكون أفضل مكتبة مكوِّنات واجهة مستخدم عرفتها إلى الآن مخصصة لإطار عمل Ruby on Rails، جارٍ التجربة 🤩
3
انتهت الدراما الحاصلة في مجتمع Ruby أخيرا 🤓

https://www.ruby-lang.org/en/news/2025/10/17/rubygems-repository-transition

النتيجة: Bundler و RubyGems ستُدار كما تُدار لغة Ruby من قِبل Matz وفريق لغة Ruby الأساسي وستنتقل المستودعات من مؤسسة RubyCentral على GitHub إلى مؤسسة Ruby 🎉
7
خوادم Discord أنصح كل مهتم بـ Ruby on Rails بالانضمام إليها:
- Naming Things: https://discord.gg/2Kxg6fbd
- GoRails: https://discord.gg/gorails-874684608686477352
- Kamal: https://discord.gg/UEee8VeK
- Masilotti.com: https://discord.gg/sxP2gdWw
8👍1
من مشاكل النماذج اللغوية في البرمجة هي مشكلة وهم الكمال (تسمية مُنمّقة 😂).

مثلا، تطلب من النموذج تعديل دالة معينة لتغيير شكل القيمة الخارجة منها، فيبدأ النموذج بـ"التفكير" خارج نطاق المطلوب و"يخطط" للتعديلات المطلوبة في المواضع التي تُستخدم فيها هذه الدالة.

هذا الأمر يشتت النموذج أحيانا ويُنتج تعديلات كثيرة قد لا تحتاجها أثناء تجربتك للفكرة التي طلبتها منه.

لذلك أصبحت دقيقا جدا في صياغة طلباتي وفي كل مرة أخبره "لا تهتم باستخدامات هذه الدالة، سأعدلها لاحقا بنفسي".
6👍1
كنت أشرح Hotwire (وهو الـ Frontend Stack الخاص بـ Ruby on Rails) خلال جلسة لمشاركة المعرفة في MilkStraw AI واكتشفنا أن منصتنا تُعيد تحميل الصفحة بالكامل عند التنقّل بين الصفحات!

وقبل أن تقول أن هذا هو الطبيعي، فيا صديقي Turbo (وهي جزء من Hotwire) تضمن لك تحميل الصفحة مرة واحدة، ثم مع كل تنقّل لصفحة جديدة تقوم Turbo بتغيير الـ Body الخاص بالصفحة فقط ولا تُعيد تحميل كل مكونات الصفحة من CSS و JS وغيرها.

في أي مشروع يستخدم Ruby on Rails، التنقّل بين الصفحات يتم من خلال طلب أو Request من نوع Fetch من خلال JS ولا نستخدم (في غالب الأحيان) أي طلبات من نوع Document، كما هو موضّح في الصورة.

الطلبات من نوع Fetch لا تُعيد تحميل الصفحة ومكوناتها بالكامل، أما الطلبات من نوع Document فهي تُعيد تحميل كامل مكونات الصفحة، وهذا هو الفرق الأساسي.

لم نهتم لإيجاد الحل خلال جلسة مشاركة المعرفة لأننا وجدنا المشكلة في أول 5 دقائق منها وكان هناك الكثير من الأشياء لشرحها.

قبل النوم، فتحت تطبيق GitHub على الهاتف وسألت Copilot عن المشكلة، وكان جوابه سيئًا وغير مفيد، لكنه كان ملهما 😂

بعد قراءة الجواب، فتحت ملف head.rb وهو المكوّن الخاص برأس الصفحة (HTML head) وقرأته، لأجد السطر التالي:

raw(cloudflare_turnstile_script_tag)


نستخدم في MilkStraw AI خدمة Cloudflare Turnstile، وهذا السطر يُضيف الـ Script الخاص بالخدمة إلى رأس الصفحة، ولكن خلال عملي على مشروع الجامع سبَّبَ لي هذا السطر مشكلة من نفس النوع، إعادة تحميل كاملة للصفحة!

ذهبت إلى ملف head.rb في مشروع الجامع لأجد أنني أزلت السطر السابق واستبدلته بشيفرة برمجية أخرى تجدونها في هذا الرابط:
https://github.com/ieasybooks/aljam3-web-app/blob/main/app/components/head.rb#L73-L78

وكان السبب:

Renders the below script tag with 
data_turbo_temporary: true
, which causes full page reloads.


أي أن استخدام cloudflare_turnstile_script_tag كان فعلا يسبب إعادة تحميل كاملة للصفحة في الجامع بسبب استخدام data_turbo_temporary: true.

أضفت نفس التعديل إلى MilkStraw AI (وكان طلب التعديل رقمه 1,000 على GitHub 🎉) ونشرنا النسخة الجديدة من المنصة وحُلَّت المشكلة 🚀

كانت المشكلة تتعلّق بكيفية عمل ميزتين من ميزات Turbo:
- data-turbo-temporary
- data-turbo-track

يمكن أن تقرأ عنهم أكثر من هذه الصفحة:
https://turbo.hotwired.dev/reference/attributes

والسلام عليكم 👋🏻
6👍3
لا أنشر خارج نطاق التقنية غالبا، ولكن السيد عمر يُبدع 😎✌🏻

https://youtu.be/IflzCK3JB2Q
9