- 
                المساهمات2165
- 
                تاريخ الانضمام
- 
                تاريخ آخر زيارة
- 
                عدد الأيام التي تصدر بها2
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو عبد الوهاب بومعراف
- 
	يمكنك القيام بهذا الأمر بطريقة غير مباشرة عن طريق استخدام set، و الفكرة هي مقارنة طول القائمة الأصلية مع طول set الناتج عنها، لأن set يحتفظ فقط بالعناصر الفريدة. def all_unique(lst): return len(lst) == len(set(lst)) # اختبار numbers = [1, 2, 3, 4, 5] print(all_unique(numbers)) # True numbers = [1, 2, 3, 3, 5] print(all_unique(numbers)) # False إذا كانت القيم مكررة، فسيكون طول set(lst) أقل من طول القائمة الأصلية، مما يعني أن الأعداد ليست فريدة.
- 4 اجابة
- 
	- 1
- 
					
						
					
							  
 
 
- 
	الطريقة المتوفرة هي عن طريق البطاقات الإئتمانية أو بإستخدام Paypal، وبالتأكيدي الدفع يكون عن طريق الدولار، أما في حالة لم تتوفر لديك البطاقة يمكنك الإستعامة بأحد أقربائك حتى يقومون بشراء بطاقة هدية الخاصة بالأكاديمية و إرسالها لك و يمكنك تفعيلها في حسابك و إختيار الدورة التي تناسبك، يمكنك الإطلاع على هذا الأمر من هنا: https://support.academy.hsoub.com/how-to-buy-gift-card
- 
	لا يوجد فرق عملي من حيث الأداء بين الكودين، فكلاهما يؤدي نفس الوظيفة والفرق الوحيد هو في طريقة تحديد الأعمدة للحذف، و كلا الكودين متكافئان تماما، حيث يقومان بنفس العمليات داخليا في pandas، و أي فرق محتمل سيكون ضئيلا جدا وغير ملحوظ، لأن drop سيقوم بنفس معالجة الحذف بغض النظر عن الطريقة المستخدمة لاستخراج أسماء الأعمدة. من ناحية الوضوح والجودة الكود الأول أكثر وضوحا لأنه يوضح أن الحذف يتم بناء على أسماء الأعمدة، أما الكود الثاني أكثر اختصارا لكنه يعتمد على axis=1، مما قد يجعله أقل وضوحا للقارئ.
- 3 اجابة
- 
	- 1
- 
					
						
					
							  
 
 
- 
	الفرق بين الدالتين يعتمد على الغرض من استخدام كل منهما، حيث أن دالة drop تستخدم بشكل أساسي لحذف صفوف أو أعمدة محددة من الـ DataFrame بناء على أسمائها أو فهارسها، فيمكنك استخدامها لإزالة عمود معين أو صف معين عن طريق تحديد اسمه أو موقعه، و من جهة أخرى الدالة dropna مخصصة للتعامل مع البيانات المفقودة في الـ DataFrame، حيث تقوم بحذف الصفوف أو الأعمدة التي تحتوي على قيم مفقودة، إما إذا كانت تحتوي على أي قيمة مفقودة أو إذا كانت جميع قيمها مفقودة.
- 
	هذه الأدوات ليست سوى وسائل لتعزيز القدرات البشرية وليس استبدالها بالكامل، فالذكاء الاصطناعي يمكنه أتمتة المهام الروتينية وتحليل البيانات بشكل أسرع، لكنه لا يزال بحاجة إلى التوجيه البشري لفهم السياق، واتخاذ القرارات الإستراتيجية، وطرح الأسئلة الصحيحة، بالنسبة لك إذا كنت شغوفا بمجال البيانات والذكاء الاصطناعي، فلا يجب أن تتوقف عن التعلم والتطور، ركز على تطوير مهاراتك في مجالات مثل التفكير النقدي، وفهم الأعمال التي يصعب على الآلات تقليدها، و أيضا استخدم هذه الأدوات الجديدة لتعزيز عملك بدلا من اعتبارها تهديدا.
