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

سمير عبود

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

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

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

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

    34

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

  1. في وسم head يُمكنك إضافتها و تُسمى favicon: <link rel="icon" type="image/png" href="http://example.com/myicon.png"> حيث من خلال الخاصية href تقومين بوضع مسارها و من خلال الخاصية type تُحددين نوعها.
  2. قيمة الإشتراك في أحد دورات الأكاديمية هي 160$ لكل دورة يُمكنك الوصول لهذه المعلومات من خلال صفحة الدورة حيث ستجد كافة المعلومات و الأجوبة الخاصة بالأسئلة الشائعة.
  3. هذه الدالة update مسؤولة عن عملية تعديل و الخطأ المُرفق ناتج عن عملية insert أي من المفروض تكون الدالة store !!
  4. أقصد الأسطر البرمجية التي كتبتها في الدالة بعد التحقق من المدخلات، الأسطر المسؤولة عن إنشاء السجل.
  5. بعد جزء التحقق من المُدخلات هناك جزء تقوم فيه بإنشاء السجل في جدول قاعدة البيانات هل بإمكانك عرض هذا الجزء علينا أو بإمكانك عرض كافة التابع المسؤول عن العملية.
  6. الخطأ المُرفق لا يعني أنه لا يتم التحقق من الحقل important أعتقد أن الأمر تجاوز التحقق وتم التأكد من وجود الحقل important في الطلب. الخطأ المُرفق يعني عدم وجود قيمة للحقل important أثناء عملية تخزين السجل في قاعدة البيانات. هل يُمكنك التأكد من هذا الأمر أو عرض الجزء الخاص بعملية التخزين لنا لكي نُساعدك.
  7. لا أعتقد أن الورقة و القلم ضرورية الأفضل أن تفهم و تُطبق جيداً و هو كافي بشكل كبير أما عندما تريد أن تتذكر شيئاً ما فستجده بسهولة فهناك عدة مواقع بها توثيق لمعظم لغات البرمجة مع أمثلة بسيطة من خلالها يُمكن إسترجاع المعلومة مثل موسوعة حسوب باللغة العربية و هناك مواقع مثل w3schools بالإنجليزية و غيرها. أما إن كنت تُحبذ فكرة الورقة و القلم و ترتاح لها فلا مانع في إستخدامها فلكل شخص طريقته في فهم الأشياء و في التعلم ككل.
  8. نعم تحتاج إلى بعض الأساسيات في اللغات و التقنيات التي تُستخدم في الواجهة الأمامية قبل الخوض في تعلم مسار بناء الواجهات الخلفية لتطبيقات الويب: أساسيات HTML أساسيات CSS أساسيات JavaScript سيكون من الأفضل توظيفهم في تطبيق أو مشروع واحد ثم تنتقل إلى تعلم أساسيات اللغة و التقنيات التي تريد تعلمها في مسار الواجهات الخلفية.
  9. محددات الوصول في جافا هي ثلاثة انواع public، protected، private بالعربية: عام، محمي، خاص، و هي كلمات محجوزة في لغة جافا نستعملها قبل خصائص او وظائف الصنف او الكلاس و هذه الكلمات تُحدد طريقة و تتحكم في الوصول إلى هذه الخصائص او الوظائف. الخاص إذا ما وضعنا الكلمة private قبل الخاصية او الوظيفة سنتمكن من الوصول إليها من داخل الكلاس فقط المحمي إذا ما وضعنا الكلمة protected قبل الخاصية او الوظيفة سنتمكن من الوصول إليها من داخل الكلاس و من الكلاسات الأبناء و من الكلاسات التي تنتمي لنفس الحزمة (package) العام: إذا ما وضعنا الكلمة public قبل الخاصية او الوظيفة سنتمكن من الوصول إليها في أي مكان سواء داخل الكلاس في الكلاسات الأبناء أو في كلاسات أخرى. هناك نوع آخر في جافا غير مُستعمل كثيراً يُسمى الإفتراضي و هو إذا لم نحدد أي كلمة و هذا يعني أن الوصول إلى الخاصية أو الوظيفة يكون في إطار الحزمة ( package ) فقط.
  10. تم إجراء بعض التعديلات على sass في الإصدارات الأحدث يُمكنك حل المُشكل بالتعديل على ملف package.json في الإصدار الموافق للحزمة بهذا الشكل: "sass": "1.32.13", ثم إعادة تنفيذ: npm install && npm run dev
  11. من خلال المسار انت تُمرر مُتغيرين للدالة update احدهما habit و الثاني day لكن بما أن الدالة تستقبل معامل واحد day فإن قيمته هي قيمة المُتغير الأول في المسار يجب أن تكون الدالة بهذا الشكل: public function update(Request $request, $habit ,Day $day)
  12. هل بإمكانك توضيح ما تقوم به و ماهي المشكلة الآن.
  13. قم بتغيير الحقل من body للحقل الموافق لديك. أعتقد أنه task حسب رسالة الخطأ
  14. نعم بإمكانك بدل إنشاء مهمة واحدة إستخدام المعمل (factory) و إنشاء الكم الذي تريده،
  15. هناك عدة طرق للقيام بالأمر: في المتحكم ProjectController عند إنشائك للمشروع في التابع store تستقبل غرض المشروع في متغير و تُنشئ مهمة عامة لهذا المشروع و بهذا الشكل يُصبح عند إنشاء أي مشروع تُنشأ له مهمة عامة: <?php public function store(Request $request) { // ... $project = Project::create($data); $project->tasks()->create(['body' => "مهمة عامة"]); // .. } في النموذج Project تُعيد تعريف الدالة boot ثم تقوم بالتسمع على حدث created بهذا الشكل: <?php protected static function boot() { parent::boot(); static::created(function (Project $project) { $project->tasks()->create(['body' => "مهمة عامة"]); }); } الآن عند إنشاء مشروع تلقائياً يتم إنشاء مهمة له و ستأخذ المهمة في الحقل body مهمة عامة. يُمكن عمل الموضوع بإستعمال المُراقبات (observers)، يُمكن أيضاً عمل الأمر بإستعمال الأحداث (events) و المُتسمعات (listeners) أدعوك للإطلاع على هاذين الأمر و عمل ما تريد القيام به بإستعمال هاتين الطريقتين للتوسع أكثر و التمرن.
  16. بعد إنشاء معمل (factory) لكل من النموذجين Project و Task و ملء الحقول الأساسية بالإضافة إلى عمل العلاقات بين النموذجين بإمكانك القيام بالتالي: Project::factory() ->has(Task::factory()->count(10)) ->count(5) ->create(); في الملف DatabaseSeeder مع إستدعاء الكلاسات في الأعلى. ثم تنفيذ امر البذر الذي سيُنشئ 5 مشاريع و لكل مشروع 10 مهمات.
  17. السبب أن 10.111 هو عدد عشري في هيئة سلسلة نصية و ليس عدد صحيح فلو كان "10" يُمكنك إستخدام int مباشرة: x = "10" print(int(x)) # 10 بما أنه عشري يُمكنك إستخدام float لتحويله من نص إلى float ثم بإمكانك أخذ العدد الصحيح منه: x = "10.111 " print(int(float(x))) # 10 او إستخدام دوال math بالشكل الذي تريد مثال: import math x = "5.6" print(math.floor(float(x))) # 5 print(math.ceil(float(x))) # 6
  18. الخطأ 500 هو خطأ عام فالأفضل أن تٌفعل وضع التطوير و التصحيح حتى تظهر الأخطاء الفعلية التي تُسبب المُشكلة من خلال APP_DEBUG=true في ملف env. تحتاج إلى إستيراد كلاس File الذي تستخدمه تأكد من ذلك: use Illuminate\Support\Facades\File; إن كان profiles عبارة عن مجلد فينقصك / في مسار الملف: if(File::exists(public_path('images/profiles/' . $fileName))){ File::delete(public_path('images/profiles/' . $fileName)); } قد تكون المُشكلة مُشكلة أذونات على الملفات تأكد من إعطائك الأذونات الصحيحة للملفات. إن كنت قد غيرت مكان مجلد public أو قمت بحذفه لسبب ما على الخادم تحتاج إلى تغيير الدالة public_path حتى تقوم بإرجاع المسار الصحيح كما يلي في الملف index.php: $app->bind('path.public', function() { return __DIR__; });
  19. السبب في المُشكلة أنك لا تقوم بإرجاع النتائج من الإستعلام فحالياً المُتغير res يحمل نُسخة من باني الإستعلامات فقط ( Query Builder ) و لا يحتوي على نتيجة ذلك الإستعلام لجلب النتائج إستخدم التابع get بالشكل التالي: $res = DB::table('book_author') ->join('books', 'books.id', '=', 'book_author.book_id') ->where('book_author.author_id', '=', $author_id) ->where('book_author.book_id', '=', $book_id) ->get(); حيث أن التابع get سيقوم بإرجاع collection ثم بإمكانك التحقق من وجود نتائج بالشكل التالي: if($res->isNotEmpty()){ return true; } else{ return false; }
  20. حالياً لا توفر الأكاديمية دورات او فيديوهات لتعلم لغة c++ لكن ما توفره هو محتوى نصي عبارة عن مقالات و دروس مكتوبة بشكل يُساعد في تعلم و فهم اللغة يُمكنك الإطلاع على هذه المقالات من خلال هذا الرابط: سلسلة ++c للمحترفين
  21. بإمكانك إستخدام الدالة dict مع الدالة sorted للوصول إلى ما تريد: d = {2:True, 1:False, 4:None, 3:"Hi"} sortedD = dict(sorted(d.items())) print(sortedD) # {1: False, 2: True, 3: 'Hi', 4: None}
  22. الأمر بسيط جداً فإذا نظرنا إليه بعيداً عن الكود فسنجد أن كل مقال ينتمي إلى قسم معين و من جهة معاكسة كل قسم يملك عدة مقالات و على هذا الأساس نقوم بإنشاء العلاقات ففي النموذج Category نضع: public function articles() { return $this->hasMany(Article::class); } و في الجهة المُعاكسة في النموذج Article: public function category() { return $this->belongsTo(Category::class); } بما أن حقل المفتاح الثانوي يتبع عُرف التسمية فلا داعي لتحديده كمعامل في تعريف العلاقة. الآن إذا كان لديك مثلاً مقال مُحدد و تريد الوصول إلى معلومات القسم الذي ينتمي له فالأمر بسيط جدًا ستقوم ب: $article = Article::find(1); $category = $article->category; $categoryName = $category->name; عندما نصل إلى العلاقة كخاصية فإننا نريد جلب السجل بكافة معلوماته.
  23. أظن أنك تقصد توثيق الحساب و التأكد من الهوية، أعتقد أن هذه العملية لا تتم كلها برمجياً و إنما عن طريق أشخاص يعملون ضمن الموقع الخاص بك و يتم التحقق وفق معايير يتم تحديدها مُسبقاً. بعض التطبيقات حتى تُؤكد هويتك الشخصية تطلب منك أخذ صور سيلفي مع شيء يُثبت الهوية سواء جواز سفر، رخصة سياقة، بطاقة هوية وطنية ... و بعد أخذ الصور من كاميرا الهاتف يتم رفعها مباشرة لسيرفر الموقع و التأكد منها و من مطابقة المعلومات المقدمة مُسبقاً من طرف مُستخدم الحساب، يُمكن أن تتم العملية عبر حجز موعد مع أحد العاملين في الموقع عبر مكالمة صوت و صورة و التأكد من المعايير المحددة مُسبقاً.
  24. قد نرغب أحيانا في تنفيذ بلوك من التعليمات البرمجية إذا تحقق شرط ما او قد نرغب بتكرار مجموعة تعليمات برمجية لعدد معين من المرات و هذه الأقواس أو المعقوفات هي ما تجعلنا نعرف بداية البلوك من نهايته و تُساعد مترجم اللغة في فهم ذلك فمثلاً إن كان لدينا: for (int i = 0; i < 5; i++) { // تعليمات برمجية نريد تكرارها } فما هو موجود بين المعقوفات سيتم تكراره 5 مرات. بعض اللغات لا تعتمد على المعقوفات في تحديدها للبلوك فعلى سبيل المثال مفسر لغة بايثون يعتمد على المسافة البادئة للسطر البرمجي مثال: fruits = ["apple", "banana", "cherry"] for x in fruits: print(x) if x == "banana": break تعليمة الطباعة print و تعليمة الشرط if ينتميان لنفس البلوك.
  25. بإمكانك إستخدام حلقتين متداخلتين من النوع for لتحقيق ما تريد: list1 = ["Hello", "take"] list2 = ["Dear", "Sir"] list3 = [] for i in list1: for j in list2: list3.append(i + " " + j) print(list3) # ['Hello Dear', 'Hello Sir', 'take Dear', 'take Sir'] أيضاً بإمكانك إستخدام الحلقتين المتداخلتين في List Comprehension كما يلي: list1 = ["Hello", "take"] list2 = ["Dear", "Sir"] list3 = [i + " " + j for i in list1 for j in list2] print(list3) # ['Hello Dear', 'Hello Sir', 'take Dear', 'take Sir']
×
×
  • أضف...