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

Mustafa Suleiman

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

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

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

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

    305

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

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

    الأمر بسيط، وهو سؤال مركز الدعم عن وجود إمكانية لذلك أم لا.

  2. في حال قراءة شروط الاستخدام الخاصة بمنصة مستقل ستجد الشرط التالي:

    عمر المستخدم أكبر من 18 سنة

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

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

    وتوثيق الهوية إلزامي في حال سحب أرباح تتجاوز 25$، أي في حال كانت الأرباح لم تتجاوز 25$ فلن يتم سؤالك عن توثيق الهوية.

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

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

    وستحتاج إلى حلقتين متداخلتين، الأولى للتحكم في عدد الأسطر، والثانية للتحكم في عدد النجوم في كل سطر.

    في الحلقة الخارجية، نقوم بتحديد عدد الأسطر التي نرغب في طباعتها (وليكن 5)، ثم نستخدم حلقة داخلية لطباعة النجوم في كل سطر.

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

     

  4. هل تقصدين تحويل كود مكتوب بالفعل إلى كود بلغة C؟

    عامًة يوجد حزمة Cython وهو مترجم يسمح لك بإضافة ملحق C إلى لغة Python، ويستطيع Cython تحويل كود Python إلى C/C++ نظرًا لأنه يمتلك امتدادًا للغة C، ولكن يتطلب بعض التعديلات اليدوية في الكود، لذلك هو غير مناسب للمشاريع الكبيرة.

    أيضًا يمكن تحويل كود Python إلى C++ باستخدام أداة تحويل البرمجيات المفتوحة المصدر والمسماة Transcryp، وباستطاعة تلك الحزمة تحويل كود Python إلى C++ باستخدام واجهة سطر الأوامر بسهولة.

    حزمة أخرى باسم Nukita عبارة عن مترجم فعال آخر يمكنه تحويل برنامج Python إلى C/C++ في غضون ثوانٍ قليلة بشكل أفضل مقارنةً بـ Cython و Transcrypt، ويمكن لذلك المترجم التعامل مع مجموعة واسعة من كود Python وتنفيذ التحويل بسهولة.

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

    دروس ومقالات لغة C في أكاديمية حسوب

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

    أما في جامعة القاهرة فيوجد الأقسام التالية:

    • علوم الحاسب.
    • نظم المعلومات.
    • تكنولوجيا المعلومات.
    • بحوث العمليات ودعم إتخاذ القرار.
    • الذكاء الاصطناعى

    وجامعة حلوان الأقسام التالية:

    • قسم علوم الحاسب
    • قسم نظم المعلومات
    • قسم تكنولوجيا المعلومات
  6. أنت تقصد في في جافاسكريبت، صحيح؟

     عامًة نستخدم"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" ثم اسم اللغة وستجد شروحات كثيرة.

     

    • شكرًا 1
  7. بتاريخ 30 دقائق مضت قال محمد خالد51:

    التعليم متوفر 

    اريد معرفة الخطوات  

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

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

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

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

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

  8. بالطبع تستطيع ذلك، حيث يوفر Godot واجهة برمجة تطبيقات مفتوحة المصدر تسمى GDNative تسمح لك بإنشاء ملحقات C++ لمشروع Godot، وبإمكانك استخدام هذه الملحقات لإضافة وظائف جديدة إلى المشروع، أو لتحسين الأداء، أو لتوفير إمكانية الوصول إلى وظائف النظام غير المتوفرة في GDScript.

    حيث أن اللغات المدعومة هي GDScript و C/C++ وC#.

    ولبدء استخدام C++ مع Godot في الإصدارات الأقدم من 4.0، ستحتاج إلى تثبيت مجموعة أدوات C++ ومكتبة GDNative، وبعد تثبيت هذه المكونات، يمكنك البدء في كتابة رمز C++ الخاص بك.

    أما بدايًة من الإصدار 4.0 تم إضافة GDExtension والتي تسمح لك بكتابة كود C++ مباشرًة، وستجد شرح وافي للغات التي يمكنك استخدامها هنا:

    وبخصوص مثال  عن GDExtension استخدام ستجده هنا في المستند الرسمي:

    وستحتاج إلى التالي:

    • 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.

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

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

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

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

    ببساطة، حدد ما تريده حقًا من خلال ورقة وقلم والمميزات والعيوب والوقت المتاح لك وظروفك المادية ثم اتخذ قرارك.

    • أعجبني 2
  10. أولاً أنت لا تقصد بالطبع القيام بإنشاء مؤسسة استضافة بالمعنى الحرفي، فذلك يتطلب بنية تحتية مكونة من سيرفرات وشبكات وفريق دعم فني وخلافه أي Data Center، وهو أمر مكلف في البداية وبحاجة إلى رأس مال.

    ولكن في البداية تستطيع الاستفادة  نموذج الـ Reseller (البائع الموزع) بدلاً من بناء شركة استضافة من الصفر، وفي نموذج الـ Reseller، تقوم بشراء خدمات استضافة من شركة استضافة كبيرة ومعتمدة، ثم تعيد بيع هذه الخدمات للعملاء الخاصين بك بسعر محدد.

    فيما يلي بعض المزايا والاعتبارات لنموذج الـ Reseller:

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

    وبخصوص تصميم المواقع، فتستطيع تعيين مصمم مواقع متخصص في الـ UI/UX من أجل تصميم المواقع الخاصة بالعملاء.

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

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

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

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

    وإليك بعض المكتبات على GitHub:

    أي أنه يمكنك الوصول للكود المصدري في حال كانت المكتبة مفتوحة المصدر، وستجدي رابط GitHub في الموقع الرسمي للمكتبة أو من خلال صفحة المكتبة على https://pypi.org حيث ستجدي رابط باسم Homepage أو Source.

    • شكرًا 1
  12. ستحتاج إلى استخدام حزمة (package) تسمى webview_flutter، وتتيح لك عرض صفحات الويب داخل تطبيقك بشكل مدمج كالتالي:

    أولاً عليك بتثبيت الحزمة  بفتح ملف pubspec.yaml في مشروع Flutter وأضف الحزمة التالية تحت قسم dependencies:

    dependencies:
      flutter:
        sdk: flutter
      webview_flutter: ^4.0.0

    ضمن ملف الكود الخاص بالشاشة التي ترغب في استخدام الـ WebView بها، عليك بإضافة استيراد للحزمة:

    import 'package:flutter/material.dart';
    import 'package:webview_flutter/webview_flutter.dart';

     الآن استخدام ويدجت (Widget) WebView لعرض الصفحة من الموقع الخارجي:

    class ExternalLoginPage extends StatelessWidget {
      final String externalLoginUrl = "https://example.com/login"; // رابط صفحة الدخول الخارجية
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('External Login Page'),
          ),
          body: WebView(
            initialUrl: externalLoginUrl,
            javascriptMode: JavascriptMode.unrestricted,
            onPageFinished: (String url) {
              // هذا الدالة ستتم استدعائها عندما يتم تحميل الصفحة بالكامل
            },
          ),
        );
      }
    }

    بعد لذلك نأتي للعودة من الصفحة الخارجية بعد الانتهاء من عملية تسجيل الدخول، ونستخدم الملاحظات (pop) بواسطة Navigator للعودة إلى الشاشة السابقة، وعند العودة إلى الشاشة السابقة، تستطيع حفظ بيانات الدخول في حالة الحاجة لاستخدامها في التطبيق.

    ولحفظ بيانات الدخول في التطبيق بحيث لا يتطلب منك تسجيل الدخول في كل مرة، اعتمد على الحزمة المحلية (local storage) مثل shared_preferences لتخزين بيانات صغيرة مثل الاسم والحالة المسجلة.

    وقم بتثبيت حزمة shared_preferences عبر ملف pubspec.yaml:

    dependencies:
      flutter:
        sdk: flutter
      webview_flutter: ^4.0.0
      shared_preferences: ^2.0.0

    ثم استخدمها لحفظ بيانات الدخول في التطبيق. عندما تعود من صفحة الدخول الخارجية وتقرر الاحتفاظ بالمعلومات المسجلة،  بحفظها في الـ shared_preferences:

    import 'package:flutter/material.dart';
    import 'package:webview_flutter/webview_flutter.dart';
    import 'package:shared_preferences/shared_preferences.dart';
    
    class ExternalLoginPage extends StatelessWidget {
      final String externalLoginUrl = "https://example.com/login"; // رابط صفحة الدخول الخارجية
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('External Login Page'),
          ),
          body: WebView(
            initialUrl: externalLoginUrl,
            javascriptMode: JavascriptMode.unrestricted,
            onPageFinished: (String url) {
              // هذا الدالة ستتم استدعائها عندما يتم تحميل الصفحة بالكامل
              // هنا يمكنك التحقق من الصفحة التي تم تحميلها واستخدامها لحفظ البيانات المطلوبة
              if (url == externalLoginUrl) {
                // هنا يمكنك استخدام الـ SharedPreferences لحفظ بيانات الدخول
                saveLoginData("John Doe"); // افترضنا أن الاسم هو "John Doe"
                // بعد حفظ البيانات، قم بالعودة إلى الشاشة السابقة
                Navigator.pop(context);
              }
            },
          ),
        );
      }
    
      void saveLoginData(String username) async {
        SharedPreferences prefs = await SharedPreferences.getInstance();
        prefs.setString('username', username);
        // يمكنك هنا حفظ المزيد من البيانات مثل كلمة المرور إن لزم الأمر
      }
    }

    وعند الحاجة إلى بيانات الدخول مرة أخرى، بإمكانك استرجاعها من shared_preferences بدون الحاجة لتسجيل الدخول كل مرة:

    void getLoginData() async {
      SharedPreferences prefs = await SharedPreferences.getInstance();
      String username = prefs.getString('username');
      // يمكنك استخدام الاسم المحفوظ هنا بشكل طبيعي في التطبيق
    }

     

  13. ما الفائدة من الشرط التالي:

    if (button.className === 'crash-btn crash-betbtn crash-betbtn--stop') 
    });

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

    وأيضًا بخصوص الشرط في الكود التالي:

    if (button.className === 'crash-gamemountains.crash-gamemountains--game' && button.className !== 'crash-game__mountains')

    يحتوي على اختبارين، أولاً يتحقق من اسم الفئة الأولى، ثم يتحقق مرة أخرى من الفئة الأولى دون الفئة الثانية، فهل المراد هو التحقق من عدم تكرار الفئة الثانية في الفئة الأولى؟ حيث أن الكود الحالي غير مناسب لذلك.

    وربما تحدث مشكلة  بسبب تتعيين قيمة textContent لزر الرهان (Bet)، فإذا كانت الفئة المستهدفة غير موجودة على الصفحة فسيؤدي ذلك إلى خطأ.

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

    ولمساعدتك أنصحك بالإطلاع على المقالات التالية:

    ثم نأتي لخطوة استلهام التصميم، والتي تتطلب تغذية بصرية لإختيار أشكال الأقسام في موقعك من عدة تصاميم مختلفة أي تجميع التصميم من خلال عدة تصاميمـ، وقد تصادف تصميم مناسب للفكرة التي تريد تنفيذها ولا مشكلة في ذلك لكن حاول التعديل عليه قليلاً أو ذكر أنك لم تقم بتصميم الجزء الخاص بالـ UI/UX بل كتبت الكود فقط لحفظ الحقوق، وستجد مواقع كثيرة لاستلهام التصميم هنا:

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

    والموقع التالي أيضًا:

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

    وستجد معلومات مفيدة هنا أيضًا:

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

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

    أولاً أنت بحاجة إلى حل المشروع في لغة C++ واستخدام طريقة التكرار (iteration) لتنفيذ خوارزميات الترتيب المختلفة (Insertion sort، Merge sort، Quick sort، Counting Sort) على المجموعات المختلفة من البيانات، وسنقوم بالتالي:

    1- عليك بتعريف خوارزميات الترتيب المختلفة المطلوب استخدامها (Insertion sort، Merge sort، Quick sort، Counting Sort)، فقم بتنفيذ كل خوارزمية بطريقة التكرار (iteration) بحيث تقوم بفرز المجموعات العشوائية.

    2- إنشاء دوال لتوليد البيانات العشوائية (random data)، البيانات المرتبة (sorted data) والبيانات المرتبة بالترتيب العكسي (reverse-sorted data) بناءً على الحجم الذي يدخله المستخدم.

    3- اسأل المستخدم لكل مجموعة عن حجمها (عدد العناصر التي يرغب في توليدها).

    4- لكل مجموعة من البيانات (random data، sorted data، reverse-sorted data)، قم بتنفيذ كل خوارزمية وقياس الوقت الذي استغرقه الفرز باستخدام دالة قياس الوقت مثل clock().

    5- تسجيل نتائج قياس الوقت لكل مجموعة بيانات ولكل خوارزمية في ملف إكسل (Excel sheet). يمكنك استخدام مكتبة خارجية مثل "libxl" لكتابة البيانات في ملف Excel.

    6- استخدم Excel tools لرسم النتائج المسجلة على شكل رسوم بيانية، برسم ثلاثة مخططات بيانية منفصلة لكل مجموعة من البيانات (random data، sorted data، reverse-sorted data) تُظهِر أداء كل خوارزمية بحسب حجم المجموعة.

    وبالطبع تستطيع مكتبات خارجية لتسهيل بعض الأمور مثل الرسم البياني وكتابة البيانات في ملف Excel (مثل matplotlib لـ C++ أو gnuplot) لتجسيد النتائج بدلاً من استخدام Excel إذا كان الأمر ممكنًا، ولكن المطلوب الأساسي هو تنفيذ خوارزميات الترتيب بطريقة التكرار وقياس الوقت الذي تستغرقه هذه الخوارزميات على المجموعات المختلفة من البيانات.

     

  16. أفضل بيئة ولغة هي بيئة العمل واللغة التي لديك خبرة بها، فأنت مثلاً مطور MERN بالتالي أنت على دراية ببيئة Node.js.

    ,بيئة Node.js ممتازة من أجل ذلك الغرض مع واستخدام مكتبات خارجية متخصصة للتعامل مع الصور والفيديوهات، مثل sharp لمعالجة الصور و ffmpeg لمعالجة مقاطع الفيديو، وتستطيع العثور على العديد من المكتبات الأخرى المتاحة حسب احتياجات مشروعك.

    وإذا أردت ترشيحات أخرى فهناك Python مع مكتبات مثل Django أو Flask واستخدام مكتبات مثل Pillow لمعالجة الصور و MoviePy لمعالجة الفيديوهات.

    يوجد أيضًا PHP مع Laravel Framework مع الإعتماد على مكتبات مثل Intervention Image لمعالجة الصور و FFMpeg للتعامل مع ملفات الفيديو وتلك المكتبة تسمح لك بقص، دمج، تحويل الصيغ، وتطبيق تأثيرات وفلاتر على مقاطع الفيديو.

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

    وتستخدم يوتيوب مجموعة متنوعة من الأنظمة الأساسية لمعالجة الصور والفيديوهات ، تشمل kubernetes و tensorflow، بينما تستخدم انستجرام أيضًا مجموعة متنوعة من الأنظمة الأساسية ، بما في ذلك kafka و elasticsearch.

    وتعتمد كل من يوتيوب وانستجرام أيضًا مجموعة متنوعة من الإطارات لمعالجة الصور والفيديوهات، بما في ذلك OpenCV و FFmpeg.

    ومن المهم أن نفهم أنه عند التعامل مع الصور والفيديوهات، لا تكون اللغة أو البيئة وحدها المسؤولة عن الأداء، بل تعتمد على المكتبات المستخدمة والحالة الخاصة للمشروع.

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

    وبالنسبة للدوال والـ methods المختلفة، فعليك بفهمها ثم حفظها في البداية ثم التطبيق، وبعد ذلك تستطيع البحث في حال نسيت أمرًا ما.

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

    • القوائم (Lists)
    • الصفوف (Tuples)
    • القواميس (Dictionaries)
    • المجموعات (Sets)
    • الفئات (Classes)

    وبالنسبة للخوارزميات فهى:

    • الحلقات (Loops)
    • الدوال (Functions)
    • التعبيرات النمطية (Regular Expressions)

    وغيرها من الخوارزميات الأساسية في بايثون.

    أما بعد ذلك كما أخبرتك، ستحتاج إلى تعلم الخوارزميات المتقدمة لتطوير مهاراتك البرمجية كالتالي:

    1. البحث الثنائي (Binary Search): خوارزمية فعالة تستخدم للبحث عن عنصر معين في قائمة مرتبة بسرعة.
    2. فرز القائمة (Sorting Algorithms): مجموعة من الخوارزميات التي تستخدم لترتيب البيانات في قوائم بترتيب محدد، مثل فرز الدمج (Merge Sort) وفرز السريع (Quick Sort).
    3. البحث الخطي (Linear Search): بحث بسيط يتم فيه فحص كل عنصر في القائمة للعثور على القيمة المطلوبة.
    4. القوائم المرتبة (Linked Lists): هيكل بيانات يتيح لك تخزين عناصر بطريقة مرتبة وربطها ببعضها البعض.
    5. المكدس (Stack): هيكل بيانات يعمل بنظام "الLast-In-First-Out" ويستخدم عادة في تتبع التاريخ المحدود وتنفيذ الدوال التابعة.
    6. الطابور (Queue): هيكل بيانات يعمل بنظام "First-In-First-Out" ويستخدم عادة في تنفيذ العمليات بترتيب الوقت.
    7. القوائم المرتبة ذات الاتجاهين (Doubly Linked Lists): نوع من القوائم المرتبة يحتوي على روابط في الاتجاهين، مما يسمح بالوصول إلى العناصر بسهولة من البداية والنهاية.
    8. خوارزمية البحث العميق (Depth-First Search): تستخدم للتنقل عبر الأشجار والرسم البياني بطريقة عميقة قبل التحرك إلى المستوى التالي.
    9. خوارزمية البحث العرضي (Breadth-First Search): تستخدم للتنقل عبر الأشجار والرسم البياني بطريقة أفقية بدءًا من الجذر.

    وأيضًا يوجد كتب جيدة أنصحك بقراءتها تم ذكرها هنا:

     

    • أعجبني 1
  18. تأكد من أن الحزمة Law. status موجودة بشكل صحيح في ملف  google-services.json حيث يجب كتابة اسم الحزمة بنفس الاسم في applicationId في gradle ، وكمثال:

    "client_info": {
            "mobilesdk_app_id": "1:23978655351:android:2b2fece6b961cc70",
            "android_client_info": {
              "package_name": "in.ac.geu.debug"
            }
          },

    هنا يجب أن تطابق اسم الحزمة مع applicationId في gradle كالتالي:

    defaultConfig {
            applicationId "in.ac.geu.debug" //اكتب اسم الحزمة الصحيح هنا
            minSdkVersion 23
            targetSdkVersion 26
            versionCode 7
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        }

     

  19. الموقع جيد، لكن عليك بتحسين جزء الـ Hero (أول قسم في الموقع) بحيث يتم جذب إنتباه من يستعرض موقعك الشخصي لأول مرة، وأيضًا لعرض معلومات كافية عنك، فالإنطباع الأول هام جدًا وكل ما يتم رؤيته عند زيارة الموقع هو اسمك وتخصصك لكن لا وجود لأي إشارة إلى أن هناك أجزاء أخرى من الموقع، لذلك حاول تحسين ذلك الجزء.

    وإليك بعض الأمثلة:

    EJuSqnFU8AAqOSg.jpg.fd2b776e8d5919a19897a2ea4100983f.jpg

    265855fd3b324e682eba447718d0d6bb.png.aaa3089585af5c460f5a8557de46bbe4.png

    maxresdefault.thumb.jpg.72f3947e644e34610de635b1c4093dda.jpg

    أيضًأ حاول وضع روابط GitHub وLinkedIn أي الروابط الخاصة بالبرمجو تجنب وضع شهادات أو روابط في غير مجالك.

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

     

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

    • نوع القالب الذي تختاره
    • عدد الميزات التي تريد إضافتها إلى موقعك
    • مستوى الدعم الذي تحتاجه

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

    وفيما يلي بعض العوامل التي تؤثر على تكلفة إنشاء متجر إلكتروني أو موقع ويب ووردبريس:

    • هناك العديد من القوالب المختلفة المتاحة لـ ووردبريس، وبعضها مجاني والبعض الآخر مدفوع، وتختلف تكلفة القوالب المدفوعة من 50 دولارًا إلى 1000 دولار أو أكثر.
    • بإمكانك إضافة العديد من الميزات إلى موقع ووردبريس الخاص بك، مثل ميزات التجارة الإلكترونية وميزات التسويق عبر البريد الإلكتروني وميزات الأمان، وتختلف تكلفة تلك الميزات من مزود لآخر.
    • في حال أنك غير خبير في ووردبريس، فستحتاج إلى الحصول على دعم من مطور ويب، وتختلف تكلفة الدعم من مطور لآخر.

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

    • قم بإضافة الميزات التي تحتاجها فقط، فأنت لا تحتاج إلى إضافة جميع الميزات المتاحة إلى موقع ووردبريس في باديء الأمر، فقط بإضافة الميزات التي تحتاجها بالفعل.
    • البدء في تعلم مجال البرمجة من خلال تعلم PHP ولارافيل ووردبريس ثم إنشاء مشروعك الخاص وفي أكاديمية حسوب يوجد دورة تطوير تطبيقات الويب باستخدام لغة PHP.
  21. بالفعل هي مشكلة قائمة حاليًا في webdriver_manager 

    حاول تمرير إصدار المتصفح كالتالي في حال أنك تستخدم selenium 4 :

    from selenium import webdriver
    from selenium.webdriver.chrome.service import Service as ChromeService
    from webdriver_manager.chrome import ChromeDriverManager
    
    driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager(version="115.0.5790").install()))

    وفي حال استمرت المشكلة، فالسبب هو Selenium Manager تم تضمينه في selenium  الإصدار 4.10.0 وكل ما أنت بحاجة إليه الآن هو كتابة الكود كالتالي:

    from selenium import webdriver
    from selenium.webdriver.chrome.service import Service
    
    service = Service()
    options = webdriver.ChromeOptions()
    driver = webdriver.Chrome(service=service, options=options)

    وفي حال لم يتم العثور على الـ driver  في الـ PATH فسيقوم Selenium Manager بتحميله تلقائيًا.

  22. أولاً ما قمت بتنفيذه هو جانب الواجهة الأمامية Front-End وهو الجانب الخاص بعرض البيانات الواردة من الخادم أو من أي API خارجي والذي بدوره يعمل على واجهة خلفية Back-End، ولتفعيل خواص الموقع أنت بحاجة إلى برمجة واجهة خلفية أو استخدام واجهة API من طرف ثالث مثل بوابة دفع معتمدة وآمنة تسمح للعملاء بإجراء عمليات الشراء عبر الإنترنت، وبوابات الدفع تتيح التحقق من بطاقات الائتمان أو الحسابات المصرفية وتنفيذ العمليات المالية بشكل آمن. بعض أمثلة على بوابات الدفع هي PayPal وStripe و2Checkout.

    وأنت في دورة تطوير واجهات المستخدم ستتعلم فقط تطوير الواجهة الأمامية وليس الخلفية، وليس عليك تعلم الواجهة الخلفية لتفعيل ميزة الشراء فكما أخبرتك هناك منصات جاهزة توفر لك API لذلك، لكن في حال أردت إضافة ميزات أخرى فقد تحتاج إلى تطوير الواجهة الخلفية من خلال node.js أو PHP وغيرهم مما يعني أنك ستصبح Full-stack developer.

     

  23. في حال أنك من مصر وتستخدم cdn من jsdelivr ووجدت أخطاء في الكونسول بخصوص المكتبات، فعليك بتعديل روابط المكتبات من cdn.jsdelivr إلى fastly.jsdelivr وفي حال استمرت المشكلة فعليك بتفقد الأخطاء التي تظهر لك في الكونسول.

    وأيضًا حاول حذف الملفات والإعدادات المؤقتة من خلال الأمر التالي:

    php artisan optimize:clear

    ثم تحزيم المشروع من خلال تشغيل الأمر:

    npm run dev

    وتأكد من أن عملية التحزيم تتم بشكل سليم.

     

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

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

×
×
  • أضف...