- 
	في سياق تعلم الآلة من غير الطبيعي أن يكون لديك تباين كبير في عدد الأعمدة بين train_labels و validation_labels، حيث عادة ما يكون لكل من بيانات التدريب والتحقق نفس البنية، حيث يجب أن يكون عدد الأعمدة متسقا بينهما، إذا كان لديك 5 أعمدة في train_labels و 123 عمودا في validation_labels، فهذا يشير إلى وجود خطأ في عملية تحضير البيانات أو تقسيمها. من المهم التحقق من الخطوات التي تم اتباعها لتقسيم البيانات وتكوين التسميات فقد يكون السبب في هذا التباين هو خطأ في الترميز أو في عملية التقسيم، إذا كنت تستخدم ترميز one-hot encoding للتسميات، فتأكد من أنه تم تطبيقه بشكل صحيح على كل من بيانات التدريب والتحقق. و أيضا تأكد من أن البيانات تم تقسيمها بشكل صحيح قبل تطبيق أي تحويلات عليها، و إذا كانت المشكلة مستمرة قد تحتاج إلى مراجعة الكود الخاص بتحضير البيانات وإعادة فحص الخطوات التي تم اتباعها لتجنب أي أخطاء في المستقبل.
- 5 اجابة
- 
	- 1
- 
					
						
					
							  
 
 
- 
	يعتبر الترميز باستخدام One-hot Encoding طريقة بسيطة لتحويل المتغيرات الفئوية إلى تمثيل عددي يمكن للحواسيب التعامل معه بسهولة ففي هذه الطريقة يتم تحويل كل فئة إلى متجه ثنائي حيث يكون عنصر واحد فقط مساويا للرقم 1 مما يدل على وجود تلك الفئة بينما تكون بقية العناصر مساوية للصفر. وبهذا ينشَأ بُعد منفصل لكل فئة فريدة، مما يؤدي إلى الحصول على متجهات عالية الأبعاد ومتفرقة (Sparse Vectors) في حال زيادة عدد الفئات ومن الجدير بالذكر أن هذه الطريقة لا تظهر أي تشابه أو علاقة دلالية بين الفئات، إذ أن جميع المتجهات تكون متعامدة مع بعضها البعض، مما يعني أنه لا يمكن استنتاج أي علاقة بين الفئات اعتمادا على هذه التمثيلات لذلك تعتبر هذه التقنية ملائمة للمجموعات الصغيرة التي تحتوي على عدد محدود من الفئات فهي سهلة التطبيق وسريعة. ويمكنك الاطلاع من هنا على كيفية تطبيق One-Hot Encoding باستخدام مكتبة Sklearn: فبالرغم من أنه ينتج متجهات عالية الأبعاد لكنه لا يظهر أي علاقة بين الفئات في حين أنّ ال Embedding Layer يتعلم تمثيلا كثيفا ومنخفض الأبعاد إلا أنه يمكنه التقاط العلاقات الدلالية بين الفئات، مما يجعله أكثر كفاءة عند التعامل مع مجموعات بيانات كبيرة أو مفردات واسعة.
- 5 اجابة
- 
	- 1
- 
					
						
					
							  
 
 
- 
	يمكنك مراجعة مسارات الدورة، مميزاتها والدروس التي تتناولها من هنا، أين يمكنك تصفحها وتصفح العناوين التي ستتطرق إليها الدورة بشكل كامل يمكنك الوصول إلى معلومات أي دورة من خلال التوجه في أعلى هذه الصفحة، ثم تبويبة "دورات" اضغط عليها: ثم ستفتح لك صفحة جديدة تحتوي على بطاقات لجميع الدورات المتواجدة في الأكاديمية: قم بالضغط على "دورة الذكاء الاصطناعي" أو يمكنك الوصول إليها مباشرة من هنا: وإذا أردت تصفح مساراتها وعناوين الدروس يمكنك الوصول إليها من خلال صفحة الدورة من هنا: https://academy.hsoub.com/learn/artificial-intelligence/ وستلاحظ أن بعض الدروس داخل بعض المسارات هو مجاني ويمكن تصفحه بشكل عادي، مثلا في هذا المسار: تطبيقات عملية على نماذج الرؤية الحاسوبية ستجد أن الدرس السادس منه مختلف عن بقية الدروس فهو يظهر على شكل رابط يمكنك تصفحه، لاحظ: ويتم التطرق فيه إلى Fine Tuning وكيفية تعديل نماذج مدربة مسبقا لتتلاءم مع مجموعة بيانات جديدة يمكنك إلقاء نظرة عامة على هاته الدروس وفي حال أردت شراء الدورة يمكنك التواصل مع مركز مساعدة أكاديمية حاسوب فهم المخولون بالمسائل المالية. وفي حال اشتريتها ستلاحظ أن المسارات الأولى من بقية الدورات قد فتحت بالكامل لك، وهذه ميزة من مزايا دورات الأكاديمية، لتتيح لطلبتها إلقاء نظرة عامة عليها، فمثلا يمكنك دراسة أول مسار من دورة لغة بايثون، ثم العودة لتكملة دورة الذكاء الاصطناعي.
