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

Mustafa Suleiman

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

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

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

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

    303

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

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

    بالنسبة للمشكلة لديك أنت تحاول عرض مسار غير موجود بالمسارات لديك في المشروع، فالمسارات الموجودة لديك هي admin وmyapp، لذا عليك زيارة الرابط التالي:

    http://127.0.0.1:8000/myapp

     

    • أعجبني 1
  2. أولاً أنت تحاول استخدام مكتبة مخصصة لتوزيعة Debian 9, 64 bits على نظام ويندوز، لذا عليك استخدام توزيعة Debian 9 أو أعلى ثم اتباع خطوات الاستخدام وهي كالتالي:

    الإتصال بسيرفر ssh:

    ssh root@163.202.62.11

    ثم الحصول على صلاحيات الروت:

    su

    تثبيت rsync:

    apt-get install rsync

    ثم افتح نافذة تيرمنال جديدة ونفذ الأوامر التالية:

    git clone https://github.com/lefdilia/Axabot.git && cd "$(basename "$_" .git)/_init"

    ثم:

    npm install

    و

    npm start

    بعد ذلك عليك اختر خيار 1 كما فعلت أنت من أجل تثبيت سيرفر جديد.

     

  3. للتأهل لدخول الإختبار، يجب إنهاء 4 مسارات على الأقل وتسليم التطبيقات العملية الخاصة بهم، وسيتم سؤالك في تلك المسارات فقط.

    في حال تم الإنتهاء منه وترين أنك مستعدة للإختبار أرجو منك التحدث لمركز المساعدة وإخبارهم أنك تريدين خوض الإختبار الخاص بدورة (ذكر الدورة التي تريدين الإختبار بها).

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

    وذلك بدلاً من استخدام Bootsrap والمكونات الجاهزة والأشبه برص القوالب ، بينما Tawilwind يُتيح لك تنسيق الواجهة لديك كما تريد من خلال كلاسات.

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

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

    وبالطبع تعلم بوتستراب أسهل من Tailwind لكن ستتمكن من فعل المزيد من خلال Tailwind.

    لكن طالما أنك تريد التخصص في مجال الواجهة الأمامية فيجب إتقان CSS قبل استخدام تلك المكتبات.

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

     

    • شكرًا 1
  5. ما تقصده هي الشركة التالية  swsg.co صحيح؟ هل ستتعامل معها في تجارة أو ما شابه؟

    عامًة الشركة تعمل كموزع للجهزة المنزلية والإلكترونيات في السعودية وتم تأسيسها منذ 1982 لذا هي شركة قديمة جدًا ولها سمعتها.

  6. بتاريخ 8 دقائق مضت قال حوراء فتحي:

    يظهر لي في التطبيق عندما افتحه 

    بدأ بالظهور عندما قمت بتغيير شركه الاستضافة 

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

    • أعجبني 1
  7. الأمر يؤدي إلى عدة مشاكل منها:

    1- عدم تكامل البيانات (Data Integrity)، فالهدف من مفاتيح الخارجية هو ضمان تكامل البيانات بين الجداول المرتبطة، وعند قيامك بتعيين أحد العمودين في المفتاح الخارجي بقيمة فارغة ، فذلك يعني أن القيمة المقابلة في العمود المرتبط مفقودة، وبالتي يؤدي إلى عدم دقة البيانات أو حتى إلى فقدان البيانات.

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

    2- صعوبة الاستعلام عن البيانات (Data Querying) عندما تريد العثور على جميع السجلات في جدول يكون فيها عمود المفتاح الخارجي فارغًا، فلو لديك جدولًا يسمى "المنتجات" يحتوي على عمود "مزود" هو مفتاح خارجي يشير إلى جدول "الموردين، وقمت بإدخال سجل جديد في جدول المنتجات مع قيمة فارغة في العمود "مزود"، فالنتيجة هي أن المنتج غير مرتبط بأي مورد. إذا كنت تريد العثور على جميع المنتجات التي لا ترتبط بأي مورد، وسيصعب القيام بذلك لأنك لا تستطيع استخدام المفتاح الخارجي للتصفية على البيانات.

    3- صعوبة معالجة البيانات (Data Processing)، ففي حال يوجد جدول باسم "الطلبات" يحتوي على عمود "رقم المنتج" هو مفتاح خارجي يشير إلى جدول "المنتجات"، فعند إدخال سجل جديد في جدول الطلبات مع قيمة فارغة في العمود "رقم المنتج"، أي أن الطلب غير مرتبط بأي منتج. إذا كنت تريد حساب إجمالي قيمة جميع الطلبات التي تم تقديمها لنفس المنتج، وبالتالي من الصعب القيام بذلك لأنك لا تستطيع استخدام المفتاح الخارجي للتصفية على البيانات.

  8. بتاريخ 1 ساعة قال Rol Ian:

    هل من الممكن أن تذكر لي مثال لكل صفحة أي اسم الصفحة 

    بإمكانك تسمية الصفحات بأي اسم مناسب، وللتوضيح:

    a. صفحة إدخال البيانات:

    • اسم الصفحة: "AddProductFlightVisitorPage"
    • صفحة الإضافة للمنتج: "/add-product"
    • صفحة الإضافة للرحلة: "/add-flight"
    • صفحة الإضافة للزائر: "/add-visitor"

    b. صفحة الاختيار:

    • اسم الصفحة: "ChooseOptionPage"
    • تستطيع بها إضافة روابط أو صور أو أسماء.

    c. صفحة الاختيار المحدد والبيانات الديناميكية:

    • اسم الصفحة: "SelectedOptionDetailsPage"
    • الرابط بعد الاختيار: "/selected-option-details"

    d. صفحة النتيجة لاختيار فردي:

    • اسم الصفحة: "SingleRecordResultPage"
    • الرابط: "/single-record-result"

    e. صفحة النتيجة لاستعلام اختيار وعرض عدة سجلات:

    • اسم الصفحة: "MultipleRecordsDynamicTablePage"
    • الرابط: "/multiple-records-dynamic-table"

    f. صفحة النتيجة لاستعلام اختيار وعرض عدة سجلات بعدد محدد لكل صفحة:

    • اسم الصفحة: "PagedRecordsDisplayPage"
    • الرابط: "/paged-records-display"

    g. صفحات إضافية:

    • نقوم بتسمية الصفحات الإضافية عند الحاجة بنفس الكيفية
  9. حاول تنفيذ التالي:

    SELECT
        VIEW_DEFINITION
    FROM
        information_schema.views
    WHERE
        view_name = 'show_projects_adm';

    وإن استمرت المشكلة واسم العمود لا يزال يسبب مشكلة،  استخدم الاستعلام التالي للحصول على جميع الأعمدة المتاحة في الجدول information_schema.views:

    DESCRIBE information_schema.views;

    ومن ثمّ، ابحث عن اسم العمود الذي يحتوي على تعريف الـ View واستخدمه في الاستعلام الذي كنا نحاول تنفيذه.

  10. بتاريخ 16 دقائق مضت قال Hisham Yusuf:

    بعد ما اكتب الامر hello كيف يتفذ الامر بضغط ماذا  

    يقول يحفظ التغيرات وينتقل لي صفحه ثانيه كيف

     

    في الدقيقة 6 

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

    ونضع الأسئلة العامة هنا في قسم أسئلة البرمجة.

  11. بالفعل الدالة recognize_google غير متوفرة في مكتبة speech_recognition وكانت متوفرة في الإصدارات السابقة من المكتبة، ولكن تم إزالتها في الإصدار 3.8.0.

    ووفقًا لمستندات المكتبة، Google قد قامت بتغيير سياسة الوصول إلى API الخاصة بها، مما جعل من الصعب على مطوري البرامج استخدامها، ونتيجة لذلك، قرر مطورو مكتبة speech_recognition إزالة الدالة recognize_google لمنع المستخدمين من مواجهة مشاكل.

    وطالما أنك تريد استخدام الـ API الخاصة بـ Google Speech Recognition، فتستطيع فعل ذلك مباشرة من خلال موقع Google Cloud Platform. ولكن ستحتاج إلى إنشاء حساب ودفع رسوم مقابل استخدام API او الحصول على التجربة المجانية بقيمة 300 دولار لمدة 90 يوم وذلك في حال التسجيل لأول مرة.

    هناك خيار آخر وهو استخدام مكتبة أخرى تدعم API الخاصة بـ Google Speech Recognition، ويتوفر العديد من المكتبات مثل pyaudio وgoogle-cloud-speech.

    • أعجبني 1
  12. هي ليست لغة بل مكتبة مبنية على لغة جافاسكريبت من أجل التلاعب بالواجهة الأمامية أي تسهيل تلك العملية فقديمًا كان الأمر صعب من خلال لغة جافاسكريبت والأمر كان بحاجة إلى كتابة كود معقد.

    أما حاليًا أصبح الأمر أسهل وتطورت لغة جافاسكريبت وأصبح بها الكثير من المزايا الموجودة في jQuery،  وبالأخص بدايًة من تحديث ES6 في عام 2016.

    لكن الواجهات الأمامية تطورت أيضًا واًصبح هناك حاجة مُلحة لوجود مكتبة إو طار متطور للواجهة الأمامية وتم تطوير Angular وReact من أجل ذلك ثم ظهر Vue.js وغيرهم.

    لكن ما سبب وجود jQuery حتى الآن؟

    السبب هو أن نسبة كبيرة جدًا من المواقع كانت تستخدم jQuery وما زالت تستخدمها حتى الآن لذلك يجب الإعتياد على استخدام تلك المكتبة لكونك ستواجهها أُثناء العمل على مشاريع تم تطويرها سابقًا.

    فوفقًا لموقع w3techs يتم استخدامها في 77.3% من المواقع حاليًا.

    وحاليًا يجب تعلم مكتبات وأُطر العمل الحديثة مثل React (يتم تدريسها بالأكاديمية) وVue.js وAngular.js.

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

    وتصنف العلاقات في Django إلى ثلاثة أنواع رئيسية:

    • علاقات واحد إلى واحد (One-to-One Relationships)
    • علاقات واحد إلى كثير (One-to-Many Relationships)
    • علاقات كثير إلى كثير (Many-to-Many Relationships)

    علاقات واحد إلى واحد (One-to-One Relationships)

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

    لنفترض أن لدينا نموذجين: Person و IdentityCard، ونريد أن نربط كل شخص ببطاقة هوية واحدة فقط، وكل بطاقة هوية بشخص واحد فقط.

    # models.py
    
    class Person(models.Model):
        name = models.CharField(max_length=255)
        identity_card = models.OneToOneField(
            'IdentityCard', on_delete=models.CASCADE)
    
    class IdentityCard(models.Model):
        number = models.CharField(max_length=10)

    هنا نستخدم حقل OneToOneField لربط الكائنين. يُحدد الحقل on_delete ما يجب القيام به بالكائن المرتبط عندما يتم حذف الكائن الرئيسي، ونريد حذف الكائن المرتبط أيضًا، لذلك نستخدم on_delete=models.CASCADE.

    علاقات واحد إلى كثير (One-to-Many Relationships)

    تتيح لنا ربط كل كائن من كائن واحد بالعديد من الكائنات من كائن آخر، مثلاً لدى كل مدرس العديد من الطلاب، ولكن يمكن أن يكون لدى كل طالب مدرس واحد فقط.

    ولنفترض أن لدينا نموذجين هما Teacher و Student، ونريد أن نربط كل مدرس بالعديد من الطلاب، وكل طالب بمدرس واحد فقط.

    # models.py
    
    class Teacher(models.Model):
        name = models.CharField(max_length=255)
        students = models.ManyToManyField(
            'Student', through='Enrollment')
    
    class Student(models.Model):
        name = models.CharField(max_length=255)

     نعتمد على حقل ManyToManyField لربط الكائنين، ويُستخدم حقل through لتحديد جدول وسيط يربط الكائنين هو Enrollment.

    علاقات كثير إلى كثير (Many-to-Many Relationships)

    يرتبط كل كائن من كائنين بالعديد من الكائنات من الكائن الآخر، مثل أن يكون لدى كل كتاب العديد من المؤلفين، ويمكن أن يكون لدى كل مؤلف العديد من الكتب.

    ولنفترض أن لدينا نموذجين Book و Author، ونريد أن نربط كل كتاب بالعديد من المؤلفين، وكل مؤلف بالعديد من الكتب.

    # models.py
    
    class Book(models.Model):
        title = models.CharField(max_length=255)
        authors = models.ManyToManyField(
            'Author', through='BookAuthor')
    
    class Author(models.Model):
        name = models.CharField(max_length=255)

    لاحظ حقل ManyToManyField لربط الكائنين، ويُستخدم حقل through لتحديد جدول وسيط يربط الكائنين يسمى BookAuthor.

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

    وإن لم تستطيع تحديد المجال تعلم مجال الويب وستستفيد بما تعلمته في المجالات الأخرى وستجد تفصيل أكثر هنا:

     

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

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

  16. تستطيع استخدام iOS Simulator، ولكن من الأفضل شراء أيفون مستعمل من أجل إختبار التطبيق عليه، ويمكنك شراء  iPhone 6s بتكلفة زهيدة، وإن لم تستطع يمكنك استخدام المحاكيات لإختبار التطبيق لكن العديد من المزايا غير متوفرة بها وتتوفر فقط في الأيفون.

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

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

    أما في حال إمتلاكك MacBook تستطيع الاستغناء عن الأيفون وستتمكن من تطوير تطبيقك من خلال محرر Xcode الخاص بآبل.

    وبالطبع ستحتاج إلى تعلم لغة Swift لكونها اللغة الخاصة بنظام iOS.

    وبالنسبة لـ Flutter فيوجد طلب عليه حاليًا وكلا المجالين مطلوبان، لكن تعلم Flutter أسهل ومتطلبات دخول المجال أسهل من iOS لذا من الأفضل تعلم ذلك الإطار وستتمكن من تطوير تطبيقات لنظامي الأندرويد وiOS معًا.

    • أعجبني 1
  17. أول دالة هي:

    1- loadtxt

    وتستخدم لقراءة البيانات من ملف نصي سواء الملف بتنسيق CSV أو تنسيق TSV أو تنسيق آخر، وتسقبل الدالة loadtxt() اسم الملف كوسيط أول، وتستقبل أيضًا معلمات أخرى لتحديد تنسيق الملف ونوع البيانات.

    2- fromfile

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

    3- genfromtxt

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

  18. بتاريخ 18 دقائق مضت قال Kayo Mikami:

    @Adnane Kadri

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

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

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

    ويمكنك تقسيم تلك المشاريع في مجلدات داخل مجلد واحد باسم الدورة ثم رفع ذلك المجلد على GitHub.

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

     

    • شكرًا 1
  19. بتاريخ 2 ساعة قال يوسف شهبي:

    شكراا لكم  الان اتضحت لي الامور ،لدي فقط بعض الاستفسارات :

    1: هل تنصحون بدورة cs50  ؟هل يمكنني ترك  اساسيات البرمجة الى ما بعد الدورة او دراستها تزامنا مع الدورة؟

    2:وبالنسبة للمدة التي ذكرتها (>>ايجاد فرصة عمل في المانيا مع نهاية هده الدورة وفي نهاية هده السنة<<)، هل ترون انها كافية؟

     

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

    وبالنسبة لفرص العمل في الشركات في حال كنت تدرس HTML, CSS,JS فتلك هي الأساسيات فقط، وأنت بحاجة إلى دراسة مكتبة مثل React أو إطار للواجهة الأمامية مثل Vue.js أو Angular، والأكثر طلبًا هو React وبالطبع يُفضل تعلم Next.js معها فهناك بعض الوظائف تطلب ذلك، وأيضًا إطار Angular.js عليه طلب أيضًا بالشركات وستجد تفصيل أكثر هنا:

     

×
×
  • أضف...