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

Adnane Kadri

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

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

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

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

    51

كل منشورات العضو Adnane Kadri

  1. هل تقصد أنك تريد "تحديد دروس الفصل القادم التي لم يتم تنزيلها بعد الموافقة لمستوى الطالب"؟
  2. يحدث هذا لأنك تحاول استعمال تضمين وحدة نمطية مصدرة تصديرا معنونا (named export) في حين أنك تقوم بتصدير وحدة data كوحدة افتراضية. ما تحتاج القيام به هو اما: اعادة تصدير الوحدة data بشكل معنون فيكون: // data.js export const data = { // you data object } او استيراد وحدة data بشكل افتراضي فيكون: import data from './data.js' تعرف عن الوحدات في Typescript
  3. npm هو مدير حزم ووحدات Node بجانب كونه آداة CLI. يقوم npm بالتعامل مع نوعين من التثبيتات: global installs وهي الحزم ووالوحدات التي يتم تثبيتها على الجهاز ولا يختص بها مشروع معين. local install وهي الحزم والوحدات التي يتم تثبيتها على مشروع معين ويكون استعمالها حصرا بذاك المشروع. اما بالنسبة لـ npx فهو منفذ لحزم node دون الحاجة الى ان تكون هاته الحزم مثبتة. اذ يكفي ان تكون مسجلة ضمن حزم node المقبولة. ويعتبر استعماله عمليا عند الحاجة الى تنفيذ حزمة معينة مرة واحدة فقط خلال زمن المشروع، فعلى سبيل المثال: لا يبدوا من المنطقي ان نقوم بتثبيت الوحدة المسؤولة عن توليد مشروع react جاهز ثم نشغلها. سيكون من الافضل لو يتم مباشرة تنفيذها لتوليد المشروع. لأنه لا حاجة من بقاءها ضمن المشروع. يوجد ايضا nvm الذي هو مدير نسخ نود Node Version Manager الذي يمكن بواسطته ادارة نسخ متعددة من NodeJS في آن واحد.
  4. تحدث المشكلة في الغالب بسبب ان المصفوفة sizes تحتوي على مصفوفة اخرى متداخلة nested فهي مصفوفة multi dimensional. وللمرور على عناصر مصفوفة مثل التي لديك اظن انك تحتاج المرور على الكائنات بداخل اول مصفوفة. فيكون: foreach ($sizes[0] as $size) { .. الباقي أيضا قد تحتاج طباعة size من داخل حلقة foreach لفهم كيفية المرور على عناصره.
  5. مثل هاته المشكلة شائعة عند استعمال بوتستراب. اذ يرجع عدم اشتغال هذا المكون الى احد السببين في الغالب: هو أن ملف جافاسكربت الخاص ببوتستراب لديك غير مضمن او مضمن بشكل جزئي او غير صحيح. أو: هو أنك تصف المكون على طريقة نسخة معينة من بوتستراب في حين أنك تستعمل نسخة مخالفة. للتأكد من الأول تأكد من أن ملفك يحتوي على تضمين لملف جافاسكربت بوتستراب ومرفقاته jQuery و popper.js، اما عن طريق cdn: <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/popper.js@1.12.9/dist/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script> او عن طريق مدير الحزم npm: npm install bootstrap وبالطبع في هاته الحالة ستحتاج تضمينه بملف جافاسكربت التطبيق لديك: require 'bootstrap'; ومن ثم تحزيمه: npm run dev أما عن الاحتمال الثاني فيجب التأكد من مطابقة سياق كل نسخة: ان استعملت بوتستراب 5 احرص على ان تعرف خواص القائمة المنسدلة كـ: data-bs-toggle="dropdown" اما ان استعملت بوتستراب 4 فهو ذات السياق الذي لديك.
  6. تحسين الأرشفة والظهور على محركات البحث لا يختص به موقع دون الآخر وانما تتحكم في الموضوع مجموعة من العوامل والنقاط نذكر منها: أنشئ ملف خارطة الموقع sitemap.xml أنشئ ملف robots.txt أنشئ محتواك بعناية واحرص الا يحتوي اخطاء املائية اختر كلمات مفتاحية قليلة المنافسة لزيادة حظوظك تابع جمهور الموقع من على تحليلات قوقل وحاول استقصاء اهتماماتهم قم بانشاء روابط داخلية في موقعك حدث محتواك بشكل دوري يمكنك ايضا الاستعانة بمختص بذلك في مستقل او خمسات مثلا.
  7. هل جربت تشفير هاته الملفات باستعمال base64 لنقلها كسلاسل نصية عادية؟ اذ سيمكن حقن هاته الملفات كسلاسل base64 ضمن الكائن الخاص بك بشكل عادي جدا. ومن ثم سيمكن نقله الى الخادم الذي سيتولى عملية الغاء التشفير بشكل منفصل ومستقل تماما (رغم انه يمكن تخزين هاته السلاسل الناتجة الا انه لا يعد تطبيقا جيدا). أظن انها افضل مقاربة للتعامل مع هذا النوع من الكائنات. صادفنا قبل مدة ليست بالكثيرة احد المشاكل المشابهة التي وجدنا فيها هذا الحل كعملي جدا. خصوصا وانه لا يمكن انشاء nested data forms لارسالها للخادم إلا بشكل يتلاعب كثيرا بهيكلة النموذج الذي نتعامل معه. ملخص العملية: عند رفع ملف ما، يتم تشفيره الى سلسلة base64 على جانب العميل. يتم حقن ناتج التشفير في الكائن المراد ارساله للخادم يستقبل الخادم الكائن كمصفوفة multi dimensional عن طريق المرور على عناصر هاته المصفوفة يقوم بالغاء تشفير هاته السلاسل اما كملفات او كصور ويقوم بحفظها الى قرص التخزين. تحقن مسارات الملفات الى قرص التخزين مكان السلاسل المشفرة الناتج: نقل سليم للملفات دون تجاوز هيكلة الكائن او طريقة ارساله.
  8. نعم لن تواجه اي مشكلة بذلك، أتوقع ان شكل البيانات التي يتم حقنها الى كل من ملفي العرض index.blade.php مختلفتان، ولذلك فإن سيتم تصيير الصفحة في كل حالة بطريقة مختلفة عن الأخرى. فان كان الموجه الاول يعرض الصفحة كـ: return view('index' ,compact('data1')); و الموجه الثاني يعرضها كـ: return view('index', compact('data2')); فإنك ستحتاج بطريقة ما للتحقق من ما ان كان متغير ما ممررا لتصيير الصفحة: @if(isset($data1)) .// طريقة العرض الاولى @elseif(isset($data2)) .// طريقة العرض الثانية @endif ورغم امكانية تطبيق الفكرة الا أنه لا يعد تطبيقا جيدا للشيفرة النظيفة، فهو لا يحترم مبدأ فصل المهام seperating of concerns بالدرجة الأولى. بالاضافة الى مبدأ المسؤولية الواحدة single responsibility. اذ يمكنك على كل حال فصل الاختلاف فقط. وان كان هنالك تشابه بين طريقتي العرض فيمكنك الاحتفاظ بالتشابه في ملف مكون منفصل وتصيير مكونات الاختلاف في كل مرة.
  9. جرب ايضا استعراض الاستعلام كاملا قبل تنفيذه عن طريق ذات الوظيفة السابقة dd: $number = request()->courseNumber; $query = 'select Course_name from .... WHERE Has_Pre IN ('.$number.')'; dd($query); هل يمكنك التقاط صورة للناتج؟
  10. يمكنك استعراض قيمة المتغير الممرر والتأكد من ان هنالك معاملا يتم تمريره بالفعل في تابع المتحكم المستهدف عن طريق الوظيفة dd: $number = request()->courseNumber; dd($number); هل يظهر الرقم المرسل هنا بشكل عادي؟
  11. بالطبع ان التعليق السابق لا يعني نسخ الاستعلام بشكل مباشر (النقاط مثلا تعني بقية الاستعلام مثل ما تصفه)، فهو توضيح لطريقة حقن متغير في سلسلة نصية. ان كانت المشكلة في علامة التنصيص يمكنك تجاهلها عن طريق استعمال علامتي تنصيص بدل واحدة "" أيضا سيتطلب منك هذا معرفة بلارافيل ولغة PHP
  12. انتبه الى وجود خطأ في توصيف اسم احد الجداول المستهدفة: $query = 'SELECT * FROM pack_items JOIN tenders t on pack_items.tender_id = t.id WHERE tender_id = '.$id; ^^^^^^^^^ اظنك تقصد tenders. اذا كنت تحاول تعريف اسم مستعار Alias لجدول tenders فبالطبع لا تنسى الكلمة المفتاحية AS فيكون الاستعلام صحيحا كـ: $query = 'SELECT * FROM pack_items JOIN tenders AS t on pack_items.tender_id = t.id WHERE tender_id = '.$id; او مباشرة: $query = 'SELECT * FROM pack_items JOIN tenders on pack_items.tender_id = tenders.id WHERE tender_id = '.$id;
  13. الفكرة الأولى من مخططات التدفق او خارطة الانسياب هي في تنظيم عملية تدفق البيانات التي تطبق في نقل البيانات من المدخلات الى المخرجات دون التركيز في التفاصيل الدقيقة. فهي الوسيلة لتمثيل خطوات معينة من بداية خوارزمية الى نهايتها، وبالتالي تضمن: أخذ تصور واضح لكاملة للخطوات المطلوبة لتطبيق فكرة معينة بشكل يسهل عليه تحليل المعطيات والمتطلبات الى خطوات برمجية. تسهيل التعامل مع العمليات التي تحتاج خوارزميات معقدة يكثر فيها التشعب والاحتمالات الكثيرة. تمتلك مخططات التدفق بعض العناصر المتفق على دلاليتها للاشارة الى شيء ما، فعلى سبيل المثال: يدل السهم ← في المخطط على اتجاه الانسياب المنطقي للبرنامج وبالتالي يعرف اسبقية خطوة على خطوة اخرى. استفد اكثر من الاجابات على سؤال مماثل: ايضا تعرف على مجموعة برمجيات لرسم وتمثيل مخططات التدفق:
  14. ستحتاج طبعا التوجيه الى تابع المتحكم المعني من داخل الاستمارة بحيث يكون الرقم مرفقا ضمن الطلب. فإن كان التابع index من المتحكم CourseController هو ما يحوي هاته الشيفرة، بحيث يوجه المسار التالي اليه: Route::post('/path' ,[CourseController::class ,'index'])->name('my.path'); فإنك ستحتاج الاشارة الى هذا المسار في الاستمارة: <form action="{{ route('my.path') }}" method="POST"> @csrf @method('POST') <input name="courseNumber" /> .. الباقي ثم استقبال هذا المعامل في المتحكم المعني: $number = request()->courseNumber; $x = DB::select('select Course_name from .... WHERE Has_Pre IN ('.$number.')')
  15. طريقة نمذجة البيانات في جدول تعتمد على هيكلة هاته البيانات بدرجة أولى، يمكن عمل حلقة foreach للمرور على ناتج الاستعلام وطباعة البيانات بالشكل التالي: <table> @foreach($s as $courseName) <tr> <td> {{ $courseName['firstCol'] }} </td> <td> {{ $courseName['secondCol'] }} </td> </tr> @endforeach </table> أيضا قد تحتاج الاستعانة بالأسماء المستعارة Aliases في SQL لتنظيم هيكلة الناتج: $s =DB::select(' select c.Course_name as FirstCol, pc.Course_name as SecondCol from courses c inner join prerequsites p on c.course_id=p.course_id inner join courses pc on p.Has_Pre=pc.Course_id'); ولما لا، استعمال باني الاستعلامات Query Builder في لارافيل لكتابة الاستعلام بشكل أكثر تنظيما: DB::table('courses') ->select('courses.Course_name as FirstCol', 'courses.Course_name as SecondCol') ->join('prerequsites' , 'courses.course_id' , '=' , 'prerequsites.course_id') ->join('courses','prerequsites.Has_Pre','=','courses.Course_id') ->get(); كيف تستخدم منشئ الاستعلامات Query builder للتخاطب مع قاعدة البيانات في Laravel منشئ الاستعلامات في Laravel حسب ويكي حسوب قوالب Blade في Laravel
  16. لا يمكن تشخيص سبب الخطأ او أخذ تصور كامل عنه دون الاطلاع على الشيفرة المسؤولة. يررجى ارفاق تفاصيل اكثر عن المشكلة.
  17. من بين ميزات الدورات التي ذكرتها أنها لا تشترط منك أي خبرة مسبقة أو أي مكتسبات قبلية. وستتخرج كمطور تطبيقات جافاسكربت أو مطور ويب شامل باستخدام لغة PHP. فإن كان السؤال ان كنت ستحتاج كشرط فلا، ولكن ان كان السؤال هل من الافضل ذلك، فنعم بالطبع. لأن الاستزادة من العلم والاطلاع على المفهوم الأوسع ستعطيك نظرة أشمل على المجال وعلى كيفية التعامل معه. اعرف أكثر عن دورة تطوير التطبيقات باستخدام جافاسكربت من خلال هذا الرابط وعن دورة تطوير التطبيقات باستخدام لغة PHP من خلال هذا الرابط.
  18. دورة تطوير تطبيقات الويب باستخدام لغة PHP هي تشكيلة من تقريب ال 60 ساعة فيديوهات تعليمية تعتمد على التطبيق العملي بجانب التعلم النظري. تخصص أيضا مسارا كاملا للعمل بلارافيل كأشهر اطار عمل للغة PHP. تحتوي على المسارات: أساسيات لغة PHP أساسيات إطار العمل Laravel مسار تدريبي لبناء شبكة اجتماعية تشبه انستغرام مسار تدريبي لبناء واجهة تطبيقات برمجية Restful API تطوير موقع للإعلانات المبوبة تطوير نظام لإدارة المحتوى بناء متجر الكتروني لبيع الكتب بناء تطبيق لتقييم الأماكن على الخرائط بناء تطبيق مشاركة فيديوهات تطوير قوالب وردبرس تطوير متاجر ووكومرس وبين كل هذا وهذا يتم المرور على كامل النقاط التي أشرت اليها وأكثر. اعرف اكثر عن الدورة من هنا
  19. وجدت فكرة مشابهة لهاته الفكرة عملية جدا وتخدم غرضا لدينا في أحد المشاريع البرمجية مؤخرا أين احتجنا استعمال هاته الصيغة لإرسال البيانات لا لتخزينها. لأن عيب هاته الطريقة أنها تأخذ مساحة تخزين كبيرة جدا من قاعدة البيانات مقارنة بحفظها في خوادم تخزين سحابية او اقراص تخزين عادية بصيغها الأصلية ك raw binary حيث أن فرق صيغة base64 على raw binary هو حوالي ال 33%، وهو فرق كبير جدا. سيعني هذا بطئا في الاستعلام حولها، وسينعكس هذا سلبا بالطبع على آداء الموقع. يمكنك الاستعانة بصيغة base64 لارسال وتبادل البيانات لا أكثر، فإن كان هنالك سبب ما يدفعك الى عدم استعمال data forms فيمكنك تشفير هاته الصور أو الملفات وإرسالها إلى الخادم وترك عملية إلغاء تشفيرها للخادم.
  20. الطريقة لا تخص ReactNative على وجه الخصوص. يسمى الملف الحاوي للمتغير وحدة نمطية module. ويمكنك تصدير اي متغير في جافاسكربت في بيئة Node من وحدة نمطية عن طريق استعمال الكلمة المفتاحية export على نحو export const exampleVariable=true ثم استيرادها باستعمال import مرفقة باسم المتغير موجود داخل معقوفتين على نحو import {example} from 'test.js' لاحظ انه من المهم استعمال المعقوفتين لأنها تهتص بنوع من التصدير يسمى التصدير المعنون named export. أما في حالة الحاجة إلى استيراد متغير واحد من ملف الوحدة النمطية المستهدفة يمكنك الحاق الكلمة export بالكلمة default ليكون الاستيراد بدون معقوفتين.
  21. أظنك تحاول استعمال التابع prepare على متغير تفترض أنه من صنف PDO لتحضير استعلام قواعد بيانات. تحدث مثل هاته المشكلة عندما لا يتم تهيئة كائن عن الصنف pdo بشكل صحيح، اذ تعتبر PHP المتغير المسند سلسلة نصية او قيمة بوليانية أحيانا في حالة فشل الاتصال. تأكد من حقن سطر مشابه للتالي: $pdo = new PDO('mysql:host=localhost;dbname=test', $user, $pass); في مكان قبل استعمال اي توابع عنه. ايضا لتشخيص المشكلة بشكل دقيق يرجى إرفاق الشيفرة كاملة.
  22. لتغيير نص يمكنك استعمال textContent، اما في الحاجة إلى حقن محتوى HTML يمكنك استعمال الطريقة التي أشرت إليها. قم بإنشاء عنصر واعطه الخصائص اللازمة واحقنه إلى الوثيقة عن طريق appendChild
  23. أظنك تشير بشكل ما إلى ثغرة XSS او Cross site scripting، ويتم استغلالها من خلال innerHTML حين يتم حقن سكريبت أو صور أو وثائق جافاسكربت ضمن الوثيقة تستعمل بشكل أو بآخر لاستغلال بيانات المستخدمين. هذا بجانب كون هذا التابع بطيئ نوعا ما مقارنة بمكافئاته من التوابع. علاوة على أنه قد يكسر هيكل الوثيقة. كبديل أكثر أمانا وأحسن آداءا للتلاعب بعناصر الوثيقة يوجد createElement، appendChild و removeChild وغيرها.
  24. هل يتم الاعتماد على اطار عمل للواجهة الامامية بشكل كامل؟ مثل Vue أو React وهل تظهر أي اخطاء بالـ console؟
  25. لا توجد أي مشكلة في الحقيقة، الرسالة "X packages you're using are looking for funding" تشير الى أنك تقوم باستعمال كذا حزمة تحتاج الى الدعم أو منح هبات donations مقابل الخدمات التي تعرضها بشكل مجاني. أو حتى أن بعض الحزم تستخدم هاته الميزة لدعوة المستخدمين الى الاستفادة من جزئيات أو ميزات اضافية بمقابل مادي. غالبا ما تظهر هاته الرسالة بعد نجاح تثبيت حزمة أو تحديثات اعتماديات composer في مشروع ما. لاحظ أنه يتم الاشارة الى تنفيذ الامر composer fund، وعندما يتم تنفيذه ستظهر قائمة بالحزم المثبتة مرفق بها روابط دعم بيبال أو دعم غيتهب أو مواقعها الرسمية. يمكنك اختبار الأمر وتجربة الوصول الى أحدها.
×
×
  • أضف...