- 
	لاحظ أن هنالك عدم تطابق لحالة الأحرف في كلمة Department بين تعريف المسارات واستخدامها ففي ملف التوجيهات (Routes) المسارات معرفة بحرف كبير: Route::get('Department/create', [DepartmentController::class, 'create']); بينما في رابط الصفحة (index.blade.php) الرابط يستخدم حرف صغير: <a href="/department/create">إضافة قسم</a> وفي المتحكم نجد أن view يستخدم حرف صغير: return view('department.create'); فالمسارات حساسة لحالة الأحرف و /Department/create مختلف تماما عن /department/create وعندما تضغط على الرابط في صفحة index سيقوم المتصفح بإرسال طلب إلى /department/create (بحرف صغير) لكن Laravel يبحث عن مسار معرف باسم Department/create (بحرف كبير) ولا يجده فيعرض خطأ 404. لذا قم بتعديل جميع المسارات لتستخدم نفس حالة الأحرف والأفضل استخدام أحرف صغيرة للمسارات لأن هذا هو الأسلوب الشائع في Laravel: Route::get('department', [DepartmentController::class, 'index'])->name('department.index'); Route::get('department/create', [DepartmentController::class, 'create'])->name('department.create'); Route::post('department', [DepartmentController::class, 'store'])->name('department.store');
- 16 اجابة
- 
	- 1
- 
					
						
					
							  
 
 
- 
	مبادرة ممتازة، وهذا هو المطلوب من الطلبة بعد أخذهم للمفاهيم أن يقوموا بالتطبيق عليها من خلال أفكار ومسائل سواء من إبداعهم أو من خلال مواقع توفر مسائل برمجية مختلفة مثل LeetCode وCodewars وTopCoder بالإضافة إلى مواقع مثل HackerRank وGeeksforGeeks، إذ توفر هذه المصادر تحديات متنوعة تتراوح بين المستويات المتوسطة والمتقدمة. ولزيادة الإنتاجية وتحسين أسلوب الدراسة ينصح بتنظيم الوقت عبر وضع جدول دراسي منتظم ولكن أنصحك بعمل برنامج مرن خاص بك وفقا لمتطلباتك وظروفك الشخصية فلا يمكن أن أن تجد برنامجا مناسبا لك 100 بالمئة إلا إذا كان من إعدادك الشخصي. يمكنك الاستزادة أكثر من هذه المصادر:
- 
	هذه الرسالة تعني أن الكود يحاول استخدام ثابت باسم sql108 دون تعريفه أو بدون وضعه بين علامات اقتباس، مما يجعل PHP يعتبرها اسم ثابت وليس نصا فإذا كان المقصود هو استخدام النص "sql108"، فيجب وضعه بين علامات اقتباس مزدوجة أو مفردة أي "sql108" أو 'sql108' أما إذا كان من المفترض أن يكون ثابتا معرفا سابقا مثلا عبر define("sql108", "قيمة معينة"))، فتأكد من تعريفه قبل استخدامه. لذا لحل المشكلة افتح ملف classes/SystemSettings.php وتوجه إلى السطر 247 وتحقق من استخدام sql108 بدون علامات اقتباس إذا كان المقصود نصا، فقم بتعديل السطر ليصبح كالتالي: $variable = "sql108"; وإذا كنت تريد تعريف ثابت، فاستخدم: define("sql108", "القيمة المطلوبة"); مع تغيير أي إعدادات تابعة في الملف config.php بعد تطبيق هذه التعديلات، قم بحفظ الملف وإعادة تشغيل السكريبت.
- 4 اجابة
- 
	- 1
