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

Mustafa Suleiman

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

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

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

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

    365

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

  1. المشكلة تتعلق بأخطاء في عملية البناء لتطبيق Flutter على نظام Windows، حيث يوجد خطأ في ملف "image_provider.dart" في السطر 998، يفتقد علامة ";" بعد النقطة في نهاية السطر، وأيضًا يوجد خطأ يشير إلى عدم إمكانية تعيين قيمة من نوع "Type" إلى متغير من نوع "int". بالإضافة إلى خطأ آخر يشير إلى فشل عملية البناء الخاصة بـ CMake و MSBuild، وقد يكون هناك مشكلة في ملفات المشروع أو إعدادات بناء البرنامج. حاول تجربة الحلول التالية: تأكد من تحديث Flutter وجميع المكتبات والأدوات ذات الصلة إلى أحدث الإصدارات المتاحة. التحقق من الملف "image_provider.dart" وتأكد من وجود العلامة ";" بشكل صحيح في السطر 998 وأنه لا يوجد أخطاء أخرى في الملف. تأكد من أنك تستخدم إصدارًا متوافقًا من CMake و MSBuild، من خلال التحقق من تثبيتهما بشكل صحيح وتكوينهما بشكل صحيح في البيئة الخاصة بالتطوير. تحديث بيئة التطوير الخاصة بك (مثل Visual Studio) إلى أحدث إصدار، حيث قد يكون هناك تحديثات أو إصلاحات لمشاكل معروفة. تنفيذ الأمر flutter clean إعادة تشغيل النظام الخاص بك وتنفيذ عملية بناء التطبيق مرة أخرى للتحقق مما إذا كانت المشكلة قد تم حلها.
  2. الخطأ "Network Error" يشير إلى حدوث خطأ في الشبكة أثناء إجراء الاستدعاء، وطالما أنك لا تواجه مشكلة في الخادم من جانب العميل وتستطيع رؤية البيانات، حاول تجربة التالي لحل المشكلة: 1- في بعض الأحيان، يمكن أن يتسبب تعطيل سياسات الأمان (CORS) في حدوث أخطاء شبكة، لذلك عليك تمكين CORS على الخادم الخاص بك للسماح بالطلبات القادمة من المستعرض. من خلال إضافة رأس (header) إلى استجابة الخادم للسماح بجميع المصادر. مثال: const express = require('express'); const app = express(); app.get('/users', (req, res) => { // رمز لاسترداد بيانات المستخدمين const users = [{ name: 'User 1' }, { name: 'User 2' }]; res.setHeader('Access-Control-Allow-Origin', '*'); res.json(users); }); app.listen(5000, () => { console.log('Server is running on port 5000'); }); 2- قد يكون هناك خطأ آخر في الجزء الخادم من التطبيق، تأكد من أن الخادم يعمل بشكل صحيح وأنه لا يوجد أخطاء في رمز الخادم الخاص بك. 3- تصحيح الكود الخاص بك للتأكد من استخدام Axios بشكل صحيح، حاول استخدام كود مشابه للتالي: import axios from 'axios'; import { useEffect, useState } from 'react'; const MyComponent = () => { const [users, setUsers] = useState([]); useEffect(() => { const fetchData = async () => { try { const response = await axios.get('http://localhost:5000/users'); setUsers(response.data); } catch (error) { console.error('Error fetching data:', error); } }; fetchData(); }, []); return ( // تقوم بعرض البيانات هنا ); }; export default MyComponent; تأكد من تغيير "Axios" إلى "axios" بالحرف الصغير في استيرادها حيث أنك تستوردها بالحرف الكبير.
  3. بجانب حزمة accesscontrol يوجد حزم أخرى تؤدي نفس الغرض. 1- حزمة "express-session" أدوار: تمنح المستخدمين أو العملاء دورًا معينًا مثل "مستخدم عادي" أو "مشرف". أذونات: يمكن تعيين الأذونات لكل دور بناءً على احتياجات التطبيق، مثل الوصول إلى صفحات معينة أو القدرة على إجراء إجراءات معينة. 2- حزمة "passport" أدوار: تتيح للمستخدمين تسجيل الدخول باستخدام مقدمي الخدمة المعتمدين مثل Google أو Facebook أو Twitter. أذونات: تعيين الأذونات لكل مستخدم معتمد بناءً على معلوماته والتحقق من صحته. 3- حزمة "jsonwebtoken" أدوار: إنشاء رموز مصادقة (tokens) للمستخدمين الموثوق بهم للوصول إلى موارد محددة. أذونات: تضمين الأذونات داخل الرموز المصادقة لتحديد الصلاحيات والوصول المسموح به. 4- حزمة "acl" أدوار: إنشاء مجموعات أدوار مخصصة وتعيين أذونات محددة لكل دور. أذونات: تعيين الأذونات على المسارات والإجراءات والموارد الأخرى في التطبيق. 5- حزمة "connect-roles" أدوار: إنشاء أدوار مخصصة وتعيينها للمستخدمين لتحديد صلاحياتهم. أذونات: تعيين الأذونات لكل دور مثل الوصول إلى صفحات معينة أو القدرة على إجراء إجراءات معينة. وإليك مثال مفصل على كيفية استخدام حزمة "express-session" لإدارة أدوار المستخدمين: 1- تثبيت حزمة "express-session" باستخدام npm عبر الأمر التالي. npm install express-session 2- استيراد الحزمة وتكوينها. عليك إضافة التالي في ملف التهيئة الخاص بتطبيقك (مثل app.js أو server.js): const session = require('express-session'); app.use(session({ secret: 'secret-key', resave: false, saveUninitialized: true })); هنا، يتم استيراد حزمة "express-session" وتكوينها لاستخدامها في تطبيق Express، وتحديد المفتاح السري (secret-key) الذي يستخدم لتوقيع وتشفير معلومات الجلسة. 3- تعيين دور المستخدم. عند تسجيل الدخول للمستخدم، تستطيعي تعيين دوره بناءً على المعلومات الخاصة به. app.post('/login', (req, res) => { // تحقق من صحة بيانات المستخدم وتنفيذ العمليات اللازمة // عند التحقق من صحة بيانات المستخدم، قم بتعيين دور المستخدم req.session.role = 'مستخدم عادي'; res.send('تم تسجيل الدخول بنجاح'); }); 4- التحقق من دور المستخدم وإعدادات الأذونات. تستطيعي التحقق من دور المستخدم وتعيين الأذونات المناسبة في مسارات التطبيق المناسبة. app.get('/admin', (req, res) => { if (req.session.role === 'مشرف') { // يتمكن المشرف من الوصول إلى هذه الصفحة res.send('مرحبًا بك، مشرف'); } else { // الوصول مرفوض للمستخدمين العاديين res.status(403).send('عذرًا، ليس لديك الصلاحية للوصول إلى هذه الصفحة'); } });
  4. الخطأ في الصورة يتعلق بإصدار تضمين Android الذي يستخدمه التطبيق، والرسالة التحذيرية تعني أن الإصدار الذي تستخدمه قد تم إهماله (deprecated) ويجب ترقية التطبيق إلى الإصدار الجديد (v2 embedding) لتفادي حدوث أخطاء غير متوقعة أثناء التشغيل أو حدوث أخطاء في المستقبل أثناء عملية البناء. المشكلة الثانية تتعلق بأخطاء في نظام CMake الذي يستخدم في عملية البناء، وهناك خطأين ويشير الخطأ الأول إلى أن مجلد CMakeCache.txt الحالي الذي يقع في المسار "C:/food/build/windows/CMakeCache.txt" مختلف عن المجلد الذي تم إنشاءه فيه "d:/cL.i<s/food/build/windows"، وهذا قد يؤدي إلى إنشاء الملفات الثنائية في مكان غير صحيح. والخطأ الثاني يشير إلى أن المصدر "C:/food/windows/CMakeLists.txt" لا يتطابق مع المصدر "D:/oL.i<./food/windows/CMakeLists.txt" المستخدم لإنشاء ذاكرة التخزين المؤقت (cache)، ويوصى بإعادة تشغيل CMake مع مجلد المصدر الصحيح. ولحل المشكلة عليك بترقية التطبيق إلى الإصدار الجديد من تضمين Android (v2 embedding) وفقًا للوثائق المشار إليها في الرسالة، وهي: https://github.com/flutter/flutter/wiki/Upgrading-pre-1.12-Android-projects وتستطيع البحث على يوتيوب عن Fix app to be migrated to the android embedding v2 in flutter وستجد شرح يوضح خطوات الحل. بعد ذلك، يجب التأكد من تصحيح إعدادات نظام CMake والمجلدات المستخدمة للمصدر وذاكرة التخزين المؤقت للتأكد من تطابقها وتحديدها بشكل صحيح. أيضًا التأكد من تحديث Flutter وجميع المكتبات والأدوات ذات الصلة إلى أحدث الإصدارات المتاحة، حيث قد يساعد ذلك في حل بعض المشاكل المتعلقة بالتوافق والتحديثات الضرورية للمشروع.
  5. الأسئلة الإمتحانية لا يتم الإجابة عليها بشكل مباشر، ولكن يمكن إرشادك لطريقة الحل، وإذا قمت بتوفير الكود يمكن مساعدتك في حل المشكلة التي تواجهك. الخطوات بشكل عام: 1- استيراد المكتبات اللازمة للعمل مع إدخال وإخراج البيانات، مثل <stdio.h> و <stdlib.h>. 2- إنشاء دالة رئيسية (main function) تحتوي على التعليمات الأساسية لتنفيذ البرنامج. 3- طرح السؤال الأول باستخدام دالة printf() لطرح سؤال للمستخدم للتحقق من ما إذا كان هو طالب أم دكتور، كمثال: printf("Are you a student or a doctor?\n"); printf("Enter 1 for student, 2 for doctor: "); 4- استخدام دالة scanf() لاستلام إجابة المستخدم وتخزينها في متغير مناسب. 5- تحقق من الاختيار الأولمن خلال التحكم في التدفق (if-else) لفحص القيمة التي أدخلها المستخدم واتخاذ إجراءات مناسبة بناءً على ذلك. إذا كان المستخدم طالبًا، يتم الانتقال إلى خطوة 6. إذا كان الاختيار 2، يتم الانتقال إلى خطوة 9. 6- طرح سؤال للطلاب الحاليين عن طريق رسالة ترحيبية باستخدام دالة printf(). 7- طرح سؤال للمستخدم لإدخال اسم المستخدم وكلمة المرور واستخدام دالة scanf() لاستلام الإدخال، مثال: char username[20]; char password[20]; printf("Enter your username: "); scanf("%s", username); printf("Enter your password: "); scanf("%s", password); 8- التحقق من القيمة المدخلة لاسم المستخدم وكلمة المرور باستخدام التحكم في التدفق (if-else). إذا كانت القيمة صحيحة، يمكن طباعة رسالة ترحيبية، وإذا كانت القيمة خاطئة، يمكن طباعة رسالة خطأ. يمكن استخدام دالة strcmp() لمقارنة السلاسل. 9- التحقق من الاختيار الثاني فإذا كان الاختيار 1، يتم الانتقال إلى خطوة 10، وإذا كان الاختيار 2، يتم الانتقال إلى خطوة 11. 10- طلب بيانات الطالب الجديد بطرح سؤال للمستخدم لإدخال بياناته الشخصية، مثل الاسم والدرجة في الثانوية والجنس وتاريخ الميلاد. يتم استخدام دالة scanf() لاستلام الإدخال وتخزينها في المتغيرات المناسبة. 11- طلب نوع الشعبة للطالب الجديد بطرح سؤال للمستخدم لإدخال نوع الشعبة (علمي علوم أم رياضة) باستخدام دالة printf(). يتم استخدام دالة scanf() لاستلام الإدخال وتخزينها في المتغير المناسب. 12- التحقق من نوع الشعبة باستخدام التحكم في التدفق (if-else)، يتم التحقق من نوع الشعبة المدخلة. إذا كانت الشعبة علمي رياضة، يتم طباعة رسالة بالقبول. إذا كانت الشعبة علمي علوم، يتم طباعة رسالة بالرفض. يمكن استخدام دالة strcmp() لمقارنة السلاسل. مثال: if (strcmp(branch, "علمي علوم") == 0) { printf("Sorry, your application is rejected.\n"); } else if (strcmp(branch, "علمي رياضة") == 0) { printf("Congratulations, you are accepted!\n"); } else { printf("Invalid branch.\n"); } 13- حفظ بيانات الطالب الجديد في ملف باسم "student.txt". يمكن استخدام دالة fprintf() للكتابة في الملف. وتستطيع تفقد جميع الدروس الخاصة بلغة C في القسم الخاص بها بأكاديمية حسوب.
  6. بالطبع فهو موجه للواجهة الخلفية وبالتالي يجب التعامل مع قواعد البيانات، وستتعلم التالي: التعريف بقواعد البيانات إنشاء قاعدة البيانات باستخدام PhpMyAdmin 12 الاتصال مع قواعد البيانات عبر PDO الاستعلام SELECT هيكلة الشفرة الاستعلام INSERT الاستعلام UPDATE الاستعلام DELETE ومن خلال إطار عمل لارافيل ستتعلم التالي: تهجير قواعد البيانات التعامل مع البيانات بواسطة باني الاستعلامات Query Builder التعامل مع البيانات بواسطة Eloquent البيانات الاختبارية Factories and seeding العلاقات بين البيانات وأثناء العمل على المشاريع سيتم الشرح والتطبيق بشكل عملي.
  7. حاول استخدام الكود التالي: #include <iostream> using namespace std; void isPrime(int num) { if (num < 2) { cout << "Number is not Prime." << endl; return; } for (int i = 2; i < num; i++) { if (num % i == 0) { cout << "Number is not Prime." << endl; return; } } cout << "Number is Prime." << endl; } int main() { int n; cout << "Enter the Number to check Prime: "; cin >> n; isPrime(n); return 0; } وما تم تعديله هو: 1- الدالة isPrime كانت لا تقوم بالتحقق إذا كان الرقم 2 عددًا أوليًا بشكل صحيح، وتم إصلاح ذلك عن طريق إضافة شرط خاص للتحقق من القيمة 2 وإرجاع نتيجة مناسبة. 2- نقل جملة "Number is Prime." خارج الحلقة التكرارية، لعرض هذه الجملة عندما لا يتم العثور على عامل يقسم الرقم num بدون بقية (وهذا يعني أن الرقم هو عدد أولي)، فإذا تم وضع الجملة داخل الحلقة، فسيتم عرضها بعد أن يتم العثور على أي عامل آخر غير 2. والآن عند المحاكاة ستجد النتيجة كالتالي: Enter the Number to check Prime: 2 Number is Prime.
  8. الجدول الذي تحاول إنشاؤه بالفعل موجود في قاعدة البيانات، والسبب الأكثر شيوعًا لحدوث هذا الخطأ هو أنك تحاول إنشاء جدول يحمل نفس الاسم الذي تم استخدامه بالفعل لجدول آخر. هناك بعض الحلول التي يمكنك محاولتها لحل المشكلة: 1- تأكد من أن الجدول الذي تحاول إنشاؤه ليس بالفعل موجودًا في قاعدة البيانات، من خلال فحص ذلك بإجراء استعلام لعرض الجداول الموجودة في قاعدة البيانات، والتأكد من عدم وجود جدول يحمل نفس الاسم. 2- إذا كنت متأكدًا من أن الجدول الحالي غير مهم ويمكن حذفه، فتستطيع تغيير اسم الجدول الذي تحاول إنشاؤه، من خلال بتغيير اسم الجدول في الاستعلام الذي تستخدمه في عملية الإنشاء. 3- بدلاً من محاولة إنشاء الجدول من الصفر، هناك ميزة التحديث (migration) في نظام إدارة قاعدة البيانات الخاص بك، وتلك الميزة تسمح بإجراء تعديلات على البنية الحالية لقاعدة البيانات دون الحاجة إلى حذف الجداول الحالية، وتستطيع إنشاء تكوين جديد للجدول الذي تحاول إنشاؤه كجزء من ملف التحديث، وسيقوم النظام بتنفيذ التغييرات اللازمة للبنية. وفي حالة كنت تعمل على مشروع بإطار لارافيل فقم بتنفيذ الأمر التالي لإعادة إنشاء قاعدة البيانات وتشغيل عملية التهجير (migration) وإدخال بيانات افتراضية (seeding) في قواعد البيانات: php artisan migrate:fresh --seed
  9. دالة exit() في لغة البرمجة بايثون تُستخدم لإنهاء تنفيذ البرنامج فورًا، وعند استدعاءها، يتم إيقاف تنفيذ البرنامج وإغلاق جميع الموارد المستخدمة في العملية، وتستخدم exit() للخروج من برنامج بايثون في حالات معينة، مثل الخطأ الحاسوبي أو شرط محدد. def divide_numbers(a, b): if b == 0: print("لا يمكن قسم عدد على الصفر!") exit() result = a / b print("النتيجة هي:", result) # استدعاء الدالة divide_numbers(10, 2) divide_numbers(5, 0) في المثال لدينا دالة تقسيم الأعداد divide_numbers() التي تأخذ اثنين من المدخلات، وإذا كان المدخل الثاني (b) يساوي صفر، فنقوم بطباعة رسالة تعليمية ومن ثم نستدعي exit() لإنهاء تنفيذ البرنامج. هذا يحدث لأنه من غير الممكن قسمة عدد على الصفر. إذا تم تنفيذ هذا البرنامج، ستحصل على النتائج التالية: النتيجة هي: 5.0 لا يمكن قسم عدد على الصفر! ولاحظ exit() تنهي البرنامج بشكل فوري دون أن تقوم بأي معالجة إضافية أو تنظيف، وإذا كنت بحاجة إلى إجراء عمليات إضافية قبل الخروج، تستطيع استخدام دوال أخرى مثل sys.exit() التي توفر مزيدًا من المرونة في إدارة الخروج. هل توجد دالة exit() في لغات برمجة أخرى؟ في لغة C، تستخدم لإنهاء تنفيذ البرنامج وإرجاع قيمة الخروج. في لغة C++، تستخدم بنفس الطريقة كدالة C لإنهاء البرنامج وإرجاع قيمة الخروج. ومع ذلك، في C++ بالإمكان استخدام الكلمة المفتاحية return في دالة main() للخروج من البرنامج. في لغة Java، تستخدم دالة System.exit() لإنهاء تنفيذ البرنامج. يمكن تمرير قيمة للدالة System.exit() لتحديد حالة الخروج. في لغة JavaScript، تستخدم في بعض بيئات التنفيذ مثل Node.js لإنهاء تنفيذ البرنامج. في لغة Ruby، يمكن استخدام الأسلوب exit() أو exit!() لإنهاء تنفيذ البرنامج. في لغة PHP، تستخدم دالة exit() أو die() لإنهاء تنفيذ البرنامج. في لغة Swift، تستخدم دالة exit() لإنهاء تنفيذ البرنامج.
  10. بشكل مختصر سأذكر لك الفروقات: 1- الاستضافة وإدارة البنية التحتية في MongoDB، يتم تنصيب قاعدة البيانات على الخادم الخاص بك أو في بيئة سحابية تختارها، أما في MongoDB Atlas، فهي خدمة مستضافة في السحابة تديرها شركة MongoDB بنفسها. وتقوم MongoDB Atlas بإدارة جوانب مثل التكوين والتشغيل والتوفير التلقائي للنسخ الاحتياطي والأمان، وبالتالي يقدم تجربة أكثر بساطة للمطورين. 2- الإدارة والتشغيل مع MongoDB، يتوجب عليك القيام بإعداد وإدارة وصيانة الخوادم الخاصة بك، بما في ذلك الإصدارات والتحديثات والتوزيع وتكوين التحميل والتوازن. أما MongoDB Atlas، فتتحمل عنك تلك الجوانب الإدارية ويهتم بإدارة الخوادم والنسخ الاحتياطي والتوازن التلقائي للحمولة والتوافق مع الأمان. 3- التوفر والمقياسية MongoDB Atlas تقدم خيارات أكثر لتوفير التوفر والمقياسية. يوفر نموذج تجزئة أفقي يتيح لك زيادة سعة التخزين والأداء بشكل مرن وسلس، كما توفر خيارات التوفر العالي مثل الاستدامة المنطقية والمستوى الأعلى من النسخ الاحتياطي. 4- الأدوات والخدمات المساعدة MongoDB Atlas تقدم العديد من الأدوات والخدمات المساعدة للمطورين، بما في ذلك واجهة برمجة تطبيقات (API) وواجهة سطر الأوامر والتحليلات وأدوات الرصد والإعلام والنسخ الاحتياطي والاستعادة والتحليل الأمني. متى تستخدم كل منهم؟ استخدام MongoDB مناسب عندما تحتاج إلى مرونة كاملة في تكوين وإدارة قاعدة البيانات الخاصة بك وتفضل السيطرة الكاملة على البنية التحتية والتكامل مع البنية الخاصة بك. أما MongoDB Atlas عندما ترغب في تجنب تعقيدات الإعداد والتكوين والصيانة وترغب في تجربة بسيطة ومحسّنة، أيضًا عندما تحتاج إلى التوفر العالي والتوسع الأفقي بشكل مرن وعندما تهتم بالأمان والنسخ الاحتياطي والتحليلات المدمجة والتحكم في التكاليف. أي أن MongoDB مناسبة إذا كنت ترغب في السيطرة الكاملة والمرونة التامة، وMongoDB Atlas إذا كنت تفضل البساطة والتوفر العالي والتكامل المباشر مع الخدمات السحابية. وإذا كان مشروعك متوسط الحجم وليس لديك الحاجة الماسة للسيطرة الكاملة على البنية التحتية وتكوين متقدم، فإن استخدام MongoDB Atlas خيار جيد. ودائمًا خذها قاعدة، عند الحيرة بين أمرين في البرمجة قم بتجربة كل منهم واختر ما يناسبك، فالوقت الذي ستقضيه في البحث والقراءة الأفضل تقضيته في التجربة والتعلم، صحيح؟ ولكن لماذا تتعلم في الدورة استخدام MongoDB وليس MongoDB Atlas؟ في البداية الهدف الأساسي من الدورة هو فهم كيفية استخدام MongoDB كنظام قاعدة بيانات وتطوير المهارات الأساسية في البرمجة باستخدام MongoDB. حيث ستتعلم كيفية تثبيته وتكوينه واستخدامه في تطوير التطبيقات، مما يمنحك فهمًا أفضل لأساسيات MongoDB. ومن المفيد البدء بتعلم MongoDB الأساسي قبل الانتقال إلى MongoDB Atlas، فستحتاج إلى فهم أساسيات MongoDB قبل أن تتمكن من الاستفادة الكاملة من خدمات إدارة السحابة مثل MongoDB Atlas.
  11. أرجو منك قراءة النقاشات التالية وستجد بها إجابة على سؤالك:
  12. كان متاح ذلك بالفعل في شهر رمضان، لكن العرض إنتهى حاليًا، بإمكانك المتابعة حيث يتم توفير كوبونات وعروض كل فترة وقد تم الحدث عن ذلك بالتفصيل في النقاش التالي: وتستطيعي التحدث لمركز المساعدة والتأكد من توافر كوبونات أو عروض حاليًا أم لا.
  13. لا أنصحك بالاستمرار فيما تفعله، ضع شغفك جانبًا وتعلم المهارات المطلوبة في سوق العمل المحلي لديك أو مواقع العمل الحر، وتلك نصيحة دائمًا أرددها، حيث أن الكثير يقع في ذلك الفخ، وهو السعي وراء تعلم ما يريده أو اللغة والإطار الأشهر، وفي النهاية يصبح غير قادر على الحصول على وظيفة بسبب عدم إمتلاك المهارات المطلوبة. أنت في الطريق الصحيح، حيث أن مجال الويب ستتعلم منه الكثير وسيفتح لك مجالات أخرى بسبب سهولة تعلمه نسبيًا وبه مجال الواجهة الأمامية والواجهة الخلفية وتصميم واجهات المستخدم، وسيسهل عليك تعلم المجالات الأخرى مثل تطوير تطبيقات الهاتف. بإختصار اختر مسار تعليمي يؤهلك إلى إمتلاك المهارات اللازمة للحصول على وظيفة أو تأهيلك لتنفيذ مشاريع حقيقية للعمل على مواقع العمل الحر، بعد ذلك تعلم ما تشاء في أوقات فراغك. وإليك بعض النقاشات التي قد تفيدك: عندي حب للبرمجة ولكنني لا أستمر في تعلمها .. ماهو الحل ؟
  14. سأكون صريحًا معك، مجرد تعلم التقنيات التالية HTML, CSS, JS, JQuery سيمكنك من تقديم عروض تتطلب تلك المهارات، لكن ستجد منافسة كبيرة، لأن الغالبية تتعلم تلك المهارات في البداية وقليل ما يمتلك المهارة اللازمة فعلاً لتنفيذ مشروع من خلال إطار عمل مثل React وVue. وأيضًا ستضطر للعمل بمبلغ زهيد بسبب المنافسة الشديدة على مثل تلك المشاريع، فغالبية المبرمجين قد تعلموا المهارات المذكورة، وأيضًا البعض يمتلك مهارات أخرى مثل فوتوشوب. والجميع رزقه مكتوب ولا خلاف في ذلك، لكن عليك بالسعي والأخذ بالأسباب، أولاً تفقد ما هي المشاريع التي تطلب بكثرة وتعلم المهارات اللازمة لتنفيذ تلك المشاريع. وما تعلمته هي الأساسيات وعليك بتعلم إطار عمل كما أخبرتك، ولكن أغلب المشاريع على مستقل ستجد أنها تتطلب معرفة بلغة PHP وإطار لارافيل وورد بريس، لذلك أنت بحاجة إلى تعلم تلك المهارات من أجل تمتلك مهارات مطلوبة في سوق العمل وستجد منافسة أقل. ويجب أن تمتلك في معرض أعمالك مشاريع قمت بتنفيذها قبل التقديم على أي عرض، فبدون معرض أعمال جيد لن يتم قبولك، حيث يجب أن تثبت أنك محترف في طريقة حديثك وتعاملك وأيضًا من خلال معرض أعمالك وجودة المشاريع. وتستطيع رؤية المشاريع المطلوبة وتنفيذ مثلها ووضعها في معرض أعمالك، في حال لم تكن تمتلك معرض أعمال. وأغلب المشاريع على مواقع العمل الحر تتطلب منك أن تكون مبرمج Full stack وأنت بالفعل لديك مهارات الواجهة الأمامية، وينقصك فقط تعلم مهارات الواجهة الخلفية التي ذكرتها لك من خلال لغة PHP. ولا تستعجل بل تعلم الأساسيات وقم بتنفيذ مشريع حقيقية وضعها في معرض أعمالك لكن ليس مجرد مشاريع صغيرة بل مشروع حقيقي مثل متجر إلكتروني كامل أو لوحة تحكم أو موقع لشركة وهكذا. وإذا أردت العمل بالمهارات التي لديك فقط، فعليك هنا التخصص في تصميم الواجهات الأمامية من خلال تعلم فوتوشوب وكيفية تصميم الواجهات من خلال Figma.
  15. جميع الدورات في أكاديمية حسوب متاحة لك مدى الحياة، وأيضًا متاح لك دراسة القسم الأول من جميع الدورات الأخرى، فمثلاً لو اخترت دورة PHP تستطيع دراسة أساسيات HTML وCSS من دورة تطوير واجهات المستخدم، وجافاسكريبت من دورة تطوير التطبيقات باستخدام لغة JavaScript. وتستطيع التقدم للإختبار في أي وقت، وتلك هي شروط التقدم الإختبار وكيفية رفع المشاريع: وبإمكانك التقدم للإمتحان أكثر من مرة، لكن يفضل الاستعداد للإختبار جيدًا لإجتيازه من المرة الأولى.، وتستطيع التقدم مرة أخرى لحين النجاح في الإختبار. وأيضًا ستحصل على التحديثات التي تطرأ على الدورات كل 3 أو 6 أشهر في حال وجود تحديثات طرأت على اللغات، المكتبات والإطارات التي يتم استخدامها في الدورة.
  16. Jupyter هي بيئة عمل تفاعلية ومفتوحة المصدر تُستخدم لتطوير وتشغيل ومشاركة الأكواد والوثائق التفاعلية، وسبب التسمية بـJupyter هو نسبةً إلى ثلاثة لغات برمجة رئيسية هي Julia وPython وR. وتعتمد Jupyter على فكرة "Notebook"، حيث يمكن إنشاء مستند يجمع بين الشفرة البرمجية والنص القابل للتنسيق والرسومات التوضيحية والرسومات البيانية والجداول والصوت والفيديو، وبإمكان المستخدمين تنفيذ الشفرة التفاعلية وعرض نتائج التحليل بشكل فوري في نفس الوثيقة، مما يجعلها بيئة ممتازة للتجربة والاستكشاف والتوثيق. وتعمل على مبدأ الخادم (server-client)، من خلال تشغيل خادم Jupyter في الخلفية ويتم الوصول إليه عبر متصفح الويب، وتستطيع الكتابة وتنفيذ الكود في خلايا قابلة للتحرير داخل المستند ومشاهدة النتائج بشكل فوري. تدعم العديد من لغات البرمجة المختلفة بالإضافة إلى Julia وPython وR، مثل Java وScala وC++ وغيرها، ويمكنك تنزيل Jupyter كحزمة Python أو استخدام توزيعة مثل Anaconda التي تأتي مع Jupyter مثبتًا مسبقًا. وهي تُستخدم في مجموعة متنوعة من المجالات مثل علوم البيانات والتعلم الآلي والبحث العلمي وتحليل البيانات وتطوير البرمجيات وتعليم البرمجة، وأداة قوية ومرنة تمكنك من تجربة الأكواد وتصور البيانات وتوثيق النتائج بشكل سهل وفعال. هل أنت بحاجة إليها لتعلم بايثون؟ لا، حيث أن بيئة Jupyter هي أداة مفيدة وقوية لتشغيل وتنفيذ الشفرة التفاعلية وتوثيق العمل، ولكنها ليست ضرورية لتعلم Python. بدلاً من ذلك، تستطيع الإعتماد على محرر نصوص بسيط مثل Blocnotes في نظام التشغيل Windows أو TextEdit في نظام التشغيل macOS للكتابة وتشغيل برامج Python. يمكنك أيضًا استخدام بيئات تطوير متكاملة (IDEs) مثل PyCharm أو Visual Studio Code أو IDLE لتعلم Python بشكل مريح. وإذا كنت ترغب في استخدام بيئة تفاعلية لتعلم Python، فهناك بيئة تفاعلية عبر الويب مثل Repl.it أو Google Colab أو PythonAnywhere. تلك البيئات توفر محرر نصوص مع إمكانية تشغيل الشفرة وعرض النتائج مباشرة في المستعرض، مما يوفر تجربة تفاعلية شبيهة بـ Jupyter.
  17. دعك من المواصفات واجتهد بما تملك حاليًا، فكثيرين تعلموا البرمجة وكانت لديهم حواسيب بمواصفات منخفضة بل أن البعض كان لديه هارد ديسك به عطل وكان جهازه يتعطل من وقت لآخر أثناء عمله على مشروع. بالإمكان سرد المواصفات المناسبة، والتي تم ذكرها بالفعل، لكن هل سيغير ذلك من الأمر شيئًا؟ اجهتد بما تملك حاليًا وتعلم البرمجة، وكل ما ستحتاجه هو رامات بحجم 8 جيجا ومعالج مقبول فقط وأنت تمتلك ذلك بالفعل، وتستطيع توفير بعض المال ورفع كفاءة الحاسوب لديك بشراء هارد SSD.
  18. ذلك أمر طبيعي على منصة مستقل، وذلك بسبب أنك محادثاتك مع العميل كانت خارج المنصة وغالبًا كانت على واتساب، وكل ما عليك فعله هو استخدام الإضافة التالية: https://chrome.google.com/webstore/detail/take-webpage-screenshots/mcbpblocgmgfnpjjppndjkmgjaogfceg وقم بعمل سكرين شوت لكامل المحادثة من خلال إختيار capture entire page، بعد ذلك قم برفع صورة المحادثة داخل محادثة المشروع على مستقل وأيضًا ملفات المشروع التي تم تسليمها وذكر ما تم تنفيذه بإختصار في نقاط. وبذلك تتجنب أي مشكلة، ولكن في حال كان هناك أي أمر غير مسموح به داخل المحادثة فستواجه مشاكل، مثل استلام مبالغ أو العمل خارج منصة مستقل. وعليك بالتحدث إلى مركز المساعدة الخاص بمستقل في حال واجهتك أي مشكلة.
  19. أولاً عليك بتحديد الهدف من المدونة والتخصص في مجال محدد وليس الكتابة عن كل شيء، رغم أن ذلك ممكن لكن يتطلب تهيئة هيكل الموقع لذلك من خلال تقسيم التصنيفات بشكل مدروس وربطهم ببعض وأيضًا ربط المواضيع ببعضها. والأسهل لك حاليًا هو التخصص في مجال محدد وكتابة محتوى مفيد للمستخدم، وليس مجرد عنواين وسطرين أسفل كل عنوان، بل محتوى من 1500 إلى 3000 كلمة يحقق إفادة للمستخدم ويجعله يقضي وقت في الموقع والتنقل بين المقالات إن أمكن. وحاول إنشاء محتوى الزائر بحاجة إلى تصفحه بشكل كامل، وليس إيجاد معلومة بسيطة، حيث أن جوجل حاليًا يوفر تلك المعلومة للزائر بدون الحاجة إلى دخول موقعك وستزداد المعلومات التي يوفرها عما قريب، لذلك أنت بحاجة إلى إنشاء محتوى ليس بالبسيط، وأيضًا يفضل إنشاء فيديو. بمعنى أبسط، إذا أردت الحصول على نتيجة فيجب بذل الجهد والوقت، ولا يوجد طريق مختصر ومكسب سريع حتى وإن وجد فلا يدوم، لذلك عليك بإنشاء محتوى قوي وتدعيمه بالفيديو والصور والشروحات، وبذلك ستتفرد بمحتواك، فقليل من يريد بذل المجهود. وأيضًا قم باستهداف المحتوى المناسب لمنطقة الخليج لكي تحصل على عائد مناسب، ولا تستهدف منطقة شمال أفريقيا لكون عائد الإعلانات منخفض في تلك المنطقة، وأيضًا عليك بحظر الإعلانات الغير مناسبة من خلال إعدادات AdSense تستطيع رؤية الإعلانات التي يتم عرضها على موقعك فهناك بعض الإعلانات الغير مناسبة من ناحية الدين. وأيضًا عليك باستثمار بعض الوقت في تعلم SEO فبدونه لن تنجح في إظهار موقعك في النتائج الأولى، وبعد كسب بعض المال تستطيع تعيين خبير في SEO لتحسين موقعك ولكن اختره بعناية من خلال نتائج أعمال سابقة. أي أولاً عليك بالتركيز على المحتوى وتجربة الموقع الجيدة من حيث السرعة وسهولة التصفح وعرض مقالات متعلقة.
  20. كلما اختصرت واخترت الطريق السهل كلما عانيت بعد ذلك، الأمر أشبه بالألعاب فعند تخطيك التوجيهات في البداية والتدريب ومحاولة اللعب دون دراية بشكل سريع، فستجد نفسك تتخبط وتقضي وقت أطول وستعود للبداية لتعلم أساسيات اللعبة. لذلك ركز على تعلم الأساسيات فهى ما ستجعلك تتعلم بسرعة أكبر بعد ذلك، ولا تتسرع وتنتقل إلى تعلم مكتبة React.js بمجرد تعلم الأساسيات، بل ما يجب فعله هو التطبيق على الأساسيات وهم HTML,CSS,JS من خلال مشروع ليس بالصغير أي يستغرق وقت ومجهود وبه ميزات متعددة، وستجد مشاريع كثيرة على اليوتيوب بجافاسكريبت فقط بدون React. في البداية عليك بالتطبيق على مشاريع صغيرة ثم الإنتقال للتطبيق على مشروع كبير مثل Single Page Application. وبعد إتقان الأساسيات واكتساب ثقة بأنك قد فهمت بشكل جيد وقادر على تنفيذ مشروع بمفردك، انتقل إلى تعلم React وإطارات العمل الأخرى الخاص بجافاسكريبت، ولكن عليك بمشاهدة بعض الفيديوهات ثم التطبيق بمفردك ومقارنة الكود الخاص بك بالكود الخاص بالمدرب ولا مشكلة في كونه مختلف طالما أنك تعلم ما تفعل والكود يعمل بشكل سليم. أو تستطيع إتباع المدرب والكتابة معه، ثم إعادة تنفيذ المشروع بمفردك، أي يجب التأكد أنك قادر على تنفيذ المشروع بمفردك قبل الإنتقال للمسار التالي وليس مجرد السعي نحو الإنتهاء من الدورة دون فائدة، لتكتشف في النهاية أنك غير قادر على تنفيذ مشروع بمفردك ولا تدري ماذا تفعل تلك الأكواد. وصدقًا خصص كل وقت فراغك لتعلم البرمجة، فكلما خصصت وقت كان أفضل، وقد أخبرك بتخصيص 10 ساعات يوميًا لكن ذلك غير مناسب للبعض، لكن أقل من ساعتين إلى 3 ساعات يوميًا يعتبر غير مناسب لتعلم البرمجة، ويجب أن تقوم بكتابة كود بشكل يومي لا مشاهدة الفيديوهات فقط.
  21. الأمر ليس بتلك السهولة، ففترةة 5 سنوات فترة كبيرة، وهناك عدة عوامل يجب التفكير بها قبل إتخاذ القرار. ما هي الحالة المادية الآن، هل تسمح لك باستكمال تعليمك وفي نفس الوقت تعلم البرمجة، هل لديك الوقت والمال لفعلك ذلك؟ إن كان الأمر لا يسمح فلا مشكلة، عليك في تلك الحالة الإختيار ما بين استكمال تعليمك أو تعلم البرمجة، وللأسف للحصول على الوظيفة ستضطر للعمل في شركات صغيرة تسمح لك بالعمل بدون شهادة جامعية فهى تريد مهاراتك البرمجية الجيد فقط. أو أمامك مواقع العمل الحر مثل مستقل وخمسات، وأنصحك بتحسين لغتك الإنجليزية إذا اتجهت لمواقع العمل الحر، وهو أمر هام في مجال البرمجة بشكل عام فاللغة الإنجليزية هي لغة البرمجة. ولا تدع الخوف يتملكك والخوف نفسه ليس أمر سئ بل القليل منه مفيد ولابد منه لتتحرك، لكن الكثير سيبقيك مكانك بلا حراك. وبالطبع من الأفضل أن تحصل على شهادة جامعية فهى مهمة في عالمنا العربي وفي الخارج أيضًا لكن بنسبة أقل، وكنصيحة حاول الحصول على الشهادة الجامعية وتعلم البرمجة في نفس الوقت، أمر صعب بالطبع لكن يستحق المحاولة والعناء، حيث ستتغير حياتك 180 درجة واعلم أنك ستضحي من أجل ذلك، فاصبر واجتهد. وإذا اكتشفت أن مجال البرمجة لا يناسبك بعد فترة من الوقت والمحاولة والتكرار، فلا مشكلة حاول الإجتهاد في التعليم والحصول على شهادة جيدة وألقي نظرة على المجالات المطلوبة في سوق العمل في بلدك واسعى لإمتلاك تلك المهارات.
  22. حاول تجربة أحد الإضافات التالية: 1- WooCommerce Advanced Shipping تتيح لك هذه الإضافة إنشاء قواعد شحن متقدمة تستند إلى الوزن والموقع والنوع وغيرها من المعايير، وتكوين قواعد الشحن الخاصة بك بسهولة وحساب التكلفة التقريبية للشحن. 2- WooCommerce Table Rate Shipping تسمح لك هذه الإضافة بإنشاء جدول أسعار الشحن القائم على المعايير المختلفة مثل الوزن والموقع والمنتجات، وتكوين جداول الشحن بناءً على المناطق الجغرافية ووزن الطرد ونوع الشحنة وأكثر من ذلك، وتحديد الأسعار التقريبية للشحن. 3- WooCommerce Weight Based Shipping توفر لك تعيين تكلفة الشحن بناءً على وزن السلع المشتراة، وإنشاء قواعد الشحن المخصصة حسب الوزن وتحديد الأسعار التقريبية للشحن. وتذكر أنه قد يتطلب الأمر تكوين بعض الإعدادات وتعيين قواعد الشحن المناسبة وأسعار الشحن المطلوبة لكل معيار محدد، وعليك أيضًا الاطلاع على متطلبات الشحن الدولية وتحديث الأسعار بانتظام. 4- WooCommerce Shipping Calculator تتيح لك إضافة حاسبة شحن إلى متجر WooCommerce الخاص بك. تدعم مجموعة متنوعة من طرق الشحن، بما في ذلك الأسعار الموحدة، والشحن بناءً على المناطق الجغرافية، والشحن بناءً على الوزن. 5- EasyPost Shipping Calculator تتوافق تلك الإضافة مع EasyPost، وهي شركة شحن توفر مجموعة متنوعة من خيارات الشحن للشحنات المحلية والدولية. 6- Table Rate Shipping Pro تسمح لك هذه الإضافة بإنشاء أسعار شحن مخصصة بناءً على مجموعة متنوعة من العوامل، بما في ذلك الوزن والوجهة ونوع المنتج.
  23. الأمر يعتمد على ما إذا كنت لديك خبرة بالإنترنت والحاسوب وبكيفية عملهم بشكل كافي، أي أنك لست مستخدم عادي، بل لديك خبرة بالتقنية وقرأت قليلاً عن البرمجة، ففي تلك الحالة لن يفيدك تعلم سكراتش حيث أن مستواك مرتفع بالنسبة للغة سكراتش. بل عليك بتعلم أساسيات البرمجة من خلال تعلم لغة C++ إذا كان لديك الوقت، وفي حالة لم يكن لديك الوقت الكافي، فعليك بتعلم لغة جافاسكريبت إذا كنت تريد التخصص في مجال الويب وعامة عليك البدء بمجال الويب فهو سيفتح لك المجال لتعلم المجالات الأخرى. وأيضًا لا أنصحك بتعلم الخوارزميات وهياكل البيانات في البداية، بل قم بتعلم البرمجة ثم طبق ما تعلمته على أكثر من مشروع وبعد ذلك إنتقل لتعلم إطار عمل باللغة التي اخترتها وطبق على مشروع، وبعد ذلك قم بتعلم الخوارزميات وهياكل البيانات فستجد أنه أصبح له معنى وستستفيد حقًا.
  24. الأسئلة الإختبارية لا يتم حلها مباشرًة ولكن يمكن مساعدتك بإرشادك لخطوات الحل أو عليكي بتوفير الكود في حال واجهتك مشكلة به. والإختبار يتطلب منك تطوير نظام إدارة تأجير السيارات باستخدام JavaFX ومبادئ البرمجة الموجهة للكائنات. سأشرح لك الخطوات بشكل عام: 1- تحليل المشكلة قراءة وفهم المشكلة المطروحة بعناية. تحليل المتطلبات والمفاهيم الرئيسية في المشكلة، مثل السيارات، وشركات التأجير، والمستأجرين. 2- التصميم الأولي عليك بتصميم هيكل الكائنات الأساسية في النظام. يجب أن تحتوي الكائنات على السمات المناسبة لحفظ معلومات السيارات والشركات والمستأجرين. استخدمي UML لتصميم الصفوف والعلاقات بينها، وتستطيعي استخدام برامج رسم UML مثل draw.io أو Visual Paradigm لإنشاء الرسم البياني. 3- تنفيذ الكود إنشاء مشروع جديد في بيئة التطوير الخاصة بك وقم بإعداد JavaFX للعمل. تنفيذ الكائنات التي قمت بتصميمها في الخطوة السابقة باستخدام الصفوف والمتغيرات والدوال المناسبة. إنشاء واجهة المستخدم الرسومية باستخدام JavaFX. أنشئ نموذجًا لإضافة معلومات السيارة وتحديث القائمة وإنشاء تقرير السيارات. 4- اختبار النظام تجربة النظام وتأكد من أنه يعمل بشكل صحيح. تأكدي من أنه يمكنك إضافة معلومات السيارة وتحديث القائمة وإنشاء تقرير السيارات بشكل صحيح. 5- إنشاء ملف تقرير السيارات الحصول على قائمة السيارات الموجودة في النظام. فتح ملف نصي جديد بامتداد ".txt" لكتابة تقرير السيارات. تنسيق المعلومات اللازمة في التقرير، مثل معلومات كل سيارة بما في ذلك نوعها، واسم الشركة المصنعة، والنموذج، ورقم اللوحة. كتابة تلك المعلومات في الملف النصي بشكل منظم وواضح. بعد الانتهاء من كتابة التقرير، أغلق الملف النصي. عليك بعرض رسالة تأكيد للمستخدم تفيد بأن التقرير قد تم إنشاؤه بنجاح. وتأكدي من التحقق من أن النظام يقوم بحفظ المعلومات بشكل صحيح ويعرضها في واجهة المستخدم الخاصة بك، كما يجب التحقق من أن زر "إنشاء تقرير" يقوم بإنشاء التقرير بشكل صحيح ويحفظه في ملف نصي. ويُفضل توفير رسومات أو روابط للشاشات والأكواد التي قمت بتنفيذها، بالإضافة إلى رسم UML للتصميم الأساسي للكلاسات والعلاقات. وإليك شرح خطوات كتابة الكود الخاص بالبرنامج باستخدام JavaFX ومبادئ البرمجة الموجهة للكائنات: 1- إعداد المشروع إنشاء مشروع جديد في بيئة التطوير الخاصة بك (مثل Eclipse أو IntelliJ) وحدد نوع المشروع كـ "JavaFX". إضافة المكتبة اللازمة لدعم JavaFX وستحتاجي مكتبة JavaFX SDK. 2- تصميم الصفوف عليكي بتصميم الصفوف الأساسية لنظام إدارة تأجير السيارات، ويمكن أن تتضمن الصفوف التالية: Car (لتمثيل معلومات السيارة) RentalCompany (لتمثيل شركة التأجير) Renter (لتمثيل معلومات المستأجر) CarRentalSystem (الصف الرئيسي الذي يتحكم في تنفيذ العمليات الرئيسية للنظام). 3- تنفيذ الصفوف إنشاء ملف مصدر لكل صف. في صف Car، قومي بإنشاء المتغيرات والمشغلات اللازمة لتمثيل معلومات السيارة. في صف RentalCompany، قم بإنشاء المتغيرات والمشغلات اللازمة لتمثيل معلومات شركة التأجير. في صف Renter، إنشاء المتغيرات والمشغلات اللازمة لتمثيل معلومات المستأجر. في صف CarRentalSystem، إنشاء المتغيرات والمشغلات اللازمة لتنفيذ العمليات الرئيسية، مثل إضافة سيارة جديدة، وعرض قائمة السيارات، وإنشاء تقرير السيارات. 4- إنشاء واجهة المستخدم الرسومية فتح ملف FXML الخاص بتصميم واجهة المستخدم في JavaFX Scene Builder. تنسيق العناصر المختلفة في الواجهة، مثل الأزرار وحقول الإدخال والجداول. تعيين العناصر اللازمة بأسماء مناسبة ومعرفات ID لاستخدامها في الكود الخاص بتعامل الواجهة مع البيانات. تنفيذ مشغل الحدث للأحداث المختلفة في الواجهة، مثل زر إضافة سيارة أو زر إنشاء تقرير. تنفيذ الكود اللازم للتفاعل بين واجهة المستخدم وكائنات النظام، مثل إضافة سيارة جديدة إلى النظام عند النقر على زر "إضافة"، أو إنشاء تقرير عند النقر على زر "إنشاء تقرير". استخدمي أساليب واجهة المستخدم الخاصة بـ JavaFX لتحديث القوائم وعرض البيانات بشكل صحيح. مثال بسيط لجزء من الكود: import javafx.application.Application; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.layout.GridPane; import javafx.stage.Stage; public class CarRentalSystemApp extends Application { private TextField carTypeField; private TextField manufacturerField; private TextField modelField; private TextField plateNumberField; private TextField renterNameField; private TextField addressField; private TextField mobileNumberField; private TextField emailField; public static void main(String[] args) { launch(args); } //باقي الكود هنا
  25. الوقت الذي تحتاجه لتصبح مطور شبكات يعتمد على العديد من العوامل، بما في ذلك خلفيتك التعليمية والتقنية الحالية ومدى التفرغ والممارسة العملية التي تستثمرها في تعلم البرمجة. وفي المتوسط، في حالة التعلم بانتظام والممارسة بجدية ستحتاج من 6 إلى 12 شهرًا لتصبح مطور .NET، و الوقت قد يختلف بشكل كبير من شخص لآخر. وإليك بعض الخطوات لتحقيق ذلك: 1- دراسة الأساسيات تعلم مفاهيم برمجة الحاسوب والتعامل مع لغات البرمجة الأخرى. 2- تعلم لغة C# تعتبر C# لغة البرمجة الرئيسية في بيئة .NET، لذا من المهم أن تتعلمها بشكل جيد. 3- تعلم إطار العمل .NET تعرف على الأدوات والتقنيات المستخدمة في تطوير التطبيقات باستخدام .NET Framework أو .NET Core. 4- التطبيق العملي قم بممارسة كتابة الشفرة وتطوير تطبيقات بسيطة باستخدام .NET. 5- استكشف مجالات التخصص قد ترغب في التعمق في مجال محدد مثل تطوير تطبيقات الويب باستخدام ASP.NET، أو تطوير تطبيقات سطح المكتب باستخدام Windows Forms أو WPF، أو تطوير تطبيقات الجوال باستخدام Xamarin. وأخيرًا قم بالبحث على يوتيوب عن خريطة تعلم .NET,وأنصحك بمشاهدة الفيديو الخاص بقناة Codographia ثم Ali Shahin. وأنصحك بقراءة النقاشات التالية:
×
×
  • أضف...