-
المساهمات
3124 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
29
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو محمد عاطف17
-
يجب توفير مسار الواجهة الخلفية قبل اسم الصورة حتى يتم استرجاعها من الواجهة الخلفية حيث اذا لم تقم بوضع المسار كما فعلت انت فسيتم ارجاعه من الواجهة الامامية وحيث ان الصورة ليست موجودة فى سيرفر الواجهة الامامية فلن تظهر . قم باستبدال سطر رقم 62 بهذا السطر src={`${API_URL}/public/images/${nav.image}`} وقم باستبدال API_URL بعنوان الواجهة الخلفية . والافضل هو انشاء ثابت لديك فى ملفات البيئة "env" فى الواجهة الامامية يحتوى على مسار الصور فى الواجهة الخلفية مباشرة . هكذا مثلا IMAGE_PATH="localhost:8000/public/images" واستخدام هذا الثابت ووضعه فى خاصية src مباشرة فى الصورة قبل اسم الصورة هكذا src={`${IMAGE_PATH}/${nav.image}`}
- 2 اجابة
-
- 1
-
ان التطبيقات والبرامج التي تسمح بإنشاء مواقع وتطبيقات الويب دون الحاجة إلى كتابة كود html تسمى بـ "منصات بناء المواقع" (Website Builders). وهذه المنصات توفر واجهة بصرية GUI تسمح للمستخدمين بسحب العناصر وتخصيص تصميم الموقع دون الحاجة إلى معرفة بالتفاصيل البرمجية أو برمجة HTML. الفرق الاساسى بين استخدام هذه المنصات وبرمجة المواقع باللغات التقليدية مثل html هو: سهولة الاستخدام: حيث توفر تلك المنصات واجهات سهلة الاستخدام تسمح للمبتدئين او حتى غير المبرمجين بإنشاء مواقع بسرعة وسهولة دون الحاجة إلى وجود اى مهارات برمجية. السرعة: يمكن للأشخاص إنشاء مواقع ويب بسرعة أكبر من عن طريق البرمجة الاساسية. التخصيص: توفر تلك المنصات الكثير من القوالب والأدوات لتصميم المواقع مما يسمح للمستخدمين بإضافة قواب وتصميمات محددة دون الحاجة إلى كتابة اى كود. ومع ذلك، قد تكون لتلك المنصات بعض القيود حيث لا يمكنك تخصيص جميع الاشياء التى تريدها وتستطيع انشائها عن طريق البرمجة التقليدية . وتلك البرانج بالاساس تقوم باستهداف المستخدمين غير المبرمجين او المبرمج الذى يريد انشاء موقع بسيط لا يحتوى على وظائف او اى اكواد جافاسكريبت عديدة وذلك لسرعه التنفيذ . اما نصيحتى لك اذا كنت تريد ان تكون مبرمجا فان تلك المنصات ليست لك او يجب الاتستخدمها فى بداية التعلم فانك اذا كنت تسعى للحصول على وظيفة ثابته فى شركات كبيرة ومرتبات مجزية او حتى عمل حر فتلك المنصات لن تساعدك فى ذلك حيث لن يمكنك التعديل على موقع موجود لديك او تصميم واجهات معقدة .
-
وعليكم السلام ورحمة الله وبركاته . يمكنك انشاء ملفات pdf عن طريق تحويل ملفات word او excel او حتى power point ويمكنك انشاء تلك الملفات عن طريق برنامج microsoft office او عن طريق google مثل Google Docs وكتابة ما تريد بداخل تلك الملفات ومن ثم تحويلها الى pdf .
- 4 اجابة
-
- 1
-
نعم ان JS هى اختصار لكلمة javascript "جافاسكريبت" و هى التى تمكنك من تنفيذ الامور التى تريدها فى الواجهة الامامية للعميل مثل فتح الكاميرا او الميكروفون والبيانات على الجهاز او حتى الوصول الى الموقع ولكن يجب على المستخدم اعطاء اذن الوصول لتلك الاشياء اولا قبل استخدامها والا فلن تستطيع الوصول اليها . وفى دورة php ستتعلم كيف يمكنك رفع الملفات من على الجهاز الى الموقع الخاص بك وحفظها فى قاعدة البيانات و السيرفر .
-
وعليكم السلام ورحمة الله وبركاته . الخطأ يخبرك بان لارافيل الاصدار 11 يحتاج الى php اصدار اكبر من 8.2 وهو ليس متوفر لديك . ويجب عليك حذف xampp ثم تثبيت اصدار يدعم php 8.2 . او يمكنك استخدام اصدار لارافيل يدعم php لديك . يمكنك معرفة اصدار php عن طريق تنفيذ الامر التالى فى cmd php -v ويمكنك معرفة اصدارات لارافيل و اصدار php لذى تدعمه من الجدول التالى
-
الامر بسيط ان شاء الله . كل ما عليك فعله هو انشاء حقل فى جدول المستخدمين لتسجيل رقم الهاتف وجعله unique بحيث لا تتكرر القيم فيه . ناتى الان للواجهة الامامية يمكنك تعديل حقل البريد الالكترونى ليقبل بريد الكترونى او رقم هاتف ويمكنك تحقيق ذلك بالتاكد من ان القيمة التى كتبها المستخدم هى رقم ام نص فاذا كان قد قام بكتابة رقم هاتف ولا توجد اى احرف فاذا ستتاكد ان هذا رقم هاتف ويمكنك تطبيق اى جزء للتحقق من صحة البيانات وهكذا بالنسبة للبريد الالكترونى . واما بالنسبة للواجهة الخلفية فايضا يمكنك التحقق من الحقل المرسل هل هو رقم ام نص فاذا كان رقم يمكنك ارسال استعلام لقاعدة البيانات للتاكد من وجود رقم الهاتف هذا بكلمة المرور و ايضا بالنسبة للبريد الالكترونى اذا كان بريد الكترونى تقوم بارسال استعلام الى قاعدة البيانات للتاكد من وجود البريد الالكترونى هذا بكلمة المرور.
-
اعتقد ان الخطأ هنا لقد قمت بوضع نقطة قبل كلمة img وهذا خاطئ حيث ان النقطة تدل على ان هذه الكلمة هى سمة "class" ونحن لا نريد تنفيذ على سمة بل على عنصر لذلك نحذف النقطة . والخطأ الاخر فى فى كلمة cartTap حيث تم تعريفها فى العنصر ك cartTop لذلك نقوم بتعديلها فى ملف html بالاسم الصحيح cartTap. و من فضلك يمكنك مستقبلا التعليق اسفل الدرس الذى تريد الاستفسار عنه حتى نستطيع مساعدتك بشكل افضل. ستجد صندوق التعليقات اسفل الفيديو مباشرة حيث يمكنك التعليق هناك. شكرا لك
-
وعليكم السلام ورحمة الله وبركاته . اولا قم بالبحث عن المعلومات والاضافات الجديدة والتحسينات و حتى الاشياء التى تم الاستغناء عنها فى الاصدار الجديد. قم بمقارنة البنية الخاصة بمشروعك بالبينة الخاصة بالاصدار الحديث ومدى الاختلاف بينهما . يمكنك الان الاختيار بين التحديث للاصدار الاحدث او تظل على الاصدار الاقدم بناء على احتياجك للاضافات الجديدة ام لا وايضا هل سيتم تغير البنية الخاصة بمشروعك كاملة ام لا . اذا قررت التحديث فعليك اولا اخذ نسخة احتياطية من مشروعك القديم والافضل استخدام نظام إدارة الإصدارات git مثل github. الان يمكنك تحديث الاصدار الى الاصدار الاحدث وتثبيت وتحديث المكتبات اللازمة التى يعتمد عليها . بعد ذلك تطوير الجزء الخاص من المشروع الذى تريده ان يعتمد على احدث الاضافات فى الاصدار الجديد. اذا كان قد تم الاستغناء عن بعض الخصائص او تم استبدال اسمائها فبيجب تعديل هذا الجزء من بنية المشروع حتى يعمل جيدا لانه سيظهر لك خطأ بان هذه الاشياء قم تم هجرها والاستغناء عنها . واخيرا اذا كان مشروعك مرفوع على استضافه فتاكد من ان الاستضافة توفر لك التحديثات الاخيرة من اللغه التى يعتمد عليها الاصدار . فمثلا فى اطار laravel 11 فانه يعتمد على php 8.2 فتاكد من وجود اصدار 8 لديك على الجهاز عند التطوير وايضا توفره على الاستضافه لديك حتى لا تقوم بتطويره ونمن ثم لا يعمل على الاستضافه. والافضل اذا كان المشروع كبير و البنية الخاصة به معقده فيمكنك تجاهل التحديثات ولكن تاكد من اصلاح التحديثات الخاصة بالامان حتى لا يكون موقع معرض للهجمات .
- 4 اجابة
-
- 1
-
وعليكم السلام ورحمة الله وبركاته . نعم بالطبع ان كتابة تعريف الصنف (class) فى اى لغه سواء بايثون او اى لغه اخرى هو شئ جيد جدا من حيث التنظيم وسهولة القراءة والصيانه ومعالجة الاخطاء . تخيل معى انك لديك صنف يثوم باداء وظيفة محددة و يحوى على العديد من الشفرات والاسطر الكثيرة مثلا فوق الالف سطر اول اقل او اكثر . فاذا قمت بوضعه بداخل الكود الخاص بك فستجد ان الكود اصبح مشتتا ولا تعرف ان تحدد الوظائف او اكتشاف الاخطاء . واذا اردت مثلا ان تقوم بنشر هذا الصنف او ارساله الى احد حتى يقوم بالتطوير عليه او حتى استخدامه فسيجد صعوبة فى فهم الكود ولن يتمكن من فصل الاصناف او الكود من بعضها البعض . ولذلك الحل الافضل فى الاصناف الكبيرة او حتى الصغيرة التى تعتمد على بعضها فى البعض هو فصلها فى ملف منفصل وتسمية هذا الملف باسم الصنف او الوظيفة المناسبة واستدعاءه فى المكان الذى تريد انشاء كائنات من هذا الصنف
- 3 اجابة
-
- 1
-
مرحبا احمد . إن الدورة التى أنت مشترك بها هى دورة php بالأساس و يتم فيها شرح إطار عمل لارافيل ويتم التعمق فيه بكثرة و إنشاء عدة مشاريع من خلاله حيث أن لارافيل هو اطار العمل الأشهر القائم على php وهو متوفر بكثرة في سوق العمل سواء في الشركات او حتى العمل الحر لذلك يتم شرحه بتعمق في الدورة ويتم تحديثه دوريا حيث أن مطورين لارافيل يقومون بتطوريه وإنشاء اصدارات أحدث منه سنويا كذلك الأكاديمية هنا تواكب هذا التطور. أما بالنسبة لمسار وورد بريس فإنه يتم شرح الاساسيات فيه من حيث تطوير القوالب و تطوير و تطوير الإاضافات وأيضا إنشاء مشاريع عملية للتطبيق عليهم و بما أن وردبريس هو اطار عمل يقوم بانشاء نظام ادارة محتوى المواقع والمدونات وحتى المتاجر البسيطة فانه لن يخلو من الاساسيات التى يتم شرحها في هذا المسار في الدورة . أما بالنسبة للعمل الحر ستجد أن المطلوب بكثرة بالنسبة إلى وورد بريس فإنه سيكون إنشاء قوالب أو تطوير إضافات أو حتى تركيب قالب على الموقع واعتقد أن ما تم شرحه فى هذه الدورة سيكمنك من تنفيذ ذلك بسهولة . وأيضا ساقوم بتوصيل طلبك إلى الادارة والنظر إذا ما كان يحتاج المحتوى أى تطوير ام لا . شكرا لتفهمك وبالتوفيق ان شاء الله.
-
اولا بالنسبة لمشكلة السلة فيجب اولا اخفاء جزء السلة عند بداية تحميل الصفحة حيث نقوم بوضع سمة تسمى hidden الى العنصر الذى يحوى السلة ونقوم باعطائه الخاصية display: none !important; هكذا. .hidden { display: none !important; } ولاظهاره عند الضغط عليه ثم اخفاءه مره اخرى نستخدم الجافاسكريبت لفعل ذلك. حيث اولا نضع لعنصر السلة id يسمى my-cart حتى نستعمله فى جافا سكريبت . والان نقوم بتعريف متغيرين الاول يحوى الزر الخاص بفتح السلة والاخر هو عنصر السلة هكذا. const cart = document.getElementById('cart-btn') const my_cart = document.getElementById('my-cart'); والان نقوم بالاستماع الى الحدث الخاص click على زر السلة و عند الضغط عليه نقوم بحذف السمة hidden اذا كانت موجودة لاظهار السلة او وضع السمة hidden اذا لم تكن موجودة وذلك لاخفائها هكذا. cart.addEventListener('click', () => { my_cart.classList.toggle('hidden'); }); والان نضع حدث click على document حتى نقوم باغلاق السلة اذا تم الضغط فى اى مكان اخر وذلك للتسهيل على المستخدم وعدم اجباره على الضغط فقط على الزر لاخفاء السلة هكذا. document.addEventListener('click',(e)=>{ if( !(e.target.id == "cart-btn") && !my_cart.classList.contains('hidden')){ my_cart.classList.add('hidden'); } }) والان نقوم باستدعاء ملف الجافاسكريبت فى ملف index.html وايضا حذف زر السلة الاخر حيث يوجد زرين فى الكود . ولقد قمت بارفاق الملفات بعد تعديلها . اما بالنسبة تسجيل الدخول فان الامر ليس بتلك السهولة حيث ما قمت به الان هو فقط برمجة الواجهة الامامية اما تسجيل الدخول فيحتاج الى جزء الواجهة الخلفية والتعامل مع قواعد البيانات . ويمكنك عمل واجهة خلفية عن طريق استخدام لغة php او javascript مع اطار عمل express و nodejs . واذا لم يكن لديك اى خلفية عن تطوير الواجهات الخلفية فانصحك اولا بمذاكرة اللغة التى تريد العمل بها بداية من الاساسيات حتى يتسنى لك انشاء اى موقع كاملا script.js style.css index.html
-
وعليكم السلام ورحمة الله وبركاته . نعم بالفعل فان اكاديمية حسوب تقوم دائما بتحديث الدورات لتتوافق مع سوق العمل ومع احدث التقنيات التى يتم نشرها لذلك نحن مستمرون دائما بتطوير المحتوى وبالفعل انت لديك وصول مدى الحياة على الدورة بتحديثاتها . ويمكنك متابعة الدروس والاقسام الجديدة التى تم تحديثها فى الدورة لديك واذا ما واجهتك أى مشكلة فلا تتردد يمكنك السؤال عن اى شئ اسف الدرس فى الدورة .
- 2 اجابة
-
- 1
-
وعليكم السلام ورحمة الله وبركاته . أولا، في Laravel، يتم استخدام نظام المصادقة (Authentication) المدمج لإدارة عمليات تسجيل الدخول والتحقق من الهوية. يجب عليك اولا ان تقوم بكتابة المسارات الخاصة بتسجيل الدخول والتسجيل وتسجيل الخروج في ملف التوجيه (routes/web.php). على سبيل المثال: use App\Http\Controllers\LoginController; Route::get('login', [LoginController::class,'create'])->name('login'); Route::post('login', [LoginController::class,'login']); Route::post('logout', [LoginController::class,'logout'])->name('logout'); ويجب انشاء متحكم فى المسار الذى قمنا بكتابته Auth\LoginController وانشاء الدوال التى قمنا بتمريرها ايضا. الآن، يمكننا أن ننشئ الدالة login() داخل LoginController. حيث تقوم هذه الدالة بالتحقق من بيانات تسجيل الدخول التى يتم ارساله من المستخدم وإذا كانت صحيحة، يتم تسجيل الدخول باستخدام Auth facade المدمجة في Laravel. على سبيل المثال: use Illuminate\Support\Facades\Auth; public function login(Request $request) { $credentials = $request->only('email', 'password'); if (Auth::attempt($credentials)) { // هنا نقوم بكتابة اى شئ نريده فى حالة قام المستخدم بعمل تسجيل دخول صحيح return redirect()->intended('dashboard'); } return redirect()->back()->withErrors(['email' => 'These credentials do not match our records.']); } تقوم دالة attempt() بمحاولة تسجيل الدخول باستخدام البيانات المقدمة. إذا نجحت عملية التسجيل، يتم توجيه المستخدم إلى المسار المعين في هذه الحالة 'dashboard' ، وإذا فشلت، يتم توجيه المستخدم إلى الصفحة السابقة الطلب عليها مع رسالة خطأ. اما بالنسبة للمستخدم والادمن فيمكنك اضافة حقل فى قاعدة البيانات يسمى is_admin وجعل قيمته ب 1 اذا كان ادمن و 0 اذا لم يكن ادمن. ويمكنك قراءة هذا المقالة لتفهم جيدا عن الاستيثاق جيدا . وايضا هذا الرابط لموسوعة حاسوب ويمكنك قراءة المزيد حول لارافيل هناك.
- 5 اجابة
-
- 1
-
نعم بالطبع سيتم ارسال رساله اليك علي البريد الالكترونى الخاص بك عند الرد عليك . ونعم بخصوص الامتحان يمكنك السؤال على مركز المساعدة وسيتم الرد على استفساركم ومساعدتكم ان شاء الله . ولا تقلق اذا كان هناك تاخير فى الرد لانه حاليا يوجد العديد من الطلاب الذين يقدمون على الاختبارات وايضا من يريدون المساعدة حيث يوجد ضغظ حاليا .
-
اعتقد ان المشكلة لديكى فى جزء الحفظ فى قاعدة البيانات فلقد قمتى بالخطأ فى ترتيب ادخال البيانات . cur.execute("INSERT INTO products (ProductName, ExpiryDate, Ingredient) VALUES (%s, %s, %s)", (product_name, ingredient, date_value)) لاحظى انكى يجب ادخال اسم المنتج ثم تاريخ الانتهاء ثم المكونات . ولكنى قد قمتى بالتبديل بين التاريخ والمكونات. لذلك استبدلى السطر لديكى بهذا السطر . cur.execute("INSERT INTO products (ProductName, ExpiryDate, Ingredient) VALUES (%s, %s, %s)", (product_name,date_value ,ingredient)) واذا لم يحل المشكلة فاعقتد ان المشكلة لديكى فى قاعدة البيانات وللتاكد اكثر يجب ارسال رسالة الخطأ التى تظهر فى منفذ الاوامر لديكى
- 5 اجابة
-
- 1
-
وعليكم السلام ورحمة الله وبركاته . ان ال HTTP response status code 500 تعنى انه يوجد خطأ فى الخادم اى انه حدث مشكلة لديك فى تنفيذ الكود على الخادم . لذلك تاكد من ارسال البيانات بشكل صحيح و ان تكون الشيفرة الخاصة بحفظ البيانات صحيحة . واذا ما زالت المشكلة موجوده فيجب توفير الكود الخاص بحفظ البيانات لنرى اين توجد المشكلة ونستطيع ان نساعدك
-
ليس تماما فان وظيقة مصمم البرمجيات مختلفة عن مطور البرمجيات فهو لا يكتب اى شيفرات هو فقط ملم بعلم التصميم مهما كانت لغة البرمجة وليست لغه معينه . ولذلك اذا لم تكن تريد ان تكون مصمم برمجيات فلا يجب تعلم المجال بشكل موسع بل يكفى تعلم الاساسيات و النظريات التى تساعدك على فى مهنة تطوير البرمجيات مثل : قواعد البيانات هياكل بيانات "Data Structure" نماذج التصميم "Design Patterns" الخوارزميات "algotherms" OOP. ولكن مع الخبرة ستجد نفسك مع الوقت ملم اكثر بتفاصيل التصميم و انشاء المعماريات ولكن فى بداية مسيرتك المهنية انصحك بعدم الغوص عميقا فى تلك المفاهيم حيث من الممكن ان تسبب لك الاحباط و الملل بل يجب ان تاخذ مسيرتك تدريجيا
- 7 اجابة
-
- 1
-
توجد عدة اسباب لتلك المشكلة و لنتابع الخطوات معا لنرى اين توجد المشكلة . اولا يجب اغلاق xampp تمام حيث نضغط على زر Quit فى اقصى اليمين اسفل القائمة . والان لنحاول فتح البرنامج مرة اخرى كمسؤول run as administrator ولنحاول مرة اخرى تشغيل mysql . واذا لم يعمل فمن الممكن ان المنفذ (port) 3306 مستعمل من قبل برنامج اخر . لذلك لنحاول تغير المنفذ عن طريق فتح ملف my.ini والبحث عن السطر التالى port = 3306 ونقوم بتغيره الى 3360 مثلا port = 3360 ونقوم باعادة تشغيل الخدمة مرة اخرى . ويمكنك التاكد من ان المنفذ مستعمل ام لا عن طريق الضغط على زر Netstat فى xampp وسيقوم بفتح ناقذة للمنافذ المستخدمة والتاكد من عدم استخدام المنفذ الحالى 3306 واذا لم تعمل فهل يمكنك ارسال ملف تقارير الاخطاء لنرى اين تكم المشكلة
-
وعليكم السلام ورحمة الله وبركاته . ليس المقصود بتصميم البرمجيات هو تصميم الواجهة الامامية باستخدام html و css وjs بل هو علم كامل يقوم على عملية تحديد متطلبات البرنامج، وتخطيط هيكله من تصميم قاعدة البيانات او حتى هيكل الشيفرات ، وتصميم واجهته الرسومية، وتطوير الخوارزميات والمنطق البرمجي، بالإضافة إلى اختباره وصيانته . وان تصميم البرمجيات ليست فقط حكرا على تطبيقات الويب بل هى تشمل ايضا تطبيقات سطح المكتب او تطبيقات الهاتف وايضا الانظمة المدمجة embded systems او نظام قائم على البرمجة عموما . ووظيفة مصمم البرمجيات هى من اصعب الوظائف و تطلب مستوى متقدما فى معظم العلوم . حيث انه مطالب اولا بتحديد متطلبات العمل و انشاء خطة لتنفيذ العمل و اختباره و ايضا تصميم هيكل المشروع كاملا من بدايته الى نهايته والتاكد من ان التصميم قابل للتنفيذ وايضا للتطوير و يكون اقل تكلفة . وايضا يقوم بمتابعة سير العمل للتاكد من كل فريق يقوم بتنفيذ ما هو مطلوب
- 7 اجابة
-
- 1
-
وعليكم السلام ورحمة الله وبركاته . اولا اهنئك على اجتيازك لمقابلة العمل ووفقك الله فى ما هو قادم ان شاء الله . اما بالنسبة للتاخر فى الرد فلا تقلق هذا شئ طبيعى حيث يوجد العديد من الطلاب الاخرين الذين قدمو مشاريع التخرج و لهذا من الممكن ان ياتى الرد متاخرا قليلا . لذلك من فضلك لا تقلق انتظر قليلا وسيتم الرد عليك ان شاء الله واتمنى لك التوفيق.
-
يبدو انك تستعمل powerShell بدلا من cmd وهذه مشكلة شائعه فى powerShell. يمكنك استخدام cmd لتفعيل البيئة الافتراضية او اتباع الخطوات التالية لحل المشكلة. اولا قم بفتح ال powerShell كمسؤل ثم ثم بكتابة الامر التالى . Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser واذا ما ظهرت لك اى رسالة قم بكتابة Y ثم اضغط enter . والان يمكنك تفعيل البيئة الافتراضية عن طريق الامر التالى .\venv\Scripts\activate واذا اردت منع تنفيذ ال scripts كما كان سابقا واعادة كل شئ كما كان يمكنك تنفيذ الامر التالى . Set-ExecutionPolicy Restricted
- 4 اجابة
-
- 1
-
اولا ان ال vs code او اى IDE لا يقوم بتنفيذ الكود بل هو فقط محرر للاكواد وما يقوم بتنفيذ الكود هو ال compiler الخاص باللغه نفسها . ثانيا ان ال escaping characters تبدا دائما بالرمز "\" backslash وليس "/" ويبدوا انك قد اخطات بكتابة "n\" لذلك الصحيح هو استبدال "n/" الى "n\" وسيعمل معك . وتاكد من حفظ الملف بعد التعديل حيث من الصورة المرفقة يبدو انك لم تقم بحفظ الملف . ويمكنك الحفظ عن طريق الضغط على CRTL + S .
- 4 اجابة
-
- 1
-
وعليكم السلام ورحمة الله وبركاته . لا يمكن قول أن إطار العمل django أقوى او أفضل من express.js بشكل عام، لأن لكل منهما ميزاته واستخداماته الخاصة. إطار العمل django مكتوب بلغة python ومصمم لتطوير تطبيقات الويب الشاملة بشكل سريع وفعال، مع توفير الكثير من الميزات المدمجة مثل نظام إدارة قواعد البيانات ونظام التحقق من الهوية والتوثيق. اما express.js هو إطار عمل لغة جافاسكريبت يعمل على بيئة تطوير node.js ويسمح ببناء تطبيقات الويب والخوادم بسهولة باستخدام جافاسكريبت على جانب الخادم. يتميز express.js بمرونة كبيرة وبساطة في الاستخدام، مما يجعله شائعًا لتطوير تطبيقات الويب الخفيفة والمتوسطة الحجم. ان اطار عمل django ياتى مدمجا بكثير من المميزات والخصائص مثل نظام إدارة قواعد البيانات ORM ونظام إدارة المستخدمين والتوثيق ونظام الإدارة الإدارية للموقع ويوفر الامان والحماية ضد هجمات XSS وCSRF و SQL injection. اما express.js مرن ويسمح للمطورين ببناء تطبيقات مختلفة بسهولة وسرعة حيث يتمتع بقدرته على التوسع بسهولة لمعالجة أعباء عالية من خلال نموذج غير تقليدي للمدخلات والمخرجات (non-blocking I/O) حيث لا يقوم بحجز الموارد لاشخاص فى انتظار مهمة اخرى للانتهاء بل يقوم بالانتقال لمعالجة طلب اخر وايضا توجد العديد من المكتبات التى تحتاجها وسوف تجدها متاحه وايضا لديه مجتمع كبير من المطورين.
-
لا بأس يمكنك البدا فى اى وقت شئت ولكن يجب عليك الالتزام بمتابعة الدروس وتطبيق كل ما يتم تعلمه فى الدروس بنفسك حتى تحصل على اقصى استفادة من الدورة . المهم لك اولا هو في البداية بمذاكرة الأساسيات واللغات البرمجية التي تستخدم في تصميم وتطوير واجهات المستخدم . وبعد ذلك قم بمتابعة الدروس العملية حيث فى هذه الدروس ستقوم بالتطبيق العملى على كل ما تعلمته فى الوحدات السابقة . ويجب عليك تخصيص وقت محدد يوميا لمتابعة الدروس حتى لا تمل او تتكاسل فترى ان الوقت قد فاتك وكان من الممكن ان تفعل الكثير حينها . ولا تقلق اذا ما واجهتك اى مشكلة او احتجت اى سؤال فيمكنك السؤال اسفل كل درس فى قسم التعليقات وستجد المدربون متاحين فى جميع الاوقات ومتوفرين لمساعدتك. وهذه بعض الإجابات لطلاب اخرين ستجدها مفيدة لك.
- 2 اجابة
-
- 1
-
قم باستبدال الدالتين handleSubmit و handleImageChange ولا اعرف لماذا تقوم برفع الصورة مرتين حاول فقط رفعها مرة واحده باستخدام api واحد فقط const handleImageChange = (e) => { const file = e.target.files[0]; setimage(file); }; const handleSubmit = async (e) => { e.preventDefault() try { const formData = new FormData(); formData.append('name',name); formData.append('pathname',pathname); formData.append('image',image); await axios.post('https://api.wesamelnagah.com/api/maincategory', formData,{ headers: { "Content-Type": "multipart/form-data", }, }) await axios.post('https://api.wesamelnagah.com/api/uplode',formData, { headers: { "Content-Type": "multipart/form-data", }, }) setname('') setimage(null) setpath('') } catch (error) { console.log(error) } } والان من المفترض ان يتم حفظ الصورة على الخادم وفى قاعدة البيانات بشكل صحيح
- 12 اجابة
-
- 1