- 
					
						
					
							  
 
 
- 
	الدالة someCode() ليست دالة مدمجة في جافاسكربت، ولذلك يظهر الخطأ عند تنفيذ الكود. لحل هذه المشكلة يجب عليك إما تعريف هذه الدالة بنفسك قبل استخدامها، أو استبدالها بدالة موجودة بالفعل تستطيع معالجة التواريخ مثل استخدام كائن Date مع دوال مناسبة لحساب العمر. الكتاب ربما يفترض أنك ستقوم بتعريف هذه الدالة كجزء من التمرين أو أنها موجودة في جزء آخر لم تنسخه.
- 
	الدروس النظرية هدفها شرح المفاهيم وتبيان كيفية تطبيقها عمليا، فإذا كنت تطبق مع المدرب وتتابع الشروحات بشكل جيد فأنت في المسار الصحيح، والامتحان له شروط يجب تحقيقها قبل التقدم وهي: إتمام أربعة مسارات تعليمية على الأقل التطبيق العملي مع المدرب، والاحتفاظ بالمشاريع العملية الناتجة لإرسالها للمراجعة رفع المشاريع على حسابك على GitHub أولًا بأول لمشاركتها معنا وأما خطوات الامتحان فهي كالتالي: التواصل مع مركز المساعدة: أخبرنا برغبتك باجراء الامتحان مع تزويدنا بروابط مشاريعك التي طبقتها أثناء الدورة. يجب أن تكون قد طبقت المشاريع مع المدرب أثناء الدورة، ولا يمكن اجراء امتحان بمشاهدة المحتوى فقط. إجراء محادثة صوتية: سيحدد لك موعد لاجراء محادثة صوتية لمدة 30 دقيقة يطرح المدرب فيها أسئلة متعلقة بالدورة ويناقش معك ما نفذته خلالها. مشروع التخرج سيحدد لك المدرب مشروعًا مرتبطًا بما تعلمته أثناء الدورة لتنفيذه خلال فترة محددة تتراوح بين أسبوع الى أسبوعين. مراجعة المشروع والتخرج سيراجع المدرب المشروع الذي أنجزته، وإن سارت جميع الخطوات السابقة بشكل صحيح، ستتخرج وتحصل على الشهادة أو يرشدك المدرّب لأماكن القصور ويطلب منك تداركها ثم التواصل معنا من جديد.
- 
	يمكنك البحث عن مفهوم اختبار البرمجيات أو الاختبارات البرمجية (Software Testing) وهو مصطلح يطلق على العمليات التي تستهدف تقييم أي تطبيق برمجي تم تطويره من حيث الأداء والوظائف التي يؤديها وصمم من أجلها والغرض هنا هو التأكد من ومعرفة ما إذا كانت هذه البرمجيات تفي بالأغراض والمتطلبات المستهدفة منها أم لا. وبناء عليه يمكننا تقسيم الأهداف من إجراء الاختبارات البرمجية إلى جزأين رئيسيين وهما: Validation: هل التطبيق الذي قمنا بتطويره هو المنتج المستهدف والصحيح؟ Verification: هل يؤدي العنصر x ما وُضع من أجله؟ وقد يكون x جزء من ال code أو واحد من المتطلبات أو نموذج وهكذا. كما يمكنك الاطلاع أكثر عليها من هنا:
- 3 اجابة
- 
	- 1
- 
					
						
					
							  
 
 
- 
	وعليكم السلام ورحمة الله، علم الأحياء الحاسوبي أو المعلوماتية الحيوية هو مجال علمي متعدد التخصصات يجمع بين علوم الأحياء، وعلوم الحاسب، والرياضيات التطبيقية، والإحصاء لتحليل البيانات البيولوجية الكبيرة مثل تسلسلات (DNA) و (RNA) والبروتينات. يقوم الباحثون في هذا المجال بتطوير وتطبيق خوارزميات ونماذج رياضية لتحليل البيانات وفهم الظواهر البيولوجية، مما يساعد في الكشف عن آليات الأمراض، وتطور الكائنات الحية، وتصميم الأدوية، وتحسين الزراعة والبيئة. وهو تخصص بحد ذاته يمكن دراسته في الجامعات والمعاهد المتخصصة.
- 6 اجابة
- 
	- 1
