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

Mustafa Suleiman

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

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

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

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

    272

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

  1. نرحب بك في أي وقت يا محمد وإذا كنت تريد إلغاء الإشتراك، فالسبيل الوحيد هو عن طريق التحدث إلى مركز المساعدة الخاص بأكاديمية حسوب، وسيتم الرد عليك لا تقلق. وإذا كنت تواجه أي مشكلة في الدورات أو تريد فهم شيئًا ما فلا تتردد في السؤال. تحياتي.
  2. مرحبًا @محمد بن حبيش يمكنك التواصل مع مركز المساعدة بخصوص طلبك، ثم الإنتظار وسيتم الرد عليك بلا شك، لذلك أرجو من الإنتظار. ولكن هل يوجد مشكلة تواجهك تريد لها حل؟ تحياتي.
  3. بالتأكيد، وربما يجب عليك تعلم لارافيل فهي تعطي أفضلية كبيرة، حيث ستجد الكثير من الوظائف التي تقبل مبرمج لارافيل بمستوى Junior وأيضًا كم كبير جدًا من الوظائف على مواقع العمل الحر. وبخصوص Node.js فهي سهلة التعلم فخلال شهر أو أقل تبعًا لقدرتك ومستواك، ستتمكن من تعلمها فعلى أي حال أنت قد تعلمت لغة JS بالفعل، وستتعلم بيئة العمل وقاعدة البيانات فقط.
  4. في البداية هناك تفاوتات كبيرة في المميزات والعيوب والاستخدامات المناسبة. Node.js Node.js هو إطار عمل مبني على محرك JavaScript V8، ويستخدم لبناء تطبيقات الويب الحديثة التي تعتمد على الوقت الحقيقي والإرسال المستمر للبيانات، وغالبًا ما يستخدم في تطبيقات الشبكات والدردشة والألعاب الحية وتطبيقات الميديا. وبالتالي تتميز Node.js بالسرعة والقدرة على التعامل مع حمولات عالية والتحكم في الإدخال/الإخراج. كما يوفر أيضًا مجموعة كبيرة من المكتبات والأدوات لتطوير التطبيقات بسهولة. Laravel Laravel هو إطار عمل PHP شائع ويستخدم لبناء تطبيقات الويب المتكاملة. ويتميز Laravel بسهولة الاستخدام والمرونة والتحكم الكبير في قواعد البيانات. كما يوفر أيضًا مجموعة كبيرة من المكتبات والأدوات لتطوير التطبيقات بسهولة، وتدعم Laravel البرمجة الكائنية ونظام توجيه متقدم ويتكامل بسلاسة مع مكتبات الجافاسكريبت. ولذلك عندما يتعلق الأمر بالأداء، فإن Node.js يتفوق على Laravel، حيث تعمل Node.js بشكل متزامن ويمكنها التعامل مع عدد كبير من الطلبات بسرعة عالية، بينما يعمل Laravel بشكل متزامن وقد يتأخر في التعامل مع حمولة عالية من الطلبات. ومع ذلك، فإن Laravel يتميز بتوفير العديد من الأدوات والمكتبات التي تسهل عملية التطوير، ويعتبر من أفضل إطارات العمل لبناء تطبيقات الويب المتكاملة. لكن الأمر ليس بتلك البساطة، فهناك الكثير من العوامل التي لم يتم ذكرها وستؤثر على إختيارك. فبالنسبة لمشروع كبير يحتوي على معاملات حساسة وكبيرة، فإنه يمكن استخدام كلا الإطارين، ولكن يجب اختيار الإطار الذي يتناسب مع احتياجات المشروع بشكل أفضل. على سبيل المثال، إذا كانت سرعة الاستجابة والقدرة على التعامل مع الطلبات الكبيرة هي الأولوية، فقد يكون Node.js الخيار الأفضل. ومع ذلك، إذا كانت المتطلبات تتطلب القدرة على العمل مع قواعد بيانات كبيرة ومعقدة وإمكانية الوصول إلى المعلومات بسهولة، فقد يكون Laravel الخيار الأفضل. ومع ذلك، يجب ملاحظة أن الأداء ليس العامل الوحيد الذي يجب النظر إليه، بل يجب أيضًا النظر إلى المرونة والملاءمة للاحتياجات المحددة للمشروع كما أشرت.
  5. إذا أردت نصيحتي فالأفضل عدم الإنتظار والبدء من الآن، ولن تجد مصدر مجاني أفضل من قناة ZAmerican English أو قناة طليق، وقناة طليق مخصصة لمن يريد تحدث الإنجليزية بطلاقة، أما إذا كنت تريد دراسة الإنجليزية بالتفصيل فقناة ZAmericanEnglish هي الأفضل. وبخصوص المنح الدراسية، فالأمر يعتمد على مكان تواجدك، فبعض البلدان بها منح مجانية وأخرى من الصعب العثور على منح بها، لذلك يجب معرفة البلد التي تقيم بها، وإذا كنت في منطقة الخليج فستجد الكثير من المنح. وفي البداية قبل البدء في التعلم يجب عمل إختبار لتحديد مستواك في اللغة، وهناك العديد من المواقع والتطبيقات، ومنها تطبيق British Council EnglishScore أو موقع اللغة الإنجليزية التابع لـ جامعة كامبريدج. بعد ذلك يجب وضع خطة بوقت محدد يتم الإلتزام بها بشكل يومي وستجد تحسن بلا شك، والأهم في تلك المرحلة هما الكتابة ثم التحدث طالما أنك بمستوى متوسط.
  6. بخصوص إنشاء مخطط أو رسم بياني في OriginPro، باستطاعتك اتباع الخطوات التالية: اختر النوع المناسب للمخطط أو الرسم البياني من القائمة الرئيسية لـ OriginPro. على سبيل المثال، يمكنك اختيار "Line + Symbol Plot" لإنشاء مخطط خطي بنقاط. اختر البيانات التي تريد عرضها في المخطط أو الرسم البياني. يمكنك استيراد بيانات من ملفات خارجية أو استخدام البيانات التي تم إدخالها بواسطة OriginPro. ثم اختر الخيارات المناسبة للمخطط أو الرسم البياني، مثل الألوان والخطوط والمحاور والتسميات وغيرها. ويمكنك إجراء التعديلات اللازمة للمخطط أو الرسم البياني، مثل تغيير الألوان أو الخطوط أو تحريك العناصر. قم بحفظ المخطط أو الرسم البياني عند الانتهاء من تعديله، باستخدام الأمر "File > Save" من القائمة الرئيسية. ويمكنك العثور على مزيد من المصادر والمعلومات حول OriginPro وكيفية استخدامها في الدليل الرسمي للمستخدم الذي يتضمنه البرنامج.
  7. بالطبع من الممكن أن تكون المشكلة هي بطء الاتصال بالإنترنت الخاص بك. فيجب التأكد من إتصال الإنترنت بعمل إعادة تشغيل للراوتر أو تجربة إتصال إنترنت آخر أو تشغيل VPN أو تغيير إعدادات الـ DNS الخاصة بإتصال الإنترنت إلى: 1.1.1.1 1.0.0.1 يمكنك أيضًا المحاولة باستخدام الأمر التالي بدلاً من استخدام npm init react-app: npx create-react-app my-app ,هذا الأمر يعمل على تثبيت مشروع React جديد دون الحاجة إلى استخدام npm init react-app. والأفضل استخدام Vite في تثبيت react فهو أسرع بمراحل من webpack الذي يتم تثبيته عند استخدام الأمر npx create-react-app my-app. ولاستخدام Vite لتثبيت React قم باستخدام الأمر التالي: # npm في حالة الإصدار 6 من npm create vite@latest my-react-app --template react # npm في حالة الإصدار 7 أو أعلى من npm create vite@latest my-react-app -- --template react مع استبدال my-react-app باسم المشروع الخاص بك.
  8. يمكنك استخدام طريقة مشابهة باستخدام Intent لعرض ملف PDF مباشرة من ذاكرة التخزين الخاصة بالتطبيق. فيما يلي مثال على ذلك: // إنشاء ملف PDF باستخدام PdfDocument PdfDocument pdfDocument = new PdfDocument(); // قم بإضافة صفحات PDF هنا // إنشاء Intent لعرض ملف PDF مباشرة من ذاكرة التخزين الخاصة بالتطبيق Intent intent = new Intent(Intent.ACTION_VIEW); // تحديد نوع الملف باستخدام MIME type intent.setType("application/pdf"); // استخدام ContentProvider للوصول إلى الملف المخزن في ذاكرة التخزين الداخلية للتطبيق Uri uri = FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".provider", pdfFile); // تحديد الملف المراد فتحه intent.setData(uri); // تحديد عنوان النشاط intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // تمرير علامة التبويب لإظهار التطبيق المختار لفتح الملف intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // بدء النشاط لفتح الملف try { startActivity(intent); } catch (ActivityNotFoundException e) { // إذا لم يتم العثور على تطبيق PDF، قم بإنشاء كائن Intent جديد لفتح رابط تحميل التطبيق من متجر التطبيقات Intent marketIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.adobe.reader")); startActivity(marketIntent); } تم استخدام FileProvider للوصول إلى الملف المخزن في ذاكرة التخزين الداخلية للتطبيق وتمرير علامة التبويب لإظهار التطبيق المختار لفتح الملف. ويرجى ملاحظة أن استخدام FileProvider يتطلب إنشاء ملف ملفات موفر وتعريفه في ملفات التهيئة الخاصة بالتطبيق. ولعمل ملف موفر، يجب تعريفه في ملف التهيئة الخاص بالتطبيق الخاص بك. يمكنك القيام بذلك عن طريق إنشاء ملف جديد بالاسم file_paths.xml ووضعه في المجلد res/xml في مشروع Android الخاص بك. يمكن استخدام الكود التالي كمثال لتعريف ملف موفر في file_paths.xml: // Get the file File file = new File(getFilesDir(), "my_file.txt"); // Get the FileProvider String authority = "com.example.package.fileprovider"; Uri uri = FileProvider.getUriForFile(this, authority, file); // Use the Uri to access the file كما ترى تم الحصول على Uri لملف باستخدام FileProvider. ويجب تغيير com.example.package.fileprovider إلى اسم الموفر الخاص بتطبيق Android الخاص بك. يمكن استخدام الـ Uri المسترد للوصول إلى الملف بطرق مختلفة، مثل استخدام Intent لفتح الملف أو استخدام ContentResolver لقراءة محتويات الملف. ولمزيد من المعلومات عن استخدام FileProvider في تطبيق Android الخاص بك، يمكنك الاطلاع على الوثائق الرسمية لـ Android Developer.
  9. يجب أولاً الإشارة إلى أنه يتم التحكم في المحتوى والتصميم باستخدام لغتي HTML و CSS معًا وليس CSS فقط، لذلك يجب الإنتباه إلى طريقة بناء العناصر باستخدام HTML. لذلك إذا قمت ببناء العناصر بشكل جيد وقمت باستخدام Grid و Flex وبالأخص Grid بشكل صحيح، ستقل نسبة استخدامك للـ Media Query بشكل كبير جدًا، وذلك يعرف باسم Fluid Layouts. ولكي لا أعيد ما قلته سابقًا، أنصحك بشدة بقراءة المقالات والنقاشات التالية:
  10. يمكنك استخدام الكود التالي: const filtered = (selected.length === 0) ? products : products.filter(item => selected.includes(item.category)) وبهذا الشكل، إذا لم يتم تحديد أي صنف، فستعود المنتجات كما هي، وإذا تم تحديد أي صنف، فسيتم تصفية المنتجات بناءً على الصنف المحدد. بالنسبة للمتغيرات الإضافية التي كنت قد استخدمتها سابقًا، يمكنك الاستغناء عنها بسهولة من خلال تطبيق العبارة السابقة مباشرة في الدالة الخاصة بالفلترة.
  11. يمكن تنفيذ ما تريد باستخدام Intent في اللغة Java لفتح ملف PDF بعد إنشائه باستخدام Pdfdocument. يمكنك استخدام التالي كنموذج لفتح الملف: // تحديد مسار الملف String filePath = "path/to/your/file.pdf"; // إنشاء كائن Intent Intent pdfIntent = new Intent(Intent.ACTION_VIEW); // تحديد نوع الملف باستخدام MIME type pdfIntent.setType("application/pdf"); // تحديد الملف المراد فتحه pdfIntent.setData(Uri.fromFile(new File(filePath))); // تحديد عنوان النشاط pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); pdfIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // بدء النشاط لفتح الملف try { startActivity(pdfIntent); } catch (ActivityNotFoundException e) { // إذا كان لا يوجد تطبيق مثبت لعرض ملفات PDF، قم بإظهار رسالة خطأ Toast.makeText(getApplicationContext(), "No Application available to view PDF", Toast.LENGTH_SHORT).show(); } يرجى ملاحظة أن هذا الكود يعمل على افتراض أن لديك تطبيق PDF مثبتًا على جهاز الهاتف المحمول الخاص بك. في حالة عدم وجود تطبيق PDF مثبت، يمكن توجيه المستخدمين إلى تنزيل تطبيق PDF من متجر التطبيقات. وباستطاعتك توجيه المستخدمين لتنزيل تطبيق PDF من متجر التطبيقات باستخدام Intent ورابط متجر التطبيقات. استخدم التالي كنموذج لإظهار رسالة تحتوي على رابط تنزيل تطبيق PDF: // تحديد مسار الملف String filePath = "path/to/your/file.pdf"; // إنشاء كائن Intent Intent pdfIntent = new Intent(Intent.ACTION_VIEW); // تحديد نوع الملف باستخدام MIME type pdfIntent.setType("application/pdf"); // تحديد الملف المراد فتحه pdfIntent.setData(Uri.fromFile(new File(filePath))); // تحديد عنوان النشاط pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); pdfIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); try { startActivity(pdfIntent); } catch (ActivityNotFoundException e) { // إذا لم يتم العثور على تطبيق PDF، قم بإنشاء كائن Intent جديد لفتح رابط تحميل التطبيق من متجر التطبيقات Intent marketIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.adobe.reader")); startActivity(marketIntent); } في المثال أعلاه، يتم إنشاء Intent جديد يحتوي على رابط تنزيل تطبيق PDF من متجر التطبيقات (Adobe Acrobat Reader)، ثم يتم بدء النشاط لفتح هذا الرابط. يمكن تغيير رابط التنزيل وفقًا لتطبيق PDF المستخدم على جهاز المستخدم.
  12. مرحبًا @مرح الاسطل تم الإجابة على سؤالك هنا أرجو متابعته:
  13. الأفضل والأسهل لك، هو إعادة دراسة أساسيات إطار لارافيل و PHP وستتمكن من تنفيذ المشروع فهو بسيط، ويمكنني إرشادك لطريقة التنفيذ: قم بإنشاء قاعدة بيانات جديدة لمشروعك. ثم تثبيت Laravel باستخدام Composer. يمكنك فعل ذلك بفتح محرر الأوامر وكتابة الأمر التالي: composer create-project --prefer-dist laravel/laravel myeventapp عرف نموذج (Model) للحدث (Event) باستخدام الأمر الآتي: php artisan make:model Event ثم قم بإنشاء جدول لجدول الأحداث باستخدام مهمة التحولات (Migrations) باستخدام الأمر الآتي: php artisan make:migration create_events_table الآن عرف حقول بجدول الأحداث في ملف التحول (Migration) الخاص بك، على سبيل المثال: التاريخ، الوقت، اسم الحدث، ووصفه. قم بتحديد العلاقة بين حدث (Event) والمشتركين (Subscribers) بإنشاء نموذج جديد: php artisan make:model Subscriber ثم قم بإضافة حقول الاسم والبريد الإلكتروني في الملف التحول الخاص بهذا النموذج. قم بإنشاء عملية تحكم (Controller) للأحداث باستخدام الأمر التالي: php artisan make:controller EventController قم بإنشاء عرض (View) للأحداث في المسار resources/views/events.blade.php و قم بتحديثه بتفاصيل الحدث المتوفرة في قاعدة البيانات. قم بإنشاء عرض (View) لتسجيل المشتركين في الحدث في المسار resources/views/subscribe.blade.php. في عملية تحكم (Controller) الخاصة بتسجيل المشتركين، اضف المنطق اللازم لتخزين بيانات المشترك في قاعدة البيانات. أخيرًا، قم بإضافة مسارين (routes) في ملف routes/web.php، الأول لعرض صفحة الحدث، والثاني لتسجيل المشتركين في الحدث.
  14. في البداية عمل Debugging لكود CSS يتطلب رؤية أين تقع المشكلة ولذلك أول خطوة هي حين يتعثر عليك العثور على المشكلة هو وضع الكود التالي داخل ملف CSS الخاص بالصفحة: * { outline: 1px solid rgb(128 34 199); } ولعلك تتسائل، ماهذا الكود أو ربما ما سبب استخدام outline بدلاً من border؟ الصورة خير مثال، فالكود السابق يقوم بوضع outline لجميع العناصر، وبذلك تصبح قادر على معرفة أين تقع المشكلة. حيث يتم استخدام الـ "outline" بدلاً من border لأنه لن يضيف حجمًا إلى الـ "DOM size" الخاص بللعنصر. وإضافة "border" سيؤدي إلى تغيير مظهر العنصر إذا كان يستخدم "border" بالفعل ، وقد يسبب بشكل خاطئ مشكلات إضافية في الفراغات. والهدف من استخدام الـ "outline" هو إظهار حدود العنصر وتصور كيفية تضمين العناصر داخل بعضها البعض. على سبيل المثال، إذا كانت الفراغات تسبب تمريرًا overflow غير متوقع للشريط الأفقي، فإن الـ "outline" يمكن أن يساعد في إظهار العنصر الذي يسبب هذا التمرير overflow . أسباب شائعة لمشاكل CSS الخطوة التالية بعد الخطوة السابقة في عملية تصحيح الأخطاء هي التوقف وتحديد السبب الرئيسي للمشكلة. ومن تجربتي، تعتبر مشاكل تخطيط CSS تتسبب في واحدة من الفئات التالية: تجاوز المحتوى من الأصل الذي ينتمي إليه Overflow مما يؤدي إلى ظهور أشرطة تمرير إضافية أو ظهور المحتوى خارج منطقة العرض العادية. الوراثة غير المتوقعة للتنسيقات بسبب عدم التوافق مع المتصفح الأمر الذي يؤدي إلى نتائج مختلطة عبر المتصفحات والأجهزة. وراثة غير متوقعة من ملف التنسيق cascade حيث يتم استبدال العديد من الأنماط الأخرى في أسفل الملف أو بسبب استخدام نفس الخاصية مع إختيار خاطيء للعنصر أو الكلاس، مما قد يسبب مشاكل في التنسيق والتباعد وغيرها. خطأ في التنسيق بسبب تغييرات في هيكل وتركيبة عناصر HTML المتصلة بعناصر CSS. فعلى سبيل المثال، إذا قمت بإضافة عنصر HTML إضافي بشكل غير متوقع داخل عنصر CSS، فقد يتم تطبيق التنسيق الخاطئ على العنصر المضاف حديثًا. وهذا يمكن أن يؤدي إلى مشاكل في التنسيق وعرض غير متوقع للصفحة. عدم فهم خواص CSS وطريقة عملها بشكل كافي مما يؤدي إلى مشاكل متداخلة في التنسيقات، بسبب استخدام خاصية بشكل خاطيء أو استخدام في غير محله. نصائح عامة لإصلاح الأخطاء عند حدوث خطأ ما في CSS الخاص بك ، يمكنك البدء بإستخدام أدوات التطوير المدمجة في المتصفح المفضل لديك للقيام بالأتي: 1- حذف التنسيقات واحدة تلو الأخرى من خلال عمل comment لها باستخدام الإختصار CTRL +/ في محرر النصوص البرمجية VS code. 2- إيقاف تشغيل جميع التنسيقات وإعادة تفعيل كل تنسيق على حدى لرؤية أين تقع المشكلة أو متى تحدث. 3- حذف عناصر HTML أو نقلها لرؤية ما العنصر الذي يسبب المشكلة.
  15. وعليكم السلام، أرجو منك قراءة الدليل التالي لتثبيت بايثون 3 على macOS، وإذا واجهتك أية مشاكل لا تتردي في السؤال هنا.
  16. الأسئلة الإمتحانية لا يتم الإجابة عليها، ولكن يمكن إرشادك لطريقة الحل. إليك شرح الخطوات التي يمكن استخدامها لحل هذا السؤال: بدايًة، نحتاج إلى استخدام الأمر Console.ReadLine() لجلب مصفوفة ثنائية الأبعاد المدخلة من المستخدم. سيقوم هذا الأمر بقراءة النص الذي تم إدخاله من قبل المستخدم عبر واجهة سطر الأوامر. بعد ذلك، يجب تحويل النص إلى مصفوفة ثنائية الأبعاد من الأعداد الصحيحة. يمكن استخدام الأمر Split() لتحويل النص إلى مصفوفة من الأعداد الصحيحة، ثم تحويل هذه المصفوفة إلى مصفوفة ثنائية الأبعاد. الآن، يجب البحث في المصفوفة عن الصف الذي يحتوي على أكبر مجموع C#. يمكن استخدام حلقة for للانتقال عبر كل صف في المصفوفة، ثم استخدام حلقة for آخرى للانتقال عبر كل عنصر في الصف. أثناء التحقق من الصف، يجب حساب مجموع C# لكل صف. يمكن استخدام الأمر foreach لحساب مجموع الصف، حيث سنقوم بجمع كل عنصر في الصف ثم تخزين النتيجة في متغير. بمجرد الانتهاء من حساب مجموع الصف، يمكن مقارنته بأكبر مجموع C# حتى الآن. إذا كان مجموع الصف الحالي أكبر من أكبر مجموع C# الحالي، فسنحفظ رقم الصف الجديد. في غير ذلك، سنستمر في البحث في الصفوف الأخرى. بمجرد الانتهاء من البحث في المصفوفة، سنقوم بإرجاع رقم الصف الذي يحتوي على أكبر مجموع C#. في النهاية، يمكن استخدام الأمر Console.WriteLine() لإرجاع رقم الصف الذي يحتوي على أكبر مجموع C
  17. بجانب ما ذكره أسامة، فالخوف الذي تشعر به يشعر به الغالبية في البداية وأقدر ذلك، فالأمر من الخارج وفي بداية الطريق يثير القلق عند عدم إمتلاك المعرفة الكافية، وخاصًة مع سيل الأخبار المنهمر حول الذكاء الإصطناعي AI وعن أنه سيقوم باستبدال الكثير من الوظائف. إجابة واضحة وبسيطة، في الوقت الحالي لا، أما في المستقبل فنعم. بخصوص المبرمجين سيوفر الذكاء الاصطناعي القيام بعبء المهام السائدة والتي تم حلها من قبل ومعروفة، وسيترك لك دفة إتخاذ القرار وتصحيح الأخطاء وحل المشاكل والتفكير في الأمور المعقدة في المشروع. وفي الوقت الحالي لم يصل بعد لتلك المرحلة حتى، فهو مجرد أداة مساعدة لزيادة إنتاجيتك، وتوفير الوقت لكن لا تعتمد عليه أبدًا في بداية تعلم البرمجة وإجعله الملاذ الأخير بعد البحث والقراءة فلا تحرم نفسك كم المعلومات التي ستتحصل عليها جراء ذلك، وأيضًا ستعرف ما هي المصادر التي تحصل منها على المعلومات، وبذلك تصبح شخص ذو خبرة قادر على تنفيذ المشاريع بمفرده، ويقل إعتمادك على الغير. وستجد إجابات مفصلة في النقاش الذي قام أسامة بإرفاقه، وتذكر دائمًا لا تحارب الأدوات في مجال التنقية بل تعلمها واستفد منها أقصى استفادة، وبذلك لن تتخلف ويتم إهمالك، فأصحاب الأعمال والمشاريع يردون شخص قادر على إنجاز المهام ويستعمل الأدوات التي تسهل عليه مهمة القيام بذلك. وبخصوص تعلم الأمن السيبراني فقد أجبت على نفس السؤال سابقًا، أرجو قراءة الإجابة هنا: وهناك أمر هام، قم بتعلم المجال المطلوب في سوق العمل لديك أو على مواقع العمل الحر، فإن كان مجال الأمن السيبراني مطلوب في سوق العمل لديك فلا مشكلة.
  18. عزيزي محمد، سأجيبك في سطرًا واحد، يمكنك الذهاب الآن إلى ChatGPT وأخبره أنك تريد إنشاء مشروع معين وتريد الكود، وشاهد فشله في توفير كود صحيح بنسبة 100% بل هو قادر على تنفيذ مشاريع بسيطة جدًا، ومساعدتك وتوفير وقتك في المشاريع المتوسطة والكبيرة. حيث يجب فهم الأمر بشكل صحيح بدلاً من الخوف والذعر من تقنيات الذكاء الاصطناعي، يجب فهم ما هي تلك التقنيات وما هو شكل المستقبل القادم؟ بالعودة إلى الماضي يمكن فهم المستقبل فالأمر نفسه يتكرر، فمثلاً بعد إنتشار الهواتف الذكية والحواسيب تم التخلص من الكثير من المهام الروتينية واستبدال وظائف أشخاص كثيرين، فتلك هي ضريبة التطور التقني والرأس مالية أيضًا. والتي تقوم على تعظيم الأرباح، لذلك أنت بحاجة إلى تطوير نفسك لتصبح مبرمج محترف حقًا، وليس مجرد مستخدم لإطار عمل أو تقنية معينة، أي يجب أن تفهم أساسيات البرمجة بشكل جيد جدًا. وذلك لتتمكن من حل المشاكل الصعبة والمعقدة التي يصعب على الـ AI القيام بها وفهمها، أما المهام السهلة فسيتولى هو تنفيذها لك لتسريع عملية التطوير وتوفير وقتك للمشاكل والأمور الأهم في عملية التطوير. وحاليًا نحن لم نصل لتلك المرحلة، بل الأمر في بداياته ولكن يتطور بسرعة كبيرة جدًا، أي يجب النظر للذكاء الاصطناعي على أنه مساعد لك يتم توجيه من قبلك لتنفيذ بعض المهام بدلاً منك فمن خلاله يمكنك تنفيذ ما يتطلبه شخصان للقيام به بمفردك. وحاليًا ChatGPT يعتمد عليك في توجيهه أي لا يمكنك كتابة أعطني كود لتنفيذ مشروع معين ويقوم هو بتلك المهمة، بل سيعود لك بكود للمشروع وبه أخطاء يجب عليك إصلاحها أو إخباره بإصلاحها، لذلك لا تعطيه الثقة 100% أبدًا مهما تطور. وبالطبع مع الوقت تقل نسبة الأخطاء، لكن في المشاريع المعقدة هو غير قادر على فهم وربط أجزاء المشروع، لذلك أخبرتك يجب أن تصبح مبرمج بمعنى الكلمة وتركز على فهم أساسيات اللغة التي قمت بإختيارها.
  19. الخطأ يتعلق بشكل الرابط الذي تستخدمه في baseURL. يجب أن يكون الرابط الذي تستخدمه في baseURL مكتوب بشكل صحيح ومتوافق مع بروتوكول HTTPS. بما أنك تستخدم خدمة MyFatoorah فإن الرابط الصحيح يجب أن يكون كالتالي تبعًا للمستندات الخاصة ببوابة الدفع: Live API URL Except For Saudi Arabia: https://api.myfatoorah.com Live API URL for Saudi Arabia: https://api-sa.myfatoorah.com فكما تلاحظ هناك API لدولة السعودية وآخر لجميع الدول ماعدا السعودية. ويمكنك الإطلاع على المستندات الخاصة ببوابة دفع MyFatoorah للمزيد من التفاصيل والشرح، وهو ما أنصحك بفعله دائمًا.
  20. في البداية يجب توضيح أن بعض الطلاب لديهم رهبة من التقدم للإمتحان، ويعتبر الخوف من عدم الإجابة بشكل صحيح في امتحان البرمجة غير مبرر، حيث يمكنك إجراء الامتحان عدد لا يحصى من المرات. ولا يوجد محدد لإنتهاء الدورة، لكن ذلك لا يعني التكاسل والتراخي بل أرجو منك تحديد فترة زمنية واقعية وهي 6 شهور إلى سنة حسب مستواك وحسب ساعات الدراسة اليومية، فعدم تحديد فترة للإنتهاء من الدورة سيعني عدم نجاحك في إكمالها بنسبة كبيرة. ويجب معرفة أن الشهادة في مجال البرمجة لا تمتلك قيمة كبيرة، حيث أن الشركات تهتم أكثر بالمشاريع التي تم إنجازها. ويجب أن يتم التركيز على المشاريع بدلاً من الشهادات. لذلك أرجو منك عدم الإسراع في إنهاء الدورة دون الاستفادة منها، فالأمر الأهم هو فهم المفاهيم المطروحة بشكل صحيح. في حال عدم فهم درس معين، يمكنك البحث عن شرح لهذا الدرس في أكاديمية حسوب أو موسوعة حسوب أو طرح السؤال للإجابة علي، ولا يجب أن يكون هدفك هو الامتحان والنجاح به، ولكن الهدف الأساسي هو الخبرة وفهم المفاهيم المطروحة، وتطبيقها عمليًا. أيضًا أنصحك بأخذ الوقت الكافي لفهم الأفكار الجديدة وتطبيقها بشكل عملي أكثر من مرة حتى تتمكن من بناء المشاريع البرمجية بنفسك بعد إنتهاء الدورة. وستحتاج إلى فهم Git و منصة GitHub بشكل جيد لرفع المشاريع الخاصة، وأنصحك بقراءة النقاشات التالية فالإجابات بها ستسهل عليك الأمر كثيرًا. بالتوفيق إن شاء الله.
  21. يمكنك إلغاء خاصية الـ Snap to Point في Adobe Illustrator عن طريق القيام بالتالي: اختاري أداة Selection Tool من شريط الأدوات. اضغطي على مفتاح الـ Ctrl (أو Cmd على Mac) واضغطي على زر "K" على لوحة المفاتيح. سيتم فتح نافذة Preferences. في النافذة المفتوحة، انتقلي إلى القائمة الجانبية على اليسار واختاري "Selection & Anchor Display". تحت "Snap to Point"، قومي بإلغاء تحديد الخانة المجاورة لها. انقري على "OK" لحفظ التغييرات. بهذا، يتم إلغاء خاصية الـ Snap to Point ويمكنك الآن تحريك الأشكال دون تقييد في الحركة داخل نطاق معين.
  22. بجانب ما تم ذكره، فهناك بعض التوضحيات التي يجب ذكرها: يتم استخدام خاصية float لتحقيق تصميمات متعددة، مثل إنشاء صناديق أو عمودين يمتدان بجوار بعضهما البعض، وكذلك تقسيم الصفحة إلى أجزاء متعددة مع تحريكها بشكل مستقل. بالإمكان تحديد قيمة الخاصية float على اليسار أو اليمين، ويتم تحريك العنصر إلى تلك الجانب، بحيث يتم إضافة العنصر التالي على نفس الجانب إذا كان متاحاً. ويمكن استخدام خاصية clear لإزالة الخاصية float عند نهاية عنصر معين، والتأكد من أن العنصر التالي يظهر بشكل صحيح في المكان المطلوب. من المهم الاهتمام بالترتيب الصحيح للعناصر المطفوة، حيث يمكن أن يؤدي الاختلاط بين العناصر المطفوة وغير المطفوة إلى أخطاء في تصميم الصفحة، وتحديداً في تواجد العناصر النصية والصور في الأماكن المطلوبة. يجب تجنب استخدام خاصية float بشكل كبير، حيث يمكن أن تؤدي إلى مشاكل في التصميم مثل فراغات غير متوقعة بين العناصر، وكذلك صعوبة التعامل معها في تصميم المواقع المتجاوبة. وإليك أمثلة على ما تم ذكره: 1- تصميم صندوقين على جانبي الصفحة باستخدام float: <div style="float:left;width:50%;">Box 1</div> <div style="float:right;width:50%;">Box 2</div> 2- تحديد الخاصية float على اليمين: <img src="example.jpg" style="float:right;"> 3- استخدام خاصية clear لإزالة الخاصية float: <div style="float:left;width:50%;">Content</div> <div style="clear:both;"></div> <div>Next content</div> 4- ترتيب العناصر بشكل صحيح عند استخدام float: <div style="float:left;">Image</div> <div style="float:right;">Text</div> <div style="clear:both;"></div> 5- تجنب استخدام float بشكل كبير واستخدام التقنيات الحديثة مثل Flex و Grid: <div style="display:flex;"> <div style="flex:1;">Content 1</div> <div style="flex:1;">Content 2</div> <div style="flex:1;">Content 3</div> </div> كما أشرت، فاستخدام خاصية float يمكن أن يسبب بعض المشاكل مثل التداخل مع عناصر أخرى في الصفحة، ويمكن تجنب هذه المشاكل عن طريق استخدام الخيارات الأخرى المتاحة. ومع ذلك، فإن الخاصية ما زالت مفيدة في بعض الحالات، ويجب على المصممين الويب فهم كيفية استخدامها بشكل صحيح وفقًا للحاجة. وأنصحك بقراءة النقاشات التالية، فهي ستجيب على كافة تساؤلاتك. الخاصية float في موسوعة حسوب
  23. باستطاعتك استخدام العنصر "form" في HTML مع وظيفة "submit" لتحقيق هذا الأمر. حيث يتم استخدام الوظيفة "submit" لإرسال النموذج إلى صفحة أخرى عند النقر على زر "submit" أو الضغط على زر "Enter" في لوحة المفاتيح. على سبيل المثال، يمكنك استخدام الكود التالي لإنشاء نموذج HTML يرسل البيانات إلى صفحة أخرى عند الضغط على زر "Enter" في لوحة المفاتيح: <form action="page2.html"> <label for="search">Enter Search Term:</label> <input type="text" id="search" name="search"> <input type="submit" value="Search"> </form> في المثال السابق، يتم إرسال النموذج إلى صفحة "page2.html" عند الضغط على زر "Enter" بعد إدخال مصطلح البحث في حقل النص المسمى "search". يمكنك تغيير قيمة الخاصية "action" للإشارة إلى الصفحة التي تريد إرسال النموذج إليها. مع مراعاة كتابة مسار الصفحة الأخرى بشكل سليم. وهناك طريقة أخرى لكن يتطلب ذلك استخدام جافاسكريبت. يمكن استخدام الأحداث مثل "EventTarget" و "addEventListener" في جافاسكريبت لربط حدث "keypress" ومن ثم إجراء الإجراء المطلوب. document.addEventListener("keypress", function(e) { if (e.key === "Enter") { window.location.href = "page2.html"; } }); تم استخدام "addEventListener" لربط حدث "keypress" مع دالة تحقق مما إذا كان رمز المفتاح الذي تم الضغط عليه هو Enter أم لا. إذا كان الرمز "Enter" ، وتم استخدام window.location.href لتحويل المستخدم إلى الصفحة المحددة. ويمكنك تغيير "page2.html" إلى العنوان الذي تريد تحويل المستخدم إليه.
  24. إذا كنت لا تمتلك دراية بالبرمجة وبلغة PHP وإطار لارافيل وقمت بإنشاء مشاريع بسيطة من قبل فالأمر ليس بالسهل، لكن علي أي حال، إليك الخطوات: تثبيت Laravel على الخادم الخاص بك وإنشاء قاعدة بيانات جديدة. إنشاء جدول جديد في قاعدة البيانات لتخزين بيانات الفعاليات. إنشاء موديل جديد للفعاليات في Laravel باستخدام الأمر php artisan make:model Event. إنشاء محول جديد لتنسيق بيانات الفعاليات للعرض في الصفحة باستخدام الأمر php artisan make:transformer EventTransformer. إنشاء متحكم جديد للفعاليات باستخدام الأمر php artisan make:controller EventController. إنشاء طريقة لعرض صفحة الفعاليات الرئيسية وجلب بيانات الفعاليات من قاعدة البيانات باستخدام المتحكم والمحول المناسبين. إنشاء طريقة لعرض صفحة الفعالية الفردية وجلب بيانات الفعالية المحددة من قاعدة البيانات باستخدام المتحكم والمحول المناسبين. إنشاء طريقة لتخزين بيانات المشاركين في الفعالية دون الحاجة إلى تسجيل الدخول باستخدام المتحكم المناسب. تحديث طرق العرض الرئيسية والفردية للفعاليات لإظهار عدد المشاركين الحاليين في الفعالية. تحديث طريقة عرض الفعاليات الرئيسية لإخفاء الفعاليات التي انتهت بالفعل. ويجب عليك أيضًا تصميم واجهة المستخدم الخاصة بالموقع باستخدام Bootstrap. وبخصوص طريقة إرسال الفعالية وتحديد الوقت الخاص بها: فيمكن تنفيذ ذلك في Laravel عن طريق إنشاء جدول في قاعدة البيانات لتخزين تفاصيل الفعاليات المختلفة. بإضافة حقل "تاريخ الانتهاء" في الجدول لتحديد متى يجب إخفاء الفعالية. ثم يمكن إنشاء صفحة عرض الفعاليات على الصفحة الرئيسية، واستعراض الفعاليات المتاحة باستخدام استعلام SQL يسترد جميع الفعاليات النشطة (أي التي لم ينتهي تاريخها) وتعرضها على الصفحة الرئيسية. بالإضافة إلى ذلك، يمكن إضافة تفاصيل الفعالية في صفحة عرض الفعاليات، حيث يمكن للزوار إرسال بياناتهم بدون تسجيل. وعندما ينتهي تاريخ الانتهاء، سيتم إخفاء الفعالية تلقائيًا من الصفحة الرئيسية باستخدام تحديث قاعدة البيانات. على سبيل المثال، يمكن إضافة حقل "تاريخ الانتهاء" إلى جدول "الفعاليات" باستخدام الأمر التالي: Schema::table('events', function (Blueprint $table) { $table->dateTime('end_date')->nullable(); }); ثم يمكن استخدام استعلام SQL لاسترداد الفعاليات المتاحة فقط: $events = DB::table('events')->where('end_date', '>=', now())->get(); وأخيراً، يمكن إخفاء الفعالية عن طريق تحديث تاريخ الانتهاء عندما ينتهي وقت الفعالية: DB::table('events')->where('id', $eventId)->update(['end_date' => now()]);
  25. مرحبًا @Hanan Fahad2 في البداية شكرًا لإقتراحك حول الدورة الخاص بلغة PHP وإطار عمل لارافيل. أتفهم مشكلتك في استخدام Jetstream في بعض التطبيقات، وأقدر وجهة نظرك في أن يكون الشرح أكثر بساطة. ولكن يجب الإنتباه إلى أن Jetstream هو إضافة جديدة لإطار العمل Laravel توفر بنية تحتية لبناء تطبيقات الويب بسرعة وكفاءة أكبر، بما في ذلك ميزات الأمان وتسجيل الدخول والمصادقة. وهي مفيدًا للمبتدئين والخبراء على حد سواء، ويمكن التعلم من خلالها كيفية تطوير تطبيقات Laravel بشكل أكثر أمانًا وفعالية. بالطبع، أنا أقدر رأيك حول ضرورة تحسين الشرح وتوفير أساليب بديلة أكثر بساطة. ولكن يجب شرح ما هو ما مطلوب في سوق العمل وتأهيلك لذلك من خلال الدورة، فالهدف من تعلم البرمجة هو الحصول على وظيفة جيدة في مجال رائع بحق، ودائمًا عدو النجاح هو المسار الأسهل فلا يوجد شيء ذو قيمة يتطلب مجهود بسيطة بل الأمر بحاجة إلى التكرار والإجتهاد. تم اختيار Jetstream لأنه يعد إطار عمل مصمم لبناء تطبيقات الويب متعددة المستخدمين بشكل سريع وفعال، حيث يتضمن الكثير من الميزات الأساسية مثل نظام المصادقة والتسجيل، وأدوات الإدارة السهلة للصلاحيات والإشعارات وإرسال البريد الإلكتروني وغيرها الكثير من الميزات المفيدة كما ذكرت. بالإضافة إلى ذلك، فإن Jetstream يستند إلى تقنية Livewire وInertiaJS التي تساعد على تسريع عملية تطوير تطبيقات الويب، حيث تمكن المطورين من بناء تطبيقات الويب الحديثة بشكل أسرع وأكثر كفاءة. وبالتالي، يتم اختيار Jetstream للمساعدة في تسريع عملية تطوير التطبيقات وزيادة إنتاجية المطورين وتوفير الكثير من الوقت والجهد في بناء تطبيقات الويب عالية الجودة والأداء. وبالتأكيد هناك بدائل أخرى لـ Jetstream مثل: Laravel Breeze و Laravel Sanctum وغيرها. ولكن يتوقف اختيار البديل على احتياجات المشروع ومستوى المستخدمين المستهدفين. على سبيل المثال، Laravel Breeze هو بديل أساسي لـ Jetstream ويوفر تسجيل الدخول وإدارة المصادقة ولكنه يقلل من التعقيدات ويقدم خيارات أقل. بينما يقدم Jetstream خيارات أكثر ولكنها تحتاج إلى تعلم أكثر كما أشرت. بالنسبة للأفضلية، فذلك يعتمد على الاحتياجات المحددة للمشروع ومستوى الخبرة. لذا يجب تقييم المميزات والعيوب لكل خيار واختيار الأفضل للمشروع المحدد. ما أقصده هو بالنسبة للمشاريع الصغيرة والمتوسطة ، يمكن استخدام Laravel Breeze و Laravel Sanctum بسهولة. حيث تقدم Laravel Breeze تسجيل الدخول وإدارة المصادقة بشكل بسيط ولكن فعال. ويمكن استخدام Laravel Sanctum لتوفير حماية للـ APIs وخاصية الـ token الخاصة بالـ authentication بشكل فعال. مع ذلك، فإن Jetstream يمكن أن يكون مفيدًا أيضًا للمشاريع الصغيرة والمتوسطة إذا كان هناك حاجة للتحكم في الصلاحيات والتعقيدات الأخرى المتعلقة بإدارة المصادقة. ومع ذلك ، قد يكون هذا الخيار أكثر تعقيدًا بالمقارنة مع Laravel Breeze أو Laravel Sanctum. لذا يجب تحديد المتطلبات الخاصة بالمشروع ومستوى الخبرة قبل اتخاذ القرار النهائي. تحياتي.
×
×
  • أضف...