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

Mustafa Suleiman

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

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

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

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

    365

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

  1. هناك إضافة godot-python التي تمكنك من استخدام لغة البرمجة بايثون في محرك الألعاب Godot. حيث أن إضافة godot-python هي إضافة مفتوحة المصدر توفر واجهة برمجية تسمح بكتابة البرامج النصية بلغة بايثون داخل Godot، وتوفر دعمًا للإصدارات الأقدم من Godot بالإضافة إلى Godot 4. وستحتاج إلى محرر Visual Studio وتثبيت اللإضافات اللازمة الخاصة بلغة C++ أثناء تثبيت البرنامج، حيث ستجد إضافة باسم Desktop development with C++. وبعد ذلك عليك بإنشاء بيئة إفتراضية للغة بايثون ثم تثبيت إضافة godot-python من المستودع، وإتباع الخطوات التي تم شرحها في مستودع الإضافة حيث هناك خطوات تفصيلية. وأيضًا تستطيع البحث عن Integrating Python into Godot وستجد شروحات عن هذا الأمر. وهناك أمر آخر ألا وهو إمكانية استخدام لغة البرمجة بايثون Python لتعزيز قدرات محرك الألعاب Godot، عن طريق تشغيل السكريبت بالخلفية أثناء تشغيل اللعبة في الجهة الأمامية. وذلك من خلال إنشاء بيئة افتراضية virtual environment للبرامج بلغة بايثون، وتنفيذ الأوامر في وقت التشغيل، والتعامل مع الأرقام والمصفوفات. ولرؤية شرح عن ذلك عليك بالبحث عن Use Python to Enhance The Godot Game Engine وستجد أمثلة وشرح حول الأمر. حل آخر باستخدام لغة GDScript GDScript هي لغة برمجة عالية المستوى ومكتوبة بشكل ديناميكي تستخدم لإنشاء محتوى في محرك ألعاب Godot. تستخدم اللغة نحوية الفراغات للتنسيق indentation-based syntax، وهي تشبه لغات البرمجة مثل Python. وهدف GDScript هو أن يكون محسّنًا ومتكاملاً بشكل وثيق مع محرك Godot، مما يسمح بمرونة كبيرة لإنشاء المحتوى والتكامل. وتمامًا كما يوحي اسمها، فإن GDScript مستقلة بالكامل عن لغة Python وليست مبنية عليها. لذلك يمكن القول أن GDScript تعتمد بشكل أساسي على تنسيقها الخاص والمحسّن لمحرك Godot وليست تعتمد على أي لغة برمجة أخرى.
  2. بالنسبة لسؤالك الأول، فإذا أردت إزالة الرسومات التي تم إنشاؤها باستخدام Plotly.js ، تستطيع استخدام الأمر التالي: Plotly.purge() وهذا الأمر يمكنه إزالة جميع الرسومات من المنطقة النشطة. أما بالنسبة لسؤالك الثاني، فهناك العديد من الأسباب التي قد تؤدي إلى عدم ظهور الرسمة وهذا يتطلب التحقق من عدة عوامل، مثلاً، إذا كانت قيم x و y تم تمريرها بشكل صحيح وإذا كان لديك أيضًا عناصر HTML و CSS اللازمة لعرض الرسمة في صفحتك. حاول استخدام Console log للتحقق من الأخطاء في الكود الذي تم إنشاؤه ويمكنك أيضًا استخدام محرر النصوص المدمج في المستعرض للتحقق من أي أخطاء في HTML أو CSS. وتأكد من أن كل من phi و h هي مصفوفات من الأعداد التي تحتوي على 16 عنصرًا، حيث يبدو أن عدد العناصر في كلا المصفوفتين يجب أن يكون متساويًا لأنهما تم تمريرهما كقيم x و y في مصفوفة البيانات. كما يجب التأكد من أن لديك أيضًا الرمز اللازم لعرض الرسمة في صفحتك HTML/CSS، وعلى سبيل المثال، يمكنك إضافة عنصر div إلى صفحتك HTML وتحديد الارتفاع والعرض الخاص بالرسمة، ثم تحديد معرف العنصر الخاص بـ div كـ id للمصفوفة layout ، مثل هذا الشكل: <!DOCTYPE html> <html> <head> </head> <body> <div id="plotly-div" style="width: 600px; height: 400px;"></div> <script> var data = [{x:[phi], y:[h], type: 'curve'}]; var layout = { fileopt : "overwrite", filename : "simple-node-example", // إعدادات أخرى مثل عنوان المخطط وأي إعدادات أخرى يمكن إضافتها هنا }; Plotly.newPlot('plotly-div', data, layout); </script> </body> </html> و سيتم إنشاء عنصر div بمعرف plotly-div حيث يتم تعيين العرض والارتفاع. بعد ذلك، يتم إنشاء مصفوفة data ومصفوفة layout ويتم استخدام Plotly.newPlot() لرسم الرسمة داخل العنصر div المحدد بمعرف plotly-div. وإذا كنت تستخدم الكود في محرر الأكواد VScode فلا تنسى استيرد أو تثبيت المكتبة، ويمكنك استخدام CDN كالتالي: <head> <script src="https://cdn.plot.ly/plotly-latest.min.js"></script> </head>
  3. أرجو أن تتفهم سبب عدم وجود إمكانية لذلك، حيث أنه في حالة السماح بتحميل الفيديو سيتم إتاحة الدورات للجميع، وقد تم بذل مجهود كبير من قبل فريق من المدربين في إعداد وتوفير تلك الدورات لك، وأيضًا يتم تحديث الدورات كل 3 شهور بالإضافة إلى الدعم من قبل أكثر من مدرب للإجابة على أسئلتك ومساعدتك في أي وقت. وأيضًا الشهادة والإختبارات والدورات الأخرى التي يتم توفيرها لك لاستكمال مسارك البرمجي الذي إخترته. والسبب الرئيسي لعدم السماح بتحميل الكورسات لمشاهدتها offline هو أن معظم منصات التعليم الإلكتروني تعتمد على نموذج البث المباشر لتوفير المحتوى التعليمي، ويتم تخزين محتوى الفيديو والمواد التعليمية على خوادم الشركة المزودة للخدمة التعليمية والتي يتم الوصول إليها من خلال الإنترنت فقط. وأيضًا هناك سبب آخر، إتاحة المواد التعليمية بشكل مجاني يضر أكثر مما يفيد، فمن طلب الإجتهاد وعلو الشأن عليه ببذل بعض الجهد ودفع جزء من ماله ليثبت صدق عزيمته ويحصل على مواد تعليمية قيمة تؤهله لمراده، بينما من ليس لديه عزيمة وصدق في طلبه فلن يقوم بذلك على عكسك أنت.
  4. بالإضافة إلى الطريقة التي ذكرها لك عدنان، هناك عدة طرق لتجميع الأرقام الزوجية الأقل من 20 تلقائيًا وتشمل: 1- استخدام حلقة (loop) لتكرار الفحص والإضافة. يمكن استخدام حلقة لتكرار عملية الفحص والإضافة حتى الوصول إلى جميع الأرقام المدخلة. من خلال الحلقة مع جملة if للتحقق مما إذا كان العدد زوجيًا وأقل من 20، وإذا كانت الشروط متوفرة يمكن إضافة العدد إلى المتغير result. 2- استخدام مصفوفة (array) لتخزين الأرقام وإجراء الفحص. يمكن تخزين الأرقام المدخلة في مصفوفة واستخدام حلقة لتحقيق الفحص والإضافة إلى المتغير result. عن طريق الجملة if داخل الحلقة للتحقق مما إذا كان العدد زوجيًا وأقل من 20، وإذا كانت الشروط متوفرة يمكن إضافة العدد إلى المتغير result. 3- الإعتماد على الدالة (function) لتنفيذ الفحص والإضافة. يمكن إنشاء دالة تتلقى مجموعة من الأرقام كمدخلات وتقوم بتنفيذ الفحص والإضافة تلقائيًا. يمكن استخدام الجملة if داخل الدالة للتحقق مما إذا كان العدد زوجيًا وأقل من 20، وإذا كانت الشروط متوفرة يمكن إضافة العدد إلى المتغير result. يمكن استخدام الدالة في أي مكان في الشيفرة التي تريدها لتجميع الأرقام الزوجية. مثال للطريقة الثانية: #include <iostream> using namespace std; int main() { int result = 0; int num; cout << "Please enter a number: "; while (cin >> num && num < 20) { if (num % 2 == 0) { result += num; } cout << "Please enter another number: "; } cout << "The sum of even numbers smaller than 20 is: " << result << endl; return 0; } والكود يطلب من المستخدم إدخال عدد واحد فقط في البداية، ثم استخدام حلقة while لطلب المزيد من الأرقام الزوجية الأقل من 20 مع الاستمرار في إضافة الأرقام إلى المتغير result. ويتوقف البرنامج عندما يتم إدخال رقم غير زوجي أو رقم أكبر من 20. في النهاية، يتم طباعة مجموع الأرقام الزوجية الأقل من 20.
  5. Firebase هي منصة شاملة تحتوي على خدمات عديدة، بما في ذلك قاعدة بيانات Realtime و Cloud Firestore، وتستطيع استخدام أي منهما بناءً على احتياجاتك. إذا كنت تستخدم Cloud Firestore، فإنه يستخدم نموذج قاعدة بيانات NoSQL مختلف عن نموذج MySQL الذي اعتدت عليه. حيث يتم تخزين البيانات في مستندات (documents) في مجموعات (collections) بدلاً من الجداول (tables). لكن يمكن الوصول إلى البيانات باستخدام العلاقات والاستعلامات التي تتطلبها تطبيقك. مثلاً، يمكنك إنشاء مجموعتين، واحدة لـ"الكتب" وأخرى لـ"السنوات"، ثم ربطهما معًا باستخدام مفتاح خارجي، وهذا يمكن القيام به باستخدام المراجع (references) في Firestore. بخصوص السؤال الثاني من المناسب تخزين البيانات التي تريد عرضها في القوائم المنسدلة (dropdown lists) في قاعدة البيانات، حتى يمكنك تحديث هذه البيانات وإضافة عناصر جديدة دون الحاجة إلى تحديث تطبيقك. وتستطيع تخزين هذه البيانات في مجموعة خاصة بها في قاعدة البيانات، أو يمكن استخدام Firebase Realtime Database لتخزينها كما أنه يسمح بتخزين بيانات في شكل JSON. أي يمكنك تخزين البيانات المختلفة سواء في قاعدة البيانات أو كملفات JSON داخل تطبيقك. ولكن إذا كانت هذه البيانات تحتوي على معلومات متغيرة بشكل مستمر أو تحتاج إلى تحديثات من الخادم، فقاعدة البيانات هي الخيار الأفضل.
  6. مما أراه في الصورة أن هناك تحذير يظهر في قاعدة البيانات phpMyAdmin وهو عبارة عن رسالة خطأ تشير إلى أن هناك خطأ في الجدول الذي يسمى "global_priv" في قاعدة البيانات MySQL. ويقوم نظام phpMyAdmin بمحاولة إصلاح هذا الجدول ، لكنه يعتبر أن الفهرس الخاص به تالف ولا يمكن إصلاحه. لذلك، يمكنك محاولة تشغيل أمر REPAIR TABLE على الجدول المتضرر باستخدام أداة MySQL مثل MySQL Command Line Client أو phpMyAdmin نفسه. REPAIR TABLE global_priv; وإذا لم يعمل الأمر السابق ، يمكنك حذف الجدول المتضرر وإعادة إنشائه، ويرجى ملاحظة أنه قد يتم فقدان البيانات في حالة حذف الجدول ، لذلك يرجى إجراء نسخ احتياطي قبل القيام بأي إجراءات. وأيضًا تأكدي من أن جدول باسم user حيث أن رسالة الخطأ تشير إلى أنه تم إجراء استعلام SELECT على جدول يسمى "mysql.user" في قاعدة البيانات MySQL والذي يطلب فقط تحديد صف واحد من الجدول باستخدام عبارة "LIMIT 1" وعندما يتم تنفيذ الاستعلام، فإنه يواجه خطأ. قد يكون السبب هو أن الجدول "mysql.user" غير موجود في قاعدة البيانات MySQL أو أن الحساب الذي يستخدمه phpMyAdmin للوصول إلى قاعدة البيانات لا يمتلك الأذونات اللازمة لعرض محتويات الجدول.
  7. إذا كنت متفرغ فأنصحك بتخصيص 6 إلى 10 ساعات يوميًا للمذاكرة، أما إذا كنت غير متفرغ فيمكنك تخصيص 3 ساعات يوميًا للمذاكرة أو ساعتان حيث أن أقل من ذلك لا يعتبر وقت كافي. وكلما زدت في الوقت والإجتهاد كان أفضل لك، ولكن ذلك لا يعني أن تخصص 10 ساعات لمشاهدة الفيديوهات بل خليط ما بين المشاهدة ثم الكتابة وراء المدرب أو بمفردك ومحاولة التغيير في الكود الذي كتبه المدرب وخلق تحدي بسيط لك وأيضًا البحث عن حل للمشاكل التي تواجهك من خلال القراءة أو مشاهدة فيديو على اليوتيوب مثلاً ولكن حاول البحث والقراءة أولاً. فلا تعود نفسك على رؤية الحل مباشرًة فعند البحث ستجد معلومات كثيرة أنت بحاجة إليها في البداية، وأيضًا ستكتشف المصادر الخاصة بالمعلومات والأدوات. أي أن الوقت اللازم يتوقف عليك أنت، فالبعض قد ينهي الدورة بشكل سريع لكن هل حقق الاستفادة المرجوة فعلاً؟ وهناك نصيحة، في البداية عليك أن تسير ببطيء من أجل الإسراع لاحقًا لا العكس، حيث أن الأساسيات هي ما ستوفر لك التعلم بشكل أسرع مستقبلاً وتجنب التخبط والتشتت. كل شخص له طريقة مفضلة في المذاكرة واسترجاع المعلومات، مثلاً إذا كان الكتابة بالورقة والقلم مريح لك ويفيدك فقم بتسجيل المعلومات الهامة التي تريد استرجاعها فيما بعد. والبعض يفضل مشاهدة 4 فيديوهات مثلاً ثم التطبيق بمفرده بدون الكتابة وراء المدرب، ومحاولة البحث، ثم الرجوع للفيديو لتذكر أمرًا ما أو رؤية كيفية تنفيذ كود معين. ودائمًا وأبدًا أفضل طريقة هي من خلال كتابة الكود، فمهما قمت بالمشاهدة حتى لو ألف ساعة، ذلك لا يغني عن كتابة الكود بيديك وتمرين عقلك على حل المشكلات البرمجية والتفكير قبل كتابة الكود. إذا كان الفيديو بحجم صغير فقم بمشاهدة فيديو حتى 4 فيديوهات تبعًا لما يناسبك، ثم قم بالتطبيق بمفردك لمحاكاة ما قام به المدرب، ثم حاول إضافة ميزة أو خاصية جديدة أو القيام بشيء معقد قليلاً أي اخلق تحدي بسيط يجعلك تبحث أو تفكر قليلاً إذا أردت. ولا مشكلة في الرجوع للفيديو لتذكر أمرًا ما، لكن ذلك ملاذك الأخير بعد التفكير والبحث. عند الرجوع للدورة بعد فترة إنقطاع، أفضل طريقة للاسترجاع هي بإعادة القيام بتنفيذ مشروع قمت بتنفيذه من قبل في الدورة. حيث أن ذلك سيحفزك إلى مذاكرة الأمور التي نسيتها من خلال إعادة المشاهدة أو البحث. وتستطيع أيضًا إعادة المشاهدة ولكن بسرعة 2X ثم إعادة التطبيق على مشروع لتثبيت ما تم استرجاعه.
  8. 1- لكي تظهر رسم بياني من Plotly.js في output في VSCode، تستطيع استخدام مكتبة "plotly-nodejs" والتي تسمح بإنشاء رسوم بيانية من Plotly.js دون الحاجة إلى فتح المتصفح. ولتثبيت هذه المكتبة باستخدام npm، اكتب الأمر التالي: npm install plotly-nodejs ثم يمكنك استخدام الكود التالي كمثال لإنشاء رسم بياني من Plotly.js وطباعته في output في VSCode: const plotly = require('plotly-nodejs'); const data = [ { x: [1, 2, 3], y: [4, 5, 6], type: 'scatter' } ]; const layout = { title: 'My Plotly Chart' }; plotly.plot(data, layout).then((figure) => { console.log(figure); }).catch((err) => { console.error(err); }); 2- لا يمكن التحكم في جدول Console باستخدام أوامر Console مثل console.table لأنها تتحكم فقط في كيفية طباعة البيانات في Console. ومع ذلك، تستطيع استخدام مكتبات Node.js مثل "cli-table" لإنشاء جداول مع تحكم كامل في التنسيق والعرض. ولتثبيت هذه المكتبة باستخدام npm، اكتب الأمر التالي: npm install cli-table وتستطيع استخدام الكود التالي كمثال لإنشاء جدول وطباعته في output في VSCode: const Table = require('cli-table'); const table = new Table({ head: ['Name', 'Age', 'Gender'], style: { head: ['green'], border: ['white'] } }); table.push( ['John', 30, 'Male'], ['Jane', 25, 'Female'], ['Bob', 45, 'Male'] ); console.log(table.toString());
  9. السبب في أن تغيير الاتجاه إلى اليمين وتحديد النص إلى اليمين يعمل في هذه الحالة هو استخدام القاعدة العامة "*". حيث أن علامة"*" تطبق تنسيقًا على جميع عناصر الصفحة، بما في ذلك النصوص والصور وغيرها، مما يجعلها قاعدة CSS عامة وقوية. بإضافة !important في النهاية، تمنع تطبيق أي قيمة CSS أخرى للعناصر المحددة، مما يجعل هذا التنسيق الأكثر أولوية ويتم تطبيقه بشكل قاطع على جميع العناصر. على الرغم من أن استخدام القاعدة العامة "*" و !important يمكن أن يكون حلًا سريعًا لتغيير محاذاة الموقع، إلا أنه يجب الانتباه إلى الأثر الجانبي الذي قد يكون لهذه الطريقة على التصميم العام للموقع، حيث يتم تطبيق التنسيق على جميع العناصر الموجودة في الموقع، بما في ذلك العناصر التي لا تتطلب تغييرًا في الاتجاه أو تحديد النص. لذلك، من الأفضل استخدام المحددات المحددة بدقة لتطبيق التنسيق الذي تريده بشكل أفضل. وأيضًا من الأفضل أن تنتيه جيدًا للـ CSS Specificity أثناء كتابة التسيقات، وسأشرح لك الأمر: تعتبر CSS Specificity (التحديدية) هي طريقة لتحديد أيّ تعليمات CSS ستطبّق على عناصر الصفحة، عندما يتواجد أكثر من قاعدة تعريف CSS تستهدف نفس العنصر. بمعنى آخر، الـ Specificity تحدد الأولوية بين القواعد المختلفة عند تطبيقها على نفس العنصر. يتم تحديد Specificity بناءً على عدد المحددات والفئات والعناصر المستخدمة في تحديد العنصر المستهدف في القاعدة CSS. تبدأ Specificity من أصفر إلى أعلى، حيث تتمثل في العدد الذي يتم تحديده بناءً على الأنواع الثلاثة التالية: 1- الـ Inline Styles تعتبر الأولوية العالية جدًا، حيث يتم كتابة الأوامر CSS مباشرة في العنصر، وتطبق هذه الأوامر دون أي تأخير. 2- الـ ID Selectors يأتي بعدها محدد الـ ID، والذي يتم تحديده بواسطة "#" متبوعاً بإسم الـ ID. على سبيل المثال، "#header". 3- الـ Classes والـ Attributes والـ Elements Selectors تأتي هذه التحديدات في المرتبة الأخيرة من ناحية التحديدية. ويشمل ذلك تحديد الـ class والـ attribute والـ element. على سبيل المثال، ".main-header"، "[type="text"]"، "p"، وهكذا. يتم ترتيب الأولويات كما يلي: الأولوية العالية للـ Inline styles. إذا كان هناك ID، فإنها تأخذ الأولوية على التحديدات الأخرى. إذا كانت التحديدات متساوية في ID، يتم التحقق من التحديدات الموجودة في الـ classes/attributes/elements. في حالة وجود تحديدات متساوية في جميع المستويات، يتم تطبيق الأخير الذي تم تعريفه في الكود.
  10. عليك بالتأكد من كتابة عنوان رابط الموقع بشكل صحيح، فمثلاً لو قمت بكتابة التنسيق التالي لرابط أكاديمية حسوب ستجد أن الإتجاه تغير: https://academy.hsoub.com body { direction: ltr; }
  11. الخطأ يعني أن GD Library غير متاحة في مكان تثبيت PHP الخاص بك، وتحتاج إلى تثبيتها وتمكينها على الخادم الخاص بك لتتمكن من تحويل الصور وتغيير حجمها باستخدام مكتبة الوسائط Spatie. وتستطيع القيام بذلك عن طريق التحقق من تثبيت GD Library على الخادم الخاص بك وتمكينها في ملف php.ini الخاص بـ PHP. بعد تمكين GD Library يجب أن تعمل Spatie media library بشكل صحيح ويمكنك رفع الصور بنجاح. وعلى نظام ويندوز تستطيع تحميل وتثبيت ملف DLL الخاص بـ GD Library من على الموقع الرسمي لـ PHP. وعليك بالعثور على الإصدار الصحيح من GD Library الذي يتوافق مع إصدار PHP الذي تستخدمه، ثم تحميل الملف DLL ونسخه إلى مجلد ext في مكان تثبيت PHP الخاص بك. ثم تفعيلها في ملف php.ini عن طريق إضافة السطر التالي: extension=gd وهناك حزمة أخرى لتعامل مع الصور تستخدم على نطاق واسع في لغة PHP وتدعى "ImageMagick"، وتلك الحزمة تتيح لك التلاعب بالصور بطريقة متقدمة أكثر من GD Library وتدعم تنسيقات الصور الشائعة. وتستطيع تثبيت ImageMagick على الخادم الخاص بك بنفس الطريقة التي تم تثبيت GD Library بها. بمجرد تثبيت ImageMagick وتمكينه في ملف php.ini الخاص بـ PHP، يمكنك استخدامها مع Spatie media library أو أي حزمة أخرى لتعامل مع الصور في PHP. والجدير بالذكر أنه يمكن استخدام GD Library و ImageMagick معًا في نفس الوقت في بعض الحالات للحصول على أفضل نتائج التلاعب بالصور في PHP.
  12. يتم إضافة shadow تلقائيًا على الشرائح في swiper أو للدقة يتم إضافة linear-gradient من خلال خاصية background-image فكما ترى في الصورة هناك كلاس باسم: swiper-slide-shadow-left swiper-slide-shadow-right وهو المسؤول عن إضافة الظل الذي تراه، ولحل تلك المشكلة، يمكنك استخدام التنسيق التالي في ملف App.css لديك: .swiper-slide-shadow-left, .swiper-slide-shadow-right { background-image: none !important; }
  13. يجب أن تحدد ما الذي تريد فعله بالضبط من خلال تعلمك PHP و وورد بريس. هل تريد إنشاء مشروع خاص بك فقط، أو العمل بواسطة وورد بريس فقط؟ أي أنك ستتخصص في وورد بريس؟ ذلك ممكن بالتأكيد، لكن إذا أردت العمل بشكل إحترافي والحصول على وظيفة، فيجب تعلم إطار لارافيل فهو ما يعطي للغة PHP قيمتها في سوق العمل، فبدونه لكانت اللغة قل استخدامها بشكل كبير منذ سنوات. ويجب عليك استكشاف المهارات المطلوبة لوظيفة مطور PHP وتعلم تلك المهارات، ألقي نظرة على مواقع التوظيف وإنظر على أكثر من وظيفة وتعلم المهارات التي تم طلبها بكثرة، والتي بالطبع ستجد من ضمنها إطار لارافيل وأحيانًا تجد مطلوب إطار Vue.js للواجهة الأمامية. وبالطبع بعض الوظائف تطلب خبرة في وورد بريس، لذلك كما قلت لك الأمر يتوقف على ما تريده، ونصيحتي هي قم بالتعلم بالتدريج ولا تستعجل وطبق على أكثر من مشروع أو قم بإعادة بناء المشروع بمفرد بعد الإنتهاء منه، ولا تتسرع في الإنتقال للقسم التالي. وبالطبع هناك فرص عمل لمطور وورد بريس فقط سواء في سوق العمل أو على مواقع العمل الحر، لكن أنت تحصر نفسك في جزء صغير فقط والأفضل زيادة المهارات الخاصة بك وبالتالي ستحصل على فرص عمل أفضل
  14. هناك 3 طرق لحساب الدقة: 1- حساب نسبة الدقة باستخدام وظيفة ABS في إكسل يمكنك استخدام وظيفة ABS في إكسل لحساب نسبة الخطأ أولاً، ثم طرح الخطأ من 1 سيعطيك نسبة الدقة. أدخل الصيغة التالية في الخلية E5 كما هو موضح في الصورة التالية: =1-ABS(C5/D5-1) ثم، انقر على أيقونة % لتطبيق تنسيق الرقم النسبي. بعد ذلك، انقر نقرًا مزدوجًا على أيقونة Fill Handle أو اسحبها لتطبيق الصيغة على الخلايا أدناه. 2- حساب نسبة الدقة باستخدام وظيفة IF في إكسل يمكنك استبدال وظيفة ABS بوظيفة IF في إكسل للحصول على نفس النتيجة. أولاً، ضع الصيغة التالية في الخلية E5 كما هو موضح أدناه. =1-IF(C5>D5,(C5-D5)/D5,(D5-C5)/D5) ثم، ضع تنسيق الرقم النسبي في تلك الخلية عن طريق النقر على أيقونة % من علامة التبويب الرئيسية. بعد ذلك، ضع الصيغة على جميع الخلايا أدناه باستخدام أيقونة Fill Handle. 3- استخدام وظيفة MIN-MAX لحساب نسبة الدقة في إكسل بديلًا، يمكنك استخدام وظائف MAX و MIN في إكسل لذلك، تعيد وظيفة MAX القيمة القصوى داخل نطاق معين بينما تعيد وظيفة MIN القيمة الدنيا. أولاً، أدخل الصيغة التالية في الخلية =1-(MAX(C5:D5)-MIN(C5:D5))/D5 ثانيًا، حدد تنسيق الرقم النسبي باستخدام أيقونة % كما هو موضح في الصورة أدناه. أخيرًا، ضع الصيغة على جميع الخلايا أدناه باستخدام أيقونة Fill.
  15. سأشرح لك الأمر من خلال الخطوات التي عليك إتباعها لإنشاء قاعدة بيانات تحتوي على بيانات باللغة العربية والإنجليزية: 1- يتم تحديد الحقول التي سيحتويها الجدول بما في ذلك الحقول المشتركة بين اللغتين والحقول الخاصة بكل لغة. | اسم الكتاب | اسم الكاتب | السعر باللغة العربية | السعر باللغة الإنجليزية | 2- تحديد تنسيق الحقول لتتناسب مع النصوص المكتوبة باللغتين، مثلاً، تحديد تنسيق الحقل للنصوص بحيث يمكن دعم النصوص الطويلة في اللغة العربية. | اسم الكتاب | varchar(100) | | اسم الكاتب | varchar(50) | | السعر باللغة العربية | decimal(10,2) | | السعر باللغة الإنجليزية | decimal(10,2) | 3- تحديد ترميز البيانات الذي يسمح بتخزين النصوص باللغتين العربية والإنجليزية بدون أخطاء. يمكن استخدام UTF-8 كترميز يدعم النصوص باللغتين. 4- تخزين البيانات في الجدول بطريقة تمكن من الوصول إلى النصوص باللغتين على حد سواء، حيث تستطيع استخدام حقل مشترك للنصوص العامة وحقول مخصصة لكل لغة للنصوص الخاصة باللغة. وتستطيع تخزين نفس البيانات باللغة العربية والإنجليزية أو أي لغات أخرى أخرى في قواعد البيانات بحيث يكون لكل لغة حقل مخصص لها، ويتم ذلك عن طريق تحديد نوع الحقل ليتناسب مع نوع البيانات المخزنة فيه. مثلاً، جدول يحتوي على حقلين لكل بيان (اسم المستخدم والجنسية)، أحدهما مخصص للغة العربية والآخر مخصص للغة الإنجليزي، وتخزين الاسماء والجنسيات باللغة المناسبة في كل حقل من هذين الحقلين.
  16. أنا أكره النصائح المكتلجة أي العامة والتي لا تصلح للجميع بدون معرفة تفاصيلهم الشخصية، حيث أن بعض النصائح قد تضر والمقصود هو الإفادة! وسأحاول نصيحتك بدون أن أضرك، في البداية أن تسير مع القطيع أفضل لك من تسير عكس التيار، فالأمر بحاجة إلى مجهود عظيم أنت في غنى عنه ولا أعرفك شخصيًا هل ستتحمل ذلك أم لا. نصيحة غريبة صحيح؟ أتفهم ذلك، لكن من تجربة واقعية أن تقوم بفعل ما يفعله الجميع بشكل روتيني أفضل لك من أن تقوم بمحاولة تشكيل الواقع تبعًا لما تريده أنت. أي لا تقم بالتركيز على أي شيء آخر غير الدراسة في الوقت الحالي، وفي فترة الأجازة قم بتعلم البرمجة إن كنت صادقًا فعلاً في تعلمها. وبعد الإنتهاء من الثانوية العامة سيتحدد مصيرك الأكاديمي فإما بكلية جيدة ولها مستقبل أو كلية شهادة فقط، والشهادة هامة جدًا في عالمنا العربي لا تستهن بها. وأنصحك بالإجتهاد للحصول على مجموع يؤهلك لدخول كلية حاسبات ومعلومات، حيث ستقطع أشواطًا وتسهل على نفسك الأمر في تعلم البرمجة وستجد حافز كبير وأصدقاء لهم نفس الهدف أيضًا، وهو أمر عظيم. ودائمًا في حياتك ضع أولويات، فمثلاً الدراسة لها وقت محدد وتنتهي، أي أنك لو لم تجتهد لفشلت دراسيًا وفوت على نفسك فرص جيدة لمستقبلك. وتأني ولا تستعجل وقارن نفسك بنفسك فقط وليس بالآخرين، وأنت أدرى بظروفك، ولكن لا تتكاسل، ولا تشغل بالك بأمور كثيرة خاصة بالمستقبل فتفشل في حاضرك ومستقبلك، بل ركز على ما ستفعله خلال فترة سنة إلى سنتين. ولا تشغل بالك كثيرًا بالرزق، فقط إجتهد في المذاكرة وتطوير نفسك في فترات فراغك من الدراسة، وأيضًا اختر أصدقائك جيدًا، فصدقني أنت هو متوسط أقرب 5 أشخاص لك وشخصيتك ستتشكل بناءًا على ذلك وأفعالك وتفكيرك أيضًا، فاخترهم جيدًا.
  17. تستطيع استخدام حلقتي for بدلاً من ذلك، حيث تقوم الحلقة الداخلية بتخزين قيم h، v، a، والحلقة الخارجية بتخزين قيم phi. بعد ذلك، يمكن رسم الرسم البياني باستخدام المكتبة المناسبة، مثل Plotly طالما أنك تستخدم JavaScript. وقد تبدو بعض القيم مكررة لأنك تستخدم خطوة 0.5 في الحلقة الداخلية وبعض القيم تحتوي على مجموعة من الأرقام العشوائية الصغيرة التي يمكن أن تؤدي إلى تقريب القيمة بشكل غير دقيق. وبالنسبة لعرض القيم كجدول ورسم بياني، تستطيع استخدام المكتبة المذكورة أعلاه أو أي مكتبة أخرى، أو ببساطة إنشاء جدول HTML يعرض القيم بطريقة منظمة وسهلة القراءة، وإنشاء رسم بياني باستخدام المكتبة التي تفضلها.
  18. حاول تسجيل الدخول من خلال وضع التخفي أو incognito وجرب تشغيل الفيديوهات، فإن عملت بشكل طبيعي، فيجب حذف الملفات المؤقتة الخاصة بالمتصفح من خلال الضغط على CTRL + SHift + Delete وسيظهر لك الصفحة التالية قم بالضغط على Clear data أو مسح البيانات. والآن أرجو منك تحديث المتصفح إلى آخر إصدار، فمثلاً لو كنت تستخدم جوجل كروم فقم بالتوجه للرابط التالي : chrome://settings/help وستجد أمامك خانة التحديث. وأيضًا عليك بإعادة تشغيل الراوتر الخاص بك، ثم حاول تشغيل الفيديوهات إن استمرت المشكلة، قم بتجربة متصفح آخر، وإن استمرت المشكلة عليك بتجربة تغيير الـ DNS للشبكة الخاص بك للـ DNS الخاص بجوجل. وفي بعض الأحيان قد تكون المشكلة من الإضافات الخاصة بالمتصفح، لذلك بالتجربة من متصفح بدون إضافات. وإن استمرت المشكلة جرب استخدام VPN، وإن استمرت المشكلة عليك بالتحدث لمركز المساعدة الخاص بأكاديمية حسوب.
  19. أرجو منك شرح ما هو المطلوب بالضبط، حتى أتمكن من مساعدتك. وإذا فهمت سؤالك بشكل صحيح، فتستطيع استخدام مكتبة Volley لإرسال طلبات متعددة الأجزاء (Multipart Request) باللغة العربية عن طريق تعريب الرسائل والنصوص التي تستخدمها في الطلب. قم بإنشاء صنف جديد يرث من Request ويستخدم نوع الطلب MultipartEntityBuilder المستخدم في إرسال الطلبات متعددة الأجزاء. استخدم النص العربي المطلوب داخل مكونات الطلب مثل العنوان والنص الرئيسي وغيرها، وتأكد من استخدام ترميز النص الصحيح. يمكنك استخدام مثيلات الفئة ByteArrayBody لإضافة صور أو ملفات أخرى إلى الطلب، ويمكنك تعريب الأسماء أيضًا. مثال: public class ArabicMultipartRequest extends Request<String> { private MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create(); private Response.Listener<String> listener; private HashMap<String, String> params; public ArabicMultipartRequest(String url, HashMap<String, String> params, Response.Listener<String> listener, Response.ErrorListener errorListener) { super(Method.POST, url, errorListener); this.listener = listener; this.params = params; buildMultipartEntity(); } private void buildMultipartEntity() { for (Map.Entry<String, String> entry : params.entrySet()) { entityBuilder.addTextBody(entry.getKey(), entry.getValue(), ContentType.create("text/plain", Charset.forName("UTF-8"))); } entityBuilder.addPart("image", new ByteArrayBody(imageData, "image.png")); } @Override public String getBodyContentType() { return entityBuilder.build().getContentType().getValue(); } @Override public byte[] getBody() throws AuthFailureError { ByteArrayOutputStream bos = new ByteArrayOutputStream(); try { entityBuilder.build().writeTo(bos); } catch (IOException e) { VolleyLog.e("IOException writing to ByteArrayOutputStream"); } return bos.toByteArray(); } @Override protected Response<String> parseNetworkResponse(NetworkResponse response) { String result = ""; try { result = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return Response.success(result, HttpHeaderParser.parseCacheHeaders(response)); } @Override protected void deliverResponse(String response) { listener.onResponse(response); } }
  20. المشكلة في الكود هي عدم استخدام دالة trim() لإزالة الفراغات الزائدة في نهاية السلسلة التي تم قراءتها باستخدام دالة read(). وتستطيعاستخدام دالة trim() بعد قراءة الحجم لإزالة الفراغات الزائدة وذلك عن طريق استخدام الكود التالي: size = size.trim(); وهذا يحذف أي فراغات زائدة في بداية أو نهاية السلسلة ويجعل الرسالة تظهر بشكل صحيح دون أي فراغات زائدة في النهاية. يمكنك إضافة هذا الكود بعد الحصول على قيمة الحجم وقبل طباعة النتيجة، كما هو موضح في الكود التالي: var size = read(); write("Enter your size: "); size = read().trim(); write("Your size = " + size);
  21. أنصحك باستخدام استضافة Railway.app فهي سهلة للغاية، ويمكنك رفع المشروع من خلال مستودع الـ GitHub وإضافة متغيرات البيئة وغيرها وسيعمل المشروع في ثوانٍ، وتستطيع إضافة قاعدة بيانات. وهناك قوالب جاهزة يمكنك الإختيار من بينها إذا أردت لإنشاء مشروع جديد للغة أو إطار العمل الذي تريده على الاستضافة. وهناك منفذ أوامر خاص بالإستضافة CLI يمكنك العمل من خلاله إذا أردت. ويمكنك قراءة المستندات الرسمية حيث بها شرح وافي، أو تستطيع البحث على اليوتيوب بالتالي deploy json server on railway أو How to deploy on railway وأيضًا هناك استضافة أخرى باسم render وهي جيدة أيضًا.
  22. تستطيع دعم اللغة العربية في VolleyMultipartRequest عن طريق تعيين مجموعة الأحرف المستخدمة في الإرسال على أن تكون بترميز UTF-8. والقيام بذلك عن طريق استخدام الدالة setCharacterEncoding في كائن VolleyMultipartRequest. يمكن إضافة السطر التالي في دالة VolleyMultipartRequest لتعيين مجموعة الأحرف على UTF-8: @Override public String getBodyContentType() { return "application/json; charset=utf-8"; } وبهذا سيتم إرسال البيانات بترميز UTF-8 الذي يدعم اللغة العربية.
  23. ستحتاج إلى دورة علوم الحاسب وستتعلم بها التالي: أساسيات الحاسوب وعلومه والتفكير المنطقي وما هي الخوارزميات وكيف تفيد في البرمجة تطبيقات عملية على أساسيات التفكير المنطقي باستخدام بيئة سكراتش Scratch التفاعلية أساسيات لغة البرمجة JavaScript وتطبيق المفاهيم التي تم شرحها باستخدامها، والتوسع في شرح التطبيقات العملية للغات البرمجة أساسيات أنظمة التشغيل المختلفة وكيفية تثبيت البرمجيات اللازمة للبرمجة عليها أساسيات سطر الأوامر في نظام لينكس، وشرح الأسس التي بني عليها النظام مع تطبيقها عمليًا أنظمة قواعد البيانات المختلفة، مع شرح تفصيلي للغة SQL للتعامل معها مبادئ أساسية في أنظمة قواعد البيانات NoSQL المفاهيم الأساسية التي تبنى فيها صفحات الويب مفاهيم أساسية في الشبكات والخوادم، وكيف يتم استقبال الطلبيات إلى الخادم والرد عليها مبادئ الحماية والأمان في الويب حيث أن الدورة مناسبة لمن: لمن لا يمتلك أي خبرة مسبقة في البرمجة ويريد الدخول في هذا المجال الشيق لمن يفكر بتغيير مساره المهني ويرغب بأن يصبح مبرمج ولا يعرف من أين يبدأ للمبرمجين الذين تعلموا احدى لغات البرمجة ذاتياً ويرغبوا بملئ الفراغات وتعلم الأسس لطلاب الجامعات الذين يواجهوا صعوبة ببعض المواد مثل أنظمة التشغيل وقواعد البيانات لمن حاول تعلم البرمجة بالسابق وشعر أنها صعبة ولم يتمكن من المواصلة وبعد ذلك تستطيع إختيار اللغة والمجال الذي تريده التخصص به، سواء كان دورة تطوير التطبيقات باستخدام لغة JavaScript أو دورة تطوير تطبيقات الويب باستخدام لغة PHP. وقد تم الإجابة على سؤال مشابه لسؤالك من قبل في النقاشات التالية، أرجو منك قرائتها وستحصل على فائدة بالتأكيد:
  24. تم الإجابة على أغلب أسئلتك بشكل وافي، لكن بخصوص التكلفة أنت بحاجة إلى معرفة التالي: في البداية قد تضطر إلى قبول تصميم صفحة هبوط مثلاً تتكلف 100 دولار بمبلغ 50 أو 25 دولار، وذلك من أجل الحصول على أول عميل لك على مواقع العمل الحر. حيث أن التكلفة الطبيعية لصفحة الهبوط تتراوح ما بين 50 إلى 100 دولار وقد تصل إلى 300 دولار، وذلك تبعًا لمدى التعقيد في التصميم وهل سيتم تنفيذ التصميم من قبلك، أم ستقوم باستلام التصميم جاهز وستعمل على أنت على تنفيذه. بعد ذلك، سيتعين عليك استكشاف متوسط الأسعار التي يطلبها المستقلين الآخرين، وهو عامل هام للمنافسة في ذلك السوق، فلن تستطيع رفع سعرك إلا إذا كان لديك سنوات خبرة ومعرض أعمال مميز. وببساطة تستطيع الإعتماد على تكلفة 50 دولار للصفحة وزيادة التكلفة تبعًا للوقت والتعقيد والمميزات المطلوبة، وحجم الخبرة التي يتطلبها المشروع، حيث أن للخبرة ثمن بالتأكيد، ولكن الكثير من الخبرة يعني أنك قادر على تنفيذ المشروع بشكل سريع وهنا يجب حساب تكلفة الخبرة والجودة بعيدًأ عن عامل الوقت. وأيضًا يجب احتساب القيمة التي تقدمها للعميل، فمثلاً لو كنت تقوم ببناء موقع لعميل يحقق لهم أرباح كبيرة على المدى الطويل، فبالطبع أنت بحاجة إلى حساب تكلفة أعلى للمشروع، أي عليك دائمًا وضع العائد الذي سيحصل عليه العميل جراء تنفيذك للمشروع فإن كان بسيطًا فليس من المنطقي وضع تكلفة مرتفعة للمشروع. وهناك عوامل أخرى مثل البلد الخاصة بالعميل وعملة تلك البلد وقيمتها مقابل الدولار، وأيضًا إذا كان الموقع خاص بشركة فستكون التكلفة أكبر مقارنًة إذا ما كان لعميل بمفرده ولمشروع شخصي وبميزانية منخفضة. وقد تم النقاش حول العمل الحر وحساب تكلفة المشروع في النقاشات التالية بشكل مفصل أكثر:
×
×
  • أضف...