- 
					
						
					
							  
 
 
- 
	وعليكم السلام ورحمة الله، Google Authenticator هو تطبيق للهاتف المحمول طورته شركة Google ويستخدم لإجراء عملية التحقق بخطوتين (2FA) بحيث يقوم التطبيق بإنشاء رموز تحقق مؤقتة عادة ما تكون مكونة من 6 إلى 8 أرقام تعتمد على الوقت أو على عداد معيّن، وعند إعداد الحساب، يتم تزويد المستخدم بمفتاح سري أو رمز QR يخزن في التطبيق، ومن ثم يستخدم هذا المفتاح لتوليد الرموز التي يجب إدخالها بعد كلمة المرور أثناء عملية تسجيل الدخول. لتثبيته يمكنك متابعة هذه الخطوات من الموقع الرسمي من هنا: https://support.google.com/accounts/answer/1066447?hl=ar&co=GENIE.Platform%3DAndroid
- 3 اجابة
- 
	- 1
- 
					
						
					
							  
 
 
- 
	وعليكم السلام ورحمة الله، هناك طريقتان مختلفتان لإعادة تعيين كلمة المرور إذا كنت قد سجلت الدخول بالفعل: قم بزيارة صفحة الإعدادات (Settings) ومرّر حتى تصل إلى قسم كلمة المرور (Password). أدخل أولا كلمة المرور الحالية، ومن ثم أدخل كلمة المرور الجديدة مرتين. انقر فوق تغيير كلمة المرور (Change Password). أما إذا كنت قد سجلت الخروج يمكنك زيارة صفحة إعادة تعيين كلمة المرور (Reset Password) بعدها قم بإدخال عنوان البريد الإلكتروني المُستخدم في حساب Coursera الخاص بك وسترسل رسالة بريد إلكتروني لتغير كلمة مرور حساب Coursera وإذا لم تتلقّ رسالة بريد إلكتروني بعد بضع دقائق، فتحقق من مجلد البريد العشوائي الخاص بك. على العموم يمكنك معرفة الخطوات لعمل ذلك ومتابعتها من خلال موقع coursera نفسه من خلال هذا الرابط: https://www.coursera.support/s/article/208279586-Reset-your-Coursera-password?language=ar
- 7 اجابة
- 
	- 1
- 
					
						
					
							  
 
 
- 
	أرجو إضافة: C:\Users\Wajid\Desktop\New folder\flutter\bin إلى متغير PATH في نظامك ثم نفذ الأمر: sdkmanager --install "cmdline-tools;latest" ولحل مشكلة ترخيص Android: flutter doctor --android-licenses وفي حال استمر المشكل أرجو إرسال لقطة شاشة كاملة للخطأ الظاهر بعد تنفيذ أمر flutter doctor أو انسخ والصق هنا ما يظهر لك.
- 
	تأكد من تثبيت Flutter SDK بشكل صحيح وإضافته إلى متغيرات النظام (PATH) وتأكد من تثبيت إضافة Flutter في VS Code ثم جرّب تشغيل الأوامر التالية في terminal: flutter doctor ثم هذا الأمر لتحديث المكتبات: flutter pub get بالنسبة للمشكلة الثانية افتح Android Studio ثم اذهب إلى: Settings/Preferences > Appearance & Behavior > System Settings > Android SDK وتأكد من تثبيت SDK Tools المناسبة وخاصة "Android SDK Command-line Tools" في حالة استمرار الخطأ أرسل لقطة شاشة تبين رسالة الخطأ. وفي حال كان سؤالك متعلقا بدرس ما في إخدى الدورات أرجو منك طرحه أسفل الدرس في صندوق التعليقات المخصص لذلك.
- 
	ليس كذلك فمفهوم ال Bias وال Variance لا يقتصران على نماذج التصنيف فقط، بل ينطبقان على جميع نماذج التعلم الآلي، بما في ذلك نماذج الانحدار وغيرها. Bias: يشير إلى التبسيط المفرط للنموذج بحيث لا يستطيع التقاط تعقيدات البيانات. Variance: يشير إلى حساسية النموذج لتغير بيانات التدريب مما يؤدي إلى تباين في الأداء عند استخدام بيانات جديدة. وتحقيق توازن بينهما أمر أساسي لضمان تعميم النموذج بشكل جيد على بيانات غير مرئية.
- 4 اجابة
- 
	- 1
