خان المُبرمجين (علي فاضل)
535 subscribers
91 photos
9 videos
115 links
قناة أنشر فيها ما أتعلمه خلال عملي على مشاريعي الخاصة 👀
Download Telegram
هل جرّبت Mise من قبل؟
https://mise.jdx.dev

منذ سنتين كنت مقتنعا باستخدام DevContainers كبيئة تطوير أساسية في كل مشاريعي، ونشرت عن هذا بعض المنشورات وسجّلت تجربتي في طريقة استخدامه ومميزاته وعيوبه، يمكنك الرجوع إليها من هنا:
https://www.youtube.com/watch?v=S3EPbM7Eh28

وكنت أناقش أحد الأصدقاء باستمرار عن فائدة الـ DevContainers وكم هي جميلة وهو ينصحني بتجربة Mise.

في مشروعي الأخير "الجامع" قررت استخدام Mise والاستغناء عن الـ DevContainers (وليس Docker) وكانت التجربة مختلفة تماما!

تستطيع من خلال Mise إدارة اعتماديات المشروع وإصداراتها مثل لغة البرمجة والأدوات الجانبية التي تحتاجها في تطوير مشروعك.

أما الخدمات مثل قاعدة البيانات الرئيسية وقاعدة بيانات التخزين المؤقت (Caching) ومحرك البحث، يمكنك الاعتماد على Docker في ذلك لأن تجربتي في تثبيت هذه الخدمات من خلال Mise لم تكن لطيفة 😂

بهذه الطريقة تُصمم بيئة تطوير قابلة لإعادة الإنتاج على كل أنظمة التشغيل بسرعة وكفاءة عالية.

أعمل الآن على نقل كل مشاريعي من DevContainers إلى Mise وبدأت هذا الأمر من خلال إنشاء قالب لمشاريع Ruby on Rails يستخدم Mise، يمكنك الاطلاع عليه من هنا:
https://github.com/ieasybooks/ruby-on-rails-template

ونعود ونسأل، هل جربت Mise من قبل؟ شاركنا تجربتك.

والسلام عليكم 👋🏻
3
وعليكم السلام ورحمة الله وبركاته،

جربت خلال الأيام الماضية Lovable و Replit و Firebase Studio لتصميم صفحة تعرض منتجات مبادرة الكتب المُيسّرة وبعض الإحصائيات. حاولت كتابة التفاصيل في الـ Prompt وجرّبت أكثر من تجربة على كل منصة منها، ولكن لم تكن النتائج مرضية.

التصاميم بسيطة جدا ولا يوجد فيها التفاعل المطلوب لواجهة المبادرة، واتباع هذه المنصات للتعليمات لم يكن بالكفاءة المطلوبة. غالبا المشكلة في استخدامي لها، فهذه أول تجربة لي معها وأحتاج لاستخدامها بكثافة أكبر.

لا أستطيع الحكم بشكل نهائي، ولكن أنصح الجميع بتجربتها، أعطتني التصاميم الناتجة بعض الأفكار لإضافتها للصفحة التي كنت أريد تصميمها، وكذلك بعض الأفكار عن كيفية تصميم مثل هذه المنصات في حد ذاتها.

بالنسبة لي كان Firebase Studio الأكثر استخداما لأنه مجاني، ثم Replit لأن الحصة المجانية كبيرة مقارنة مع Lovable (إذا استبعدنا أمر الحصة اليومية في Lovable). مدة تفكير Replit كانت الأطول، مقارنة مع Firebase Studio كان الأسرع في التنفيذ.

من مميزات Replit تقديم حلول متكاملة لقاعدة البيانات والمستخدمين وغيرها في المنصة نفسها ووجود ملف replit.md والذي يحتوي على تفاصيل مشروعك، لم ألحظ وجود شيء مشابه في باقي المنصات.

أرى أن الشيفرة البرمجية الناتجة عن هذه المنصات تحتاج لمراجعة من مختص قبل استخدامها (إذا أردت استخدامها خارج المنصة نفسها)، فكمية الاعتماديات المستخدمة في المشاريع كبيرة، وإصدارات بعضها كان قديما، فمثلا Firebase Studio كان يستخدم TailwindCSS الإصدار الثالث.

