اذهب إلى المحتوى

ياسر مسكين

الأعضاء
  • المساهمات

    2939
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    6

كل منشورات العضو ياسر مسكين

  1. وعليكم السلام ورحمة الله تعالى وبركاته، هذا الشعور لا شكّ أننا جميعا قد مررنا به في بداياتنا والجميع سيمرّ به لذا لا داعي للقلق وتشتيت نفسك، وأنصحك بالتركيز مع المدرب أثناء الدورة والتطبيق العملي معه وأن تُشغل نفسك بالتعلم وأخذ المكتسبات وأن لا تُشغل نفسك بالأفكار الجانبية فهي حينما تتراكم قد تسبب في ابتعادك عن المجال فهذا الشعور مخادع. وفي الحقيقة نحن لسنا مطالبين بحفظ أيّ شيء، فالحفظ هو تحصيل حاصل بالنسبة للمبرمجين فهو نتيجة العمل الدؤوب والاستمرارية والتطبيق العملي المستمر، أما الحفظ فهو أمر غير مفيد ولا ينمّي في المبرمج حسّ التفكير المنطقي، فالتوثيقات الرسمية موجودة ويمكنك الرجوع إليها متى أردت ذلك، يكفي أن تعرف وجود تلك المكتبات وتطبق عليها لا أن تحفظها. يمكنك أيضا أن تطلع على نصائح أكثر من هنا:
  2. وعليكم السلام ورحمة الله تعالى وبركاته، بعد إتقان الأساسيات البرمجية من الطبيعي أن يحتار المرء في الخطوة التالية هل يبدأ بتعلم تطوير الواجهات (Frontend) أم الخلفية (Backend) لكن في الحقيقة لا توجد إجابة واحدة صحيحة تنطبق على الجميع، بل الأمر يعتمد على طبيعة الميول وطريقة التفكير. فمن يرى في نفسه محبا للتصميم، التفاعل البصري، وتحسين تجربة المستخدم، فإن البدء بالواجهات الأمامية سيكون مناسبا، خاصة أنه يعطي نتائج سريعة ومرئية تشجع على الاستمرار. أما من يميل إلى التفكير المنطقي، وتحليل البيانات، والتعامل مع قواعد البيانات والخوادم، فإن الواجهات الخلفية سيكون طريقا مفيدا، لأنه يعزز مهارات التحليل، الفهم العميق للبرمجة، ويكسب صاحبه قدرة على بناء نظم قوية. لكن لمن يهدف إلى أن يكون مطور Full Stack من الأفضل أن يختار أحد المسارين أولا ويتقنه جيدا حتى يشعر بالثقة، ثم ينتقل إلى المسار الآخر. التدرج والتركيز أهم من التشتت فالكثير من المبرمجين الناجحين اليوم بدأوا بالفرونت أند ثم انتقلوا إلى الباك أند، والعكس صحيح. المهم هو الثبات على الطريق، وعدم التوقف عند كل مفترق.
  3. وعليكم السلام ورحمة الله تعالى وبركاته، نعم توجد مكتبة معروفة تدعم إنشاء ملفات PDF باللغة العربية في Laravel وهي "Dompdf" عند استخدامها مع Laravel عبر حزمة مثل barryvdh/laravel-dompdf وهي من أكثر الحلول شيوعا وأسهلها دمجا. لكن الدعم الافتراضي للعربية فيها ضعيف نوعا ما لأن Dompdf لا يدعم كل الخطوط والاتجاهات بشكل جيد، وخاصة الكتابة من اليمين لليسار (RTL). لذلك لتتمكن من توليد ملفات PDF باللغة العربية بشكل صحيح، يجب توفير خط يدعم العربية مثل "Amiri" أو "Cairo" وتفعيله يدويا داخل ملف CSS المستخدم في ال HTML المراد تحويله إلى PDF، وأيضا إضافة خاصية: direction: rtl; text-align: right; إن كنت تبحث عن دعم عربي أفضل، يمكنك أيضا النظر في مكتبة mpdf/mpdf التي تعد خيارا قويا وتدعم العربية وRTL بشكل أفضل وأكثر استقرارا، لكن لا توجد لها حزمة Laravel رسمية بنفس سهولة barryvdh وبالرغم من ذلك يمكن دمجها يدويا في Laravel
  4. وعليكم السلام ورحمة الله تعالى وبركاته، في حال كنت تقصد إضافة Vue Devtools في المتصفح يمكنك إيقفها من خلال فتح متصفحك ثم الانتقال إلى صفحة الإضافات مثلا إذا كنت تعمل على: Chrome: chrome://extensions/ Firefox: about:addons ثم ابحث عن Vue.js devtools بعدا اضغط على زر الإيقاف المؤقت أو "تعطيل" (Disable/Turn off). أما في حال كنت تقصد إلغاء تثبيت الإضافات التي قمت بتثبيتها في محرر الأكواد لديك فإن كنت تعمل على VsCode يمكنك التوجه إلى تبويبة Extention: ثم إلى الإضافات التي قمت بتثبيتها يمنكنك إدارتها وحذفها بسهولة من هناك كما هو موضح في الصورة المرفقة.
  5. وعليكم السلام ورحمة الله تعالى وبركاته، في بيئة Kaggle Notebook لدينا ثلاث مجلدات رئيسية: /kaggle/input/ وهو مجلد البيانات المدخلة نستخدمه للقراءة فقط إذ لا يمكن الكتابة فيه /kaggle/working/ وهو مجلد العمل الخاص بك إذ يمكن الكتابة والقراءة منه /kaggle/tmp/ وهو مجلد مؤقت وهو الذي يحذف عند إعادة التشغيل لذا عندما تعالج البيانات ب IterativeImputer يمكنك حفظها في /kaggle/working/ كملف CSV ثم في بداية الدفتر يمكنك التحقق من وجود الملف المحفوظ: إذا كان موجود ستقوم بتحميله مباشرة إذا لم يكن موجود نفذ المعالجة واحفظه وهذا يوفر عليك وقت إعادة تنفيذ المعالجة في كل مرة تفتح فيها الدفتر، لأن الملفات في /kaggle/working/ تبقى محفوظة حتى لو أغلقت الدفتر وفتحته مرة أخرى لعمل ذلك يمكنك بداية استيراد المكتبة os: import os ثم في بداية الدالة بعد السطر الأول تضيف شرط التحقق من وجود الملف: if os.path.exists('/kaggle/working/processed_data.csv'): return pd.read_csv('/kaggle/working/processed_data.csv') ثم في النهاية وقبل return data تضيف السطر الذي يقوم بالحفظ كالتالي: data.to_csv('/kaggle/working/processed_data.csv', index=False)
  6. وعليكم السلام ورحمة الله تعالى وبركاته، IterativeImputer من مكتبة scikit-learn لا تدعم التدريب على GPU بشكل مباشر لأن scikit-learn مصممة للعمل على CPU فقط. حتى لو كان لديك GPU متاح في Kaggle Notebook، فإن IterativeImputer سيستخدم CPU للمعالجة. لذا إذا كنت تريد الاستفادة من GPU لمعالجة البيانات المفقودة، يمكنك استخدام بدائل مثل cuML وهي النسخة المحسنة ل GPU من scikit-learn أو يمكنك بدلا من ذلك تنفيذ خوارزمية مشابهة باستخدام PyTorch أو TensorFlow التي تدعم GPU، لكن هذا سيتطلب كتابة كود مخصص لذلك.
  7. السلام عليكم ورحمة الله تعالى وبركاته، دورة الذكاء الاصطناعي تعتبر من الدورات المتقدمة إلى حد ما، وتتطلب وجود معرفة أساسية في البرمجة وعلوم الحاسوب. لذلك يفضل بداية الالتحاق بدورة علوم الحاسوب في الأكاديمية التي تركز على تأهيلك بأساسيات البرمجة بشكل عام دون التخصص المباشر في مجال معين. لكن مع ذلك في دورة الذكاء الاصطناعي يتم تدريس لغة بايثون من الصفر، في أول مسار بالإضافة إلى شرح قواعد البيانات، مما يجعلها مناسبة لمن لديهم استعداد لتعلم أساسيات البرمجة، يمكنك الانضمام للدورة حتى لو لم تكن متمكنا تماما من البرمجة، مع العلم أنك قد تحتاج إلى بذل جهد إضافي خارج محتوى الدورة لفهم بعض المواضيع واستيعابها بشكل أفضل يمكنك الاطلاع على مساراتها من هنا:
  8. السلام عليكم ورحمة الله تعالى وبركاته، بايثون في الأساس هي لغة برمجة مصممة للعمل على أنظمة التشغيل التقليدية مثل Windows وLinux وmacOS، وليس على الأجهزة المحمولة. ونظام الأندرويد يعتمد على Java وKotlin كلغات أساسية، ويستخدم آلة افتراضية خاصة تسمى ART (Android Runtime) لتشغيل التطبيقات. وهذا يعني أن كود Python لا يمكن تشغيله مباشرة على الأندرويد دون حلول وسطية. والحل يكمن في تغليف مفسر Python بالكامل داخل تطبيق الأندرويد، مما يعني أننا نقوم بتضمين نسخة كاملة من Python مع جميع المكتبات المطلوبة داخل ملف APK وهذا يشبه حمل حاسوب صغير داخل هاتفك لتشغيل كود Python، مما يفسر لماذا حجم التطبيقات الناتجة يكون كبيرا نسبيا عادة 20-50 ميجابايت حتى للتطبيقات البسيطة. يمكن استخدام Buildozer فهو أداة تلقائية تقوم بعدة مهام معقدة خلف الكواليس. أولا يجب القيام بتحميل Python-for-Android (P4A) وهو مشروع مخصص لتجميع Python ومكتباته للعمل على معمارية ARM المستخدمة في معظم هواتف الأندرويد ثم تقوم بتجميع جميع المكتبات المطلوبة من الكود المصدري، مما يعني تحويلها من كود C/C++ إلى ملفات قابلة للتنفيذ على الأندرويد بعدها تقوم بإنشاء wrapper بلغة Java يعمل كجسر بين نظام الأندرويد وكود Python الخاص بك ثم جمع كل هذه المكونات في ملف APK واحد قابل للتثبيت. بداية لتحضير البيئة ننفذ: pip install buildozer cython==0.29.19 ونقوم بتثبيت Cython هنا لأنه أداة تحويل كود Python إلى C، مما يسمح لنا بتشغيل أسرع وتوافق أفضل مع المكتبات المكتوبة بلغة C. والإصدار 0.29.19 محدد لأنه آخر إصدار مستقر تم اختباره مع Buildozer ولأن الإصدارات الأحدث قد تحتوي على تغييرات تكسر التوافق مع عملية البناء، ثم نثبت تبعيات النظام: sudo apt-get install -y python3-pip build-essential git python3 python3-dev ثم مكتبات الوسائط المتعددة: sudo apt-get install -y libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev ثم مكتبات SDL (Simple DirectMedia Layer): sudo apt-get install -y libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev ثم مكتبات النظام الأساسية: sudo apt-get install -y libffi-dev libffi6 zlib1g-dev libssl-dev openssl ولتهيئة المشروع buildozer.spec نقوم بتنفيذ الأمر: buildozer init هذا الأمر ينشئ ملف buildozer.spec وهو قلب عملية البناء. فهذا الملف يحتوي على جميع إعدادات المشروع التي تخبر Buildozer بكيفية بناء التطبيق وأهم الأقسام في buildozer.spec: [app] title = اسم التطبيق الذي سيظهر للمستخدم package.name = اسم الحزمة التقني (بدون مسافات أو أحرف خاصة) package.domain = org.example (عادة عكس اسم النطاق) source.dir = . (مجلد كود Python) version = 0.1 requirements = python3,kivy (المكتبات المطلوبة) ثم عملية البناء: buildozer -v android debug والخيار -v (verbose) يعرض تفاصيل العملية، وهو مهم للغاية لفهم أي أخطاء قد تحدث وأما كلمة debug تعني أن APK الناتج سيكون للاختبار وليس للنشر ومراحل البناء هي كالتالي: تحميل NDK وSDK: يحمل Android NDK (Native Development Kit) للتجميع وSDK لأدوات البناء تحميل Python-for-Android: يحمل P4A والذي يحتوي على Python مجمع خصيصا للأندرويد تجميع المكتبات: كل مكتبة في requirements تُجمّع منفصلة من الكود المصدري إنشاء البرنامج الرئيسي: ينشئ Java wrapper يستدعي كود Python تجميع APK: يجمع كل المكونات في ملف APK واحد
  9. الذكاء الاصطناعي بالفعل قد حقق ثورة في الآونة الأخيرة خاصة في العقد الأخير، وذلك على جميع المستويات، وقد استبدلت العديد من الوظائف بوظائف أخرى، أما بالنسبة للمهندسين فأعتقد أنه بالعكس تماما، فالمهندس الفطن سيبدأ بتعلم مهارات جديدة وتخصصات جديدة، فالذكاء الاصطناعي تطور بشكل كبير وأنشأ معه تخصصات جديدة كثيرة، وفي حال كنت في مرحلة التعلم فأنصحك بتجنب الاعتماد الكلي على أدوات الذكاء الاصطناعي. إلى حين تمكنك من المنطق والتفكير البرمجي، وتستطيع حل المشكلات البرمجية بكفاءة، وتكون متمكنا من الخوارزميات والأساسيات. بعدها يمكنك الاعتماد عليها لأتمتة المهام لديك ولتسريع الأعمال والمشاريع التي تنجزها وكل هذا لا يمنعك كمهندس أن تتطور وتدرس وتتقن المهارات الجديدة التي أنشأها الذكاء الاصطناعي، فحتما الآلة لن تستطيع كبح جماح إبداع الإنسان، ولكن إن كان هذا الأخير متكاسلا ولا يتعلم فأكيد أن الآلة ستستبدله لا محالة.
  10. أرجو نقل سؤالك وطرحه أسفل الدرس في قسم التعليقات المخصص لذلك وهذا لأن هذا القسم مخصص للأسئلة العامة وهذا لمساعدتك بشكل أفضل.
  11. السلام عليكم ورحمة الله تعالى وبركاته، بداية قم بالانتقال إلى موقع Netlify من هنا: https://www.netlify.com ثم اذهب إلى Dashboard ثم افتح الموقع الذي رفعته. ثم في أعلى الصفحة، اضغط على Site settings" ثم اضغط على زر "Change site name" ثم اختر الاسم الذي تريده وإذا كان الاسم متاحا، سيتم حفظه.
  12. السلام عليكم ورحمة الله تعالى وبركاته، لجعل الموقع يكون متجاوبا مع مختلف أحجام الشاشات يجب أن يكون هذا السطر موجودا في ملف ال html الرئيسي لديك: <meta name="viewport" content="width=device-width, initial-scale=1.0"> وهو موجود بالفعل في ملف index.html فبدونه الأجهزة مثل الهواتف والأجهزة اللوحية ستعرض موقعك كما لو أنه على شاشة كبيرة ولا تحترم تغييرات ال CSS مثل width: 100% أو flex-wrap وغيرها. أي أنه ليصبح متجاوبا الآن يجب تعديل ملف ال style.css من خلال إضافة قواعد التجاوب التالية: @media (max-width: 768px) { .navbar { flex-direction: column; align-items: flex-start; gap: 1rem; } .navbar nav { display: flex; flex-direction: column; gap: 10px; } .hero { flex-direction: column; text-align: center; gap: 2rem; } .card { flex-direction: column; gap: 2rem; margin-top: 50px; } .about { flex-direction: column; text-align: center; padding: 1rem; gap: 2rem; } .skills { flex-direction: column; gap: 2rem; text-align: center; } .contact { flex-direction: column; padding: 1rem; text-align: center; } } يمكنك إضافتها في آخر الملف وبعد إضافتها ستلاحظ أن الموقع أصبح متجاوبا هكذا: يمكنك اختبار ذلك من خلال فتح الموقع في المتصفح ثم الضغط F12 أو استخدم "أدوات المطور" ثم اختر "وضع الهاتف".
  13. حسب سؤالك السابق فأنت قد اشتركت في دورة الذكاء الاصطناعي وهذه الدورة ترتكز على البرمجة بلا أي شك. أم أنك تقصد بأن تخصصك الجامعي هو البعيد عن البرمجة؟ أرجو التوضيح أكثر لمساعدتك بشكل أفضل.
  14. السلام عليكم ورحمة الله تعالى وبركاته، لفهم آلية عمل الكود بشكل بسيط يمكننا أولا أن نقوم بتقسيمها إلى عدة أجزاء وشرح كل جزء على حدى، في البداية يتم تعريف المتغيرات الأساسية التي تتحكم في آلية عمل الآلة الحاسبة كالتالي: let runningTotal = 0; let buffer = "0"; let previousOperator; const screen = document.querySelector('.screen'); فالمتغير runningTotal يخزن مجموع العمليات أثناء الحساب، أما buffer فهو يمثل القيمة الحالية التي يدخلها المستخدم على الشاشة. في حين previousOperator سيخزن آخر رمز عملية رياضية تم اختياره (+، -، ×، ÷) وأخيرا screen سيشير إلى العنصر الذي يعرض عليه ناتج الآلة الحاسبة وهو عنصر HTML بـ class اسمه: .screen. بعدها ننتقل إلى الدوال ونشرحها بالواحدة، لدينا الدالة buttonClick وهي الدالة التي يتم تنفيذها عند الضغط على الأزرار: function buttonClick(value){ if(isNaN(value)){ HandleSymbol(value); } else { handleNumber(value); } screen.innerText = buffer; } فإذا كانت القيمة التي ضغطها المستخدم رقما سترسل إلى handleNumber. وإذا كانت رمزا مثل + أو = أو C سترسل إلى HandleSymbol. وفي النهاية يتم تحديث الشاشة (screen.innerText) بقيمة buffer الحالية لعرضها للمستخدم. الدالة الأخرى وهي دالة التعامل مع الرموز: function HandleSymbol(symbol){ switch(symbol){ case 'C': buffer = '0'; runningTotal = 0; break; case '=': if(previousOperator === null) return; flushOperator(parseInt(buffer)); previousOperator = null; buffer = runningTotal; runningTotal = 0; break; case '←': if(buffer.length === 1){ buffer = '0'; } else { buffer = buffer.substring(0, buffer.length - 1); } break; case '+': case '-': case '÷': case '×': handleMath(symbol); break; } } وهي دالة تتعامل مع الرموز غير الرقمية فمثلا إذا ضغط المستخدم على C سيتم مسح كل شيء وإعادة القيم إلى وضعها الابتدائي أما إذا ضغط = سيتم تنفيذ العملية الحسابية بناء على القيم السابقة. أما الرمز ← فيستخدم لحذف آخر رقم من buffer وإذا كان الرمز أحد العمليات الرياضية الأساسية، ترسل إلى handleMath للتحضير لتنفيذ العملية. الدالة الأخرى هي دالة معالجة العمليات الحسابية: function handleMath(symbol){ if(buffer === '0') return; const intBuffer = parseInt(buffer); if(runningTotal === 0){ runningTotal = intBuffer; } else { flushOperator(intBuffer); } previousOperator = symbol; buffer = '0'; } هنا عند عند اختيار رمز عملية رياضية ما ك (+، -، ×، ÷)، سيتم تنفيذ هذه الدالة لكن بداية سيتم التحقق من أن المستخدم أدخل قيمة أم لا ثم يتم تحويل ال buffer إلى عدد صحيح. فإذا كانت هذه أول عملية سيتم تعيين هذا الرقم إلى runningTotal أما إذا كان هناك نتيجة سابقة سيتم تنفيذ العملية السابقة عبر flushOperator وفي النهاية سيتم تخزين العملية الحالية، ويتم تفريغ ال buffer استعدادا للرقم الجديد.
  15. السلام عليكم ورحمة الله تعالى وبركاته، ميزة السحب والإفلات عادة ما تكون مفعلة افتراضيا في معظم البيئات ولكن بما أنها غير مفعلة معك، فأرجو اتباع الخطوات الآتية أولا يجب التأكد من تحديث جميع الحزم إلى آخر إصدار: sudo apt update && sudo apt upgrade في حال كنت تستخدم تستخدم Debian 12 بواجهة GNOME أعد تشغيل مدير الملفات Nautilus بكتابة الأمر في الطرفية (Terminal): nautilus -q وإذا لم يشتغل معك أعد ضبط إعدادات Nautilus بحذف مجلد الإعدادات المؤقت: rm -rf ~/.local/share/nautilus nautilus -q وفي حال استمرت المشكلة تأكد من أنه ليس عندك أي إضافات (Extensions) في GNOME ممكن تعطل السحب والإفلات لذا جرب تعطيل الإضافات مؤقتًا من تطبيق "Extensions".
  16. السلام عليكم ورحمة الله تعالى وبركاته، حاليا أكاديمية حسوب لا توفر ميزة خاصة بتشكيل فرق العمل بين الطلبة، لأنّ المحتوى التعليمي من المقرّر أن يتعلمه كلّ طالب على حدى ليتم اختبار مهاراته ومكتسباته فيما بعد للحصول على الشهادة. أما في حال كنت ترغب في تكوين فريق للعمل خارج إطار الدورة فذلك ممكن من خلال قسم أسئلة وأجوبة أين يمكنك أن تجد الكثير من المستخدمين المهتمين بذلك. وأيضا يمكنك إيجادهم أيضا في مدونة حسوب i/o فهي مدونة نقاشية ويمكنك أن تجد أعضاء مميزين هناك.
  17. السلام عليكم ورحمة الله تعالى وبركاته، أرجو مراجعة شروط اجتياز الامتحان والتقدم للحصول على الشهادة قبل البدء في دراسة المسارات، يمكنك مراجعتها من هنا: الامتحان والحصول على الشهادة أما بخصوص سؤالك، فالتطبيقات العملية إما أن تكون موجودة في نهاية الدروس على شكل تمارين وواجبات يقدمها المدرب للطلبة. أو على شكل مسارات بعينها وأما التطبيقات التي يجب عليك رفعها فهي تخص المشاريع العملية ويمكنك الاستطلاع أكثر من خلال هذا المصدر: ولكن أنصحك بالتطبيق العملي على كلّ الدروس والمشاريع وليس فقط المطلوب رفعها للتقييم.
  18. وعليكم السلام ورحمة الله تعالى وبركاته، بخصوص المسائل المالية ومسائل إعادة الدورة يمكنك تقديم طلبك مباشرة إلى مركز مساعدة أكاديمية حسوب فهم المخوّلون في الخوض والفصل في هذا النوع من الطلبات وسيرافقونك في ذلك بكل صدر رحب.
  19. السلام عليكم ورحمة الله تعالى وبركاته، ليس واضحا بشكل جيد ما اسم الثيم الذي تشير إليه لكن على كل حال توجد العشرات من الثيمات التي يوفرها موقع vscodethemes يمكنك الانتقال إلى شريط البحث في أعلى الموقع والاختيار من هناك أي ثيم تريد ثم تقوم بتثبيته كما أنه يمكنك التحكم في تدرج الألوان على حسب رغبتك بحيث يمكنك الاختيار والفلترة على حسب لغة البرمجة التي تريد: أو على حسب شيوع وشهرة الثيم بحد ذاته من ناحية الاستخدام والتقييم: وهنا يمكنك البحث واختيار الألوان الأكثر رواجا أيضا:
  20. يمكنك التعديل على إعدادات الشفافية من خلال إعدادات محرر الأكواد نفسه دون استخدام إضافات خارجية، وذلك من خلال الذهاب إلى: File > Preferences > Settings ثم البحث عن "window opacity" في شريط البحث وهناك ستجد الإعداد التالي: Window: Title Bar Style والإعداد: Window: Opacity هنا يجب تغيير قيمة Window: Opacity إلى رقم أقل مثلا لنضعه 0.8 أو 0.9 حيث أن 1.0 يعني عدم الشفافية و 0.0 يعني الشفافية الكاملة.
  21. السلام عليكم ورحمة الله تعالى وبركاته، في مرحلة التعلم لا أنصح أبدا باستخدام أدوات الذكاء الاصطناعي أو توليد الأكواد، من الأفضل البدء بتعلم الخوارزميات وكتابة الأكواد بنفسك لفهم المنطق والهيكلة واكتساب القدرة على حل المشاكل المعقدة التي تحتاج إلى تفكير تحليلي عميق ومنطقي. وأفضل الطرق نجاعة هي التي تمزج بين التطبيق العملي والدروس النظرية وهذا ما تقدمه الأكاديمية من خلال دوراتها المختلفة. وأقترح عليك مراجعة هذه الإجابات لمعرفة أفضل الطرق لدراسة البرمجة:
  22. السلام عليكم ورحمة الله تعالى وبركاته، أفضل طريقة لإضافة تباعد بين السطور هي استخدام القيم الرقمية مع خاصية line-height فهذه الطريقة هي الأكثر مرونة وعملية لأنها تتكيف تلقائيا مع أحجام الخطوط المختلفة دون الحاجة لتعديل القيم يدويا. فعندما تكتب التالي: line-height: 1.5 فهذا يعني أن المسافة بين السطور ستكون 1.5 ضعف حجم الخط المستخدم، فإذا كان حجم الخط 16px فسيصبح التباعد 24px تلقائيا، وإذا غيرت حجم الخط إلى 20px فسيصبح التباعد 30px دون تدخل منك وهذا ما يجعل التصميم متجاوبا ومتسقا عبر جميع العناصر وهذه بضعة أمثلة على استعمالها: p { font-size: 16px; line-height: 1.6; } h2 { font-size: 24px; line-height: 1.3; } .large-text { font-size: 20px; line-height: 1.8; }
  23. هل تقصد أداة "أنا" التابعة لمنصة حسوب؟ برنامج إدارة المشاريع "أنا" أرجو توضيح استفسارك لكي نساعدك بشكل أفضل.
  24. السلام عليكم ورحمة الله وبركاته، نعم بالفعل توجد أدوات ومشاريع مفتوحة المصدر توظف الذكاء الاصطناعي في مجال الأمن السيبراني ومن أبرزها Zeek لتحليل حركة الشبكة، وSecurity Onion التي تدمج عدة تقنيات للكشف والتحليل، كما توجد مشاريع مثل Deep Exploit التي تعتمد على التعلم المعزز لاختبار الاختراق، وMaltrail لاكتشاف التهديدات في حركة المرور الشبكي باستخدام قواعد الذكاء الاصطناعي. وكلّ هذه الأدوات تستخدم في مجالات متعددة مثل كشف التسلل، التحليل السلوكي، وتحديد التهديدات غير المعروفة وغيرها من المجالات. يمكنك التعمق في المجال أيضا من هنا:
  25. السلام عليكم ورحمة الله تعالى وبركاته، ال MCP أو ما يعرف ب Model Context Protocol لا يمكن أن تكون بديلا لل APIs التقليدية لأنها عبارة عن بروتوكول متخصص تم تصميمه خصيصا لتسهيل تفاعل نماذج الذكاء الاصطناعي مع مصادر البيانات والأدوات الخارجية بطريقة موحدة ومعيارية. وقد انتشرت MCP بسرعة لأنها تحل مشكلة جوهرية في النظام البيئي لل AI وهي تعقيد ربط النماذج بمختلف مصادر البيانات، حيث توفر واجهة موحدة تمكن المطورين من إنشاء "خوادم MCP" بحيث تقوم بعرض البيانات والوظائف بصيغة مفهومة لنماذج الذكاء الاصطناعي دون الحاجة لكتابة كود تكامل مخصص لكل مصدر بيانات. وأما عن الفرق الجوهري بينهما فيكمن في أنّ APIs التقليدية مصممة للتفاعل بين التطبيقات والخدمات، بينما MCP مصممة خصيصا لتمكين نماذج الذكاء الاصطناعي من فهم والتفاعل مع البيانات مما يعني أن MCP تكمل APIs ولا تستبدلها. فهي تعمل كطبقة تجريد تسهل على المطورين ربط أدوات الذكاء الاصطناعي بمصادر البيانات المختلفة بطريقة معيارية وقابلة للتشغيل البيني، مما يفسر الاهتمام المتزايد بها في مجتمع المطورين العاملين مع تطبيقات الذكاء الاصطناعي حاليا.
×
×
  • أضف...