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

Mustafa Suleiman

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

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

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

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

    299

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

  1. الأسئلة الإختبارية لا يتم حلها مباشرًة ولكن يمكن مساعدتك بإرشادك لخطوات الحل أو عليكي بتوفير الكود في حال واجهتك مشكلة به. والإختبار يتطلب منك تطوير نظام إدارة تأجير السيارات باستخدام JavaFX ومبادئ البرمجة الموجهة للكائنات. سأشرح لك الخطوات بشكل عام: 1- تحليل المشكلة قراءة وفهم المشكلة المطروحة بعناية. تحليل المتطلبات والمفاهيم الرئيسية في المشكلة، مثل السيارات، وشركات التأجير، والمستأجرين. 2- التصميم الأولي عليك بتصميم هيكل الكائنات الأساسية في النظام. يجب أن تحتوي الكائنات على السمات المناسبة لحفظ معلومات السيارات والشركات والمستأجرين. استخدمي UML لتصميم الصفوف والعلاقات بينها، وتستطيعي استخدام برامج رسم UML مثل draw.io أو Visual Paradigm لإنشاء الرسم البياني. 3- تنفيذ الكود إنشاء مشروع جديد في بيئة التطوير الخاصة بك وقم بإعداد JavaFX للعمل. تنفيذ الكائنات التي قمت بتصميمها في الخطوة السابقة باستخدام الصفوف والمتغيرات والدوال المناسبة. إنشاء واجهة المستخدم الرسومية باستخدام JavaFX. أنشئ نموذجًا لإضافة معلومات السيارة وتحديث القائمة وإنشاء تقرير السيارات. 4- اختبار النظام تجربة النظام وتأكد من أنه يعمل بشكل صحيح. تأكدي من أنه يمكنك إضافة معلومات السيارة وتحديث القائمة وإنشاء تقرير السيارات بشكل صحيح. 5- إنشاء ملف تقرير السيارات الحصول على قائمة السيارات الموجودة في النظام. فتح ملف نصي جديد بامتداد ".txt" لكتابة تقرير السيارات. تنسيق المعلومات اللازمة في التقرير، مثل معلومات كل سيارة بما في ذلك نوعها، واسم الشركة المصنعة، والنموذج، ورقم اللوحة. كتابة تلك المعلومات في الملف النصي بشكل منظم وواضح. بعد الانتهاء من كتابة التقرير، أغلق الملف النصي. عليك بعرض رسالة تأكيد للمستخدم تفيد بأن التقرير قد تم إنشاؤه بنجاح. وتأكدي من التحقق من أن النظام يقوم بحفظ المعلومات بشكل صحيح ويعرضها في واجهة المستخدم الخاصة بك، كما يجب التحقق من أن زر "إنشاء تقرير" يقوم بإنشاء التقرير بشكل صحيح ويحفظه في ملف نصي. ويُفضل توفير رسومات أو روابط للشاشات والأكواد التي قمت بتنفيذها، بالإضافة إلى رسم UML للتصميم الأساسي للكلاسات والعلاقات. وإليك شرح خطوات كتابة الكود الخاص بالبرنامج باستخدام JavaFX ومبادئ البرمجة الموجهة للكائنات: 1- إعداد المشروع إنشاء مشروع جديد في بيئة التطوير الخاصة بك (مثل Eclipse أو IntelliJ) وحدد نوع المشروع كـ "JavaFX". إضافة المكتبة اللازمة لدعم JavaFX وستحتاجي مكتبة JavaFX SDK. 2- تصميم الصفوف عليكي بتصميم الصفوف الأساسية لنظام إدارة تأجير السيارات، ويمكن أن تتضمن الصفوف التالية: Car (لتمثيل معلومات السيارة) RentalCompany (لتمثيل شركة التأجير) Renter (لتمثيل معلومات المستأجر) CarRentalSystem (الصف الرئيسي الذي يتحكم في تنفيذ العمليات الرئيسية للنظام). 3- تنفيذ الصفوف إنشاء ملف مصدر لكل صف. في صف Car، قومي بإنشاء المتغيرات والمشغلات اللازمة لتمثيل معلومات السيارة. في صف RentalCompany، قم بإنشاء المتغيرات والمشغلات اللازمة لتمثيل معلومات شركة التأجير. في صف Renter، إنشاء المتغيرات والمشغلات اللازمة لتمثيل معلومات المستأجر. في صف CarRentalSystem، إنشاء المتغيرات والمشغلات اللازمة لتنفيذ العمليات الرئيسية، مثل إضافة سيارة جديدة، وعرض قائمة السيارات، وإنشاء تقرير السيارات. 4- إنشاء واجهة المستخدم الرسومية فتح ملف FXML الخاص بتصميم واجهة المستخدم في JavaFX Scene Builder. تنسيق العناصر المختلفة في الواجهة، مثل الأزرار وحقول الإدخال والجداول. تعيين العناصر اللازمة بأسماء مناسبة ومعرفات ID لاستخدامها في الكود الخاص بتعامل الواجهة مع البيانات. تنفيذ مشغل الحدث للأحداث المختلفة في الواجهة، مثل زر إضافة سيارة أو زر إنشاء تقرير. تنفيذ الكود اللازم للتفاعل بين واجهة المستخدم وكائنات النظام، مثل إضافة سيارة جديدة إلى النظام عند النقر على زر "إضافة"، أو إنشاء تقرير عند النقر على زر "إنشاء تقرير". استخدمي أساليب واجهة المستخدم الخاصة بـ JavaFX لتحديث القوائم وعرض البيانات بشكل صحيح. مثال بسيط لجزء من الكود: import javafx.application.Application; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.layout.GridPane; import javafx.stage.Stage; public class CarRentalSystemApp extends Application { private TextField carTypeField; private TextField manufacturerField; private TextField modelField; private TextField plateNumberField; private TextField renterNameField; private TextField addressField; private TextField mobileNumberField; private TextField emailField; public static void main(String[] args) { launch(args); } //باقي الكود هنا
  2. الوقت الذي تحتاجه لتصبح مطور شبكات يعتمد على العديد من العوامل، بما في ذلك خلفيتك التعليمية والتقنية الحالية ومدى التفرغ والممارسة العملية التي تستثمرها في تعلم البرمجة. وفي المتوسط، في حالة التعلم بانتظام والممارسة بجدية ستحتاج من 6 إلى 12 شهرًا لتصبح مطور .NET، و الوقت قد يختلف بشكل كبير من شخص لآخر. وإليك بعض الخطوات لتحقيق ذلك: 1- دراسة الأساسيات تعلم مفاهيم برمجة الحاسوب والتعامل مع لغات البرمجة الأخرى. 2- تعلم لغة C# تعتبر C# لغة البرمجة الرئيسية في بيئة .NET، لذا من المهم أن تتعلمها بشكل جيد. 3- تعلم إطار العمل .NET تعرف على الأدوات والتقنيات المستخدمة في تطوير التطبيقات باستخدام .NET Framework أو .NET Core. 4- التطبيق العملي قم بممارسة كتابة الشفرة وتطوير تطبيقات بسيطة باستخدام .NET. 5- استكشف مجالات التخصص قد ترغب في التعمق في مجال محدد مثل تطوير تطبيقات الويب باستخدام ASP.NET، أو تطوير تطبيقات سطح المكتب باستخدام Windows Forms أو WPF، أو تطوير تطبيقات الجوال باستخدام Xamarin. وأخيرًا قم بالبحث على يوتيوب عن خريطة تعلم .NET,وأنصحك بمشاهدة الفيديو الخاص بقناة Codographia ثم Ali Shahin. وأنصحك بقراءة النقاشات التالية:
  3. لا مشكلة، وذلك هو المطلوب فستتعلمي الكثير بفعل ذلك، وتستطيعي رفع مجلد المشروع لتفقد سبب المشكلة
  4. أنت بذلك تقصد FavIcon أي أيقونة المفضلة، ولإضافتها إلى مدونتك على بلوجر، عليك بإتباع التالي: قم بإعداد الشعار الخاص بك بتنسيق صورة صغيرة، عادةً بحجم 16x16 بكسل أو 32x32 بكسل. يجب أن يكون الشعار بتنسيق صورة مشفرة بتنسيق ICO أو PNG. انتقل إلى "تخطيط المدونة" (Layout) من لوحة التحكم. انقر على "تحرير" (Edit) بجانب عنصر "رأس المدونة" (Blog Header). ستنتقل إلى صفحة تحرير عنصر رأس المدونة. ابحث عن خيار "fav icon" أو "رمز الموقع" (Site Icon). انقر على زر "اختيار ملف" (Choose File) أو "استعراض" (Browse) لتحديد ملف FavIcon الذي قمت بإعداده في الخطوة الأولى. بعد اختيار الملف، انقر على زر "حفظ" (Save) أو "تحديث" (Update) لحفظ التغييرات.
  5. أهم ما يجب أن تبحث عن هو الإهتمام المشترك والرغبة في بذل الجهد والوقت، وليس فقط سعيًا لكسبًا المال، حيث أن في بداية المشروع لن يتوفر المال لفترة ليست بالقصيرة تتراوح من سنة حتى 3 سنوات. لذلك يجب أن يكون لديه دراية بطبيعة المشروع ولديه خبرة به قريبة من خبرتك حتى تتمكنوا من التفاهم وبذل جهد متقارب، وابتعد عمن يريد المكسب السريع بالطرق الملتوية فهى ذات عمر قصير وتأتي بنتائج عكسية حتى لو كسبت القليل في البداية. ولا يلزم أن يكون في نفس مجالك، بل قد يكون مكمل لعملك، مثلاً أنت مبرمج فقد يكون شريك عملك هو مصمم واجهات مثلاً. ولا يشترط أن تتوافقا في كل شيء لكن يجب أن يكون هناك تفاهم وإلتزام بالشروط وجدية في العمل، وأيضًا تقارب السن أمر هام في بعض الأحيان لكونه يعني تشابه في الأهداف التي يسعى كل منكما للوصول إليها.
  6. الأمر سهل من خلال الخطوات التالية: قم بتسجيل الدخول إلى حسابك في بلوجر واختر المدونة التي ترغب في إضافة الشعار إليها. انتقل إلى "تخطيط المدونة" (Layout) من لوحة التحكم. ابحث عن عنصر العنوان (Header) في قائمة العناصر الموجودة في التخطيط وانقر على "تحرير" (Edit) بجانبه. سيظهر لك مربع حوار "إعدادات عنصر العنوان" (Configure Header). في هذا المربع، ستجد خيارًا لتحميل صورة الشعار. انقر على زر "اختيار ملف" (Choose File) أو "استعراض" (Browse) لتحديد صورة الشعار من جهاز الكمبيوتر الخاص بك. بعد تحديد الصورة، انتقل إلى خيار "موقع العنصر" (Placement) واختر موقع الشعار الذي ترغب في وضعه. يمكنك اختيار وضع الشعار في الجزء العلوي من الصفحة (Above Title) أو في الجزء السفلي من الصفحة (Below Title). بعد الانتهاء، انقر على زر "حفظ" (Save) أو "تحديث" (Update) لحفظ التغييرات التي قمت بها.
  7. أولاً يجب الإتفاق على كافة التفاصيل وتدوينها جيدًا وكتابة حق كل فرد في المشروع وواجباته، ولا تدع مجالاً للإتفاق الشفهي ويجب أن تتم كل الأمور بشكل قانوني لحماية حق الجميع. وعند تحديد نسبة الشراكة في عملك، يجب أن تتفق مع صديقك على عدة عوامل مهمة، وهناك طرق مختلفة يمكن استخدامها لتحديد نسبة الشراكة، ومن بينها: 1- تحديد المساهمة المالية تحديد نسبة الشراكة بناءًا على المبلغ المالي الذي يقدمه صديقك كمساهمة، أي إذا قدم صديقك 50% من رأس المال المستثمر في العمل، فقد يكون له نصف الشراكة. 2- تقسيم الأداء والمسؤوليات إذا كان لديك وصديقك مهارات وخبرات مختلفة وتساهمون في العمل بطرق مختلفة، فتستطيع تحديد نسبة الشراكة بناءًا على تقييم الأداء والمسؤوليات. مثال: إذا كنت تدير العمل وتتولى المبيعات والتسويق، وكان لديك صديق يدير الجانب المالي والمالية، فيمكن أن يكون لكم نسب شراكة مختلفة وفقًا للمساهمة والمسؤوليات. 3- تقسيم الأرباح يجب تحديد نسبة الشراكة بناءًا على توزيع الأرباح، من خلال تحديد نسبة شراكة متساوية وتقسيم الأرباح بالتساوي، أو يمكنكم تحديد نسبة شراكة مختلفة وفقًا لنسبة المساهمة في الأرباح. ومن الأفضل أن تتواصلوا مع محامي أو خبير مالي لتوضيح القوانين المحلية وتوصية بأفضل الخيارات المتاحة لكم في بلدكم، حيث ستساعدك الاستشارة المهنية في ضمان الشفافية والعدل في توزيع النسب وتفادي أي خلافات محتملة في المستقبل.
  8. لا مشكلة في السؤال، للحصول على شهادة إتمام الدورة ستحتاج إلى أن فهم الدورة بشكل وافي، وأيضًا رفع المشاريع التي تم تنفيذها خلال الدورة على GitHub لإرسالها للمراجعة. وهم: بناء واجهة مستخدم تشبه موقع YouTube بناء صفحات هبوط وتشمل: صفحة قريبًا الانطلاق صفحة شركة صفحة تطبيق جوال صفحة شخصية تطوير متجر إلكتروني تطوير موقع شركة تطوير لوحة تحكم بناء مواقع ثابتة باستخدم Hugo تطوير موقع أخباري وتستطيع التقدم للإمتحان بمجرد إتمام 4 مسارات أي الحد الأدنى هو عند مسار تطوير متجر إلكتروني، ولكن الأفضل هو إنهاء الدورة بالكامل ولا تستعجل. وأسلوب الإمتحان هو مكالمة صوتية لمدة 30 دقيقة مع أحد المدربين لسؤالك حول الدورة وعن مدى فهمك والأمور التي نفذتها أنت، وبعد ذلك سيتم تحديد مشروع لك لنفيذه لمدة تتراوح ما بين أسبوع إلى أسبوعين ثم مكالمة صوتية أخرى لمدة 30 دقيقة لمناقشة المشروع. ولا تقلق تستطيع التقدم للإمتحان مرة أخرى، ولكن حاول الاستعداد جيدًا توفيرًا لوقتك للنجاح من المرة الأولى. وقد تم شرح ذلك بشكل وافي في النقاشات التالية وبمزيد من التفاصيل وطريقة التقدم للإمتحان: وبخصوص العمل على مواقع العمل الحر مثل خمسات ومستقل، فطبعًا تستطيع ذلك بمجرد قدرتك على تنفيذ مشروع بمفردك بواسطة HTML,CSS,JS و مكتبة jQuery وأي مشروع يتطلب تلك المهارات تستطيع تقديم عرض عليه. لكن نصيحتي إليك هي بقراءة النقاش التالي لتفهم طبيعة سوق العمل: وبخصوص طريقة التعلم الصحيحة أنصحك بقراءة النقاش التالي:
  9. 1- قم بفتح مستند InDesign الذي يحتوي على النص الذي ترغب في تحويله. 2- حدد النص الذي ترغب في تحويله عن طريق أداة التحديد (Selection Tool) من شريط الأدوات. 3- اذهب إلى قائمة "نص" (Type) في شريط القوائم العلوي واختر "توجيه النص" (Text Direction). 4- ستظهر قائمة منبثقة تحتوي على خيارات توجيه النص، فقم بتحديد "من اليمين إلى اليسار" (Right-to-Left) لتحويل النص إلى الجهة اليسرى. 5- بمجرد تحديد الخيار المطلوب، سترى أن النص قد تم تحويله إلى الجهة اليسرى. تأكد من حفظ التغييرات بعد الانتهاء من تحويل النص.، من خلال الذهاب إلى قائمة "ملف" (File) واختيار "حفظ" (Save) أو "حفظ باسم" (Save As) واختيار مكان الحفظ المناسب للمستند. وتلك الخطوات تستطيع تطبيقها على إصدارات Adobe InDesign الحديثة، وقد تختلف الخطوات قليلاً إذا كنت تستخدم إصدارًا قديمًا من البرنامج.
  10. أنت لا تشعر بالضياع أو التشتت عزيزي، حتى من لديه خبرة كبيرة بالبرمجة إذا انقطع لفترة طويلة سينسى بالتأكيد، فالبرمجة تحتاج إلى ممارسة، فما بالك بمن درس لفترة صغيرة وانقطع بالتأكيد سيشعر بالضياع. وإذا كنت قد درست بشكل صحيح وبتأني وقمت بالتطبيق مرة مع المدرب ومرة بمفردك وحاولت التغيير قليلاً في المشروع لتتعلم أشياء جديدة من المشاكل التي ستواجهك، أو تستطيع مشاهدة بعض الفيديوهات ثم توقفت وقم بالتطبيق بمفردك وحاول الإضافة أو التغيير قليلاً لتتعلم. فلا مشكلة كل ما تحتاجه حاليًا هو مراجعة الدورة بشكل سريع أي تشغيل الفيديو على سرعة 1.5 أو 2 حسب ما يناسبك فإذا وجدت نفسك تسترجع المعلومات وتتذكر فعليك بالتطبيق على مشروع إذًا لتثبيت ما قمت بمراجعته. ولكن إذا وجدت نفسك لا تتذكر كم كبير من المعلومات أو تجد صعوبة في تنفيذ المشروع من البداية ولا تعرف ماذا تفعل بالكود، هنا يجب دراسة الدورة من البداية وبتأني وعدم الإنتقال من قسم إلى قسم إلا بعد التأكد أنك فهمت وطبقت بمفردك. ونصيحة، حاول ألا تشعر بالقلق عند تعلم البرمجة فالجميع بدأ من نفس النقطة، فأعطي نفسك بعض الوقت وإلتزم بمسار تعليمي وخلال فترة سيتحسن مستواك بشكل كبير. وأيضًا إذا واجهتك مشكلة قم بتقسيمها إلى أجزاء صغيرة وحاول تنفيذها ولا تنظر للمشكلة بشكل كامل، في البداية حاول التطبيق على أجزاء صغيرة ثم قم ببناء موقع كامل وستجد في الروابط التي أرفقتها لك موقع لتحديثات وتصاميم للتطبيق على ما تعلمته. وقد تم النقاش حول الطريقة الصحيحة لدراسة الدورات هنا بشكل مفصل: ولتجنب التكرار، أنصحك بقراءة النقاشات التالية فستجد بها إجابة على الكثير من الأسئلة لديك:
  11. أرجو منك طرح السؤال أسفل فيديو الدورة إذا كان خاص بأحد الدورات لمساعدتك بشكل أفضل، وطرح الأسئلة العامة هنا. وربما المشكلة من الخادم نفسه فقد يوجد مشكلة بالكود وطريقة الرد على الطلب، ولكن حاولي التحقق من التالي: 1- التحقق من تكوين طلب Postman إرسال طلب POST بالطريقة الصحيحة. استخدام عنوان URL الصحيح للطلب. إرسال بيانات الطلب الصحيحة في الجسم (body) للطلب. 2- فحص الاستجابة من الخادم فحص استجابة الخادم وتحققي مما إذا كان يحتوي على بيانات صالحة، من خلال استخدام console.log لرؤية رد الخادم على الطلب. 3- التحقق من بنية البيانات تأكدي من أنك ترسلي بيانات صحيحة ومناسبة في الجسم (body) للطلب. تحققي من أن الخادم يتوقع تنسيق بيانات معين (مثل JSON أو XML) وأنك ترسلي البيانات بالتنسيق الصحيح.
  12. يتم توفير عروض في المناسبات مثل رمضان وأحيانًا في فترة الإجازات الصيفية وأحيانًا في فترة التخفيضات السنوية الخاصة بالجمعة البيضاء، وفي بعض الأحيان يتم توفير كوبونات. يمكنك التواصل مع مركز المساعدة للسؤال عن كوبونات (غير متوفرة دائماً) أو انتظار تخفيض في الأوقات التي أخبرتك بها.
  13. 1- تنبيه الخطأ الأول يعني أنه يوجد عملية Git أخرى قيد التشغيل في المستودع، و يُطلب منك التأكد من إغلاق جميع العمليات ذات الصلة بـ Git مثل محرر النصوص الذي تستخدمه للتعامل مع commit. أي تحقق من أنه ليس لديك أي عمليات Git أخرى تعمل بالفعل وإغلاق محرر الأكواد وأيضًا أي نافذة أوامر، وإذا واجهت أي صعوبة في ذلك، قم بإعادةتشغيل الجهاز وحاول مرة أخرى. 2- بعد التأكد من أنه لا توجد عمليات Git أخرى قيد التشغيل، قم بإزالة الملف الذي تسبب في حدوث الخطأ. الخطأ يشير إلى أن هناك عملية Git سابقة قد توقفت بشكل غير طبيعي وتركت ملفًا معطوبًا. لذلك قم بتنفيذ الأمر التالي: git rm -r --cached 3- بعد ذلك، قم بتغيير اسم الفرع الافتراضي من "master" إلى "main" باستخدام الأمر التالي: git branch -M main 4- تأكد من أن لديك ملف .gitignore في مجلد المشروع لضمان عدم رفع مجلد node_modules وأرجو منك قراءة النقاش التالي: 5- قم بإضافة كل ملفات المشروع لرفعها من خلال الأمر التالي: git add . 6- قم بعمل commit من خلال الأمر التالي: git commit -m "Upload files" 7- قم بإضافة العنوان البعيد (remote URL) لمستودع GitHub الخاص بك مع الأمر التالي: git remote add origin https://github.com/moazzant226/react.git لاحظ أن هذا الأمر يشير إلى أن العنوان البعيد "origin" موجود بالفعل، ولكن يمكنك تجاوز هذا التحذير والمتابعة. 5- أخيرًا، استخدم الأمر التالي لرفع التحديثات إلى مستودع GitHub الخاص بك: git push -u origin main
  14. أنت بذلك قد اكتسبت فهمًا جيدًا للغة وانتهيت من أساسياتها. ولكن، يجب أن تلاحظ أن تعلم البرمجة عملية مستمرة، ودائمًا ما يوجد دائمًا مزيد من المفاهيم والمواضيع لاستكشافها وتعلمها. إذا كنت ترغب في توسيع معرفتك ومهاراتك في لغة JavaScript، يمكنك الاستمرار في دراسة المواضيع المتقدمة مثل كيفية تطوير موقع ويب (Web development)، وأطر العمل (Frameworks) الخاصة لغة جافاسكريبت، وستدرس أيضًا قواعد البيانات في الدورة. وهناك مفهوم البرمجة الموجهة (Object-oriented programming) ستتعلمه أيضًا في الدورة باستخدام بايثون، وتستطيع تطبيق نفس المفهوم في لغة جافاسكريبت. ولا تنخدع بأنك بذلك قد تعلمت اللغة، بل تعلمت الأساسيات التي تمكنك من استكمال مسيرتك في تعلم اللغة، حيث أن هناك المزيد وأنصحك بدراسة القسم الأول من دورة تطوير التطبيقات باستخدام JavaScript حيث أنه متاح لك مجانًا وبه معلومات إضافية: https://academy.hsoub.com/courses/javascript-application-development/javascript-intro/ ما هي أساسيات جافاسكريبت التي يجب معرفتها في البداية؟ 1- مفهوم البرمجة والمبادئ الأساسية فهم كيفية عمل البرامج والمفاهيم المشتركة مثل المتغيرات والتحكم التسلسلي والشروط. 2- بنية اللغة فهم بنية لغة JavaScript وترتيب الكود والتعليقات والمسافات البيضاء. 3- المتغيرات والأنواع البيانية التعرف على المتغيرات وكيفية تعريفها واستخدامها، وأنواع البيانات المختلفة مثل الأعداد والسلاسل النصية وقيمة الصح والخطأ. 4- العوامل والعمليات الحسابية كيفية استخدام العوامل الرياضية الأساسية مثل الجمع والطرح والضرب والقسمة، والعمليات الأخرى مثل الزيادة والنقصان. 5- التحكم في التدفق فهم كيفية التحكم في تدفق البرنامج باستخدام الشروط (مثل if و else) والحلقات (مثل for و while). 6- الدوال كيفية تعريف الدوال واستخدامها في تجزئة البرنامج إلى وحدات قابلة لإعادة الاستخدام. 7- المصفوفات استيعاب طريقة إنشاء واستخدام المصفوفات لتخزين وتنظيم مجموعة من القيم ذات نوع مشترك. 8- الكائنات فهم مفهوم الكائنات والبرمجة الموجهة للكائنات (OOP)، وكيفية إنشاء الكائنات واستخدام الخصائص والأساليب.
  15. بالتأكيد، تستطيع إنشاء تطبيق ويب للسوبر ماركت باستخدام JavaScript أو TypeScript، ففي الواقع، JavaScript هي لغة برمجة الويب الأساسية التي تستخدم على نطاق واسع في تطوير التطبيقات والمواقع الحديثة. TypeScript، من جهتها، هي لغة تعتمد على JavaScript وتوفر تحسينات وإضافات إضافية مثل نظام النوع الاختياري وتحسين الإنتاجية أثناء التطوير. وباستخدام JavaScript أو TypeScript، ستتمكن من بناء واجهة المستخدم الديناميكية للتطبيق، تفاعلية مع المستخدم، والتعامل مع العمليات المتعلقة بالسلة والدفع والمخزون وما إلى ذلك. بالإضافة، هناك إطارات عمل (Framework) مثل React أو Angular أو Vue.js لبناء تطبيق ويب أكثر تنظيمًا وفعالية. وبلا شك، هناك لغات أخرى يمكن استخدامها في تطوير تطبيقات الويب، مثل Python (باستخدام إطار عمل Django) أو Ruby (باستخدام إطار عمل Ruby on Rails) أو PHP (باستخدام إطار عمل Laravel). وتلك اللغات وإطارات العمل لديها أيضًا مجموعة كبيرة من الموارد والأدوات المتاحة لتطوير تطبيقات السوبر ماركت. الاختيار بين JavaScript ولغات أخرى يعتمد على تفضيلاتك ومستوى خبرتك في هذه اللغات، بالإضافة إلى متطلبات المشروع والأدوات والمكتبات المتاحة.
  16. علوم البيانات والذكاء الاصطناعي (AI) مجالان حيويان ومترابطان في عصرنا الحالي، يُعتبر العلماء والمحللون المتخصصون في البيانات والمتخصصون في الذكاء الاصطناعي من أكثر الخبرات المطلوبة في سوق العمل ولكن بشكل أكبر في الدول الأجنبية. بالنسبة لأيهما أفضل، فإن الاختيار يعتمد على اهتماماتك وأهدافك الشخصية، وأيضًا حالتك المادية ومدى إحتياجك للوظيفة، حيث كلا المجالين بحاجة إلى وقت أكبر للتعلم ومجهود أيضًا. فإذا كنت ترغب في تحليل البيانات واستخراج الأنماط والتوصل إلى اكتشافات مهمة، فقد يكون التركيز على العلوم البيانات هو الأنسب لك، وإذا كنت تهتم بتطوير النظم الذكية التي تتعلم وتتكيف تلقائيًا، فقد يكون الذكاء الاصطناعي هو الاختيار الأمثل. بالنسبة لمسار التعلم، يوجد العديد من الخيارات المتاحة. يمكنك البدء بتعلم المفاهيم الأساسية في العلوم البيانات أو الذكاء الاصطناعي من خلال الدورات، بعد ذلك، يمكنك العمل على مشاريع تطبيقية لتطبيق المفاهيم التي تعلمتها. وقد تم النقاش حول سؤالك بالتفصيل من قبل أرجو منك الإطلاع على النقاشات والمقالات التالية:
  17. في المثال، الدالة setTimeout ليست فعلاً async ولا تعود بقيمة Promise، حيث أن الدالة setTimeout تستخدم لتأجيل تنفيذ كود معين بعد فترة زمنية محددة. إليك توضيحًا لتسلسل الأحداث في المثال: طباعة السطر "1: execute". تُستدعى دالة setTimeout وتُمرر إليها وظيفة مستدعاة للتنفيذ (console.log('moath')) وفترة زمنية بالمللي ثانية (1000 مللي ثانية أو 1 ثانية). طباعة القيمة المُرجعة من setTimeout. هذه القيمة هي معرّف للمؤقت (timeout) المنشئ ويمكن استخدامه لإلغاء المؤقت في حالة الحاجة، القيمة المُرجعة هي رقم يُمثل المؤقت. طباعة السطر "2: execute". تنفيذ الوقت المُحدد للمؤقت (1 ثانية) ويتم طباعة "moath". لاحظ أنه لا يتم استخدام await في المثال، وبالتالي لا يتأثر تسلسل الأحداث بوجودها. ,إذا كنت ترغب في استخدام await مع setTimeout، فتستطيع استخدام setTimeout داخل دالة مستدعاة async واستخدام await معها، كما يلي: (async () => { console.log("1: execute"); const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); await delay(1000); console.log("moath"); console.log("2: execute"); })(); دالة delay تستخدم setTimeout داخل Promise، ومن ثم يتم استخدام await لاستدعاء الدالة delay وتأجيل تنفيذ الكود التالي حتى ينتهي الوقت المُحدد، مما يضمن تسلسل تنفيذ الأحداث كما هو متوقع.
  18. عليك بالبحث عن قالب الصفحة الذي يعرض صفحة المنتجات، والذي عادةً ما يكون اسمه "archive-product.php" أو شبيه به. بعد العثور على القالب، قم بمراجعة الكود المستخدم في القالب وتحقق مما إذا كان هناك أي شروط تفصل بين المستخدمين المسجلين وغير المسجلين. فقد يكون هناك كود مثل if (is_user_logged_in()) يحدد تصميم الصفحة بناءً على حالة تسجيل الدخول. وإذا وجدت أي شروط تميز بين المستخدمين المسجلين وغير المسجلين، تستطيع تعديل الكود لجعل التصميم متجانسًا بين الصفحتين، فإما إزالة الشرط تمامًا أو تعديله بحيث يعرض التصميم نفسه لكلا النوعين من المستخدمين. أو حاول استخدام التنسيقات المخصصة Custom CSS في القالب من أجل عرض التنسيقات بشكل موحد.
  19. يبدوا أن المشكلة تتعلق بأحد الدورات لذلك أرجو منك التعليق أسفل فيديو الدورة المتعلق بالسؤال. والمشكلة تحدث عند تشغيل أمر npm run start في مشروع Node.js. وتعني أنه يتعذر تشغيل Babel بالإصدار الصحيح. يوضح الخطأ أن الإصدار المطلوب هو Babel "^7.0.0-0" ولكن الإصدار المثبت هو "6.26.3"، أي يحدث هذا الخطأ عندما يتعارض إصدار Babel المثبت مع إصدار الإعدادات الخاصة بالمشروع. حاول تنفيذ التالي: 1- تثبيت الإصدار الصحيح من Babel. يمكنك استخدام الأمر التالي لتثبيت Babel بالإصدار الصحيح: npm install --save-dev @babel/core @babel/cli @babel/preset-env 2- تحقق من إعدادات ملف package.json في مشروعك وتأكد من أن الإصدار المطلوب من Babel معرف بشكل صحيح في قسم "devDependencies". 3- حذف مجلد node_modules في مشروعك وأعد تثبيت الحزم المعتمدة بواسطة الأمر التالي: npm install 4- إذا كنت تستخدم ملف .babelrc أو babel.config.js لإعداد Babel، تحقق منهما للتأكد من أن الإعدادات صحيحة وتتوافق مع الإصدار الجديد. بعد اتباع هذه الخطوات، قم بتشغيل npm run start مرة أخرى ويجب أن تتمكن من تشغيل المشروع بنجاح. وإذا استمرت المشكلة حاول القيام بالتالي: 1- تحديث المكونات الإضافية الخاصة بـ Babel، من خلال الأمر التالي: npm update --save-dev @babel/core @babel/cli @babel/preset-env 2- تحديث مكتبة Nodemon. قم بتشغيل الأمر التالي لتحديث Nodemon: npm update --save-dev nodemon 3- حذف ملف package-lock.json ثم قم بتشغيل الأمر npm install مرة أخرى لإعادة تثبيت الحزم المعتمدة. 4- قد يكون هناك تعارض في إصدارات الحزم المثبتة في مشروعك، فحاول بتحديث جميع الحزم المثبتة بواسطة الأمر التالي: npm update
  20. يستخدم شرط "if" لتغيير قيمة متغير يسمى "todos" استنادًا إلى قيمة متغير آخر يسمى "showTodo". و تعريف "todos" باستخدام useState() ، وهو Hook خطاف يستخدم في React لإنشاء وإدارة حالة المكونات. وإذا كانت قيمة "showTodo" تساوي 'active' ، تستخدم دالة "filter()" على "todos" لاستبعاد العناصر التي لديها "status" معقمة (false) والحفاظ فقط على العناصر التي لديها "status" غير معقمة (true). وتعدل قيمة "todos" لتكون هذا النتيجة ومن ثم يتم طباعتها في وحدة التحكم باستخدام console.log(). باختصار، ما يحدث هو تصفية وتعديل قيمة "todos" بناءً على قيمة "showTodo" واستخدام الدالة "filter()" للحصول على مجموعة من العناصر المطلوبة، والتي تعتمد على حالة "status" لكل عنصر في "todos".
  21. ربما السبب هو وجود اختلاف في تكوين القوالب أو القوالب المستخدمة لعرض صفحة المتجر لكل فئة. فعند استخدام WooCommerce، تستخدم قوالب WordPress لعرض صفحات المتجر والمنتجات. يمكن أن تكون هناك قوالب مخصصة لصفحة المتجر للمسجلين وقوالب مختلفة للغير مسجلين. حاول التحقق من إعدادات القوالب في موقعك والتأكد من أنه ليس هناك تعيين مختلف للمسجلين والغير مسجلين، وتستطيع الوصول إلى إعدادات القوالب عن طريق لوحة تحكم WordPress والتنقل إلى "مظهر" ثم "محرر القوالب"، أيضًا قد تحتاج أيضًا إلى التحقق من إعدادات WooCommerce والتأكد من أن السمات تعرض بنفس الطريقة للمستخدمين المسجلين والغير مسجلين. أو حاول استخدام تنسيقات CSS مخصصة وتطبيقها على القالب لعرضه بشكل سليم للجميع.
  22. App ID هو هوية فريدة تُعرف في بيئة تطوير Apple وتُستخدم لتمييز التطبيقات الخاصة بك عند توزيعها أو تحديثها. يحتوي App ID على سلسلة نصية مميزة تُعبر عن هوية التطبيق. عند إنشاء تطبيق جديد، يتم إنشاء App ID خاص به ويكون له تكوين معين يشمل معلومات مثل Bundle Identifier والخدمات المرتبطة بالتطبيق مثل Push Notifications وApp Groups وغيرها. Bundle Identifier مُعرّف فريد للتطبيق في إطار التطوير ويستخدم لتمييز التطبيق على نظام iOS، ويتم تعريف Bundle Identifier في مشروعك في Xcode ويتم استخدامه كمعرّف للتطبيق أثناء عملية التطوير والبناء. وقد يحتوي Bundle Identifier على نفس القيمة التي تستخدمها في App ID، ولكنها ليست نفس الشيء. باختصار، Bundle Identifier هو المعرّف الذي يتم استخدامه أثناء تطوير وبناء التطبيق في Xcode، في حين أن App ID هو المعرّف الفريد في بيئة تطوير Apple ويستخدم لتمييز التطبيق أثناء توزيعه على Apple App Store أو استخدام الخدمات المرتبطة بالتطبيق. لذلك تأكد من استخدام Bundle Identifier الصحيح في Xcode و وجود App ID صحيح مقابله في حسابك على موقع مطوري Apple.
  23. المشكلة تكمن في وجود علامة غير صحيحة في المسار الذي تحاول من خلاله تشغيل المشروع، فالعلامة "$" ليست حرفًا صالحًا في أسماء المجلدات في نظام التشغيل Windows، ويجب تجنب استخدام هذه العلامة في أسماء المجلدات. باعتبار أنه تم حذف العلامة "$" من المسار وتم إعادة تسمية المجلد الخاص بك إلى "courses-projects"، فقد تم حل المشكلة. الآن يمكنك تشغيل الأمر npm start دون وجود خطأ. ويجب أن تتجنب استخدام الأحرف الخاصة أو الرموز المحظورة في أسماء المجلدات عند إنشاء مشاريع React أو أي مشروع آخر، ويُفضل استخدام الأحرف الأبجدية والأرقام والشرطة (-) أو الشرطة السفلية (_) في أسماء المجلدات والملفات لتجنب أي مشاكل محتملة. ولعلك تتسائل هل من الأفضل تسمية مجلد المشروع بالشكل courses-projects أو courses projects؟ في الحقيقة يمكن استخدام أي منهما، ولكن هناك بعض النصائح التي يمكن أن تساعدك في اختيار اسم المجلد بشكل أفضل: استخدم الشرطة (-) أو الشرطة السفلية (_) لفصل الكلمات في اسم المجلد، فهو يساعد في جعل الاسم أكثر وضوحًا وقابلية للقراءة. وأيضًا عند التعامل مع المجلدات أثناء العمل على سيرفر بعد نشر المشروع على خادم الويب أو استضافته في بيئة إنتاجية، فقد تواجه مشاكل إذا كان هناك أحرف خاصة أو أحرف غير صالحة في اسم المجلد. واستخدام الشرطة (-) يقلل من حدوث هذه المشاكل ويجعل عملية النشر أكثر سلاسة. تجنب استخدام الأحرف الخاصة أو الرموز المحظورة، فقد تتسبب هذه الأحرف الخاصة في مشاكل في بعض الأنظمة أو الأدوات. اختر اسمًا وصفيًا وموضحًا يعكس طبيعة المشروع، مما يساعد الآخرين على فهم المشروع بسرعة.
  24. سأوضح لك خطة عامة لتنفيذ نظام CRUD لتسجيل الشكاوى للموظفين، بما في ذلك تسجيل الفيديو والصورة وعرضها: 1- إعداد قاعدة البيانات إنشاء قاعدة بيانات جديدة للمشروع. إنشاء جدول لتخزين بيانات الموظفين، وتستطيعي تضمين الحقول التي تحتاجها مثل الاسم، والبريد الإلكتروني، والوظيفة، وما إلى ذلك. 2- إعداد نموذج الموظف إنشاء نموذج لبيانات الموظفين باستخدام Laravel's Eloquent ORM. ضمن النموذج، عليك بتعريف الحقول اللازمة مثل الاسم، والبريد الإلكتروني، والوظيفة، وخلافه. 3- إنشاء صفحة التسجيل إنشاء واجهة المستخدم لتسجيل بيانات الموظفين. استخدمي حقول الإدخال لجمع المعلومات الأساسية مثل الاسم والبريد الإلكتروني والوظيفة. إضافة زر أو حقل تحكم لفتح كاميرا الويب وتسجيل الفيديو، وتستطيعي استخدام JavaScript وواجهة برمجة تطبيقات WebRTC لتحقيق ذلك. 4- معالجة البيانات إنشاء وظيفة لمعالجة بيانات الاستمارة المرسلة من صفحة التسجيل. داخل هذه الوظيفة، استخدمي طرق Laravel لإنشاء سجل جديد في قاعدة البيانات باستخدام بيانات الموظف المقدمة. حددي مسارًا لتخزين الفيديو المسجل في الملفات، ويتوفر ميزة التخزين المؤقت في Laravel . وسأشرح لك مثال: إنشاء وظيفة في طبقة التحكم (Controller) لمعالجة بيانات الاستمارة المرسلة من صفحة التسجيل، باسم store أو اسم آخر مناسب. داخل هذه الوظيفة، استخدمي طرق Laravel لإنشاء سجل جديد في قاعدة البيانات باستخدام بيانات الموظف المقدمة، وتستطيعي استخدام النموذج المرتبط بالموظفين (Employee Model) والوصول إلى الحقول المناسبة مثل الاسم والبريد الإلكتروني والوظيفة. تعيين المسار الذي سيتم تخزين الفيديو المسجل فيه باستخدام ميزة التخزين المؤقت في Laravel من خلال store() لحفظ الملف المؤقت في المجلد المناسب. تحديد حقل النص في قاعدة البيانات الذي يحتوي على مسار الفيديو المسجل، واستخدمي الدالة setAttribute() في نموذج الموظف (Employee Model) لتعيين قيمة المسار الذي تم تخزينه. بعد الانتهاء من تخزين المسار وإنشاء السجل في قاعدة البيانات، عليك بتنفيذ أي إجراءات إضافية تحتاجها مثل تنفيذ إشعار للمستخدم أو إعادة توجيهه إلى صفحة أخرى. 5- تخزين الفيديو والصورة بمجرد تسجيل الفيديو من كاميرا الويب، قومي بتخزينه في مجلد مؤقت في الخادم باستخدام Laravel's Filesystem. استخدمي حقل النص في جدول الموظفين لتخزين مسار الفيديو المؤقت. تكوين Laravel لمعالجة تحميل الملفات ونقل الفيديو من المجلد المؤقت إلى مجلد دائم في الخادم. 6- عرض البيانات والفيديو إنشاء صفحة لعرض بيانات الموظفين المسجلة، بما في ذلك الفيديو والصورة المسجلة. استرجعي بيانات الموظفين من قاعدة البيانات باستخدام Eloquent ORM. عرض البيانات في صفحة العرض وقم بتضمين مشغل الفيديو لعرض الفيديو المسجل. 7- التعامل مع CRUD العادي تحديث واجهة المستخدم لتمكين إجراءات CRUD العادية على بيانات الموظفين، مثل إضافة وتعديل وحذف. تنفيذ وظائف CRUD اللازمة في طبقات التحكم (Controllers) باستخدام Eloquent ORM ومكونات Laravel. 8- تحسينات إضافية تستطيعي تنفيذ تحسينات إضافية، مثل إضافة ميزات التحقق من صحة الملفات المرفوعة وتحويل الصورة أو الفيديو إلى صيغة معينة قبل التخزين. وإذا كان هناك أي نقطة غير واضحة أخبريني وسأوضحها لكِ.
×
×
  • أضف...