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

Mustafa Suleiman

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

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

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

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

    365

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

  1. هل قمت بإضافة الخواص التي أشرت إليها إلى ملف .env في الواجهة الخلفية؟ حاول إضافة القيم التي بالأعلى أولاً ثم تنفيذ الأمر التالي: php artisan optimize:clear في حال لم تعمل حاول إضافة التالي: SANCTUM_STATEFUL_DOMAINS="localhost,127.0.0.1" SESSION_DOMAIN=".sanctum.local" ثم تنفيذ: php artisan config:cache
  2. الفيديو تم إنشائه بواسطة تطبيق keynote (تطبيق إنشاء عروض خاص بآبل) وأيضًا هناك إمكانية أنه تم إنشاء الرسومات من خلال فيجما ثم تحريكها من خلال keynote، ويمكنك محاولة إنشاء نفس الفيديوهات من خلال برامج المونتاج مثل أدوبي بريمير وغيرها على الويندوز.
  3. حاول إضافة التالي إلى ملف .env في المشروع لديك في حال أنك تقوم بتطوير المشروع بشكل محلي local: SESSION_DOMAIN=localhost SANCTUM_STATEFUL_DOMAINS=localhost
  4. إن فهمت سؤالك بشكل صحيح، فإليك بحث بسيط: مقدمة يعد نظام إدارة حضور الموظفين من الأنظمة الهامة في أي شركة أو مؤسسة، حيث يساعد في تسجيل حضور وانصراف الموظفين بشكل دقيق وسهل، مما يساهم في تحسين الإنتاجية وضبط العمل. الإطار النظري تعريف نظام إدارة حضور الموظفين: هو نظام إلكتروني يُستخدم لتسجيل حضور وانصراف الموظفين، حيث يتيح للموظفين تسجيل حضورهم وانصرافهم من العمل من خلال أجهزة الكمبيوتر أو الهواتف الذكية. أهداف نظام إدارة حضور الموظفين: تسجيل حضور وانصراف الموظفين بشكل دقيق وسهل. تحسين الإنتاجية وضبط العمل. تقليل الأخطاء البشرية في تسجيل الحضور والانصراف. توفير الوقت والجهد للموظفين. أنواع نظام إدارة حضور الموظفين: نظام حضور وانصراف البصمة: هو النظام الأكثر شيوعًا، حيث يعتمد على تسجيل الحضور والانصراف من خلال جهاز البصمة. نظام حضور وانصراف الباركود: هو النظام الذي يعتمد على تسجيل الحضور والانصراف من خلال مسح رمز شريطي أو باركود خاص بالموظف. نظام حضور وانصراف الكاميرات: هو النظام الذي يعتمد على تسجيل الحضور والانصراف من خلال كاميرات الفيديو. الإطار العملي يمكن بناء نظام إدارة حضور الموظفين بلغة php باستخدام تقنيات وأدوات البرمجة المختلفة، مثل: إطار العمل Laravel: هو إطار عمل مفتوح المصدر مبني على لغة php، ويوفر مجموعة من الأدوات والمكونات التي تسهل عملية بناء أنظمة الويب. قاعدة البيانات MySQL: هي قاعدة بيانات مفتوحة المصدر تستخدم لحفظ البيانات في نظام إدارة حضور الموظفين. مكونات نظام إدارة حضور الموظفين: يتكون نظام إدارة حضور الموظفين من مجموعة من المكونات، مثل: صفحة تسجيل الدخول: تُستخدم لتسجيل الدخول إلى نظام إدارة حضور الموظفين. صفحة تسجيل الحضور والانصراف: تُستخدم لتسجيل حضور وانصراف الموظفين. صفحة عرض التقارير: تُستخدم لعرض تقارير حضور وانصراف الموظفين. النتائج يعد نظام إدارة حضور الموظفين من الأنظمة المهمة في أي شركة أو مؤسسة، حيث يساعد في تحسين الإنتاجية وضبط العمل. يمكن بناء نظام إدارة حضور الموظفين بلغة php باستخدام مجموعة من التقنيات وأدوات البرمجة المختلفة. التوصيات استخدام إطار عمل برمجي مفتوح المصدر مثل Laravel لبناء نظام إدارة حضور الموظفين. استخدام قاعدة بيانات مفتوحة المصدر مثل MySQL لحفظ البيانات في نظام إدارة حضور الموظفين. اختيار المكونات المناسبة لنظام إدارة حضور الموظفين بناءً على احتياجات الشركة أو المؤسسة. الخاتمة يعد نظام إدارة حضور الموظفين من الأنظمة الهامة التي تساهم في تحسين الإنتاجية وضبط العمل في أي شركة أو مؤسسة. يمكن بناء نظام إدارة حضور الموظفين بلغة php باستخدام مجموعة من التقنيات وأدوات البرمجة المختلفة، مما يوفر المرونة والسهولة في بناء النظام.
  5. لم أفهم المقصود بالضبط، معنى سؤالك أنك تريد استخدام سطر واحد فقط من الدالة الثانية؟ وما الحاجة إذن لاستدعاء الدالة بأكملها.
  6. بالطبع تستطيع استدعاء دالة داخل دالة أخرى وتنفيذ الكود الذي تم وضعه داخل الدالة المستدعاة، فعندما تنشئ دالة في بايثون، يمكنك استخدام اسم هذه الدالة كأمر لاستدعائها في أي مكان آخر في البرنامج. مثال: def func1(): print("هذا هو الدالة الأولى") def func2(): print("هذا هو الدالة الثانية") func1() # استدعاء الدالة الأولى داخل الدالة الثانية func2() # يتم استدعاء الدالة الثانية أولاً، ثم الدالة الأولى قمت باستدعاء الدالة func1 من داخل الدالة func2 وتم تنفيذها عندما تم استدعاء func2.
  7. عليك الإنتباه إلى أمر معين، كل شيء ممكن، لكن عليك تحديد سوق العمل الذي تريد العمل به، فمثلاً مواقع العمل الحر العربية لن تجد عليها مشاريع خاصة بتعلم الآلة وإن وجدت سيكون مشروع كل فترة، لذلك عليك تفقد نوعية المشاريع التي يتم طلبها بكثرة على موقع العمل الحر الذي تريد العمل عليه، ثم تعلم تلك المهارات. أما في موقع العمل الحر الأجنبية أو العمل عن بعد مع شركات أجنبية أو خليجية، فستجد بالتأكيد وظيفة خاصة بتعلم الآلة والذكاء الاصطناعي، لذلك عليك تحديد وجهتك منعًا للتخبط وضياع مجهودك، ولا يوجد مجال ليس عليه طلب، طالما أنك تفضل ذلك المجال وتنوي بذل مجهود لتعلمه ولديك الوقت لذلك فلا مشكلة، ولا تستمع لأي شخص يخبرك أنه يوجد مجال آخر عليه طلب أكثر أو ستحصل به على وظيفة بشكل أسرع. لكن مجال تعلم الآلة سيحتاج منك إلى لغة إنجليزية جيدة بحيث تستطيع القراءة والاستماع في البداية للتعلم من المصادر الأجنبية، ثم بعد ذلك تعلم التحدث بشكل جيد في حال أنك تنوي العمل مع شركات أجنبية عن بعد.
  8. يوجد خدمات لفعل ذلك لكنها ليست مجانية وبحاجة إلى اشتراك شهري
  9. في حال أردت التعمق بشكل كبير في تطوير المواقع، فعليك تعلم أساسيات جافاسكريبت أولاً وإنشاء بعض المشاريع البسيطة من خلالها، ثم تنفيذ مشاريع ويب واستخدام ما تعلمته، ثم عليك التعمق بها أكثر وتنفيذ مشاريع متقدمة من خلالها، لكونها لغة البرمجة الخاصة بالويب. ومن خلال التعمق بها ستتمكن من إنشاء تجربة مستخدم جيدة، وأيضًا يمكنك تعلم React واستخدامها في الواجهة الأمامية وجانغو في الواجهة الخلفية. وبخصوص ترجمة الفيديوهات، فعلى اليوتيوب ستجد ترجمة آلية في حال كان ذلك سؤالك من خلال الضغط على زر CC في الفيديو أو الضغط على أيقونة الترس ثم تفعيل الترجمة، أما المواقع الأخرى فلا يوجد أداة لذلك في حال لم توفر ترجمة آلية أو يدوية للفيديو في مشغل الفيديو الخاص بها.
  10. الأسئلة الإختبارية لا يتم حلها بشكل مباشر هنا ويمكن مساعدتك في حل قمت بتوفير الكود، وبالنسبة لخطوات الحل فيمكن إرشادك لها: أولاً التمرين يهدف إلى ممارسة تركيب الكلاسات في C++ بواسطة إنشاء كلاسين، الكلاس "Author" والكلاس "Book"، حيث يتضمن الكلاس "Book" كعضو له كائن من الكلاس "Author". إليك الخطوات لحل هذا التمرين بشكل مفصل: الكلاس "Author": 1- أنشئ الكلاس "Author" واجعل له الخصائص الخاصة التالية: std::string name (اسم الكاتب) int birthYear (سنة ميلاد الكاتب) 2- قم بتنفيذ مُنشئ (constructor) يأخذ اسم الكاتب وسنة ميلاده كمعاملات ويقوم بتهيئة الخصائص. 3- قم بتنفيذ دالتي get للحصول على اسم الكاتب وسنة ميلاده. 4- قم بتنفيذ دالة عضوية (member function) تسمى "displayInfo" تعرض معلومات الكاتب على الشاشة. الكلاس "Book": 1- أنشئ الكلاس "Book" واجعل له الخصائص الخاصة التالية: std::string title (عنوان الكتاب) int publicationYear (سنة نشر الكتاب) Author author (كائن من الكلاس "Author") 2- قم بتنفيذ مُنشئ يأخذ عنوان الكتاب، سنة نشره، اسم الكاتب، وسنة ميلاد الكاتب كمعاملات ويقوم بتهيئة الخصائص. يجب أن يقوم هذا المُنشئ أيضًا بإنشاء كائن "Author" وتهيئته. 3- قم بتنفيذ دالتي get للحصول على عنوان الكتاب وسنة نشره. 4- قم بتنفيذ دالة عضوية تسمى "displayInfo" تعرض معلومات الكتاب، بما في ذلك معلومات الكاتب، على الشاشة. الدالة الرئيسية: في الدالة الرئيسية (main function)، قم بإنشاء ما لا يقل عن كائنين من الكلاس "Book" بعناوين مختلفة، سنوات نشر مختلفة، أسماء كتّاب مختلفة، وسنوات ميلاد مختلفة للكتّاب. استخدم دوال الحصول (getter methods) للوصول إلى المعلومات وقم بعرض معلومات هذه الكتب باستخدام دالة "displayInfo". تأكد من أن البرنامج يقوم بعرض المعلومات بشكل صحيح حول الكتب والكتّاب.
  11. عليك تعلم الأساسيات فقط في البداية، ثم التعمق فيما بعد، لكن لا تقم بتطوير المواقع وأنت لست على دراية بطريقة بأساسيات التصميم، وستجد هنا شرح ومصادر للتعلم: وبخصوص قاعدة البيانات فستطيع استخدام أي قاعدة بيانات تريد، لكن الأمر يتوقف على نوعية البيانات التي سيتم معالجتها في المشروع، ولكن لا يكفي أن تكون على علم بنظام إدارة قاعدة بيانات واحد بل عليك تعلم استخدام PostgreSQL بالإضافة إلى MongoDB.
  12. ستحتاج إلى استخدام مكتبة تستخدم تقنية OCR وأيضًا تدعم النصوص العربية، من أجل قراءة النصوص في الصورة وتحويلها إلى ملف نصي، ومن ضمن تلك المكتبات يوجد ArabicOcr، وإذا أردت شرح المزيد عن تلك المكتبة ابحث عن arabic ocr python. أو يمكن استخدام مكتبة pytesseract بسهولة مع opencv ولكن للنصوص الإنجليزية فقط، وستجد شرح هنا: أما إذا أردت استخدام أفضل المتاح ولكن ليس بشكل مجاني، فيمكنك تجربة Vision API من Google Cloud Platform وهي تقنية التعرف الضوئي على الحروف (OCR)، والتي تدعم اللغة العربية، وتوفر جوجل تجربة مجانية عندما تقوم بالتسجيل لأول مرة، حيث ستحصل على بعض الرصيد لاستخدامه. ويمكنك استخدام الـ API الخاص بتلك الخدمة واستخدامه في المشروع لديك من أجل تحويل قراءة النصوص في الصور، وإليك مثال من خلال بايثون: def detect_document(path): """Detects document features in an image.""" from google.cloud import vision client = vision.ImageAnnotatorClient() with open(path, "rb") as image_file: content = image_file.read() image = vision.Image(content=content) response = client.document_text_detection(image=image) for page in response.full_text_annotation.pages: for block in page.blocks: print(f"\nBlock confidence: {block.confidence}\n") for paragraph in block.paragraphs: print("Paragraph confidence: {}".format(paragraph.confidence)) for word in paragraph.words: word_text = "".join([symbol.text for symbol in word.symbols]) print( "Word text: {} (confidence: {})".format( word_text, word.confidence ) ) for symbol in word.symbols: print( "\tSymbol: {} (confidence: {})".format( symbol.text, symbol.confidence ) ) if response.error.message: raise Exception( "{}\nFor more info on error messages, check: " "https://cloud.google.com/apis/design/errors".format(response.error.message) ) وهناك أيضًا خدمة مجانية من خلال الذكاء الاصطناعي تقدمها منصة ocr.alazka.ai من خلال الرابط التالي: https://1304742021-ocr.alazka.ai/ وتدعم النصوص العربية والإنجليزية، وتوفر واجهة لرفع الصور مباشرًة كمستخدم عادي والحصول على النص، وأيضًا توفر لك API لاستخدامه كمطور هنا: https://1304742021-ocr.alazka.ai/tools-and-api
  13. المشكلة الرئيسية هي أن حقل "photo" في مخطط الصورة (ImageSchema) يُعتبر إلزاميًا (required: true)، ولكنه ليس موجودًا في البيانات المرسلة من طرف العميل عندما يتم إرسال الصورة، وذلك هو السبب في ظهور رسالة الخطأ "Path photo is required." في طرف الخادم. حاول طباعة البيانات المرسلة console.log(formData) لرؤية محتوى البيانات التي تم إرسالها إلى الخادم.
  14. الجانب الخاص بوظيفة التجارة الإلكترونية هو جانب إداري وليس تقني بشكل كبير، لذلك ما أنت بحاجة إليه هو دورة إدارة تطوير المنتجات حيث يتم بها شرح ما يلي: المفاهيم الأساسية في إدارة تطوير المنتجات دارسة السوق وتحليل المنافسين ومعرفة متطلبات العملاء كتابة ملفات المواصفات التقنية للمنتج وميزاته وتحديد أولويات التنفيذ كتابة حالات الاستخدام Use cases وقصص المستخدمين User stories المخططات الأولية Wireframes وإنشاؤها التعرف على أنواع MVP توظيف مصممين للهوية البصرية Brand Image ولواجهة المستخدم وتجربة المستخدم UI/UX توظيف مطورين للواجهة الأمامية Front-end لمواقع الويب وللواجهة الخلفية Back-end ولتطبيقات الجوال نشر مواقع الويب وتطبيقات الجوال والوصول إلى مختلف الإحصائيات لتحليلها التطوير المستمر للمنتجات باعتماد منهجية أجايل Agile وهي موجهة للفئة التالية: لمن ليس لديه خبرة في مجال البرمجة أو التصميم ويريد تنفيذ مشروعه الناشئ لمن يريد تعلم إدارة تطوير المنتجات لتحسين فرصه التوظيفية لمن يعمل في إدارة المنتجات ويرغب بتوسعة معلوماته حول عملية التطوير وإدارتها وإذا نظرت لمهام مدير التجارة الإلكترونية ستجد أن دورة تطوير إدارة المنتجات تؤهلك للقيام بها بنسبة كبيرة، وهي كالتالي: تطوير استراتيجية التجارة الإلكترونية: يقوم مدير التجارة الإلكترونية بوضع خطة استراتيجية للشركة تتضمن الأهداف والأساليب اللازمة لتحقيق النجاح في مجال التجارة الإلكترونية. يشرف مدير التجارة الإلكترونية على فريق التجارة الإلكترونية، بما في ذلك المطورين والمصممين والمسوقين وموظفي خدمة العملاء.، ويتضمن ذلك الإشراف على تصميم وتطوير الموقع الإلكتروني للشركة ويضمن أن يكون سهل الاستخدام ومتوافق مع جميع الأجهزة والمتصفحات. تنفيذ استراتيجيات التسويق عبر الإنترنت، مثل الإعلان عبر وسائل التواصل الاجتماعي والتسويق بالبريد الإلكتروني والتحسين لمحركات البحث. إدارة المخزون واللوجستيات، أي المخزون المتاح ويضمن توفير المنتجات بفعالية وتوصيلها بسرعة للعملاء. جمع وتحليل البيانات ذات الصلة بالمبيعات والأداء عبر الإنترنت لاتخاذ القرارات الاستراتيجية الصائبة. يسعى المدير لتحسين تجربة العملاء عبر الموقع الإلكتروني وضمان أن العملاء يجدون ما يبحثون عنه بسهولة. يسهم المدير في مراقبة الأمور المالية المتعلقة بالتجارة الإلكترونية، مثل تحديد الأسعار ومعالجة المدفوعات عبر الإنترنت. يبحث عن فرص لتوسيع شبكة الشراكات والتعاون مع مزودي الخدمات والشركات الأخرى لتعزيز النمو. يجب على مدير التجارة الإلكترونية أن يلتزم باللوائح والقوانين المتعلقة بالتجارة الإلكترونية وحماية المعلومات الشخصية. يقدم تقارير دورية لإدارة الشركة تلخص أداء التجارة الإلكترونية ويقدم تقييمات واقتراحات لتحسين العمليات.
  15. يمكنك الوصول إلى أي دورة أنت مشترك بها من خلال تبويب دوراتي كما بالصورة التالية: وبعد التوجه لدورة بايثون، ستجد أنها مقسمة إلى مسارات وبداخل كل مسار يوجد أقسام، أي أن المسارات أشبه بدورات منفصلة ولكنها مع بعضها تكون دورة واحدة متكاملة لتأسيسك بما يلزم كمطور بايثون. وعليك دراسة الدورة بالترتيب الخاص بها أي من الأعلى إلى الأسفل، وأول مسار هو بداية الدورة (أساسيات لغة بايثون). ورابط الدورة المباشر هو التالي: https://academy.hsoub.com/courses/python-application-development/ وستتعلم بالدورة ما يلي: الأسس البرمجية السليمة عبر لغة Python التعامل مع مختلف صيغ الملفات مثل إكسل Excel وورد Word وخدمات المستندات السحابية استخراج البيانات من صفحات الويب Web Scraping وتحليلها أساسيات التعامل مع قواعد البيانات عبر بايثون، والتعامل مع البريد الإلكتروني لإرسال الرسائل أساسيات إطار العمل جانغو Django بناء تطبيق إدارة المهام باستخدام إطار العمل جانغو Django تطوير متجر إلكتروني متكامل باستخدام إطار العمل جانغو Django وربطه مع وسائل الدفع باي بال PayPal وسترايب Stripe أساسيات إطار العمل فلاسك Flask، وبناء مدونة بسيطة تطوير واجهة برمجية API اعتمادًا على نمط RESTful لمعالجة الصور وبخصوص التوظيف بعد الدورة يمكنك قراءة التالي:
  16. ما هي الدورة التي تتحدث عنها لمساعدتك بشكل أفضل.
  17. عليك أن تستخدم علامات الاقتباس (single or double quotes) للسلاسل النصية داخل دوال displayCart() و productContainer.innerHTML كالتالي: productContainer.innerHTML += ` <div class="products"> <img src="image/remove.png"> <img src="image/${item.tag}.png"> </div> <div class="price">${item.price}</div> <div class="quantity"> <img src="image/plus.png"> <span>${item.inCart}</span> <img src="image/mins.png"> </div> <div class="price-total"> ${item.price * item.inCart} </div> `; productContainer.innerHTML += ` <div class="bask"> <h4 class="baskTitle"> baskTitle </h4> <h4 class="baskTotal"> ${cartCost} </h4> </div> `; أيضًا في دالة setItems(), يجب تصحيح هذا السطر: localStorage.setItem("product.inCart", JSON.stringify(cartItems)); إلى: localStorage.setItem("productsInCart", JSON.stringify(cartItems)); وفي دالة displayCart(), صحح هذا السطر: let cartCost = document.querySelector('total'); إلى: let cartCost = document.querySelector('.baskTotal');
  18. من المفترض أن تجد علامة دائرة زرقاء بجانب الفيديوهات التي لم تقم بمشاهدتها بعد، ولكن في حال أنك قمت بالضغط على زر اجعل كل الموقع كمقروء فستختفي تلك الدائرة وتعيين جميع الدروس على أنه تم مشاهدتها ولا سبيل للتراجع عن ذلك. وحاليًا أرجو منك التوجه للدورة ومحاولة تذكر الدرس الذي توقفت عنده، رغم أنني لا أنصحك بذلك في حال الإنقطاع لفترة طويلة، من الأفضل العودة للبداية ثم المراجعة بشكل سريع من خلال مشاهدة الدروس بسرعة 1.5 أو 2. وستجد شرح للأيقونات التي تظهر بجانب الدروس والأسئلة هنا:
  19. ستحتاج إلى كتابة الكود كالتالي من خلال مكتبة escpos-php $fontPath = "/../Arabic-4.0/I18N/Arabic/Examples/GD/ae_AlHor.ttf"; $textUtf8 = "مركز النور للعيون \n رضا أحمد \n الاسم" . "\n N0 ".'4'. "\n Date : ".'2022-1-18'. "\n الخدمات المطلوبة"; $fontSize = 35; mb_internal_encoding("UTF-8"); $Arabic = new I18N_Arabic('Glyphs'); $textLine = explode("\n", $textUtf8); /* * Set up and use an image print buffer with a suitable font */ $buffer = new ImagePrintBuffer(); $buffer -> setFont($fontPath); $buffer -> setFontSize($fontSize); $profile = CapabilityProfile::load("default"); $connector = new WindowsPrintConnector("smb://SERVER/Tysso"); $printer = new Printer($connector, $profile); $printer -> setPrintBuffer($buffer); $printer->setBarcodeTextPosition(Printer::BARCODE_TEXT_BELOW); $printer->setJustification(Printer::JUSTIFY_CENTER); foreach($textLine as $text) { $printer -> text($text . "\n"); $printer -> feed(1); } $printer->barcode("01234444", Printer::BARCODE_CODE39); $printer -> cut(); $printer -> close();
  20. عليك عرض البيانات في كائن FormData باستخدام أساليب مثل get(), getAll(), و entries(). وتلك الأساليب تسمح لك باسترجاع البيانات المحفوظة في FormData بشكل مناسب، وذلك لأن FormData هو كلاس. get(name) تستخدم للحصول على قيمة محددة بناءًا على اسمها. const formData = new FormData(); formData.append("name", "mahmoud"); const name = formData.get("name"); console.log(name); // سيطبع "mahmoud" getAll(name) تستخدم للحصول على قائمة بالقيم المرتبطة بنفس الاسم. const formData = new FormData(); formData.append("hobbies", "Reading"); formData.append("hobbies", "Swimming"); const hobbies = formData.getAll("hobbies"); console.log(hobbies); // سيطبع ["Reading", "Swimming"] entries() تستخدم للحصول على مصفوفة مفاتيح وقيم FormData. const formData = new FormData(); formData.append("name", "mahmoud"); formData.append("age", 30); for (const entry of formData.entries()) { console.log(entry); } // سيطبع: // ["name", "mahmoud"] // ["age", "30"]
  21. في PHP ستحتاج إلى استخدام شرط مشابه للتالي: <?php if (!empty($_POST['اسم_حقل_المرفق'])) { // إذا كان حقل المرفق لديه قيمة، قم بعرض الصورة echo '<img src="' . $_POST['اسم_حقل_المرفق'] . '" alt="صورة المرفق">'; } else { // إذا كان حقل المرفق فارغًا، لا تفعل شيئًا أو يمكنك عرض رسالة تعبيرية echo 'لا يوجد مرفق'; } ?> حيث تستخدم الدالة empty لفحص ما إذا كان حقل المرفق فارغًا أم لا، وفي حال كان به قيمة، سنقوم بعرض الصورة، أما إن كان فارغًا، سيتم عرض نص يقول "لا يوجد مرفق"، بالطبع تستطيع استبداله بأي شيء آخر ترغب في عرضه أو اتخاذ إجراء معين بناءًا على ما تريد.
  22. ماهي اللغة التي تستخدمها أو الإطار؟
  23. بخصوص المسارات فيمكنك دخول الإختبار بعد إنهاء 4 مسارات من الدورة، وسيتم إختبارك في تلك المسارات فقط. ولا مشكلة في النسيان طالما أنك مستوعب لما تم شرحه وطريقة تنفيذ المشاريع التي قمت بها في الدورة، وبخوص طبيعة الإختبار فستجد شرح مفصل هنا:
  24. أرجو التعليق أسفل فيديو الدورة الخاص بالسؤال لمساعدتك بشكل أفضل، وطرح الأسئلة العامة هنا. وبخصوص سؤالك، في جافاسكريبت، كل دالة هي كائن، بما في ذلك دالة البناء، وعندما يتم استدعاء دالة، يتم إنشاء كائن جديد لها، ويُعرف باسم المرجع. وذلك الكائن هو الذي يحتوي على جميع بيانات الدالة وسلوكها، وفي دالة البناء، يتم استخدام this للإشارة إلى كائن الدالة الجديد، وذلك ضروري لأنك تحتاج إلى الوصول إلى بيانات وسلوك الدالة من داخل دالة البناء. وكمثال عندما تريد تعيين قيمة لخاصية في دالة البناء، فأنت بحاجة إلى استخدام this للإشارة إلى الكائن الجديد، في المقابل، لا تحتاج إلى استخدام this في دالة (ميثود) في الكلاس، حيث أن تلك دالة تُعرف بالفعل بالكائن الذي تنتمي إليه، لذلك، يمكنك ببساطة الوصول إلى بيانات وسلوك الكائن باستخدام اسم الخاصية أو الطريقة. مثال على دالة بناء تستخدم this: function Person(name, age) { this.name = name; this.age = age; } const mohamed = new Person("mohamed", 30); console.log(mohamed.name); // "mohamed" console.log(mohamed.age); // 30 بينما في الكلاس: class Person { constructor(name, age) { this.name = name; this.age = age; } getFullName() { return `${this.name} (${this.age})`; } } const mohamed = new Person("mohamed", 30); console.log(mohamed.getFullName()); // "mohamed (30)"
×
×
  • أضف...