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

Mustafa Suleiman

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

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

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

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

    365

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

  1. هل جربت تصفح الموقع من خلال متصفح آخر؟ في حال تم التصفح بشكل طبيعي فعليك بحذف الملفات المؤقتة للمتصفح الذي يوجد به المشكلة من خلال الضغط على علامة القفل بجان رابط موقع الأكاديمية وذلك في جوجل كروم، ثم إختيار Cookies and site data: بعد ذلك اختر manage Cookies and site data وستظهر لك نافذة بها البيانات الخاصة بالموقع، فقم بحذف الجميع كالتالي: وفي حال لم يتم حل المشكلة، فقد تحتاج إلى حذف جميع الملفات المؤقتة للمتصفح من خلال الضغط على CTRL + SHIFT + DELETE ثم إختيار ALL TIME من القائمة المنسدلة ثم تحديد Cookies and other site data وCached images files ثم الضغط على clear data، لكن يجب التنبيه أن تلك الطريقة تعني تسجيل خروجك من جميع المواقع لأنه سيتم حذف الكوكيز.
  2. ما تريدينه هو رفع مشروع يستخدم Webpack على GitHub pages وقد تم توضيح ذلك من خلال الفيديو التالي: وسأوضح لك الخطوات: أولاً عليك بإنشاء مستودع جديد على GitHub. ثم فتح مجلد الـ build أو dist النهائي فقط في vscode، وهو المجلد الذي يتم به تجميع الكود النهائي للمشروع ليصبح جاهز للنشر. ثم إنشاء مستودع git داخل ذلك المجلد من خلال المر التالي: git init والآن عليك بكتابة الأوامر التالية بالترتيب من أجل رفع المشروع إلى المستودع على GitHub: git add. git commit -m "my first commit" git branch -M main git remote add origin <رابط المستودع على جيت هوب> git push origin main والآن توجهي للمستودع الخاص بالمشروع على GitHub ثم الضغط على تبويب الإعدادات Settings، وستجدي خيار باسم pages اضغطي عليه ثم اختاري الفرع الذي تم رفع المشروع علي ه كما بالصورة: والآن سننتظر قليلاً لحين الحصول على رابط المشروع لتصفحه كما بالصورة: وفي حال أردتي رفع المشروع بالكامل بما في ذلك مجلد build فعليك بتجاهل الخطوة الأولى وإنشاء المستودع في جذر المشروع الرئيسي ثم رفعه إلى المستودع بنفس الأوامر التي ذكرتها لك ثم التوجه إلى الإعدادات وتفعيل pages والآن ستحصلين على رابط أضيفي إليه build في النهاية من أجل تصفح مجلد build، أي كالتالي: https://amine.github.io/test أضيفي إليه أنت build ليصبح كالتالي: https://amine.github.io/test وستجدين المزيد من التوضيح والشرح هنا:
  3. مزايا Express error handler تحسين استقرار وتوفر التطبيق. تقليل كمية الكود التي تحتاج إلى كتابتها. إمكانية تجميع الأخطاء حسب نوعها. إمكانية إرسال ردود مفيدة إلى المستخدمين في حالة حدوث خطأ. متى يجب استخدام Express error handler (throw new Error) عند حدوث خطأ في الكود الخاص بك. عند تلقي طلب غير صحيح من المستخدم. عند حدوث خطأ في الاتصال بالشبكة. عند حدوث خطأ في قاعدة البيانات. متى يجب تجنب استخدام Express error handler (throw new Error) عند حدوث خطأ غير متوقع. عند حدوث خطأ لا يمكنك التعامل معه. عند حدوث خطأ غير مهم. وإليك مثال على كيفية استخدام Express error handler: // Handle a 404 error app.use(function(req, res, next) { if (req.originalUrl === '/404') { res.status(404).send('The page you are looking for is not found.'); } else { next(); } }); // Handle a 500 error app.use(function(err, req, res, next) { res.status(500).send('An unexpected error occurred.'); });
  4. الإختلاف هو في طريقة تحويل البيانات إلى سلسلة، حيث يقوم x-www-form-urlencoded بتحويل البيانات إلى سلسلة باستخدام رمز URL، بينما يحول raw البيانات إلى سلسلة كما هي. ونستخدم x-www-form-urlencoded للبيانات التي سيتم إرسالها عبر نموذج ويب، مثلاً لإرسال اسم المستخدم وكلمة المرور إلى خادم، وتحويل تلك البيانات إلى سلسلة، وستبدوا السلسلة الناتجة كالتالي: username=johndoe&password=secret ولاحظ أنه يتم ترميز البيانات بتنسيق مفتاح/قيمة وإرسالها في جسم الطلب. أي لو في إرسال طلب POST لإضافة مستخدم جديد إلى قاعدة البيانات، يمكنك استخدام x-www-form-urlencoded لإرسال البيانات التالية: مثال URL: http://localhost:3000/api/users Body type: x-www-form-urlencoded البيانات: key: name، value: John Doe key: email، value: johndoe@example.com key: age، value: 30 وفي مشروع Node.js، يجب أن تُعالج طلبات POST هذه الأنواع من البيانات في جسم الطلب، باستخدام إطار عمل مثل Express، ويمكنك قراءة بيانات x-www-form-urlencoded أو raw من جسم الطلب كالتالي: const express = require('express'); const bodyParser = require('body-parser'); const app = express(); // تمكين معالجة x-www-form-urlencoded app.use(bodyParser.urlencoded({ extended: false })); app.post('/api/users', (req, res) => { const { name, email, age } = req.body; // قم بإجراء الإجراءات اللازمة لإضافة المستخدم إلى قاعدة البيانات هنا res.send('تمت إضافة المستخدم بنجاح'); }); app.listen(3000, () => { console.log('الخادم يعمل على المنفذ 3000'); }); بينما يستخدم raw عادةً للبيانات التي لا يمكن تحويلها إلى سلسلة باستخدام رمز URL، أي في حال كنت تريد إرسال ملف إلى خادم، فتستطيع استخدام raw لتحويل الملف إلى سلسلة، وستبدوا السلسلة الناتجة كالتالي: <file content> أي في حال أننا نريد إرسال بيانات في تنسيق غير مشفر، مثل نص عادي (Plain Text) أو JSON أو XML. ولنفترض أنك ترغب في إرسال طلب POST لإضافة مستخدم جديد باستخدام تنسيق JSON، هنا نستخدم Raw لإرسال البيانات التالية: مثال URL: http://localhost:3000/api/users Body type: Raw واختيار JSON من القائمة المنسدلة البيانات (JSON): { "name": "John Doe", "email": "johndoe@example.com", "age": 30 } وبالمثل يتوجب معالجة طلبات POST لذلك النوع من البيانات في جسم الطلب باستخدام إطار عمل مثل Express، ويمكنك قراءة بيانات x-www-form-urlencoded أو raw من جسم الطلب كالتالي: const express = require('express'); const bodyParser = require('body-parser'); const app = express(); // تمكين معالجة JSON app.use(bodyParser.json()); app.post('/api/users', (req, res) => { const { name, email, age } = req.body; // قم بإجراء الإجراءات اللازمة لإضافة المستخدم إلى قاعدة البيانات هنا res.send('تمت إضافة المستخدم بنجاح'); }); app.listen(3000, () => { console.log('الخادم يعمل على المنفذ 3000'); });
  5. في الواقع أنت على الطريق الصحيح، فليس التعلم بالكم ولكن بالكيف، فقد يستفزك أن ترى البعض ينهي دورة في خلال أسبوع مثلاً بينما أنت تستغرق وقتك في الفهم والاستيعاب وتدوين الملاحظات ثم التطبيق. وقد ترى الأمر ممل ولا تحرز تقدم كبير، والأمر مغاير تمامًا، حيث أنك تحرز تقدم كبير بناءًا على أسلوب المذاكرة الصحيح الذي تتبعه، حيث أن عملية التعلم بالشكل الصحيح بطيئة في البداية وقد تجد نفسك تستغرق يوم كامل في بعض الأجزاء ولا مشكلة في ذلك. طالما أنك تبذل ما بوسعك فلا تقلق، ومع الوقت ستجد نفسك تتعلم بشكل أسرع وأفضل من أي شخص قام بإنهاء الدورة بشكل سريع وظن نفسه أنه أصبح مبرمج، لابد من التأني في البداية والمراجعة بعد مرور فترة من أجل تثبيت المعلومات، والتركيز بشدة على الأساسيات والتعمق بها والتطبيق عليها. وهناك أمر هام يجب التنبيه إليه، بعض الأشخاص يقوم بتدوين كل شيء أو كتابة الكود بشكل نصي في ورقة خارجية مثلاً، وذلك غير صحيح، فقط النقاط الهامة وملاحظات من أجل المراجعة أي كملخص لما فهمته من الدرس، فأنت تستطيع البحث عما تريده على جوجل في أي وقت، المهم هو الفهم والاستيعاب. وأنصحك بقراءة النقاش التالي وستجد به الكثير من الإجابات على الأسئلة لديك:
  6. العرض الصيفي الحالي يتم تطبيقه على الإشتراكات الجديدة، وهناك حل وحيد وهو الاستفسار عن وجود إمكانية لذلك من خلال سؤال مركز الدعم في أكاديمية حسوب، وسيتم الرد عليك في خلال فترة 24 إلى 48 ساعة. ولكن لا تعلق الكثير من الآمال على ذلك، وحاول أيضًا السؤال عن وجود كوبونات أو خصومات مثلاً بدلاً العرض الصيفي في حال لم يتوفر لك.
  7. لا تقلق أبدًا بخصوص ذلك، حتى لو طال الأمر قليلاً سيتم الرد عليك وحل المشكلة، فلا داعي للقلق بخصوص تلك النقطة.
  8. لكي يتضح لك الأمر، دورة علوم الحاسب ليست موجهة للتخصص في أحد مجالات البرمجة، بل للتاسيس بشكل سليم ودراسة علوم الحاسب من أجل دخول مجال البرمجة بقوة وإختيار المجال الذي تريد التخصص به عن وعي ودراية وأيضًا إمتلاك خبرة كافية لتعلم أي مجال تريد. وأنصحك بقراءة التالي لتفهم الفائدة الكبيرة التي تحصل عليها جراء دراسة علوم الحاسب: لذلك يتم مساندتك لفترة تصل إلى 6 أشهر من تاريخ حصولك إجتيازك للإختبار والحصول على الشهادة، وتوجيهك من أجل التخصص في مجال برمجي مطلوب في سوق العمل والحصول على وظيفة لكن بشرط الجد والإجتهاد، وستجد في أكاديمية حسوب دورات لمختلف المجالات ومنها: دورة تطوير تطبيقات الويب باستخدام لغة PHP دورة تطوير التطبيقات باستخدام لغة JavaScript وبإمكانك دراسة المسار الأول من جميع الدورات الأخرى بشكل مجاني في حال أردت زيادة معلوماتك أو التعمق بشكل أكبر.
  9. لا داعي للقلق عزيزي عبد المالك، في بعض الأحيان يوجد ضغط على فريق الدعم في أكاديمية حسوب، وسيتم الرد عليك خلال 24 إلى 48 ساعة، طالما أنك تحدثت إليهم من خلال حسابك الذي اشتريت من خلاله الدورات وأخبرتهم بالمشكلة فسيتم حلها. لكن حاول تفقد الدورات لديك من خلال تبويب دوراتي كالتالي: وستجد الدورات التي قمت بالإشتراك بها، وهنا توضيح بشكل مفصل: كيف أصل للدورات التي اشتركت بها وحاول مثلاً تسجيل الخروج ثم تسجيل الدخول مرة أخرى لحسابك وتفقد الدورات مرة أخرى لحين الرد عليك من قبل مركز المساعدة في أكاديمية حسوب.
  10. الأسئلة الإختبارية لا يتم الإجابة عليها بشكل مباشر، وأنت تريد فعل ذلك من خلال لغة جافا، صحيح؟ سأوضح لك الخطوات باستخدام لغة جافا ومكتبة java.time.LocalDate، حيث سيتعين عليك استيراد المكتبة java.time.LocalDate وjava.time.format.DateTimeFormatter لتعامل مع التواريخ وتنسيقها. ثم إنشاء الدالة الرئيسية (main) التي ستكون نقطة البدء لتنفيذ البرنامج. بعد ذلك حدد التاريخ الثابت الذي ترغب في طرحه من التاريخ الآخر، ويجب أن يكون التاريخ في شكل نصي "yyyy/M/d" ويمكن تخزينه في متغير نصي (String). ثم باستخدام DateTimeFormatter، قم بتحويل النصوص إلى كائنات LocalDate. الآن استخدم دوال minusYears و minusMonths و minusDays لطرح التاريخ الثابت من التاريخ الآخر. وفي النهاية عرض النتيجة باستخدام System.out.println() بناءًا على نمط التنسيق المعين (مثلاً "yyyy/M/d"). وبذلك ستتمكن من طرح التاريخ الثابت (constantDate) من التاريخ الآخر (otherDate) وعرض النتيجة بتنسيق "yyyy/M/d" في الإخراج القياسي، وبالطبع يمكن تحسين الكود بإضافة التحقق من صحة التواريخ المدخلة والتعامل مع الاستثناءات المحتملة.
  11. أولاً، Django هو إطار عمل ويب يستند إلى Python، بينما Angular هو إطار عمل ويب يستند إلى JavaScript. ثانيًا، Django و Angular ليسا مصممين خصيصًا لإنشاء تطبيقات أندرويد مما يعني أنك ستحتاجين إلى استخدام إطار عمل من أجل إنشاء تطبيق الهاتف وليس Angular أو Django، مثل React Native أو Flutter، لإنشاء الواجهة الأمامية لتطبيقك. بينما في الواجهة الخلفية نستخدم Django وربطها بالواجهة الأمامية عن طريق الـ API's. بينما لو أردتي استخدام Django فقط فهناك حل وهو تحويل الموقع إلى Progressive Web App (PWA) فتستطيعي استخدام django-pwa من أجل تحويل الموقع إلى نسخة قابلة للاستخدم كتطبيق على الهاتف، وهو أشبه بنسخة من الموقع للهاتف لكن على هيئة تطبيق مع ميزة التصفح بدون إنترنت. وفي حال أردتي بدائل للواجهة الخلفية فهناك NODE.JS في حال قمتي بتعلم React Native فستصبح خيار ممتاز لك، لكونها بيئة عمل تعتمد على جافاسكريبت أيضًا. بينما Flutter يعتمد على لغة Dart. وأنصحك بقراءة التالي: ويوجد في أكاديمية حسوب دورة تطوير تطبيقات باستخدام جافاسكريبت وبها مسار كامل لتطوير تطبيقات الهاتف باستخدام React Native.
  12. أرجو منك طرح الأسئلة المتعلقة بالدورات أسفل الفيديو الخاص بالسؤال في التعليقات أسفل الفيديو، وطرح الأسئلة العامة هنا. وبخصوص سؤالك حاول القيام بالتالي: sudo chown root:root /etc/vsftpd.conf ثم الأمر التالي: sudo openssl req -x509 -nodes -days 1095 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem ثم التالي: service vsftpd start بعد ذلك الأمر التالي: service vsftpd reload ثم إعادة التشغيل: sudo systemctl restart vsftpd.service ثم التجربة: systemctl status vsftpd
  13. وهل قام هو بتوثيق حسابه دون التحدث لمركز المساعدة؟ كل ما على صديقك فعله هو إرسال بطاقة الهوية وطلب التوثيق إذا أراد ثم إنتظار الرد، أو التحدث مباشرًة لمركز المساعدة الخاص بمستقل أو خمسات والسؤال عن الحالة الخاصة به، لا أحد سواهم يستطيع تأكيد ذلك.
  14. في حال أنك تريد استخدام كود من main.js في ملف home.js فعليك بتضمين ملف main.js أولاً حتى تصبح الدوال جاهزة ومعرفة عند استدعائها في ملف home.js حيث أن الكود يتم قراءته من الأعلى للأسفل.
  15. بالطبع فأنت بحاجة إلى تعديل الكود ليتوافق مع التغييرات التي حدثت في الإصدار 8.0. لذلك حاول التحقق من ملفات السكربت والصفحات الخاصة به للتأكد من عدم وجود أخطاء قوية (Fatal Errors) أو رسائل خطأ عند تشغيلها على PHP 8، بالإَضافة إلى التأكد من عدم استخدام الوظائف المتوقفة (deprecated functions) التي قد تكون تم استبدالها بوظائف جديدة في PHP 8. وفي حال لم تتمكن من تحديد سبب التوافقية، بإمكانك استخدام أدوات التحويل (Migration tools) المتاحة لتحويل السكربت من PHP 7 إلى PHP 8، وتلك الأدوات تساعد في اكتشاف التغييرات التي تحتاج إلى إجرائها لتحقيق التوافقية مع PHP 8 ومنها: PHP_CodeSniffer PHPCompatibility rector وستجد هنا الدليل الرسمي الذي يوضح طريقة عمل Migrating أو تحويل الكود من PHP 7.4 إلى PHP 8.0، حيث يتم شرح التغييرات التي حدثت: https://www.php.net/manual/en/migration80.php
  16. نعم ذكرت ذلك، ولكن أشرت أن ذلك أمر غير مؤكد ومن يستطيع تأكيده هو مركز المساعدة الخاص بمنصة مستقل، لذلك عليه بالتحدث إليهم وشرح الأمر والتأكد من إمكانية ثوثيق واستخدام والحساب بشكل طبيعي في حال إمتلاكه بطاقة هوية، لكن الشروط الرسمية لاستخدام المنصة هو أن يكون عمره أكبر من 18 عام كما أشرت. الأمر بسيط، وهو سؤال مركز الدعم عن وجود إمكانية لذلك أم لا.
  17. في حال قراءة شروط الاستخدام الخاصة بمنصة مستقل ستجد الشرط التالي: عمر المستخدم أكبر من 18 سنة يلتزم المستخدم المسجل في مستقل أن عمره أكبر من 18 سنة، وقد يطلب مستقل وثائق تثبت ذلك في حال دعت الحاجة. لكن لا حاجة للقلق بشأن غلق حسابه، فقد يتم تعطيله مؤقتًا لحين بلوغه السن المطلوب، وعليه بالتحدث لمركز المساعدة الخاص بمنصة مستقل وشرح الأمر لهم وأنه يمتلك بطاقة إثبات هوية. وتوثيق الهوية إلزامي في حال سحب أرباح تتجاوز 25$، أي في حال كانت الأرباح لم تتجاوز 25$ فلن يتم سؤالك عن توثيق الهوية. ومن ضمن شروط الاستخدام الأخرى هي أنه يتعهد المستخدم المسجل في مستقل أنه الوحيد الذي يستخدم الحساب ويكون مسؤولا عن كل ما يتم عبر حسابه، ولا يسمح حاليا أن يقوم أكثر من شخص باستخدام حساب واحد في مستقل.
  18. سأوضح لك الطريقة بشكل عام وحاول التفكير في كيفية تنفيذها لكي تحقق استفادة، ثم وفر الكود وسيتم مساعدتك. وستحتاج إلى حلقتين متداخلتين، الأولى للتحكم في عدد الأسطر، والثانية للتحكم في عدد النجوم في كل سطر. في الحلقة الخارجية، نقوم بتحديد عدد الأسطر التي نرغب في طباعتها (وليكن 5)، ثم نستخدم حلقة داخلية لطباعة النجوم في كل سطر. وفي البداية، يكون لدينا سلسلة فارغة لتجميع النجوم (stars)، ثم نستخدم حلقة داخلية أخرى لإضافة نجمة واحدة في كل تكرار حتى نصل إلى عدد النجوم المناسب للسطر الحالي، ثم نقوم بطباعة النتيجة.
  19. هل تقصدين تحويل كود مكتوب بالفعل إلى كود بلغة C؟ عامًة يوجد حزمة Cython وهو مترجم يسمح لك بإضافة ملحق C إلى لغة Python، ويستطيع Cython تحويل كود Python إلى C/C++ نظرًا لأنه يمتلك امتدادًا للغة C، ولكن يتطلب بعض التعديلات اليدوية في الكود، لذلك هو غير مناسب للمشاريع الكبيرة. أيضًا يمكن تحويل كود Python إلى C++ باستخدام أداة تحويل البرمجيات المفتوحة المصدر والمسماة Transcryp، وباستطاعة تلك الحزمة تحويل كود Python إلى C++ باستخدام واجهة سطر الأوامر بسهولة. حزمة أخرى باسم Nukita عبارة عن مترجم فعال آخر يمكنه تحويل برنامج Python إلى C/C++ في غضون ثوانٍ قليلة بشكل أفضل مقارنةً بـ Cython و Transcrypt، ويمكن لذلك المترجم التعامل مع مجموعة واسعة من كود Python وتنفيذ التحويل بسهولة. ويجب التنبيه إلى أنه في بعض الأحيان قد يتطلب الأمر تعديل بعض الأكواد بشكل يدوي بعد عملية التحويل ليعمل البرنامج بشكل سليم. دروس ومقالات لغة C في أكاديمية حسوب
  20. القسم متاحة في كلية حاسبات ومعلومات عين شمس فقط على حد علمي، وتستطيع التأكد من ذلك من خلال صفحة الجامعة على ويكيبيديا: https://ar.wikipedia.org/wiki/كلية_الحاسبات_والمعلومات_(جامعة_عين_شمس) https://ar.wikipedia.org/wiki/كلية_الحاسبات_والذكاء_الاصطناعي_(جامعة_القاهرة) https://ar.wikipedia.org/wiki/كلية_الحاسبات_والذكاء_الاصطناعي_(جامعة_حلوان)#:~:text=تقدمها أقسام الكلية-,قسم علوم الحاسب,التوازي، لغة التجميع، وغيرها. أما في جامعة القاهرة فيوجد الأقسام التالية: علوم الحاسب. نظم المعلومات. تكنولوجيا المعلومات. بحوث العمليات ودعم إتخاذ القرار. الذكاء الاصطناعى وجامعة حلوان الأقسام التالية: قسم علوم الحاسب قسم نظم المعلومات قسم تكنولوجيا المعلومات
  21. أنت تقصد في في جافاسكريبت، صحيح؟ عامًة نستخدم"nested loops" أو الحلقات المتداخلة لإجراء تكرارات داخل بعضها البعض، مم يعني أنك تستطيع وضع حلقة داخل حلقة أخرى، وهو أمر مفيد عندما تحتاج إلى تنفيذ إجراءات متعددة ومتداخلة للوصول إلى البيانات الخاصة بك. ولنفترض أن لدينا مصفوفة متداخلة (nested array) تحتوي على قائمة بعض الأشخاص وأعمارهم، ونريد عرض جميع الأشخاص مع أعمارهم باستخدام nested loops، كالتالي: const people = [ { name: "John", age: 25 }, { name: "Jane", age: 30 }, { name: "Bob", age: 22 }, ]; // استخدام nested loops لعرض الأشخاص مع أعمارهم for (let i = 0; i < people.length; i++) { const person = people[i]; console.log(`الشخص رقم ${i + 1}: ${person.name}، عمره ${person.age} سنة.`); } لاحظ أن لدينا حلقة خارجية تتعامل مع العناصر الخارجية في المصفوفة people، وحلقة داخلية تتعامل مع الخصائص الداخلية لكل عنصر (اسم الشخص وعمره)، ويتم تنفيذ الحلقتين معًا، بحيث تعمل الحلقة الداخلية لكل تكرار من الحلقة الخارجية. والنتيجة هي: الشخص رقم 1: John، عمره 25 سنة. الشخص رقم 2: Jane، عمره 30 سنة. الشخص رقم 3: Bob، عمره 22 سنة. مثال آخر ليتضح الأمر لك: لنفرض أن لدينا مصفوفة متداخلة تحتوي على درجات طلاب في مادتين، ونريد حساب المجموع الإجمالي لكل طالب وطباعته: const grades = [ [85, 90], [70, 80], [95, 88], ]; // حساب المجموع الإجمالي لكل طالب وطباعته for (let i = 0; i < grades.length; i++) { const studentGrades = grades[i]; let totalGrade = 0; for (let j = 0; j < studentGrades.length; j++) { totalGrade += studentGrades[j]; } const averageGrade = totalGrade / studentGrades.length; console.log(`طالب رقم ${i + 1}: المجموع = ${totalGrade}، المعدل = ${averageGrade}`); } في المثال السابق يوجد حلقة خارجية تتعامل مع كل طالب في المصفوفة grades، وحلقة داخلية تتعامل مع الدرجات المختلفة لكل طالب، ثم حساب المجموع الإجمالي لدرجات كل طالب وتحديد المعدل الحسابي له. والنتيجة هي: طالب رقم 1: المجموع = 175، المعدل = 87.5 طالب رقم 2: المجموع = 150، المعدل = 75 طالب رقم 3: المجموع = 183، المعدل = 91.5 وتستطيع البحث على اليوتيوب عن "الحلقات المتداخلة Nested Loops" ثم اسم اللغة وستجد شروحات كثيرة.
  22. عليك بدراسة سوق خدمات الاستضافة والمنافسين لفهم الفرص والتحديات الموجودة، وتحديد نموذج الأعمال الخاص بك والخدمات التي ترغب في تقديمها (استضافة مشتركة، سحابية، افتراضية، خوادم خاصة، دومينات، إلخ). ثم ابتكر اسمًا لشركتك وتحقق من توافر اسم النطاق عبر مواقع تسجيل النطاقات، وتسجيل علامتك التجارية وحقوق الملكية الفكرية إن لزم الأمر. بعد ذلك تأتي خطوة اختيار الأجهزة والبرمجيات التي ستدعم عملية استضافة المواقع والتطبيقات، وذلك يتطلب شخص متخصص في إنشاء السيرفرات وإدارتها. ثم وضع خطة تسويقية شاملة للترويج لشركتك وخدماتك، وتطوير موقع ويب احترافي للشركة يعرض خدماتك ويوفر واجهة للعملاء للتواصل والشراء، واستغل وسائل التواصل الاجتماعي والإعلانات المدفوعة لتوسيع نطاق جمهورك. بالطبع يجب توفير دعمًا فنيًا عالي الجودة على مدار الساعة للعملاء عبر الهاتف والبريد الإلكتروني والدردشة الحية، مع ضمان أمان البيانات والمواقع المستضافة للعملاء، وتحسين الاستقرار والأداء لتقديم خدمة استضافة موثوقة.
  23. أشكرك على ثقتك أيمن وأنا سعيد بمساعدتك، وبخصوص سؤالك ما هي الدولة التي تتحدث عنها بخصوص المنحة هل هي دولة عربية أم أجنبية؟
  24. بالطبع تستطيع ذلك، حيث يوفر Godot واجهة برمجة تطبيقات مفتوحة المصدر تسمى GDNative تسمح لك بإنشاء ملحقات C++ لمشروع Godot، وبإمكانك استخدام هذه الملحقات لإضافة وظائف جديدة إلى المشروع، أو لتحسين الأداء، أو لتوفير إمكانية الوصول إلى وظائف النظام غير المتوفرة في GDScript. حيث أن اللغات المدعومة هي GDScript و C/C++ وC#. ولبدء استخدام C++ مع Godot في الإصدارات الأقدم من 4.0، ستحتاج إلى تثبيت مجموعة أدوات C++ ومكتبة GDNative، وبعد تثبيت هذه المكونات، يمكنك البدء في كتابة رمز C++ الخاص بك. أما بدايًة من الإصدار 4.0 تم إضافة GDExtension والتي تسمح لك بكتابة كود C++ مباشرًة، وستجد شرح وافي للغات التي يمكنك استخدامها هنا: https://docs.godotengine.org/en/stable/getting_started/step_by_step/scripting_languages.html#c-via-gdextension وبخصوص مثال عن GDExtension استخدام ستجده هنا في المستند الرسمي: https://docs.godotengine.org/en/stable/tutorials/scripting/gdextension/gdextension_cpp_example.html وستحتاج إلى التالي: Godot 4 executable: الملف التنفيذي لمحرك Godot 4. يمكنك تنزيله من موقع Godot على الويب. C++ compiler: البرنامج الذي يعمل على تحويل رمز C++ إلى رمز machine code، وتستطيع تثبيته عن طريق بيئة التطوير Visual Studio. SCons: أداة بناء تسمح لك ببناء مشروع C++، وبإمكانك تثبيتها من الموقع الرسمي. the godot-cpp repository: مستودع Git يحتوي على الكود المصدري لمشروع Godot C++. يمكنك نسخه من موقع GitHub. وفي حال أنك مطور C++ متمرس، فيجب أن تكون قادرًا على البدء في استخدام C++ مع Godot في غضون دقائق، ولكن إذا لم تكن معتادًا على C++، فقد تحتاج إلى قضاء بعض الوقت في تعلم أساسيات اللغة قبل أن تتمكن من استخدامها مع Godot.
  25. أولاً كلية علوم الحاسب نفسها ليست هي النقطة الفاصلة، وذلك لأنك قادر على تعلم البرمجة من أي مكان به إنترنت وحاسوب ثم توفير الوقت والجهد والصبر للتعلم، فإذا كان أمر السفر للخارج سيقدك لك فرص أفضل أو معيشة أفضل فحاول تكريس كل جهدك للوصول إلى ذلك. أما إذا كان من أجل الدراسة فقط، فوفر وقتك وجهدك، واحصل على الشهادة من بلدك، ولكن تعلم البرمجة فعلاً من خلال الدورات المتاحة على الإنترنت سواء مدفوعة كالتي في أكاديمية حسوب أو مجانية ومتوفر منها على الإنترنت لكن ستحتاج إلى بذلك جهد أكبر في عملية التعلم. وحتى في مصر كلية حاسبات ومعلومات لا تقوم بتخريج مبرمجين، حيث أن المناهج والعملية التعليمية ليست جيدة بل الفائدة منها هي دراسة علوم الحاسب فقط، أما البرمجة فيتم تعلمها من خلال Roadmap من على الإنترنت وبها دورات مخصصة لكل مجال. وبأي حال من الأحوال عليك بالحصول على الشهادة الجامعية فهى ستجنبك الكثير من العناء الغير ضروري، حتى لو لم تكن كلية علوم الحاسب، لكن في حال كان أمامك فرصة للدراسة في الكلية التابعة للمجال الذي تريد التخصص به فافعل ذلك بدون تردد بالطبع فهى أفضلية جيدة. ببساطة، حدد ما تريده حقًا من خلال ورقة وقلم والمميزات والعيوب والوقت المتاح لك وظروفك المادية ثم اتخذ قرارك.
×
×
  • أضف...