أخيرا، لا أتمنى استخدام مثل هذه الأدوات بشكل أساسي، ولكني مجبر 😅 الوقت محدود وهذه الأدوات رغم ما فيها وما تسببه من مشاكل فهي ترفع الإنتاجية وتُساهم في إنتاج أفكار جديدة تختصر عليك عناء البحث والتطوير.

والسلام عليكم 👋🏻
👍31
ليس من الضروري أن تكون المساهمة شيفرة برمجية!

كنا نواجه مشكلة في موقع "الجامع" وهي تصنيف مواقع الفحص له على أنه موقع مشبوه ويحتوي على برمجيات ضارة، وأنشأت هذه المهمة لحل هذه المشكلة بعد الإطلاق:
https://github.com/ieasybooks/aljam3-web-app/issues/61

فساهم كل من سامح عمّار وأحمد نضال لحل المشكلة من خلال مراسلة المواقع المعنية كـ BitDefender و DrWeb وتوضيح المشكلة والحمدلله أزالت هذه المواقع الجامع من قاعدة بياناتها 🥳

تأثير هذا كان واضحا، فعلى سبيل المثال، لم أكن أستطيع تصفح الجامع من حاسوب الشركة بسبب وجوده في قواعد بيانات هذه المواقع، ولكن بعد حل المشكلة أصبح يفتح على حاسوب الشركة بدون مشاكل 🚀

يوجد الكثير من المهمات التي يمكنك المساعدة في تنفيذها على الجامع (بدون كتابة شيفرة برمجية واحدة)، اطلع عليها من هنا:
https://github.com/ieasybooks/aljam3-web-app/issues

كُن مساهما ولا تكن من المتفرجين 🤩
7
خلال القراءة في كتاب لغة Rust الرسمي وجدت قسمًا غريبا: "كلمات محجوزة للاستخدام المستقبلي"

كلنا يعرف الكلمات المحجوزة مثل كلمة def في Ruby و Python وكلمة class الموجودة في أغلب اللغات، ولكن هذه أول مرة أجد لغة برمجة تحجز بعض الكلمات دون أن تستخدمها تحسبًا للتطورات المستقبلية!

هذه قائمة بالكلمات المحجوزة غير المستخدمة:
abstract
become
box
do
final
gen
macro
override
priv
try
typeof
unsized
virtual
yield

المصدر:
https://rust-book.cs.brown.edu/appendix-01-keywords.html#keywords-reserved-for-future-use
2🤔1🌚1
تشعر بأن الكاتب يتحدّث عن لغة كلنا نعرفها 😂
😁71
سؤال آخر الليل:

إذا ضمّنت مقطعا من YouTube في موقعك، هل يمكنك منع الإعلانات عن المقطع كما تفعل إضافات المتصفح 🤔
3
للمهتمين بالترجمة، لدينا قائمة تتكون من 105 تصنيف من تصنيفات الكتب في موقع "الجامع"، تجدها هنا:
https://github.com/ieasybooks/aljam3-web-app/issues/92

نُحاول ترجمة هذه التصنيفات إلى اللغة الإنجليزية لتحسين واجهة اللغة الإنجليزية للناطقين بغير العربية.

إن كنت لا تعرف ما هو موقع الجامع؟ تعرّف عليه من هذا المقطع:
https://www.youtube.com/watch?v=JvFmqlbbg84

وجرّبه من خلال هذا الرابط:
https://aljam3.com

كُن مساهما ولا تكن من المتفرجين 🤩
3
من أيام بدأت في استخدام Claude Code لإنشاء تطبيق على أجهزة iOS و Android.

التطبيق يعتمد على Hotwire Native، فهو لا يتعامل مع APIs لإحضار البيانات من الـ Backend، ولا يوجد به الكثير من التعقيدات مقارنة بالتطبيقات التقليدية، ولكنه يحتوي على بعض الميزات الـ Native المكتوبة إما بـ Swift أو Kotlin.

في جانب iOS كان Claude Code سريعا في تطبيق المطلوب دون الحاجة لشرح كثير من التفاصيل، ولكن في المقابل عانيت معه في جانب Android، حتى أنني قررت تجربة Gemini CLI بدلا من Claude Code، ولكنه (Gemini CLI) كان أفشل منه (Claude Code).

