"إن كان لا بد من تكرار العمل أكثر من ثلاث مرات، فالأَولى أتمتته"
خلال السنوات الأخيرة أنشأت العديد من مشاريع Ruby on Rails الجانبية، منها ما يعمل إلى هذه اللحظة ومنها ما كان مجرد فكرة للتجربة.
في كل مرة كنت أبدأ في بناء المشروع من الصفر وأُضيف المكتبات التي أحتاجها وأُعدّها، وكان ذلك يستغرق وقتًا طويلًا وينتج عنه بعض الأخطاء أحيانا، وكان يتخلله كثير من النسخ واللصق.
إلى أن قررت في الأسابيع الماضية أن أُنشئ قالبًا يُمكن إعادة استخدامه في كافة مشاريع Ruby on Rails المستقبلية.
يتضمن القالب العديد من الاختيارات الشخصية، قد تتفق معها أو تختلف، لكنه قد يفيدك بمنحك فكرة جديدة أو نظرة على مكتبات لم تكن تعلم عنها من قبل.
يمكنك الاطلاع على القالب والبدء في استخدامه من هنا:
https://github.com/ieasybooks/ruby-on-rails-template
من ميزات القالب:
- بيئة تطوير جاهزة للاستخدام بكافة تفاصيلها
- التكامل مع محرك بحث Meilisearch
- أدوات لمراقبة أداء مشروعك مُعدّة مسبقا
- إمكانية بناء واجهات قابلة لإعادة الاستخدام
وهناك المزيد من التفاصيل يمكنك الاطلاع عليها من خلال الرابط أعلاه ⬆️
والسلام عليكم 👋🏻
خلال السنوات الأخيرة أنشأت العديد من مشاريع Ruby on Rails الجانبية، منها ما يعمل إلى هذه اللحظة ومنها ما كان مجرد فكرة للتجربة.
في كل مرة كنت أبدأ في بناء المشروع من الصفر وأُضيف المكتبات التي أحتاجها وأُعدّها، وكان ذلك يستغرق وقتًا طويلًا وينتج عنه بعض الأخطاء أحيانا، وكان يتخلله كثير من النسخ واللصق.
إلى أن قررت في الأسابيع الماضية أن أُنشئ قالبًا يُمكن إعادة استخدامه في كافة مشاريع Ruby on Rails المستقبلية.
يتضمن القالب العديد من الاختيارات الشخصية، قد تتفق معها أو تختلف، لكنه قد يفيدك بمنحك فكرة جديدة أو نظرة على مكتبات لم تكن تعلم عنها من قبل.
يمكنك الاطلاع على القالب والبدء في استخدامه من هنا:
https://github.com/ieasybooks/ruby-on-rails-template
من ميزات القالب:
- بيئة تطوير جاهزة للاستخدام بكافة تفاصيلها
- التكامل مع محرك بحث Meilisearch
- أدوات لمراقبة أداء مشروعك مُعدّة مسبقا
- إمكانية بناء واجهات قابلة لإعادة الاستخدام
وهناك المزيد من التفاصيل يمكنك الاطلاع عليها من خلال الرابط أعلاه ⬆️
والسلام عليكم 👋🏻
❤5
خلال العمل على أحد المشاريع في الشهرين الماضيين (لعله ينطلق خلال أيام بإذن الله) بدأت باستخدام أداة
مهمة الأداة مراقبة قاعدة البيانات الخاصة بالمشروع وتنبيهك إلى بعض الأمور التي من شأنها تحسين أداءها أو تقليل الأخطاء.
على سبيل المثال، نبهتني الأداة بالأمس أنني أستخدم
في Ruby on Rails، يمكنك تحديد العلاقات بين الجداول بطريقة سهلة. فمثلا، إذا كان في مشروعك جدول للمستخدمين وجدول لمنشوراتهم، يمكنك تعريف العلاقات كما هو موضّح في الصورة.
عند تعريف علاقة المستخدم بالمنشور نستخدم
في
الخيار
الخيار
أما
في حالتي، كنت أستخدم
ليس لدي شك أن لكل إطار عمل أو لغة برمجة أداة مشابهة لـ
رابط
https://github.com/gregnavis/active_record_doctor
والسلام عليكم 👋🏻
active_record_doctor الجديدة بالنسبة لي، والقديمة بالنسبة للكثيرين.مهمة الأداة مراقبة قاعدة البيانات الخاصة بالمشروع وتنبيهك إلى بعض الأمور التي من شأنها تحسين أداءها أو تقليل الأخطاء.
على سبيل المثال، نبهتني الأداة بالأمس أنني أستخدم
dependent: :destroy بدلا من dependent: :delete_all عند تعريف العلاقة بين جدولين في Ruby on Rails دون الحاجة لاستخدام destroy، ولكن ما هي هذه العلاقات؟في Ruby on Rails، يمكنك تحديد العلاقات بين الجداول بطريقة سهلة. فمثلا، إذا كان في مشروعك جدول للمستخدمين وجدول لمنشوراتهم، يمكنك تعريف العلاقات كما هو موضّح في الصورة.
عند تعريف علاقة المستخدم بالمنشور نستخدم
has_many، أي أن كل مستخدم له العديد من المنشورات، وعند تعريف علاقة المنشور بالمستخدم نستخدم belongs_to، أي أن كل منشور ينتمي إلى مستخدم واحد.في
has_many نستطيع تحديد الخيار dependent والذي بدوره يُحدد كيف سنتعامل مع المنشورات في حال حذف المستخدم.الخيار
destroy يحذف المنشورات في حال حذف المستخدم، وكذلك الخيار delete_all ولكن باختلاف بسيط.الخيار
destroy يحذف كل منشور على حدة ويتأكد من أن الـ Callbacks تعمل كما ينبغي (كأن تحذف المنشور من مُحرّك البحث بعد حذفه من قاعدة البيانات).أما
delete_all يتأكد من حذف المنشورات من قاعدة البيانات دفعة واحدة، دون تشغيل الـ Callbacks، وهي مفيدة في حال عدم وجود أي Callbacks تحتاج لتشغيلها.في حالتي، كنت أستخدم
destroy مع عدم وجود Callbacks، مما يسبب بُطأً في حذف بعض الصفوف، وهنا نبهتني active_record_doctor 😁ليس لدي شك أن لكل إطار عمل أو لغة برمجة أداة مشابهة لـ
active_record_doctor، فابحث عنها واستخدمها في مشاريعك، والأفضل، استخدمها في GitHub Actions (أو ما يشبهها) لتتأكد أن قاعدة بياناتك خالية من المشاكل البسيطة والقابلة للاكتشاف.رابط
active_record_doctor:https://github.com/gregnavis/active_record_doctor
والسلام عليكم 👋🏻
❤3
خان المُبرمجين (علي فاضل)
Photo
وعليكم السلام ورحمة الله وبركاته، أهلا بالسؤال من أخي سامح شخصيًّا 😎
قبل الحديث عن Rails نحتاج للحديث عن Ruby، فهي أساس هذا الإطار.
لغة Ruby من اللغات المظلومة إلى حد كبير، فمن ناحية السرعة هي بنفس أو أسرع من Python، ومن ناحية الكتابة فهي سهلة جدا وكأنك فعليا تقرأ الإنجليزية، ومن ناحية الدعم والمكتبات فقد تكون أفضل بكثير من اللغات الأخرى مثل PHP و JS، ولكنها للأسف لم تحظ بالدعم المجتمعي الكافي، ولسوء حظها كان مخترعها يابانيًّا 😁
فلا ضير من تعلم لغة جديدة تُعطيك نظرة مختلفة عن عالم البرمجة، وليفهم القارئ كلامي بشكل أفضل، أنصحه أن يطّلع على كتاب Metaprogramming Ruby لينظر الاختلاف في طريقة كتابة وتصميم هذه اللغة.
نأتي الآن إلى Rails، وهو أول (حسب علمي) وأفضل (من وجهة نظري) إطار عمل طبق بنية MVC بشكل سهل وسلس وجاء بالعديد من النقلات النوعية في مجال تطوير المواقع وتطبيقات الانترنت من أول صدوره وإلى الآن.
إطار عمل Rails ليس مجرد إطار عمل لبناء المواقع والتطبيقات، إنما هو فلسفة متكاملة تُوافق على التعامل معها بمجرد بدء استخدامك له، وصاحب هذه الفلسفة بالأساس هو DHH مُطوّر الإطار.
العديد من الخيارات والإعدادات موجودة مسبقا في الإطار ولا حاجة لإعادة النظر فيها في نسبة كبيرة من المشاريع، ومن هذه الاختيارات التي تحتاج للتعايش معها الاعتماد الكامل على الـ Server-Side Rendering عكس التيار و "التريند" الحالي.
كذلك من مميزات هذا الإطار أنه موجه لتمكين المطوّر الواحد والفريق الصغير من المطورين لتطوير المشاريع الضخمة والمحافظة على استمراريتها بداية من التطوير والاختبار وصولا إلى النشر والمتابعة، ومن أمثلة ذلك شركة 37Signals.
وهذا ما يجعلني أستخدمه في مشاريعي الجانبية بشكل أساسي، فأنا مطوّر واحد (تقريبا) وأستطيع تطوير ومتابعة العديد من المشاريع بسهولة ويسر (إلى حد كبير)، هذا دون أن نتحدث عن Hotwire وسهولة تعلم هذا الإطار على المبرمجين الجدد.
هل هذا يعني أن الإطار لا عيوب فيه؟ بالتأكيد لا! وأول عيب أنك تقبل فلسفة DHH في تطوير إطار العمل وقبول/رفض المميزات المقترحة من قبل المجتمع، وهو أمر مزعج أحيانا، ولكن غالب اختيارات هذا الشخص (DHH) في محلها وتدعم توجّه "إطار عمل الشخص الواحد".
نأتي لسوق العمل، ومن المفاجآت غير المفاجِئة أن الناس تظن أن الشركات العاملة بـ Rails شبه معدومة في منطقتنا، وهذا عكس الواقع.
الشركات إلى حد ما أقل من الشركات العاملة بأُطُر العمل واللغات الأخرى، ولكنها موجودة، منها ZenHR وجواكر في الأردن، ومنها جسر و Hunger Station في السعودية، وغيرها من الشركات التي لا يمكنني حصرها في هذا الرد.
وعن نفسي لا أُؤمن بتوظيف المُطوّر لأنه يستخدم إطار عمل محدد، إنما أُوظّف من لديه الخبرة البرمجية الكافية للتحرّك في فضاء لغات البرمجة والمكتبات المختلفة بسهولة، فكل هذه الأُطر تعتمد على قواعد متشابهة بشكل عام (Rails, Django, Laravel وغيرها).
فلا أرى ما يمنع المُطوّر من أن يتعلم Rails ويتعلم غيرها، مع التخصص والتعمّق في أحدها.
أخيرًا، قد يعترض معترض (وهذا هو الاعتراض الأكبر) أن Rails ليس صديقًا جيدًا لأُطر ومكتبات تطوير واجهات المستخدم مثل React وغيرها، وأنا لا أختلف مع هذا الأمر، ولكن ليس في سنة 2025.
فإن كان ولا بد، يمكنك استخدام React وغيرها مع Rails من خلال InertiaJS و TurboMount وغيرها من المكتبات، فلا حُجّة للمعترض من هذا الباب 😅
والسلام عليكم 👋🏻
قبل الحديث عن Rails نحتاج للحديث عن Ruby، فهي أساس هذا الإطار.
لغة Ruby من اللغات المظلومة إلى حد كبير، فمن ناحية السرعة هي بنفس أو أسرع من Python، ومن ناحية الكتابة فهي سهلة جدا وكأنك فعليا تقرأ الإنجليزية، ومن ناحية الدعم والمكتبات فقد تكون أفضل بكثير من اللغات الأخرى مثل PHP و JS، ولكنها للأسف لم تحظ بالدعم المجتمعي الكافي، ولسوء حظها كان مخترعها يابانيًّا 😁
فلا ضير من تعلم لغة جديدة تُعطيك نظرة مختلفة عن عالم البرمجة، وليفهم القارئ كلامي بشكل أفضل، أنصحه أن يطّلع على كتاب Metaprogramming Ruby لينظر الاختلاف في طريقة كتابة وتصميم هذه اللغة.
نأتي الآن إلى Rails، وهو أول (حسب علمي) وأفضل (من وجهة نظري) إطار عمل طبق بنية MVC بشكل سهل وسلس وجاء بالعديد من النقلات النوعية في مجال تطوير المواقع وتطبيقات الانترنت من أول صدوره وإلى الآن.
إطار عمل Rails ليس مجرد إطار عمل لبناء المواقع والتطبيقات، إنما هو فلسفة متكاملة تُوافق على التعامل معها بمجرد بدء استخدامك له، وصاحب هذه الفلسفة بالأساس هو DHH مُطوّر الإطار.
العديد من الخيارات والإعدادات موجودة مسبقا في الإطار ولا حاجة لإعادة النظر فيها في نسبة كبيرة من المشاريع، ومن هذه الاختيارات التي تحتاج للتعايش معها الاعتماد الكامل على الـ Server-Side Rendering عكس التيار و "التريند" الحالي.
كذلك من مميزات هذا الإطار أنه موجه لتمكين المطوّر الواحد والفريق الصغير من المطورين لتطوير المشاريع الضخمة والمحافظة على استمراريتها بداية من التطوير والاختبار وصولا إلى النشر والمتابعة، ومن أمثلة ذلك شركة 37Signals.
وهذا ما يجعلني أستخدمه في مشاريعي الجانبية بشكل أساسي، فأنا مطوّر واحد (تقريبا) وأستطيع تطوير ومتابعة العديد من المشاريع بسهولة ويسر (إلى حد كبير)، هذا دون أن نتحدث عن Hotwire وسهولة تعلم هذا الإطار على المبرمجين الجدد.
هل هذا يعني أن الإطار لا عيوب فيه؟ بالتأكيد لا! وأول عيب أنك تقبل فلسفة DHH في تطوير إطار العمل وقبول/رفض المميزات المقترحة من قبل المجتمع، وهو أمر مزعج أحيانا، ولكن غالب اختيارات هذا الشخص (DHH) في محلها وتدعم توجّه "إطار عمل الشخص الواحد".
نأتي لسوق العمل، ومن المفاجآت غير المفاجِئة أن الناس تظن أن الشركات العاملة بـ Rails شبه معدومة في منطقتنا، وهذا عكس الواقع.
الشركات إلى حد ما أقل من الشركات العاملة بأُطُر العمل واللغات الأخرى، ولكنها موجودة، منها ZenHR وجواكر في الأردن، ومنها جسر و Hunger Station في السعودية، وغيرها من الشركات التي لا يمكنني حصرها في هذا الرد.
وعن نفسي لا أُؤمن بتوظيف المُطوّر لأنه يستخدم إطار عمل محدد، إنما أُوظّف من لديه الخبرة البرمجية الكافية للتحرّك في فضاء لغات البرمجة والمكتبات المختلفة بسهولة، فكل هذه الأُطر تعتمد على قواعد متشابهة بشكل عام (Rails, Django, Laravel وغيرها).
فلا أرى ما يمنع المُطوّر من أن يتعلم Rails ويتعلم غيرها، مع التخصص والتعمّق في أحدها.
أخيرًا، قد يعترض معترض (وهذا هو الاعتراض الأكبر) أن Rails ليس صديقًا جيدًا لأُطر ومكتبات تطوير واجهات المستخدم مثل React وغيرها، وأنا لا أختلف مع هذا الأمر، ولكن ليس في سنة 2025.
فإن كان ولا بد، يمكنك استخدام React وغيرها مع Rails من خلال InertiaJS و TurboMount وغيرها من المكتبات، فلا حُجّة للمعترض من هذا الباب 😅
والسلام عليكم 👋🏻
❤7
This media is not supported in your browser
VIEW IN TELEGRAM
نعلن اليوم عن "الجامع" 🎉
مكتبتك الشاملة التي تحتوي على أكثر من 63 ألف كتاب، تضم أكثر من 37 مليون صفحة، وتغطي أكثر من 100 علم، في مكان واحد...
ابحث في عناوين ونصوص الكتب وحمّلها بصيغة PDF و DOCX و TXT
رابط الموقع:
https://aljam3.com
شارك الرابط مع أصدقاءك لتعم الفائدة 🤩
سأتحدث في منشور قادم عن كيف يمكن للجميع أن يساهموا في المشروع 🚀
مكتبتك الشاملة التي تحتوي على أكثر من 63 ألف كتاب، تضم أكثر من 37 مليون صفحة، وتغطي أكثر من 100 علم، في مكان واحد...
ابحث في عناوين ونصوص الكتب وحمّلها بصيغة PDF و DOCX و TXT
رابط الموقع:
https://aljam3.com
شارك الرابط مع أصدقاءك لتعم الفائدة 🤩
سأتحدث في منشور قادم عن كيف يمكن للجميع أن يساهموا في المشروع 🚀
❤13🔥3
سأكون اليوم موجودا في هذا الحدث المُقام من قبل شركة MilkStraw AI في الأردن، لمن يحب أن يحضر ونلتقي 🥳
تفاصيل الحدث موجودة في الرابط:
https://lu.ma/x7002gx5
تفاصيل الحدث موجودة في الرابط:
https://lu.ma/x7002gx5
❤6
وعليكم السلام ورحمة الله وبركاته،
المصادر كثيرة ولكن للأسف (وهذا من عيوب Rails) فإن أغلبها باللغة الإنجليزية وأن جزءًا كبيرًا منها ليس مجانيًّا (وهذا عيب ثانٍ).
المصدر الأول الذي أنصح به أي شخص هو موقع GoRails، فيه مسارات لبناء تطبيقات متكاملة ومقاطع منفصلة تشرح أمور مختلفة في إطار العمل:
https://gorails.com
الآن سأذكر قائمة المصادر التي أعرفها من باب الإلمام نوعا ما بالأمر.
أولا، دليل Ruby on Rails الرسمي وفيه مواد عالية الجودة تشمل إطار العمل كاملا:
https://guides.rubyonrails.org
أيضًا، يوجد مجموعة من المواقع التي تجمع المصادر الخاصة بـ Rails وهذه عيّنة منها:
- Hotewire.io: https://hotwire.io
- Ruby and Rails: https://rubyandrails.info
- RubyHunt: https://rubyhunt.dev
- Ruby Video: https://www.rubyvideo.dev
بعد ذلك لدينا العديد من القنوات على YouTube:
- GoRails: https://www.youtube.com/@GorailsTV
- DriftingRuby: https://www.youtube.com/@DriftingRuby
- RapidRuby: https://www.youtube.com/@rapid-ruby
- SupeRails: https://www.youtube.com/@SupeRails
- Deanin: https://www.youtube.com/@Deanin
- Joe Masilotti: https://www.youtube.com/@joemasilotti
- Jonathan Bennett: https://www.youtube.com/@jonbca
- Mix & Go: https://www.youtube.com/@mixandgo
أول 3 قنوات تُقدّم محتوى مدفوع على مواقعهم وهو ذو جودة عالية، خصوصا المقدّم من GoRails:
- GoRails: https://gorails.com
- DriftingRuby: https://www.driftingruby.com
- RapidRuby: https://rapidruby.com
يوجد كذلك مجموعة من المواقع التي تُقدّم العديد من المقالات المختصّة والمتقدّمة في Rails:
- HotRails: https://www.hotrails.dev
- EvilMartials: https://evilmartians.com/chronicles
- BootrAils: https://bootrails.com/blog
- HoneyBadger: https://www.honeybadger.io/blog
- RailsNotes: https://railsnotes.xyz/blog
وللمتعة، يوجد بعض الـ Podcasts الجيدة:
- On Rails: https://onrails.buzzsprout.com
- Remote Ruby: https://www.remoteruby.com
- The Ruby on Rails Podcast: https://www.therubyonrailspodcast.com
أخيرا، وكما ذكرت في منشورٍ سابق، حاول أن تتعلم من المجتمع من خلال الدخول في المجموعات المهتمة بـ Ruby on Rails على Discord مثلا:
- GoRails: https://discord.gg/NZbfhyEDs5
- Naming Things: https://discord.gg/jP8UrXfy
والسلام عليكم 👋🏻
المصادر كثيرة ولكن للأسف (وهذا من عيوب Rails) فإن أغلبها باللغة الإنجليزية وأن جزءًا كبيرًا منها ليس مجانيًّا (وهذا عيب ثانٍ).
المصدر الأول الذي أنصح به أي شخص هو موقع GoRails، فيه مسارات لبناء تطبيقات متكاملة ومقاطع منفصلة تشرح أمور مختلفة في إطار العمل:
https://gorails.com
الآن سأذكر قائمة المصادر التي أعرفها من باب الإلمام نوعا ما بالأمر.
أولا، دليل Ruby on Rails الرسمي وفيه مواد عالية الجودة تشمل إطار العمل كاملا:
https://guides.rubyonrails.org
أيضًا، يوجد مجموعة من المواقع التي تجمع المصادر الخاصة بـ Rails وهذه عيّنة منها:
- Hotewire.io: https://hotwire.io
- Ruby and Rails: https://rubyandrails.info
- RubyHunt: https://rubyhunt.dev
- Ruby Video: https://www.rubyvideo.dev
بعد ذلك لدينا العديد من القنوات على YouTube:
- GoRails: https://www.youtube.com/@GorailsTV
- DriftingRuby: https://www.youtube.com/@DriftingRuby
- RapidRuby: https://www.youtube.com/@rapid-ruby
- SupeRails: https://www.youtube.com/@SupeRails
- Deanin: https://www.youtube.com/@Deanin
- Joe Masilotti: https://www.youtube.com/@joemasilotti
- Jonathan Bennett: https://www.youtube.com/@jonbca
- Mix & Go: https://www.youtube.com/@mixandgo
أول 3 قنوات تُقدّم محتوى مدفوع على مواقعهم وهو ذو جودة عالية، خصوصا المقدّم من GoRails:
- GoRails: https://gorails.com
- DriftingRuby: https://www.driftingruby.com
- RapidRuby: https://rapidruby.com
يوجد كذلك مجموعة من المواقع التي تُقدّم العديد من المقالات المختصّة والمتقدّمة في Rails:
- HotRails: https://www.hotrails.dev
- EvilMartials: https://evilmartians.com/chronicles
- BootrAils: https://bootrails.com/blog
- HoneyBadger: https://www.honeybadger.io/blog
- RailsNotes: https://railsnotes.xyz/blog
وللمتعة، يوجد بعض الـ Podcasts الجيدة:
- On Rails: https://onrails.buzzsprout.com
- Remote Ruby: https://www.remoteruby.com
- The Ruby on Rails Podcast: https://www.therubyonrailspodcast.com
أخيرا، وكما ذكرت في منشورٍ سابق، حاول أن تتعلم من المجتمع من خلال الدخول في المجموعات المهتمة بـ Ruby on Rails على Discord مثلا:
- GoRails: https://discord.gg/NZbfhyEDs5
- Naming Things: https://discord.gg/jP8UrXfy
والسلام عليكم 👋🏻
❤3👍1
نشرت البارحة عن انطلاق موقع "الجامع" ولله الحمد كانت ردود الأفعال إيجابية في المجمل مع بعض التحفظات من بعض الإخوة جزاهم الله خيرا على حرصهم وبارك فيهم، واليوم أنشر لمن يهتم بالمساعدة في هذا المشروع.
بداية، المشروع مفتوح المصدر ويمكنكم الوصول إليه من خلال هذا المستودع:
https://github.com/ieasybooks/aljam3-web-app
وهذه الأدوات المستخدمة في بنائه:
- Ruby v3.4
- Ruby on Rails v8
- StimulusJS
- TailwindCSS v4
- Meilisearch
- PostgreSQL 17.5
ويوجد توثيق لكيفية تشغيل المشروع وبدء التطوير خطوة بخطوة باللغتين العربية والإنجليزية في ملف README.
لدينا أكثر من 30 مهمة نحتاج للمساعدة في تنفيذها، يمكنك الاطلاع عليها من هنا:
https://github.com/ieasybooks/aljam3-web-app/issues
المهام متباينة ويمكن لأي شخص مهما كان تخصصه أن يُساعد فيها، فقط تحتاج لقراءتها واختيار ما يتناسب مع تخصصك.
على سبيل المثال، توجد مهمة لا تحتاج لمبرمج للقيام بها، وتوجد مهمات تحتاج لشخص مهتم بالذكاء الاصطناعي، وتوجد مهمات أخرى تتطلب اهتماما بالتصميم وواجهات المستخدم.
حاول قراءة المهمات واطلب توضيحا في حال لم تفهم المطلوب وابدأ رحلتك في خدمة العلوم الشرعية 🚀
بداية، المشروع مفتوح المصدر ويمكنكم الوصول إليه من خلال هذا المستودع:
https://github.com/ieasybooks/aljam3-web-app
وهذه الأدوات المستخدمة في بنائه:
- Ruby v3.4
- Ruby on Rails v8
- StimulusJS
- TailwindCSS v4
- Meilisearch
- PostgreSQL 17.5
ويوجد توثيق لكيفية تشغيل المشروع وبدء التطوير خطوة بخطوة باللغتين العربية والإنجليزية في ملف README.
لدينا أكثر من 30 مهمة نحتاج للمساعدة في تنفيذها، يمكنك الاطلاع عليها من هنا:
https://github.com/ieasybooks/aljam3-web-app/issues
المهام متباينة ويمكن لأي شخص مهما كان تخصصه أن يُساعد فيها، فقط تحتاج لقراءتها واختيار ما يتناسب مع تخصصك.
على سبيل المثال، توجد مهمة لا تحتاج لمبرمج للقيام بها، وتوجد مهمات تحتاج لشخص مهتم بالذكاء الاصطناعي، وتوجد مهمات أخرى تتطلب اهتماما بالتصميم وواجهات المستخدم.
حاول قراءة المهمات واطلب توضيحا في حال لم تفهم المطلوب وابدأ رحلتك في خدمة العلوم الشرعية 🚀
❤10
إذا كنت مهتمًّا بالذكاء الاصطناعي وتريد المساهمة في مشروع دعوي، فدونك هذه المهمة التي نحتاج لمن يقوم بها على أكمل وجه:
https://github.com/ieasybooks/aljam3-web-app/issues/47
باختصار، لدينا في موقع الجامع قائمة طويلة بالمؤلفين، ولأن البيانات غير دقيقة من مصدرها، نحتاج لاكتشاف المؤلفين المكررين ودمجهم لتقليل عددهم وتسهيل البحث على المستخدمين.
تفاصيل المهمة موجودة في الرابط أعلاه، وإن احتجت إلى تفاصيل أكثر، يمكنك كتابة تعليق على المهمة نفسها أو على المنشور 😁
في انتظارك يا باغِيَ الخير 😎✌️
https://github.com/ieasybooks/aljam3-web-app/issues/47
باختصار، لدينا في موقع الجامع قائمة طويلة بالمؤلفين، ولأن البيانات غير دقيقة من مصدرها، نحتاج لاكتشاف المؤلفين المكررين ودمجهم لتقليل عددهم وتسهيل البحث على المستخدمين.
تفاصيل المهمة موجودة في الرابط أعلاه، وإن احتجت إلى تفاصيل أكثر، يمكنك كتابة تعليق على المهمة نفسها أو على المنشور 😁
في انتظارك يا باغِيَ الخير 😎✌️
❤13
أُولى المساهمات في مشروع "الجامع" دُمِجت البارحة ووصلت إلى مستخدمي الموقع بالفعل 🎉
جزى الله خيرا كلًّا من عبدالرحمن حيدر وسيف وليد على مبادرتهما لإنجاز مهمتين من المهمات المتلعقة بمشروع الجامع:
- https://github.com/ieasybooks/aljam3-web-app/pull/66
- https://github.com/ieasybooks/aljam3-web-app/pull/67
وإن كنت تريد المساهمة فالباب مفتوح والمهمات كثيرة، يمكنك الاطلاع عليها من هنا:
https://github.com/ieasybooks/aljam3-web-app/issues
كُن مساهما ولا تكن من المتفرجين 🚀
جزى الله خيرا كلًّا من عبدالرحمن حيدر وسيف وليد على مبادرتهما لإنجاز مهمتين من المهمات المتلعقة بمشروع الجامع:
- https://github.com/ieasybooks/aljam3-web-app/pull/66
- https://github.com/ieasybooks/aljam3-web-app/pull/67
وإن كنت تريد المساهمة فالباب مفتوح والمهمات كثيرة، يمكنك الاطلاع عليها من هنا:
https://github.com/ieasybooks/aljam3-web-app/issues
كُن مساهما ولا تكن من المتفرجين 🚀
❤8
كان عندي بعض الوقت البارحة، فقررت تثبيت Arch Linux وتجربة Omarchy، وكانت تجربة ممتازة كبداية، ولكن أحتاج لاستخدامه بشكل أكبر وتكوين تصوّر أفضل عنه، خصوصا أنه يستخدم Vim افتراضيًّا وأنا أستطيع الخروج من Vim فقط 😆
يمكنك الوصول إلى موقع Omarchy من هنا:
https://omarchy.org
وهذا المستودع الخاص به:
https://github.com/basecamp/omarchy
وهو عبارة عن طريقة لتهيئة وتخصيص Arch Linux مع واجهة Hyprland يمكن تثبيتها من خلال تنفيذ أمر واحد بعد تثبيت Arch Linux من إنشاء DHH:
الشعور غريب، فلا توجد أي أيقونات على سطح المكتب وتحتاج لاستخدام لوحة المفاتيح لتصل إلى أي برنامج داخل النظام.
بعض اختيارات DHH تحتاج للمراجعة والتخصيص بشكل أكبر، فهو يستخدم Hey.com افتراضيًّا مع وجود Spotify و ChatGPT كاختصارات في لوحة المفاتيح، ولكن في المجمل كان النظام سلسًا ويستحق التجربة والانتقال إليه وترك أجهزة Apple 😁
أحاول تسجيل مقطع أجرّب فيه النظام بشكل أفضل وأستخدم Vim عليه خلال الأيام القادمة بإذن الله.
والسلام عليكم 👋🏻
يمكنك الوصول إلى موقع Omarchy من هنا:
https://omarchy.org
وهذا المستودع الخاص به:
https://github.com/basecamp/omarchy
وهو عبارة عن طريقة لتهيئة وتخصيص Arch Linux مع واجهة Hyprland يمكن تثبيتها من خلال تنفيذ أمر واحد بعد تثبيت Arch Linux من إنشاء DHH:
wget -qO- https://omarchy.org/install | bash
الشعور غريب، فلا توجد أي أيقونات على سطح المكتب وتحتاج لاستخدام لوحة المفاتيح لتصل إلى أي برنامج داخل النظام.
بعض اختيارات DHH تحتاج للمراجعة والتخصيص بشكل أكبر، فهو يستخدم Hey.com افتراضيًّا مع وجود Spotify و ChatGPT كاختصارات في لوحة المفاتيح، ولكن في المجمل كان النظام سلسًا ويستحق التجربة والانتقال إليه وترك أجهزة Apple 😁
أحاول تسجيل مقطع أجرّب فيه النظام بشكل أفضل وأستخدم Vim عليه خلال الأيام القادمة بإذن الله.
والسلام عليكم 👋🏻
❤4
من لطائف إطار عمل Ruby on Rails وجود مكتبة لكل شيء تقريبا، وهذا سلاح ذو حدّين.
خلال تصفّحي لـ GitHub، وجدت هذه المكتبة
https://github.com/enriclluelles/route_translator
هدفها ببساطة ترجمة الـ Routes في مشروعك، فمثلا منصة قبيلة لديها مسار (Route) لعرض المنشورات يبدأ بـ
باستخدام
ليست كثرة المكتبات هي الأمر الإيجابي في حد ذاته، وإنما جودتها أيضًا. فغالبًا المكتبات في Ruby on Rails تكون جودتها عالية ويستمر المُطوّر في المحافظة عليها وتحسينها لسنوات طويلة بمساعدة المجتمع.
السلبية في هذا الأمر هي التساهل في إضافة الاعتماديات لأبسط الأمور، بدلاً من كتابة الشيفرة المطلوبة للمهام البسيطة، لذلك يجب الحذر عند التعامل مع بيئة Ruby on Rails.
والسلام عليكم 👋🏻
خلال تصفّحي لـ GitHub، وجدت هذه المكتبة
route_translator:https://github.com/enriclluelles/route_translator
هدفها ببساطة ترجمة الـ Routes في مشروعك، فمثلا منصة قبيلة لديها مسار (Route) لعرض المنشورات يبدأ بـ
/posts/ ويليه مُعرّف المنشور.باستخدام
route_translator يمكن لقبيلة (إذا كانت مكتوبة باستخدام Ruby on Rails 😜) ترجمة هذا المسار إلى /المنشورات/ و /posts/ بمجرد إضافة بعض الأسطر إلى المشروع.ليست كثرة المكتبات هي الأمر الإيجابي في حد ذاته، وإنما جودتها أيضًا. فغالبًا المكتبات في Ruby on Rails تكون جودتها عالية ويستمر المُطوّر في المحافظة عليها وتحسينها لسنوات طويلة بمساعدة المجتمع.
السلبية في هذا الأمر هي التساهل في إضافة الاعتماديات لأبسط الأمور، بدلاً من كتابة الشيفرة المطلوبة للمهام البسيطة، لذلك يجب الحذر عند التعامل مع بيئة Ruby on Rails.
والسلام عليكم 👋🏻
❤2🔥1
تنبيه: شاهد هذا المقطع باستخدام HaramBlur رجاءً
https://haramblur.com
كنت أشاهد هذا المقطع من قناة Veritasium:
https://www.youtube.com/watch?v=fG8SwAFQFuU
فتذكرت حديث الرسول صلى الله عليه وسلم عن أبي ذر الغفاري أنه سأل رسول الله صلى الله عليه وسلم عن الكرسي فقال رسول الله صلى الله عليه وسلم: "والذي نفسي بيده ما السماوات السبع والأرضون السبع عند الكرسي إلا كحلقة ملقاة بأرض فلاة، وإن فضل العرش على الكرسي كفضل الفلاة على تلك الحلقة" [إسناده ضعيف].
فسبحان الخالق وما أعظم خلقه، وما أصغرنا وما أجرأنا..
ادعم HaramBlur، الرابط في الأعلى ☝️
https://haramblur.com
كنت أشاهد هذا المقطع من قناة Veritasium:
https://www.youtube.com/watch?v=fG8SwAFQFuU
فتذكرت حديث الرسول صلى الله عليه وسلم عن أبي ذر الغفاري أنه سأل رسول الله صلى الله عليه وسلم عن الكرسي فقال رسول الله صلى الله عليه وسلم: "والذي نفسي بيده ما السماوات السبع والأرضون السبع عند الكرسي إلا كحلقة ملقاة بأرض فلاة، وإن فضل العرش على الكرسي كفضل الفلاة على تلك الحلقة" [إسناده ضعيف].
فسبحان الخالق وما أعظم خلقه، وما أصغرنا وما أجرأنا..
ادعم HaramBlur، الرابط في الأعلى ☝️
❤7
"لا يمكن بناء واجهات مستخدم تفاعلية باستخدام Ruby on Rails"
هذه الجملة مستفزة إلى حد ما، فإطار العمل يدعم التفاعلية بشكل كبير وكافٍ في أغلب الحالات من خلال StimulusJS، ولكن لنُسلّم بهذه الجملة ونبحث عن حلول تستخدم مكتبات وأُطر العمل المخصصة لواجهات المستخدم كـ React و Vue و Svelte اتِّباعًا للـ "Trend".
الحل الأول يكمن في استخدامك لـ InertiaJS وهو عبارة عن Protocol أُنشئ بداية في مجتمع إطار عمل Laravel ودُعم بعد ذلك في إطار عمل Rails.
يسمح لك InertiaJS ببناء واجهات تفاعلية باستخدام React أو Vue أو Svelte داخل مشروعك المعتمد على Ruby on Rails دون الحاجة لبناء APIs والتعامل مع بيانات JSON بشكل مباشر.
كما هو موضّح في الصور المُرفقة، نُجهّز البيانات في الـ Controller ونرسلها للواجهة المكتوبة باستخدام React (أو غيرها) من خلال استخدام
وفي الواجهة نستخدم React كأي مشروع React طبيعي، ولكن دون الحاجة لبناء APIs مخصصة والتعامل مع بيانات JSON يدويا في واجهة المستخدم، فكل شيء يُعالج من خلال InertiaJS حتى في التنقّل بين الصفحات وعرض المكوّنات (Components).
الموقع الرسمي لـ InertiaJS:
https://inertiajs.com
موقع InertiaJS لـ Ruby on Rails:
https://inertia-rails.dev
هذا الحل الأول، ولكنه يُجبرك على استخدام InertiaJS في كل صفحات الموقع والانتقال من الصفحات المكتوبة بـ React (أو غيرها) والصفحات التي لا تعتمد على إطار العمل لن يكون سلسًا.
الحل الثاني TurboMount يسمح لك ببناء أجزاء محددة من الصفحة باستخدام React أو Vue أو Svelte بدلًا من بناء الواجهات بالكامل باستخدام هذه المكتبات وأُطر العمل.
هذا الحل مناسب لمن يحتاج للتفاعلية في جزء محدد من المشروع كالـ Dashboards.
مشروع TurboMount:
https://github.com/skryukov/turbo-mount
هذه من أفضل الحلول الموجودة الآن لاستخدام مكتبات وأُطر العمل المخصصة لواجهات المستخدم مع Ruby on Rails، حاول الاطلاع عليها واستخدامها وبناء ما تحلم به من واجهات 😁
والسلام عليكم 👋🏻
هذه الجملة مستفزة إلى حد ما، فإطار العمل يدعم التفاعلية بشكل كبير وكافٍ في أغلب الحالات من خلال StimulusJS، ولكن لنُسلّم بهذه الجملة ونبحث عن حلول تستخدم مكتبات وأُطر العمل المخصصة لواجهات المستخدم كـ React و Vue و Svelte اتِّباعًا للـ "Trend".
الحل الأول يكمن في استخدامك لـ InertiaJS وهو عبارة عن Protocol أُنشئ بداية في مجتمع إطار عمل Laravel ودُعم بعد ذلك في إطار عمل Rails.
يسمح لك InertiaJS ببناء واجهات تفاعلية باستخدام React أو Vue أو Svelte داخل مشروعك المعتمد على Ruby on Rails دون الحاجة لبناء APIs والتعامل مع بيانات JSON بشكل مباشر.
كما هو موضّح في الصور المُرفقة، نُجهّز البيانات في الـ Controller ونرسلها للواجهة المكتوبة باستخدام React (أو غيرها) من خلال استخدام
render inertia و props.وفي الواجهة نستخدم React كأي مشروع React طبيعي، ولكن دون الحاجة لبناء APIs مخصصة والتعامل مع بيانات JSON يدويا في واجهة المستخدم، فكل شيء يُعالج من خلال InertiaJS حتى في التنقّل بين الصفحات وعرض المكوّنات (Components).
الموقع الرسمي لـ InertiaJS:
https://inertiajs.com
موقع InertiaJS لـ Ruby on Rails:
https://inertia-rails.dev
هذا الحل الأول، ولكنه يُجبرك على استخدام InertiaJS في كل صفحات الموقع والانتقال من الصفحات المكتوبة بـ React (أو غيرها) والصفحات التي لا تعتمد على إطار العمل لن يكون سلسًا.
الحل الثاني TurboMount يسمح لك ببناء أجزاء محددة من الصفحة باستخدام React أو Vue أو Svelte بدلًا من بناء الواجهات بالكامل باستخدام هذه المكتبات وأُطر العمل.
هذا الحل مناسب لمن يحتاج للتفاعلية في جزء محدد من المشروع كالـ Dashboards.
مشروع TurboMount:
https://github.com/skryukov/turbo-mount
هذه من أفضل الحلول الموجودة الآن لاستخدام مكتبات وأُطر العمل المخصصة لواجهات المستخدم مع Ruby on Rails، حاول الاطلاع عليها واستخدامها وبناء ما تحلم به من واجهات 😁
والسلام عليكم 👋🏻
❤2
مساهمة جديدة في "الجامع" 🚀!
جزى الله خيرا الأخ سعيد الزين على مساهمته في إضافة ميزة إظهار وإخفاء التشكيل عند تصفّح الكتب:
https://github.com/ieasybooks/aljam3-web-app/pull/70
حساب الأخ على GitHub:
https://github.com/Said-MZ
يوجد الكثير من المهمات التي يمكنك المساعدة في تنفيذها على الجامع، اطلع عليها من هنا:
https://github.com/ieasybooks/aljam3-web-app/issues
كُن مساهما ولا تكن من المتفرجين 🤩
جزى الله خيرا الأخ سعيد الزين على مساهمته في إضافة ميزة إظهار وإخفاء التشكيل عند تصفّح الكتب:
https://github.com/ieasybooks/aljam3-web-app/pull/70
حساب الأخ على GitHub:
https://github.com/Said-MZ
يوجد الكثير من المهمات التي يمكنك المساعدة في تنفيذها على الجامع، اطلع عليها من هنا:
https://github.com/ieasybooks/aljam3-web-app/issues
كُن مساهما ولا تكن من المتفرجين 🤩
❤9
من الاكتشافات اللطيفة في الفترة الماضية مكتبة Lookbook المخصصة لاختبار ومعاينة مكوّنات وواجهات مشروعك القائم على Ruby on Rails، يمكنك الاطلاع على المكتبة من هنا:
https://lookbook.build
كما هو موضّح في الصورة، تستطيع إضافة معاينات لكل مكوّنات نظام واجهة المستخدم مع إمكانية إضافة أكثر من معاينة لكل مكوّن لاختبار الحالات المختلفة للمكوّن، كما هو الحال مع Book Card و Contact Form في الصورة.
المكتبة تدعم ViewComponent و Phlex وحتى ActionView partials، كما أن طريقة تثبيتها واستخدامها سهلة ومباشرة، فقط اقرأ التوثيق من موقعهم الرسمي.
أضفت معاينات لكل مكوّنات واجهة "الجامع" لتسهيل تطوير الواجهة على إخواننا المصممين إن أرادوا المساهمة 😁
يمكنك الوصول إليها (بعد تجهيز بيئة التطوير كما هو موضّح في توثيق المستودع) من خلال التوجّه إلى:
localhost:3000/lookbook
رابط مستودع الجامع:
https://github.com/ieasybooks/aljam3-web-app
والسلام عليكم 👋🏻
https://lookbook.build
كما هو موضّح في الصورة، تستطيع إضافة معاينات لكل مكوّنات نظام واجهة المستخدم مع إمكانية إضافة أكثر من معاينة لكل مكوّن لاختبار الحالات المختلفة للمكوّن، كما هو الحال مع Book Card و Contact Form في الصورة.
المكتبة تدعم ViewComponent و Phlex وحتى ActionView partials، كما أن طريقة تثبيتها واستخدامها سهلة ومباشرة، فقط اقرأ التوثيق من موقعهم الرسمي.
أضفت معاينات لكل مكوّنات واجهة "الجامع" لتسهيل تطوير الواجهة على إخواننا المصممين إن أرادوا المساهمة 😁
يمكنك الوصول إليها (بعد تجهيز بيئة التطوير كما هو موضّح في توثيق المستودع) من خلال التوجّه إلى:
localhost:3000/lookbook
رابط مستودع الجامع:
https://github.com/ieasybooks/aljam3-web-app
والسلام عليكم 👋🏻
❤3
الترتيب الثاني في قائمة الأعلى تأثيرا على منصة قبيلة 🥳
إن كنت لا تدري، فقبيلة نشرت قائمة بأعلى 100 شخص تأثيرا على المنصة، تصفحها من هنا:
https://qabilah.com/posts/6goSgU--jio
وإن كنت لا تدري ما هي قبيلة (عارٌ عليك)، فهذا رابط الدعوة الخاص بي:
https://qabilah.com/waiting-list/y57zPDQcrq8
سجّل في قبيلة واكسبها، ولا تخسر LinkedIn (مقولة مسروقة 😂)
إن كنت لا تدري، فقبيلة نشرت قائمة بأعلى 100 شخص تأثيرا على المنصة، تصفحها من هنا:
https://qabilah.com/posts/6goSgU--jio
وإن كنت لا تدري ما هي قبيلة (عارٌ عليك)، فهذا رابط الدعوة الخاص بي:
https://qabilah.com/waiting-list/y57zPDQcrq8
سجّل في قبيلة واكسبها، ولا تخسر LinkedIn (مقولة مسروقة 😂)
❤12
أقل من 100 سطر لإضافة ميزة البحث خلال الكتابة في صفحة المؤلفين ضمن موقع "الجامع"!
أضفت قبل قليل ميزة البحث خلال الكتابة في قائمة المؤلفين الموجودة في موقع الجامع مع إمكانية ترقيم الصفحات (Pagination) من خلال تعديل أقل من 100 سطر برمجي، تتضمن واجهة المستخدم والمُتحّكم (Controller) وشيفرة JavaScript بسيطة لتحديث واجهة المستخدم تلقائيًّا خلال الكتابة.
يمكنك الاطلاع على التعديل من هنا:
https://github.com/ieasybooks/aljam3-web-app/commit/0c92bebf4a8b1df208cc9019c11d1f4d4a80abaf
(التعديل يتضمن أكثر من 100 سطر، ولكن الباقي مختص بحالات الاختبار 😁)
ويمكنك تجربة التعديل من خلال صفحة قائمة المؤلفين في الموقع من هنا:
https://aljam3.com/authors
كان هذا ممكنا -بعد توفيق الله سبحانه- بفضل Ruby on Rails ومكتبة Turbo والتي تُمكّنك من تحديث الصفحة باستخدام Morphing للحفاظ على حالة بعض العناصر في الصفحة كمربعات الإدخال ومكان المستخدم في الصفحة حتى خلال التحديث.
ما هو الـ Morphing؟ هذا أمر شرحُه يطول ولكن ببساطة مُخِلّة هو أقل عدد من العمليات التي تحتاج لإجراءها لتحويل الصفحة الحالية إلى الصفحة الراجعة من الخادم، دون تحديث الصفحة بالكامل.
حان الآن وقت إضافة نفس الأمر في باقي صفحات الموقع من خلال الميزة الأقوى، النسخ واللصق 😂🚀
والسلام عليكم 👋🏻
أضفت قبل قليل ميزة البحث خلال الكتابة في قائمة المؤلفين الموجودة في موقع الجامع مع إمكانية ترقيم الصفحات (Pagination) من خلال تعديل أقل من 100 سطر برمجي، تتضمن واجهة المستخدم والمُتحّكم (Controller) وشيفرة JavaScript بسيطة لتحديث واجهة المستخدم تلقائيًّا خلال الكتابة.
يمكنك الاطلاع على التعديل من هنا:
https://github.com/ieasybooks/aljam3-web-app/commit/0c92bebf4a8b1df208cc9019c11d1f4d4a80abaf
(التعديل يتضمن أكثر من 100 سطر، ولكن الباقي مختص بحالات الاختبار 😁)
ويمكنك تجربة التعديل من خلال صفحة قائمة المؤلفين في الموقع من هنا:
https://aljam3.com/authors
كان هذا ممكنا -بعد توفيق الله سبحانه- بفضل Ruby on Rails ومكتبة Turbo والتي تُمكّنك من تحديث الصفحة باستخدام Morphing للحفاظ على حالة بعض العناصر في الصفحة كمربعات الإدخال ومكان المستخدم في الصفحة حتى خلال التحديث.
ما هو الـ Morphing؟ هذا أمر شرحُه يطول ولكن ببساطة مُخِلّة هو أقل عدد من العمليات التي تحتاج لإجراءها لتحويل الصفحة الحالية إلى الصفحة الراجعة من الخادم، دون تحديث الصفحة بالكامل.
حان الآن وقت إضافة نفس الأمر في باقي صفحات الموقع من خلال الميزة الأقوى، النسخ واللصق 😂🚀
والسلام عليكم 👋🏻
❤3