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

Mustafa Suleiman

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

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

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

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

    264

كل منشورات العضو Mustafa Suleiman

  1. في حال كنت ستستخدم المكتبة في مشروع جافاسكريبت والمكتبة تدعم مشاريع جافاسكريبت النقية وليس Node.js فقط، إذن تستطيع تحميل ملفات المكتبة مباشرًة واستخدامها في مشروع دونّ الحاجة إلى استخدام npm. وبخصوص الخطوط، نستخدم CSS لأن الأمر متعلق بالتنسيق وبالتالي لغة CSS هي المسؤولة عن ذلك في المتصفح، وحتى إن استخدمت مكتبة فسيتم تحويل الكود الخاص بها إلى أكواد CSS، إذن ما الداعي إلى ذلك؟ عليك الإعتماد على خصائص CSS مثل font-family و font-size و font-weight و font-style لتحديد الخط وحجمه ووزنه وأسلوبه. p { font-family: Arial, sans-serif; /* تحدد عائلة الخطوط */ font-size: 16px; /* تحدد حجم الخط */ font-weight: bold; /* تحدد وزن الخط */ font-style: italic; /* تحدد أسلوب الخط */ } وفي React عليك تحميل الخط من google fonts مثلاً ووضعه في مجلد fonts في مجلد assests ، ثم استيراده كالتالي في المكون الرئيسي: import './fonts/Goldman/Goldman-Bold.ttf'; ثم في ملف CSS الرئيسي، استخدم الخط كالتالي: @font-face { font-family: "GoldmanBold"; src: local("GoldmanBold"), url("./fonts/Goldman/Goldman-Bold.ttf") format("truetype"); font-weight: bold; } وبعد ذلك في باقي تطبيقك تستطيع استخدام الخط من خلال خاصية font-family ثم كتابة اسم الخط كالتالي: .main { font-family: "GoldmanBold"; }
  2. أنصحك بتحديد ما تريد، وذلك بتحديد الوقت المتاح لك للمذاكرة ودخول سوق العمل أي تبعًا لظروفك الشخصية، وإن كان لديك الوقت الكافي أي سنتين على الأقل فقم بدراسة مجال تعلم الآلة، لكن إن كان لديك سنة فقط فعليك إذن إختيار مجال آخر مطلوب في سوق العمل لديك.
  3. مجال الدورة مجال متقدم بحاجة إلى سابق معرفة بالبرمجة أي شخص لديه إلمام بأساسيات البرمجة وعلوم الحاسوب، ولذلك دورة علوم الحاسوب في الأكاديمية هي الدورة المناسبة كبداية، فهي ليست خاصة بمجال معين بل للتأهيل لدخول مجال البرمجة. لكن في دورة الذكاء الاصطناعي تم مراعاة ذلك، حيث يتم الإفتراض أنه لا يوجد أي خبرة برمجية مسبقًا ويتم البدء من الصفر. ولا مشكلة في الإشتراك بدورة الذكاء الاصطناعي، لكن ستحتاج إلى فترة لكي تستوعب بعض الأمور بها، وفي البداية يتم شرح أساسيات لغة بايثون ثم شرح قواعد البيانات، لذا هي بها شرح جيد للأساسيات، لكن ستحتاج إلى البحث ودراسة بعض الأمور الأخرى خارج الدورة لكي تستوعب ما يتم شرحه.
  4. في الواجهة الخلفية للتطبيق لديك، عليك تثبيت حزمة CORS: npm install cors ثم تضيف الكود التالي في ملف الخادم الخاص بك app.js const express = require('express'); const cors = require('cors'); var app = express(); app.use(cors()); لاحظ استخدام app.use(cors()) بعد app = express(). ولا تنسى تشغيل الخادم server عن طريق الأمر npm start. وعامًة مشكلة الـ CORS، هي ببساطة ناتجة عن سياسة الأمان "Cross-Origin Resource Sharing" والتي تمنع التطبيقات التي تعمل على نطاق معين من الوصول إلى الموارد من نطاق آخر. للتوضيح فرضًا، يحاول تطبيق الويب الذي يعمل على http://localhost:3000 الوصول إلى البيانات من https://example.com/api/data. نظرًا لأن هذه النطاقات مختلفة، فإن سياسة CORS تمنع هذا الطلب. والحل السابق في حال أنك تستخدم Node.js، لكنك ذكرت أنك تستخدم nuxtjs الإصدار 3، فعليك استخدام useFetch لجلب البيانات من API وكمثال: <script setup lang="ts"> const { data: count } = await useFetch('/api/count') </script> <template> <p>Page visits: {{ count }}</p> </template> بحيث يتم إرسال الطلب عن طريق الخادم. https://nuxt.com/docs/getting-started/data-fetching#usefetch
  5. حاليًا تبرز الشبكات العصبية السائلة (LNNs) كنموذج جديد وواعد للتعلم الآلي، وتهدف هذه الشبكات إلى محاكاة بنية الدماغ البشري بشكل أكثر دقة، مما يمنحها قدرات فريدة تميزها عن الشبكات العصبية التقليدية. وهي نوعًا من الشبكات العصبية المتكررة (RNNs)، قادرة على معالجة البيانات بشكل تسلسلي وتتميز الشبكات بخصائص أساسية: تُعالج LNNs البيانات في الوقت الفعلي، بالتالي هي مناسبة للتطبيقات التي تتطلب استجابة فورية للتغيرات الديناميكية. ذاكرة داخلية تسمح لها بتخزين المعلومات من المدخلات السابقة، ونتيجةً لذلك يُمكّنها التعلم من التجارب والتكيف مع المواقف الجديدة. تتكيف باستمرار مع المدخلات الجديدة، مما يسمح لها بتعديل سلوكها وتحسين أدائها بمرور الوقت. تعالج بفعالية المدخلات ذات الطول المتغير، مما يجعلها مناسبة للمهام التي تتضمن بيانات غير متسقة. بالنسبة للفرق بين الشبكات العصبية السائلة والشبكات العصبية التقليدية، فتتميز LNNs عن الشبكات العصبية التقليدية (NNs) بعدة خصائص رئيسية تم ذكرها منذ قليل، أي العكس صحيح: تُعالج LNNs البيانات بشكل تسلسلي، بينما تُعالج NNs البيانات بشكل غير تسلسلي. تمتلك LNNs ذاكرة داخلية، بينما تفتقر NNs إلى هذه الخاصية. تتكيف LNNs باستمرار مع المدخلات الجديدة، بينما تكون NNs أقل قدرة على التكيف. تُعالج LNNs بفعالية المدخلات ذات الطول المتغير، بينما تواجه NNs صعوبات مع هذه البيانات. وتُظهر LNNs إمكانيات هائلة في مختلف مجالات الذكاء الاصطناعي، تشمل تمكين الروبوتات من التعلم من بيئتها والتكيف مع التغيرات الديناميكية، مما يُحسّن أدائها في المهام المعقدة. بجانب المساعدة في فهم اللغة الطبيعية بشكل أفضل، وتحسين ترجمة النصوص، وإنشاء محتوى إبداعي، أو في التنبؤ باتجاهات السوق وتحليل البيانات المالية المعقدة، أو في تشخيص الأمراض وتطوير علاجات جديدة وتحليل البيانات الطبية.
  6. هل قمت بالتالي؟ أضف التالي أيضًا لنفس الملف لإضافة ID فريد عشوائي لكل Build: distDir: "_next", generateBuildId: async () => { if (process.env.BUILD_ID) { return process.env.BUILD_ID; } else { return `${new Date().getTime()}`; } }, إن استمرت المشكلة حاول حذف مجلد .next ثم node_modules ثم تنفيذ أمر البناء npm run build مجددًا. @Ahmed Zehry في حال تستخدم pm2 أرجو إعادة تشغيله من خلال: pm2 restart app حيث app هو اسم التطبيق لديك أرجو تغييره بما لديك.
  7. حاول حذف assetPrefix: "." من ملف next.config.js، وذلك لكي يتم استخدام مسار للـ assets بناءًا على الصفحة الحالية التي أنت بها. أضف التالي أيضًا لنفس الملف لإضافة ID فريد عشوائي لكل Build: distDir: "_next", generateBuildId: async () => { if (process.env.BUILD_ID) { return process.env.BUILD_ID; } else { return `${new Date().getTime()}`; } }, إن استمرت المشكلة حاول حذف مجلد .next ثم node_modules ثم تنفيذ أمر البناء npm run build مجددًا.
  8. لا يمكن العثور على الكائن "categories" لأنه غير موجودK أولاً، تأكد من وجود جدول باسم "categories" في قاعدة البيانات باستخدام الأمر التالي: SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'categories'; وإن لم تعثر عليه فستحتاج إلى إنشائه باستخدام الأمر التالي: CREATE TABLE categories ( category_id INT PRIMARY KEY ); أيضًا يجب توفر الأذونات اللازمة للوصول إلى الجدول "categories"، وتستطيع الحصول على ذلك باستخدام: GRANT SELECT, INSERT ON categories TO [username]; استبدل "[username]" باسم المستخدم الخاص بك. وأحيانًا تحتاج إلى تفعيل IDENTITY_INSERT قبل إدخال البيانات في جدول يحتوي على عمود IDENTITY: SET IDENTITY_INSERT categories ON; بعد إدخال البيانات، عليك تعطيل IDENTITY_INSERT باستخدام الأمر التالي: SET IDENTITY_INSERT categories OFF;
  9. في حال تم تنفيذ ذلك من خلال كوتلن، فعليك إضافة إذن الوصول إلى وحدة التخزين الخارجية: <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> ثم إنشاء زر لبدء عملية رفع الملفات: ويجب استخدام مكتبة Intent الصحيحة لبدء نشاط اختيار الصورة، وهي Intent.ACTION_GET_CONTENT بدلاً من Intent.ACTION_PICK. Button uploadButton = findViewById(R.id.upload_button); uploadButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("image/*"); startActivityForResult(intent, PICK_IMAGE_REQUEST_CODE); } }); وستجد تفصيل هنا حول WebView على موقع المطورين في Android: https://developer.android.com/develop/ui/views/layout/webapps/webview
  10. ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم الأسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
  11. لأنك تستخدم GetMaterialApp كجهاز توجيه في تطبيقك، ويتسبب ذلك في إخفاء زر الرجوع الخلفي الافتراضي في شريط العنوان. عليك استخدام WillPopScope لمنع التطبيق من الخروج عندما يتم الضغط على زر الرجوع الخلفي، أي تنفيذ إجراء مخصص، مثل الرجوع إلى الصفحة السابقة، كالتالي: WillPopScope( onWillPop: () async { // قم بإجراء مخصص هنا، مثل الرجوع إلى الصفحة السابقة Navigator.pop(context); return false; }, child: Scaffold( // ... ), ) وهناك طريقة أخرى وهي باستخدام BackButton لعرض زر الرجوع الخلفي مخصص في شريط العنوان، كالتالي: AppBar( title: Text('My App'), leading: BackButton( onPressed: () { Navigator.pop(context); }, ), ) وعليك استيراد WillPopScope و BackButton من حزمة flutter، واستخدام Navigator.pop() للرجوع إلى الصفحة السابقة.
  12. غالبًا المشكلة لديكِ هي أنك لم تقومي بفتح مجلد المشروع في vscode، حيث فتح المجلد بالكامل وليس ملف index.html فقط، وذلك لكي تعمل إضافة live server. يمكنك فتح المجلد بسحبه وإلقاءه في واجهة vscode وسيتم فتح المجلد، أو من خلال الضغط على file بالأعلى في vscode ثم إختيار open folder ثم اختاري مجلد المشروع. الآن اضغطي على go live لتشغيل السيرفر.
  13. هي من ضمن المشاريع العملية بالطبع، وأية مشاريع عملية حتى لو بسيطة من الأفضل تسليمها، وذلك بإنشاء مجلد للدورة وتقسيمه إلى مجلدات بداخله بحيث يصبح لكل مسار مجلد باسمه، ونضع في ذلك المجلد التطبيقات العملية للمسار. ثم نرفع مجلد الدورة بالكامل إلى مستودع GitHub. لكن المشاريع العملية الكبيرة نضعها في مجلد خاص بها ثم نرفعها على مستودع GitHub خاص بها، أي مشروع مثل تطوير موقع أو تطبيق مثلاً.
  14. حسب الكود الذي نكتبه، فمثلاً صيغة ملف أكواد جافاسكريبت هي .js أي مثلاً: app.js بينما صيغة ملف به أكواد HTML هي .html كالتالي: index.html وصيغة ملف به أكواد css هي .css كالتالي: style.css وبالنسبة لملفات بايثون فالصيغة هي .py كالتالي: main.py عند إنشاء الملف نقوم بكتابة اسم الملف ثم نقطة . ثم صيغة الملف الصحيحة حسب الكود الذي نكتبه به. ستجدي أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم الأسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس.
  15. من الأفضل حفظ جميع التطبيقات العملية من البداية، وذلك بإنشاء مجلد للدورة ووضع تلك التطبيقات به، تجنبًا للتكرار ستجدي تفصيل هنا: وستجدي أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم الأسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس.
  16. هل قمتي بمحاولة ما تم ذكره هنا؟ وتم الإجابة بخصوص التلخيصات أيضًا
  17. ليس المقصود إلتقاط صورة للشاشة وحفظ الكود بتلك الطريقة، بل المقصود هو التطبيق مع الشرح مرة مع المدرب ومرة بمفردك ثم الإحتفاظ بالملف الذي به الكود في مجلد خاص بالدورة. وذلك للتطبيقات العملية البسيطة التي تتكون من ملف واحد أو ملفين مثلاً، أي نقوم بإنشاء مجلد للدورة ثم بداخل المجلد نقوم بتقسيمه إلى مجلدات فرعية بحيث يصبح لكل مسار مجلد ثم نضع داخل مجلد التطبيقات العملية الخاصة بالمسار، ثم نرفع مجلد الدورة بالكامل بالمجلدات التي بداخله على مستودع GitHub. لكن المشاريع الكبيرة الكاملة نقوم بإنشاء مجلد منفصل لها ونرفعها على مستودع GitHub خاص بها بشكل مستقل.
  18. كنصيحة لا تحكمي على أي دورة في أي مكان بعدد الساعات الخاصة بها، فالأهم هو محتوى، فالساعات الطويلة لا تعني محتوى جيد والعكس صحيح لا تعني الساعات القصيرة محتوى سيء، لذا الأهم هو ثراء المحتوى ودسامته مع عدم الإخلال بالأساسيات. وعدد ساعات دورة بايثون هي 67 ساعة، وعدد ساعات دورة تطوير واجهات المستخدم هي 72 ساعة، لذا الفرق 5 ساعات فقط. وأول مسارين هما الأساسيات في دورة بايثون يستحوذان على نسبة كبيرة حيث يحتوي مسار أساسيات لغة بايثو على 11 ساعة من المحتوى، ومسار تطبيقات عملية باستخدام بايثون على 15 ساعة. والمطلوب للتقدم للإمتحان هو إنهاء 4 مسارات على الأقل، ولا يشترط مسارات معينة، لكن من الأفضل إنهاء كامل مسارات الدورة لتحقيق استفادة.
  19. ستجدd أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم الأسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس. بالنسبة لسؤالك، بالطبع يكفي وحتى ما بعد الأساسيات لا مشكلة به، وبإختصار إذا كنتي تفضل بيئة تطوير بسيطة ومخصصة لتطوير Python وترغبين في التوسع في استخدام الإضافات وتخصيص البيئة الخاصة بك فاستخدمي VSCode لكونه code editor. ، أما إن كنتي بحاجة إلى ميزات متقدمة مدمجة مثل محلل ومصحح Python قوي ودعم كبير لإطارات العمل الخاصة ببايثون، فبيئة التطوير PyCharm هي الخيار الأفضل بالنسبة لك وذلك لكونه IDE أي بيئة تطوير ومتكاملة مخصصة للغة برمجية معينة. بمعنى أن VSCode بحاجة إلى تخصيصه فيما بعد مثل تثبيت إضافة خاصة بإطار بجانغو وفلاسك من أجل إظهار الكود بشكل جيد ومثل تلك الأمور ستتكرر لذلك ذكرت أن عليك تخصيصه بما يتناسب مع استخدامك، أما PyCharm فيدعم ذلك بشكل إفتراضي. لكن في البداية من الأفضل استخدام vscode لكونه بسيط وسهل الاستخدام.
  20. الدروس تعمل بشكل طبيعي، لكنها شكوى متكررة بالفعل، أرجو تحديث الصفحة من خلال الضغط على CTRL + F5 لحذف الملفات المؤقتة، ثم التجربة إن استمرت المشكلة أرجو استخدام متصفح آخر بدون إضافات والتجربة لمعرفة أين المشكلة، وإخبارنا إن تم حل المشكلة. وبخصوص المُلخصات، فلا يوجد تلخيصات نصية للدروس للأسف، يمكنك الإعتماد على موسوعة حسوب كمرجع لك: https://wiki.hsoub.com/الصفحة_الرئيسية
  21. أنت بحاجة إلى تفعيل نسخة الويندوز وذلك بشراء كود للتفعيل بطريقة قانونية وستجد تفصيل هنا: ولا مشكلة في تركها بدون تفعيل، فالقيود التي يتم فرضها للنسخ الغير مفعلة ليست مؤثرة على عمل النظام، حيث سيتم منعك من التالي: ستظهر علامة مائية مزعجة على سطح المكتب تُشير إلى عدم تفعيل النسخة. لن تتمكن من تغيير لون خلفية سطح المكتب أو شاشة القفل أو غيرها من العناصر الشخصية. ستظهر لك إشعارات منتظمة تُذكّرك بتفعيل النسخة. تتوقف بعض التحديثات الأمنية المهمة عن العمل. لن تتمكن من استخدام بعض الميزات المتقدمة مثل "Hyper-V" و "Windows Defender Device Guard".
  22. المشكلة لديك هي في محاولة عرض كائن التاريخ كما هو بالشكل التالي في مكون Note: <small>{date}</small> لاحظ أنك تقوم بتمرير كائن new Date() ولا يمكن عمل render للكائن بدون تحويله إلى تاريخ نصي، وذلك ممكن من خلال دالة toDateString، كالتالي: <small>{date.toDateString()}</small>
  23. سأكون صريحًا معك، مجال تعلم الآلة بحاجة إلى الأقل عامان من الدراسة وليس مجرد استخدام نماذج جاهزة عن طريق الـ API، بل ستحتاج إلى العودة الأساسيات ودراسة الرياضيات وذلك ستجده هنا: وأنت كمبتدأ لست بحاجة إلى معرفة كيف تم اشتقاق تلك الخوارزميات وكيف تم بنائها، كل ما تحتاجه هو أساسيات الرياضيات وهي الجبر الخطي والتفاضل والتكامل ولإحتمالات والتحليل الرياضي. وليس من الضروري أن يكون مستواك مرتفع في الرياضيات لتعلم الذكاء الاصطناعي بل يكفي تعلم الأساسيات ثم الاستزادة فيما بعد، وبالطبع كلما ارتفع مستواك في الرياضيات تطور مستواك وقدرتك على التعلم في مجال الذكاء الاصطناعي. ثم تعلم لغة بايثون والمكتبات الهامة في ذلك المجال مثل numpy و pandas وتعلم لغة SQL ثم تعلم الخوارزميات وهياكل البيانات، ثم تعلم تحليل البيانات ، ثم التعملق العميق والـ Transformers. ستجد هنا خريطة طريق جيدة: https://roadmap.sh/ai-data-scientist
  24. بالطبع ذلك مطلوب في مواقع العمل الحر، حيث المطلوب تنفيذ المهام بواقع خبرة سابقة أو على الأقل الإلمام بنسبة 70%، لكن إذا أردت العمل في شركة فستجد وظائف معروضة لمستوى Junior ابحث عن ذلك، لكن يجب وجود معرض أعمال جيد وبمستوى مرتفع نسبيًا يظهر مستوى مهارات ليست بسيطة. فمثلاً لمجال الواجهة الخلفية، لا يكفي أن تتعلم Node.js وexpress.js وبناء مشروع من خلالهم فقط، بل هناك مهارات أخرى ستجدها في وصف الوظيفة ابحث عن back-end developer على مواقع مثل LinkedIn و indeed و Bayt. والخبرة تأتي من تنفيذ مشاريع أقرب إلى المطلوب في الواقع مثل المشاريع التي يتم عرضها على مستقل مثلاً، ثم تطوير مهاراتك لتنفيذ مشاريع أعقد وستكتشف ذلك أثناء عملك على المشاريع حيث ستحتاج إلى البحث وتعلم أمرًا ما لتستطيع تنفيذ ما تريد.
  25. عليك حذف مجلد node_modules ثم تثبيت الحزم بنفس الإصدارات التي تم تطوير المشروع بها لكي لا يحدث تعارض وذلك من خلال الأمر: npm ci حيث يتم الإعتماد على ملف package-lock.json من خلال ذلك الأمر، وسيتم التثبيت بدون مشكلة. بعد ذلك عليك تثبيت الحزم الأخرى بواسطة composer من خلال الأمر: composer install ثم تعديل اسم ملف .env.example إلى .env ثم تنفيذ الأمر التالي: php artisan key:generate ثم تنفيذ أمر npm run dev ثم إنشاء قاعدة بيانات باسم instagram_clone كما في ملف .env ثم تنفيذ أمر التهجير: php artisan migrate:fresh --seed ثم تشغيل المشروع
×
×
  • أضف...