-
المساهمات
1776 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
1
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Khaled Osama3
-
نعم، الكائن المعاد من دالة enumerate() في بايثون هو عبارة عن قائمة من الصفوف (tuples). دالة enumerate() تقوم بإرجاع كائن مُعَرِّف (iterator) يُنتج صفوف، حيث تتكون كل صف من عنصرين: 1. الفهرس (index) للعنصر الحالي، ويبدأ من 0 افتراضيًا (يمكن تغيير القيمة الابتدائية إذا تم تمرير قيمة ثانية للدالة). 2. العنصر (item) نفسه من التسلسل (sequence) الذي تم تمريره إلى دالة enumerate(). لذلك، إذا كان لديك قائمة مثل: my_list = ['apple', 'banana', 'cherry'] فإن دالة enumerate(my_list) ستنتج الصفوف التالية: (0, 'apple') (1, 'banana') (2, 'cherry') يمكنك بعد ذلك استخدام حلقة للتعامل مع هذه الصفوف، مثلًا: for idx, item in enumerate(my_list): print(f'Index: {idx}, Item: {item}') وستكون المخرجات: Index: 0, Item: apple Index: 1, Item: banana Index: 2, Item: cherry لذلك، نعم، الكائن المعاد من دالة enumerate() هو قائمة من الصفوف، حيث تحتوي كل صف على الفهرس والعنصر الموافق له في التسلسل الأصلي. الدالة enumerate() في بايثون.
-
لحل هذه المشكلة، يمكنك استخدام لغة البرمجة مثل Python مع استخدام المصفوفات والتحكم الشرطي. إليك كيفية تحقيق ذلك باللغة Python: باختصار، الفكرة تكمن في تحديد أصغر وثاني أصغر عناصر في المصفوفة بناءًعلى شرط محدد. تبدأ بتعيين القيم المثلى للعناصر، ثم يتم مقارنة كل عنصر في المصفوفة بهذه القيم. إذا كان العنصر أصغر من الأصغر حتى الآن، يتم تحديث الثاني أصغر والأصغر على التوالي، وهذا الجزء ستقوم بعمل دالة له. ومن ثم ستقوم بتحديد الشرط الذى تريد داخل الدالة، حيث ستجعلها تقوم بارجاع ال الاضغر اذا لم يتحقق الشرط, او تقوم بارجاع ثانى اصغر عنصر عندك اذا تحقق.
-
ال Entity هو مفهوم لوصف شيء ما في العالم الحقيقي، مثل شخص أو منتج أو طلب شراء. بينما الObject هو تجسيد لهذا المفهوم في البرنامج. ال Entity تعرّف في قاعدة البيانات، بينما الObject يعرف في لغة البرمجة. ال Entity تحدد خواص وعلاقات البيانات في قاعدة البيانات، بينما الObject تحدد خصائص وسلوكيات في البرنامج. يمكن الObject واحد في البرنامج أن يمثل سجل بيانات واحد (Entity) أو أكثر في قاعدة البيانات. تستخدم ال Entity لتصميم قاعدة البيانات بهدف تخزين واسترجاع البيانات، بينما تستخدم الأوبجيكت لبناء البرنامج. نفترض أن لدينا تطبيق لإدارة الطلبات المبيعاتية. في قاعدة البيانات: - لدينا إنتيتي "طلب مبيعات" (SalesOrder) وتحتوي على خواص مثل: الرقم، تاريخ الطلب، إجمالي المبلغ، الحالة، إيدي العميل. - هذه الإنتيتي تعرّف سجل الطلبات في قاعدة البيانات والعلاقات بينها. أما في لغة البرمجة PHP مثلا: - نقوم بإنشاء صف (Class) يسمى "SalesOrder" - يحتوي على خواص مثل الرقم، التاريخ، الإجمالي، الحالة، إيدي العميل. - ويحتوي على طرق مثل إضافة، حفظ، تعديل، البحث. فهنا الصف هو تجسيد لمفهوم الإنتيتي في البرنامج، بحيث تمثل كل مثيلة (Object) منه سجل بيانات واحد في قاعدة البيانات. لذلك فهي مفاهيم مترابطة ولكن لها أدوار مختلفة في طبقات التطبيق
-
يبدو أنك تواجه مشكلة مع تكوين الـ DNS لمشروع Laravel الخاص بك. عندما تحاول الوصول إلى ex30.test وتظهر رسالة الخطأ، هذا يعني أن جهازك لا يستطيع تحويل هذا الاسم إلى عنوان IP. بما أن http://127.0.0.1:8000 يعمل بشكل صحيح، فالمشكلة تكمن في التعرف على اسم النطاق ex30.test. عادة ما نحتاج إلى تحديث ملف hosts على الجهاز الخاص بك ليقوم بإرشاد النظام على أن يحول ex30.test إلى 127.0.0.1 وهو العنوان المحلي لجهازك. لتعديل ملف hosts على نظام التشغيل ويندوز، يمكنك اتباع الخطوات التالية: 1. افتح المفكرة (Notepad) كمسؤول (Run as administrator). 2. في المفكرة، اذهب إلى File > Open. 3. اذهب إلى المسار C:\Windows\System32\drivers\etc. 4. اختر "All Files" من خيارات "File Type" لتظهر لك الملفات. 5. افتح ملف hosts. 6. أضف السطر التالي في نهاية الملف: 127.0.0.1 ex30.test 7. احفظ الملف وأغلق المفكرة. بعد هذه التغييرات، جرب مرة أخرى الوصول إلى ex30.test من المتصفح. يجب أن يعمل الآن. إذا كنت تستخدم برنامج مثل Laragon أو Valet لإدارة مشاريع Laravel المحلية، فإنها تقوم عادة بتحديث ملف hosts تلقائيا عند إضافة مواقع جديدة.
-
Warning: imagepng - هذا التحذير يعني أن الدالة imagepng() لم تستطع حفظ الصورة لأن المسار المحدد غير موجود أو ليس لديها الصلاحيات اللازمة للكتابة فيه. Mailer Error - هذا الخطأ يعني أن PHPMailer لم يستطع الوصول إلى ملف الصورة المحدد لإرفاقه بالرسالة الإلكترونية. لحل هذه المشكلات، نحتاج إلى التأكد من أن المجلد الذي نحاول حفظ الصورة فيه موجود ولدينا الإذن بالكتابة فيه، وكذلك التأكد من أن ملف الصورة موجود بالفعل قبل محاولة إرفاقه بالرسالة الإلكترونية. يجب ان تتحقق من أن المسار img/qr/ موجود فعليا على الخادم وأنه قابل للكتابة. إذا لم يكن موجودا، يجب عليك إنشاؤه. بعد إنشاء الصورة وحفظها بنجاح، استخدم نفس المسار المطلق أو النسبي في addAttachment() عند إرفاق الصورة بالبريد الإلكتروني. مثال على تصحيح المسار لإنشاء الصورة وحفظها: // مسار مجلد الصور، قد تحتاج إلى تغييره بناء على بنية ملفات الخادم $qr_directory = $_SERVER['DOCUMENT_ROOT'] . '/img/qr/'; // تحقق من وجود المجلد وإمكانية الكتابة فيه if (!file_exists($qr_directory)) { mkdir($qr_directory, 0777, true); } $filename = $qr_directory . $rows_p['id_Pro'] . '_qrcode.png'; // حاول حفظ الـ QR code if (!QRcode::png($data, $filename)) { // التعامل مع الخطأ إذا فشل حفظ الصورة echo 'Could not write the QR code image to the file system.'; } وتصحيح استخدام addAttachment() لإرفاق الصورة: // تأكد من أن الصورة موجودة قبل محاولة إرفاقها if (file_exists($filename)) { $mail->addAttachment($filename); } else { echo 'QR code image file does not exist.'; } تأكد من أنك تستخدم هذه الأكواد بعد أن تقوم بإنشاء الصورة وقبل محاولة إرسال البريد الإلكتروني.
- 13 اجابة
-
- 1
-
-
اذا يجب إرفاقها بالرسالة. // Email content $mail->isHTML(true); // Set email format to HTML $mail->Subject = 'قبول المشروع من قبل اللجنة'; $mail->Body = '<h3>تم قبول المشروع الخاص بك بنجاح</h3>'; // Attach the QR code image $mail->addAttachment($filename); // Attach the QR code image you generated // Send email $mail->send(); echo 'Email has been sent successfully'; لاحظ أنه في الكود أعلاه، قمت بإضافة خط: $mail->addAttachment($filename); هذا السطر هو الذي يقوم بإرفاق صورة الـ QR code بالبريد الإلكتروني. تأكد من أن المتغير $filename يحتوي على المسار الكامل لملف الصورة التي تريد إرسالها. أيضا، تأكد من أن الصورة موجودة بالفعل في المسار المحدد عند محاولة إرفاقها بالرسالة.
- 13 اجابة
-
- 1
-
-
حسنا جيد جدا يبدو ان المشكله الاولي الخاصه 'vendor/autoload.php' قد حلت والان ظهر خطأ اخر يتضح أنه يوجد خطأ في تحميل ملف `phpqrcode/qrlib.php`. الخطأ يعني أن PHP لا يستطيع العثور على الملف في المسار المحدد مثل المشكله الاولي .اذا سنحل المشكله بنفس الطريقه يجب استخدام مسار نسبي يعود خطوة واحدة للخلف (أي يخرج من مجلد admin) ثم يدخل إلى مجلد include. require '../include/phpqrcode/qrlib.php'; قم بتحديث ملف PHP الخاص بك بالمسار الصحيح وراجع مرة أخرى.
- 13 اجابة
-
- 1
-
-
للوصول إلى ملف autoload.php من داخل مجلد admin، يجب استخدام مسار نسبي يعود خطوة واحدة للخلف (أي يخرج من مجلد admin) ثم يدخل إلى مجلد vendor. require_once '../vendor/autoload.php'; الشرطتان ../ تعني "ارجع إلى الدليل الأعلى"، وبما أن مجلد admin هو داخل مجلد المشروع الرئيسي حيث يوجد vendor، هذه الطريقة ستأخذك إلى المجلد الرئيسي أولا ثم تدخل إلى vendor لتجد autoload.php. جرب تعديل السطر في الصفحة الخاصة بك بهذه الطريقة وتحقق مما إذا كانت المشكلة قد حلت.
-
هناك مشكلة في تحميل ملفات PHP المطلوبة في مشروعك. الرسالة التي تظهر تقول إن PHP لا يمكنه العثور على ملف "autoload.php" في المسار الذي حددته. يبدو أن المسار الذي تستخدمه في الكود ليس صحيحا. الملف autoload.php موجود داخل مجلد "vendor"، لكن قد تكون المشكلة أن المسار الذي تستخدمه في الكود لا يشير بشكل صحيح إلى هذا المجلد. في الكود الذي أرسلته، يتم استخدام المسار require_once '/vendor/autoload.php';، وهذا يعني أنه يجب أن يكون هناك مجلد "vendor" مباشرة في الدليل الجذر (root) للخادم الذي تستضيف عليه مشروعك. لكن يبدو أن مجلد "vendor" هو جزء من مجلدات المشروع الأخرى وليس في الدليل الجذر (root). لحل هذه المشكلة، يمكنك تغيير المسار في الكود إلى المسار الصحيح الذي يشير إلى مكان مجلد "vendor" بشكل صحيح. إذا كان الملف الذي يحتوي على الكود موجوداً في نفس المستوى مثل مجلد "vendor"، يجب أن يكون الكود كالتالي: require_once 'vendor/autoload.php'; إذا كان الملف في مجلد فرعي، قد تحتاج إلى استخدام "../" للرجوع إلى الدليل الأعلى. مثلا، إذا كان ملف الـ PHP في مجلد "admin"، يجب أن يكون الكود: require_once '../vendor/autoload.php'; جرّب تعديل الكود ليعكس المسار الصحيح وراجع إذا كان ذلك يحل المشكلة.
-
يمكنك تنفيذها عن طريق استخدام Firebase messaging الخاصة ب google ، قم بالقليل من البحث عنها وسوف تفهم كيفية عملها. وهذه بعض المعلومات عنها : Firebase Cloud Messaging (FCM) هي خدمة توجيه الرسائل السحابية التي تقدمها Google Firebase. تستخدم Firebase Messaging لإرسال الرسائل إلى الأجهزة المحمولة وأجهزة الكمبيوتر عبر الإنترنت. يمكن استخدامها لإرسال الإشعارات والرسائل الفورية إلى التطبيقات على أنظمة Android وiOS والويب. تتميز Firebase Messaging بالمزايا التالية: إرسال الرسائل الفورية: يمكنك إرسال رسائل فورية للمستخدمين بمجرد وقوع حدث معين أو تحديث مهم في التطبيق. إدارة الجهاز: يمكنك توجيه الرسائل إلى جهاز معين أو مجموعة معينة من الأجهزة باستخدام معرفات الجهاز. دعم الوسائط المتعددة: يمكنك إرسال رسائل تحتوي على صور أو فيديوهات أو صوتيات. تحليل الرسائل: تتيح Firebase Messaging لك تتبع الرسائل وتحليل أدائها لفهم تفاعل المستخدمين مع التطبيق. وبالنسبة لكيفية التنفيذ: يمكنك اولا عمل ما يسمى Scheduled Job أو وظيفة مجدولة ، حتى تقوم بفحص تورايخ المنتجات يوميا مثلا ،و تقوم بارجاع المنتجات التى قاربت على الانتهاء. يمكنك ايضا البحث عن كيفية عملها باللغة التى تستخدمها. ثانيا اذا كان هناك بضائع قاربت على الانتهاء قم باستخدام Firebase messaing لإرسال notification للمستخدمين بهذه البضائع.
-
الفرق بين IDE و ال IDLE باختصار: - بيئة تطوير متكاملة (IDE - Integrated Development Environment): الـ IDE هي بيئة تطوير برمجية متكاملة توفر مجموعة شاملة من الأدوات والميزات لتطوير البرمجيات. تشمل هذه الأدوات واجهة مستخدم رسومية لكتابة وتحرير الشفرة، وأدوات لتصحيح الأخطاء وتنسيق الشفرة، ومحرر لتصميم واجهة المستخدم الرسومية (GUI)، ومنصة لإدارة المشروعات، وأدوات لتصحيح الأخطاء، ومحللات للأداء، وغير ذلك الكثير. أمثلة على IDE تشمل PyCharm وVisual Studio وEclipse وNetBeans. - بيئة تطوير متكاملة باللغة البرمجية البسيطة (IDLE - Integrated Development and Learning Environment): IDLE هي بيئة تطوير متكاملة مصممة خصيصًا للعمل مع Python. تقدم IDLE محرر نصوص بسيط لكتابة وتنفيذ الشفرة البرمجية بلغة Python. بالإضافة إلى ذلك، توفر IDLE بعض الأدوات الأساسية مثل محطة تفاعل Python (Python Shell) التي تسمح للمستخدمين بتفاعل مباشر مع اللغة وتنفيذ التعليمات خطوة بخطوة. يعتبر IDLE بيئة مثالية للمبتدئين في تعلم لغة Python بسبب بساطته وسهولة الاستخدام. الملخص لما فوق هو أن IDE هي بيئة تطوير متكاملة تستخدم لتطوير برامج متقدمة بميزات شاملة، في حين أن IDLE هو بيئة تطوير متكاملة خفيفة تستخدم أساسا لتطوير وتعلم لغة برمجة Python.
-
نعم بالتأكيد. باستخدام مكتبة نامباي يمكن حساب القاسم المشترك الأكبر (GCD) بسهولة. الخطوات هي: استيراد المكتبة: import numpy as np ثم تعريف الأعداد التي تريد حساب GCD لها: a = 12 b = 8 ثم استخدم دالة np.gcd(): result = np.gcd(a, b) إلان يمكنك طباعة الناتج: print(result) الناتج سيكون 4 حيث 4 هو القاسم المشترك الأكبر لـ 12 و 8. بهذه الطريقة يمكن حساب GCD لأعداد أكبر أو لمصفوفات بأكملها بسهولة باستخدام مكتبة نامباي.
- 3 اجابة
-
- 1
-
-
لصنع لوحة توزيع لمفاتيح التشفير باستخدام PHP وMySQL، ستحتاج أولًا إلى القدرة الفنية على البرمجة ومعرفة بكيفية إدارة البيانات داخل قاعدة البيانات. ولكن، عندما يتعلق الأمر بجلب مفاتيح فك التشفير وإرسالها إلى المشترك، هناك عدة نقاط يجب التفكير فيها: 1. الحصول على المفاتيح: يجب أن تكون لديك طريقة قانونية للحصول على مفاتيح فك التشفير. غالبًا ما تكون هذه المفاتيح ملكًا للموفرين الرسميين للخدمة وتستخدم لضمان أن الأشخاص الذين يدفعون مقابل الخدمة فقط هم من يمكنهم الوصول إليها. 2. إرسال المفاتيح: إذا كان لديك وصول قانوني إلى المفاتيح، فسيكون من الضروري تطوير نظام يمكن المشتركين من الوصول إلى هذه المفاتيح بطريقة آمنة وموثوقة. هذا قد يشمل التحقق من صحة المشتركين وتأكيد أن لديهم اشتراكا صالحا قبل إرسال المفاتيح. 3. التأمين والحماية: يجب أن يكون النظام الذي تطوره آمنًا لمنع الوصول غير المصرح به. هذا يشمل تأمين الاتصالات عبر الإنترنت باستخدام تشفير SSL/TLS، وتخزين المفاتيح بطريقة آمنة، وتطبيق أفضل الممارسات لأمان الويب. 4. الاستضافة: يجب أن تستضيف نظامك على خادم يمكنه التعامل مع الاتصالات المتزامنة ولديه وقت تشغيل عالي لضمان استمرارية الخدمة. 5. القانونية: وكما ذكرت سابقًا، يجب التأكد من أن كل جانب من جوانب النظام يتوافق مع القوانين المحلية والدولية، خاصة فيما يتعلق بحقوق الطبع والنشر والخصوصية.
- 5 اجابة
-
- 1
-
-
هذا يحدث لأن الصورة لا تتكيف مع أحجام الشاشات المختلفة بشكل تلقائي. يمكنك استخدام background-size: cover;: - هذه الخاصية تضمن أن الخلفية ستغطي كامل المساحة المتاحة دون أن تفقد نسبها الأصلية. - تجعل الصورة تمتد لتغطية العنصر بالكامل، مع الحفاظ على نسب العرض إلى الارتفاع. او استخدام background-size: contain;: - تضمن هذه الخاصية ظهور الصورة بأكملها، لكنها قد تترك بعض المساحات الفارغة حول الصورة إذا كانت نسب أبعاد الصورة مختلفة عن نسب أبعاد العنصر. جعل التصميم متجاوبا مع أحجام شاشات مختلفة باستخدام @media queries: - يمكنك تعديل تصميمك ليناسب أحجام شاشات مختلفة، مثل الأجهزة اللوحية والهواتف المحمولة، بتحديد أنماط CSS مختلفة لأحجام شاشات محددة. مثال على كود CSS: body { background-image: url('path-to-your-image.jpg'); background-size: cover; /* أو استخدم contain حسب الحاجة */ background-position: center; /* لضمان توسيط الصورة */ } /* تعديلات للشاشات الصغيرة */ @media screen and (max-width: 992px) { /* تعديلات لأجهزة اللوحي */ } @media screen and (max-width: 768px) { /* تعديلات لشاشات أصغر */ } @media screen and (max-width: 640px) { /* تعديلات للهواتف الذكية */ } @media screen and (max-width: 320px) { /* تعديلات لشاشات الهواتف الصغيرة جدًا */ } - background-size: cover; تستخدم لضمان تغطية الخلفية لكامل المساحة المتاحة. - background-size: contain; تضمن رؤية الصورة بأكملها على الشاشة. - @media queries تستخدم لجعل الصفحة تتجاوب مع أحجام شاشات مختلفة، بتطبيق أنماط CSS مختلفة تبعا لحجم الشاشة.
-
في Python، تتوفر العديد من المكتبات والأدوات التي تسمح بالتعامل مع مصادر مختلفة للبيانات مثل جداول بيانات Excel، جداول بيانات Google، مستندات Word، ملفات CSV و JSON، بالإضافة إلى قواعد البيانات،بشكل عام، فإن استخدام Python للتعامل مع جميع هذه المصادر للبيانات يوفر مرونة وقوة في تطوير التطبيقات، ويسمح بالتفاعل مع مجموعة متنوعة من المصادر بسهولة وفعالية. و الفوائد من التعامل مع جداول بيانات جوجل والمستندات تعتمد على الاحتياجات الخاصة بالمشروع أو التطبيق. قد تحتاج إلى استيراد بيانات من جداول جوجل لتحليلها أو عرضها بطريقة معينة، أو ربما تحتاج إلى إنشاء تقارير تفصيلية في مستندات Word استنادًا إلى بيانات معينة. هذه الأدوات ليست مجرد إضافات في اللغة، بل توفر واجهات للتفاعل مع مصادر بيانات محددة. وهذه بعض الأمثلة التى من الممكن ان تيجب عن سؤالك: التعامل مع جداول بيانات جوجل والمستندات: يمكن للتطبيقات والسكربتات المكتوبة بلغة Python الوصول إلى جداول بيانات Google والمستندات وتعديلها باستخدام Google APIs. يعتبر هذا مفيدًا للتفاعل مع بيانات Google Drive ومشاركتها مع الآخرين بشكل مباشر من التطبيقات التي تم إنشاؤها بواسطة Python. التعامل مع المستندات ورد: في بعض الحالات، قد تحتاج تطبيقات Python إلى إنشاء أو تحرير مستندات Word بشكل ديناميكي، مثل إنشاء تقارير أو وثائق مخصصة تستند إلى البيانات المتاحة. بالتالي، فإن التعامل مع مستندات Word يمكن أن يكون مفيدًا للتطبيقات القائمة على Python.
- 3 اجابة
-
- 1
-
-
لن تحتاج إلى أن تعرف ال software architecture إذا كنت تتعلم تعلم الآلة فليس له استخدام فى تعلم الآلة عمتا.
- 4 اجابة
-
- 1
-
-
عليكم السلام، العمارة البرمجية (Software Architecture) هي الهيكلية الأساسية لنظام البرمجيات، تحدد كيفية تنظيم الأنظمة البرمجية وتفاعل مكوناتها مع بعضها. تركز على تحديد المكونات الرئيسية للنظام، والعلاقات بينها، وكيفية تنظيمها لتحقيق أهداف الأعمال وتحقيق الأداء والموثوقية. وتهدف إلى تحسين جودة النظام البرمجي وقابليته للصيانة والتوسع. ووتتكون من عدة عناصر وهى : المكونات أو (Components): هي الأجزاء البنائية للنظام مثل الوحدات، والمكتبات، والخدمات. تتعامل المكونات مع البيانات وتنفذ الوظائف المحددة. الاتصالات أو (Communications): تحدد كيفية تبادل المكونات المعلومات والبيانات مع بعضها البعض، يتم ذلك عادة من خلال واجهات محددة وبروتوكولات اتصال معينة. الهياكل أو (Structures): توضح كيفية تنظيم المكونات داخل النظام والعلاقات بينها، مثل الهياكل الطبقية والهياكل الأساسية والهياكل المتجهة. السياسات أو (Policies): تعرف القواعد والتوجيهات التي تحكم سلوك النظام، مثل قواعد إدارة الذاكرة أو قواعد الوصول إلى البيانات المبادئ التوجيهية أو (Guiding Principles): هي المبادئ والقواعد التي توجه عملية تصميم العمارة البرمجية مثل فصل القلق وإعادة الاستخدام والتوسعية.
- 4 اجابة
-
- 1
-
-
وعليكم السلام ورحمة الله، من وجهة نظري أنه من الأفضل أن تتعمق أكثر في رياكت قبل الانتقال لـ Node.js. وذلك لعدة أسباب: رياكت مكون أساسي يجب فهمه جيدا قبل الانتقال لمراحل أعمق. ستستطيع بناء تطبيقات واقعية برياكت وتطبيق ما تعلمته عمليا. سيكون لديك خلفية أفضل عن جانب الويب قبل دخول الجانب الخادم. ستتمكن من الاستفادة مما تعلمته لاحقا عند دراسة Node.js قد تحتاج تعزيز بعض المفاهيم بالتطبيق قبل الانتقال. يجب التمكن من React ومجالاتها المتقدمة (مثل إدارة الحالة مع Redux أو MobX، Context API، Hooks، وغيرها) سيعزز قدراتك في تطوير الواجهات الأمامية. نصيحتي بالتركيز أكثر على رياكت الآن عبر إنشاء مشاريع حقيقية، ثم بعدها البدء في Node.js. سيكون التعلم أكثر استفادة وترابطا.
- 3 اجابة
-
- 2
-
-
-
لعمل ال activity diagram يمكنك استخدام برنامج مثل draw.io أو lucidChart هذه أحسن البرامج اللتى يمكن ان تستخدميها لعمل ال Activity Daigram. وهذا بعض التوضيحات اللتى سوف تساعدك على بناء Activity Diagram ل subject enrolment : تصفح المواد المتاحة: الطالب سيقوم بفتح قائمة المواد المتاحة في النظام، حيث يمكنه استعراض قائمة بجميع المواد التى يمكنه التسجيل بها في الفصل الدراسي الحالي. البحث عن مادة محددة: إذا كان الطالب يبحث عن مادة معينة، فإنه يمكنه استخدام خاصية البحث في النظام للعثور على المادة التي يرغب في تسجيلها. إضافة المادة إلى الجدول الزمني: بعد اختيار المادة التي يرغب في تسجيلها، يقوم الطالب بإضافتها إلى جدوله الزمني في النظام، محددا الفترات الزمنية التي يرغب في حضور المحاضرات أو الفصول الدراسية. تأكيد التسجيل: بمجرد اكتمال جدول الطالب، سيقوم بتأكيد التسجيل، ما يعني أنه قد اختار المواد وحدد الفترات الزمنية المناسبة لها. فحص توافر الأقسام: بعد تأكيد التسجيل، سيقوم النظام بفحص توافر الأقسام للمواد التي اختارها الطالب، للتأكد مما إذا كان بإمكان الطالب الالتحاق بالفصول الدراسية المطلوبة أم لا. تأكيد أو إلغاء التسجيل: استنادًا إلى نتائج الفحص، سيقوم النظام بتأكيد تسجيل الطالب في الأقسام المتاحة، أو سيقوم بإلغاء التسجيل في الأقسام التي لا تتوفر فيها مقاعد شاغرة
-
يوجد مشكلة عند عرض النص العربي في عنوان الرسالة بسبب أن بروتوكول البريد الإلكتروني لا يدعم ترميز النصوص غير الإنجليزية بشكل افتراضي. لحل هذه المشكلة يجب تعيين ترميز النص إلى UTF-8 قبل تعيين عنوان الرسالة كالآتي: $mail->CharSet = 'UTF-8'; $mail->setFrom('test@gmail.com', 'موقع كورة'); أو يمكن تعيين ترميز النص عند بداية إنشاء المكتبة باستخدام الخاصية CharSet: $mail = new PHPMailer(true); $mail->CharSet = 'UTF-8'; $mail->setFrom('test@gmail.com', 'موقع كورة');
-
Express.js و Next.js ليسا بالضرورة متضادين، بل يمكن استخدام كلاهما معا في بعض الحالات، ولكن يتميز كل منهما فى مجالات استخدام مختلفة. Express.js: Express.js هو إطار عمل لجافا سكريبت مبني على Node.js ، ويستخدم لبناء تطبيقات الويب وواجهات البرمجة،يعتبر Express.js مرن ويمنح المطورين الحرية في تنظيم الطرق والمنطق الخلفي او كما يطلق عليه back-end لتطبيقاتهم. Next.js: Next.js هو إطار عمل لجافا سكريبت و React مصمم خصيصًا لبناء تطبيقات الويب، ويوفر ميزات مثل التقدم التدريجي وتوليد الصفحات الثابتة والتحميل التلقائى للبيانات . يستخدم Next.js عادة لتطوير تطبيقات الويب الديناميكية والمتقدمة. الاختيار بين استخدام Express.js و Next.js يعتمد على متطلبات مشروعك ومستوى التكامل مع React و Electron.js. إذا كنت تبني تطبيق ويب تفاعلي متقدم مع React، فمن الأفضل استخدام Next.js حيث يتمتع بميزات مدمجة تجعل تطوير التطبيقات الديناميكية أكثر سهولة. إذا كنت بحاجة إلى مرونة كبيرة في تنظيم طرق الخادم والمنطق الخلفي، فقد تفضل استخدام Express.js. يمكن استخدام كل من Express.js و Next.js في تطبيق Electron.js إذا كنت ترغب في استخدام Node.js في الجزء الخلفي من التطبيق بينما يمكنك استخدام Express.js لإنشاء خادم و API للتفاعل مع قاعدة البيانات أو الخدمات الخارجية، بينما يمكنك استخدام Next.js لبناء واجهة المستخدم وتحميل الصفحات الديناميكية. باختصار اختيار الإطار المناسب يعتمد على احتياجات مشروعك ومستوى التكامل المطلوب مع الأدوات الأخرى التي تستخدمها.
-
نعم في هذا المثال : $str = 'abcdefa'; echo strpos($str, 'cd'); النتيجة ستكون 2. حيث ان strpos() تقوم بالبحث عن سلسلة 'cd' في سلسلة 'abcdefa'. تم العثور على 'cd' في الموقع رقم 2 بداية من اليسار. تحسب المواقع أو الأحرف المكون للسلسلة بداية من 0 وليس 1. لذلك، عندما تعيد الدالة القيمة 2، فهي تعني أن أول ظهور للسلسلة المحددة ('cd') يبدأ من الموقع 2 داخل السلسلة المعطاة ('abcdefa'). إليك كيف يتم العد: - a (الموقع 0) - b (الموقع 1) - c (الموقع 2) - d (الموقع 3) - e (الموقع 4) - f (الموقع 5) - a (الموقع 6) لذا فإن النتيجة تعطينا الموقع رقم 2 حيث تم العثور على 'cd' لان موقع بداية سلسلة الحروف 'cd' حسب ترتيبها في السلسلة الأصلية، وليس عدد الحروف.
- 2 اجابة
-
- 1
-
-
هذا الكود ينقسم الي دالتين داخل الcontroller، وهما validator و create. هذه الطرقتين تستخدم في عملية تسجيل المستخدمين في الموقع. لنبدا نشرح الدالة validator الطريقة validator تستخدم للتحقق من صحة (validation) البيانات المدخلة من قبل المستخدم عند التسجيل. تستخدم Laravel Validator::make لإنشاء وتشغيل عملية التحقق من الصحة. 'name' => ['required', 'string', 'max:255'] هذا حقل الاسم يجب أن يكون مطلوبا، وايضا أن يكون نوع البيانات نصيا، وألا يتجاوز الطول 255 حرفا. 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'] هذا حقل البريد الإلكتروني يجب أن يكون مطلوبا، نصيا، صالحا كعنوان بريد إلكتروني، وألا يتجاوز الطول 255 حرفا، وأن يكون فريدا في جدول المستخدمين (غير مكرر). 'password' => ['required', 'string', 'min:8', 'confirmed'] هذا حقل كلمة المرور يجب أن يكون مطلوبا، نصيا، وألا يقل طوله عن 8 أحرف، وأن يكون متطابقًا مع حقل التأكيد (أي يجب على المستخدم إدخال كلمة المرور مرتين للتأكيد). لنبدا نشرح الدالة create لقد تحققنا من صحة البيانات وكل شئ علي ما يرام، الان نستخدم الدالة create لإنشاء حساب جديد للمستخدم في قاعدة البيانات. User::create([...]) هذه الدالة تستدعي الدالة create على موديل User، والتي تستخدم البيانات المقدمة لإنشاء سجل جديد في قاعدة البيانات. Hash::make($data['password']) تستخدم لتشفير كلمة المرور قبل تخزينها في قاعدة البيانات لأسباب أمنية. في النهاية، يتم إرجاع حساب المستخدم الجديد بعد إنشائه في قاعدة البيانات، وهذا سيكون مهمًا للتحقق من أن العملية تمت بنجاح ولاتاحة الاستخدام للمستخدم الجديد أو لإجراء عمليات إضافية مثل إرسال رسالة ترحيب او ادخاله علي صفحه البروفايل الخاصه به.
- 1 جواب
-
- 1
-
-
الوراثة المتعددة والكونستركتور هما مفهومان مهمان في البرمجة الموجهة للكائنات (OOP). ساشرح كل واحد ببساطة ووضوح. الوراثة المتعددة الوراثة المتعددة هي ميزة تسمح لكلاس (صنف) واحد بوراثة ميزات أو خصائص من أكثر من كلاس واحد. يمكنك تخيل الوراثة المتعددة مثل طفل يرث صفات من والده ووالدته معا. هذا يجعل الكود أكثر قابلية لإعادة الاستخدام وتنظيما لأنك تستطيع جمع خصائص ووظائف من كلاسات مختلفة في كلاس واحد. مثال: لنفترض أن لدينا كلاس للطائر وكلاس للسباح، يمكننا إنشاء كلاس جديد يسمى "Duck" يرث الخصائص من كلا الكلاسين لأن البطة تستطيع الطيران والسباحة. ومع ذلك، تجدر الإشارة إلى أن بعض لغات البرمجة مثل Java لا تدعم الوراثة المتعددة مباشرة بسبب تعقيدات مثل "مشكلة الماس"، حيث يمكن أن يحصل الكلاس الفرعي على نفس الطريقة من كلاسين أساسيين مختلفين، مما يؤدي إلى الارتباك حول أي طريقة يجب أن تستخدم. في هذه الحالات، يمكن استخدام واجهات(interfaces) أو تكوين بدلا من الوراثة. الكونستركتور في OOP الكونستركتور هو طريقة خاصة داخل الكلاس تدعى تلقائيًا عند إنشاء كائن (instance) من ذلك الكلاس. يستخدم الكونستركتور عادة لتهيئة الكائن، مثل تعيين القيم الابتدائية لمتغيرات الكلاس. مثال: إذا كان لدينا كلاس يمثل كتاب، فقد يحتوي الكونستركتور على معلمات لعنوان الكتاب واسم المؤلف. عند إنشاء كائن جديد من الكلاس، يمكنك تحديد هذه البيانات مباشرة. class Book { String title; String author; // هذا هو الكونستركتور Book(String title, String author) { this.title = title; this.author = author; } } في البرمجة الموجهة للكائنات، يعتبر استخدام الكونستركتورات طريقة فعالة لضمان أن الكائن يتم تهيئته بحالة صالحة للاستخدام مباشرة بعد إنشائه.
-
لا يمكنك تغيير ال package name حتى ولو كان معك ال key Store الخاص بالتطبيق ، واذا اردت تغييرها عليك برفع التطبيق مرة اخرى كأنه تطبيق جديد ، حلك ان تقوم بعمل تحديث للتطبيق بنفس اسم ال package name او اما ان تقوم باعادة رفع التطبيق من جديد ونعم عندها سيكون تحميلات 0 وتعليقات 0 وتقيم 0 ...الخ وليس هناك نفع لل key store فى هذه الحالة ، حتى شركة facebook او تويتر لا تستطيع تغيير ال package name.
- 4 اجابة
-
- 1
-