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

محمد أبو عواد

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

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

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

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

    95

كل منشورات العضو محمد أبو عواد

  1. raw_input يقرأ الإدخال أو الأمر ويعيد دائما سلسة أي من نوع string, بينما input يقرأ الإدخال ويعيد نوع python مثل list ، tuple ، int ، وغيرها, أما بالنسبة للخطأ فربما يظهر بسبب اختلاف اصدار بايثون لديك, في بايثون x.3 استخدم input بينما ل 2.x استخدم raw_input
  2. سبب هذا الخطأ حدوث تجاوزات في المكدس, ويظهر هذا الخطأ كحارس ضد تجاوز المكدس, لحل المشكلة حاول فعل التالي import sys sys.setrecursionlimit(1500)
  3. يمكننا تعريف mixin كالتالي @mixin main-color($color) { color: $color; } هذا ال mixin يقبل متغير وهة اللون الذي تريده, يمكن كل مرة استخدام mixin تمرير اللون الذي تريده, فمثلا يمكنك في عناصر الصفحة الرئيسية ليكن اللون الأبيض هو الذي سوف نمرره فيكون شكل الكود لعنصر موجود في الصفحة الرئيسية كالتالي .main_page button{ @include main-color(#000); } كما تلاحظ لقد مررت اللون الأبيض , الآن سوف تطبق التنسيقات على العنصر المحدد وسوف يكون اللون الخاص به أبيض , وهكذا تستطيع تحديد لكل عنصر اللون الذي تريده
  4. يمكنك استخدام in وتحديد القيم الخاصة بالحقل radio, فمثلا لو كان لديك input من نوع radio لتحديد الجنس واسم الحقل gender فسوف يكون التحقق هكذا 'gander'=> 'required|in:male,female'
  5. هناك 3 دوال لاضافة object الى list في بايثون وهي append() و insert() و extend() ومن الممكن استخدام علامة ال + لذلك, لنحاول شرح مثال بسيط لكل دالة بداية append() numbers = [1,2] #قائمة مكونة من رقمين print('قبل الاضافة :',numbers) # طباعة القائمة قبل الإضافة num=3 #متغير يحمل القيمة 3 numbers.append(num) #اضافة المتغير الى القائمة print('بعد الاضافة :',numbers) #طباعة القائمة بعد الاضافة ثم insert() numbers = [1, 2] print('قبل الإضافة :', numbers) num =3 numbers.insert(1,num) print('بعد الإضافة :',numbers) الفرق بين insert وبين append انه في insert يجب أن ندخل موقع العنصر الذي نريد اضافته, كما تلاحظ اخترت موقعه في index الذي يساوي 1 ولذلك سوف يكون موقعه العنصر الثاني في القائمة ثم extend numbers = [1,2] print(numbers) numbers.extend((3, 4)) print(numbers) ثم يمكننا استخدام علامة + numbers = [1,2] chars=['a','b'] myList=numbers+chars print(myList) سوف تكون النتيجة كالتالي [1, 2, 'a', 'b']
  6. ليس من الضروري استخدام الورقة والقلم في دراسة البرمجة, ولكن لكل منا اسلوبه في الدراسة وربما الورقة والقلم تجعلك تنجز وتفهم الأشياء بصورة افضل, هذا يعود لك ولأسلوبك في الدراسة, ولكن بالسنبة للبرمجة تختلف عن جميع المجالات فهي بحاجة لممارسة كثيرة جدا وبحاجة لأن تقضي وقت كبير في ممارستها, فمن خلال الممارسة سوف تتفاجأ بأن كل التقنيات التي تعلمتها لم تنساها بعد فترة من الزمن والسبب في ذلك الممارسة والوقت الذي استغللته في ممارسته
  7. نعم, لأن الواجهة الأمامية للموقع (الفرونت اند) والواجهة الخلفية (الباك اند) بينهم ترابط قوي, حيث أننا من خلال الباك اند نستطيع التعامل مع قواعد البيانات فنقوم بجلب البيانات من قواعد البيانات ومن ثم نقوم بتمريرها للواجهات الامامية لعرضها داخل عناصر html, لذلك يجب أن يكون لديك بعض المعرفة في html , وأيضا تحتاج أيضا لبعض التنسيقات التي تجعل من شكل العنصر جميل ومناسب ولذلك تحتاج ل css , والجافاسكربت التي تقوم تساعدك ببناء واجهات أكثر تفاعلية مع المستخدم
  8. نحتاج لفعل ذلك لغة برمجة للتعامل مع قواعد بيانات, وأيضا نحتاج لربط الموقع بقاعدة البيانات, أما طريقة تنفيذ ذلك يعتمد على اللغة المستخدمة في الجهة الخلفية من الموقع ويعتمد أيضا على نوع قواعد البيانات المستخدمة في المشروع
  9. الشرطة السفلية إشارة عامة إلى أنك لا تهتم بالقيمة الحالية للمتغير, فمثلا على سبيل المثال for i in range (1, 10): print(i) في المثال السابق من الواضح أننا نريد استخدام i في الكود الخاص بنا, لاحظ رجاء المثال التالي for i in range (1, 10): print(“hi”) كما تلاحظ لم نستخدم المتغير i في الكود الخاص بنا ولم نهتم لقيمته ولذلك في هذه الحالة يمكننا استخدام المتغير _ for _ in range (1, 10): print(“hi”)
  10. يمكنك في التابع الذي يعرض الصفحة تمرير متغيرين, المتغير الاول يحتوي على مجموعة لها شروط معينة, لتسهيل الشرح , تخيل لدينا منتجات وكل منتج بطبيعة الحال لديه سعر , فلتكن المجموعة الاولى شرطها ان يكون سعرها أكبر من 100$,يمكنك وضع الشروط كما تريدها أنت, وهذا المتغير تعرضه في المكان الاول, المتغير الثاني نفس الحال يحتوي على مجموعة ذات شروط معينة , ليكن الشرط هذه المرة السعر أقل من 100, تقوم بعرض المجموعة التي بداخل المتغير الثاني في المكان الآخر الذي تريده أنت أو يمكنك تمرير كل المجموعة في متغير واحد, وفي foreach الأولى تضع شرطا قبل عنصر div مثلا ان يكون سعر المنتج اكبر من 100, في foreache الثانية تضع شرطا أن يكون سعر المنتج أقل من 100, وهكذا
  11. المسار يحتاج الى متغيرين , المتغير الاول habit والمسار الثاني day, أنت قمت بتمرير متغير واحد فقط, لذلك حاول تعديل الكود بما يتناسب مع المسار
  12. يجب أن يكون اسم المتغير الذي تستخدمه المسار المؤدي للتابع update بنفس اسم المتغير المستخدم في التابع update, مثلا لديك في التابع update المتغير $day , اذا يجب أن يكون في المسار اسمه {day} ايضا, تأكد من ذلك رجاء اذا استمرت المشكلة أرجو منك ارفاق ملفات المشروع للمساعدة بشكل افضل
  13. الدالة append تقوم بإلحاق العنصر كتلة واحدة مهما كان عدد العناصر, لاحظ المثال الآتي x = [1, 2, 3] x.append([4, 5]) print (x) سوف تكون النتيجة كالتالي [1, 2, 3, [4, 5]] ^^^^^^ لاحظ تم الحاق العناصر كعنصر واحد أما في الدالة extend يقوم بادخال كل عنصر على حدا, لاحظ المثال الآتي x = [1, 2, 3] x.extend([4, 5]) print (x) سوف تكون النتيجة كالتالي [1, 2, 3, 4, 5] ^^^^ لاحظ تم الحاق كل عنصر على حدا وليست كما في المثال السابق
  14. بداية نحتاج أن نقوم باستدعاء الصنف Stack من حزمة java.util import java.util.Stack; ثم يمكننا انشاء كائن من الصنف Stack ثم نستطيع استخدام الدوال الخاصة ب Stack مثل push التي من خلالها نضيف عنصر الى stack أو الدالة empty التي تفحص هل Stack فارغ أم لاء وتسترجع قيمة boolean حيث تقوم بارجاع false اذا كانت تحتوي على عناصر والعكس صحيح, لنحاول شرح ذلك من خلال مثال import java.util.Stack; public class StackExample { public static void main(String[] args) { Stack myStack = new Stack(); boolean isEmpty = myStack.empty(); System.out.println("Is the stack empty? " + isEmpty); myStack.push(1); myStack.push(2); System.out.println("All Elements in Stack: " + myStack); } } كما تلاحظ قمنا باستدعاء الصنف Stack, وقمت بانشاء كائن منه اسمه stk وقمت بفحص هل هو فارغ أم لا من خلال الدالة empty, وخزنت قيمة الدالة empty بداخل متغير اسمه result ومن ثم قمت بطباعة المتغير result, بعد ذلك قمت باضافة بعض العناصر الى Stack باستخدام الدالة push , بعد تنفيذ المثال سوف تكون النتيجة كالتالي Is the stack empty? true All Elements in Stack: [1, 2]
  15. عليكم السلام ما قمت بانجازه هو الواجهة الامامية من الموقع أو ما يعرف بالفرونت اند, الآن تحتاج الى اكمال الجزء الخلفي من الموقع أو ما يعرف بالباك اند, وهو المسؤول عن العمليات التي تحدث بالموقع مثل اضافة اعضاء أو مثلا اضافة منشور أو حذف منشور, العمليات المرتبطة بقواعد البيانات بشكل مباشر, وأيضا مسؤول عن حماية الموقع وتحديد صلاحيات الأعضاء, ويمكننا تحقيق هذا الجانب بأحد لغات البرمجة مثل php أو روبي أو بايثون أو جافاسكربت, ولذلك تحتاج لتعلم أحد هذه اللغات لتستطيع القيام بذلك, اذا كنت قد بدأت بالفعل بتعلم جافاسكربت فيمكنك استخدام node.js للباك اند ويمكنك القيام بعمليات الواجهة الخلفية من خلاله
  16. يمكننا فعل ذلك من خلال استخدام التابع choice, بداية سوف نقوم باستدعاء random ومن ثم نستخدم التابع choice import random num = [1,2,3] print(random.choice(num))
  17. بداخل الوظيفة او job يمكنك استخدام التابع failed() وبداخل التابع يمكنك استخدام الكود الذي وضعته بالاعلى public function failed(\Exception $exception) { app('sentry')->captureException($exception); } يمكنك معرفة المزيد عن التعامل مع المهام الفاشلة من هنا
  18. هناك بعض الأوامر المهمة عليك القيام بها بعد اضافة التعديلات في .env أو مجلد قاعدة البيانات أو أي تعديل آخر في مجلد config php artisan config:clear php artisan cache:clear composer dump-autoload php artisan view:clear php artisan route:clear حاول القيام بها ثم أعد تجربة الامر
  19. يمكنك ذلك من خلال Route::getRoutes(); حيث أن هذه تقوم بارجاع كولكشن فيه جميع المسارات ولعرض جميع المسارات نقوم بالمرور عليه باستخدام foreach فيكون شكل الكود كالتالي $routeCollection = Route::getRoutes(); foreach ($routeCollection as $value) { echo $value->getPath(); }
  20. استخدام بادئة الشرطة السفلية المزدوجة تؤدي إلى قيام مترجم Python بإعادة كتابة اسم المتغير لتجنب تعارض التسمية في الأصناف الابناء أو الأصناف الموروثة للصنف الأب, حيث يغير المترجم اسم المتغير بطريقة تجعل من الصعب إنشاء تصادمات عند وراثة الصنف لاحقا, لنحاول شرح بمثال سريع class Test: def __init__(self): self.x = 1 self.__y = 2 قمت بانشاء صنف Test, وهناك خاصية اسمها x وخاصية __y, سوف نحاول طباعة الخاصيتين بشكل طبيعي t1 = Test() print(t1.x) print(t1.__y) لن يتم طباعة شيء وسوف نواجه الخطأ التالي , وهذا يحدث بسبب تجنب تعارض الأسماء في الأصناف الأبناء والصنف الأب AttributeError: 'X' object has no attribute '__var' ما الحل اذا؟ الحل أن نقوم بكتباة اسم الصنف مسبوقا باشارة شرطو سفلية قبل اسم الخاصية t1 = Test() print(t1.x) print(t1.__y) الآن سوف تكون النتيجة كالتالي 1 2
  21. من الممكن أن السبب في نوع طلب request , فأنت تستخدم الميثود post, حاول تغييرها لتكون delete Route::post('/profile/delete/{id}/{fileName}', [App\Http\Controllers\ProfileController::class, 'deleteimg'])- ^^^^ >name('profile.deleteimg'); to Route::delete('/profile/delete/{id}/{fileName}', [App\Http\Controllers\ProfileController::class, 'deleteimg'])- ^^^^^^ >name('profile.deleteimg'); ثم جرب الأمر مرة أخرى
  22. تستطيع تغيير اسم أحد الملفات باستخدام السطر التالي Storage::rename('oldFolder/', 'newFolder/'); أو يمكنك ذلك باستخدام التابع move Storage::move('Folder/oldfile-name.jpg', 'Folder/newfile-name.jpg');
  23. لا يوفر الموقع حاليا فيديوهات لتعلم لغة C++ ولكن من الممكن انك تريدين رؤية بعض المواضيع والمقالات التي تهتم بلغة C++ والتي تتوفر في الموقع, يمكنك الذهاب اليها من هنا, وأيضا ربما تودين رؤية الدورات التي يوفرها الموقع وبعض المعلومات عنها ويمكنك الذهاب اليها من هنا
  24. بداية نقوم بانشاء قاموس ليكن اسمه D1 D1 = {2:3, 1:89, 4:5, 3:0} ثم نقوم بانشاء قاموس فارغ sort_dic = {} ثم نقوم بعمل حلقة تكرار على القاموس الأول وهو مرتب بناء على ال key, وبداخل الحلقة نقوم بعمل update للقاموس الفارغ بتعديل قيمه كالتالي for i in sorted(D1): sort_dic.update({i:D1[i]}) لو حاولنا طباعة القاموس بعد الترتيب سوف يكون الشكل كالتالي print(sort_dic) #{1: 89, 2: 3, 3: 0, 4: 5}
×
×
  • أضف...