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

Adnane Kadri

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

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

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

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

    52

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

  1. ظهور خطأ أحمر تحت سطر او موضع ما في visual studio code يعني أن هنالك مشكلة بالشيفرة. عدم ظهوره في حالة الخطأ يعني أن هنالك مشكلة اما في عدم تفعيله أو في عدم التقاط المشكلة، فيما يلي بعض الخطوات المقترحة: قم بالذهاب لـ Tools > Options > Text Editor > General > Show error squiggles وفعل خيار ظهور الأخطاء قم باغلاق واعادة فتح البرنامج وانظر ما ان اختفت المشكلة تأكد من ملائمة سياق الكتابة لامتداد الملف، مثال: لا تكتب شيفرة بايثون في ملف بامتداد js. او بدون امتداد
  2. تختلف sorted(t) و t.sort في كيفية تأثيرهما على القائمة t من حيث أن: sorted: تقوم بإرجاع قائمة جديدة تحتوي على العناصر المرتبة من القائمة t. لا تؤثر على ترتيب القائمة الأصلية، وتترك t كما هو. يمكنك استخدامها للحصول على نسخة مرتبة من القائمة دون تغيير القائمة الأصلية. t.sort: تقوم بفرز القائمة t بشكل مباشر. لا تقوم بإرجاع قائمة جديدة، بل تقوم بتغيير القائمة t نفسها لتكون مرتبة. مثال عملي: t = [1, 6, 3, 8, 9] sorted_t = sorted(t) print(t) # [1, 6, 3, 8, 9] print(sorted_t) # [1, 3, 6, 8, 9] t = [1, 6, 3, 8, 9] t.sort() print(t) # [1, 3, 6, 8, 9] التابع list.sort()‎ في بايثون الدالة sorted()‎ في بايثون
  3. السؤال عام ويحتاج تفصيلا أكثر، ولكن بشكل عام سوف تحتاج لدراسة وتحليل مشروع منصة تعليمية كل من التالي: البحث والتخطيط: تحديد الهدف والمتطلبات ومجموع الميزات دراسة المنافسين وتحديد مجموعة الميزات التنافسية التصميم: يشمل ذلك كتابة مختلفة مخططات الاستخدام والحالة وما الى ذلك عمل التصميم الأولي وواجهة الاستخدام UI/UX التطوير: ويشمل ذلك تطوير البنية الخلفية والأمامية للمنصة التكامل والاختبار: وتعنى هاته المرحلة بدراسة تكامل التطبيق مع مختلف الخدمات الخارجية وعلى خدمته لحالات الاستخدام التي تم وصفها ابتداءا النشر والمتابعة: في هاته المرحلة، سوف تحتاج نشر المشروع على استضافة وشراء نطاق له ومتابعة مختلف تفاعلات المستخدمين النهائيين معه غرض تطوير ميزات أخرى. فيما يلي بعض الميزات التي قد يمكن تنفيذها في مثل هاته المشاريع: أضف نظاما لتقييم أداء الطلاب وتقديم اختبارات لقياس تقدمهم. قدم وسائل تعلم تفاعلية مثل تحديات برمجية، مشاريع عملية، وورش عمل. أضف أنظمة للتواصل والمناقشة بين الطلاب والمدرسين. أما بالنسبة للجانب التقني وفي مرحلة التطوير، فقد تحتاج كل من التقنيات التالية: لغة PHP وإطار عمل لارفيل، أو لغة بايثون بإطار عمل جانقو. CSS, HTML, JS للواجهة الأمامية، وقد تحتاج اطار عمل مثل VueJS أو مكتبة مثل ReactJS MySQL كنظام لإدارة قواعد البيانات.
  4. يعتمد هذا على موقفك ابتداءا وعلى هدفك من تعلم اللغة، فإن كنت تنوي العمل كمطور واجهات أمامية أو كمطور فرونت أند أو كمطور ويب شامل فسيتعين عليك تعلمها والإلمام بجزئياتها بطبيعة الحال. أما ان كنت تنوي القيام بتعديلات بسيطة على واجهة التطبيق الخاصة بك، سواءا كمطور واجهة خلفية أو غيرها فسوف لن تحتاج إلا القليل منها وأساسياتها. وعموما، فيما يلي بعض الجزئيات التي تتناولها لغة التنسيقات css: تصميم واجهة المستخدم استجابية الويب مع مختلف شاشات العرض التحكم في التخطيط والهياكل تنسيق الطباعة واجهزة العرض التحكم في الألوان والخطوط الرسومات والتأثيرات والانيميشن
  5. هناك العديد من خدمات الترجمة عبر الإنترنت التي يمكن تكاملها مع بايثون لتحقيق اغراض مختلفة. إليك بعض الخيارات المتاحة: Google Translate API Microsoft Translator API MyMemory Translator Yandex.Translate API قد يمكنك أيضا ايجاد بعض المكتبات التي تختصر عليك ذلك وتستعمل هاته الواجهات، مثال عن ذلك نذكر googletrans.
  6. أظن أن الاستعلام يحتوي جملة أخطاء هي: في INNER JOIN: يجب أن تكون الجداول المشاركة في الانضمام مفصولة بفراغ ويجب أن يكون هناك عبارة ON تحدد كيفية ربط الصفوف بين الجداول. UserGrop.Group: يبدو أن هناك خطأ في اسم الجدول. يجب أن يكون اسم الجدول هو UserGroup، وليس UserGrop. WHERE Email.EmailID: يجب عليك تحديد القيمة التي تريد البحث عنها في هذه العبارة. مثل Email.EmailID = 'some_value'. حل مقترح: SELECT Email.EmailID, Email.Email FROM Email INNER JOIN UserGroup ON Email.EmailID = UserGroup.EmailID WHERE Email.EmailID = 'some_value';
  7. في هذا السياق، تستخدم علامة + كعامل للتحويل إلى النوع (Type Conversion). عندما تضع + قبل prompt(), يتم تحويل القيمة التي تم استرجاعها من دالة prompt() إلى نوع رقمي مهما كانت. فبون العلامة +، قيمة prompt() ستكون سلسلة نصية (String) حتى إذا قام المستخدم بإدخال رقم. ولكن باستخدام +، نقوم بتحويل القيمة إلى نوع رقمي مباشرة. يمكنك الاستزادة بالاطلاع على المقال:
  8. نعم، يُمكن لـ SQLite بطبيعة الحال التعامل مع اتصالات متعددة في الوقت نفسه. ولكن ينبغي أن يتم ذلك بحذر، لأن SQLite ليست قاعدة بيانات متكاملة متعددة المستخدمين بنفس الطريقة التي يمكن أن تكون فيها قواعد البيانات مثل MySQL أو PostgreSQL. في حالة SQLite، عندما يكون هناك اتصالين أو أكثر، يجب التأكد من التنسيق بينهم لتجنب التعارض.فـ SQLite يستخدم قفلا لحماية قاعد البيانات من الوصول المتعدد. في نفس الوقت، إذا كنت تحتاج إلى تطبيق ذي متطلبات أكثر تعقيدا للمستخدمين المتعددين، فقد تفضل النظر في استخدام نظام إدارة قواعد البيانات آخر مثل PostgreSQL أو MySQL.
  9. لا تزال تحتاج تحديث نهاية النطاق (end) عندما يكون العنصر الذي نبحث عنه أقل من العنصر في منتصف النطاق. وبنفس المنطق، تحديث بداية النطاق (start) عندما يكون العنصر الذي نبحث عنه أكبر من العنصر في منتصف النطاق. أيضا سوف تحتاج إضافة تحقق بعد الحلقة للتحقق مما إذا كان لم يتم العثور على العنصر. شيء آخر يجب عليك القيام به هو كسر الحلقة عند الحصول على العنصر. الناتج: arr = [2, 3, 4, 5, 6, 7, 8] start = 0 end = len(arr) - 1 n = int(input("Number: ")) while start <= end: mid = start + (end - start) // 2 if n == arr[mid]: print("Found") break # يجب إيقاف الحلقة بمجرد العثور على العنصر elif n < arr[mid]: end = mid - 1 # تحديث نهاية النطاق ليكون mid - 1 elif n > arr[mid]: start = mid + 1 # تحديث بداية النطاق ليكون mid + 1 if start > end: print("Not Found")
  10. بشكل أعم، هناك عدة حزم توفر واجهات لخدمات Google. ومن بين هذه الحزم، يمكن الإشارة إلى google-api-python-client و googlemaps كحزم مهمة تستخدم للتفاعل مع بعض خدمات Google. وهي مجموعة من المكتبات التي تتكامل مع باييثون للأغراض التي تستوفيها. فـ Google Maps Platform هي مجموعة من الخدمات التي تقدمها Google لتكامل خرائط Google ومعلومات الموقع في تطبيقات الويب والهواتف المحمولة والتطبيقات الأخرى. تقدم Google Maps Platform APIs للمطورين لديهم إمكانية إضافة ميزات مثل خرائط متقدمة، والتوجيه، والبحث عن الأماكن، والتشويق، والعديد من الخدمات الأخرى في تطبيقاتهم. وهو الأمر الذي يمكنك بوساطة هاته المكتبة القيام به في تطبيق بايثون.
  11. يمكنك مقاربة هاته الفكرة باضافة حقل يعنى بذلك في جدول المقالات، وليكن is_published ويحمل قيمة بوليانية تعبر عما ان كان المقال منشورا أو لا، أنشئ ملف تهجير جديد يضيف الحقل الى الجدول: php artisan make:migration add_is_published_to_articles_table --table=articles ثم ضع بداخل الملف المحتوى التالي: public function up() { Schema::table('articles', function($table) { $table->integer('is_published')->default(false); }); } الآن قم بتهجير الملف: php artisan migrate لاحقا، قم بعرض المقالات المنشورة فقط في الصفحات العامة التي يراها الزوار: $articles = Article::whereIsPublished(true)->get(); أنشئ ملف عرض لإدارة المقالات وأضف إليها محتوى مشابه: <form method="POST" action="/articles/{{ $article->id }}/update-status"> @method('PATCH') @csrf <input type="submit" value="تبديل الحالة" /> </form> أضف المسار الجديد الى ملف المسارات: Route::patch('/articles/{article}/update-status', function($article){ $article->update([ 'is_published' => !$article->is_published ]); }); هاته هي الفكرة بمجملها، يمكنك التوسع فيها أكثر عن طريق تنظيمها أو اضافة المزيد من الميزات أو لخدمة حالات استخدام اخرى.
  12. ضف استعلاما جديدا تقوم فيه بطبيعة القيمة الملتقطة من الرسالة الأولى مضافا اليه كلمة welcome، مثال: masig = input("Enter your masig :") print('Welcome '+ masig) الناتج: weclome ahmed
  13. تستخدم حصرا للحصول على قائمة تحتوي على الأسماء (المتغيرات والوحدات) المتاحة في النطاق الحالي. مثال: # مثال بسيط x = 10 y = "Hello, World!" # استخدام dir() للحصول على قائمة الأسماء names = dir() # طباعة الأسماء print(names) سيعرض هذا الكود قائمة بجميع الأسماء المتاحة في النطاق الحالي، والتي هي x و y. يمكنك أيضًا استخدام dir(object) للحصول على قائمة بالأسماء المرتبطة بكائن معين. على سبيل المثال: # مثال على استخدام dir() مع كائن my_list = [1, 2, 3] # استخدام dir() للحصول على قائمة الأسماء المرتبطة بالقائمة list_names = dir(my_list) # طباعة الأسماء print(list_names) هاته هي فكرتها باختصار.
  14. تأكد من أن لا تضع القيمة مباشرة بداخل الأقواس المعقوفة، النتيجة يجب أن تبدوا كـ: const binaryString = '0000011110000111111110000'; const decimalNumber = BigInt(`0b${binaryString}`); console.log(decimalNumber); او مباشرة: const decimalNumber = BigInt(`0b0000011110000111111110000`); console.log(decimalNumber);
  15. إذا كنت تتعامل مع أرقام بت طويلة في JavaScript، يمكن أن يؤدي ذلك إلى فقدان الدقة في بعض الحالات بسبب تمثيل الأعداد في JavaScript باستخدام تنسيق 64 بت للأرقام الثنائية (double-precision floating-point format). لتجنب فقدان الدقة، يمكنك استخدام نوع BigInt على نحو: const binaryString = '0000011110000111111110000'; const decimalNumber = BigInt(`0b${binaryString}`); console.log(decimalNumber);
  16. مرحبا عمر، نعم، يتوفر ذلك في الأكاديمية. يمكنك التواصل مع الإدارة من خلال مركز مساعدة أكاديمية حسوب.
  17. جافاسكربت لا يمكنها القيام بالكتابة على الملفات، أفضل ما يمكن القيام به بهذا الخصوص هو قراءة محتويات الملف ثم التعديل عليها ككائن جافاسكربرت أو سلسلة نصية أو ما الى ذلك ، وأخيرا ارسالها الى الواجهة الخلفية وجزء الخادم ليتم توليد ملف أو استبدال محتويات الملف بالمحتويات الجديدة. قد يمكن أيضا استخدام NodeJS للقيام بالفكرة على نحو مباشر. مثال: const fs = require('fs'); // تخصيص اسيم الملف const filePath = 'example.txt'; // قراءة محتويات الملف fs.readFile(filePath, 'utf8', (err, data) => { if (err) { console.error(err); return; } // تعديل محتوى الملف const modifiedData = data.replace('oldText', 'newText'); // اعادة كتابة محتوى للملف fs.writeFile(filePath, modifiedData, 'utf8', (err) => { if (err) { console.error(err); return; } console.log('تم بنجاح.'); }); });
  18. رغم أن الفكرة تبدوا غير ممكنة بعض الشيء، ولكن قد يمكن التوصل إلى موقع بسيط نسبيا في خلال هاته المدة الزمنية. وسيقتضي هذا تنظيما على مستوى عال من الدقة والالتزام. لنقل أنه يمكن توزيع المهام على النحو التالي: المجموعة A: ستنشغل بإدارة المشروع وتحليل متطلبات المشروع وبتوزيع المهام وتخطيط الصفحات بشكل رسومات وما نحو ذلك. غالبا ما ستكون مكونة من شخص واحد يجب أن يكون هو الأكثر اطلاعا على مجال الويب. المجموعة B: ستنشغل بتعلم وتطوير الواجهة الخلفية للموقع، بما في ذلك هندسة قواعد البيانات. المجموعة C : ستنشغل بتعلم وتطوير الواجهة الأمامية للموقع، وتحويل الهياكل والتخطيطات المقدمة من المجموعة A إلى هياكل ويب حقيقية وتنسيقها باستخدام CSS. وبما أن الوقت ضيق، يستوجب على كل مجموعة أن تقوم بالتدرب على ما تتعلمه على هذا المشروع بالفعل. قد تحتاجون بعض الوقت الآخر لتعلم تقنيات GIT لتسهيل العمل الجماعي بينكم.
  19. الإجابة الأبسط هي: استكمال مسارات الدورة الأخرى. بخصوص العمل المرفق، فهو عموما ممتاز اذ يظهر أنك قد قمت بفصل مكونات التطبيقات على نحو ممتاز بطريقة أشبه بالطريقة المتعرض لها في مسار أساسيات PHP من ذات الدورة. بنية المتحكمات لديك متماسكة وكذلك نماذج البيانات. يتم توصيف الكلاسات المجردة والواجهات على نحو صحيح يستوفي الغرض الأول منهما. ملفات العرض لديك تحتوي هياكل نظيفة وبنيات واضحة، عدى ملفات المكونات الفرعية، إذ يظهر أنها تحتوي على وسوم إغلاق تتعلق بمكونات أخرى، على سبيل المثال لا الحصر، مكون footer: <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script> </body> </html> هذا التوصيف لا يحترم مبدأ المسؤولية الواحدة، فملف المكون متوقف على ملف مكون آخر. وهو لن يكون صحيحا ما لم يتكامل مع مكون آخر. فكر بإصلاحها أو تضمين الوسوم بملف آخر. أيضا لا يبدوا أن المحتوى المحقون بهذا الملف يعبر عن تذييل footer، هل تقصد به تذييل الصفحة؟ أظن أن لا داعي منه ما لم يكن هنالك عنصر footer واضح ذي بنية واضحة تحتوي مثلا عبارة حقوق الملكية أو النشر. عدى ذلك، كل شيء ممتاز وقد أحسنت في العمل على ذلك.
  20. هاته ليست بمشكلة، فـ vs code لا يتوفر على دعم شامل لمحارف اللغة العربية، ولذلك تجدها تظهر بهذا الشكل، وينطبق ذلك على كل اللغات التي تستخدم محارف مثل اللغة العربية أو اتجاه كتابة RTL. عموما، هذا لن يؤثر على سير المشروع أو عمله. يمكنك التغاضي عن ذلك والاستمرار في العمل على مشروعك، ولكن ان شئت، قم بتغيير اسم مجلد المشروع الى لغة أجنبية -مثل الانجليزية- للتخلص من هاته المشكلة.
  21. أظن أن الأمر نفسه يخضع لعدة عوامل أخرى منها مثلا حجم المشروع، فبعض المشاريع تقتضي تنظيما وتخطيطا أكثر نظرا لكبرها وحجمها، في حين أن الأخرى لا تحتاج سوى ترسيم خطوط عريضة للبدء فيها. وعموما يتم الإعتماد على الخطوات التالية للتخطيط لبناء موقع: فهم المتطلبات التصميم الأولي للواجهة الأمامية تطوير الواجهة الأمامية تطوير النظم الخلفية الاختبار والتحسين التوسع أما بخصوص البدء بالعمل ما بين الواجهة الأمامية والخلفية، فانظر الأمر الذي تراه أسهل. ومن وجهة نظر شخصية، ارى أن العمل على الواجهة الأمامية أولى، نظرا لأنه يساعدك في تحليل مختلف حالات الاستخدام وتحديدها.
  22. يمكنك التعامل مع فكرة التعميم عن طريق تمرير أكثر من وسيط إلى صنف الإشعار. مثال عملي: لنقل أننا نريد تخصيص عنوان الرسالة أو أي من معاملاتها، لنقم بتمرير العنوان نفسه كوسيط للباني: class TaskComplete extends Notification { use Queueable; private $details; private $task; private $title; /** * Create a new notification instance. */ public function __construct(Faculty $task, $title) { $this->task = $task; $this->title = $title; } الآن يمكنك استخدام هاته الخاصية من داخل الصنف: /** * Get the array representation of the notification. * * @return array<string, mixed> */ public function toDatabase($notifiable) { return [ 'id' => $this->task->Faculty_ID, 'title' => $this->title, 'User' => Auth::user()->name, 'state' => 0 ]; } الآن ما عليك إلا تخصيص قيمة لعنوان الإشعار بحسب المكان الذي تقوم فيه باستدعاء الشيفرة المعنية. نفس الشيء يمكنك عمله مع أي فكرة يمكنك انطلاقا منها التوسع في تخصيص هذا الصنف. مثل تخصيص المحتوى أو غيرهأ.
  23. عندما تقوم بتثبيت مكتبة على النظام النشغيل (مثل باستخدام مدير حزم مثل Composer لـ PHP أو npm لـ Node.js)، فإنك تجعل المكتبة متاحة لجميع المشاريع على النظام. هذا يعني أنك تستفيد من المكتبة في مشاريع متعددة دون الحاجة لتكرار التثبيت. يمكن أن تكون هناك تبعات إذا تم تحديث المكتبة على مستوى النظام النشغيل وأثر ذلك على جميع المشاريع. أما عندما تقوم بتثبيت مكتبة داخل بيئة برمجية (مثل إنشاء بيئة افتراضية باستخدام virtualenv في Python)، فإنك تعزل المكتبة عن مشروعك وتجعلها متاحة فقط داخل هذه البيئة. الأمر الذي يساعد بطبيعة الحال في تجنب تعارض الإصدارات والتأكد من استدعاء الإصدار المحدد للمكتبة. يمكن أيضًا إعادة إنشاء بيئات برمجية مختلفة لمشاريع مختلفة تعتمد على إصدارات مختلفة من المكتبات.
  24. كفكرة، يمكنك حفظ التواريخ بالتاريخ الميلادي على مستوى طبقة البيانات وقواعد البيانات ثم عرضه بالتاريخ الهجري أو الميلادي على مستوى ملفات العروض. يمكنك الاستعانة بالمكتبات التي تهتم بالتحويل من وإلى التاريخ الهجري من مثل alkoumi/laravel-hijri-date في لارافيل. مثال عملي: ثم بتثبيت الحزمة: composer require alkoumi/laravel-hijri-date أضف موفر الخدمة إلى ملف app.php لمصفوفة providers: 'providers' => [ // ... Alkoumi\LaravelHijriDate\LaravelHijriDateServiceProvider::class, ]; قم باستعمالها في ملفات العروض على نحو: <p> {{ Hijri::FullDate($post->created_at) }} </p>
  25. جرب استعمال findByIdAndRemove بدلا عن remove للحذف، انتبه الى تمرير المعامل اللازم: await Image.findByIdAndRemove(req.params.photoId)
×
×
  • أضف...