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

محمد أبو عواد

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

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

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

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

    95

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

  1. لنحاول شرح ذلك باستخدام مثال, نقوم بعمل دالة تحتوي على dictionary ليكن اسمه switcher, يكون key أرقام وال value هي الأشهر وتقوم باسترجاع قيمة ال key الممرر للدالة كباراميتر def switch_demo(argument): switcher = { 1: "January", 2: "February", 3: "March", 4: "April", 5: "May", 6: "June", 7: "July", 8: "August", 9: "September", 10: "October", 11: "November", 12: "December" } return switcher.get(argument, "Invalid month") الآن لو ممرنا لها الرقم 1 سوف نحصل على قيمته, واذا مررنا قيمة غير موجودة في dictionary سوف يتم ارجاع قيمة Invalid month switch_demo(1) سوف تكون النتيجة كالتالي January
  2. استخدامك للدالة super بداخل الصنف الابن يمنحك الوصول إلى الميثود في الصنف الأب ونستخدمها أيضا في الوراثة المتعددة, لنحاول شرح ذلك بمثال class Animal(object): def __init__(self, Name): print(Name) class Dog(Animal): def __init__(self): print('الكلب له اربعة أرجل.') super().__init__('الكلب') d1 = Dog() كما تلاحظ قمت بانشاء صنفين, الصنف الاب Animal والصنف الابن Dog, لاحظ في constructor الابن قمت باستدعاء دالة ال constructor الخاصة بالصنف الأب وذلك باستخدام الدالة super() هكذا يمكننا الاستفادة من الدالة super()
  3. الأمر سهل لا تقلق ولكن يحتاج للمزيد من الجهد والمزيد من التدريبات لكي نفهم جيدا كيفية عمل العلاقات في لارافيل, لنحاول التفكير بشكل منطقي في المشكلة التي تواجهك, لدينا قسم أو category وهذا القسم يحتوي على العديد من المقالات, اذا بامكان القسم ان يمتلك أكثر من مقال, بينما المقالة لا يمكنها الانتماء الا لقسم واحد, اذا نوع العلاقة واحد إلى كثير One to Many, فبالتالي شكل العلاقات سيكون كالتالي في النموذج Category public function articles(){ return $this->hasMany(Article::class); } استخدمت التابع hasMany أي أن القسم يمتلك أكثر من مقالة في النموذج Article public function category(){ return $this->belongsTo(Category::class); } استخدمت التابع belongsTo أي أن المقالة تنتمي لقسم واحد الآن لو حاولنا الحصول على معلومات الالقسم الذي تنتمي اليه المقالة فسوف يكون كذلك return $category=Article::find(1)->category()->get(); الآن هذا السطر سوف يقوم بارجاع بيانات القسم الذي تنتمي اليه المقالة, ويمكننا الوصول لاسم القسم بكل سهولة من خلال السطر التالي return $category[0]->name; سوف يتم استرجاع اسم القسم يمكنك قراءة المزيد عن العلاقات من هنا
  4. يمكنك تعريف متغير في بداية الميثود $image="" ثم نفحص اذا يوجد صورة ام لا باستخدم if وبداخل جسم if نقوم باحضار الصورة ونسندها الى المتغير الذي عرفناه في البداية if($user->images){ $image=$user->images->first(); } يمكنك هكذا تجنب المشلكة
  5. نحدد من خلالها الأعمدة القابلة للتعبئة,لاحظ رجاء السطر التالي protected $fillable = [ 'name','email','password', ]; فمثلا لو كانت Request تحتوي فقط على name و email و password فإن Request ستعمل دون مشاكل وسوف يتم تعبئة الأعمدة الخاصة بهذه الخصائص الموجودة في Request ولكن لو كان مع Request خاصية أخرى مثل username فستحصل على مشكلة MassAssignmentException لأن username غير موجودة في مصفوفة fillable
  6. أرجو منك اتباع الخطوات الآتية لنقوم بانشاء امر يقوم بمسح الترمنال بالكامل بداية نختار من القائمة file ثم Preferences ثم Keyboard Shortcuts سوف تفتح معنا واجهة لجميع الاوامر التي نستخدمها في البرنامج, سوف نبحث عن كلمة workbench.action.terminal.clear , انسخها كما هي والصقها في مربع البحث الذي يظهر في الواجهة, ثم في عمود command سوف يظهر الامر Terminal:clear سوف نضغط عليه مرتين بالماوس لنحدد الاختصار الذي سوف نستخدمه, ليكن ctrl + k الخطوة الاخيرة أرجو منك الضغط بزر الماوس الأيمن على ال command نفسه واختيار Change when expression ثم سوف نكتب terminalFocus الآن يمكنك تجربة الاختصار ctrl + k بداخل التيرمنال
  7. يمكنك ذلك من خلال css باستخدام الأمر التالي html { scroll-behavior: smooth; } أو اذا كنت تستخدم jquery فيمكننا ذلك باستخدام animate وميزة هذه الطريقة أننا نستطيع التحكم في سرعة المتصفح أثناء الصعود والنزول <script> $(document).ready(function(){ $("a").on('click', function(event) { if (this.hash !== "") { event.preventDefault(); var hash = this.hash; $('html, body').animate({ scrollTop: $(hash).offset().top }, 800, function(){ window.location.hash = hash; }); } }); }); </script>
  8. هناك الكثير من المقالات التي تتحدث عن هذا الموضوع, ولكن انصحك أن تقرأ عنه من موسوعة حسوب فهو مشروح بطريقة بسيطة جدا مع الكثير من الأمثلة, يمكنك الذهاب اليه من هنا
  9. يمكنك تسجيل جميع القيم في ملف json بحروف جميعها صغيرة أو جميعها كبيرة , وعند أخذ القيمة المدخلة من المستخدم يمكنك تحويلها الى قيمة كل حروفها صغيرة, او قيمة كل حروفها كبيرة, وهذا يعتمد على كيف سجلت القيمة في ملف json لتحويل القيمة المدخلة من قبل المستخدم الى حروف كبيرة يمكنك فعل ذلك باستخدام جافاسكربت من خلال التابع toUpperCase <input id='test'> <button onclick="myFunction()">Try it</button> <script> function myFunction() { var word=document.getElementById("test").value.toUpperCase(); console.log(word) } </script> عند اخذ القيمة من المستخدم يمكنني تحويلها الى احرف كبيرة من خلال التابع toUpperCase كما تلاخظ فمثلا لو ادخل القيمة test سوف يكون الناتج TEST وبالمثل لو اردت تحويل حميع الأحرف الى احرف صغيرة أستخدم التابع toLowerCase
  10. يمكنك القيام بذلك عن طريق تعريف المتغيرات في دالة ال constructor class Person: def __init__(self,ID, name, age): self.ID = ID self.name = name self.age = age عند انشاء كائن من الكلاس person يمكننا تمرير هذه القيم اليه كالتالي p1 = Person(1,"Mohammed", 20)
  11. لنفترض انه لدينا الصنف foo وبداخله الدالة bar وظيفتها طباعة كلمة yes class foo: def bar(self): print('yes') يمكننا الوصول للدالة bar عن طريق انشاء كائن من الصنف foo ومن ثم استخدام الدالة p1 = foo() p1.bar() كما تلاحظ انشات كائن من الصنف ومن ثم استخدم الدالة التي بداخله bar سوف تكون النتيجة كالتالي yes
  12. بداية نقوم بانشاء الكلاس circle ونقوم بانشاء دالة Constructor ونقوم بتعريف قيمتين نصف القطر (r) وباي PI, ثم نقوم بانشاء دالة حساب مساحة الدائرة ودالة حساب القطر ودالة حساب محيط الدائرة اعتمادا على القيم التي انشأتها في الConstructor, فيكون شكل الكود كالتالي class circle: def __init__(self,r): self.r = r self.PI=3.14 def getArea(self): print('area of circle =',self.r*self.r*self.PI) def getDiameter(self): print('the Diameter =',self.r*2) def getCircumference(self): print('the Diameter =',self.r*2*self.PI) def getInfo(self): self.getCircumference() self.getDiameter() self.getArea() ثم نقوم بانشاء كائن من هذا الكلاس ونقوم باستدعاء الدالة getInfo x=circle(2) x.getInfo() فيكون شكل المخرج هكذا the Diameter = 12.56 the Diameter = 4 area of circle = 12.56
  13. يحتوي C ++ على نوع بيانات منطقي ، والذي يمكن أن يأخذ القيم صحيح --> (1) أو خطأ--> (0), يتم التصريح عن المتغير المنطقي بالكلمة الأساسية bool ويمكن أن يأخذ القيم فقط صحيح أو خطأ: bool isRed = true; bool isBlue = false; لو حاولنا طباعة أحد المتغيرين فسوف تكون النتيحة إما 1 (صحيح أو true) أو 0 (خطأ أو false) cout << isRed; // Outputs 1 (true صحيح أو) cout << isBlue; // Outputs 0 (false خطأ أو )
  14. ليس واضح تماما ما تريدينه ولكن يمكنك دمج 2 ليست من خلال اشارة + فيكون شكل الكود كالتالي list1 = ["Hello", "take"] list2 = ["Dear","Sir"] list3 = list1 + list2 print(list3) اذا لم يكن هذا ما تردينه أرجو منك الشرح أكثر
  15. بداية سوف نقوم بتقسيم النص الذي قمنا بتمريره للفنشكن الى كلمات, ثم نقوم بتعريف مصفوفة فارغة لوضع الكلمات فيها بشرط أن لا تكون موجودة في المصفوفة من قبل, ثم نقوم بالمرور على جميع الكلمات التي قسمناها وذلك باستخدام حلقة تكرار for loop ثم نتحقق هل الكلمة موجودة في المصفوفة, اذا موجود من قبل لا نضيفها أما اذا كانت غير موجودة فنضيفها, ثم نقوم بعمل حلقة تكرار for loop أخرى عدد حلقاتها يساوي عدد الكلمات التي أضفناها الى المصفوفة الفارغة, ثم نقوم بطباعة عدد تكرار الكلمة هذه في النص, فيكون شكل الكود كالتالي def myFun(str): str = str.split() str2 = [] for i in str: if i not in str2: str2.append(i) for i in range(0, len(str2)): print(str2[i], ':', str.count(str2[i])) str ='i i aya aya aya hi' myFun(str)
  16. المشكلة انك تحاول تحديد عناصر غير موجود لاحظ هذا الكود رجاء $("#toggler").click(function(event) { $('#wrap').toggleClass('toggled'); //إضافة طبقة سوداء var right = $('.sidebar').css("right"); if (right == '0px') { $('.sidebar').css({ 'right': '-17rem' }); $('.layer').fadeOut(); } else { $('.sidebar').css({ 'right': '0' }); $('.layer').fadeIn(); } }); $('.layer').click(function () { $('.sidebar').css({ 'right': '-17rem' }); $('.layer').fadeOut(); }); $(".search-icon").click(function () { $(".search-input").slideToggle("slow"); }); جميع العناصر التي تحاول الوصول اليها في هذا الكود غير موجودة في ملف index.html ولذلك لا يتم تنفيذ اي شيء حاول رجاء مراجعة الكود واضافة العناصر ثم حاول مجددا
  17. يمكنك التحقق من ذلك من خلال console والذي يمكنك الوصول اليه من خلال ادوات المطورين والتي هي موجودة في أي متصفح, يمكنك الوصول اليها بالضغط على الزر الأيمن من الماوس في أي مكان من الصفحة ثم اختيار فحص العنصر او inspect element, او من خلال الضغط على زر F12, ثم سوف تظهر لك هذه الشاشة اختر منها console كما هو موضح في الدائرة الحمراء التي قمت برسمها المشكلة ربما تكون بسبب أنك كتبت تابع بطريقة خاطئة أو هناك مشكلة في النسخة التي تستخدمها أو ربما لم تصل للعنصر بشكل صحيح وبالتالي لن تطبق عليه الfunctions, يمكنك معرفة ذلك من خلال console
  18. يمكنك الضغط بالزر الأيمن من الماوس على منطقة tabs واختيار Hide tabs كما هو واضح في الصورة التالية
  19. تحدد خاصية display كيفية عرض العنصر في صفحة الويب, هناك العديد من القيم المرتبطة بهذه الخاصية في CSS, مثل Inline-block و flex , لفهم القيمة Inline-block جيدا يجب أن نحاول شرح القيم inline و block display:inline عند تحديد هذه الخاصية لعنصر ما فان تحديد الطول والعرض له لن يفي بالغرض ولن يطبق عليه لأنه يتبع ارتفاع وعرض الخط الذي يعد جزء منه, ومن الممكن أن يأتي بجابنه العناصر الاخرى التي لديها الخاصية display:inline display:block عند تحديد هذه الخاصية لعنصر ما فإنه يعرض كعنصر كتلة,أي انه يبدأ في سطر جديد ويأخذ مساحة أفقية قدر الإمكان. لا تظهر عناصر مستوى الكتلة في نفس السطر ، وعند تحديد الطول والعرض لهذه العناصر فانها تطبق عليه بعد ان فهمنا ما هي الخاصية inline و block يمكننا شرح ما هي الخاصية inline-block display:inline-block العناصر التي لديها هذه الخاصية تشبه الى حد كبير العناصر التي لديها الخاصية display:inline, أي انها تعرض على مستوى السطر ويمكن للعناصر التي لديها الخاصية inline أن تعرض بجانبها ولا تبدأ في سطر جديد ولكن أيضا يمكننا تحديد الطول والارتفاع لهذه العناصر وهذا ما يميزها عن الخاصيتين inline و block display:flex تختلف قليلا هذه الخاصية عن غيرها ولكن هناك بعض الخصائص التي تتشابه بها مع الخاصية block فهي تعرض في سطر جديد, تستخدم لعنصر يعمل كحاوية وبداخله العديد من العناصر ,تعمل على توزيع ومحاذاة المساحة بين العناصر في الحاوية بشكل ديناميكي يمكنك قراءة المزيد من هنا
  20. لتعريف علاقة many to many نحتاج الى 3 جداول, لنفترض أنه لدينا الجدوال الآتية users و roles و role_user, الجدول role_user يعرف بما يسمى جدول الكسر ويحتوي على الحقلين user_id و role_id في الموذج user <?php namespace App; use Illuminate\Database\Eloquent\Model; class User extends Model { public function roles() { return $this->belongsToMany('App\Role'); } } كما تلاحظي قمت بانشاء التابع roles الذي يعيد جميع الأدوار الخاصة بالمستخدم, يمكن استدعاء التابع roles كالآتي $roles = App\User::find(1)->roles()->get(); في النموذج role أيضا <?php namespace App; use Illuminate\Database\Eloquent\Model; class Role extends Model { public function users() { return $this->belongsToMany('App\User'); } } يمكنك قراءة المزيد عن العلاقة من موسوعة حسوب , يمكنك الذهاب الى العلاقة مباشرة من هنا
  21. هناك عدة طرق لفعل ذلك, يمكنك اعطاء العنصر form الخاصية onsubmit بهذا الشكل <form onsubmit="return false"></form> عند الضغط على زر الارسال لن يتم تحميل الصفحة باستخدام جافا سكربت يمكنك فعل ذلك من خلال هذا الكود var form = document.getElementById("myForm"); function handleForm(event) { event.preventDefault(); } form.addEventListener('submit', handleForm); نقوم بتحديد العنصر باستخدام التابع getElementById ومن ثم نقوم باجراء حدث عليه عند الضغط على زر الارسال يقوم الغاء تحديث الصفحة يمكننا فعل ذلك باستخدام jquery $("#myForm").submit(function(e) { e.preventDefault(); }); بعد تحديد العنصر نقوم باضافة الحدث submit اليه ومن ثم نستخدم التابع preventDefault
  22. هل تقصد تغيير المسار الذي نعمل عليه؟ اذا كنت تقصد ذلك فيمكنك استخدام الأمر cd لتغيير المسار فيكون الامر كالتالي cd D:\storage\sdb1\dev وبالفعل نفس الشيء ينطبق على باقي المسارات
  23. يمكنك مع طباعة كل عنصر أن تلحق له لاحقة محددة, فمثلا يمكنك أن تلحق كل عنصر بحرف ما أو اشارة ما, لماذا لا نلحقه بفراغ؟ لنجرب ذلك for i in range(10): print(i,end=" ") سوف تكون النتيجة كذلك 1 2 3 4 5 6 7 8 9 10 لاحظ لقد استخدمت end ومن خلالها نحدد اللاحقة التي تلحق بالعنصر, نستطيع ان نكتب فيها ما نشاء فمثلا لو كتبت فيها حرف a فسوف تكون النتيجة كذلك 1a 2a 3a 4a 5a 6a 7a 8a 9a 10a لذلك نحدد اللاحقة مسافة فيلحق بعد كل عنصر مسافة, من الممكن ان لا نحدد شيء ولكن سوف تلتصق الأرقام ببعضها البعض
  24. لنجعل كلاس يرث من كلاس اخر سوف نمرر الكلاس الاب كمعامل عند انشاء الكلاس الابن, لنشرح ذلك بمثال عملي, سوف نقوم بانشاء الكلاس الأب والذي اسمه person class Person: def __init__(self, Fname, Lname): self.FirstName=Fname self.Lastname= Lname def getName(self): print(self.FirstName, self.Lastname) الآن سوف ننشيء كلاس الابن والذي اسمه student class Student(Person): pass كما تلاحظي قمت بتمرير الكلاس الأب person كمعامل عند انشاء الكلاس الابن نستخدم الكلمة pass عندما لا نريد إضافة أي خصائص أو دوال أخرى إلى الكلاس الابن الآن لنحاول انشاء كائن من الكلاس الابن ونستخدم دالة getName التي أنشأناها في الكلاس الأب person x = Student("Ali", "Sami") x.getName() سوف تكون النتيجة كالتالي Ali Sami
  25. سوف نقوم بانشاء ليكن اسمه person class person: def __init__(self, name): self.name = name الآن سوف نقوم بانشاء اوبجكت ونمرر له قيمة المتغير name x = person('Ali') print(x.name) سوف تكون النتيحة Ali لنحاول أن نضيف خاصية أخرى للصنف person ونحاول انشاء اوبجكت منه, class person: def __init__(self, name,age): self.name = name self.age = age لاحظ لقد أضفت الخاصية age, الآن يجب أن نمررها للأوبجكت عند انشائه x = person('Ali',20) print(x.age) سوف تكون النتيجة 20
×
×
  • أضف...