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

Adnane Kadri

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

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

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

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

    52

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

  1. يمكنك تكبير الشاشة في VirtualBox Ubuntu بـ: التوجه إلى View ثم اختر Full screen mode أو مباشرة استعمل اختصار لوحة المفاتيح: HOST + F
  2. في لغات البرمجة مثل C, C++, Java وغيرها، كلا continue و break هما عبارتان مستخدمتان للتحكم في تنفيذ الحلقات (loops)، مثل for و while و do-while. ولكن لهما وظائف مختلفة. break: عند استخدام break داخل حلقة، فإنها تؤدي إلى إيقاف تنفيذ الحلقة فوراً والخروج منها. يتم استخدام break عادةً عندما تريد إنهاء التنفيذ والخروج من الحلقة مباشرة بناءً على شرط محدد. عند استخدامه في حلقة switch، يقوم break بإيقاف التنفيذ والخروج من الـ switch. مثال: for (int i = 1; i <= 5; i++) { if (i == 3) { break; // عندما تصبح قيمة i تساوي 3، يتوقف الحلقة ويتم الخروج منها. } cout << i << " "; } // Output: 1 2 continue: عند استخدام continue داخل حلقة، يتم تجاوز بقية الكود بعد continue والانتقال إلى التكرار التالي من الحلقة. يستخدم continue عادةً عندما تريد تجاوز بعض التكرارات في الحلقة بناءً على شرط محدد. لا يؤثر continue في حلقة switch. مثال: for (int i = 1; i <= 5; i++) { if (i == 3) { continue; // عندما تصبح قيمة i تساوي 3، يتم تجاوز باقي الكود والانتقال للتكرار التالي. } cout << i << " "; } // Output: 1 2 4 5 وكملخص، يقوم كلا منهما بما يدل عليه من معنى فـ break بمعنى الوقف أو الكسر يقوم بإيقاف تنفيذ الحلقة والخروج منها، أما continue بمعنى الاستمرار فهو يقوم بتجاوز بقية الكود بعد continue والانتقال للتكرار التالي من الحلقة.
  3. لا يعمل الكود بطبعية الحال لأن استعلام switch لا يقبل عبارات expressions وإنما قيما فقط، فالمسند إلى استعلامات case يجب أن يكون إما محارف literals أو ثوابت constants، وبما أن switch لا يقبل ذلك فالكود لن يعمل بطبيعة الحال. الطريقة الصحيحة لإستعمال ذلك هي باستخدام شرط if else بشكل عادي: let val = 40; if (val > 30) { console.log("Very good " + val); } else if (val > 20) { console.log("Good " + val); } else { console.log("Failed " + val); }
  4. المقارنة ما بين PHP Laravel والتجميعات على NodeJS هي من أكثر المقارنات التي باتت تعقد حاليا، والإجابة باختصار: كلاهما خيار ممتاز. وفيما يلي مقارنة مفصلة: من حيث لغة البرمجة: Node.js يستخدم JavaScript كلغة برمجة على الجانب الخادم (server-side)، في حين أن Laravel يستخدم PHP. اختيار لغة البرمجة يعتمد على تفضيلاتك الشخصية والخبرة التقنية السابقة. من حيث الأداء وقابلية التوسع: Node.js مبني على محرك V8 للجافاسكريبت ويعتبر غير متزامن (non-blocking) وقابل للتوسع بشكل جيد للتعامل مع العديد من الاستفسارات المتزامنة (concurrent requests). من ناحية أخرى، Laravel يعتمد على نمط MVC (Model-View-Controller) ويتميز ببنية منظمة ويمكنه التعامل مع تطبيقات متوسطة حتى كبيرة الحجم. من حيث بيئة التطوير والاختبار: Node.js يوفر بيئة تطوير سريعة الاستجابة وتجريبية حيث يمكن تحديث التغييرات على الفور ورؤية النتائج. بالمقابل، Laravel يعتمد على تشغيل السيرفر المحلي ويتطلب إعادة تشغيل الخادم لرؤية التغييرات. من حيث مجتمع المطورين والدعم: كلا الإطارين لهما مجتمعات نشطة من المطورين والدعم المتاح. يمكنك الوصول إلى العديد من المصادر والمكتبات والتوثيق لكلا الإطارين. من حيث اختيار قاعدة البيانات: يمكنك استخدام أي قاعدة بيانات مدعومة بواسطة Node.js مثل MongoDB أو MySQL أو PostgreSQL. Laravel يدعم قواعد البيانات العديدة مثل MySQL و PostgreSQL و SQLite وغيرها. أما من ناحية شخصية وقد سبق لي العمل بكليهما في مشاريع مختلفة، لا زلت أفضل التعامل مع PHP Laravel مقابل NodeJS، اذ أجدها أكثر تخصصا وأكثر حيازة على المكتبات والحزم، هذا بجانب عامل دعم أغلب استضافات العملاء لها.
  5. يحتمل أن تكون هنالك أسباب عدة لمثل هاته المشكلة، ولذلك: تحقق من إعدادات الـ CORS في الخادم الخاص بك. خصوص إذا كنت تستخدم طريقة مصادقة مباشرة عبر API (مثل JWT)، قد تحتاج إلى ضبط إعدادات CORS للسماح بالوصول إلى الموارد عبر النطاقات المختلفة. تأكد من عدم وجود أي أخطاء في الكونسول مادامت أن المشكلة تحدث على مستوى تطبيق رياكت، قد يكون هنالك سبب يجعل من عدم الممكن تخزين التوكن على تطبيق العميل. قم بإختبار كل من التطبيقين على حدة واعمل على تضييق نطاق المشكلة، فتطبيق العميل مثلا يمكنك اختباره على بيئة التطوير مربوطا بتطبيق الخادم مرفوعا على الخادم، ثم تطبيق الخادم باستخدام بوستمان وحدد المشكلة. بما أنك تقوم بفصل تطبيق الخادم عن تطبيق العميل، فتأكد أيضا من تحديد base url المناسب لتطبيق الخادم في تطبيق العميل، يحتمل أنه لا يزال يشير إلى base url الخاص ببيئة التطوير.
  6. حل آخر يمكنك اعتماده لمقاربة نفس النتيجة، هو تعويم عناصر li داخل ol نحو اليسار: ol li{ float: left; margin: 0 10px; padding: 0 10px; } سيجعل هذا العناصر تظهر بشكل سطري متتال. توثيق الخاصية float في CSS
  7. ستحتاج في هذا القيام باستعمال حركية css لضمان مثل هذا السلوك، قم أولا بوصف أيقونة القائمة باستخدام قواعد css: <span class="sidebar-button list"> <span class="bar-1"></span> <span class="bar-2"></span> <span class="bar-3"></span> </span> .sidebar-button.list{ display: flex; flex-direction: column; justify-content: space-between; width: 25px; height: 15px; } .sidebar-button.list span{ width: 100%; height: 2px; background-color: black; } نفس الشيء بالنسبة لأيقونة علامة x: <span class="sidebar-button list"> <span class="bar-1"></span> <span class="bar-2"></span> <span class="bar-3"></span> </span> .sidebar-button.xmark { position: relative; display: inline-block; width: 20px; height: 20px; } .sidebar-button.xmark .bar-1, .sidebar-button.xmark .bar-2, .sidebar-button.xmark .bar-3 { position: absolute; width: 100%; height: 2px; background-color: black; } .sidebar-button.xmark .bar-1 { transform: rotate(45deg); } .sidebar-button.xmark .bar-2 { transform: rotate(-45deg); } .sidebar-button.xmark .bar-3 { display: none; } الآن ما عليك إلا تبديل كلاس xmark و list بالنسبة لعنصر sidebar-button باستخدام جافاسكربت وستحل المشكلة: function toggleClass(){ let target = document.querySelector('.sidebar-button') if(target.classList.contains('list')) { target.classList.remove('list') target.classList.add('xmark') } else{ target.classList.add('list') target.classList.remove('xmark') } } ثم لبعض الحركية أضف ميقات التحويل: .sidebar-button span{ transition-duration: .5s; } مرفق مثال حي.
  8. بالطبع سيمكنك المحايلة لتحقيق ذلك، جرب الاستعلام التالي: select user_id, COUNT(user_id) AS MOST_FREQUENT from posts GROUP BY user_id ORDER BY COUNT(user_id) DESC سيعيد هذا مجموع الصفوف من جدول المنشورات مجمعة بحسب المعرف user_id ومرتبة تنازليا بحسبه.
  9. this هي واحدة من الكلمات المحجوزة في جافاسكربت وعدة لغات، وتستخدم في البرمجة الكائنية التوجه للإشارة إلى الكائن الحالي،وفي الوصول إلى الخصائص والأساليب الموجودة في هذا الكائن الحالي. ولذلك عند استخدام "this" داخل دالة أو تابع معين، يتم ربط "this" بالكائن الذي تم استدعاءه منه الدالة. هذا يسمح بالوصول إلى البيانات والسلوك المرتبطة بالكائن. مثال عملي: // تعريف كلاس Person class Person { constructor(name, age, address, job) { this.name = name; this.age = age; this.address = address; this.job = job; } sayHello() { console.log(`Hello, my name is ${this.name}`); } calculateBirthYear() { const currentYear = new Date().getFullYear(); const birthYear = currentYear - this.age; return birthYear; } } // إنشاء كائن Person جديد const person1 = new Person("John", 30, "New York", "Engineer"); // استخدام الخصائص والطرق في الكائن console.log(person1.name); // John console.log(person1.calculateBirthYear()); // يعتمد على السنة الحالية person1.sayHello(); // Hello, my name is John في المثال أعلاه، تم إنشاء كلاس "Person" يحتوي على خصائص مثل "name" و "age" و "address" و "job"، بالإضافة إلى توابع "sayHello" و "calculateBirthYear". بحيث تم استخدام معاملات البناء (constructor) لتهيئة الكائن مع القيم المناسبة لكل خاصية. يمكننا إنشاء كائن "person1" باستخدام الكلاس "Person" والوصول إلى الخصائص واستخدام الطرق في الكائن. يمكننا بطبيعة الحال إنشاء أكثر من نموذج من هذا الكلاس، ولنقل person2 و person3 مثلا .. الآن، الكلمة المفتاحية this سوف تميز الخصائص الخاصة بالكائن person2 عن الخصائص الخاصة بالكائن person1، بحيث أنها تشير إلى الكائن الذي يتم من عليه استدعاءها حصرا. توضيح أكثر بساطة: لنقل أننا نريد إنشاء كلاس Car، تتفرع عن هذا الكلاس السيارات BMW, Audi و غيرهما.. يحوي هذا الكلاس تابعا يقوم بحساب سرعة السيارة القصوى. لكي نشير إلى السيارة الواحدة من داخل الكلاس، يجب أن نستعمل الكلمة المفتاحية this لكي تعرف جافاسكربت أن الخاصية التي نحاول قراءتها تخص نموذج Audi من هذا الكلاس فقط.
  10. اضافة لما أشار اليه المدربون، فإن هذا المعامل % يسمى عامل الباقي Remainder operator أو عامل المعامل Modulo operator، وهو يستخدم في لغات برمجة عدة لتحصيل باقي قسمة عدد على آخر. ولإستعمال هذا المعامل في التحقق من الأعداد الزوجية يمكنك التحقق من ما ان كان باقي قسمة هذا العدد على 2 مساويا للصفر. // العدد الذي نريد التحقق منه let number = 5; // حساب الباقي من القسمة على 2 let remainder = number % 2; // التحقق إذا كان الباقي يساوي 0 if (remainder === 0) { console.log("العدد زوجي"); } else { console.log("العدد فردي"); } اضافة الى استعمالاته في تحديد الأعداد الفردية من الزوجية، يمكن أيضا استعماله لأغراض أخرى من مثل: تحديد الزمن والتوقيت: في بعض الحالات، يمكن استخدام المعامل "%" لتحديد الزمن والتوقيت بناءً على الباقي. على سبيل المثال، يمكن استخدامه للتحقق مما إذا كانت الدقائق الحالية تقسم على 15 بدون باقي، مما يشير إلى وقت معين (مثل تنفيذ مهمة كل 15 دقيقة). التكرار: يمكن استخدام المعامل "%" للتحكم في التكرار. على سبيل المثال، يمكن استخدامه لتنفيذ سلسلة من الإجراءات كل X مرة، حيث يتم التحقق من باقي العدد الحالي عند القسمة على X.
  11. جرب اتباع الخطوات التالية: قم بتثبيت إضافة تهيئة الشيفرة (Formatting Extension) التي تفضلها، مثل Prettier أو ESLint أو Beautify. يمكنك البحث عنها في قائمة الاضافات Extensions في Visual Studio Code وتثبيتها. بعد تثبيت الاضافة، افتح ملف الإعدادات في Visual Studio Code بالضغط على Ctrl + , في ويندوز أو Cmd + , في ماك، أو من خلال الذهاب إلى قائمة "File" ثم "Preferences" ثم "Settings". في نافذة الإعدادات، قم بالبحث عن "format" في شريط البحث العلوي. ستظهر لك خيارات متعلقة بالتنسيق والتهيئة. قم بالتحقق من الإعدادات التالية: بعد ضبط الإعدادات، يجب أن يقوم Visual Studio Code بتنسيق الشيفرة تلقائيًا عند حفظ الملفات بناءً على إعدادات الامتداد الذي قمت بتثبيته. قد تحتاج أيضا إلى تثبيت الأدوات المطلوبة للامتدادات مثل Prettier أو ESLint بشكل منفصل. يمكنك تثبيتها باستخدام npm أو yarn عن طريق القيام بالتثبيت المحلي لمشروعك أو تثبيتها على مستوى النظام بشكل عالمي globally.
  12. بما أنك تقوم بتجاوز عنصر audioBlob، فما عليك إلا ارسال الـ Blob الخاص بملف الأوديو وسيتم التعامل معه بشكل اعتيادي جدا، لنقم مثلا بإنشاء وظيفة جديدة هي وظيفة uploadAudio بحيث تقوم بـ: إنشاء formData نقوم بإضافة عنصر الأوديو إليه. ارسال ملف الصورة إلى الخادم. function uploadAudio() { // إرسال الصوت إلى الخادم هنا var formData = new FormData(); formData.append("audio", audioBlob, "recording.webm"); fetch("URL_TO_SERVER_ENDPOINT", { method: "POST", body: formData }) .then(response => response.json()) .then(data => { console.log("تم رفع الصوت بنجاح!", data); // استجابة من الخادم تحتوي على معلومات الصوت المرفوع ومعالجتها وتخزينها في قاعدة البيانات هنا }) .catch(error => { console.error("حدث خطأ أثناء رفع الصوت", error); }); } بعد هذا سيمكنك التعامل مع الملف من خلال الباك اند بشكل عادي جدا.
  13. يحدث هذا بوساطة جداول، بحيث يكون هنالك جدول وسيط pivot table يمتلك عمودين أجنبيين كل منهما يمثل عمود id من أحد الجدولين بحيث تكون كل ثنائية من هذين العمودين هي ثنائية فريدة. عدد السجلات في هذا الجدول هو ما يمثل عدد العلاقات. مثال عملي: ننشئ جدول post_category_table يحوي هذا الجدول عمودين post_id و category_id كل ثنائية post_id, category_id هي ثنائية فريدة الآن لما نحاول تصنيف منشور في عدة تصنيفات نقوم بـإنشاء عدة سجلات كل منها يحمل post_id المنشور وcategory_id الفئة المستهدفة. طريقة القراءة: طريقة جلب تصنيفات المنشور تكون بقراءة قيم category_id التي نجلبها من سجلات هذا الجدول الوسيط التي فيها قيمة post_id تساوي قيمة معرف هذا المنشور. طريقة جلب منشورات تصنيف معين تكون بقراءة قيم post_id التي نجلبها من سجلات هذا الجدول الوسيط التي فيها قيمة category_id تساوي قيمة معرف هذه الفئة. في لارافيل مثلا، يتم ذلك بشكل تلقائي عند إنشاء pivot table يتبع هاته الطريقة في التسمية، يتم تصريح تابعين باسم categories و posts في نموذجي Post و Category على التوالي: public function categories(){ return $this->hasMany(Category::class); } .. public function posts(){ return $this->hasMany(Post::class); } أما على مستوى الواجهة الأمامية، فيمكنك لعمل مثل هاته النمذجة استعمال مكتبة مثل tags input.
  14. كل منهما إطار عمل جاء لخدمة أفكار من مثل التصيير على الخادم server side rendering وتوليد المواقع الثابتة statis site generation، عدا أن الأول (NextJS) قائم على ReactJS في حين أن الثاني (NuxtJS) والمستوحى أصلا من الأول قائم على VueJS. عند استعمال React أو Vue مباشرة قد يكون هنالك الكثير من الأشياء المكررة والعمليات الروتينية التي يتوفر عليها اطارا العمل بشكل مدمج مسبقا built-in. هذا بجانب أن مكتبة React و Vue كانتا تفتقران لمفهوم الـ SSR قبل ذلك، فالمكونات والصفحات التي يقومان بتوليدها كانت تتم على جزء العميل، ولذلك فإن فهرسة محركات البحث لم تعد تشملها. فمحركات البحث تطلب الصفحات والمعلومات الوصفية وما الى ذلك من الخادم وليس من العميل. ولذلك فإنه هاته الفكرة بالأساس دعت الى انشاء اطر عمل مثل NextJS و NuxtJS، اللذان يتجاوزان هاته الفكرة ويقومان -اختيارا طبعا- بتوليد هاته الصفحات والمكونات على جزء الخادم على خادم Node-based لتتم أرشفتها وفهرستها على محركات البحث.
  15. حاليا لا أظن أنه يوجد، ولكن يمكنك مراسلة الدعم والتأكد من عدم وجود ذلك.
  16. يحتمل أنك تستعمل جودة عالية لا يتوفر على متطلبات تشغيلها حاسوبك. جرب تقليل الجودة واختبر المشكلة مجددا، هل لا زالت الفيديوهات بطيئة؟
  17. مرحبا صابر وعليكم السلام، مشكلتك غير واضحة على نحو جيد، هل تواجه مشكلة بتشغيل أحد فيديوهات الدورة؟ عموما، جرب فتح الموقع على متصفح آخر مثل فايرفوكس أو ادج، في حالة التعذر جرب استعمال جهاز آخر. في حالة تعذر كلا الحلين جرب التواصل مع الدعم من هنا.
  18. يكون هذا بناءً على طريقة تعريفها واستخدامها في الكود. ففي المثال الذي أعطيته، تستخدم الدالة المسماة () => {...} كوظيفة callback .. الحاسوب يتعرف على ذلك من خلال قواعد اللغة والتوقعات المتعلقة بطريقة استخدام الدوال، وإلا كيف يتعرف على المتغيرات والدوال وغيرها. فعند تنفيذ الكود، عندما يتم استدعاء app.listen(port, () => {...})، يتم تمرير الدالة المعبرة بواسطة () => {...} كوظيفة callback إلى app.listen. هذا يسمح بتنفيذ الكود الذي يحتوي على console.log عندما يتم استدعاء الوظيفة callback في نقطة معينة من عملية الاستماع للاتصالات على البوابة port. وببساطة، الحاسوب يعرف أن الدالة هي callback function من خلال طريقة استخدامها في الكود والقواعد المحددة في لغة جافاسكربت. هكذا هو عمل جافاسكربت.
  19. ليس هنالك أي فترة مطلوبة فالوصول إلى الدورات هو وصول مدى الحياة. كما أنه قد يختلف الطالب مع الآخر في نقاط عدة من شأنها أن تؤثر في تحديد هاته المدة من مثل قدرته الاستيعابية ومقدار تفرغه للمشاهدة والتحصيل وما الى ذلك. لا تهتم بتحديد الفترة الزمنية بشكل دقيق، بدل ذلك اهتم بالكسب المعرفي والتطوير من معارفك، فإن كنت تتعلم شيئا ما جديدا كل يوم هو أحسن وأفضل لك من التركيز في المدة. وعموما، تأتي الدورة بإجمالي 72 ساعة فيديو، ضف إليها المدة المستغرقة في التطبيق أو الاستيعاب أو المناقشة أو ما الى ذلك، ولنقدر ذلك بـ 5 أضعاف اجمالي المدة فتكون 360 ساعة. فيكون الوقت الإجمالي للإنتهاء من الدورة هو: أربع ساعات يوميا لمدة 3 أشهر. (4 * 3 * 30) ساعتان يوميا لمدة 6 أشهر. (2 * 30 * 6) ساعة يوميا لمدة 12 شهر. (1 * 30 * 12) طبعا فإن هاته الحسابات تقريبية قد تقصرر وقد تطول.
  20. مثل هذا السؤال يكون هو الأكثر ترددا عادة، فيما يلي بعض الخطوات العملية التي يمكنك القيام بها: اطلعي ووسعي نظرتك أكثر على مجالات البرمجة وتطوير البرمجيات. حددي مجالا تجدين نفسك تهتمين به. اطلعلي على مجموعة اللغات والادوات التي يهتم بها المشتغلون عن المجال. قارني واختاري تجميعة ادوات ولغات. ابدئي في التعلم من خلال الدورات المعترف بها والمعروفة. حسني مهاراتك . اعتمدي على الاستمرارية. لا تنسي التطبيق العملي والممارسة التطبيقية بجانب الكسب المعرفي النظري. ابحثي عن الشهادات المعترف بها. يمكنك الاستزادة بالقراءة من هنا:
  21. فكرة الدوال في الأصل أساسا هي في تمكين القدرة على اعادة استعمال وتنفيذ كتلة برمجية، فهي مجموعة من الأوامر تدل على وظيفة أو مهمة معينة مهيكلة في دالة. بعض هاته الدوال قد تقوم بحدث معين مثل ارسال رسالة بريد الكتروني أو عرض رسالة نجاح في الشاشة، في حين أن بعضها الآخر يعيد خرجا ويترتب عنها عائد، يمكن استعمال هذا العائد في مكان آخر في الشيفرة. لنقل مثلا أن هنالك دالة تقوم باستخراج اسم مستخدم ما انطلاقا من عنوان بريده الالكتروني، بحيث نستعمل هذا الاسم في عرضه على شاشة المستخدم. الآن هذه العملية تحتاج تقسيم مهام وتنظيما بحيث: تكون هنالك دالة لجلب البريد الالكتروني تكون هنالك دالة لجلب الاسم تكون هنالك دالة لطباعة الاسم حتى يحصل هذا الارتباط بين هاته الدوال، وحتى يمكن معالجة المدخلات المختلفة يتطلب من هاته الدوال أن تقوم بمنطق معين ثم تعيد لنا قيما. فدالة جلب البريد الالكتروني يفترض أن تعيد قيمة سلسلة نصية تعبر عن عنوان البريد الالكتروني. في حين أن دالة جلب الاسم يفترض أن تعيد قيمة سلسلة نصية تعبر عن اسم المستخدم. وأخيرا تقوم دالة الطباعة بطباعة الاسم على الشاشة. لتحديد ما نريد أن نعيده من داخل الدالة، نقوم فقط باضافة عبارة return إليه.
  22. بخصوص مشكلة ترتيب الحقول، قم بإعادة ترتيب الحقول في النموذج بالترتيب الصحيح وفقًا لترتيب العناصر في الكود. يمكنك تبديل مكان حقل "الباسوورد" ووضعه بعد حقل "اسم المستخدم" حتى يتوافق مع الترتيب الصحيح الذي تريده. أما بخصوص عناصر الاختيار النصية قم بإضافة نص لعناصر الاختيار النصية (Radio Buttons) بوضع النص بين علامتي الفتح والإغلاق لعناصر الـ <label> المرتبطة بكل عنصر اختيار نصي. على سبيل المثال، يمكنك تحديد النص لعنصر الاختيار النصي "star" كالتالي: <input type="radio" id="star" name="Plan" value="star"> <label for="star">Star Plan</label> أما عن المشكلة الأخيرة بخصوص زر الاشتراك، يرجى التأكد من وجود قواعد CSS أو أنماط لتنسيق الأزرار وظهورها بشكل صحيح. يمكنك إضافة قواعد CSS للأزرار أو استخدام مكتبة تنسيق جاهزة مثل Bootstrap لتحقيق تنسيق جميل ومتناسق للأزرار.
  23. يفترض بالأمر الطبيعي لتشغيل خادم التطوير أن يكون: npm run start و لي: npm start أيضا تأكد من أن المشروع الذي تحاول تشغيل هذا الأمر فيه هو مشروع رياكت، إذ أنك لا تريد تنفيذ هذا الأمر لمجرد تنفيذه وفقط. أيضا يظهر من الصورة السابقة أنك تضع ملف package.json داخل مجلد فرعي. تخلص من ذلك وضعه على نفس مستوى الملفات والمجلدات الأخرى.
  24. لا يوجد أي مشكلة، هذا هو الخرج الطبيعي للأمر npm run dev في نسخ لارافيل المتأخرة. اذ أن لارافيل أصبح يستعمل vite كمجمع وحدات وخادم تطوير للواجهة الأمامية بديلا عن laravel-mix سابقا. فالأمر: npm run dev يقوم بتشغيل خادم vite للتطوير. ان كنت تحاول تحزيم ملفات الأصول وتخريجها يمكنك تنفيذ الأمر: npm run build بدلا منه. اقرأ أكثر عن تفاصيل هذا التبديل:
  25. طبعا فإنك لن تحتاج أي لغة أخرى لتعلم لغة معينة بطبيعة الحال، ولكن قد يعينك التخصص في مجال ما على تعلم لغة بايثون من ناحية معينة، مثلا: ستحتاج HTML , CSS , JS لإستعمال بايثون في تطوير الويب الشامل. SQL, R لإستعمال بايثون في علم البيانات وتحليلها. أساسيات الريضايات والإحصاء بجانب بايثون للتعلم الآلي والذكاء الصناعي. تصاميم المستويات والألعاب وأساسيات الرياضيات والجبر والاحصاء بجانب بايثون لتطوير الألعاب. مفاهيم الأتمتة وبرامجها لإستعمال بايثون في الأتمتة وتطوير البرامج. معروف أن لغة مثل بايثون تشتغل في العديد من المجالات وتحوز على العديد من المكتبات الضخمة التي تحظى بشعبية كبيرة. ولذلك فإن تعيينك للمجال الذي تريد أن تشتغل فيه يمكنه أن يحدد مجموعة الأشياء التي تعينك على التخصص أكثر في بايثون، أما ان كنت تقصد معرفة عامة باللغة فلا يجب عليك أي من ذلك، يمكنك اختيار اي كورس والبدء فيه مباشرة.
×
×
  • أضف...