في هذه اللحظة قررت العودة إلى Claude Code وشرح التفاصيل بدقة، فطلبت منه بداية أن يستكشف المشروع، ثم سألته: "هل لاحظت وجود الميزة الفلانية؟"، فأجاب بنعم مع بعض التفاصيل، فطلبت منه تعديل هذه الميزة تحديدا، ثم بدأت بطلب أمور بسيطة ومحددة خطوة بخطوة توصلني إلى الهدف المطلوب.

كانت النتيجة مبهرة، ما كان يُعاني في تنفيذه خلال ساعات أنجزه في أقل من نصف ساعة بعد تغيير أسلوب التعامل وطريقة طلب تنفيذ المهمات.

الدرس المستفاد بالنسبة لي أن النماذج تختلف مدى جودة تعاملها مع التقنيات المختلفة، فإن كان النموذج يتعامل مع iOS بسرعة وسلاسة، فإنه يحتاج إلى الدقة والتبسيط عند التعامل مع Android.

والسلام عليكم 👋🏻
3👍3🔥3
اضطررت لتغيير لغة جهازي الشخصي من العربية إلى الإنجليزية لأن Android Studio لا يعمل بشكل جيد إذا كانت لغة الجهاز عربية 🥲

معلومة تعلمتها بالطريقة الصعبة...
6😁1
📢 مبادرة "رِباط التقنية" تعاون بين القنوات التقنية العربية 🔗

حرصًا على دعم المحتوى العربي في مجالات التقنية، نعلن عن تعاون مشترك بين مجموعة من القنوات العربية التقنية على تيليغرام، بهدف تبادل المعرفة، ونشر الفائدة، وتعزيز وصول المحتوى الجاد والمفيد لكل المهتمين بالتقنية.

وقد جُمعت هذه القنوات في قائمة واحدة، تيسيرًا للمتابعة ودعمًا للجهود المستقلّة في نشر العلم والمعرفة:

📄 رابط قائمة القنوات المشاركة:
https://t.me/addlist/Gg-LFze5N89mMTJk

نؤمن أن التعاون خير سبيل للرقيّ، وأنّ دعمكم هو أساس استمرار هذه المبادرات.
تابع، وانشر، وكن جزءًا من هذا الحراك التقني العربي.

🔹للانضمام إلى المبادرة، يُرجى التواصل:
👉 @alzaanad

#رباط_التقنية
#قنوات_تقنية_عربي
8
ودخلت الخيل الأزهر - محمد جلال كشك - صفحة 93

https://aljam3.com/ar/13909/33244/93
3
لمن يبحث عن مستقلِّين لتنفيذ المشاريع في كافة المجالات، هذا الموقع يربطك بمستقلين من غزة:

https://taqat-gaza.com/ar
11
مساهمة جديدة على "الجامع" 🚀

كما تعلم (أو ستعلم بعد كلمات قليلة) أن الجامع بُنِيَ باستخدام Ruby on Rails، والتي تأتي بصفحات أخطاء "بسيطة" إلى حد ما (موضّحة في الصورة الأولى)، ولكن أردنا إنشاء صفحات أخطاء جديدة بتصميم أفضل لتحسين تجربة المستخدم عند مواجهة أي خطأ (ونتمنى ألّا يواجه أحدٌ أي خطأ).

لذا أنشأت هذه المهمة:
https://github.com/ieasybooks/aljam3-web-app/issues/45

وظلّت مفتوحةً نحو شهرٍ، حتى جاء صاحب هذا الحساب على GitHub (منشنوه لو تعرفوه 🥲):
https://github.com/0xSm0ky

وقدّم طلب تعديل على المشروع:
https://github.com/ieasybooks/aljam3-web-app/pull/85

صمَّم صفحات جديدة باستخدام HTML و TailwindCSS دون الحاجة للتعامل مع Ruby أو Ruby on Rails!

