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

Mustafa Suleiman

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

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

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

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

    336

كل منشورات العضو Mustafa Suleiman

  1. يمكنك القيام بذلك عن طريق استخدام AJAX في Laravel، حيث يتيح لك AJAX تحميل وإرسال البيانات بطريقة ديناميكية دون الحاجة إلى إعادة تحميل الصفحة بأكملها. وعند النقر على الزر لإضافة مدخلات، باستطاعتك استخدام جافا سكربت لإرسال طلب AJAX إلى الخادم الذي يستخدم Laravel. وبمجرد استلام الطلب، سيقوم Laravel بجلب البيانات المطلوبة من قاعدة البيانات باستخدام controller، ومن ثم سيرسل البيانات المستلمة إلى الصفحة بشكل JSON. وباستخدام جافا سكربت بالإمكان تحليل البيانات المستلمة من Laravel وإنشاء صف جديد للمدخلات المضافة بناءً على هذه البيانات. بعد ذلك، يمكنك استخدام الجافا سكربت لتحديث الصفحة وعرض المدخلات الجديدة. إليك بعض الخطوات الأساسية التي يمكن اتباعها لتحقيق ذلك: إنشاء زر لإضافة مدخلات وتعيين معرفًا له. إنشاء ملف JavaScript للقيام بمهام إضافة المدخلات. إضافة كود JavaScript الذي يستخدم AJAX لإرسال طلب إلى controller في Laravel. في controller Laravel، استخدمي الطريقة المناسبة لجلب البيانات من قاعدة البيانات. استخدمي JSON لإرسال البيانات المطلوبة إلى ملف JavaScript. في ملف JavaScript، استخدمي البيانات المستلمة لإنشاء صف جديد للمدخلات. تحديث الصفحة لعرض المدخلات الجديدة. وكنصيحة الأفضل استخدام مكتبات مثل Axios لتسهيل استخدام AJAX وإرسال الطلبات إلى controller في Laravel. وإليك مثال باستخدام Axios. 1- بعد تثبيت المكتبة من الأمر التالي: npm install axios 2- سيتعين عليك إنشاء زر HTML على الصفحة الخاصة بك باستخدام معرف فريد له، وهذا الزر سيقوم بتنفيذ الطلب AJAX عند النقر عليه. 3- إنشاء ملف JavaScript جديد وتعيينه للزر HTML الخاص بك. 4- استدعِ مكتبة axios داخل ملف JavaScript الخاص بك. import axios from 'axios'; 5- استخدمي axios لإرسال الطلب AJAX إلى controller في Laravel، ويمكنك استخدام المثال التالي لإرسال طلب GET لجلب البيانات من controller: axios.get('/get-data') .then(function (response) { // استخدم البيانات المستلمة لإنشاء صف جديد للمدخلات. }) .catch(function (error) { console.log(error); }); حيث /get-data هو عنوان URL للطلب AJAX الذي يمكن تغييره بما يناسب متطلباتك. 6- في controller Laravel، استخدمي الطريقة المناسبة لجلب البيانات من قاعدة البيانات وإرجاعها كـ JSON. public function getData() { $data = // جلب البيانات من قاعدة البيانات return response()->json($data); } عند استلام البيانات من controller، يمكنك استخدامها داخل دالة .then() للتحكم في عرض الصفحة وإضافة المدخلات الجديدة. 7- تحديث الصفحة لعرض المدخلات الجديدة، ويمكن استخدام Vue أو React لإنشاء تطبيق أكثر ديناميكية.
  2. بالإضافة إلى ما ذكره عبد الباسط، يجب أن تأخذ في الاعتبار أنه إذا كانت لديك خلفية في تطوير تطبيقات Windows Forms، فقد يكون لديك فهم أفضل لبعض المفاهيم الأساسية التي يشترك فيها إطار عمل .NET Framework بأكمله، والتي يمكن أن تفيدك في تطوير تطبيقات ASP.NET MVC و Entity Framework و Xamarin. ومع ذلك، فإن الخبرة السابقة في تطوير تطبيقات Windows Forms ليست شرطًا لتعلم هذه الإطارات الأخرى. لذلك، يمكنك البدء في تعلم أي إطار عمل من إطارات عمل .NET Framework بدون الحاجة إلى تعلم Windows Forms Applications مسبقًا. وإليك بعض النصائح: يجب أن يكون لديك معرفة جيدة بلغة C# ومكتبات .NET Framework قبل البدء في تعلم إطارات عمل مثل ASP.NET وEntity Framework وXamarin وغيرها. لذلك، من المهم بدء العمل على تعلم لغة C# ومكتبات .NET Framework المشتركة مثل ADO.NET وLINQ وغيرها. يتطلب العمل مع إطارات عمل مثل ASP.NET وXamarin وغيرها القدرة على تصميم وإنشاء صفحات واجهة المستخدم الخاصة بتطبيقاتك. لذلك، يجب أن تكون لديك فهم جيد لأساسيات HTML وCSS وكيفية استخدامها في تصميم صفحات الويب. يعد استخدام قواعد البيانات جزءًا أساسيًا من تطوير تطبيقات الويب والجوال، ويتطلب ذلك فهم قواعد البيانات وكيفية التعامل معها. لذلك، ينبغي عليك تعلم مفاهيم قواعد البيانات ولغة الاستعلام المنطقي SQL ومكتبات ADO.NET للاتصال بقواعد البيانات. يوجد العديد من الموارد المتاحة على الإنترنت التي يمكن استخدامها لتعلم إطارات عمل .NET Framework، مثل المواقع التعليمية والمنتديات والدورات التدريبية والمقاطع التعليمية. يجب استغلال هذه الموارد بشكل جيد لتسريع عملية التعلم وتحسين المهارات. ينبغي أن تعمل على مشاريع عملية أثناء تعلم إطارات عمل .NET Framework،
  3. إليك بعض النصائح التي من شأنها تحسين جودة المحتوى والذي بدوره سيزيد من عدد الزيارات لموقعك: إختيار موضوع يهم الجمهور المستهدف، ويمكن البحث عن المواضيع باستخدام أدوات البحث عن الكلمات الرئيسية. إجراء بحث عن الكلمات الرئيسية التي تصف الموضوع وتساعد في زيادة ظهور المقال في محركات البحث. كتابة المقال باستخدام أسلوب معين، مثل "طريقة الهرم المقلوب"، والتي تساعد على كتابة مقال يحوي معلومات قيمة ومنظمة بشكل مناسب، أي ذكر المعلومات القيمة في البداية والتي من شأنها أن تجذب إنتباه الزوار. تحسين المحتوى بشكل داخلي من خلال استخدام أفضل الممارسات لتحسين محتوى الصفحة، مثل إضافة عناوين تحتوي على الكلمات الرئيسية وتصميم صفحة جذابة. إضافة وسائط متنوعة، مثل الفيديو والصور والرسوم البيانية والأدوات الرقمية لجعل المقال أكثر جاذبية وإثارة للاهتمام. تطوير استراتيجية لمشاركة المقال عبر مختلف القنوات الممكنة، مثل مواقع التواصل الاجتماعي والبريد الإلكتروني والمدونات وغيرها. تضمين محتوى يمكن وصله بروابط إلى موقعك، وذلك لزيادة مصداقية الموقع في محركات البحث، حيث يمكن استخدام أنواع مختلفة من المحتوى الذي يمكن ربطه بروابط، مثل الفيديو والرسوم البيانية والأدوات الرقمية والمزيد. ركّز على إنشاء محتوى طويل لمدوّنتك حيث تشير الدراسات إلى أن المحتوى الطويل يؤدي إلى أداء أفضل في نتائج البحث من المشاركات القصيرة أو الضعيفة، ولكن هناك شرطًا مهمًا وهو أن يكون المحتوى الطويل جيدًا ومناسبًا للقارئ. فالمحتوى الطويل هو المحتوى الذي يتميّز بعدد كبير من الكلمات ويعرض أفكارًا ومعلومات عميقة حول موضوع معيّن. يمكن أن يساعد المحتوى الطويل في تحسين مراكز البحث بسبب زيادة عدد الكلمات الرئيسية المستخدمة في المحتوى وأيضًا بسبب قدرته على إرضاء القارئ وتلبية استفساراته، مما يزيد من فرص المشاركة في وسائل التواصل الاجتماعي أو الربط بمواقع أخرى ويؤدي إلى زيادة حركة المرور. كما أن المحتوى الطويل يزيد من وقت الإقامة لدى الزائر، وهو الوقت اللازم بين لحظة النقر على نتائج البحث ولحظة العودة إلى نتائج محرك البحث، وهناك دراسات تشير إلى وجود علاقة بين وقت الإقامة الطويل وترتيبات البحث الأعلى. أيضًا حافظ على تحديث محتوى الموجود، فإنشاء محتوى "جديد" أمرًا حيويًا لتحقيق نتائج بحث جيدة وزيادة حركة المرور إلى موقعك، ولكن ينبغي أن تركز على جودة المحتوى بدلاً من الكمية. يمكنك الاستثمار في وقتك لتحسين المحتوى الحالي وجعله أفضل عن طريق مراجعة المشاركات السابقة باستمرار وتحديثها باستخدام أحدث المعلومات المتاحة. وهذا ينطبق بشكل خاص على مراجعات المنتجات، ولكن حتى "المحتوى الأخضر" (المحتوى الدائم الذي يتضمن حقائق لا تتغير كثيرًا، إن كانت تتغير على الإطلاق) يمكن أن يستفيد من إعادة النظر فيه وتحسينه من وقت لآخر. ويتميز تحديث المحتوى القديم بإرسال إشارات "التحديث" إلى جوجل، مما يعطي إشارات إيجابية للخوارزميات التي تستخدمها جوجل، بالإضافة إلى زيادة طول المنشورات وتوفير المحتوى "الطويل" الذي غالبًا ما يعمل بشكل أفضل في نتائج البحث. ولكن، يجب أن نذكر أن هناك قيمة مهمة في إنشاء محتوى جديد بشكل دوري، لأن كلما زاد عدد المحتوى على موقعك، كلما كان لديك المزيد من الكلمات الرئيسية التي يمكنك تصنيفها في نتائج البحث، ولكن هذا يتحقق فقط إذا كان المحتوى قويًا ومفيدًا للقارئ.
  4. أقصر طريق للقبول بسرعة في جوجل أدسنس هو إنشاء محتوى عالي الجودة وأن يضمن موقعك تجربة جيدة للزائرين من حيث السرعة المقبولة وقالب الموقع المناسب للهاتف. وسألخص لك الشروط: 1- محتوى الموقع: يجب أن يكون المحتوى الذي تريد وضع الإعلانات فيه محتوى ذو جودة عالية ومفيد للمستخدمين. ويجب أن يكون المحتوى مكتوبًا بلغة صحيحة وواضحة ويتوافق مع سياسة AdSense. كما يجب أن لا يحتوي على محتوى مخل بالآداب العامة أو ينتهك القوانين الدولية. 2- عدد الزيارات: يجب أن يكون لديك عدد كافٍ من الزيارات اليومية للموقع. لا يوجد رقم محدد للزيارات المطلوبة، ولكن عادة ما يعتبر موقعك مؤهلاً للتقديم عندما يكون لديك عدد كبير من الزيارات الفريدة كل شهر. 3- تصميم الموقع: يجب أن يكون تصميم الموقع جذابًا وسهل الاستخدام، ويجب أن يكون متوافقًا مع متطلبات AdSense. يجب أن يتضمن محتوى الموقع صفحات مثل "الاتصال بنا" و "سياسة الخصوصية" و "الشروط والأحكام" وغيرها. 4- العمر: يجب أن يكون عمر موقعك على الأقل 6 أشهر، وذلك للتأكد من أن الموقع يتمتع بالاستقرار والنمو. 5- الدول المؤهلة: يتم قبول التسجيل في برنامج AdSense في بعض الدول فقط، لذلك تحتاج إلى التحقق من ما إذا كانت دولتك مؤهلة للتقديم. وأهم نصيحة أقدمها لك هي الصبر والاستمرارية حيث يمكن أن تستغرق عملية الحصول على الموافقة من Google AdSense بعض الوقت، ولا ينبغي الاستسلام في حالة الرفض الأولي، ويمكن تحسين الموقع والمحتوى وإعادة تقديم الطلب، وكذلك الاستمرار في إنشاء محتوى عالي الجودة فالأمر يتطلب وقت لتحقيق عائد.
  5. قبل أي شيء يجب معرفة المهارات المطلوبة في سوق العمل الذي تطمح في العمل فيه سواء سوق العمل المحلي أو موقع العمل الحر مثل مستقل وبعيد، فأنت في النهاية تريد تعلم البرمجة من أجل العمل وليس لمجرد التعلم لنكن واقعيين. لذلك تفقد الوظائف الخاصة بمستوى Junior أو Entry Level وقم بكتابة المهارات المطلوبة في ملف نصي وتعلم تلك المهارات، ولكن تأكد من كتابة المهارات الأكثر طلبًا. فمثلاً في أغلب البلدان العربية ستجد المطلوب هو PHP ولارافيل ثم Angular و ASP.NET. وبالطبع بالنسبة لمسار Front-End فأنت بحاجة إلى تعلم HTML,CSS,JS بدون أدنى شك، بعد ذلك ستختار ما تتعلمه مما سبق أو المهارات التي تناسب سوق العمل لديك، فمثلاً البعض يطلب React والبعض بحاجة إلى لارافيل و Vue.js. لذلك ركز على الأساسيات أولاً وخصوصًا أساسيات جافاسكريبت لا تهملها أبدًا، طالما أنك ستعمل كـ Front-End. وبخصوص المدة الواقعية لتعلم أحد مسارات البرمجة فقد قمت بالإجابة على ذلك سابقًا. وإليك بعض النقاشات التي أنصحك بشدة بقرائتها.
  6. بخصوص سؤالك، فمن المستحيل إنشاء خوارزمية واحدة تصف جميع الأكواد في مشروع الويب. ومن الأفضل فهم الخوارزميات كأدوات تستخدم لحل مشكلات محددة، بدلاً من كونها وصفًا شاملًا للكود. في الواقع، يمكن استخدام الخوارزميات في مشاريع الويب في العديد من الأمور، مثل تصميم نظام تصنيف، أو توجيه المستخدمين إلى المحتوى الذي يناسبهم بناءً على تفضيلاتهم، أو تحسين سرعة الاستجابة للمستخدمين، وغيرها الكثير. وبالتالي، يمكن للمبرمج البحث عن الخوارزميات المناسبة لحل مشكلات محددة في مشروع الويب، وتطبيقها على الأكواد الخاصة بالمشروع. ويمكن أيضاً تصميم خوارزميات مخصصة لحل مشاكل فريدة في المشروع، على سبيل المثال، العثور على الكلمات المميزة في مدونة أو تصميم نظام توصية فريد لمتجر إلكتروني. وأنصحك بإنشاء flow chart أفضل لأنه يمثل رسماً توضيحياً لخطوات الخوارزمية ويسهل فهمها وتنفيذها. وبالتالي، يمكن استخدام ال flow chart كدليل لكتابة الكود اللازم لتنفيذ الخوارزمية. كما أنه يساعد على تفادي بعض الأخطاء الشائعة في كتابة الخوارزميات مثل الدوال التكرارية (loops) اللامنتهية والتكرارات الزائدة (redundant iterations) وغيرها. على الرغم من ذلك، فإنه من المهم أن يتعلم المبرمج الكتابة المباشرة للخوارزميات بمجرد تحسين مهاراته في البرمجة، حتى يمكنه تحسين كفاءة وسرعة كتابة الأكواد والتحكم بها بشكل أكبر. وعند إنشاء خوارزمية لمشروع كامل، يتم البدء بتحليل المشروع وتقسيمه إلى أجزاء صغيرة قابلة للإدارة. على سبيل المثال، يمكن تقسيم المشروع إلى الجزء الخاص بال Front-End والجزء الخاص بال Back-End. بعد ذلك، يمكن تحليل كل جزء وتحديد الخوارزميات المناسبة لكل جزء. يمكن أيضًا تحديد العمليات والوظائف الرئيسية لكل جزء وتصميم الخوارزميات المناسبة لتحقيق هذه العمليات والوظائف. ويمكن أن تشمل الخوارزميات المستخدمة في مشروع ويب عدة مجالات مثل: التواصل مع قاعدة البيانات: يمكن تصميم خوارزميات لتحليل البيانات وتخزينها واسترجاعها من قاعدة البيانات. التحقق من الصحة والأمان: يمكن تصميم خوارزميات للتحقق من صحة البيانات المدخلة والمرسلة بين ال Front-End وال Back-End وتطبيق الأمان المناسب لحماية المعلومات. العمليات الحسابية والرياضية: يمكن تصميم خوارزميات للقيام بالعمليات الحسابية والرياضية المختلفة التي يحتاج إليها المشروع. التعامل مع الرسائل والإشعارات: يمكن تصميم خوارزميات لإدارة الرسائل والإشعارات وإرسالها واستقبالها بين ال Front-End وال Back-End. تحسين أداء الموقع: يمكن تصميم خوارزميات لتحسين أداء الموقع وتقليل وقت الاستجابة وزيادة سرعة تحميل الصفحات.
  7. باستطاعتك العمل على إطار العمل .NET Framework و ASP.NET MVC و Entity Framework و Xamarin دون الحاجة إلى تعلم C# Windows Forms Applications بشكل مسبق. ومع ذلك، فإن معرفة C# وواجهة Windows Forms قد تساعد في فهم أساسيات بعض المفاهيم المستخدمة في هذه التقنيات وجعل عملية التعلم أسهل. لذلك أنصحك بتعلم C# وواجهة Windows Forms Applications إذا كنت ترغب في تطوير تطبيقات سطح المكتب باستخدام C# في المستقبل. وبخصوص سؤالك الآخر فإن .NET Framework وASP.NET MVC وEntity Framework و Xamarin هي بيئات وإطارات عمل مختلفة تستخدم في تطوير البرمجيات باستخدام لغات برمجة مختلفة مثل C# وVB.NET وF#. على سبيل المثال، يستخدم ASP.NET MVC لتطوير تطبيقات ويب باستخدام لغات برمجة مثل C# وVB.NET وJavaScript. بينما يستخدم Xamarin لتطوير تطبيقات الجوال باستخدام C#، ويمكن استخدام Entity Framework في تطوير تطبيقات قواعد البيانات باستخدام C# أو VB.NET. وإليك بعض النصائح التي قد تساعدك: قم بتعلم أساسيات البرمجة قبل الانتقال إلى لغة معينة، مثل البدء بتعلم أساسيات البرمجة مثل المتغيرات، الدوال، والتحكم في التدفق (if/else statements و loops) في أي لغة برمجة. قم بتعلم الأساسيات التي تحتاجها للبرمجة في بيئة .NET Framework، مثل Visual Studio ومساعدات التصحيح البرمجية والعلامات التجارية المستخدمة في برمجة الأسماء والنواحي الأخرى المهمة. تعلم كيفية استخدام مكتبات الفئات المختلفة وAPIs المتاحة في .NET Framework، مثل ADO.NET للاتصال بقواعد البيانات أو ASP.NET لإنشاء تطبيقات الويب. قم بتطبيق المفاهيم والأساليب التي تتعلمها في مشاريع عملية. يمكنك العثور على مشاريع تطبيقية وتعليمية على الإنترنت، أو إنشاء مشاريع بنفسك لتطبيق ما تعلمته وتحسين مهاراتك البرمجية.
  8. الخطأ في الصورة يشير إلى عدم وجود النموذج"app\models\user" المطلوب في المشروع. حاول تجربة الآتي: التحقق من وجود ملف النموذج "user" في المسار التالي: app/models/user.php التأكد من أن الأحرف الكبيرة والصغيرة في اسم الملف متطابقة مع الاسم الذي تم استدعائه في الكود. التأكد من وجود عبارة "namespace app\models" في بداية الملف "user.php"، والتي تحدد مساحة الاسم الخاصة بالنموذج. التأكد من أنه تم تضمين الملف "user.php" في ملف "composer.json"، والذي يحدد الاعتماديات اللازمة لتشغيل المشروع. في حالة عدم وجود ملف "user.php"، يجب إنشاءه في المسار المذكور في الخطوة الأولى وإضافة الكود المناسب لتعريف النموذج وتحديد خصائصه وطرقه.
  9. هناك خطأ في إحدى ملفات CSS (b88d04fba731603756b1.css) وهو ملف بناء أي تعمل عمل بناء له من ملفات المشروع الخاص بك، والخطأ يتعلق بوجود حرف تهريب (Escape character) مع بعض الحروف المميزة في هذا الملف. بمعنى وجود مشكلة في تعريف مسار أحد الملفات داخل ملف CSS، وقد يكون السبب هو عدم وجود حرف التهريب مع الأحرف المميزة في مسار الملف، أو استخدام حرف التهريب بشكل غير صحيح.
  10. الخطأ معناه وجود مشكلة في تحميل الصورة التالية: ./IMG/(3)علمني والموجودة في المسار المحدد بعد اسم الصورة كما يظهر في الخطأ في مجلد src في ملف HTML. لذلك عليك بالتأكد من مسار الصور الصحيحة المتضمنة في ملفات HTML في هذا المسار. أيضًا هناك مشكلة في تحميل ملف style.css في نفس المسار ، لذلك تأكد أيضًا أنك قمت بكتابة المسار بشكل صحيح.
  11. تعلم Sass لا يزال مهمًا لمطوري ReactJS، حتى مع تقدم Webpack أو تراجعها لصالح Vite وظهور مكتبات أخرى مثل Tailwind. تظل Sass أداة مساعدة لتحسين تجربة كتابة CSS وإنشاء أنماط مرنة وسهلة الصيانة، مما يجعل الكود أنظف وأكثر تنظيمًا. بالإضافة إلى ذلك ، قد يكون من الصعب التعامل مع Tailwind إذا كان لديك تصميم خاص لموقع الويب الخاص بك. ومن الممكن أن يتطلب تخصيص تصميم CSS الخاص بك وقتًا أطول وجهدًا أكبر عند استخدام Tailwind. علاوة على ذلك ، فإن تعلم Sass يمكن أن يساعدك في تعلم مفاهيم CSS المتقدمة ، مما يجعلك مطورًا أفضل وأكثر كفاءة في كتابة الأنماط. ويمكن استخدام Sass مع ReactJS بسهولة باستخدام Webpack أو Vite. و Sass لها علاقة بالمكتبات الأخرى مثل React و Tailwind بطريقة غير مباشرة. فعلى سبيل المثال، إذا كنت تستخدم Sass لإنشاء CSS في تطبيق React يستخدم Tailwind، فيمكنك تعريف المتغيرات والمكونات والدوال وإعادة استخدامها بطريقة أكثر فعالية. كما أنه يمكن استخدام Sass لإنشاء ملفات CSS قابلة للتكيف مع Tailwind، مما يتيح لك تخصيص التصميم وفقًا لاحتياجات التطبيق الخاص بك. ومع ذلك، فإن Tailwind لا يعتمد بشكل أساسي على Sass ولكنه يستخدم نظامًا مختلفًا لتخصيص التصميم، مما يعني أنه لا يوجد علاقة مباشرة بين preprocessor وهذه المكتبات. بالنهاية، الاختيار بين استخدام Sass أو Tailwind أو أي أداة أخرى يعتمد على متطلبات المشروع الخاص بك والتفضيلات الشخصية والمسار الخاص بك فمثلاً مطوري Full-stack غالبًا ما يعتمدوا على Tailwind حاليًا لكونها حل وسط بدلاً من استخدام Bootstrap.
  12. تستطيع الحصول على المتوسط والتباين لمجموعة الأعداد عن طريق كتابة برنامج بلغة C++. يمكن استخدام الأسلوب التالي لحساب المتوسط والتباين: إنشاء مصفوفة لتخزين المدخلات العشوائية. إنشاء متغير لتخزين مجموع المدخلات العشوائية. قم بإنشاء متغير لحساب المتوسط. قم بإنشاء حلقة for لتوليد 1000 مدخل عشوائي وحساب مجموع المدخلات العشوائية. حساب المتوسط عن طريق تقسيم مجموع المدخلات العشوائية على 1000. إنشاء متغير لحساب التباين. قم بإنشاء حلقة for جديدة لحساب الفرق بين كل عدد والمتوسط. حساب التباين عن طريق جمع جميع الفروق المربعة وتقسيمها على 999. الخطوات السابقة تعتبر الأساس لحساب المتوسط والتباين. ويمكن تحقيقها في برنامج C++ عن طريق استخدام دوال مثل rand() و pow(). البرنامج النهائي يجب أن يعطيك قيم المتوسط والتباين، ويمكنك استخدام دالة cout لطباعة النتائج على الشاشة.
  13. بجانب ما تم قد شرحه، يمكن رسم خرائط التدفق للكود الخاص بك على النحو التالي: +--------------+ | Start | +--------------+ | v +--------------+ | Initialize | +--------------+ | v +--------------+ | Generate | | random | | numbers and | | calculate sum| +--------------+ | v +--------------+ | Calculate | | mean and | | reset sum to | | 0 | +--------------+ | v +--------------+ | Calculate | | variance | +--------------+ | v +--------------+ | Display | | results on | | screen | +--------------+ | v +--------------+ | End | +--------------+ وتتضمن خريطة التدفق السابقة العمليات التالية: البدء البدء بتعيين المتغيرات والقيام بالإعدادات الأولية إنشاء أرقام عشوائية وحساب مجموعها حساب المتوسط الحسابي وإعادة تعيين المجموع إلى الصفر حساب الانحراف المعياري باستخدام الصيغة: (مجموع الفروق المربعة) / (n-1) عرض النتائج على الشاشة النهاية ويتم الانتقال من مرحلة إلى أخرى في الخريطة باستخدام العمليات الشرطية والحلقات.
  14. ربما الخطأ ناجمًا عن طريقة تخزين البيانات في ملف Excel، وعلى الأرجح يتعلق بطريقة قراءة الملفات في Flutter. حاول تجربة استخدام مكتبة أخرى للقراءة من ملفات Excel مثل flutter_excel أو excel بدلاً من استخدام مكتبة dart_excel المستخدمة حاليًا. ويمكن استخدام الكود التالي للقراءة من ملف Excel باستخدام مكتبة excel: import 'package:excel/excel.dart'; import 'dart:io'; var file = "path/to/file.xlsx"; var bytes = File(file).readAsBytesSync(); var excel = Excel.decodeBytes(bytes); for (var table in excel.tables.keys) { for (var row in excel.tables[table]!.rows) { print("$table -> $row"); } } ويجب تعديل الكود أعلاه واستخدام المكتبة المذكورة والتي توفر واجهات للقراءة والكتابة من وإلى ملفات Excel في Flutter.
  15. من الصعب تنفيذ مشاريع فعلية باستخدام اللغات والمكتبات التي ذكرتها، حيث يجب تعلم إطار عمل مثل React و Angular. حيث أن اللغات والتقنيات التي ذكرتها جيدة في تنفيذ المشاريع البسيطة والتي بها بيانات ثابتة، ولكن عدما يتعلق الأمر بالمشاريع المتوسطة والكبيرة والتي بها بيانات متغيرة أي ديناميكية فهنا يجب استخدام إطار أو مكتبة للواجهة الأمامية كما ذكرت. وسأحصر إجابتي فيما يخص مواقع العمل الحر العربية مثل مستقل وخمسات، فالمهارات المطلوبة بكثرة بها هي لغة PHP و إطار عمل لارافيل وورد بريس، ثم إنشاء تطبيقات الهواتف باستخدام React native أو Flutter. وهناك بعض المشاريع الي تتطلب لغة ASP.NET وبالطبع ما سبق بحاجة إلى اللغات والمكتبات التي تعلمتها أنت فهى الأساسيات التي يُبنى عليها كل ما سبق. وربما ستجد بعض المشاريع الصغيرة في بعض الأحيان التي لا تتطلب سوى html- CSS- JavaScript - Bootstrap - jQuery - Sass. لكن لتصبح مستقل محترف وتكسب المال بشكل حقيقي فعليك بتعلم إطر العمل واللغات المطلوبة وأهما PHP ولارافيل ومنصة إدارة المحتوى وورد بريس. وأيضًا أنصحك بقراءة مقالات عن كيفية تقديم نفسك للعميل وكتابة عرض مناسب بشكل إحترافي والتعامل بأسلوب لائق يدل على أنك شخص يعتمد عليه وذو ثقة، وبالطبع يجب توافر معرض أعمال بجودة عالية، وتذكر أن لكل شخص رزقه وستحصل عليه بلا شك فعليك بالسعي والتقديم على المشاريع المناسبة لك لحين تعلم ما ذكرته لك.
  16. في بداية تعلم البرمجة يجب إختيار ما يتم تقديمه في محتوى الدورة بعناية، فلا يمكن أن تحتوي الدورة على كافة التفاصيل ولا يوجد دورة توفر ذلك أبدًا. بل الدورة الجيدة تقدم ما يحتاجه الدارس ليتقن المهارة التي يريد تعلمها وبشكل إحترافي دونّ إرهاقه بكم هائل من المعلومات التي لن يحتاجها في بداية مساره البرمجي وسينساها وسيعود إليها لاحقًا بعد اكتساب الخبرة للازمة لتعلمها. فليس العبرة بكم المعلومات بل بمقدار الاستفادة منها وتوفيرها في الوقت الصحيح عند الحاجة، ويتم التوجيه دائمًا لضرورة تعلم مهارة البحث بدلاً من توفير معلومة معينة وذلك لتحفيزك لاكتساب مهارة لا غنى عنها لأي مبرمج. فالبحث والقراءة هما الأساس لأي مبرمج يريد أن يصبح ذا شأن في مجاله وإلا لن يصل بعيدًا، ومن خلال التطبيقات العملية يتم التوسع في المعلومات المقدمة وذكر كافة التفاصيل الهامة التي ستحتاجها في بناء المشاريع باستخدام اللغة الخاصة بالدورة. والمشاريع ليست عبارة عن نماذج بسيطة و لعبة XO بل مشاريع حقيقية تضعها في معرض أعمالك عند التقدم للوظيفة بعد الإنتهاء من الدورة، فتلك هي نوعية المشاريع التي تؤهلك لسوق العمل بالفعل والتي يتم النظر إليها عند التقدم لوظيفة في مجال البرمجة وليس النماذج البسيطة. وهناك فخ دائمًا ما يقع فيه الكثير، وهو مقارنة مدة الفيديو أو حجم الدورة بدلاً من مقارنة القيمة والمعلومات التي يتم توفيرها والتي أنت بحاجة إليها فعلاً لتصبح مبرمج محترف، فهناك الكثير من المعلومات التي يمكن ذكرها لكن لن تستخدمها في بداية حياتك كمبرمج أو ربما لن تستخدمها إلا نادرًا حتى بعد اكتساب الخبرة.
  17. الخطأ يحدث لأنك تحاول الوصول إلى موارد API من موقع آخر، ويتم منع ذلك بسبب سياسة الـCORS، ويتم ذلك لأسباب أمنية لمنع الوصول غير المصرح به إلى بيانات المستخدم. لحل هذا المشكلة، يجب تمكين الوصول لمصدر الموارد في الخادم الذي تستخدمه. وفي حال لم تكن تملك خادم خاص بك، يمكنك استخدام خدمات بروكسي مثل CORS Anywhere أو بدائل أخرى لتفادي هذه المشكلة. وهذه الخدمات تسمح بإرسال طلب من الموقع المضيف إلى خدمة البروكسي، ثم يتم إعادة إرسال الطلب من خلال البروكسي إلى المصدر الأصلي دون تعريض الصفحة لمشكلة CORS. يمكنك قراءة المزيد عن سياسة CORS وطرق تجاوزها من هنا: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS لذلك، يمكن تعديل الرابط في الطلب ليتضمن عنوان بروكسي، على سبيل المثال: axios.get('https://cors-anywhere.herokuapp.com/https://timeapi.io/api/Time/current/zone?timeZone=Africa/Tripoli') .then(function (response) { // handle success console.log(response); }) .catch(function (error) { // handle error console.log(error); }); المثال يستخدم خدمة بروكسي مجانية تسمى "CORS Anywhere"، والتي تضيف رأس "Access-Control-Allow-Origin" إلى الطلب لحل مشكلة CORS. ويجب الانتباه إلى أنه يجب استخدام خدمات بروكسي بحذر، وتأكد من أن المصدر المستخدم هو موثوق به وآمن.
  18. بالتأكيد، يمكن استخدام لغة C# لبناء تطبيق مثل تطبيق Uber. ولكن، يتطلب ذلك استخدام عدة تقنيات وأدوات بالإضافة إلى لغة البرمجة. فتطبيق Uber يستخدم تقنيات مثل نظام تحديد المواقع العالمي (GPS)، وخدمات الدفع الإلكتروني، وقواعد البيانات، والاتصالات، وواجهات المستخدم، وغيرها. لبناء تطبيق مثل Uber باستخدام C#، يمكن استخدام إطار عمل (framework) مثل .NET Framework، والذي يوفر مكتبات وأدوات للتطوير والتصميم. على سبيل المثال، يمكن استخدام ASP.NET MVC framework لبناء نظام الخوادم الخلفية (Backend) الذي يتيح التواصل بين التطبيق وقاعدة البيانات والتحكم بالبيانات المرسلة والمستلمة وغيرها، بالإضافة إلى استخدام Entity Framework لتنفيذ عمليات قاعدة البيانات بشكل أكثر سلاسة. أما بالنسبة لجانب العميل (Client side) من التطبيق، يمكن استخدام Xamarin، وهو إطار عمل يستخدم لتطوير تطبيقات الهاتف المحمول لأنظمة Android وiOS باستخدام لغة C#. بالإضافة إلى استخدام Xamarin.Forms لتطوير واجهات المستخدم لتطبيقات Android و iOS في الوقت نفسه. وبهذه الطريقة، يمكن استخدام لغة C# وإطار عمل .NET Framework وأدوات مثل ASP.NET MVC وEntity Framework و Xamarin لبناء تطبيق مثل تطبيق Uber. ومن المهم الإشارة إلى أن هذه الطريقة ليست الوحيدة الممكنة، وأن هناك العديد من التقنيات الأخرى التي يمكن استخدامها أيضاً. التقنيات المستخدمة في تطبيق UBER تم بناء تطبيق أوبر باستخدام عدة لغات برمجة. للجانب الخادم (Backend)، حيث استخدمت أوبر لغة برمجة Java في البداية، ثم انتقلت إلى استخدام لغة Go. وقد تم تطوير الجزء الأمامي (Frontend) من التطبيق باستخدام لغات مثل Objective-C و Swift لتطبيق iOS، و Java و Kotlin لتطبيق Android. كما تم استخدام HTML و CSS و JavaScript لتطوير نسخة الويب من التطبيق. علاوة على ذلك، تم استخدام العديد من التقنيات والأدوات الإضافية مثل MySQL لقواعد البيانات و Amazon Web Services (AWS) لإستضافة الخادم وإدارة الحمولة وغيرها.
  19. ربما السبب في إعدادات حفظ الصورة الخاصة بك في الإليستريتور، يجب التحقق من الإعدادات الخاصة بحفظ الصورة، والتأكد من تعيين دقة عالية للصورة عند حفظها، بحيث تكون دقة الصورة كافية للحفاظ على جودة الصورة عند التكبير. عن طريق القيام بالخطوات التالية: افتح ملف الإليستريتور الذي تريد حفظه كصورة. انتقل إلى قائمة "File" واختر "Export" أو "Export As". اختر تنسيق الصورة الذي تريد حفظه فيه، مثل PNG أو JPEG. في نافذة "Export"، تأكد من تحديد "Use Artboards" إذا كنت تريد حفظ كامل المشروع، واختر الصفحة المحددة التي تريد حفظها إذا كنت تريد حفظ صفحة محددة فقط. انتقل إلى قسم "Image Size" وتحقق من تعيين دقة الصورة (Resolution) بالقيمة العالية، مثل 300 PPI. اضغط على زر "Export" لحفظ الصورة بإعدادات عالية الجودة. بعد حفظ الصورة، يمكنك التأكد من جودتها عند تكبيرها بالتحقق من الوضوح وعدم التشويش في الصورة. أيضًأ تحقق من إعدادات العرض في البرنامج الذي تستخدمه لعرض الصورة، للتأكد من أن الصورة تعرض بدقتها الأصلية وليس بدقة منخفضة.
  20. إذا كان السؤال خاص بالإختبارات فلا يتم الإجابة عليها، يمكن إرشادك فقط لطريقة الحل. باستطاعتك إيجاد معكوس المصفوفة الثنائية باستخدام الرياضيات الخطية. وبالنسبة للطباعة في لغة C++، يمكن استخدام حلقتين for متداخلتين لطباعة العناصر العمودية والصفية من المصفوفة المعكوسة. بشكل عام يمكن اتباع الخطوات التالية: تعريف متغيرين row و col لتحديد عدد صفوف وأعمدة المصفوفة. تعريف المصفوفة matrix بحجم row × col باستخدام الأقواس المربعة [][]. على سبيل المثال، int matrix[row][col] يعني أن المصفوفة matrix هي ذات حجم row × col وتتكون من عناصر من نوع int. يتم تعبئة المصفوفة matrix باستخدام حلقة for مدمجة تحتوي على حلقتي for. وتستخدم الحلقة الخارجية لتحديد صفوف المصفوفة والحلقة الداخلية لتحديد عناصر كل صف. على سبيل المثال، لو أن row = 2 و col = 3، فسيتم تعبئة المصفوفة بالشكل التالي: 1 2 3 4 5 6 عرض المصفوفة الأصلية باستخدام حلقة for مدمجة. وتستخدم الحلقة الخارجية لتحديد صفوف المصفوفة والحلقة الداخلية لتحديد عناصر كل صف. يتم استخدام الدالة cout لطباعة كل عنصر في المصفوفة. إنشاء مصفوفة جديدة invertedMatrix بحجم col × row باستخدام الأقواس المربعة [][]. تعبئة المصفوفة العكسية invertedMatrix باستخدام حلقة for مدمجة تحتوي على حلقتي for. حيث تستخدم الحلقة الخارجية لتحديد أعمدة المصفوفة العكسية والحلقة الداخلية لتحديد عناصر كل عمود. يتم استخدام مؤشرات i و j لتحديد موقع كل عنصر في المصفوفة المعكوسة. على سبيل المثال، لو أن row = 2 و col = 3، فسيتم تعبئة المصفوفة العكسية بالشكل التالي: 1 4 2 5 3 6 بعد الانتهاء من حساب المصفوفة المعكوسة، يمكن عرضها على الشاشة باستخدام حلقة for لطباعة كل عنصر في المصفوفة المعكوسة. يمكن استخدام نفس الفهرس i و j المستخدمين في الحلقة الخارجية التي تم استخدامها لحساب المصفوفة المعكوسة.
  21. حاول تجربة حل المشكلة بإضافة بعض الشروط إلى الكود. يمكنك محاولة تغيير الجزء الخاص بالحركة في الكود ليصبح على النحو التالي: if (inputDir != Vector2.zero) { float rotation = Mathf.Atan2(inputDir.x, inputDir.y) * Mathf.Rad2Deg+ cameraTransform.eulerAngles.y; transform.eulerAngles = Vector3.up * Mathf.SmoothDampAngle(transform.eulerAngles.y,rotation, ref currentVelocity, smoothRotationTime); // إضافة الشروط if (inputDir.magnitude > 0.1f && currentSpeed < MoveSpeed) { currentSpeed = Mathf.SmoothDamp(currentSpeed,targetSpeed,ref speedVelocity, 0.1f); } else if (inputDir.magnitude <= 0.1f && currentSpeed > 0) { currentSpeed = Mathf.SmoothDamp(currentSpeed, 0, ref speedVelocity, 0.1f); } } // إضافة الشروط if (currentSpeed > 0) { rb.MovePosition(transform.position + transform.forward * currentSpeed * Time.deltaTime); } في الكود السابق، تم إضافة شروط إلى الجزء الذي يتحكم بسرعة اللاعب وحركته. يتم التحقق من مقدار inputDir.magnitude قبل تحديد سرعة اللاعب. إذا كانت قيمة inputDir.magnitude أكبر من 0.1 وكانت السرعة الحالية أقل من السرعة القصوى (MoveSpeed)، فسيتم زيادة السرعة ببطء. إذا كانت قيمة inputDir.magnitude أقل من 0.1، فسيتم تخفيض السرعة ببطء حتى يتم إيقاف حركة اللاعب تمامًا. وأخيرًا، إذا كانت السرعة الحالية أكبر من الصفر، سيتم استخدام الـ Rigidbody لتحريك اللاعب بالطريقة الصحيحة. يرجى ملاحظة أن الحل قد يحتاج إلى التعديل حسب احتياجات مشروعك.
  22. بالطبع، يمكن استخدام selected attribute مع EJS بنفس الطريقة التي تستخدم بها value attribute. وأيضًا استخدام EJS لإدخال قيمة الخيارات ومن ثم استخدام selected attribute لتحديد الخيار الافتراضي. هناك طريقتان لفعل ذلك ، يمكنك استخدام ثنائيات القيمة / النص كما يلي: <select name="mySelect"> <option value="1" <% if (value === "1") { %>selected<% } %>>Option 1</option> <option value="2" <% if (value === "2") { %>selected<% } %>>Option 2</option> <option value="3" <% if (value === "3") { %>selected<% } %>>Option 3</option> </select> أو يمكنك استخدام دالة مساعدة مخصصة لتنفيذ هذا الأمر بشكل أكثر كفاءة: <select name="mySelect"> <% options.forEach(function(option) { %> <option value="<%= option.value %>" <%= option.selected ? 'selected' : '' %>><%= option.text %></option> <% }); %> </select> في المثال السابق، يتم استخدام دالة forEach لتكرار قائمة الخيارات وتعيين selected attribute إذا كانت الخيارات محددة. ثم تمرير القيمة والنص وحالة التحديد كمعلمات لكل option. ويمكنك تعديل هذا المثال لتناسب احتياجاتك الخاصة.
  23. حاول تجربة الخطوات التالية: تسجيل الدخول إلى حسابك على Hostinger والانتقال إلى لوحة التحكم. النقر على "Manage" بجانب الخادم الذي تريد تحديث PHP عليه. تحت "Server Management" ، انتقل إلى "SSH Access". قم بتسجيل الدخول إلى SSH باستخدام بيانات الاعتماد الخاصة بك. بمجرد تسجيل الدخول ، قم بتنفيذ الأمر التالي لتحديث PHP: sudo apt-get update sudo apt-get install php 8.1 بعد الانتهاء من التثبيت ، يمكنك التحقق من إصدار PHP الجديد باستخدام الأمر التالي: php -v سيتم عرض إصدار PHP الجديد الذي تم تثبيته. ملاحظة: يجب أن تكون لديك صلاحيات sudo لتثبيت حزم جديدة في SSH. أيضًا يجب التأكد من دعم استضافة هوستنغر لإصدار PHP الذي ترغب في تثبيته وتحديثه قبل القيام بأي تغييرات، كما يجب أخذ نسخة احتياطية من الملفات قبل البدء في عملية التحديث.
  24. لإضافة Rigidbody إلى اللاعب حاول تجربة الطريقة التالية: في محرر Unity، اختر اللاعب الذي تريد إضافة Rigidbody إليه. في الفرع الهيراركي (Hierarchy)، اختر Add Component من الزاوية اليمنى العليا من النافذة. اختر Physics ثم Rigidbody. ستظهر الآن مكونات Rigidbody في القائمة الجانبية، ويمكنك تعيين القيم التي تريدها. على سبيل المثال، يمكنك ضبط خاصية Mass لتحديد كمية الكتلة التي يمتلكها اللاعب. وبعد إضافة Rigidbody، يجب تغيير بعض الأجزاء في الكود لتحديث التحرك بشكل صحيح مع Rigidbody. أولاً، يمكنك استبدال transform.Translate بـ GetComponent<Rigidbody>().MovePosition لتحريك اللاعب باستخدام Rigidbody. ثانياً، يمكنك استبدال transform.eulerAngles بـ GetComponent<Rigidbody>().MoveRotation لتحديث دوران اللاعب بشكل صحيح مع Rigidbody. لذلك، سيبدو الكود بعد إضافة Rigidbody على النحو التالي: using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerMovement : MonoBehaviour { public float MoveSpeed = 3f; public float smoothRotationTime = 0.12f; public bool enableMobileInputs = false; float currentVelocity; float currentSpeed; float speedVelocity; Transform cameraTransform; private Animator ch_animator; public FixedJoystick joystick; Rigidbody rb; void Start() { cameraTransform = Camera.main.transform; ch_animator = GetComponent<Animator>(); // Get the Rigidbody component rb = GetComponent<Rigidbody>(); rb.freezeRotation = true; } void FixedUpdate() { Vector2 input = Vector2.zero; if (enableMobileInputs) { input = new Vector2(joystick.input.x, joystick.input.y); ch_animator.SetBool("Walk", true); } else { input = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")); ch_animator.SetBool("Walk", false); } Vector2 inputDir = input.normalized; if (inputDir != Vector2.zero) { float targetRotation = Mathf.Atan2(inputDir.x, inputDir.y) * Mathf.Rad2Deg + cameraTransform.eulerAngles.y; transform.eulerAngles = Vector3.up * Mathf.SmoothDampAngle(transform.eulerAngles.y, targetRotation, ref currentVelocity, smoothRotationTime); Vector3 moveDirection = Quaternion.Euler(0f, targetRotation, 0f) * Vector3.forward; Vector3 targetVelocity = moveDirection * MoveSpeed * inputDir.magnitude; // Move the rigidbody to the target velocity rb.MovePosition(rb.position + targetVelocity * Time.fixedDeltaTime); } } } يتم تعيين الـ Rigidbody عن طريق استخدام دالة GetComponent() في دالة Start() وتعيين الحركة باستخدام الدالة MovePosition() في دالة FixedUpdate() بدلاً من دالة Translate() لتجنب المشكلة التي واجهتها سابقًا.
  25. فيما يتعلق بالـ SEO ، ليس هناك أي تأثير على ترتيب صفحتك في محركات البحث سواء استخدمت العنصر <p> أو <div> لتضمين النص. ومع ذلك ، يوصى باستخدام العنصر <p> لتنسيق النص الذي يتكون من فقرات منفصلة في صفحتك. هذا لأن العنصر <p> يشير إلى أن النص المضمن يتكون من فقرات منفصلة ويجب عرضها على أنها محتوى منفصل في الصفحة ، بينما يستخدم العنصر <div> بشكل عام لتنسيق المحتوى. وهنا بعض النصائح الإضافية حول الـ SEO كمبرمج: تأكد من أن موقعك متوافق مع الأجهزة المحمولة ، وذلك عن طريق استخدام التصميم الاستجابي (Responsive Design). حيث يعتبر التصميم الاستجابي عاملًا مهمًا في تحسين تجربة المستخدم وتحسين التصنيف في محركات البحث. احرص على استخدام الـ heading tags بشكل صحيح (h1, h2, h3, ...). حيث يجب استخدام الـ h1 لعنوان الصفحة واستخدام الـ h2 لعناوين الفقرات الفرعية والـ h3 للفقرات الفرعية الأخرى وهكذا. هذا يساعد في تنظيم المحتوى وتحسين قابلية القراءة والتصفح. استخدم الكلمات الرئيسية المناسبة بشكل صحيح في النصوص والعناوين. يجب تحديد كلمات رئيسية تناسب محتوى صفحتك وتضمنها بشكل طبيعي دون الإفراط فيها. ومن الأفضل أن تضع الكلمات الرئيسية في العنوان الرئيسي للصفحة (H1) وفي العناوين الفرعية (H2، H3 وما فوق) وفي المحتوى نفسه، ولكن بشكل طبيعي ولا تجعل النص يبدو كتابة خصيصاً لمحركات البحث. كما يجب تجنب التكرار المفرط للكلمات الرئيسية في الصفحة، والذي يمكن أن يؤدي إلى تصنيف المحتوى كمحتوى مخادع وتخفيض ترتيبه في نتائج البحث. ,بالنسبة لتأثير جعل جزء من النص بشكل Bold على السيو، فهو يمكن أن يساعد في تحسين التنسيق العام للصفحة وجعل النص أكثر قراءة واضحة للمستخدمين. ولكن، لا يوجد أي دليل على أن جعل النص Bold يؤثر على تصنيف الصفحة في محركات البحث. أما بالنسبة للاستخدام الصحيح لـ ul و li، فإنه يعتبر جزءًا من بنية الصفحة ويساعد في تحسين السيو بشكل عام. فعند استخدام الـ ul و li، يجب أن يكون لديك هدف محدد للعناصر المدرجة وأن تستخدم كلمات رئيسية ذات صلة في العناوين والنصوص المتعلقة بكل عنصر. يجب الانتباه إلى أنه في النهاية، الأمر يتعلق بتقديم محتوى ذو جودة عالية وتجربة مستخدم مريحة ومناسبة. لذلك، يجب التركيز على إنشاء محتوى مفيد وجذاب وتصميم صفحات الويب بطريقة سهلة الاستخدام للمستخدمين.
×
×
  • أضف...