- 
					
						
					
							  
 
 
- 
	السلام عليكم ورحمة الله، في حال كان سؤالك متعلقا بأحد الدروس في إحدى الدورات من فضلك قم بنقل سؤالك هناك أسفل الدرس أين ستجد صندوقا للتعليقات مثل الذي تراه هنا، يمكنك إضافته هناك لمساعدتك بشكل أفضل. يمكنك محاولة إنشاء نظام الموافقة على الطلبات في Laravel عبر تنفيذ الخطوات التالية بداية بتحديد الأدوار التي لديك باستخدام حزمة مثل spatie/laravel-permission لتعيين الأدوار ولتكن: user، small admin و big admin وعلى حسب قاعدة البيانات لديك يمكنك إنشاء جدول للطلبات (orders) يحتوي على حقول كهاته: معرف المستخدم (user_id) ومعرف المنتج (product_id). حالة الطلب (status) بقيم مثل: pending: عند تقديم الطلب من المستخدم. pending_big_admin: بعد موافقة المسؤول الصغير. approved: بعد موافقة المسؤول الكبير. declined: في حال رفض الطلب. حقول لتخزين معرف المسؤول الذي قام بالموافقة (small_admin_id وbig_admin_id). في هذه الحالة عند ضغط المستخدم على "إضافة إلى العربة"، سينشئ سجل طلب جديد بحالة pending، وترسل إشعارا للمسؤول الصغير، فإذا وافق، نغير حالة الطلب إلى pending_big_admin وسجل معرف المسؤول الصغير، ثم أرسل إشعارا للمسؤول الكبير فإذا رفض تغيّر الحالة إلى declined وتبلغ المستخدم برفض الطلب. وعند استلام الطلب بحالة pending_big_admin إذا وافق تغيّر الحالة إلى approved وتنفذ الطلب مثلا إضافة المنتج إلى العربة أو متابعة عملية الشراء وإبلاغ المستخدم بالموافقة لكن إذا رفض تغيّر الحالة إلى declined وتبلغ المستخدم برفض الطلب أيضا. وبالطبع يمكن استخدام Laravel Notifications لإرسال الإشعارات سواء عبر البريد الإلكتروني أو الإشعارات داخل التطبيق لكل من المسؤولين والمستخدم ويمكن تنظيم المسارات (Routes) والتحكم في الوصول من خلال إنشاء مسارات منفصلة لكل مستخدم لديك واستخدام middleware للتحقق من صلاحيات كل دور قبل إرسال الطلبات.
- 
	قم بحذف ذاكرة التخزين المؤقت وأعِد بناء المشروع من الصفر: flutter clean && flutter pub cache repair && flutter pub get ثم اختبر التطبيق في وضع التصحيح (Debug) لمعرفة الخطأ الدقيق: flutter run -v هذا الأمر سيظهر التفاصيل الكاملة للأخطاء في الطرفية (Terminal) أثناء التشغيل. وإذا كان التطبيق يعمل في ال Debug ولا يعمل في ال Release: flutter build apk --no-shrink
- 
	يمكن تحقيق ذلك بعدة طرق لكن يجب أن تفهم كيفية عمل ذلك، لذا سأوضح لك الطريقة ويمكنك محاولة حلّ المشكلة بنفسك وفي حال واجهتك أيّ صعوبة سأكون معك خطوة بخطوة لحلّها، أولا ستحتاج لتحديد المدخلات فأنت تحتاج إلى متغير يحمل عدد الأيام المراد إضافتها وتحتاج إلى الحصول على تاريخ اليوم الحالي كنقطة بداية. في JavaScript هناك كائن Date الذي يمكنك استخدامه للتعامل مع التواريخ فهذا الكائن يوفر دوال للحصول على التاريخ الحالي وتعديل التواريخ. لذا ستقوم بإنشاء تمثيل للتاريخ الحالي وإنشاء تمثيل جديد للتاريخ المستقبلي ثم تطبيق عملية إضافة عدد الأيام إلى التاريخ الأصلي هكذا: const today = new Date(); const futureDate = new Date(); ثم تقوم بإضافة عدد الأيام إلى التاريخ المستقبلي: futureDate.setDate(today.getDate() + numberOfDays); لاحظ هنا أنّ المتغير numberOfDays هو المتغير الذي من المفترض أن يحمل عدد الأيام التي تحدثت عنها وفي النهاية تعرض النتائج.

 
         
                 
                     
                     
                    