قبِلتُ التعديل، ثم أضفت عليه تحسينات بسيطة لنقل الصفحات من مجرد ملفات HTML في مجلد public إلى داخل التطبيق نفسه لنستفيد من الترجمة التلقائية للصفحات والتصميم العام للموقع:
https://github.com/ieasybooks/aljam3-web-app/pull/91

وهنا أُعيد التأكيد، لا يجب أن تكون المساهمة في Ruby on Rails، فقط اقرأ المهمات المطلوبة وستجد ما يمكنك المساهمة فيه بإذن الله 😎
6👍2
مساهمة جديدة على "الجامع"، ولكن بأسلوب مختلف 🚀

بدأ الأخ مصطفى مرزوق في المساهمة على موقع الجامع من خلال شيء بسيط للغاية: التبليغ عن الأخطاء واقتراح التحسينات من خلال إنشاء مهمات على مستودع المشروع في GitHub!

فتح الأخ 9 مهمات منها:
- https://github.com/ieasybooks/aljam3-web-app/issues/106
- https://github.com/ieasybooks/aljam3-web-app/issues/108
- https://github.com/ieasybooks/aljam3-web-app/issues/110

ما دفعني للعمل على حل المشاكل وإضافة التحسينات المقترحة، رغم معرفتي المسبقة ببعضها ولكن لم أعطها الأولوية الكافية 😁 (الكسل)

بعد إنشاءه لكل هذه المهمات وفهمه للمشروع بشكل أفضل، ساهم في تنفيذ مهمة منها:
https://github.com/ieasybooks/aljam3-web-app/issues/110

من خلال هذا التعديل:
https://github.com/ieasybooks/aljam3-web-app/pull/119

فجزاه الله خيرا

وهذا يثبت ما أكرره، أنك تستطيع المساهمة ولو بالقليل، وبمرور الوقت يُصبح هذا القليل كثيرا بإذن الله، وما السيل إلا اجتماع النقط 😎
7
خان المُبرمجين (علي فاضل)
Photo
خلال العمل على تطبيقات الهاتف لموقع "الجامع"، اكتشفت أن النسخة الرابعة من TailwindCSS تحتاج إلى إصدارات مُعيّنة من المتصفحات حسب موقعهم الرسمي:
- Chrome 111 (أُصدر في 03/2023)
- Safari 16.4 (أُصدر في 03/2023)
- Firefox 128 (أُصدر في 07/2024)

مما يعني أن الموقع لن يعمل بكفاءة على المتصفحات القديمة!

تذكرت حينها ميزة جديدة أُضيفت إلى إطار عمل Ruby on Rails في نسخته 7.2 وهي ميزة allow_browsers.

تسمح لك هذه الميزة بتحديد أقل إصدارات المتصفحات التي يدعمها موقعك بإضافة سطر واحد في المتحكّم الرئيسي للموقع كما هو موضّح في الصورة الأولى.

في حال استخدام المستخدم لمتصفح بإصدار أقدم من الإصدارات المحددة، ستظهر له صفحة تخبره بأن متصفحه قديم ويحتاج إلى التحديث كما هو موضّح في الصورة الثانية.

أضفت هذا السطر إلى الجامع بالإصدارات التي يحتاجها TailwindCSS ثم تذكرت أن صفحة التنبيه في الأساس تستخدم TailwindCSS، فهذا أمر يحتاج إلى حلّ نُؤجِّله إلى وقت لاحق 😂

إذا أردت القراءة أكثر عن هذه الميزة في Ruby on Rails يمكنك الاطلاع على هذه الروابط:
- https://edgeapi.rubyonrails.org/classes/ActionController/AllowBrowser/ClassMethods.html
- https://blog.saeloun.com/2024/03/18/rails-7-2-adds-allow-browser-to-set-minimum-versions

والسلام عليكم 👋🏻
4
نُعلن اليوم عن تطبيق الجامع للهاتف المحمول 🚀

يمكنك تحميل التطبيق لأنظمة Android و iOS من خلال الروابط التالية:
- Google Play
- App Gallery
- App Store

حمّل التطبيق وشاركنا تجربتك لنعمل على تحسينه 😎✌🏻

رابط موقع الجامع:
https://aljam3.com

شارك مع أصدقائك لتعم الفائدة 🤩
10🔥1👨‍💻1