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

Mustafa Suleiman

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

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

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

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

    305

أجوبة بواسطة Mustafa Suleiman

  1. مكتبة OpenCV تحتوي على مجموعة واسعة من الدوال الخاصة بالصور، والتي يمكن استخدامها لأداء مجموعة متنوعة من المهام، مثل:

    • قراءة الصور وعرضها
    • معالجة الصور
    • تحليل الصور
    • التعرف على الصور

    وإليك شرح تفصيلي لبعض الدوال الخاصة بالصور في مكتبة OpenCV، مع أمثلة:

    1- قراءة الصور وعرضها.

    تستخدم الدوال التالية لقراءة الصور وعرضها:

    • imread(): تستخدم لقراءة صورة من ملف.
    • imshow(): تستخدم لعرض صورة على شاشة.
    • waitKey(): تستخدم للانتظار حتى يضغط المستخدم على أي مفتاح.
    import cv2
    
    # قراءة الصورة
    image = cv2.imread("image.jpg")
    
    # عرض الصورة
    cv2.imshow("Image", image)
    
    # الانتظار حتى يضغط المستخدم على أي مفتاح
    cv2.waitKey(0)

    2- معالجة الصور

    تستخدم الدوال التالية لمعالجة الصور:

    • cvtColor(): تستخدم لتحويل صيغة الصورة.
    • resize(): تستخدم لتغيير حجم الصورة.
    • flip(): تستخدم لقلب الصورة.
    • threshold(): تستخدم لتطبيق حد على الصورة.
    import cv2
    
    # قراءة الصورة
    image = cv2.imread("image.jpg")
    
    # تحويل الصورة إلى صيغة رمادية
    gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    
    # عرض الصورة الرمادية
    cv2.imshow("Gray image", gray_image)
    
    # الانتظار حتى يضغط المستخدم على أي مفتاح
    cv2.waitKey(0)

    3- تحليل الصور

    تستخدم الدوال التالية لتحليل الصور:

    • findContours(): تستخدم للعثور على حدود الأشكال في الصورة.
    • matchTemplate(): تستخدم للبحث عن نمط معين في الصورة.
    • HoughCircles(): تستخدم للعثور على الدوائر في الصورة.
    import cv2
    
    # قراءة الصورة
    image = cv2.imread("image.jpg")
    
    # العثور على حدود الأشكال
    contours, hierarchy = cv2.findContours(image, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    
    # عرض حدود الأشكال
    for contour in contours:
        cv2.drawContours(image, contour, -1, (0, 255, 0), 2)
    
    # عرض الصورة مع حدود الأشكال
    cv2.imshow("Image with contours", image)
    
    # الانتظار حتى يضغط المستخدم على أي مفتاح
    cv2.waitKey(0)

    4- التعرف على الصور

    تستخدم الدوال التالية للتعرف على الصور:

    • haarcascade_frontalface_default(): تستخدم للتعرف على الوجوه.
    • haarcascade_eye_tree_eyeglasses(): تستخدم للتعرف على العيون.
    • svm_frontalface_alt(): تستخدم للتعرف على الوجوه باستخدام التعلم الآلي.
    import cv2
    
    # تحميل مصفوفة هارس لتعرف الوجوه
    face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
    
    # قراءة الصورة
    image = cv2.imread("image.jpg")
    
    # العثور على الوجوه في الصورة
    faces = face_cascade.detectMultiScale(image, 1.3, 5)
    
    # رسم إطارات حول الوجوه
    for (x, y, w, h) in faces:
        cv2.rectangle(image, (x, y), (x + w, y + h), (255, 0, 0), 2)
    
    # عرض الصورة مع الوجوه
    cv2.imshow("Image with faces", image)
    
    # الانتظار حتى يضغط المستخدم على أي مفتاح
    cv2.waitKey(0)

    المستند الرسمي:

  2. لا أستطيع معرفة السبب على وجه التحديد دون تفقد الحاسوب، لذلك من الأفضل والأسهل للجميع استخدام خدمة سحابية مثل Google drive أو onedrive  لمزامنة ومشاركة الملفات وهي الخيار الأفضل في حال توفر إنترنت.

    أو حاول إعادة تثبيت نسخة الويندوز للحسوب الذي يوجد به مشكلة، ولكن قبل ذلك، حاول مشاركة ملف آخر وتفقد هل المشكلة مستمرة أيضًا؟

    • أعجبني 1
  3. مشكلة انتهاء الصلاحية في نموذج Carts.js لديك هي أنك تستخدم قيمة ثابتة لـ expires، والتي هي 10، مما يعني أن العنصر سينتهي صلاحيته بعد 10 ثوانٍ.

    عليك استخدام قيمة زمنية لـ expires، مثل:

    expires: new Date(Date.now() + 1000 * 60 * 60 * 24) // 24 ساعة

    استخدام قيمة زمنية للمؤشر index، مثل:

    index: {
      expireAfterSeconds: 3600 // 1 ساعة
    }

    أو استخدام قيمة زمنية للمؤشر index، مثل:

    index: {
      expireAfterSeconds: 3600 // 1 ساعة
    }

    أما بالنسبة لمشكلة التداخل، فهذا يحدث لأنك تقوم بإنشاء عنصر جديد في كل مرة تقوم فيها بإضافة منتج إلى السلة.

    وحل هذه المشكلة عن طريق تحديث العنصر الموجود بدلاً من إنشاء عنصر جديد بتغيير الكود في index.js كما يلي:

    if (cart) {
      var indexOfProduct = -1;
      for (var i = 0; i < cart.selectedProduct.length; i++) {
        if (product_id === cart.selectedProduct[i]._id) {
          indexOfProduct = i;
          break;
        }
      }
      if (indexOfProduct >= 0) {
        // console.log(cart.selectedProduct[indexOfProduct]);
        cart.selectedProduct[indexOfProduct].quantity++;
        cart.selectedProduct[indexOfProduct].price += newproductPrice;
        cart.selectedProduct[indexOfProduct].price =
          Math.round(cart.selectedProduct[indexOfProduct].price * 100) / 100;
        cart.totalquantity++;
        cart.totalPrice += newproductPrice;
        cart.totalPrice = Math.round(cart.totalPrice * 100) / 100;
        cart.createAt = Date.now();
        Carts.updateOne({ _id: cartId }, { $set: cart })
          .catch((err) => { console.log(err) })
          .then((result) => {
            console.log('update:', result);
            console.log('cart-update: ', cart);
          })
      } else {
        cart.totalquantity++;
        cart.totalPrice += newproductPrice;
        cart.totalPrice = Math.round(cart.totalPrice * 100) / 100;
        cart.selectedProduct.push(newProduct);
    
        cart.createAt = Date.now();
        Carts.updateOne({ _id: cartId }, { $set: cart })
          .catch((err) => { console.log(err) })
          .then((result) => {
            console.log('add:', result);
            console.log('cart-add: ', cart);
          })
      }
    }

    من أجل تحديث العنصر الموجود في حالة وجوده، أو إنشاء عنصر جديد إذا لم يكن موجودًا.

  4. بتاريخ 5 دقائق مضت قال نجم الدين عاد:

    هل تنفيذ المشاريع من خلال المكتبة React والفريمورك  Express.js اي دراسة محتويات الدورة فقط دون التعمق في html ,css كثيرا يجعل من مبرمج full-stack web developer 

    بالطبع لا عليك دراسة اللغات الأساسية للواجهة الأمامية أيضًا، ولكن لا مشكلة في عدم التعمق بهم والتركيز عليهم، طالما أنك تريد التخصص في الواجهة الخلفية فقط بعد إنتهاء الدورة.

    • أعجبني 1
  5. لا مشكلة فالكود متاح للجميع من أجل الأغراض التعليمية فقط، وليس الاستخدام التجاري، أي لا تقوم بنقل المشروع بالكامل واستخدامه بشكل تجاري، بل عليك التعديل عليه والتطوير.

    وإذا كان الكود بسيط أو جزء من المشروع فلا مشكلة تستطيع استخدامه في مشروعك.

  6. بتاريخ الآن قال نجم الدين عاد:

    هل كل  ماذكرته موجود في دورة جافاسكريبت ام هناك بعض الحاجات غير موجودة ويجب البحث عنها في مصادر اخرى

    وما هي المشاريع المتخصصة في الباك اند في دورة جافاسكريبت اللتي يجب ان أركز عنها 

    شكرا لك مسبقا

    أغلبها موجود بالفعل، والبعض منها متقدم نسبيًا لذلك عليك بالبحث عنه على يوتيوب ودراسته لكن بعد إنتهاء الدورة عليك التركيز على ذلك.

    وفي الدورة لا يوجد مسار محدد للـ Back-End فقط، بل يتم شرح أساسيات Node.js وتنفيذ واجهة برمجية API لتقييم الأفلام للتطبيق على ما node.js وexpress.js.

    بعد ذلك يتم تنفيذ مشاريع كاملة Full-Stack من خلال React و Express.js، لذلك عليك دراسة الدورة بشكل كامل ثم التخصص في الواجهة الخلفية إذا أردت.

    • أعجبني 1
  7. حاول تعطيل مشاركة الملف ثم تفعيل المشاركة مرة أخرى على الجهاز الأساسي الذي يوجد به ملف، ثم تجربة تصفح الملف مرة أخرى من الحاسوب الذي به المشكلة لكن يجب إعادة تشغيله قبل ذلك.

    وإذا استمرت المشكلة، فمن الأسهل مشاركة الملف من خلال Google drive مثلاً من خلال خاصية Shared With Me، أو من خلال onedrive وهو أفضل لكونه من مايكروسوفت ومتوافق بشكل كامل مع ملفات الأوفيس.

    • أعجبني 1
  8. حاولي أولاً القيام بالتالي حيث يظهر لديك رسالة خطأ  Error: pg_config executable not found:

    في ملف  requirements.txt عليك استبدال مكتبة psycopg2 بالتالي:

    psycopg2-binary==2.8.5

    وفي حال استمرار المشكلة عليك القيام بالتالي حيث أن سبب مشكلة Error: pg_config executable not found عند محاولة نشر مشروع على AWS هو أن ملف الإعدادات لقاعدة البيانات pg_config غير موجود في متغير البيئة $PATH من خلال الأمر التالي:

    python setup.py build_ext --pg-config /path/to/pg_config

    وعليك استبدال /path/to/pg_config بالمسار الصحيح لملف pg_config في مشروعك.

    حاولي إيجاد مسار الملف من خلال الأمر التالي:

    which pg_config

    ولحل هذه المشكلة بشكل دائم على Elastic Beanstalk، تستطيعي إنشاء ملف نصي يسمى 10_install_dependencies.sh في مجلد .platform/hooks/prebuild، وسيؤدي الملف إلى إضافة مجلد يحتوي على برنامج pg_config إلى متغير البيئة $PATH قبل إنشاء مكتبة psycopg2.

    #!/usr/bin/sh
    
    export PATH=$PATH:/path/to/pg_config
    
    python setup.py build_ext

     

    • أعجبني 1
  9. الأيقونة واسم الطالب سيكونون بداخل عنصر أب وضعنها له تنسيق ليصبح flexbox ثم بداخله نقوم بكتابة ما نريد وأيضًا وضع الأيقونة كالتالي:

    <div id="branding" style="flex-grow: 8">
        <h1><a href="index.html"><i class="fa fa-user-circle"></i> صفحة <sapn class="highlight">اسم الطالب</sapn></a> </h1>
    </div>

    وخاصية flex-grow في CSS تستخدم لتحديد مدى توسع العناصر المرنة (flex items) داخل العنصر الأب (flex container) بالنسبة للمساحة المتاحة، والقيمة التي تم تعيينها لـ flex-grow تحدد النسبة المئوية للمساحة المتاحة التي ستستخدمها العناصر المرنة داخل العنصر الأب.

    حيث  تم تعيين flex-grow: 8 لعنصر <div> الذي لديه id "branding"، مما يعني أن العنصر سيكون مستعدًا لاستخدام مساحة أكبر بنسبة 8 مرات من العناصر الأخرى داخل العنصر الأب إذا كان هناك مساحة إضافية متاحة.

    وبالنسبة لكيفية استخدام أيقونات Font Awesome فقد تم توضيح ذلك هنا:

     

  10. أتفهم القلق الذي تشعر به وهو أمر طبيعي لأنك ما زلت في بدايات تعلم البرمجة، وبإختصار لا داعي لما تشعر به من تخوف، الفكرة هي أن الذكاء الاصطناعي ما هو إلا مجرد أداة لتنفيذ مهام وأجزاء من المشروع الذي تعمل عليه أو مساعدتك في فهم واستيعاب أمرًا ما أو شرح كيفية تنفيذ أمرًا ما.

    لكن هل يعتمد عليه في تنفيذ مشروع كامل؟ الإجابة هي لا حتى الآن، والدراسات تشير إلى أنه سيتم أتمتة 70% من عملية تطوير الواجهة الأمامية بحلول 2027، لكن هل ذلك حقيقي؟ لا أحد يعلم حقيقة الأمر، فمن المفترض أن نمتلك بين أيدينا عربات طائرة حيث كان متوقع ذلك فيما سبق!

    وفي حال تحقق ذلك، ما عليك هو التركيز على الأساسيات وتعميق فهمك واستخدام كافة الأدوات التي تساعدك على الإنتاجية بشكل أفضل وتوفير جهدك وتركيزك للمهام الصعبة والتي تتطلب خبرة ومعرفة لا تمتلكها تلك الأدوات.

    والتجربة خير دليل، حاول تجربة إنشاء مشروع من خلال تلك الأدوات ولن تستطيع، وبالطبع أنا لا أتحدث عن منصات الـ no code أو Low code.

    وقد تم التفصيل هنا:

     

  11. المواقع الإلكترونية يمكن أن تتكون من صفحة html واحدة فقط، أو من عدة صفحات، ويعتمد ذلك على طبيعة الموقع وحجمه وأهدافه

    صفحة html الواحدة

    صفحة html الواحدة هي أبسط شكل للموقع الإلكتروني، وتتكون الصفحة من ملف واحد يحتوي على كل محتوى الموقع، بما في ذلك النصوص والصور والعناصر التفاعلية.

    وتستخدم مواقع html الواحدة للمواقع الصغيرة والبسيطة، مثل مواقع الويب الشخصية أو مواقع الشركات الصغيرة.

    عدة صفحات html

    .تتكون المواقع الإلكترونية الكبيرة من عدة صفحات html، وتسمح تلك الطريقة بتنظيم المحتوى بشكل أكثر كفاءة وسهولة في التصفح.

    حيث ترتبط صفحات الموقع الإلكتروني ببعضها البعض باستخدام روابط html، وعندما ينقر المستخدم على رابط، يتم تحميل الصفحة المرتبطة في المتصفح.

    وهناك عدة أسباب لإنشاء موقع إلكتروني من عدة صفحات، منها:

    • تنظيم المحتوى حسب الموضوع أو الوظيفة، فقد يكون هناك صفحة رئيسية تحتوي على مقدمة عن الموقع، وصفحات أخرى تحتوي على معلومات حول المنتجات أو الخدمات أو الأخبار.
    • استخدام صفحات متعددة لجعل الموقع الإلكتروني أكثر سهولة في التصفح  كاستخدام روابط التنقل لمساعدة المستخدمين على الوصول إلى الصفحات التي يبحثون عنها.
    •  يمكن إضافة صفحات جديدة إلى الموقع بسهولة عند الحاجة.

    أما منصة مثل فيسبوك فهي منصة ضخمة يتم توليد صفحاتها ديناميكيًا حيث يتم استخدام التالي في الواجهة الأمامية:

    • HTML: لغة تنسيق النص التي تحدد بنية الصفحات.
    • CSS: لغة تنسيق النص التي تحدد مظهر الصفحات.
    • JavaScript: لغة برمجة تفاعلية تسمح للمستخدمين بالتفاعل مع الصفحات.
    • React: مكتبة JavaScript تستخدم لإنشاء تطبيقات ويب تفاعلية.
    • React Native: مكتبة JavaScript تستخدم لإنشاء تطبيقات ويب وتطبيقات الهاتف المحمول.

    الواجهة الخلفية:

    • PHP: لغة برمجة مفتوحة المصدر تستخدم لتطوير مواقع الويب وتطبيقات الويب.
    • Python: لغة برمجة متعددة الأغراض تستخدم لتطوير مجموعة متنوعة من التطبيقات، بما في ذلك مواقع الويب وتطبيقات الويب وتطبيقات الأجهزة المحمولة.
    • Java: لغة برمجة قوية تستخدم لتطوير مجموعة متنوعة من التطبيقات، بما في ذلك مواقع الويب وتطبيقات الويب وتطبيقات الأجهزة المحمولة.
    • C++: لغة برمجة قوية تستخدم لتطوير تطبيقات عالية الأداء، مثل خوادم فيسبوك.

    المكونات الإضافية:

    • Apache Hadoop: نظام إدارة قواعد بيانات مفتوح المصدر يستخدم لمعالجة البيانات الضخمة.
    • Apache Hive: نظام إدارة قواعد بيانات مفتوح المصدر يستخدم لتحليل البيانات الضخمة.
    • Apache Spark: منصة معالجة بيانات مفتوحة المصدر تستخدم لمعالجة البيانات الضخمة في الوقت الفعلي.
    • Elasticsearch: نظام بحث مفتوح المصدر يستخدم لتحليل البيانات الضخمة.
    • Amazon Web Services: مجموعة من خدمات الحوسبة السحابية التي تستخدمها فيسبوك لتشغيل صفحاتها وتطبيقاتها.
    • أعجبني 1
  12. بخصوص الكتب الخاصة بلغة PHP فقد تم شرح الأمر هنا وعليك بالبدء من خلال كتاب 

    PHP & MySQL: Server-side Web Development  by Jon Duckett في حال كنت ستتعلم من الصفر:

    وبخصوص الكتب الخاصة بهياكل البيانات والخوارزميات وأيضًا جافاسكريبت وقواعد البيانات وأفضل الممارسات لكتابة كود نظيف وتحسين التفكير المنطقي أثناء التطوير، ستجد ترشيحات ممتازة هنا:

    وتستطيع الإختيار من بين الكتب السابقة ما شئت لكن إذا أردت الأهم فهم:

    • Grokking Algorithms
    • Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin
    • Head first OOAD
    • Good code, bad code
    • Head First design patterns
    • أعجبني 1
  13. تحتاج إلى معرفة جيدة باللغة البرمجية التي ترغب في تطوير مكتبتك بها، بالإضافة إلى فهم أساسي لبنية المكتبات البرمجية.

    فالمطور الذي يقوم بتطوير المكتبة هو بالأساس مبرمج محترف ومتمكن من لغة بايثون، لذلك عليك أولاً دراسة الأساسيات والتمكن منها بشكل جيد وتنفيذ المشاريع ثم التعمق في اللغة بشكل تدريجي.

    بعد ذلك ستصل للمرحلة التي تمكنك من إنشاء مكتبة سواء كانت صغيرة أم كبيرة ليستخدمها الآخرين.

    ولكن المكتبة مكتوبة بلغة C ولغات أخرى أيضًا فعند التوجه لمكتبة NumPy على GitHub ستجد أنه يتم استخدام اللغات التالية:

    • Python 60.8% 
    • C 36.3% 
    • C++ 1.2% 
    • Cython 0.9% 
    • Meson 0.5% 
    • Fortran 0.2% 
    • Other 0.1%

    وسبب استخدام لغات أخرى في التطوير هو الأداء وأسباب أخرى، وبالطبع تستطيع تطوير المكتبة من خلال بايثون فقط، وأنت بحاجة إلى رؤية ذلك بشكل عملي من خلال البحث عن create python package  على اليوتيوب.

     

    • أعجبني 1
  14. لغة SQL هي لغة برمجة خاصة بقواعد البيانات العلائقية، تستخدم لإنشاء وتعديل وإدارة قواعد البيانات، وهي لغة مستقلة عن أي لغة برمجة أو نظام تشغيل، مما يجعلها قابلة للاستخدام مع أي لغة برمجة أو نظام تشغيل يدعم قواعد البيانات العلائقية.

    مكبتة sqlite3 هي مكتبة برمجة مكتوبة بلغة C، توفر واجهة برمجة التطبيقات (API) لقاعدة بيانات SQLit أما SQLite هي قاعدة بيانات علائقية صغيرة الحجم، مستقلة عن النظام، تعتمد على الملفات.

    الفرق بين لغة SQL و مكبتة sqlite3

    • لغة SQL هي لغة برمجة، بينما مكبتة sqlite3 هي مكتبة برمجة.
    • لغة SQL مستقلة عن أي لغة برمجة أو نظام تشغيل، بينما مكبتة sqlite3 مكتوبة بلغة C.
    • لغة SQL تستخدم لإنشاء وتعديل وإدارة قواعد البيانات، بينما مكبتة sqlite3 توفر واجهة برمجة التطبيقات (API) لقاعدة بيانات SQLite.

    أوجه التشابه بين لغة SQL و مكبتة sqlite3

    • كلاهما يستخدم لإنشاء وتعديل وإدارة قواعد البيانات العلائقية.
    • كلاهما يستخدم جمل SQL لإنشاء الجداول والسجلات والعلاقات.
    • كلاهما يمكن استخدامه مع أي لغة برمجة تدعم قواعد البيانات العلائقية.

    المفاضلة بين لغة SQL و مكبتة sqlite3

    في حال  كنت بحاجة إلى قاعدة بيانات علائقية يمكن استخدامها مع أي لغة برمجة أو نظام تشغيل، فإن لغة SQL هي الخيار الأفضل.

    وإن كنت بحاجة إلى قاعدة بيانات علائقية صغيرة الحجم وسهلة الإدارة، فإن SQLite هي الخيار الأفضل.

    أمثلة على استخدام لغة SQL و مكبتة sqlite3

    • لغة SQL: نستخجم لغة SQL لإنشاء قاعدة بيانات لتطبيق ويب لتخزين بيانات المستخدمين.
    • مكبتة sqlite3: نستخدم مكبتة sqlite3 لإنشاء قاعدة بيانات لتطبيق سطح المكتب لتخزين بيانات المبيعات.

     

    • أعجبني 1
  15. أولاً عليك بإنشاء حساب على موقع Paymob الإلكتروني، انتقلي إلى موقع Paymob الإلكتروني واتبعي الإرشادات لإنشاء حساب، وبمجرد إنشاء حسابك، ستحتاجين الحصول على رمز API الخاص بك.

    وللحصول على رمز API الخاص بك، انتقلي إلى لوحة تحكم Paymob واتبعي الإرشادات للحصول على api_key  من خلال الرابط التالي:

    b17196f-Screen_Shot_2022-11-20_at_7_25.01_PM.thumb.png.465adf8457edfd7b73adc9b61877b02a.png

    وستجدي هنا شرح للخطوات من المستند الرسمي:

    وهناك مكتبة بايثون باسم accept-paymob من أجل التعامل مع الـ Api الخاص بـ Paymob.

    • أعجبني 1
  16. هناك عدة أسباب محتملة لالمشكلة، بما في ذلك:

     خطأ في الكود الخاص بك يتسبب في حدوث خطأ أو إنهاء التشغيل بشكل غير متوقع، وتستطيع محاولة تشغيل الملف مرة أخرى في مترجم Python لتحديد ما إذا كان هناك أي أخطاء.

    مكتبة مطلوبة لتشغيل الملف الخاص بك مفقودة أو تالفة، حاول تثبيت المكتبة المطلوبة أو إعادة تثبيتها.

    قد يكون هناك إعدادات في نظامك تمنع تشغيل الملف الخاص بك بشكل صحيح، وبإمكانك تغيير تلك الإعدادات أو إعادة تعيين النظام إلى إعدادات المصنع الافتراضية.

    ربما قمت أنت بتحويل الكود إلى برنامج لكن بشكل غير صحيح حاول مراجعة الخطوات وهناك شرح مفصل:

     

  17. من الأفضل تعلم أساسيات البرمجة من خلال لغة شائعة الاستخدام مثل بايثون، والأفضل من ذلك هو تعلم الأساسيات من خلال C++ لكن أصعب بالطبع ولا مشكلة في التعلم من خلال بايثون.

    أما Dart فهي تستخدم بشكل أساسي في إطار Flutter الخاص بتطوير تطبيقات الهاتف، فإذا كنت مهتمًا بتطوير تطبيقات الجوال أو التطبيقات متعددة المنصات، فستكون Dart وFlutter خيارات جيدة.

    وعلي أي حال تستطيع تعلم أساسيات البرمجة من خلال أي لغة برمجة مشهورة، ولكن ذكرت لك الأفضل والأصح، حتى لا تضيع وقتك وأيضًا تستفاد بما تعلمته.

    حيث أن بايثون شائعة الاستخدام وستتعرض لها عاجلاً أم آجلاً خلال رحلة تعلم البرمجة، وC++ مستخدمة بكثرة أيضًا وستعمل على تأسيسك بشكل أفضل من بايثون.

    ولا يشترط تعلم بايثون أو أي لغة قبل دخول مجال الويب لكن تلك هي الطريقة الصحيحة لدخول مجال البرمجة، والبعض يتجه مباشرًة إلى تعلم HTML, CSS, JS ولا مشكلة في ذلك لكن المستوى لن يكون واحد بالطبع.

    وعليك بالتركيز على اللغات الأساسيات للويب السابقة الذكر، وعدم التسرع في تعلم مكتبات أو إطارات مثل React وAngular فستصاب بالإحباط أو سيكون مستواك ضعيفًا بدون داعي، واللغات الأساسية هي ما تؤهلك لتعلم أي شيء بعد ذلك.

    • شكرًا 1
  18. أولاً أنت تقوم بكتابة اسم المكتبة بشكل غير صحيح حيث تكتب openCV-python واسم المكتبة الصحيح هو opencv-python.

    و علي أي حال يجب تحديث إصدار pip لديك من خلال الأمر التالي:

    pip install --upgrade pip

    وذلك لأن المكتبة تتطلب إصدار 19.3  من pip على الأقل.

    ثم تثبيت المكتبة بعد ذلك بالاسم الصحيح كالتالي:

    pip install opencv-python

    وستجد الصفحة الرسمية للمكتبة على pypi هنا:

    • شكرًا 1
  19. دائمًا ما أنصح بتعلم مجال الويب في البداية في حال لم تستقري على مجال محدد لتعلمه، حيث أنه مجال أسهل نسبيًا وأيضًا سيؤهلك لتعلم مجالات برمجية أخرى وستنتقل الخبرات والمعلومات التي تعلمتيها معك إلى المجال الآخر ولن يضيع مجهودك هباءًا.

    في حال تعلمتي أساسيات الويب ولا تريدين التخصص في ذلك المجال، فعليك الإنتقال للمجال الآخر ولا مشكلة في ذلك، لكن للحكم على مجال معين عليك الاستمرار في تعلمه لمدة لا تقل عن شهر على الأقل وخاصًة في البداية فلن تمتلكي الخبرة الكافية للحكم على ما إذا كان المجال جيد لك أم لا إلا من خلال الاستمرارية وبذل المجهود لإتخاذ قرار سليم.

     

    • شكرًا 1
  20. بالطبع لا، فتعلم C++ الهدف منه هو تعلم أساسيات البرمجة من خلال لغة برمجة قوية وليس بها abstraction أو تجريد بنسبة كبيرة مقارنًة بلغة مثل جافاسكريبت أو بايثون، لكنها أصعب في التعلم بالطبع.

    وبخصوص العمل الحر في مجال البرمجة، فعليك بتعلم الغات والمهارات المطلوبة بكثرة سواء كان ذلك في مجال تطوير الويب أو تطوير تطبيقات الهاتف، ونظرة واحدة على المشاريع على موقع مثل مستقل أو خمسات كافية لمعرفة نوعية المشاريع المطلوبة والمهارات اللازمة لتنفيذ تلك المشاريع.

    وفي المواقع العربية ستجدي أن المطلوب بكثرة فيما يتعلق بتطوير الويب هي لغة PHP وإطار لارافل ووردبريس، بعد ذلك .NET ثم بعد ذلك MERN STACK أو React.

    وبخصوص تطوير تطبيقات الهاتف فستجدي Flutter ثم React Native.

    وقبل تعلم أي مجال عليك تحديد هل تريدي العمل على مواقع العمل الحر أي في شركة، ففي حال كنتي تريدين العمل في شركة عليك البحث عن الوظائف المطلوبة في بلدك بالنسبة لخبرة سنة مثلاً أي مستوى Junior  سواء كان ذلك في مجال الويب أو تطبيقات الهاتف أو مجال آخر، وتعلم المهارات المطلوبة بكثرة بالنسبة لذلك المجال وسوق العمل لديك.

    • شكرًا 1
  21. تطبيق من ذلك النوع بحاجة إلى خبرة ليست بالقليلة، وعليك اكتساب ذلك من خلال تعلم كيف يتم إنشاء مثل تلك التطبيقات قبل قبول أي مشروع من عميل، ولتعلم ذلك عليك البحث على يوتيوب عن "Food Delivery App from SCRATCH in Android Studio".

    وستجد شرح لكيفية القيام بالأمر من خلال مشروع كامل، وستتعملين كيف يتم إنشاء لوحة التحكم وهي المكان الذي يمكن للمشرفين من خلاله إدارة التطبيق، مثل إضافة المطاعم والمنتجات وإدارة الطلبات، وتستطيعي إنشاء لوحة تحكم باستخدام Firebase أو أي نظام إدارة محتوى آخر.

    أيضًا تستطيعي دمج خدمات التوصيل، مثل DoorDash و Uber Eats أو وسيلة التوصيل المناسبة للعملاء، في تطبيقك، وسيساعدك ذلك في توصيل الطلبات إلى العملاء بشكل أسرع وأكثر كفاءة، مع دمج خدمات الدفع، مثل Stripe و PayPal، في تطبيقك.

    وبخصوص التصميم عليك البحث على اليوتيوب عن Food App Android Design وستجدين تصماميم جيدة جدًا، بالإَضافة إلى البحث عن تصماميم على:

    • Pinterest
    • Dribbble
    • mobbin
    • UX CRUSH
    • Screen lane
    • uplabs

     

    • شكرًا 1
×
×
  • أضف...