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

Mustafa Suleiman

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

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

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

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

    305

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

  1. لتتمكنين من معالجة أكثر من صورة مدخلة وحفظها، عليك إجراء التغييرات التالية:

    1. في حلقة for image_path in args['images']:، عليك إنشاء كائن image جديد لكل مسار صورة.
    2. بعد استدعاء دالة video_detector()، قومي بحفظ الصورة الناتجة إلى ملف جديد باسم فريد باستخدام متغير image_path لإنشاء اسم فريد لكل صورة ناتجة.
    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 = cv2.imread(image_path)
    
        # Call the video_detector() function
        video_detector(image)
    
        # 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)
    

    وما قمت به هو:

    • إنشاء حلقة for لمعالجة كل صورة مدخلة.
    • إنشاء كائن image جديد لكل صورة مدخلة.
    • استدعاء دالة video_detector() لمعالجة الصورة الحالية.
    • حفظ الصورة الناتجة إلى ملف جديد باسم فريد.

    لإنشاء اسم فريد للصورة الناتجة، قمت باستخدام متغير image_path لفصل اسم الصورة عن امتدادها ثم قمت بإضافة بادئة "object-detection-" إلى اسم الصورة الأساسي.

    والآن ما عليك سوى تمرير مسارات الصور المدخلة كوسائط إلى البرنامج، أي لمعالجة الصور sam.jpg و cat.jpg، ستقومين بتشغيل الأمر التالي:

    python object_detection.py -i sam.jpg cat.jpg

    وذلك من أجل إنشاء صورتين، object-detection-sam.jpg و object-detection-cat.jpg، والتي ستحتوي على الكائنات المكتشفة في كل صورة.

    • أعجبني 1
  2. بتاريخ الآن قال محمد الرزوق:

    بعد رفع المشروع على GitHup 

    كيف اشاركها مع العميل 

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

    https://github.com/ اسم المستخدم/repoName.git

    مثال حقيقي:

    https://github.com/HsoubAcademy/odoo

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

    أما في حال كان المستودع Private أي متاح لك أنت فقط، فعليك إضافة العميل إلى المستودع كمشارك أو مساهم collaborator من خلال التوجه للمستودع ثم الضغط على settings كالتالي:

    repo-actions-settings.thumb.jpg.6bc475aee8fe48513952924f8447402b.jpg

    ثم قم بالتالي:

    1. اسأل العميل  عن اسم المستخدم الخاص به على GitHub وإذا لم يكن لديه اسم مستخدم بعد، فيمكنه التسجيل في GitHub (أي يجب أن يكون لديه حساب على GitHub).
    2. انتقل إلى المستودع الذي تريد دعوته إليه.
    3. انقر فوق "الإعدادات".
    4. في قسم "الوصول Access " في الشريط الجانبي، انقر فوق "المتعاونون Collaborators".
    5. انقر فوق "إضافة أشخاص".
    6. في حقل البحث، ابدأ في كتابة اسم الشخص الذي تريد دعوته.
    7. انقر على اسم المستخدم الذي تريده في قائمة البحث.
    8. انقر فوق Add NAME to REPOSITORY.

    سيتلقى العميل بريدًا إلكترونيًا يدعوه إلى المستودع وبمجرد قبول دعوتك، سيكون لديهم وصول متعاون إلى مستودعك.

    وبإمكانك اختيار منحه أحد مستويات الأذونات التالية:

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

    طريقة أخرى لمشاركة مستودع Private:

    يمكنك استخدام خدمة طرف ثالث مثل https://gitfront.io من أجل مشاركة المستودع الخاص من خلال رابط فقط دون الحاجة للعميل إلى إنشاء حساب أو القيام بالخطوات السابقة.

    • أعجبني 1
  3. السؤال عام جدًا، وعلي أي حال طريقة استخدام أي تقنية او أداة هي ما تحددأي تقنية أو أداة، لكن أولاً ما المقصود بالذكاء الاصطناعي؟

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

    وكيف نستفيد من ذلك؟

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

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

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

     

  4. غير صحيح، حيث أن FTP (File Transfer Protocol) ليس نوعًا من أنواع السيرفرات مثل DNS server، بل هو بروتوكول يُستخدم لنقل الملفات بين الأجهزة عبر الشبكة، ويتيح FTP للمستخدمين نقل الملفات من جهازهم إلى سيرفر أو من سيرفر إلى جهازهم.

    على الجانب الآخر، خادم DNS (DNS server) هو نوع من الخوادم التي تقوم بخدمة نظام أسماء النطاقات (DNS)، وهو نظام يُستخدم لتحويل أسماء النطاقات (مثل www.example.com) إلى عناوين IP المقابلة، ويساعد DNS في تمكين التوجيه الصحيح لحركة المرور عبر الإنترنت ويساعد المستخدمين على العثور على المواقع على الويب باستخدام أسماء نطاق بدلاً من العناوين IP.

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

     

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

    علي أي حال، عليك أولاً تثبيت pipenv من خلال الأمر التالي:

    pip install pipenv

    وللتأكد من تثبيت pipenv استخدم الأمر التالي:

    pipenv -h

    ثم تفعيل البيئة من خلال الأمر التالي:

    pipenv shell

    ثم بعد التنشيط، قم بتثبيت Django باستخدام pip:

    pip install django

     

  6. هل المقصود هو نشر المقالات على المدونة أم نشر المقالات لتظهر في جوجل؟

    بخصوص نشر المقالات على المدونة حاول ضبط إعدادات الروابط الدائمة والمقالة التالية ستفيدك:

    أيضًا تأكد من أن  حالة المقالة "منشورة" (Published) حتى تظهر للزوار، ويمكنك تغيير حالة المقالة من خلال لوحة تحكم ووردبريس، في قسم "المقالات" (Posts)، من خلال النقر على "حالة" (Status) واختيار "منشورة" (Published).

    وبخصوص جوجل والـ SEO عليك استخدام إضافة Yoast أو All in one SEO ثم ضبط الإعدادات الخاصة بها.

  7. نستخدم عنصر background في صفحة HTML لتحديد خلفية للعنصر نفسه، أو للصفحة ككلل، عن طريق تحديد قيمة للخاصية background-color.

    ومثلاً لإضافة خلفية زرقاء إلى الصفحة ككل، علينا إضافة الكود التالي إلى عنصر body:

    <body style="background-color: blue;">
    
    ...
    
    </body>

    ولكن  استخدام عنصر background في HTML له بعض القيود حيث لا يمكن استخدامه لتحديد صورة كخلفية، أو لتحديد كيفية تكرار الصورة.

    أما استخدام عنصر background في صفحة CSS، فهو أكثر مرونة، ونستطيع استخدامه لتحديد خلفية للعنصر نفسه، أو للصفحة ككل، أيضًا لاستخدامه لتحديد صورة كخلفية، أو لتحديد كيفية تكرار الصورة.

    ولإضافة خلفية زرقاء إلى الصفحة ككل، نقوم بإضافة الكود التالي إلى ملف CSS:

    body {
      background-color: blue;
    }

    ولاستخدام صورة كخلفية، نكتب الكود كالتالي:

    body {
      background-image: url("image.png");
    }

    ولتكرار الصورة نكتب الآتي:

    body {
      background-repeat: repeat;
    }

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

  8. بتاريخ 50 دقائق مضت قال يوسف الشهري:

    اعطيني بالله الرابط تبع الجكوري

    يمكنك الحصول على روابط المكتبات من خلال CDN من مواقع مثل:

    إليك الرابط

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js" integrity="sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

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

  9. من المفترض أن الطريقة الصحيحة لإزالة  جلسة المستخدم عند تسجيل الخروج في Flutter Firebase،هي كالتالي:

    Future<void> signOut() async {
      // 1. إلغاء تسجيل الدخول من Firebase Auth
      await FirebaseAuth.instance.signOut();
    
      // 2. مسح بيانات المستخدم من Firebase
      await FirebaseFirestore.instance
          .collection('users')
          .doc(FirebaseAuth.currentUser!.uid)
          .delete();
    
      // 3. إعادة تعيين المتغيرات الخاصة بالمستخدم
      _isLoggedIn = false;
      _user = null;
    }

    حيث يعمل الكود على النحو التالي:

    1. أولاً، إلغاء تسجيل الدخول من Firebase Auth باستخدام FirebaseAuth.instance.signOut().
    2. بعد ذلك، مسح بيانات المستخدم من Firebase باستخدام FirebaseFirestore.instance.collection('users').doc(FirebaseAuth.currentUser!.uid).delete().
    3. ثم إعادة تعيين المتغيرات الخاصة بالمستخدم، مثل _isLoggedIn و _user.

    وتستطيع استخدام الكود في ملف main.dart ووضعه في وظيفة onPressed لزر تسجيل الخروج:

    // ...
    
    class MyApp extends StatelessWidget {
      // ...
    
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          // ...
          home: Scaffold(
            appBar: AppBar(
              title: Text('My App'),
            ),
            body: Center(
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: [
                  // ...
                  ElevatedButton(
                    onPressed: signOut,
                    child: Text('تسجيل الخروج'),
                  ),
                ],
              ),
            ),
          ),
        );
      }
    
      // ...
    
      Future<void> signOut() async {
        // 1. إلغاء تسجيل الدخول من Firebase Auth
        await FirebaseAuth.instance.signOut();
    
        // 2. مسح بيانات المستخدم من Firebase
        await FirebaseFirestore.instance
            .collection('users')
            .doc(FirebaseAuth.currentUser!.uid)
            .delete();
    
        // 3. إعادة تعيين المتغيرات الخاصة بالمستخدم
        _isLoggedIn = false;
        _user = null;
    
        // 4. إظهار رسالة للمستخدم
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(
            content: Text('تم تسجيل الخروج بنجاح'),
          ),
        );
      }
    }

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

     

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

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

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

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

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

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

     

  11. عليك أولاً إنشاء ملف JSON يحتوي على بيانات الصور وليك ملف data.json بمحتوى مشابه لهذا:

    [
      {
        "id": 1,
        "src": "https://placehold.co/600x400",
        "alt": "صورة 1"
      },
      {
        "id": 2,
        "src": "https://placehold.co/600x400",
        "alt": "صورة 2"
      },
      {
        "id": 3,
        "src": "https://placehold.co/600x400",
        "alt": "صورة 3"
      }
    ]

    في تطبيق React قم بإنشاء مكون (component) لعرض الصور وليك مكون اسمه ImageGallery:

    import Images from './assets/data.json';
    
    const App = () => {
      console.log(Images);
      // عرض الصور في المكون
      return (
        <div>
          {Images.map(image => (
            <img key={image.id} src={image.src} alt={image.alt} />
          ))}
        </div>
      );
    };
    
    export default ImageGallery;

     

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

    ومن المعروف أن نظام iOS أكثر أمانًا من أندرويد بسبب إنغلاقه وكونه نظام منغلق المصدر على عكس أندرويد وهو نظام مفتوح المصدر ومتاح للجميع.

    أي أن من يحمل آيفون لديه أمان أكثر من أجهزة الأندرويد، لكن بالطبع هناك ثغرات يتم اكتشافها في نظام iOS أو عتاد الجهاز وهو المعالج، ولعلك سمعت بالإختراقات التي حدثت بسبب برنامج بيغاسوس الخاص بشركة NSO الإسرائيلية  وإختراق هواتف 5 وزراء فرنسيين ودبلوماسي بالإليزيه وأيضًا الرئيس الفرنسي نفسه كان عرضة لعملية التجسس.

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

  13. هناك بعض العلامات التي تدل على أن البريد الإلكتروني عبارة عن سبام، منها:

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

    أي عليك دائمًا تفقد عنوان المرسل للإيميل وتفقده جيدًا وأنه مطابق تمامًا للموقع الرسمي:

    image-4.png.91415e0fe0701f7f13043ce813890d76.png

    في رقم 1 تفقد اسم الدومين الذي تم إرسال البريد منه وهل هو الدومين الرسمي أم لا وفي Gmail تستطيع الوصول لتلك المعلومات بالضغط على السهم الصغير كالتالي:

    Snag_a42d9a.thumb.png.1307206ecc0405d614f73628bdb0b28c.png

    وبعض الأمثلة على رسائل البريد الإلكتروني المزعجة:

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

    ولا تقم بالنقر على روابط أو فتح مرفقات في رسائل البريد الإلكتروني غير المرغوب فيها.

  14. قمت بحذف عنصر div الذي يحتوي على كلاس container وتطبيق خاصية flex على عنصر div بكلاس header ثم تنسيق العناصر من خلال   justify-content: space-between كالتالي:

    .header {
        padding: 20px;
        display: flex;
        justify-content: space-between;
    }

    ثم استخدام خاصية position من أجل وضع القائمة أسفل الأيقونة كالتالي:

    .links {
      position: relative;
    }
    .list {
      position: absolute;
      right: 0;
      top: 29%;
    }

    وإليك المشروع بعد التعديل:

     

    project.rar

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

    أما Python هي لغة برمجة عامة قوية وقابلة للتخصيص، وهي اللغة الأكثر استخدامًا لتحليل البيانات لأنها سهلة التعلم والاستخدام، ولديها مجموعة واسعة من المكتبات والأدوات المصممة خصيصًا لتحليل البيانات.

    وتستطيع استخدام Python لتحليل البيانات باستخدام مكتبات مثل Pandas وNumPy وMatplotlib للتلاعب بالبيانات ورسم الرسوم البيانية.

    وPython مفيدة عندما تحتاج إلى معالجة البيانات بشكل معقد أو تنفيذ تحليلات متقدمة أو تطبيق تقنيات التعلم الآلي والذكاء الاصطناعي.

    أي أن:

    • SQL هي لغة تستخدم لإدارة واستعلام قواعد البيانات العلاقية.
    • تستخدم SQL لاستخراج البيانات من قواعد البيانات وتحليلها باستخدام استعلامات مثل SELECT وGROUP BY وJOIN.
    • SQL مناسبة بشكل خاص إذا كانت البيانات التي تريد تحليلها مخزنة في قاعدة بيانات علاقية.
    • قد تحتاج إلى استخدام لغة برمجة أخرى مثل Python إذا كنت بحاجة إلى معالجة أو تحليل بيانات بشكل أوسع أو تنفيذ مهام أخرى إلى جانب استعلام قاعدة البيانات.
    • أعجبني 2
  16. من الأمور التي قد تساعدك بخصوص نقطة التلخيص، هو الإعتماد على Cheat sheet وهو أشبه بملخص للغة جافاسكريبت أو أي لغة ولكن بشكل إلكتروني، كالتالي:

    Snag_114ec9.thumb.png.ce1cfcd1fd7ed70ec540156d1e8c3234.png

    وكما ترى ستجد ملخص لغالب اللغة وستجد بالموقع لغات أخرى أيضًا مثل HTML, CSS ومكتبات مثل Bootstrap و React:

    عليك بالبحث في جوجل عن JavaScript Cheat Sheet وتستطيع فعل نفس الأمر مع أي لغة أو مكتبة.

    • شكرًا 1
  17. بتاريخ 1 ساعة قال Ali Ahmed6:

    هل الكورس هو كورس تاسيسه فيه البرمجه ام الا ؟

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

    بتاريخ 2 ساعة قال Ali Ahmed6:

    وهل الكورس بيتجديد كل سنه ام الا ؟

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

    بتاريخ 2 ساعة قال Ali Ahmed6:

    واي الفرق بين CS50 و CS50x  و CS50 AP ؟

    • CS50:  كورس CS50 هو الأصل لجميع الكورسات الأخرى.
    • CS50x: هو نفس كورس CS50، ولكن بدون شهادة رسمية.
    • CS50 AP: كورس مُقدم من جامعة هارفارد ويُقدم للطلاب في المدارس الثانوية وهو نسخة من كورس CS50x مُعدلة لتلبية متطلبات برنامج البكالوريا المتقدمة (AP) في علوم الكمبيوتر.

    ما الذي أنصحك به؟

    في حال كنت تريد كورس باللغة العربية فأرشح لك كورس CS50 من قناة Abdelrahman Gamal وهو جيد جدًا.

    أما الكورسات الإنجليزية فيكفي أن تبحث على اليوتيوب عن CS50.

    • أعجبني 1
  18. سأحاول توضيح الأمر لك، حيث أن نظم المعلومات هي أنظمة تتكون من أشخاص وأجهزة وإجراءات وبيانات وبرامج تستخدم لجمع ومعالجة وتخزين وتوزيع المعلومات.

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

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

    • البيانات: هي الحقائق والأرقام والحروف التي يتم تخزينها في قاعدة البيانات.
    • الهيكل: هو الطريقة التي يتم بها تخزين البيانات في قاعدة البيانات.
    • العلاقات: هي الروابط بين البيانات في قاعدة البيانات.

    أما نظام إدارة قواعد البيانات (DBMS) هو مجموعة من البرامج التي تسمح للمستخدمين بإنشاء وإدارة قواعد البيانات.

    الفرق بين نظم المعلومات وقواعد البيانات

    نظم المعلومات هي أنظمة شاملة تتضمن قواعد البيانات، لكن قواعد البيانات ليست سوى جزء من نظم المعلومات.

    مثال على نظم المعلومات

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

    مثال على قواعد البيانات

    قاعدة بيانات المنتجات هي قاعدة بيانات تتضمن معلومات عن المنتجات التي يبيعها متجر، وتتضمن تلك المعلومات اسم المنتج والوصف والسعر والكمية المتوفرة.

    • أعجبني 1
  19. رسالة التحذير تشير إلى أن بعض القطع (chunks) في مشروع nuxtjs الخاص بك أكبر من 500 كيلوبايت بعد التقليلK ,يمكن أن يكون هذا له تأثير على أداء التطبيق، حيث يمكن أن يستغرق تحميل القطع الكبيرة وقتًا أطول.

    بعض الحلول الممكنة للمشكلة هي كالتالي:

    • استخدام dynamic import() لفك الحزم (code-split) التطبيق من أجل تحميل القطع الكبيرة فقط عند الحاجة إليها، مما قد يؤدي إلى تحسين الأداء.
    • استخدام build.rollupOptions.output.manualChunks لتحسين فك الحزم مما سيسمح لك بتحديد القطع التي تريد فك حزمها يدويًا، مما قد يساعد في تقليل حجم القطع الكبيرة.
    • ضبط حد حجم القطع (chunk size limit) لهذا التحذير عبر build.chunkSizeWarningLimit لإخفاء التحذير إذا كان حجم القطع أكبر من الحد المحدد.

    هل المشكلة تؤثر على التطبيق؟

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

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

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

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

    كالمثال التالي:

    FireShotCapture011-LandingPageforfooddeliverybrandcalledFoodista--mostaql_com.thumb.png.dea6cce7e9a492290953a7ec4c1272c3.png

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

    وأنتِ مطورة ويب وليس مصممة UI/UX على الرغم من أنك قادرة على التصميم لكن لست متخصصة بالطبع في ذلك المجال.

  21. عليك حذف ملف welcome.conf في المسار التالي:

    /etc/httpd/conf.d

    ويمكنك تنفيذ الأمر التالي إذا كان لديك وصول لمنفذ الأوامر:

    sudo rm -f /etc/httpd/conf.d/welcome.conf

    أو تستطيع تعليق الأكواد في الملف لتصبح مثل التالي:

    # This configuration file enables the default "Welcome"
    # page if there is no default index page present for
    # the root URL.  To disable the Welcome page, comment
    # out all the lines below.
    #
    #<LocationMatch "^/+$">
    #    Options -Indexes
    #    ErrorDocument 403 /error/noindex.html
    #</LocationMatch>

    الآن عليك إعادة تشغيل سيرفر أباتشي من خلال الأمر التالي:

    service httpd reload

     

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