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

ياسر مسكين

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

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

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

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

    2

كل منشورات العضو ياسر مسكين

  1. يمرّ المبرمج بعدة مراحل وخطوات أساسية للوصول إلى برمجة نفس التصميم الموجود في Adobe Xd، بداية بتصدير الأصول كالصور، الأيقونات، والخطوط المستخدمة في التصميم ويمكنه كذلك تصدير الأصول كصور PNG أو SVG أو استخدام ميزات CSS و HTML المدمجة في XD للحصول على بعض العناصر القابلة للاستخدام مباشرة. ثم إنشاء هيكل المشروع من خلال إنشاء مشروع جديد باستخدام الأدوات المناسبة فإذا كان يعمل على موقع ويب مثلا، يمكنه البدء بإنشاء ملفات HTML و CSS و JavaScript وهكذا. أما لو كنت تستخدم Figma فيمكنك الاستفادة من ميزة Dev Mode وإضافة Figma for VS Code يمكنك الاطلاع أكثر من هنا:
  2. ستجد في أسفل فيديو الدرس في الأسفل تماما صندوق تعليقات مخصص لطرح الأسئلة المتعلقة بالدورات، أرجو طرح الأسئلة هناك وليس هنا في قسم الأسئلة البرمجية حيث نطرح هنا فقط الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بالشكل المناسب.
  3. بداية htmx هو إطار عمل واعد يقدم طريقة جديدة ومبتكرة لإنشاء تطبيقات ويب ديناميكية، من مميزاته أنه يركز على تبسيط عملية تحديث DOM، مما يجعله خيارا جذابا للمطورين الذين يرغبون في تجنب تعقيدات JavaScript التقليدية ولكنه ليس بالإطار الذي يمكن أن يستبدل أو يعوض أطر عمل كرياكت أو أطر عمل جافا سكريبت المختلفة. فمن ناحية تحليلية يمكن أن نعدّ هذه النقاط: يوفر htmx طريقة سهلة لإنشاء تطبيقات ويب ديناميكية دون الحاجة إلى كتابة الكثير من JavaScript لكن حتى مع استخدام htmx، ستحتاج إلى فهم أسس JavaScript و HTML و CSS. فـ htmx هو أداة تساعدك على بناء التطبيقات بشكل أسرع وأسهل، لكنه لا يغني عن فهمك للويب. من ناحية التركيز على HTML فإن htmx هو خيار ممتاز ويقدم أداء جيدا مقارنة بالعديد من الإطارات الأخرى لكن ومقارنة بالإطارات الشائعة مثل React و Vue، فإن نظام htmx البيئي أصغر، مما يعني أنك قد تجد موارد أقل لمساعدتك في حل المشكلات وقد لا يكون كافيا لتطبيقات معقدة خاصة إذا كنت تخطط لإنشاء تطبيقات ويب كبيرة ومعقدة، فقد تحتاج إلى استخدام إطار عمل أكثر قوة. فبما أنك ترغب في التخصص في الباك إند فأنصحك بالتركيز على تعلم لغة برمجة قوية مثل Node.js، بالإضافة إلى قاعدة بيانات مثل PostgreSQL أو MongoDB كما أن فهم مفاهيم مثل الأمان والتصميم المعماري للتطبيقات سيكون مفيدا للغاية لتحصيل هذا المسار.
  4. ستجد في أسفل فيديو الدرس في الأسفل تماما صندوق تعليقات مخصص لطرح الأسئلة المتعلقة بالدورات، أرجو طرح الأسئلة هناك وليس هنا في قسم الأسئلة البرمجية حيث نطرح هنا فقط الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بالشكل المناسب.
  5. بصراحة مجال البرمجة من المجالات التي على الأغلب يكون الحافز القوي للاستمرار فيها هو حبّ التعلم والرغبة في البرمجة، وليس الحصول على عمل، فأغلب من يفكّر في الحصول على العمل والحصول على الأموال لا يُكمل المسار ولا يصل لتحقيق مبتغاه. لذا نصيحتي هي أن تركز على التعلم، والوظيفة والراتب المرتفع سيكون تحصيل حاصل بالنسبة لك بإذن الله في حال كان تعلمك ممتازا وصرت خبيرا في مجال محدّد إضافة إلى الشهادة الجامعية. لا أقول لك أنّ من يفكر في الحصول على عمل هو مخطئ، بالعكس قد يكون ذلك حافزا للبدء لكن المشكل كلها في الاستمرارية فيما بعد. أكاديمية حسوب توفّر العديد من الدورات ولها آلية معينة في تقديم الشهادات بعد تحصيل الطالب لما تعلّمه ويتم اختباره في مكالمة صوتية لاختبار ما تعلّمه، وبعد الحصول على الشهادة سيتم التكفل به من خلال تهيئة البروفيل الخاص به ونبذته التعريفية ويتم تكوينه كي يستطيع التقدّم للعمل ضمن شركات مرموقة. فبما أنك قد أنهيت السنة الثانية من تعليمك، فمن المؤكد أنك قد أخذت المفاهيم الأساسية للبرمجة والآن يمكنك اختيار أيّ مجال يعتبر حلما لك أو هدفا ترغب في الوصول إليه: الذكاء الصناعي تطوير التطبيقات باستخدام بايثون تطوير التطبيقات باستخدام جافا سكريبت تطوير واجهات المستخدم. كل هاته الدورات تعتبر مجالات واسعة ومتعمقة في حدّ ذاتها، لذا فعلى المبرمج أن يختار مجالا يمكن أن يبدع فيه ويتخصّص فيه، فالمستقبل اليوم للتخصص، التشتت الذي تواجهه، مررنا به في السابق، الأمر لا يحتاج الكثير من اللفّ والدوران بقدر ما يحتاج القليل من المنطق، فيمكنك التفكير في الوظائف التي يمكنك العمل بها من خلال هذه المجالات، والأكيد أنّ لكلّ فرد منّا حلما أو وظيفة هي الأقرب إلى قلبه. أما إن كنت تنظر إلى المجالات المطلوبة كثيرا، فكلها اليوم تعتبر مجالات مهمة، لكن يمكنك اختيار مجال تتخصص فيه، ثم لاحقا يمكنك التوسع نحو مجالات أخرى، فاليوم توجد تطبيقات ويب وموبايل يتم دمج الذكاء الاصطناعي فيها، ويتم الاستعانة بمطوري واجهات المستخدم للتصميم وتجربة المستخدم والعديد من الأمور. لذا فاختيار الدورة المناسبة ليس بالأمر الصعب، فقط فكر في الوظيفة التي ترغب في تقلّدها، ثم انطلق نحو رحلة التعلم. كما أنّ اختيار أي دورة وشراءها، سيتيح لك الوصول إلى المسارات الأولى من كل الدورات الموجودة في الأكاديمية، ويمكنك الاستفسار أكثر من خلال التواصل مع مركز المساعدة لأكاديمية حسوب.
  6. حاليا، هذا الأمر لا يوجد على الأكاديمية، لكن توجد عدة بدائل يمكن أن تفيدك للتحصيل الجيد أثناء متابعة الدورات، ففضلا عن المحتوى المرئي والمشاريع والمستودعات الخاصة بالمشاريع فستجد ثلة من المدربين المتاحين في أغلب الأوقات، سيرافقونك في أي مشكلة تواجهها في أي درس استصعب عليك فهمه. كما يمكنك الاستفادة من محتوى موسوعة حسوب التي تعجّ بالدروس والشروحات التفصيلية من هنا: موسوعة حسوب. كما توجد قناة أكاديمية حسوب على اليوتيوب أين يتم وضع فيها سلاسل من الشروحات ويتم تحديثها دوريا أيضا، من هنا: قناة الأكاديمية على اليوتيوب.
  7. أرجو إرفاق ملف ال index.html الخاص بك لتصفحه، للتأكد من كيفية كتابتك للرابط فعادة ما يكون هذا الخطأ ناجما عن خطأ إملائي.
  8. رسالة الخطأ تشير إلى فشل في إنشاء ملف keystore في المسار المحدد التالي: "/storage/emulated/0/AppProjects/release_key.jks" لذا فالمشكلة يبدو أنها تكمن في المسار، بدلا من استخدام المسار الافتراضي، جرب تحديد مسار مختلف يكون أكثر قابلية للوصول، مثل مجلد التنزيلات يمكن ذلك من خلال الذهاب إلى شاشة "Create keystore" والتعديل على حقل "Keystore file:" مثلا: "/storage/emulated/0/Download/my_keystore.jks" ثم أكمل بقية المعلومات المطلوبة كما هو موضح في الصورة وانقر على زر "CREATE KEYSTORE" مرة أخرى. هذا التغيير في المسار قد يحل المشكلة لأنه يستخدم مجلد (التنزيلات) وعادة ما يكون متاحا للتطبيقات للكتابة فيه كما يتجنب أي قيود محتملة على الكتابة في مجلد المشروع الأصلي. إذا نجحت هذه الطريقة، يمكنك استخدام ملف keystore الجديد لتوقيع تطبيقك وإعداده للنشر أما إذا استمرت المشكلة حتى بعد تغيير المسار، فقد تكون هناك حاجة لمراجعة إعدادات الأمان على جهازك أو استخدام جهاز كمبيوتر لإنشاء ملف keystore ونقله إلى هاتفك.
  9. عمل ممتاز، لكن من المحتمل أن يواجه الكود بعض التحديات في البداية، حيث إن عمليات التشغيل التلقائي للمواقع تتطلب خبرة وفهما عميقا لكيفية تفاعل المواقع مع المستخدمين فبرمجة بوت يقوم بعمليات شراء تلقائية من مواقع الويب تتطلب معرفة تقنية عميقة وتفاصيل دقيقة لذلك، ينصح بأن تبدأ بتجربة الكود كبرنامج مستقل قبل أن تضيفه إلى بوت تلغرام. يمكنك الاطلاع أكثر من هنا:
  10. لتفادي هذا الأمر يجب استخدام خادم بريد موثوق به بحيث يكون معدّا بشكل صحيح وأفضل الطرق من خلال إعداد سجلات SPF و DKIM و DMARC ففائدتها هي كالتالي: SPF: يساعد في التحقق من أن الخادم المُرسل مصرح له بإرسال البريد. DKIM: يضيف توقيعا رقميا للتحقق من صحة الرسائل. DMARC: يحدد كيفية التعامل مع الرسائل التي تفشل في اختبارات SPF أو DKIM. فتكوين سجلات DNS بشكل صحيح ضروري لمصادقة بريدك الإلكتروني يمكنك التسجيل في SPF (Sender Policy Framework) وDKIM (DomainKeys Identified Mail) وDMARC (Domain-based Message Authentication, Reporting, and Conformance) كي تساعد في تحسين مصداقية بريدك الإلكتروني. كما يجب أن تتجنب العناوين النصية العشوائية، وأن تقلل من الروابط. كما أنصح باختبار البريد الإلكتروني يمكنك استخدام أدوات مثل Mail Tester لتقييم رسائل البريد الإلكتروني الخاصة بك ومعرفة الأسباب التي قد تؤدي إلى تصنيفها كبريد غير مرغوب فيه.
  11. بناء على الشيفرة خاصتك، ففي ملف generateToken.js، تقوم بتعيين اسم الـ cookie كـ 'token' هنا: response.cookies.set('token', token, { }); لكن في ملف protect.js، تحاول الحصول على الـ cookie باسم 'jwt': const token = cookieStore.get('jwt')?.value; لذا يجب أن يكون اسم الـ cookie متطابقاً في كلا الموضعين. كما أني لا أرى أنك قمت باستيراد مكتبة jsonwebtoken في ملف protect.js لذا يجب إضافة هذا الاستيراد: import jwt from 'jsonwebtoken'; أما فيما يخص كيفية التعامل مع الـ response في ملف generateToken.js ففي الدالة setTokenCookie، تستخدم response.cookies.set، لكن في Next.js 14، يجب استخدام cookies() من next/headers كالتالي: import { cookies } from 'next/headers'; const setTokenCookie = (token) => { cookies().set('token', token, { httpOnly: true, secure: process.env.NODE_ENV !== 'development', sameSite: 'strict', maxAge: 60*60*24 }); } أما في ملف login/route.js، يجب تعديل كيفية استخدام setTokenCookie إلى: if (user) { const token = generateToken(user._id); setTokenCookie(token); return NextResponse.json({ user: user.email }, { status: 200 }); } else { return new NextResponse("Failed to create user", { status: 500 }); } واحرص على أن تكون قمت بتعريف ال JWT_SECRET في ملف .env، أرجو تصحيح الأخطاء التالية مع إرفاق صورة للخطأ الذي تواجهه في حالة استمرار المشكلة.
  12. وعليكم السلام، بعد الانتهاء من الدورة بطبيعة الحال، يمكنك أن تبحث عن عمل من خلال مواقع العمل الحر المختلفة مثل مستقل وخمسات، يمكنك بناء سيرة ذاتية قوية كما يمكنك الحصول على كما ستحصل على شهادة مقدمة من الأكاديمية تفيد بأنك أتممت الدورة وأنهيت كل مشاريعها، بالإضافة إلى وصول مدى الحياة لمحتوى الدورة حتى بعد عمل مختلف التحديثات، لكن للحصول عليها سيتوجب عليك التواصل مع مركز مساعدة حسوب لحجز موعد للاختبار وبعد اجتيازك له ونجاحك فيه يمكنك الحصول على الشهادة وستحصل أيضا على إرشادات من مختصين في كيفية تجهيز سيرة ذاتية CV وبناء صفحتك الشخصية على مختلف مواقع العمل الحر.
  13. نعم فال Feature Extraction يعتبر من أهم الأجزاء في بناء نماذج تعلم الآلة،كونه يحسّن أداء النموذج فعبر اختيار الميزات المناسبة يمكن أن يزيد من دقة النموذج وكفاءته كما أنه يقلل من تعقيد النموذج باختيار الميزات الأكثر أهمية فيمكن تقليل أبعاد البيانات وتبسيط النموذج. كما أنه يساعد في فهم البيانات فلو تبحث قليلا ستجد أنه يوفر نظرة ثاقبة حول العوامل الأكثر تأثيرا في المشكلة بحذ ذاتها وفيما يتعلق بكون استخراج الميزات إبداعا وتفكيرا خارج الصندوق، فهذا صحيح إلى حد كبير لكونه يتطلب فهما عميقا للمشكلة والبيانات التي يعمل عليها، فغالبا ما يحتاج إلى تجربة أفكار جديدة ومبتكرة لتمثيل البيانات ويمكن أن يشمل دمج معرفة المجال مع تقنيات تحليل البيانات. كما أنه ليس الوحيد فهناك أيضا تقنيات آلية لاستخراج الميزات، مثل تحليل المكونات الرئيسية (PCA) والشبكات العصبية العميقة، والتي يمكن أن تكون فعالة في بعض الحالات.
  14. وعليكم السلام، في الحقيقة FastAPI، Django، و Flask هي كلها إطارات عمل لبناء تطبيقات الويب باستخدام لغة بايثون، ولكن لكل منها نقاط قوة وضعف تجعلها مناسبة لمشاريع مختلفة ولكن لا يوجد إطار عمل "أفضل" بشكل مطلق، فالاختيار يعتمد على متطلبات المشروع الخاص بك من خلال فهم نقاط القوة والضعف لكل إطار، يمكنك حينها اتخاذ القرار الصحيح. فمثلا Django يعتبر مثاليا للمشاريع الكبيرة والمعقدة التي تتطلب بنية قوية وتنظيما جيدا، فهو الخيار الأمثل لتطوير مواقع ويب كاملة الميزات مثل مواقع التجارة الإلكترونية أو الشبكات الاجتماعية. أما إطار العمل الأنسب لعرض نماذج الذكاء الاصطناعي فهو FastAPI ويعتبر الخيار الأفضل حاليا لعرض نماذج الذكاء الاصطناعي بفضل الأداء العالي الذي يقدمه فهو مهم جدا لتقديم استجابات سريعة من النموذج كما يتم تفضيله لسهولة بناء ال APIs عليه فيمكن لـ FastAPI توليد وثائق API تلقائيا مما يسهل دمج النموذج مع واجهة المستخدم بالاضافة إلى التكامل مع أدوات الذكاء الاصطناعي كونه يدعم العديد من أدوات الذكاء الاصطناعي مثل TensorFlow و PyTorch. كما أن نماذج اللغة الطبيعية لا "تتعلم" فلغات البرمجة بالمعنى التقليدي هي مدربة على كميات هائلة من النصوص، ويمكنها توليد نصوص تشبه النصوص التي تدرب عليهاـ هذا يعني أنه يمكنها توليد أكواد HTML, CSS, و JavaScript، ولكن هذا الكود قد لا يكون دائما صحيحا أو فعالا.
  15. لا شكّ أنه يوجد فرق بين تطوير المواقع والتطبيقات وتصميمها، فتصميم المواقع يركز على المظهر الخارجي والتجربة المرئية للموقع، كما يشمل تخطيط الصفحات، اختيار الألوان، الخطوط، وتصميم واجهة المستخدم (UI) ويهتم بتحسين تجربة المستخدم (UX) وسهولة الاستخدام. أما تطوير المواقع (Web Development) والتطبيقات وغيرها فيتعلق ببناء وبرمجة الموقع فعليا من خلال كتابة الأكواد باستخدام لغات مثل HTML, CSS, JavaScript, PHP, Python وإنشاء الوظائف والميزات التفاعلية للموقع ويشمل تطوير الواجهة الأمامية (Front-end) والخلفية (Back-end) للموقع. وبناء أي برنامج (سواء ويب أو موبايل أو ذكاء اصطناعي) يتضمن كلا من التصميم والتطوير، ولكن بمفهوم أوسع: التصميم هنا يشمل تخطيط هيكل البرنامج وواجهته وتجربة المستخدم. التطوير يشمل تنفيذ هذا التصميم من خلال البرمجة الفعلية. أما علاقة تصميم البرمجيات (Software Design) وهندسة البرمجيات (Software Architecture) بهذا الأمر فإن تصميم البرمجيات يركز على تصميم المكونات الداخلية للبرنامج وكيفية تفاعلها كما يشمل تصميم الخوارزميات وهياكل البيانات والوحدات البرمجية أما هندسة البرمجيات فتهتم بالهيكل العام للنظام على مستوى أعلى من خلال تحديد الأنماط والتقنيات المستخدمة في بناء البرنامج وتضع الأساس لكيفية تنظيم وتفاعل مختلف أجزاء البرنامج. باختصار، تصميم وتطوير المواقع هما جزء من العملية الأكبر لتصميم وهندسة البرمجيات، حيث تطبق مبادئ التصميم والهندسة على نطاق أوسع يشمل جميع أنواع البرامج.
  16. يمكنني شرح الكيفية والطريقة لمساعدتك للوصول لحل لما تريده. أولا نبدأ بتهيئة قاعدة البيانات خاصتنا، ففي حالة لم تكن لديك قم بإنشاء قاعدة بيانات جديدة (مثلا باسم school) ثم أنشئ جدول للطلبة فليكن students وليحتوي على الأعمدة اللازمة مثل id, name, email الخاص بكل طالب. الخطوة التالية هي إنشاء صفحة عرض بيانات الطلبة، تنشئ ملف PHP جديد وليكن students.php وفي هذا الملف، احرص على أن يكون هناك اتصال بقاعدة البيانات واسترجاع لبيانات الطلبة ويمكن استخدام قالب HTML بسيط لعرض البيانات في جدول ولا تنسى إضافة زر للانتقال إلى صفحة إضافة طالب جديد. هنا يجب إنشاء ملف PHP جديد لمعالجة هذه النقطة وليكن مثلا add_student.php في هذا الملف، أنشئ نموذج HTML يتيح للمستخدمين إدخال اسم الطالب والبريد الإلكتروني وحدد ليتم إرساله إلى ملف PHP آخر لمعالجة البيانات insert_student.php. ولو تلاحظ هنا فستجد أن كل ملف مترابط مع الآخر، فالآن سنحتاج لانشاء ملف آخر لمعالجة بيانات النموذج لتسمّيه مثلا insert_student.php في هذا الملف، احصل على بيانات الطالب من النموذج، واتصل بقاعدة البيانات، وأدخل البيانات في جدول الطلبة وبعد إدخالك للبيانات، يمكنك إعادة توجيه المستخدم إلى صفحة عرض البيانات أو عرض رسالة تأكيد. والأمر المهم هو أن يكون هنالك ترابط بين الصفحات ولضمان ذلك يجب إضافة الروابط اللازمة بين الصفحات والتأكد من أن زر "إضافة طالب جديد" في صفحة عرض بيانات الطلبة ينقل المستخدم إلى صفحة إضافة طالب جديد وأن نموذج إضافة طالب جديد يرسل البيانات إلى ملف المعالجة وهكذا.
  17. وعليكم السلام. أولا قبل أن تبدأ في كتابة الكود والخوض في البرمجة، عليك أن تقوم بتخطيط هيكل نظام إدارة المحتوى والثيمات وتحديد الميزات التي تريدها من: إدارة المستخدمين إدارة المقالات/الصفحات إدارة الثيمات إعدادات الموقع بعدها تأكد من أن لديك بيئة تطوير جاهزة مع PHP وMySQL يمكنك استخدام أدوات مثل XAMPP أو WAMP لتكوين الخادم محليا، أي أن تبدأ ببناء الواجهة الخلفية للنظام عبر إعداد اتصال قاعدة البيانات وإنشاء نماذج لإدارة المستخدمين والمقالات والثيمات لكن يجب أن يتضمن النظام واجهة إدارة للمسؤولين تمكنهم من إضافة وتعديل وحذف المستخدمين والمقالات وغيرها من الأمور الأساسية. فمثلا لتفعيل تعدد الثيمات، يمكن تخزين الثيم النشط في قاعدة البيانات واستدعائه عند تحميل الصفحة لاستخدام ملفات القوالب الخاصة به وهنا يجب تأمين النظام باستخدام تقنيات الحماية المناسبة مثل إدارة الجلسات الآمنة وحماية المدخلات. بعد إتمام التطوير، تختبر جميع الميزات وتتحقق من عملها بشكل صحيح ومن أمان النظام قبل نشره على خادم حقيقي ليكون متاحاً للمستخدمين. أنصحك بالاطلاع أكثر من هنا، ستجد العديد من المصادر التي ستنفعك بإذن الله:
  18. FastAPI يمكن اعتباره إطار عمل حديث وقوي لبناء تطبيقات الويب باستخدام لغة بايثون، أين يتميز بسرعته العالية وسهولة استخدامه، مما يجعله مناسبا للمطورين المبتدئين والمحترفين على حد سواء فهو يقوم بتبسيط عملية إنشاء واجهات برمجة التطبيقات (APIs) من خلال توفير ميزات مثل التوثيق التلقائي والتحقق من صحة البيانات بشكل تلقائي، كما أنه يدعم التطوير السريع وتساعد في بناء تطبيقات آمنة وقابلة للتوسع. وباختصار، FastAPI يجعل من السهل على المطورين إنشاء خدمات ويب قوية وفعالة بأقل جهد يمكن تصوره. من خصائصه أيضا أنه يستخدم نظام التحقق من أنواع البيانات لضمان سلامتها، ولهذا نراه يدعم مصادقة OAuth2 وJWT بشكل مدمج، أيضا هو غير متزامن، ولتبسيط المفهوم يمكن القول بأنه يدعم البرمجة غير المتزامنة باستخدام كل من async/await وآخر نقطة وهو أن هذا الإطار يتوافق مع معايير الويب ك OpenAPI (Swagger) وJSON Schema.
  19. يوجد أكثر من طريقة لرفع المشاريع على github لكن أولا يجب أن تقوم بإنشاء حساب على موقع غيتهاب من هنا: github.com بعد ذلك تقوم بتسجيل الدخول وستجد في الشريط العلوي علامة + تقوم بالضغط عليها وستظهر لك قائمة تختار منها إنشاء مستودع جديد: الأمر بسيط وسيكون سهلا في حالة اتباعك لهذه الخطوات الموضحة في هذه المقالة:
  20. وعليكم السلام، سأشرح لك كيفية استخدام هذه الواجهة لإعداد تطبيق Node.js الخاص بك لنبدأ بكل خانة على حدى: Node.js version: لاحظ أنه قد تم تحديد الإصدار 10.24.1 تلقائيا وهذا جيد إذا كان متوافقا مع مشروعك. Application mode: وهنا قد تم تعيينه على "Development" وهذا مناسب لأنك في مرحلة تطوير المشروع. Application root: هنا يجب عليك إدخال المسار الفعلي لمجلد مشروعك، بما أنّ اسم المجلد "app"، فقد يكون المسار مثل "/home/username/app" أو "C:\Users\username\app" حسب نظام التشغيل لذا قم بملئه على حسب ما لديك. Application startup file: هنا يجب تحديد الملف الرئيسي للتطبيق، عادة ما يكون "app.js" أو "index.js". Environment variables: يمكنك إضافة أي متغيرات بيئية ضرورية لمشروعك هنا. والغرض من المتغيرات البيئية هو أنها تستخدم لتخزين معلومات حساسة مثل كلمات المرور ومفاتيح API وتساعد في تكوين التطبيق لبيئات مختلفة ك (التطوير، الاختبار، الإنتاج) وتسمح بتغيير سلوك التطبيق دون تعديل الكود وهذه أمثلة عنها: PORT: لتحديد المنفذ الذي سيعمل عليه التطبيق. DATABASE_URL: لتخزين رابط قاعدة البيانات. API_KEY: لتخزين مفاتيح API لخدمات خارجية. NODE_ENV: لتحديد بيئة التشغيل (development, production). بعدها قم بالضغط على CREATE ليتم إنشاء تطبيقك.
  21. اختبار T هو اختبار يستخدم لمقارنة متوسطين لمعرفة إذا كان الفرق بينهما ذو دلالة إحصائية بالتأكيد هناك أنواع مختلفة منه، مثل اختبار العينات المستقلة (لمجموعتين مختلفتين) واختبار العينات المتزاوجة (لنفس المجموعة في أوقات مختلفة). أما ANOVA، أو تحليل التباين الأحادي، يستخدم لمقارنة متوسطات ثلاث مجموعات أو أكثر لتحديد ما إذا كان هناك فرق ذو دلالة إحصائية بينها. يمكن أن يكون ANOVA أحادي الاتجاه (لمتغير مستقل واحد) أو ثنائي الاتجاه (لمتغيرين مستقلين) أدعوك لقراءة هذه المقالة أين يستفيض كاتبها في شرح هذا المفهوم من هنا:
  22. عروض العطلة الصيفية في أكاديمية حسوب هي متاحة لجميع مشتركي أكاديمية حسوب، بحيث يمكن الحصول على دورتين بسعر دورة واحدة وعادة ما تكون في شهر جويلية وتستمر لغاية الفاتح من شهر سبتمبر، يمكنك التواصل أكثر مع الدعم وسيفيدونك بأي شيء في هذا الجانب من هنا: مركز الدعم لأكاديمية حسوب.
  23. بالطبع، يمكنك تعديل النظام ليسمح فقط لثلاثة أشخاص محددين بالدخول. وبخصوص قاعدة البيانات، نعم، ستضيف جدولا جديدا في نفس قاعدة البيانات الموجودة لديك.
  24. يمكن عمل ذلك، لكن في البداية نحتاج أولا إلى إنشاء جدول في قاعدة البيانات لتخزين معلومات المستخدمين بحيث يحتوي على معرّف فريد، اسم المستخدم وكلمة المرور المشفرة إضافة إلى صفحة تسجيل الدخول (login.php) وتحتوي على نموذج لإدخال اسم المستخدم وكلمة المرور وعند إرسال النموذج، يتم التحقق من صحة البيانات مقابل قاعدة البيانات فإذا كانت صحيحة، يتم إنشاء جلسة للمستخدم وتوجيهه إلى الصفحة المطلوبة. ولحماية الصفحات (admin.php، updata.php، Info.php)، نضيف كود التحقق من وجود جلسة مستخدم نشطة فإذا لم تكن موجودة، يتم إعادة توجيه المستخدم إلى صفحة تسجيل الدخول. وعند تسجيل الخروج نضيف صفحة لتسجيل الخروج تقوم بإنهاء الجلسة وإعادة توجيه المستخدم إلى صفحة تسجيل الدخول ولإضافة مستخدمين جدد نضيف نموذجا لإنشاء مستخدمين جدد، مع تشفير كلمة المرور قبل تخزينها في قاعدة البيانات. وهذه محاكاة لكيفية تطبيق ذلك، نضيف الكود التالي إلى ملف connect.php لإنشاء جدول المستخدمين: $sql = "CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) UNIQUE NOT NULL, password VARCHAR(255) NOT NULL )"; $conn->query($sql); ثم ننشئ ملف login.php بهذا الشكل: <?php session_start(); require_once 'connect.php'; if ($_SERVER['REQUEST_METHOD'] == 'POST') { $username = $_POST['username']; $password = $_POST['password']; $stmt = $conn->prepare("SELECT id, username, password FROM users WHERE username = ?"); $stmt->bind_param("s", $username); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows == 1) { $user = $result->fetch_assoc(); if (password_verify($password, $user['password'])) { $_SESSION['user_id'] = $user['id']; $_SESSION['username'] = $user['username']; header("Location: admin.php"); exit(); } else { $error = "كلمة المرور غير صحيحة"; } } else { $error = "اسم المستخدم غير موجود"; } } ?> <!DOCTYPE html> <html lang="ar"> <head> <meta charset="UTF-8"> <title>تسجيل الدخول</title> </head> <body> <h2>تسجيل الدخول</h2> <?php if (isset($error)) echo "<p style='color: red;'>$error</p>"; ?> <form method="POST"> <label for="username">اسم المستخدم:</label> <input type="text" id="username" name="username" required><br> <label for="password">كلمة المرور:</label> <input type="password" id="password" name="password" required><br> <input type="submit" value="تسجيل الدخول"> </form> </body> </html> وللحماية، يجب تعديل كل من الملفات admin.php، updata.php، و Info.php بإضافة كود التحقق التالي في بداية كل ملف: <?php session_start(); if (!isset($_SESSION['user_id'])) { header("Location: login.php"); exit(); } ?> ونهاية الجلسة ستكون بهذا الشكل: <?php session_start(); session_destroy(); header("Location: login.php"); exit(); ?> وبهذه الطريقة، سيكون لدينا تسجيل دخول آمن مع تشفير لكلمات المرور باستخدام password_hash() ويتم التحقق من تسجيل الدخول في الصفحات المحمية، ويتم تخزين معلومات المستخدم في الجلسة بعد تسجيل الدخول بنجاح.
  25. مرحبا يوسف، بما أن استفسارك متعلق بتوقيت الامتحان، وكيية سيرورته، فأنصحك بالتواصل مع مركز المساعدة وسيقومون بحلّ مشكلتك بالشكل المناسب، أتمنى إرفاق أي استفسار متعلق بهذا الجانب مباشرة في مركز المساعدة وليس هنا في قسم أسئلة البرمجة العامة.
×
×
  • أضف...