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

Mustafa Suleiman

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

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

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

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

    305

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

  1. الأسئلة الإختبارية لا يتم الإجابة عليها، من الأفضل تعلم أساسيات ثم محاولة الحل وإليك مصادر:

    وبخصوص الإختبار فإليك خطوات الحل وليس الحل نفسه:

    1. قم بإنشاء ملف .py جديد لبدء البرنامج.
    2. إضافة تعليقات في بداية الملف تحتوي على اسمك ورقم هويتك الجامعية كما هو مطلوب.
    # Your Name
    # Your University ID

    3- بعد ذلك عليك بإنشاء متغيرات لتمثيل معلومات الطلاب وحفظها في قواميس، ويجب أن تكون هناك 3 قواميس لكل طالب، ويجب أن يتضمن كل قاموس المعلومات التالية: الاسم، الهوية، وقائمة بالعلامات في مواد مختلفة.

    4- قم بطباعة معلومات أحد الطلاب باستخدام print() واستخدام مؤشرات المفاتيح للوصول إلى القيم المناسبة.

  2. بتاريخ 2 ساعة قال Jamil Mahmoud:

    انا مشترك بدورة علوم الحاسوب هل هذه الدورة سوف تساعدني على عمل قاعدة بيانات تتضمن :

    • إنشاء جدول للمستخدمين: يتضمن الجدول معلومات مثل اسم المستخدم وكلمة المرور والبريد الإلكتروني وتاريخ الميلاد وصورة الملف الشخصي.
    • إنشاء جدول للفيديو: يتضمن  معلومات مثل عنوان الفيديو ووصف الفيديو وتاريخ النشر وعدد المشاهدات والتعليقات والإعجابات.
    • إنشاء جدول للتعليقات: يتضمنمعلومات مثل عنوان التعليق ونص التعليق وتاريخ النشر واسم المستخدم.
    • إنشاء جدول للإعجابات: يتضمن معلومات مثل عنوان الفيديو واسم المستخدم.

    ام يجب علي الاشتراك بدورات اخرى وشكرا لكم

    في مسار قواعد البيانات في الدورة سيتم شرح لغة SQL وشرح أساسيات التعامل مع قواعد البيانات العلاقية من خلال SQLite.

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

    وستتعلم كيفية ربط قاعدة البيانات SQLite مع Node.js أي خادم (سيرفر).

    بعد ذلك يتم شرح التعامل مع قواعد البيانات غير العلاقية NoSQL من خلال MogoDB وnode.js.

    لذلك أنت لست بحاجة إلى دورة أخرى، ولكن إذا أردت معرفة كيف يتم إنشاء مشاريع فعلية، فعليك إختيار ما بين الدورات التالية:

    أو 

    وللمزيد من المصادر والشرح عن قواعد البيانات:

    و في هذا القسم تجد مقالات متنوعة عن قواعد البيانات: مقالات قواعد البيانات

    و إليك بعض الكتب التي نشرتها الأكاديمية و التي تتعلق بمجال قواعد البيانات:

  3. بتاريخ 43 دقائق مضت قال Youness Bait:

    هذا الكود فهمته جيدا لكن لا اعرف ماهو دور {root:__dirname}

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

    نستخدم الخاصية root في خيارات sendFile() لتحديد الدليل الذي سيتم البحث فيه عن الملف الذي سيتم إرساله، وبدون تلك الخاصية، سيبحث Node.js عن الملف في الدليل الحالي، والذي قد لا يكون هو المكان الذي توجد فيه الملف.

    و__dirname هي دالة داخلية في Node.js تُرجع اسم الدليل الذي تم تحميل الملف الحالي منه.

    لذلك ستبحث Node.js عن الملف server.html في الدليل الذي تم تحميل ملف الكود الحالي منه أي ملف جافاسكريبت الذي به الكود.

    بمعنى آخر فائدة __dirname  هي أنها تسمح لتطبيق Node.js بإرجاع الملف server.html بغض النظر عن مكان وجوده في النظام، وذلك مفيد بشكل خاص عند العمل مع تطبيقات متعددة الصفحات أو عند الحاجة إلى إرجاع ملف من دليل مختلف عن الدليل الحالي.

    وإليك مثال على كيفية استخدام root لتحديد الدليل الذي سيتم البحث فيه عن الملف الذي سيتم إرساله من دليل مختلف:

    const express = require('express');
    const app = express();
    
    app.get('/', (req, res) => {
      res.sendFile('public/index.html', { root: 'public' });
    });
    
    app.listen(3000);

    هنا نستخدم root: 'public' لتحديد الدليل public كدليل الجذر، مما يعني أن Node.js سيبحث عن الملف index.html في الدليل public.

    • شكرًا 1
  4. المشكلة في ملف Fiend.jsx، وأيضًا هناك مشكلة وهي أن خاصية key هي خاصية خاصة تستخدمها React لتتبع وتحديث قوائم المكونات بكفاءة، ولا يمكن استخدام خاصية key كخاصية عادية في المكونات.

    لذلك تجنب التالي:

    • محاولة الوصول إلى خاصية key في المكون الفرعي.
    • محاولة استخدام خاصية key لشيء آخر غير الغرض المقصود منها.

    وأرجو تعديل الكود كالتالي من أجل طباعة قيمة friends:

    const Friend = ({ friendId, name, subtitle, userPicturePath }) => {
        const dispatch = useDispatch();
        const navigate = useNavigate();
        const { user } = useSelector((state) => state.user);
        const token = useSelector((state) => state.token);
        const friends = useSelector((state) => state.user.friends);
    
    console.log(friends)
    
    //باقي الكود

    وكرر نفس الأمر في  FriendsList.jsx

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

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

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

     

  6. ما تقصدينه هو حساب عدد مرات الضغط في tkinter والطريقة المباشرة هي استخدام عداد، وتستطيعي إنشاء عداد جديد باستخدام وظيفة IntVar().

    from tkinter import *
    
    root = Tk()
    
    # إنشاء عداد
    counter = IntVar()
    counter.set(0)
    
    # تحديث العداد عند الضغط على الزر
    def count():
        counter.set(counter.get() + 1)
        label.config(text=f"عدد مرات الضغط: {counter.get()}")
    
    # إنشاء زر
    button = Button(root, text="ضغط", command=count)
    button.pack()
    
    # إنشاء علامة لعرض عدد مرات الضغط
    label = Label(root, text="عدد مرات الضغط: 0")
    label.pack()
    
    root.mainloop()

    حيث يتم إنشاء عداد جديد يسمى counter، ثم تعيين العداد على 0 في البداية، وإنشاء زر جديد يسمى button، بعد ذلك عند الضغط على الزر، يتم تحديث العداد بمقدار 1 وعرض عدد مرات الضغط الحالي على علامة تسمى label.

    • شكرًا 1
  7. هل الجهاز الافتراضي قيد التشغيل، تحقق من ذلك من خلال فتح Android Studio والنقر فوق Run > Run 'app'، وإن كان الجهاز الافتراضي قيد التشغيل، فسترى رسالة تقول "Device is running".

    وهل Visual Studio Code متصل بالجهاز الافتراضي؟ قم بفتح Visual Studio Code والنقر فوق Terminal > New Terminal ثم، اكتب الأمر التالي في موجه الأوامر:

    adb devices

     

    وإن كان الجهاز الافتراضي متصلًا، فسترى قائمة بالأجهزة المتصلة، بما في ذلك الجهاز الافتراضي.

    أيضًا عليك التأكد من أن Visual Studio Code لديه الأذونات اللازمة للوصول إلى الجهاز الافتراضي، من خلال فتح Visual Studio Code والنقر فوق File > Preferences > Settings. ثم، ابحث عن "android" في مربع البحث.

    في قسم "Device Manager"، تأكد من أن الخيار "Use custom device manager" محدد وأن المسار إلى أداة إدارة الأجهزة الافتراضي الصحيح.

  8. الطريقة الصحيحة هي كالتالي:

    1- إنشاء كائن من خلال دالة وطباعة this

    function Person(first, last) {
      this.firstName = first;
      this.lastName = last;
    }
    
    Person.prototype.print = function() {
      console.log(this);
    };
    
    const person = new Person("yousef", "mohamed");
    
    person.print();

    فلو قمنا بتعريف دالة print()  داخل دالة البناء Person() فذلك يعني أن الكلمة المفتاحية this داخل دالة print() ستشير إلى الدالة الداخلية، وليس إلى مثيل فئة Person (الكائن الجديد).

     

    ويجب نقل دالة print() خارج دالة البناء لجعلها متاحة لجميع مثيلات فئة Person، وستشير الكلمة المفتاحية this داخل الدالة إلى مثيل الفئة.

    ويجب عليك فهم prototype في جافاسكريبت قبل أي شيء وقبل تعلم كيفية إنشاء كلاس، حيث أنه لا يوجد كلاس بالمعنى التقليدي كما في C++ وجافا، أرجو قراءة التالي:

    2-  إنشاء كلاس من خلال الكلمة المحجوزة class 

    class MyClass {
      constructor() {
        this.name = 'yousef'
      }
    
      logThis() {
        console.log("this:", this);
      }
    }
    
    const myObject = new MyClass();
    myObject.logThis();

     

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

    ويتمتع التسويق الإلكتروني بالعديد من الفوائد، منها:

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

    ونستطيع تقسيم التسويق الإلكتروني إلى عدة أقسام رئيسية، منها:

    • التسويق عبر محركات البحث (SEO): يهدف إلى تحسين ترتيب موقع الويب في نتائج البحث الطبيعية.
    • التسويق بالمحتوى (Content Marketing): يركز على إنشاء ونشر محتوى عالي الجودة لجذب العملاء المحتملين.
    • التسويق عبر وسائل التواصل الاجتماعي (Social Media Marketing): يهدف إلى إنشاء علاقات مع العملاء المحتملين من خلال وسائل التواصل الاجتماعي.
    • التسويق بالبريد الإلكتروني (Email Marketing): يهدف إلى بناء علاقات مع العملاء الحاليين والاحتفاظ بهم من خلال البريد الإلكتروني.
    • التسويق المدفوع (Paid Marketing): يشمل الإعلانات المدفوعة على الإنترنت، مثل الإعلانات المصورة والإعلانات النصية والإعلانات الاجتماعية.

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

    مقالات التسويق والمبيعات

  10. هل تقصد برامج المونتاج؟

    حاليًا أنصحك بتجربة برنامج clipchamp من مايكروسوفت فهو مجاني وبه ميزة تسجيل الشاشة والكاميرا وعمل مونتاج وميزات أخرى.

    أيضًا يوجد برامج مونتاج أخرى مثل:

    • Adobe Premiere Pro أحد أكثر برامج المونتاج شيوعًا وقوة، ويوفر مجموعة واسعة من الميزات والأدوات للمستخدمين المحترفين.
    • Final Cut Pro برنامج مونتاج شائع آخر لنظام macOS، ويوفر واجهة سهلة الاستخدام ومجموعة متنوعة من الميزات.
    • DaVinci Resolve برنامج مونتاج مجاني ومفتوح المصدر يوفر مجموعة واسعة من الميزات والأدوات، بما في ذلك تحرير الفيديو والصوت والمؤثرات المرئية.

    وبالطبع يوجد Camtasia وهو الأسهل في حال أردت عمل شروحات على اليوتيوب.

     

  11. رسالة "401 Unauthorized" تعني أن الطلب لم يتم تصديقه بنجاح عند إرساله إلى الخادم، أي أن الـ JWT (JSON Web Token) الذي تم إرساله مع الطلب غير صالح أو غير موجود.

    عليك بالتالي:

    تأكد من أنك قمت بتسجيل الدخول بنجاح وحصلت على JWT الصحيح عند تسجيل الدخول.

    التأكد من أنك تقوم بإرسال الـ JWT الصحيح مع الطلب، وأنت تقوم بذلك بالفعل في كود العميل باستخدام:

    "x-auth-token": user?.data?.token

    وتحقق من أن خادمك يستخدم نفس (JWT_SECRET) الذي تم استخدامه عند إنشاء الـ JWT ويجب أن يكون متطابقًا على الجانبين (الخادم والعميل) حتى يمكن التحقق من الـ JWT بنجاح.

    وقم بتضمين وسيط الحماية (protect) في مسار الطلب /api/auth/change_password للتحقق من الـ JWT قبل تنفيذ العملية وتأكد من أن الوسيط موجود في سلسلة وسائط التوجيه التي تتعامل مع هذا المسار.

    أيضًا تحقق من الجزء التالي في الكود:

      await current_user.save()
            res.send(res.json({
                success: true,
                data: current_user
            }))

    عليك أيضًا إزالة res.json() حيث أن res.send() بالفعل يقوم بإرسال الجواب بصيغة JSON.
     

    • أعجبني 1
  12. الأمر بحاجة إلى استراتيجية شاملة تستهدف جميع جوانب الشركة، من المهام اليومية إلى البنية التحتية.

    وتتضمن بعض الاستراتيجيات الشائعة ما يلي:

    1. تقليل التكاليف الثابتة  مثل الإيجار والمرافق والتأمين، جزءًا كبيرًا من ميزانية الشركة الناشئة، ويمكن تقليل تلك التكاليف من خلال العمل من المنزل، أو إيجار مساحة عمل مشتركة، أو التفاوض على عقود إيجار طويلة الأجل.
    2. توظيف المستقلين طريقة فعالة لتجنب تكاليف التوظيف التقليدية، مثل الرواتب والفوائد والاستفادة منهم لأداء مجموعة متنوعة من المهام، بما في ذلك تطوير الويب والتسويق والكتابة.
    3.  تساعد التكنولوجيا الشركات الناشئة على تبسيط العمليات وزيادة الكفاءة، مما يؤدي إلى خفض التكاليف، وهناك العديد من الأدوات والبرامج المتاحة التي يمكن أن تساعد الشركات الناشئة على تقليل التكاليف، مثل أدوات إدارة المشاريع وبرامج CRM وأدوات التسويق عبر البريد الإلكتروني.
    4. التركيز على الأساسيات، مثل تطوير منتج أو خدمة جيدة، وبناء قاعدة عملاء من اجل خفض التكاليف على المدى الطويل من خلال زيادة الإيرادات.

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

    7 استراتيجيات فعالة لخفض التكاليف في شركتك الناشئة

  13. الخطأERR_HTTP_HEADERS_SENT يعني أنك تحاول تعيين رؤوس استجابة تم إرسالها بالفعل إلى العميل.

    ويحدث ذلك إن قمت باستدعاء res.send() أو res.json() عدة مرات في نفس المعالج، أو قمت باستدعائه بعد إرسال الاستجابة بالفعل.

    ولديك المشكلة هي أنك تقوم باستدعاء res.send(current_user) بعد أن قمت بالفعل باستدعاء res.json({errors: errors.array()}).

    وذلك لأن دالة validationResult() تُرجع مصفوفة من أخطاء التحقق، وإن كانت هناك أية أخطاء، فأنت ترسل استجابة JSON بها تلك الأخطاء.

    ببساطة عليك نقل استدعاء res.send(current_user) خارج كتلة if (!errors.isEmpty()). سيضمن ذلك إرسال الاستجابة مرة واحدة فقط، بعد اجتياز جميع عمليات التحقق من الصحة.

    const changePassword = async(req,res) => {
        const errors = validationResult(req)
        if (!errors.isEmpty()) {
            return res.status(400).json({errors: errors.array()})
        }
    
        try {
            const { password, newPassword} = req.body;
            const current_user = await User.findById( req.user )
            console.log(req.body)
    
            // أرسل الاستجابة فقط إذا لم تكن هناك أخطاء في التحقق من الصحة
            res.send(current_user)
        } catch (error) {
            console.log(error)
            res.status(500).send("Server Error"); 
        }
    }

     

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

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

    ثم بعد التفكير إن لم تتوصل لحل مناسب عليك بالمراجعة عن الجزئية أو الإجزاء التي أنت بحاجة إليها من أجل حل السؤال سواء من خلال دورة أو من خلال مستند رسمي وهنا ليكن المستند الرسمي الخاص بـ React وفي حسوب يوجد شرح باللغة العربية:

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

    بالنسبة لخطوات حل سؤالك فهي كالتالي:

    1. أنشئ مشروع React جديد.
    2. أنشئ مكونين جديدين: Header و Footer.
    3. في مكون Header، مرر له prop يسمى title والذي يحتوي على القيمة "My React App".
    4. في مكون Footer، وهومكون يعرض حقوق النشر. مرر له prop يسمى copyright والذي يحتوي على القيمة "© 2023".
    5. في مكون App، وهو المكون الرئيسي للمشروع والذي يتم به عرض المكونات الأخرى وأيضًا تمرير props لها، وهو يعرض المكونين Header و Footer ويمرر المكون الرئيسي prop يسمى title إلى المكون Header و prop يسمى copyright إلى المكون Footer.

    وهناك بعض النقاط الهامة:

    • Props غير قابلة للتغيير، مما يعني أنه لا يمكن تغييرها بمجرد تمريرها إلى مكون فرعي.
    • Props غير قابلة للتغيير من منظور المكون الفرعي أي بداخل المكون الذي تم تمريرها إليه.
    • يمكنك تمرير أي قيمة JavaScript من خلال props، بما في ذلك الكائنات والصفائف والوظائف.
    • للوصول إلى props في مكون فرعي، يمكنك استخدام كائن props.

     

    • شكرًا 1
  15. أرجو المزيد من التوضيح، هل تقصد عند تطوير مشروع أم عند تصفح موقع عادي على الإنترنت؟

    علي أي حال هناك عدة أسباب محتملة:

    1. في حال كانت سرعة الإنترنت لديك بطيئة، فقد يؤدي ذلك إلى حدوث تأخير في تحميل المحتوى على الصفحة في حال كان يتم تطبيق تقنية Lazy loading، مما قد يتسبب في حدوث lag أثناء الـ scroll.
    2. الصفحة كبيرة جدًا، مما يستغرق تحميلها وقتًا أطول.
    3. الصفحة تحتوي على الكثير من المحتوى الثقيل، مثل الصور أو مقاطع الفيديو.
    4.  إذا كان الخادم الذي يستضيف الصفحة يعاني من مشاكل، فقد يؤدي ذلك إلى حدوث lag في scroll.
    5.  المتصفح الخاص بك قديمًا أو به مشاكل.
    • شكرًا 1
  16. أنت تقصد بيئة العمل الافتراضية في بايثون وهي بيئة مستقلة تحتوي على نسخة من مفسر بايثون ومكتباتها، ونستخدمها لعزل مشاريع بايثون المختلفة عن بعضها البعض، مما يمنع حدوث تعارضات بين الحزم والبرمجيات المستخدمة في المشاريع المختلفة.

    تتمثل أهمية بيئة العمل الافتراضية في بايثون في الآتي:

    1. عزل كل مشروع بايثون عن المشاريع الأخرى، مما يمنع حدوث صراعات بين الحزم والبرمجيات المستخدمة في المشاريع المختلفة، فلو لدينا مشروعان يستخدمان نفس الحزمة، ولكن بإصدارات مختلفة، فقد يؤدي ذلك إلى حدوث خطأ عند تشغيل أحد المشروعين.
    2. الحفاظ على توافق المشاريع المختلفة مع بعضها البعض، ومع وجود مشروعان يستخدمان نفس الحزمة، ولكن بإصدارات مختلفة، فقد يحدث خطأ عند تشغيل المشروعين معًا.
    3. تُسهل بيئة العمل الافتراضية عملية إدارة المشاريع المختلفة من خلال إنشاء بيئة عمل افتراضية لكل مشروع، مما يسهل تثبيت الحزم والإعدادات المطلوبة للمشروع.

    وهناك venv و pipenv وهما أداتان تستخدمان لإنشاء بيئات عمل افتراضية في بايثون، وكلاهما يسمح لك بإنشاء بيئة مستقلة تحتوي على نسخة من مفسر بايثون ومكتباتها، وبالطبع هناك بعض الاختلافات الرئيسية بين الأداتين:

    venv (Python Virtual Environment):

    • venv هي أداة قياسية مدمجة في Python (متوفرة في إصدار Python 3.3 وما بعدها) تُستخدم لإنشاء بيئات افتراضية.
    • يتم إنشاء بيئة افتراضية باستخدام الأمر:
    python -m venv <اسم البيئة>

    وتفعيلها بواسطة تشغيل النص source <اسم البيئة>/bin/activate في أنظمة Linux/macOS أو venv\Scripts\activate في نظام Windows.

    pipenv

    • pipenv أداة تُستخدم لإدارة بيئات مشروع Python وتثبيت المكتبات المطلوبة بشكل أكثر تطورًا.
    • حيث تقوم pipenv بدمج مهام إنشاء بيئات افتراضية وإدارة ملفات الاعتماد (مثل Pipfile و Pipfile.lock) وتثبيت المكتبات باستخدام pip في واجهة واحدة.
    • تثبيت وتحديث الحزم تلقائيًا من مستودعات PyPI.
    •  إنشاء ملف requirements.txt الذي يسرد جميع الحزم المثبتة في البيئة الافتراضية، ويمكن استخدام هذا الملف لتثبيت نفس البيئة الافتراضية على جهاز آخر.

    لإنشاء بيئة pipenv، يجب تثبيت pipenv أولاً باستخدام أمر pip التالي:

    pip install pipenv

    بعد تثبيت pipenv، تستطيع إنشاء بيئة جديدة باستخدام الأمر التالي:

    pipenv install

    وسيؤدي الأمر إلى إنشاء بيئة عمل افتراضية جديدة في مجلد جديد باسم .venv في الدليل الحالي.

    لتنشيط البيئة الجديدة، استخدام الأمر التالي:

    pipenv shell

     

    • أعجبني 2
  17. عند إشتراك في أدورة في أكاديمية حسوب، تصبح قادر على الوصول للمسار الأول من جميع الدورات الأخرى.

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

    ثم عليك العود لدورة جافاسكريبت واستكمال دراسة لغة JS بجانب ما تعلمته من دورة تطوير واجهات المستخدم.

     

  18. لا يمكن ذلك، إما الظهور في جوجل أو إما لا، لكن تستطيع حجب الزوار من خلال الـ IP أو تحديد كود الدولة في htaccess الأمر الذي سيؤدي إلى ظهور نتائجك في ترتيب منخفض بسبب الحجب وإنخفاض مدة بقاء الزوار على موقعك.

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

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

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

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

     

    • أعجبني 1
  20. ذلك  لأن دالة cv2.imread() تتوقع اسم ملف نصي كوسيطة،  وأنتِ تمررين كائن args['images']، والذي هو قائمة من مسارات الصور.

    حاولي تحويل كائن args['images'] إلى سلسلة باستخدام الدالة str().

    import cv2
    from pathlib import Path
    import pafy
    import argparse
    import numpy as np
    
    
    classesf="yolov3.txt"
    weights="yolov3.weights"
    config="yolov3.cfg"
    scale=0.00392
    classes=None
    
    with open(classesf,'r') as f:
        classes=[line.strip() for line in f.readlines()]
    COLORS =np.random.uniform(0,255,size=(len(classes),3))
    net=cv2.dnn.readNet(weights,config)
    
    
      ############################################التعديل هنا لادخال الصور
    ap = argparse.ArgumentParser()
    ap.add_argument('-i', '--images',nargs='+', default=["sam.jpg"], 
                    help = 'path to input image')
    ap.add_argument('-c', '--config', default="yolov3.cfg",
                    help = 'path to yolo config file')
    ap.add_argument('-w', '--weights', default="yolov3.weights",
                    help = 'path to yolo pre-trained weights')
    ap.add_argument('-cl', '--classes', default="yolov3.txt",
                    help = 'path to text file containing class names')
    
    
    args =vars(ap.parse_args())
    
    for image_path in args['images']:
        image_path = str(image_path)
    
        # Call the video_detector() function
        video_detector(image_path)
    
        # Save the output image to a new file with a unique name
        output_image_path = "object-detection-" + image_path.split('.')[0] + ".jpg"
        cv2.imwrite(output_image_path, image)
    

     

  21. ما هو النظام الذي تستخدمه ويندوز أم ماك أو لينكس؟ وهل قمت بتثبيت بايثون بالإصدار الأخير 3.11؟ وهل قمت بإغلاق منفذ الأوامر ثم إعادة تشغيله والتجربة مرة أخرى؟

    أرجو إرفاق صورة للخطأ.

    وعلي أي حال على قم بتنفيذ الأمر التالي لتثبيت pip:

    python -m ensurepip --upgrade

     

     

  22. هناك أنواع مختلفة من الخوادم (سيرفرات) تستخدم لأغراض مختلفة في عالم تكنولوجيا المعلومات، والشائع منها هو التالي:

    1. Web Server (خادم الويب): هذا النوع من الخوادم يُستخدم لاستضافة وتقديم مواقع الويب وتطبيقات الويب، ويتيح للمستخدمين الوصول إلى ملفات HTML وCSS وJavaScript والموارد الأخرى عبر الإنترنت.
    2. File Server (خادم الملفات): يُستخدم لتخزين ومشاركة الملفات عبر الشبكة المحلية أو الإنترنت، وكأمثلة على تلك الخوادم تشمل خوادم NAS (Network-Attached Storage) وخوادم مشاركة الملفات.
    3. Database Server (خادم قواعد البيانات): يُستخدم لتخزين وإدارة قواعد البيانات، ويمكن أن يتضمن خوادم قواعد البيانات أنظمة مثل MySQL وOracle وMicrosoft SQL Server.
    4. Application Server (خادم التطبيقات): يتيح للتطبيقات تشغيل البرامج والخدمات الأساسية، ويُستخدم في تطبيقات الويب والأعمال المؤسسية.
    5. Mail Server (خادم البريد الإلكتروني): يُستخدم لإرسال واستقبال البريد الإلكتروني وتشمل خوادم SMTP وPOP3 وIMAP.
    6. DNS Server (خادم أسماء النطاقات): يُستخدم لتحويل أسماء النطاقات إلى عناوين IP والعكس، ويلعب دورًا حاسمًا في توجيه حركة المرور عبر الإنترنت.
    7. Proxy Server (خادم الوكيل): يُستخدم لوسيطة طلبات المستخدمين إلى الخوادم الأخرى على الإنترنت، ويمكن استخدامه للحفاظ على الأمان وتسريع الوصول إلى الموارد.
    8. Print Server (خادم الطباعة): يُستخدم لإدارة ومشاركة الطابعات عبر الشبكة وجعلها متاحة للمستخدمين في الشبكة.

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

    أي أن السيرفرات له عتاد متشابه من معالج وذاكرة عشوائية وسعة تخزين وخلافه، لكن النظام والبروتوكول الذي يتم تثبيته هو ما يجعل لكل خادم وظيفة مختلفة، ويمكن تثبيت أكثر من نظام على نفس السيرفر.

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

     

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