-
المساهمات
9872 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
154
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو محمد عاطف25
-
يوجد بعض الاخطاء فى جملة الاستعلام لديك . اولا يفضل استخدام left join فى جميع الاماكن وعدم الجمع بين right join و left join الا اذا دعت الحاجة وهنا لا يجب استخدام right join فانت فقط تريد ملفات المشاريع جميعها سواء كان الربط صحيحا او خاطئا ولا تريد باقى الجداول كاملة . ثانيا هناك خطأ فى الربط بين جدول student و project فقد تم الربط بين Num_STD و id_std وليس Num_std . والاستعلام الصحيح هو التالى SELECT f.path_file , p.name_project, s.Num_std , s.Name_std , s.Email_STD , t.Name_teah, d.Name_dept FROM file_project f LEFT JOIN projects p on p.id_Pro = f.id_p LEFT JOIN student s ON p.Num_STD = s.id_std LEFT JOIN teachers t ON s.id_teah = t.id_teah LEFT JOIN departments d ON t.id_dept = d.id_dept;
- 6 اجابة
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته . الامر بسيط ان شاء الله . ان نظام التشغيل هو المتحكم الرئيسى لديك فى الجهاز وهو ما يقوم بربط الهاردوير بالسوفتوير وينظم طريقة عملهم و التاكد من عدم حدوث اخطاء منهم او اى تداخل بينهم . وهو يوفر لك واجهات برمجية API للتحكم فى الاوامر و تنفيذ المعلومات . وبالفعل كما تقول فان جيمع المعالجات تفهم لغة الاله ولكن المشكلة ليست هنا . لنفرض مثلا ان لدينا شركة معينه . وهناك اكثر من مدير لهذه الشركة وجميعم يتحدثون لغه واحده والموظفين ايضا يتحدثون نفس اللغه . الان اذا جاء مشروع او امر للمدير فان كل مدير تفكيره او ذكاءه او ادارته للامور مختلفه طبعا وليست متشابهة وهناك مدير اكفاء من مدير اخر وهكذا. الان جيمع المديرين سينفذون نفس العمل ولكن بطرق مختلفه وكل مدير سيطلب او ينظم او يرتب العمل من الموظفين بطريقة مختلفه عن الاخر . وجيمعه سيصلون للنتيجة المرجوة ولكن سيكون هنا مدير افضل من مدير اخر فى اشياء معينة وهكذا . ونظام التشغيل فى المثال السابق هو المدير فكل نظام تشغيل يتميز عن الاخر فى شئ او يتعامل مع اشياء واخرى لا او اسرع من الاخر وهكذا . وبما ان كل نظام تشغيل (مدير) لديه طريقة عمل خاصة اذا يجب على من يعمل معه ان يتفهم هذا النظام ويسير عليه . وهكذا فان البرامج والسوفتوير يجب ان تستعمل ال API (النظام) الخاص الذى يوفره نظام التشغيل (المدير) . ولهذا فاذا جئنا ببرنامج مثلا يعمل على نظام Mac اذا فان هذا البرنامج يسير على النظم التى يطلبها المدير Mac واذا حاولنا تشغيل هذا البرنامج على windows مثلا فلن يعمل لان النظام الذى يسير عليه لا يتناسب مع النظام الخاص ب windows .
-
لاحظ ان القيمة التى تم عمل التكرار عليها فى for loop هى صف فى قائمة ( tuples in a list) وحيث ان الصف هو زوج من قيمة ومفتاح . [(1, 2), (3, 4), (5, 6)] حيث ان المفتاح هو الرقم فى يسار الصف اى 1 و 2 و 5 هم مفاتيح وهو المتغير الاول على اليسار i الذى تم تمريره ل for . والقيم هى الرقم فى يمين الصه اى 2 و 4 و 6 هم قيم وهو المتغير الثانى j الذى تم تمريره ل for . اذا نفهم من هذا ان for تقوم بالتكرار على القوائم واذا كانت القوائم تحتوى على صفوف من مفاتيح وقيم فيمكننا الحصول عليها بتمرير متغير ل for وسيصبح المتغير الاول من اليسار هو قيمة المفتاح والمتغير الثانى هو القيمة نفسها .
- 3 اجابة
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته . يوجد العديد من الطرق والحلول لهذه المشكلة و الحل الاسهل والاسرع هو اولا ترتيب المصفوفة من الاصغر الى الاكبر ومن ثم التكرار عليها بعد الترتيب عن طريق حلقة التكرار و اختيار الرقم على حسب الشرط الذى تريده واذا كنت تريد الرقم الاصغر الثانى دائما اذا يمكنك فقط استخدام الرقم الثانى فى المصفوفة وسيكون هو دائما ثانى اقل رقم . ويمكنك تجربة حلول اخرى بنفسك والتفكير فى خوارزمية جيده واخبارنا بما وصلت اليه حتى نرى معك اذا كان ما قمت به صحيحا ام لا .حتى تحقق اقصى استفادة من التعلم . بالتوفيق لك
-
العفو لا شكر على واجب . واياكم اللهم امين
- 18 اجابة
-
- 1
-
-
- 18 اجابة
-
- 1
-
-
الخطأ يخبرك ان طول الكود هو 266 والمسموح لك هو 25 حرف فقط . لذلك من فضلك قم بكتابة هذا السطر فقط فى الموقع والضغط على test STRANGE_STRING = 'ßú' ولا تقوم بكتابة اى شئ اخر سوى هذا السطر
- 18 اجابة
-
- 1
-
-
بدلا من كلمة foo قم بكتابة اى حرفين فقط بيديك من الاحرف اللاتينيه فقط ولو كتبت اكثر من ذلك سيظهر لك خطا. يمكنك كتابة هذه كما وضحت لك سابقا. حيث ان السؤال لايتطلب اى برمجة نهائيا
- 18 اجابة
-
- 1
-
-
لاحظ ان الحل يطلب منك فقط وضع الاحرف فى المتغير STRANGE_STRING ولا يطلب منك اى كود . حيث اذا اصبحت عدد حروف الكود الخاص بك اكثر من 25 بايت اى 25 حرف سيظهر لك هذا الخطأ Solution too large . كل ما عليك هو وضع فقط قيمة ال STRANGE_STRING هكذا STRANGE_STRING = 'ßú' او استخدام اى احرف ولكن يجب على الجملة الا تتعدى ال 25 حرف و الاحرف اللاتينية تحسب كحرفين . حيث ان هذه المسألة لا تهدف الى تعليمك شئ فى البرمجة سوى ان تكون حذرا فى استخدام الدوال المضمنة فى لغات البرمجة فحيث من اللمكن ان يحدث خطأ غير متوقع عند استخدامها دون معرفة الحالات الخاصة .
- 18 اجابة
-
- 1
-
-
نعم صحيح استخدمت all للحصول على النتيجة كمصفوفة حتى استطيع دمجها مع المنشورات السابقة . نعم الموجه push('scripts')@ هو خاص بالاصدار 2 من مكتبة livewire وبما انك تستعمل الاصدار 3 منها فهم قد قامو بتحديث اسم الموجه ليصبح script@ . ولا شكر على واجب اخى أمير . وبالتوفيق لك ان شاء الله
- 4 اجابة
-
- 1
-
-
يوجد عدة انواع من ال joing . اولا ال inner joins ألتى كنت تستعملها مسبقا وهى فقط تقوم بارجاع نتيجة التقاطع فقط واى قيم لم يتم الربط بينهم او فارغين فلن يتم ارجاعهم . اما ال LEFT و ال RIGHT فانك تخبر mysql بان يقوم بارجع الجدول كاملا سواء الجدول الذى يسار كلمة JOIN و يمينها حسب ما سوف تستخدم وبذلك سوف يقوم بارجاع الجدول كاملا سواء كان الربط صحيحا او خاطئا . واذا كان صحيحا سيقوم بارجاع بيانات الجدول المربوط . لاحظ كما فى الصورة السابقة . ويمكنك قراءة هذا الشرح على موقع wiki hasoub. left join و inner join
-
-
اعتقد انك اخطأت فى ربط الجدولين حيث قمت بربطهم ب id_std الخاص بال students . SELECT s.Num_std ,s.Name_std ,s.Email_STD ,p.name_project,t.Name_teah,d.Name_dept FROM student s LEFT JOIN projects p ON p.Num_STD=s.id_std LEFT JOIN teachers t ON s.id_teah=t.id_teah LEFT JOIN departments d ON t.id_dept=d.id_dept; لذلك من فضلك قم بتجربة هذا الكود واخبارى بالنتيجة. وايضا هل يوجد فى جدول students فى العمود Num_std قيمة تساوى 14 و 15 ؟
-
اذا يوجد خطأ بربط جدول projects بجدول students لذلك من فضلك تاكد من ان الربط بين الجدولين صحيح .
-
لاحظ انه يوجد اخطاء فى ربط البيانات لذلك ظهرت فارغه الا اسماء المشاريع . ما هو عمود Num_STD فى جدول projects هل هو عدد الطلاب ام ماذا ؟ واذا كان هو id الطالب اذا لماذا لم يتم ربطه ب id_std ؟ من فضلك قم بتجربة هذا الكود واخبارى بالنتيجة . SELECT s.Num_std ,s.Name_std ,s.Email_STD ,p.name_project,t.Name_teah,d.Name_dept FROM student s LEFT JOIN projects p ON p.Num_STD=s.Num_std LEFT JOIN teachers t ON s.id_teah=t.id_teah LEFT JOIN departments d ON t.id_dept=d.id_dept;
-
اذا جدول projects فارغ ولا يوجد به اى بيانات . وايضا الجداول الاخرى . من فضلك قم بارسال صورة تحوى على بعض البيانات من الجداول التى لديك لنرى اين المشكلة .
-
يبدو انه يوجد اخطاء فى ربط الجداول . اولا من فضلك قم بتغير كلمة INNER JOIN الى LEFT JOIN فى اى مكان لديك فى ال query ومن ثم ارسال النتيجة لى . وايضا هل يمكنك ارسال صورة لشكل هيكل الجداول وان امكن لبعض البيانات فيه .
-
الامر بسيط ويوجد عدة طرق ولكن الافضل هو . اولا انشاء متغير يحمل المنشورات التى تم تحميلها الى الان حيث لا نريد فى كل مرة يصل المستخدم الى اخر الصفحة وناتى بالمنشروات من جديد , ونعطى قيمة افتراضية لهذا المتغير بمصفوفة فارغة . public $postCotainer = []; وايضا نقوم بانشاء متغيرين اخرين احدهما يحمل القيمة الافتراضية لعدد المنشورات التى سيتم تحميلها فى بداية الصفحة او حتى عند التمرير لاسفل الصفحة . والاخر يحمل عدد المنشورات الذى تم عرضها الى الان . public $take = 5; public $skip = 0; والان نقوم بانشاء استماع الى حدث التمرير جديد وفى الدالة نقوم بزيادة عدد المنشورات التى عرضها . protected $listeners = ['scrollPosts'=>'getMorePosts']; public function getMorePosts() { $this->skip += $this->take; } هكذا كل مرة يتم التمرير لاسفل الصفحة نقوم بزيادة العدد الذى تم عرضه . والان فى الدالة getPostsProperty نضع هذا الكود. public function getPostsProperty() { $ids = auth()->user()->following()->wherePivot('confirmed', true)->get()->pluck('id'); $this->postCotainer = array_merge($this->postCotainer,Post::whereIn('user_id', $ids)->latest()->skip($this->skip)->take($this->take)->get()->all()); return $this->postCotainer; } لاحظ هنا اننا اولا استخدمنا دالة array_merge وذلك لدمج المنشورات التى تم تحميلها سابقا الى المنشورات الجديدة الذى سوف يتم تحميلها . ولاحظ اننا فى الاستعلام الخاص بال sql اضفنا داليتن الاولى هى skip اى اننا لا نريد ان ناتى بعدد معين بالمنشورات وهى المنشورات التى تم تحميلها بالفعل ولذلك نمرر لها المتغير skip الذى يحمل عدد المنشروات الذى تم تحميلها الى الان. والدالة take التى تسمح لنا باحضار عدد معين فقط من المنشورات ولذلك ارسلنا لها المتغير take الذى يحمل عدد المنشورات التى نريد عرضها . وبهذا نكون قد انتهينا من الكود الخلفى . ولكن ستجد مشكلة سوف تحدث فى الحدث الذى لديك toggleFollow فمثلا اذا قام المستخدم بالغاء متابعه او متابعه مستخدم جديد فان منشوراته التى تم تحميلها سابقا نريد ان نحذفها او عرضها . لذلك سنجعل عند استماع الى الحدث toggleFollow هو حذف جميع المنشورات التى تم تحميلها سابقا واعادة التحميل من جديد حتى لا تحدث تلك المشكلة.وهذا هو كود المكون كاملا بعد التعديل. <?php namespace App\Livewire; use Livewire\Component; use App\Models\Post; class PostsList extends Component { protected $listeners = ['toggleFollow' => 'resetPosts','scrollPosts'=>'getMorePosts']; public $take = 5; public $skip = 0; public $postCotainer = []; public function resetPosts() { $this->postCotainer = []; $this->take = 5; $this->skip = 0; } public function getPostsProperty() { $ids = auth()->user()->following()->wherePivot('confirmed', true)->get()->pluck('id'); $this->postCotainer = array_merge($this->postCotainer,Post::whereIn('user_id', $ids)->latest()->skip($this->skip)->take($this->take)->get()->all()); return $this->postCotainer; } public function getMorePosts() { $this->skip += $this->take; } public function render() { return view('livewire.posts-list'); } } اما فى الواجهة الامامية فسوف نضيف استماع الى حدث التمرير و التحقق من ان المستخدم قد قام بالتمرير الى اخر الصفحة . واذا كان قام بالتمرير الى اخر الصفحة نقوم بارسال الحدث scrollPosts الذى سوف يقوم باحضار المزيد من المنشورات وبذلك كلما قام بالتمرير ياتى بالمنشورات الجديد . <div class="w-[30rem] mx-auto lg:w-[95rem]"> @forelse($this->posts as $post) <livewire:post :post="$post" :wire:key="'post_'.$post->id" /> @empty <div class="max-w-2xl gap-8 mx-auto dark:text-gray-100"> {{ __('Start Following Your Friends and Enjoy.') }} </div> @endforelse </div> @script <script> window.onscroll = function(ev) { if ((window.innerHeight + Math.round(window.scrollY)) >= document.body.offsetHeight) { $wire.dispatch('scrollPosts'); } }; </script> @endscript وهكذا قد انتهينا من جميع الاكود ويمكنك استعمالها وستعمل معك . ويمكنك تغير القيمة الافتراضية للمتغير take على حسب عدد المنشورات التى تريدها حيث انا اعطيته قيمة ابتدائية ب 5
- 4 اجابة
-
- 1
-
-
ويمكنك الضغط على قائمة File ثم قم بتفعيل خيار auto save لحفظ التعديلات تلقائيا دون الحاجة للضغط على CTRL + s
-
يبدو انن قد نسيت حفظت التعديلات التى على الملف . لاحظ الدائرة البيضاء المشار اليها فى الصورة التاليه . معنى هذه الدائرة هو انه تم تعديل الملف ولم يتم حفظ التعديلات . لذلك قم بالضغط على CRTL + S لحفظ التعديلات وتاكد من ان الدائرة البيضاء قد اختفت . وقم بالمحاولة مرة اخرى وسيعمل معك ان شاء الله.
-
وعليكم السلام ورحمة الله وبركاته . نظام التشغيل هو الطبقة الوسيطة بين الهاردوير والسوفتوير وهو المتحكم الاساسى والرئيسى فى الهاردوير الخاص بالجهاز . فهو من يقوم بتوصيل الاوامر من اجهزة الادخال الى اجهزة الاخراج و الى ايضا الهاردوير . فعند الضغط على زر الفأرة او حتى على زر من ازرار لوحة المفاتيح فانه يقوم بارسال هذا الامر الى البرنامج او السوفتير المطلوب ويخبره بحدث الضغط او تحريك الفأرة ثم مثلا يرسل البرنامج الامر الى نظام التشغيل مثلا بطباعة الحرف على الشاشة او تحريك الفأرة ثم ياخذ نظام التشغيل الامر ويرسله الى كارت الشاشة مثلا او اللى الهاردوير المطلوب ويظهر الحرف او يتم المهمة المطلوبة . اما عملك كمبرمج فهو يعتمد على الوظيفة التى تقوم بها . فان مهندسين نظم التشغيل والكومبايلرز هم من اقوى و اذكى المهندسين فهو من يقوم بهندسة نظام التشغيل كاملا و التحكم فى الهاردوير . اما مهندسين البرمجيات فانت فقط تقوم بكتابة البرنامج على حسب اللغه التى تعمل عليها والكومبايلر هو المسؤل عن تحويل الكود الخاص بك الى اوامر يستطيع نظام التشغيل فهمها والتعامل معها ومن ثم نظام التشغيل هو من يقوم باعطاء هذه الاوامر الى الهاردوير الصحيح . وبدون نظام التشغيل فان الهاردوير لا قيمة له فسيصبح عبارة عن قطعة لا قيمة لها فنظام التشغيل هو مثل العقل المسئول عن الجسم من تحريكه الى التحكم فيه بشكل كامل . ويمكنك قراءة هذه المقالات لتتعرف اكثر عن نظم التشغيل .
-
الخطأ الذى يظهر لك بسبب انك تحاول تثبيت اخر اصدار من لارافيل وهو يتطلب php اصدار 8.2 فما اعلى ويبدو انه لديك اصدار php 7 . ولذلك الحل هو هو تثبيت لاراجون يدعم اصدار php 8 او انشاء مشروع لارافيل دون تحديد اصدار لارافيل و هو سيتعرف تلقائيا على اصدار php لديك وانشاء مشروع متوافق معه . لذلك من فضلك استخدم الامر التالى . composer create-project laravel/laravel ex-t1
-
الخطأ الذى يظهر لديك هو انه يوجد بعض الملفات المفقودة يبدو ان التثبيت لم يكتمل لديك . اولا قم بفتح laragan as administrator ومن ثم قم بالمحاولة مرة اخرى . اذا ظلت المشكلة كما هى فيجب الغاء تثبيت laragon واعادة تثبيته مرة اخرى وذلك سيحل المشكلة ان شاء الله ولكن يجب التاكد من التثبيت قد اكتمل وتم بنجاح.
-
وعليكم السلام ورحمة الله وبركاته . خادم ال FTP هو خادم يوفر لك بروتوكول ال ftp الخاص بنقل البيانات من والى الخادم . وكل خادم منفصل عن جميع الخوادم الاخرى على الانترنت اى ان كل خادم لديه الملفات الخاصة به وليس جميع الملفات على الانترنت . لناخذ مثال مثلا الهارد الخاص بك هل يوجد فيه جميع الملفات التى توجد عند جميع الاشخاص ؟ ام الملفات الخاصة بك فقط ؟ واذا اردت مثلا نقل ملف من او الى الهارد الخاص بك ماذا تفعل ؟ الهارد الخاص بك هو مثل ال ftp server يوجد فيه بيانات خاصة بصاحب الخادم فقط . واذا اراد صاحب الخادم السماح بنقل الملفات من والى سيرفره سيسمح باستخادم بروتوكول ftp كما تقوم انت بتوصيل الهارد او الفلاشة الذى تريد نقل منها او اليها الملفات . اما بالنسبة لل ip فيجب التفرقة بين نوعين local ip و Public ip . ال local ip هو ال ip الذى يقوم الراوتر بتوفيره لجهازك وهذا ال ip لا يمكن ان يتكرر على الشبكة الخاصة بك اى لا يمكن ان يوجد جهازين على نفس الراوتر لهما نفس ال ip . لنفرض مثلا انه يوجد جهازين متصلين على الراوتر الخاص بك . وعنوان الراوتر هو 192.168.1.1 اذا سيكون اول جهاز ال ip الخاص به مثلا هو 192.168.1.10 ولا يمكن للجهاز الثانى ان يكون له نفس هذا ال ip . ولكن من الممكن ان جارك مثلا او شخص اخر لديه راوتر اخر ومتصل به ويكون عنوانه هو 192.168.1.10 حيث انهم منفصلين عن بعضهم وال local ip هو خاص بالراوتر نفسه كما وضحت لك . اما ال public ip وهذا هو ال ip الذى تقوم بتزويده لك مقدم خدمة الانترنت ISP وهذا هو ال ip الذى تراه المواقع عند الاتصال بها وهو الذى يمكنك من تصفح المواقع وهذا ال ip هو الخاص بالراوتر وهذا مستحيل ان تجد راوترين لهم نفس ال public ip . ولكن اذا اتصل جهازين بنفس الراوتر فان ال public ip الخاص بهم هو نفس ال ip الخاص بالراوتر اى اذا ذهبت الى موقع https://www.myip.com/ ودخلت من جهازين مختلفين ولكنهم متصلين بنفس الراوتر ستجد ان ال ip واحد ولكن اذا قمت بالدخول لنفس الموقع ولكن من راوتر اخر ستجد ان ال ip مختلف . وايضا هنا معلومة اخرى اذا لم تكن مشترك فى خدمة الانترنت الثابت اى static ip و هى خدمة توفرها معظم شركات الانترنت فان كل ما تقوم باطفاء وتشغيل الراوتر فان ال public ip الخاص به سيتغير تلقائيا حيث ان مزود الخدمة حين اطفاء الراوتر سيقوم باعطاء ال ip الذى كنت تاخذه لشخص اخر وحين اعادة تشغيل الراوتر فان مزود الخدمة سيبحث عن ip ليس مستخدما وسيقوم باعطاءه لك.
-
الخطأ لديك انك تقوم باستخدام foreach بداخل foreach اخرى لهذا يتم تكرار الصور وايضا المحتوى . ويوجد خطأ اخر هو انك تقوم بانشاء المحتوى بداخل ال foreach وهذا خاطئ بل يجب انشاء المحتوى قبل ال forech . لذلك الحل هو اخراج الكود من اول جزء if($check) خارج ال foreach الاولى وهذا سوف يحل المشكلة لديك. واذا كان هذا السؤال خاصا بدرس من دروس الدورات فمن فضلك مستقبلا قم بالتعليق اسفل الدرس فى التعليقات وذلك لمساعدتك بشكل افضل
- 2 اجابة
-
- 1
-
