خان المُبرمجين (علي فاضل)
Photo
أول 200 سطر برمجي في منصة باحث من كتابة أحد غيري!
خلال آخر سنة ونصف، كنت وحيدًا في الشيفرة البرمجية لمنصة باحث، أكتب وأكتب وأكتب دون أن يُراجع أحد ما أكتب (والله وحده يعلم بالأخطاء) ودون أن يكتب أحد معي، ولكن تغيّر كل شيء خلال الأسبوع الماضي، أخيرًا وبعد طول عناء 😂
أضفنا البارحة (ولله الحمد، فالجمع في هذه الجملة جمعٌ حقيقي على عكس منشوراتي السابقة) ميزة جديدة إلى منصة باحث، وهي ميزة "السجل"، حيث أصبحت المنصّة تحتفظ بتقدّمك في مشاهدة المواد وتعرضه لك في صفحة السجل كما هو موضّح في الصورة المرفقة.
كذلك، عند فتح نفس المادة مرة أخرى، سيبدأ التشغيل من آخر نقطة كنت تشاهد عندها.
أضفت ميزة إعادة تشغيل المادة من آخر نقطة كنت تشاهدها منذ فترة، لكنني لم أُضف صفحة السجل بسبب الكسل 😁 فطلبت من أحد الأصدقاء إضافة هذه الميزة للتعرّف على شيفرة المنصة، ولله الحمد، انتهى منها في عضون أيام 🚀
من فوائد التعاون في تطوير هذه الميزة:
- اختبار جاهزية بيئة التطوير للعمل على أجهزة مختلفة، واكتشفنا خلال هذه التجربة بعض الأمور التي يمكن تحسينها بخصوص بيئة التطوير
- اختبار مدى قابلية الآخرين على فهم الشيفرة البرمجية الخاصة بالمنصة والتعديل عليها والبحث داخلها
- خطوة أولى لي في طريق بناء فريق يُساعد في تطوير ومتابعة المنصة
فالحمدلله على نعمائه، وانتظروا المزيد من الميزات التي لن أكتبها بيدي 😎
والسلام عليكم 👋🏻
خلال آخر سنة ونصف، كنت وحيدًا في الشيفرة البرمجية لمنصة باحث، أكتب وأكتب وأكتب دون أن يُراجع أحد ما أكتب (والله وحده يعلم بالأخطاء) ودون أن يكتب أحد معي، ولكن تغيّر كل شيء خلال الأسبوع الماضي، أخيرًا وبعد طول عناء 😂
أضفنا البارحة (ولله الحمد، فالجمع في هذه الجملة جمعٌ حقيقي على عكس منشوراتي السابقة) ميزة جديدة إلى منصة باحث، وهي ميزة "السجل"، حيث أصبحت المنصّة تحتفظ بتقدّمك في مشاهدة المواد وتعرضه لك في صفحة السجل كما هو موضّح في الصورة المرفقة.
كذلك، عند فتح نفس المادة مرة أخرى، سيبدأ التشغيل من آخر نقطة كنت تشاهد عندها.
أضفت ميزة إعادة تشغيل المادة من آخر نقطة كنت تشاهدها منذ فترة، لكنني لم أُضف صفحة السجل بسبب الكسل 😁 فطلبت من أحد الأصدقاء إضافة هذه الميزة للتعرّف على شيفرة المنصة، ولله الحمد، انتهى منها في عضون أيام 🚀
من فوائد التعاون في تطوير هذه الميزة:
- اختبار جاهزية بيئة التطوير للعمل على أجهزة مختلفة، واكتشفنا خلال هذه التجربة بعض الأمور التي يمكن تحسينها بخصوص بيئة التطوير
- اختبار مدى قابلية الآخرين على فهم الشيفرة البرمجية الخاصة بالمنصة والتعديل عليها والبحث داخلها
- خطوة أولى لي في طريق بناء فريق يُساعد في تطوير ومتابعة المنصة
فالحمدلله على نعمائه، وانتظروا المزيد من الميزات التي لن أكتبها بيدي 😎
والسلام عليكم 👋🏻
❤5👍1
قال صلى الله عليه وسلم: "إنَّ اللهَ لا يقبضُ العلمَ انتزاعًا ينتزعُهُ منَ النَّاسِ، ولَكن يقبضُ العلمَ بقبضِ العُلماءِ، حتَّى إذا لم يترُك عالمًا اتَّخذَ النَّاسُ رؤوسًا جُهَّالًا، فسُئلوا فأفتوا بغيرِ عِلمٍ فضلُّوا وأضلُّوا".
تُوُفّي اليوم الشيخ المُحدّث أبي إسحاق الحويني، الذي أفنى عمره في خدمة السُّنة النبوية ونشر العلم الشرعي.
لم أدرس كتابا أو متنا كاملا على الشيخ من خلال شروحاته، لكنني شاهدت العديد من محاضراته المتفرقة والتي أثّرت في وعي الإنسان وطريقة تفكيره وديانته.
نسأل الله أن يرحمه رحمةً واسعة، وأن يجزيه عن الإسلام والمسلمين خير الجزاء، وأن يُسكنه الفردوس الأعلى من الجنة، وأن يُلهم أهله ومُحبيه وطلابه الصبر والسلوان.
ولمن أحب أن يستفيد من علم الشيخ، فهذه قناته على YouTube:
https://youtube.com/@alhewenytube
وهذه صفحته على منصة باحث:
https://baheth.ieasybooks.com/speakers/أبو-إسحاق-الحويني
تُوُفّي اليوم الشيخ المُحدّث أبي إسحاق الحويني، الذي أفنى عمره في خدمة السُّنة النبوية ونشر العلم الشرعي.
لم أدرس كتابا أو متنا كاملا على الشيخ من خلال شروحاته، لكنني شاهدت العديد من محاضراته المتفرقة والتي أثّرت في وعي الإنسان وطريقة تفكيره وديانته.
نسأل الله أن يرحمه رحمةً واسعة، وأن يجزيه عن الإسلام والمسلمين خير الجزاء، وأن يُسكنه الفردوس الأعلى من الجنة، وأن يُلهم أهله ومُحبيه وطلابه الصبر والسلوان.
ولمن أحب أن يستفيد من علم الشيخ، فهذه قناته على YouTube:
https://youtube.com/@alhewenytube
وهذه صفحته على منصة باحث:
https://baheth.ieasybooks.com/speakers/أبو-إسحاق-الحويني
❤4😢2👍1
خان المُبرمجين (علي فاضل)
Photo
في Ruby on Rails، وبشكل افتراضي، يوجد ملف واحد لتعريف الـ Routes في مشروعك وهو ملف
بمرور الأيام وتعاقب السنين يطول هذا الملف ويتعقّد، خصوصا عند وجود Routes للـ APIs وأخرى للوحة إدارة التطبيق، بالإضافة إلى الـ Routes الخاصة بالتطبيق نفسه والتي يستخدمها المستخدم العادي.
هذا ما حدث البارحة في منصة باحث، فقررت تجربة أمرين:
- فصل هذا الملف إلى ملفات أصغر
- إجراء هذا التعديل باستخدام الـ Agents، وتحديدا محرر Cursor
لفصل ملف
بدايةً، طلبت من Cursor استخراج الـ Routes الخاصة بالـ APIs إلى ملف منفصل، وفعلا أنشأ المجلد المطلوب وملف
انتقلت بعدها إلى الـ Routes الخاصة بلوحة التحكم، ونفّذ الـ Agent نفس الأمر.
الملف أصبح أكثر تنظيما، وتجربة الـ Agents كانت لطيفة. أجريت بعض العديلات الأخرى على الملف وأضفت Routes جديدة لإعادة التوجيه، ولكن احتاج الـ Agent إلى مساعدة لإجراء بعض التعديلات المعقدة، رغم استخدامي لأفضل النماذج المتاحة Claude Sonnet 3.7 Thinking.
والسلام عليكم 👋🏻
config/routes.rb.بمرور الأيام وتعاقب السنين يطول هذا الملف ويتعقّد، خصوصا عند وجود Routes للـ APIs وأخرى للوحة إدارة التطبيق، بالإضافة إلى الـ Routes الخاصة بالتطبيق نفسه والتي يستخدمها المستخدم العادي.
هذا ما حدث البارحة في منصة باحث، فقررت تجربة أمرين:
- فصل هذا الملف إلى ملفات أصغر
- إجراء هذا التعديل باستخدام الـ Agents، وتحديدا محرر Cursor
لفصل ملف
config/routes.rb إلى ملفات أصغر يجب إنشاء مجلد جديد باسم config/routes، ثم إنشاء ملفات أصغر داخل هذا المجلد، فمثلا ملف config/routes/api.rb للـ Routes الخاصة بالـ APIs وملف config/routes/admin.rb للـ Routes الخاصة بلوحة التحكم.بدايةً، طلبت من Cursor استخراج الـ Routes الخاصة بالـ APIs إلى ملف منفصل، وفعلا أنشأ المجلد المطلوب وملف
api.rb ونقل الشيفرة البرمجية من ملف routes.rb إليه وقام باستخدام الملف الجديد في الملف الأساسي من خلال كتابة draw(:api) وهذه هي طريقة استخدام الملفات الفرعية في الملف الأساسي للـ Routes في Rails.انتقلت بعدها إلى الـ Routes الخاصة بلوحة التحكم، ونفّذ الـ Agent نفس الأمر.
الملف أصبح أكثر تنظيما، وتجربة الـ Agents كانت لطيفة. أجريت بعض العديلات الأخرى على الملف وأضفت Routes جديدة لإعادة التوجيه، ولكن احتاج الـ Agent إلى مساعدة لإجراء بعض التعديلات المعقدة، رغم استخدامي لأفضل النماذج المتاحة Claude Sonnet 3.7 Thinking.
والسلام عليكم 👋🏻
❤3
خان المُبرمجين (علي فاضل)
GIF
كنت أفكر البارحة في إعادة ترتيب وتنظيم أحد الـ Classes المهمة في منصة باحث وهو الـ Class المسؤول عن إنشاء كل الأوامر الخاصة بتفريغ المواد ونقلها من الحاسب الشخصي إلى خادم باحث وإدخالها إلى المنصة وغيرها من الأوامر.
قررت استخدام الذكاء الاصطناعي في هذه العملية ولكن كان لدي سؤال: "كيف سأتأكد من أن الترتيب والتنظيم الذي قام به الذكاء الاصطناعي صحيح ولم يُغيّر مخرجات الـ Class؟"، فكان الحل هو إنشاء حالات اختبار في البداية قبل ترتيب وتنظيم الملف.
طلبت من الذكاء الاصطناعي كتابة حالات اختبار للملف باستخدام مكتبة RSpec، وفعلا قام بإضافة ملف جديد وأضاف إليه حالات الاختبار لكل الدوال الموجودة في الـ Class، لكنه أخطأ في اختبار دالة واحدة من أصل 10.
قضيت بعض الوقت في إصلاح هذا الخطأ ووصلت نسبة تغطية الشيفرة البرمجية بحالات الاختبار إلى 100%.
بعد ذلك طلبت منه ترتيب وتنظيم الملف وإعادة صياغة بعض الدوال الموجودة فيه مع المحافظة على نجاح حالات الاختبار الخاصة به، وفعلا أعاد ترتيب وتنظيم الملف وأنشأ دوال جديدة وأصبح الملف أفضل بكثير.
أخيرا، طلبت منه إعادة ترتيب وتنظيم ملف الاختبارات ليتماشى مع ملف الـ Class الجديد من حيث تنظيم الدوال وتجميع حالات اختبارها بناء على الوظيفة التي تُقدّمها.
كمُلخّص، إذا كان لديك حالات اختبار، فاستخدام الذكاء الاصطناعي في إعادة ترتيب وتنظيم الشيفرة البرمجية الخاصة بك هو أمر آمن إلى حد كبير، ولكن إذا لم تمتلك حالات اختبار لشيفرتك البرمجية، فابدأ بإنشاء حالات اختبار باستخدام الذكاء الاصطناعي ثم اطلب منه إعادة ترتيب وتنظيم الشيفرة البرمجية.
والسلام عليكم 👋🏻
قررت استخدام الذكاء الاصطناعي في هذه العملية ولكن كان لدي سؤال: "كيف سأتأكد من أن الترتيب والتنظيم الذي قام به الذكاء الاصطناعي صحيح ولم يُغيّر مخرجات الـ Class؟"، فكان الحل هو إنشاء حالات اختبار في البداية قبل ترتيب وتنظيم الملف.
طلبت من الذكاء الاصطناعي كتابة حالات اختبار للملف باستخدام مكتبة RSpec، وفعلا قام بإضافة ملف جديد وأضاف إليه حالات الاختبار لكل الدوال الموجودة في الـ Class، لكنه أخطأ في اختبار دالة واحدة من أصل 10.
قضيت بعض الوقت في إصلاح هذا الخطأ ووصلت نسبة تغطية الشيفرة البرمجية بحالات الاختبار إلى 100%.
بعد ذلك طلبت منه ترتيب وتنظيم الملف وإعادة صياغة بعض الدوال الموجودة فيه مع المحافظة على نجاح حالات الاختبار الخاصة به، وفعلا أعاد ترتيب وتنظيم الملف وأنشأ دوال جديدة وأصبح الملف أفضل بكثير.
أخيرا، طلبت منه إعادة ترتيب وتنظيم ملف الاختبارات ليتماشى مع ملف الـ Class الجديد من حيث تنظيم الدوال وتجميع حالات اختبارها بناء على الوظيفة التي تُقدّمها.
كمُلخّص، إذا كان لديك حالات اختبار، فاستخدام الذكاء الاصطناعي في إعادة ترتيب وتنظيم الشيفرة البرمجية الخاصة بك هو أمر آمن إلى حد كبير، ولكن إذا لم تمتلك حالات اختبار لشيفرتك البرمجية، فابدأ بإنشاء حالات اختبار باستخدام الذكاء الاصطناعي ثم اطلب منه إعادة ترتيب وتنظيم الشيفرة البرمجية.
والسلام عليكم 👋🏻
👨💻6❤3👍1
الحلول الغريبة
عندما أنشأت مكتبة تحويل (رابطها في الأسفل)، لتحويل الصور وملفات PDF إلى نصوص، لم أكتب حالات اختبار لضيق الوقت أولا وللكسل ثانيا 😁
بعد فترة من التطوير، احتجت إلى إضافة حالات اختبار لكي لا أختبر المكتبة في كل مرة أُعدّلها، فلمعت في ذهني الفكرة التالية:
بدلا من كتابة حالات اختبار طبيعية كما يكتبها المطورون الآخرون تختبر كل جزء في المكتبة بشكل منفصل، قررت كتابة حالات اختبار تختبر المكتبة من خلال تشغيلها والتحقق من مخرجاتها النهائية (End-to-end).
فقررت إنشاء GitHub Action يُثبّت المكتبة ويبدأ في إرسال الملفات إليها والتأكد من أن المخرجات سليمة كما هو متوقّع، فكتبت 12 حالة تجدها في هذا الملف:
https://github.com/ieasybooks/tahweel/blob/main/.github/workflows/tests.yml
في كل مرة أُعدّل فيها المكتبة أو يُرسِل أحدهم تعديلًا، يعمل هذا الـ Action ليُخبرنا أن التعديل الجديد لم يؤثر على عمل المكتبة 🥳
الحمدلله كان هذا حلًّا جيِّدا في حالة تحويل، لكنه ليس الأمثل بكل تأكيد.
هذا رابط المكتبة:
https://github.com/ieasybooks/tahweel
والسلام عليكم 👋🏻
عندما أنشأت مكتبة تحويل (رابطها في الأسفل)، لتحويل الصور وملفات PDF إلى نصوص، لم أكتب حالات اختبار لضيق الوقت أولا وللكسل ثانيا 😁
بعد فترة من التطوير، احتجت إلى إضافة حالات اختبار لكي لا أختبر المكتبة في كل مرة أُعدّلها، فلمعت في ذهني الفكرة التالية:
بدلا من كتابة حالات اختبار طبيعية كما يكتبها المطورون الآخرون تختبر كل جزء في المكتبة بشكل منفصل، قررت كتابة حالات اختبار تختبر المكتبة من خلال تشغيلها والتحقق من مخرجاتها النهائية (End-to-end).
فقررت إنشاء GitHub Action يُثبّت المكتبة ويبدأ في إرسال الملفات إليها والتأكد من أن المخرجات سليمة كما هو متوقّع، فكتبت 12 حالة تجدها في هذا الملف:
https://github.com/ieasybooks/tahweel/blob/main/.github/workflows/tests.yml
في كل مرة أُعدّل فيها المكتبة أو يُرسِل أحدهم تعديلًا، يعمل هذا الـ Action ليُخبرنا أن التعديل الجديد لم يؤثر على عمل المكتبة 🥳
الحمدلله كان هذا حلًّا جيِّدا في حالة تحويل، لكنه ليس الأمثل بكل تأكيد.
هذا رابط المكتبة:
https://github.com/ieasybooks/tahweel
والسلام عليكم 👋🏻
❤4
Forwarded from الكتب المُيسّرة
Media is too big
VIEW IN TELEGRAM
استعراض 10 مميزات جديدة في منصة باحث 🚀
0️⃣ البرامج العلمية
1️⃣ تشكيل التفريغات
2️⃣ نسخ التفريغات
3️⃣ صوتيات باحث
4️⃣ تفضيل المتحدثين
5️⃣ Yamli
6️⃣ تفضيل صوتيات باحث
7️⃣ تمييز كمُشاهَد
8️⃣ الملاحظات
9️⃣ تتبع المشاهدة
رابط المقطع على YouTube:
https://youtu.be/BmgzPva671I
رابط موقع المنصّة
رابط تطبيق المنصّة لأجهزة Android
رابط تطبيق المنصّة لأجهزة iPhone
رابط بوت المنصّة على تيليجرام
كل عام وأنتم بخير، وأعاده الله علينا وعليكم بالصحة والعافية، وفرّج الله عن المسلمين ما هم فيه ❤️
0️⃣ البرامج العلمية
1️⃣ تشكيل التفريغات
2️⃣ نسخ التفريغات
3️⃣ صوتيات باحث
4️⃣ تفضيل المتحدثين
5️⃣ Yamli
6️⃣ تفضيل صوتيات باحث
7️⃣ تمييز كمُشاهَد
8️⃣ الملاحظات
9️⃣ تتبع المشاهدة
رابط المقطع على YouTube:
https://youtu.be/BmgzPva671I
رابط موقع المنصّة
رابط تطبيق المنصّة لأجهزة Android
رابط تطبيق المنصّة لأجهزة iPhone
رابط بوت المنصّة على تيليجرام
كل عام وأنتم بخير، وأعاده الله علينا وعليكم بالصحة والعافية، وفرّج الله عن المسلمين ما هم فيه ❤️
❤7⚡2🔥1
#مساعدة
لخبراء GCP، أستخدم Service Account Credentials للتعامل مع Google Drive API وكانت تعمل بدون مشاكل في الأشهر السابقة، ولكن بدأت أواجه مشكلة TimeoutError: [Errno 60] Operation timed out بشكل عشوائي خلال الأربعة أيام السابقة.
غيرت الحاسوب وشبكة الانترنت وحدّثت الاعتماديات واستخدمت Service Account جديد وبحثت في Google ولم أصل إلى أي نتيجة، مع العلم أن سرعة الانترنت عندي 100Mbps!
وجدت شخصا طرح مشكلة مشابهة لمشكلتي على StackOverflow من يومين، وهذا رابط سؤاله:
https://stackoverflow.com/questions/79543938/google-api-python-client-random-timeout-error
فهل من أي نصائح؟
هذه هي الشيفرة البرمجية التي تستخدم الـ Service Account Credentials وتتعامل مع Google Drive API:
https://github.com/ieasybooks/tahweel/blob/main/tahweel/processors/google_drive_base_ocr_processor.py
لخبراء GCP، أستخدم Service Account Credentials للتعامل مع Google Drive API وكانت تعمل بدون مشاكل في الأشهر السابقة، ولكن بدأت أواجه مشكلة TimeoutError: [Errno 60] Operation timed out بشكل عشوائي خلال الأربعة أيام السابقة.
غيرت الحاسوب وشبكة الانترنت وحدّثت الاعتماديات واستخدمت Service Account جديد وبحثت في Google ولم أصل إلى أي نتيجة، مع العلم أن سرعة الانترنت عندي 100Mbps!
وجدت شخصا طرح مشكلة مشابهة لمشكلتي على StackOverflow من يومين، وهذا رابط سؤاله:
https://stackoverflow.com/questions/79543938/google-api-python-client-random-timeout-error
فهل من أي نصائح؟
هذه هي الشيفرة البرمجية التي تستخدم الـ Service Account Credentials وتتعامل مع Google Drive API:
https://github.com/ieasybooks/tahweel/blob/main/tahweel/processors/google_drive_base_ocr_processor.py
❤2
Forwarded from أكاديمية غراس العلم
بسم الله الرَّحمن الرَّحيم...
الحمد لله والصَّلاة والسَّلام على رسول الله...
✉️ كثُر السُّؤال في الآونة الأخيرة عن قضيَّة انتشرت وعمَّت بين النَّاس، وهي محاكاة الصُّور البشريَّة عبر الذَّكاء الاصطناعيِّ (ghibli) وما الفتوى الشَّرعيَّة في ذلك؟
تحرير صورة المسألة :
🟢 أوَّلًا: استخدام الذَّكاء الاصطناعيِّ لتحويل صور لا روح فيها (كصور للأشجار والأنهار والمظاهر الطَّبيعيَّة) لا حرج فيها شرعًا.
🟢 ثانيًا: استخدام الذَّكاء الاصطناعيِّ لمحاكاة صور ذوات الأرواح (الإنسان والحيوان)
حرام على قول جمهور الفقهاء في الحالات الآتية:
1️⃣ إذا تمَّت محاكاة الكائن الحيِّ كاملًا (برأسه وجسده بكلِّ ما فيها من التَّفاصيل).
2️⃣ إذا تمَّت محاكاة شبه كاملة، بحيث يحذف من الصَّورة تفاصيل يمكن بقاء الحياة مع حذفها كأنْ يحذف العين فقط أو الأذن فقط أو الجزء السُّفليَّ من الجسد فقط.
🤍 فلا يجوز في هاتين الحالتين استخدام الذَّكاء الاصطناعيِّ.
📖 الدَّليل:
🤩 جاء في صحيح البخاريِّ من حديث ابن عمر -رضي الله عنهما- قال: قال رسول الله ﷺ: "إنَّ الَّذين يصنعون هذه الصور يعذَّبون يوم القيامة، يقال لهم: أحيوا ما خلقتم".
وهذا الحديث محمول عند جماهير أهل العلم على صناعة التَّماثيل، وعلى الرُّسوم أيضا.
🤩 وجاء أيضا في البخاريِّ ومسلم
عن سعيد بن أبي الحسن قال: كنت عند ابن عبَّاس -رضي الله عنهما- إذ أتاه رجل فقال: يا أبا عبَّاس إنِّي إنسان إنَّما معيشتي من صنعة يدي وإنِّي أصنع هذه التَّصاوير فقال ابن عبَّاس: لا أحدِّثك إلَّا ما سمعت رسول الله ﷺ يقول، سمعته يقول: من صوَّر صورة فإنَّ الله معذِّبه حتَّى ينفخ فيها الرُّوح وليس بنافخ فيها أبدا.
🟢 فربا الرَّجل ربوة شديدة واصفرَّ وجهه فقال: ويحك إن أبيت إلَّا أن تصنع فعليك بهذا الشَّجر؛ كلِّ شيء ليس فيه روح.
⏺ وفي هذا الحديث بيَّن ابن عبَّاس جواز محاكاة الصُّور الَّتي لا روح فيها كالشَّجر ونحوه.
🤩 ومن أشدِّ ما ورد في ذلك أيضاً
ما جاء في صحيح البخاريِّ ومسلم أيضا من حديث أبي هريرة، سمعت رسول الله ﷺ يقول: «ومن أظلم ممَّن ذهب يخلق كخلقي فليخلقوا حبَّة وليخلقوا ذرَّة».
🟢 ثالثًا: إذا تمَّت محاكاة كائن حيٍّ لكن حذف من الصُّورة تفاصيل لا يمكن بقاء الحياة مع حذفها.
⏪ مثال: كأنْ يحاكي الوجه فقط دون باقي الجسد أو يحاكي الوجه والجسد لكن يحذف كلَّ التَّفاصيل في الوجه فيزيل العين والأنف والأذن والفم جميعها.
🔺 في هذه الحالة وقع نزاع بين أهل العلم، والمفتى به عندنا أنَّه لا حرج في هذه المحاكاة، لأنَّه لم يصوِّر كائنا حيًّا موجودا في الواقع في هذه الحالة فلا مضاهاة هنا والله أعلم.
🟢 قال ابن قدامة الحنبليُّ في كتاب (المُغنِي):
وإن قطع منه -أي: من الصورة- ما لا يبقى الحيوان بعد ذهابه -كصدره، أو بطنه، أو جُعل له رأس منفصل عن بدنه- لم يدخل تحت النَّهي؛ لأنَّ الصُّورة لا تبقى بعد ذهابه، فهو كقطع الرَّأس.
🟢 وقال ابن حجر الهيتميُّ الشافعيُّ في التُّحفة:
(وخرج بحيوان: تصوير ما لا رأس له، فيحلُّ... وكفقد الرَّأس فقدُ ما لا حياة بدونه.
نعم، يظهر أنَّه لا يضرُّ فقد الأعضاء الباطنة، كالكبد، وغيره؛ لأنَّ الملحظ المحاكاةُ، وهي حاصلة بدون ذلك) انتهى.
وإن كان الأورع عدم المحاكاة في الوجه حتَّى في هذه الصُّورة خروجا من الخلاف.
🤍 ونختم بالتَّنبيه على أنَّ هذه المسألة مختلفة تماما عن مسألة التَّصوير الحقيقيِّ بأدوات التَّصوير (الكاميرا، والفيديو) فهذا جائز، لأنَّه ليس محاكاة خلق الله بل هو انعكاس للمشهد الحقيقيِّ باستخدام أداة تتيح الاحتفاظ بهذا الانعكاس وليس هذا موطن النِّقاش في هذه المسألة.
🪶 كتبه خادم العلم/ إبراهيم رفيق الطَّويل
- دكتوراه الفقه وأصوله
الحمد لله والصَّلاة والسَّلام على رسول الله...
تحرير صورة المسألة :
حرام على قول جمهور الفقهاء في الحالات الآتية:
وهذا الحديث محمول عند جماهير أهل العلم على صناعة التَّماثيل، وعلى الرُّسوم أيضا.
عن سعيد بن أبي الحسن قال: كنت عند ابن عبَّاس -رضي الله عنهما- إذ أتاه رجل فقال: يا أبا عبَّاس إنِّي إنسان إنَّما معيشتي من صنعة يدي وإنِّي أصنع هذه التَّصاوير فقال ابن عبَّاس: لا أحدِّثك إلَّا ما سمعت رسول الله ﷺ يقول، سمعته يقول: من صوَّر صورة فإنَّ الله معذِّبه حتَّى ينفخ فيها الرُّوح وليس بنافخ فيها أبدا.
ما جاء في صحيح البخاريِّ ومسلم أيضا من حديث أبي هريرة، سمعت رسول الله ﷺ يقول: «ومن أظلم ممَّن ذهب يخلق كخلقي فليخلقوا حبَّة وليخلقوا ذرَّة».
وإن قطع منه -أي: من الصورة- ما لا يبقى الحيوان بعد ذهابه -كصدره، أو بطنه، أو جُعل له رأس منفصل عن بدنه- لم يدخل تحت النَّهي؛ لأنَّ الصُّورة لا تبقى بعد ذهابه، فهو كقطع الرَّأس.
(وخرج بحيوان: تصوير ما لا رأس له، فيحلُّ... وكفقد الرَّأس فقدُ ما لا حياة بدونه.
نعم، يظهر أنَّه لا يضرُّ فقد الأعضاء الباطنة، كالكبد، وغيره؛ لأنَّ الملحظ المحاكاةُ، وهي حاصلة بدون ذلك) انتهى.
وإن كان الأورع عدم المحاكاة في الوجه حتَّى في هذه الصُّورة خروجا من الخلاف.
- دكتوراه الفقه وأصوله
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍1
محطة جديدة في رحلة منصة باحث: الانتقال من ChromaDB إلى Qdrant 🚀
الحمدلله رب العالمين، خطوة الانتقال هذه كانت مؤجّلة منذ أشهر طويلة، ولكن بعد الانتقال من Kamal V1 إلى Kamal V2، وكمال هي الأداة المستخدمة في نشر (Deploy) منصة باحث، واجهت مشكلة مع ChromaDB أجبرتني على اتخاذ القرار والمضي قدمًا.
المضحك في الأمر أن الانتقال لم يستغرق سوى 5 أو 6 أيام فقط!
وهنا يظهر تأثير "الخوف من المجهول". كنت أؤجل هذه الخطوة مرارًا بسبب التفكير المستمر بها، لكن عندما اضطررت لخوض التجربة، تمّت بسلاسة وفي وقت ممتاز، بفضل الله.
✅ الأحاديث الآن تعمل بالكامل على Qdrant
📚 والمكتبة الشاملة يتم تحويل صفحاتها إلى تضمينات (Embeddings) وستنتهي العملية خلال الأيام القادمة بإذن الله.
من أبرز فوائد الانتقال إلى Qdrant:
⚡️ سرعة أعلى في الإضافة والاسترجاع
🎯 دقة أفضل بفضل تحسين النماذج وأخذ النص الكامل بعين الاعتبار
🛠 تجربة برمجية أسهل وأكثر مرونة
لكل من يؤجل خطوة تقنية بسبب الخوف أو الغموض: أحيانًا نحتاج فقط إلى دفعة، والباقي يأتي تباعًا.
رابط منصة باحث:
https://baheth.ieasybooks.com
الحمدلله رب العالمين، خطوة الانتقال هذه كانت مؤجّلة منذ أشهر طويلة، ولكن بعد الانتقال من Kamal V1 إلى Kamal V2، وكمال هي الأداة المستخدمة في نشر (Deploy) منصة باحث، واجهت مشكلة مع ChromaDB أجبرتني على اتخاذ القرار والمضي قدمًا.
المضحك في الأمر أن الانتقال لم يستغرق سوى 5 أو 6 أيام فقط!
وهنا يظهر تأثير "الخوف من المجهول". كنت أؤجل هذه الخطوة مرارًا بسبب التفكير المستمر بها، لكن عندما اضطررت لخوض التجربة، تمّت بسلاسة وفي وقت ممتاز، بفضل الله.
✅ الأحاديث الآن تعمل بالكامل على Qdrant
📚 والمكتبة الشاملة يتم تحويل صفحاتها إلى تضمينات (Embeddings) وستنتهي العملية خلال الأيام القادمة بإذن الله.
من أبرز فوائد الانتقال إلى Qdrant:
⚡️ سرعة أعلى في الإضافة والاسترجاع
🎯 دقة أفضل بفضل تحسين النماذج وأخذ النص الكامل بعين الاعتبار
🛠 تجربة برمجية أسهل وأكثر مرونة
لكل من يؤجل خطوة تقنية بسبب الخوف أو الغموض: أحيانًا نحتاج فقط إلى دفعة، والباقي يأتي تباعًا.
رابط منصة باحث:
https://baheth.ieasybooks.com
❤11
Forwarded from الكتب المُيسّرة
This media is not supported in your browser
VIEW IN TELEGRAM
إعلان إضافة المتصفح لمنصة باحث 🚀 🖥
رابط الإضافة على متصفح Chrome
رابط الإضافة على متصفح FireFox
رابط المقطع على YouTube:
https://youtu.be/BHslgbgwmIQ
رابط موقع المنصّة
رابط تطبيق المنصّة لأجهزة Android
رابط تطبيق المنصّة لأجهزة iPhone
رابط بوت المنصّة على تيليجرام
رابط الإضافة على متصفح Chrome
رابط الإضافة على متصفح FireFox
رابط المقطع على YouTube:
https://youtu.be/BHslgbgwmIQ
رابط موقع المنصّة
رابط تطبيق المنصّة لأجهزة Android
رابط تطبيق المنصّة لأجهزة iPhone
رابط بوت المنصّة على تيليجرام
❤5🔥2
Forwarded from الكتب المُيسّرة
Media is too big
VIEW IN TELEGRAM
للمبرمجين: انتهينا من تحويل كافة كتب المكتبة الوقفية إلى نصوص 🚀
نستعرض في هذا المقطع كيفية الاستفادة من كتب المكتبة الوقفية بعد أن حوّلناها من ملفات PDF إلى نصوص باستخدام Google Document AI بصيغة TXT 📄 و DOCX 📝
يمكن الاستفادة من هذه البيانات في بناء تطبيقات للبحث أو التلخيص أو غيرها من قِبل المطوّرين ونشرها لتعم الفائدة بإذن الله
رابط المقطع على YouTube:
https://youtu.be/qxO0GTz-cp8
رابط مستودع البيانات غير المضغوطة
رابط مستودع البيانات المضغوطة
نستعرض في هذا المقطع كيفية الاستفادة من كتب المكتبة الوقفية بعد أن حوّلناها من ملفات PDF إلى نصوص باستخدام Google Document AI بصيغة TXT 📄 و DOCX 📝
يمكن الاستفادة من هذه البيانات في بناء تطبيقات للبحث أو التلخيص أو غيرها من قِبل المطوّرين ونشرها لتعم الفائدة بإذن الله
رابط المقطع على YouTube:
https://youtu.be/qxO0GTz-cp8
رابط مستودع البيانات غير المضغوطة
رابط مستودع البيانات المضغوطة
❤6
Forwarded from الكتب المُيسّرة
This media is not supported in your browser
VIEW IN TELEGRAM
لغير المبرمجين: واجهة لتحميل ملفات المكتبة الوقفية بصيغ PDF و TXT و DOCX 🚀
قمنا ببناء واجهة تسمح للمستخدم بالبحث في كتب المكتبة الوقفية باستخدام العنوان وفرز النتائج حسب التصنيف والمؤلف وتحميل ملفات الكتاب بأي صيغة شاء
رابط المقطع على YouTube:
https://youtu.be/VE3NJr5Fo8U
رابط واجهة البحث والتحميل
رابط منشور البارحة
قمنا ببناء واجهة تسمح للمستخدم بالبحث في كتب المكتبة الوقفية باستخدام العنوان وفرز النتائج حسب التصنيف والمؤلف وتحميل ملفات الكتاب بأي صيغة شاء
رابط المقطع على YouTube:
https://youtu.be/VE3NJr5Fo8U
رابط واجهة البحث والتحميل
رابط منشور البارحة
❤4
خان المُبرمجين (علي فاضل)
Photo
كدت أُشلّ 🫠
أجريت بعض التعديلات على مكتبة تحويل خلال الأيام الماضية تسمح باستخدام أكثر من Service Account Credentials من GCP لتحويل أكثر من ملف PDF أو صورة في نفس الوقت إلى نصوص:
https://github.com/ieasybooks/tahweel
وبدأت باستخدام هذا التعديل وكانت النتائج مرضية، فأصبحت قادرا على تحويل الملفات بشكل أسرع من السابق، ولكن حاصرني سؤال قبل قليل: "مكتبة تحويل تُحوّل ملفات الـ PDF إلى صور قبل تحويلها إلى نصوص وتُخزّنها في مجلد واحد مشترك، فهل صور الملفات المختلفة تتداخل؟".
لم أستطع النوم ودخلت على الشيفرة البرمجية من الهاتف للتحقق فوجدت أنني أحتفظ بملفات الصور الخاصة بأكثر من ملف PDF في مجلد عشوائي مشترك 😨:
https://github.com/ieasybooks/tahweel/blob/main/tahweel/managers/pdf_file_manager.py#L19-L35
ببساطة، هذا يعني أن كل ما كنت أُفرّغه في الفترة الماضية من كتب يحتاج إلى إعادة نظر، خصوصا وأنني كنت أُحوّل مجموعات مختلفة من الكتب بالتوازي على نفس الحاسب.
قبل أن تبدأ نوبة الذعر الداخلية، شغّلت الحاسب ووضعت ملفَّي PDF في مجلد واحد، الأول باللغة العربية والثاني باللغة الإنجليزية وبدأت بتحويلهما إلى نصوص باستخدام تحويل ونظرت في النتائج لأكتشف أن النتائج لا مشكلة فيها، فأعدت الكرة مرة أخرى وكان الأمر نفسه.
في هذه اللحظة أوقفت الشيفرة البرمجية المسؤولة عن حذف ملفات الصور من المجلد المشترك لأنظر فيه وأتأكد من التداخل بين صور الملفات المختلفة بعيني:
https://github.com/ieasybooks/tahweel/blob/main/tahweel/managers/base_file_manager.py#L104-L106
فلما فتحت المجلد المشترك، رأيت ما هو موضّح في الصورة المرفقة مع المنشور 🤓
ببساطة، قلقي لم يكن في محله، فمكتبة
هذا لا يعني أن ما فعلته كان صحيحًا، فالأفضل إنشاء مجلد خاص لكل ملف PDF يجري تحويله إلى نص، ولكن هذا تعديل مستقبليّ قد يساهم أحدكم في تنفيذه 😁
والسلام عليكم 👋🏻
أجريت بعض التعديلات على مكتبة تحويل خلال الأيام الماضية تسمح باستخدام أكثر من Service Account Credentials من GCP لتحويل أكثر من ملف PDF أو صورة في نفس الوقت إلى نصوص:
https://github.com/ieasybooks/tahweel
وبدأت باستخدام هذا التعديل وكانت النتائج مرضية، فأصبحت قادرا على تحويل الملفات بشكل أسرع من السابق، ولكن حاصرني سؤال قبل قليل: "مكتبة تحويل تُحوّل ملفات الـ PDF إلى صور قبل تحويلها إلى نصوص وتُخزّنها في مجلد واحد مشترك، فهل صور الملفات المختلفة تتداخل؟".
لم أستطع النوم ودخلت على الشيفرة البرمجية من الهاتف للتحقق فوجدت أنني أحتفظ بملفات الصور الخاصة بأكثر من ملف PDF في مجلد عشوائي مشترك 😨:
https://github.com/ieasybooks/tahweel/blob/main/tahweel/managers/pdf_file_manager.py#L19-L35
ببساطة، هذا يعني أن كل ما كنت أُفرّغه في الفترة الماضية من كتب يحتاج إلى إعادة نظر، خصوصا وأنني كنت أُحوّل مجموعات مختلفة من الكتب بالتوازي على نفس الحاسب.
قبل أن تبدأ نوبة الذعر الداخلية، شغّلت الحاسب ووضعت ملفَّي PDF في مجلد واحد، الأول باللغة العربية والثاني باللغة الإنجليزية وبدأت بتحويلهما إلى نصوص باستخدام تحويل ونظرت في النتائج لأكتشف أن النتائج لا مشكلة فيها، فأعدت الكرة مرة أخرى وكان الأمر نفسه.
في هذه اللحظة أوقفت الشيفرة البرمجية المسؤولة عن حذف ملفات الصور من المجلد المشترك لأنظر فيه وأتأكد من التداخل بين صور الملفات المختلفة بعيني:
https://github.com/ieasybooks/tahweel/blob/main/tahweel/managers/base_file_manager.py#L104-L106
فلما فتحت المجلد المشترك، رأيت ما هو موضّح في الصورة المرفقة مع المنشور 🤓
ببساطة، قلقي لم يكن في محله، فمكتبة
pdf2image تستخدم UUID4 تلقائيا في تسمية ملفات الصور الخاصة بكل ملف PDF، فالتداخل شبه مستحيل 🥳هذا لا يعني أن ما فعلته كان صحيحًا، فالأفضل إنشاء مجلد خاص لكل ملف PDF يجري تحويله إلى نص، ولكن هذا تعديل مستقبليّ قد يساهم أحدكم في تنفيذه 😁
والسلام عليكم 👋🏻
👍6❤5
هذه المقالة مهمة لكل مطوِّري الواجهات، وخصوصا مُحبِّي React:
https://infrequently.org/2024/11/if-not-react-then-what
ومن وجهة نظري -التي لا يُعتد بها في أي محفل من المحافل المحلية أو الدولية- لا حاجة لاستخدام أي أُطر عمل أو مكتبات معقدة لبناء الواجهات في مُعظم الحالات والمواقع، باستثناء أشياء بسيطة وخفيفة جدا لإنجاز بعض المهام وترتيب بعض الملفات كـ StimulusJS، لا أكثر ولا أقل..
https://infrequently.org/2024/11/if-not-react-then-what
ومن وجهة نظري -التي لا يُعتد بها في أي محفل من المحافل المحلية أو الدولية- لا حاجة لاستخدام أي أُطر عمل أو مكتبات معقدة لبناء الواجهات في مُعظم الحالات والمواقع، باستثناء أشياء بسيطة وخفيفة جدا لإنجاز بعض المهام وترتيب بعض الملفات كـ StimulusJS، لا أكثر ولا أقل..
👍3❤1
يوجد Just In Time Compiler (JIT) للغة Ruby اسمه YJIT، من تطوير شركة Shopify وأُضيف بعد تطويره إلى اللغة بشكل رسمي، وحقق نتائج ممتازة يمكن الاطلاع عليها من هنا:
https://speed.yjit.org
لمن يحب أن يتعرّف أكثر على الـ JIT Compilers فيمكنه مشاهدة هذه المادة (لم أجد شيئًا عربيًّا، فمن يجد يُشارك رجاءً):
https://www.youtube.com/watch?v=d7KHAVaX_Rs
قرأت البارحة خبرًا أن فريق شركة Shopify المُنتج لـ YJIT يعمل على JIT Compiler جديد للغة Ruby واسمه ZJIT (مُبدعون في الأسماء)، وهذه الـ Issue التي يقترح فيها الفريق دمج الشيفرة المصدرية المبدئية للـ JIT Compiler الجديد في مستودع لغة Ruby الأساسي:
https://bugs.ruby-lang.org/issues/21221
استوقفني أن المبرمجة التي أنشأت الـ Issue ليست مجرد مبرمجة هاوية تعلّمت البرمجة من YouTube وأصبحت بطريقة إعجازية في فريق إنشاء YJIT و ZJIT، إنما حصلت على درجة الدكتوراه في هذا المجال وتعمل في هذا الفريق بناء على ما درسته (بالإضافة إلى الخبرة العملية بكل تأكيد).
فالمقصد أن شعارات "الجامعة لا تنفع" و"الدراسة الجامعية مضيعة للوقت" وغيرها من الشعارات من هذا النوع تحتاج إلى إعادة نظر وتسويقها قد يَضر ولا ينفع.
تستطيع تعلّم أُطر العمل وبناء المواقع والتطبيقات وغيرها الكثير من الأمور من YouTube وقد تتخصص في بعض الأمور، ولكن إخراج كفاءات بجودة عالية في مجالات دقيقة لا أظنه ممكنا من خلال YouTube وغيرها من المنصات دون الخبرة الحقيقية والدراسة المنهجية الأكاديمية "عالية الجودة".
والسلام عليكم 👋🏻
https://speed.yjit.org
لمن يحب أن يتعرّف أكثر على الـ JIT Compilers فيمكنه مشاهدة هذه المادة (لم أجد شيئًا عربيًّا، فمن يجد يُشارك رجاءً):
https://www.youtube.com/watch?v=d7KHAVaX_Rs
قرأت البارحة خبرًا أن فريق شركة Shopify المُنتج لـ YJIT يعمل على JIT Compiler جديد للغة Ruby واسمه ZJIT (مُبدعون في الأسماء)، وهذه الـ Issue التي يقترح فيها الفريق دمج الشيفرة المصدرية المبدئية للـ JIT Compiler الجديد في مستودع لغة Ruby الأساسي:
https://bugs.ruby-lang.org/issues/21221
استوقفني أن المبرمجة التي أنشأت الـ Issue ليست مجرد مبرمجة هاوية تعلّمت البرمجة من YouTube وأصبحت بطريقة إعجازية في فريق إنشاء YJIT و ZJIT، إنما حصلت على درجة الدكتوراه في هذا المجال وتعمل في هذا الفريق بناء على ما درسته (بالإضافة إلى الخبرة العملية بكل تأكيد).
فالمقصد أن شعارات "الجامعة لا تنفع" و"الدراسة الجامعية مضيعة للوقت" وغيرها من الشعارات من هذا النوع تحتاج إلى إعادة نظر وتسويقها قد يَضر ولا ينفع.
تستطيع تعلّم أُطر العمل وبناء المواقع والتطبيقات وغيرها الكثير من الأمور من YouTube وقد تتخصص في بعض الأمور، ولكن إخراج كفاءات بجودة عالية في مجالات دقيقة لا أظنه ممكنا من خلال YouTube وغيرها من المنصات دون الخبرة الحقيقية والدراسة المنهجية الأكاديمية "عالية الجودة".
والسلام عليكم 👋🏻
❤6
من أهم الأشياء عند إنشاء أي مكتبة أو Script لمعالجة مجموعات ضخمة من البيانات هو الاحتفاظ بتقدّم المُعالجة وعدم تنفيذ نفس العملية أكثر من مرة على نفس المدخلات.
سابقا، كنت أكتب بعض الـ Scripts -إما لمعالجة البيانات أو جمعها من بعض المواقع وغيرها من الأمور- دون التدقيق على هذا الأمر، فعند حدوث أي خطأ أثناء التنفيذ، أجد أنني خسرت كل التقدّم الذي أحرزته، وقد يكون هذا التقدم أياما أو حتى أسابيع.
يمكن الاحتفاظ بالتقدّم في المعالجة بطريقتين:
- حفظ التقدّم صراحةً على ملف خارجي أو في قاعدة بيانات مستقلّة
- حفظ التقدّم ضمنيًّا من خلال التأكد من وجود المخرجات المُتوقّعة
من أمثلة النوع الأول مكتبة
ومن أمثلة النوع الثاني مكتبتَيْ تفريغ وتحويل، فهُما يتجاوزان أي ملف من ملفات المدخلات في حال وجود المخرجات المُتوقّعة منه.
من محاسن النوع الأول أنه لا يفترض أي افتراضات ويمكنك تعديل حالة التقدّم من خلال التعديل في مكان واحد، الملف أو قاعدة البيانات، ومن مساوئه أنك تحتاج للاحتفاظ بالمخرجات الحقيقية بجانب ملفات حالة التقدّم.
أما النوع الثاني فهو عكس الأول، فمن محاسنه أنك لا تحتاج للاحتفاظ بملفات حالة التقدّم، ولكنك تحتاج لحذف أجزاء من المخرجات الحقيقية في حال أردت معالجة جزء من البيانات مرة أخرى.
ختامًا، سواءً استخدمت الطريقة الأولى أو الثانية، فيجب عليك الاحتفاظ بحالة تقدّم معالجة البيانات التي تعمل عليها، لا تنسى هذا الأمر أبدا 😁
والسلام عليكم 👋🏻
سابقا، كنت أكتب بعض الـ Scripts -إما لمعالجة البيانات أو جمعها من بعض المواقع وغيرها من الأمور- دون التدقيق على هذا الأمر، فعند حدوث أي خطأ أثناء التنفيذ، أجد أنني خسرت كل التقدّم الذي أحرزته، وقد يكون هذا التقدم أياما أو حتى أسابيع.
يمكن الاحتفاظ بالتقدّم في المعالجة بطريقتين:
- حفظ التقدّم صراحةً على ملف خارجي أو في قاعدة بيانات مستقلّة
- حفظ التقدّم ضمنيًّا من خلال التأكد من وجود المخرجات المُتوقّعة
من أمثلة النوع الأول مكتبة
yt-dlp، فهي تحتفظ بتقدّم تنزيل المقاطع من YouTube (أو غيره) في ملف TXT من خلال تمرير الاختيار download-archive-- للمكتبة عند تشغيلها.ومن أمثلة النوع الثاني مكتبتَيْ تفريغ وتحويل، فهُما يتجاوزان أي ملف من ملفات المدخلات في حال وجود المخرجات المُتوقّعة منه.
من محاسن النوع الأول أنه لا يفترض أي افتراضات ويمكنك تعديل حالة التقدّم من خلال التعديل في مكان واحد، الملف أو قاعدة البيانات، ومن مساوئه أنك تحتاج للاحتفاظ بالمخرجات الحقيقية بجانب ملفات حالة التقدّم.
أما النوع الثاني فهو عكس الأول، فمن محاسنه أنك لا تحتاج للاحتفاظ بملفات حالة التقدّم، ولكنك تحتاج لحذف أجزاء من المخرجات الحقيقية في حال أردت معالجة جزء من البيانات مرة أخرى.
ختامًا، سواءً استخدمت الطريقة الأولى أو الثانية، فيجب عليك الاحتفاظ بحالة تقدّم معالجة البيانات التي تعمل عليها، لا تنسى هذا الأمر أبدا 😁
والسلام عليكم 👋🏻
👍4❤1👌1
معلومة قد تفيدك
أحتاج أحيانا إلى البحث عن مشكلة في مكتبة من المكتبات التي أستخدمها في المشروع الذي أعمل عليه، ومن طرق البحث عن المشكلة تعديل ملفات المكتبة الموجودة على جهازي مباشرة والتحقق من مخرجات بعض الدوال أو مدخلاتها.
في لغة Python، يمكنك الوصول إلى مسار المكتبة التي تستخدمها على جهازك باستخدام
ثم تفتح مجلد المكتبة على محررك المفضل مثل VSCode.
كذلك في لغة Ruby، يمكنك فتح المكتبة بشكل مباشر من خلال الأمر:
بهذه الطريقة تستطيع تعديل الملفات وتشغيل مشروعك واختبار التعديلات دون الحاجة لأي تفاصيل إضافية مثل تنزيل الشيفرة البرمجية للمكتبة عندك وإجراء التعديلات المطلوبة ثم تثبيتها والتجربة.
هذه الطريقة تفيد في التجارب السريعة وإجراء تعديلات المرة الواحدة.
أحتاج أحيانا إلى البحث عن مشكلة في مكتبة من المكتبات التي أستخدمها في المشروع الذي أعمل عليه، ومن طرق البحث عن المشكلة تعديل ملفات المكتبة الموجودة على جهازي مباشرة والتحقق من مخرجات بعض الدوال أو مدخلاتها.
في لغة Python، يمكنك الوصول إلى مسار المكتبة التي تستخدمها على جهازك باستخدام
__file__، فمثلا إذا أردت أن تصل إلى مسار مكتبة تفريغ يمكنك كتابة:import tafrigh
print(tafrigh.__file__)
ثم تفتح مجلد المكتبة على محررك المفضل مثل VSCode.
كذلك في لغة Ruby، يمكنك فتح المكتبة بشكل مباشر من خلال الأمر:
bundle open {gem name}
بهذه الطريقة تستطيع تعديل الملفات وتشغيل مشروعك واختبار التعديلات دون الحاجة لأي تفاصيل إضافية مثل تنزيل الشيفرة البرمجية للمكتبة عندك وإجراء التعديلات المطلوبة ثم تثبيتها والتجربة.
هذه الطريقة تفيد في التجارب السريعة وإجراء تعديلات المرة الواحدة.
❤2