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

Mustafa Suleiman

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

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

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

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

    305

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

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

    وبها نفس الخواص الخاصة ببرنامج vsocde نسخة سطح المكتب، وبالطبع عليك بتثبيت الإضافات الخاصة ببايثون وهي:

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

     

    • أعجبني 1
  2. بالطبع بإمكانك استخدام مكتبة pyttsx3 في Google Colab، ولكن يجب عليك أولاً تثبيت المكتبة باستخدام الأمر التالي:

    !pip install pyttsx3

    وبعد تثبيت المكتبة، تستطيع استخدامها في الكود، وكمثال الكود التالي سينطق النص "Hello Ali":

    import pyttsx3
    
    engine = pyttsx3.init()
    engine.say("Hello Ali")
    engine.runAndWait()

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

    • أعجبني 1
  3. الحل صحيح، حيث أنك قمت بإنشاء دالة البناء Person التي تأخذ ثلاثة متغيرات (name, age, job) وتقوم بإنشاء كائن person من النوع Person باستخدام معامل الكلمة الجديدة new.

    ثم إضافة دالة تحسب السنة الحالية باستخدام العمر وتقوم بطباعة الناتج على الشاشة باستخدام console.log().

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

    let Person = function(name, birthDate, job) {
        this.name = name;
        this.birthDate = birthDate;
        this.job = job;
        this.year = function() {
            return 2023 - this.birthDate.getFullYear();
        };
        this.birthYear = function() {
            return this.birthDate.getFullYear();
        };
    };
    
    let birthDate = new Date(1988, 0, 1); // قم بتعديل التاريخ هنا إلى تاريخ الميلاد الفعلي
    let person = new Person('Peter', birthDate, 'programmer');
    console.log(person.year());
    console.log(person.birthYear());

    حيث قمت بتعديل دالة البناء Person لتأخذ birthDate بدلاً من age.

    ثم أنشأت كائن birthDate باستخدام new Date() مع تاريخ الميلاد الفعلي، والآن، يمكن للدوال year() و birthYear() استخدام هذا التاريخ لحساب العمر بدقة.

    ولتحسين الكود مرة أخرى لإضافة السنة الحالية بشكل تلقائي بدلاً من كتابة السنة 2023، نستخدم الدالة Date() بدون تمرير أي قيم للحصول على التاريخ الحالي، ثم استخدامها في حساب العمر وسنة الميلاد.

    let Person = function(name, birthDate, job) {
        this.name = name;
        this.birthDate = birthDate;
        this.job = job;
        this.year = function() {
            const currentYear = new Date().getFullYear();
            return currentYear - this.birthDate.getFullYear();
        };
        this.birthYear = function() {
            return this.birthDate.getFullYear();
        };
    };
    
    let birthDate = new Date(1988, 0, 1); // قم بتعديل التاريخ هنا إلى تاريخ الميلاد الفعلي
    let person = new Person('Peter', birthDate, 'programmer');
    console.log(person.year());
    console.log(person.birthYear());

    حيث يتم الحصول على السنة الحالية تلقائيًا باستخدام new Date().getFullYear() دون تحديد أي تاريخ، وبذلك يتم ضمان دائمًا الحصول على السنة الحالية الصحيحة بغض النظر عن التاريخ الفعلي لتنفيذ البرنامج.

    • شكرًا 1
  4. عند عمل inspect element على النافذة الخاصة باللعبة في موقع Poki ستجد أنه يتم تضمين اللعبة في عنصر iframe والرابط الخاص باللعبة خاص بشبكة توزيع محتوى CDN تابعة لموقع Poki باسم https://poki-gdn.com.

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

    وأيضًا تستطيع استخدام canvas بدلاً من الـ iframe ولكن يتم ربط العنصر بواسطة كود جافاسكريبت وليس رابط كما في الـ iframe.

    وتستطيع الحصول على روابط للألعاب من خلال البحث عن HTML5 games links وستجد مواقع مثل:

  5. بتاريخ 8 ساعة قال Mostafa Adel7:

    معني كده ان صعب اشتغل فورنت اند خصوصان اني بتعلم جديد في مصر 

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

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

  6. هل يمكن إيجاد ثغرة أو مشكلة في كود البرنامج أو الموقع بدون خبرة في التقنيات واللغات المستخدمة في البرنامج أو الموقع؟ 

    بالطبع لا.

    حسنًا، ما هي أسرع طريقة للبدء في مجال الـ bug bounty hunting أو الـ Ethical Hacking؟

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

    المهارات الأساسية المطلوب هي:

    •  أساسيات الكمبيوتر وتقنية المعلومات.
    • أساسيات نظام Linux
    • أساسيات الشبكات (TCP/IP، نموذج OSI).
    • الأساسيات الأساسية للويب (HTTP، HTTPS، واجهات برمجة التطبيقات (APIs)، GET، POST، نموذج العميل والخادم، HTML-CSS-JS، وما إلى ذلك).
    • لغات البرمجةونصحيتي هي تعلم الأساسيات من خلال C++ أولاً  وإن كانت صعبة بعد المحاولة، فتعلم بايثون ثم جافاسكريبت.
    • قائمة OWASP Top 10 العشرة الأكثر شيوعًا للثغرات الأمنية في تطبيقات الويب.

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

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

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

    • أساسيات HTML
    • أساسيات CSS
    • أساسيات JavaScript
    • أساسيات jQuery
    • بناء موقع شخصي

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

    • شكرًا 1
  7. عليك باستيعاب أمر هام وهو، في لغة Python (وأي لغة برمجة أخرى)، تُستخدم المسارات (Paths) للإشارة إلى موقع الملفات أو الدلائل (المجلدات) في نظام الملفات، وهناك نوعان من المسارات التي يمكن استخدامها: المسار النسبي (Relative path) والمسار المطلق (Absolute path).

    المسار النسبي (Relative path)

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

    أي لنفرض أن لدينا التالي:

    المجلد الحالي (Current directory): /home/user/

    وملف Python يسمى "script.py" موجود في المجلد /home/user/scripts/

    وإن كنت تعمل في المجلد /home/user/ وتحتاج إلى استدعاء الملف "script.py"  من داخل المجلد scripts باستخدام المسار النسبي، فسيكون المسار النسبي لهذا الملف هو:

    "scripts/script.py"

    أي يتم البحث عن الملف بداخل مجلد المشروع الرئيسي بناءًا على مكان الملف الذي تكتب من خلاله المسار.

    المسار المطلق (Absolute path)

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

    ولنفترض أن لدينا التالي:

    المجلد الرئيسي (Root directory): C:/users/

    ويوجد ملف Python يسمى "script.py" موجود في المجلد C:/users/user/scripts

    وفي تلك الحالة، إن كنت تعمل في أي مكان داخل نظام الملفات وتريد استدعاء الملف "script.py" باستخدام المسار المطلق، فإن المسار المطلق لهذا الملف سيكون:

    "C:/users/user/scripts/script.py".

    وأسهل طريقة للحصول على المسار الكامل بدون مشاكل في نظام ويندوز، هي بالضغط على المجلد أو الملف بزر الفأرة الأيمن ثم إختيار copy as path وسيتم نسخ المسار المطلق ويمكنك استخدامه في الكود، كالتالي:

    2023-08-03_11-43-15.thumb.png.2db8e586dc8b0caeb960757eb4ce08f0.png

    وإليك الطريقة الصحيحة لكتابة ذلك في كود بايثون:

    أولاً نقوم بإنشاء متغير لحفظ المسار كالتالي:

    file_path = r"C:\users\user\documents\file.txt"

    من الضروري استخدام الـ "r" قبل علامات التبويب لتجنب تفسيرها على أنها حرف هروب.

    بعد كتابة المسار المطلق، يمكنك استخدام دالة فتح الملف في Python لفتح الملف.

    يُفضل استخدام الدالة open() لهذا الغرض، وإليك مثال يوضح كيفية فتح ملف نصي باستخدام المسار المطلق:

    file_path = r"C:\users\user\documents\file.txt"
    
    try:
        with open(file_path, 'r') as file:
            content = file.read()
        print(content)
    except FileNotFoundError:
        print("لم يتم العثور على الملف.")
    except Exception as e:
        print("حدث خطأ أثناء قراءة الملف:", e)

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

    وأي خطأ آخر خلال قراءة الملف سيتم طباعة رسالة تفيد بحدوث خطأ وتوضيح نوع الخطأ.

    ولمعلوماتك في نظام Linux أو macOS نكتب المسار كالتالي:

    file_path = "/home/user/documents/file.txt"

    تحتوي المسارات على شرطات مائلة (/) بدلاً من شرطات عكسية ()، كما هو الحال في نظام Windows، ولذلك لا نستخدم r.

    • أعجبني 1
  8. أولاً عليك بمعرفة خطوات رفع تطبيق على متجر Google Play وهي:

    1. إنشاء حساب مطور في Google Play.
    2. رفع تطبيقك إلى Google Play Console.
    3. أدخل معلومات التطبيق الخاصة بك، مثل العنوان والوصف والصور.
    4. اختر طريقة التسعير الخاصة بك.
    5. قم بنشر تطبيقك.

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

    وتستطيع إنشاء حساب مطور في Google Play من خلال زيارة موقع Google Play Developer Console.

    وطرق الربح الشائعة من التطبيقات على Google Play هي:

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

    وقد الحديث عن ذلك بشكل مفصل هنا:

     

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

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

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

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

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

    أي في حال قمت بالدراسة لمدة 6 ساعات يوميًا، فستحتاج إلى حوالي 55 يومًا لإكمال الدورة التي تحتوي على 335 ساعة، مما يعني حوالي شهرين وبعض الأيام. إن الدراسة اليومية المنتظمة تساعدك على البقاء على المسار الصحيح والاستفادة القصوى من الدورة.

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

    • أعجبني 1
  10. بتاريخ منذ ساعة مضت قال Mostafa Adel7:

    طيب ايه الاكثر طلبا في السوق المصري

    دول الخليج ومصر الأكثر طلبًا هو PHP ولارافل ووردبريس وASP.NET وAngular وأسهل في الحصول على وظيفة، وأيضًا React و node.js لكن بحاجة إلى خبرة سنة لتحصل على فرصة عمل جيدة.

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

     

  11. بتاريخ 2 ساعة قال عبدالرحمن الحطاب:

    اذا المساحة التي تتيحها الاستضافة تتصل بها عبر FTP اذا كيف يمكن الحصول على رابط الصورة جربت ftp قدرت اخزن الصور ولكن لم اعرف كيف احصل على رابط لها هل عبر API؟

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

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

    http://example.com/path/to/image.jpg

     

  12. استخدام findOrFail($id) بدلاً من find($id) يعتبر عملية جيدة في بعض الحالات وذلك لضمان أمان التطبيق والتعامل مع الأخطاء بشكل أفضل.

    ولكن يجب توضيح الفرق بين الاثنين:

    User::find($id)

    تلك الطريقة تقوم بالبحث عن سجل في قاعدة البيانات باستخدام المفتاح الرئيسي للجدول (وغالبًا ما يكون الـ ID)، وإن وجد السجل، فيتم إرجاع السجل نفسه، وإذا لم يتم العثور عليه، فيتم إرجاع قيمة null.

    User::findOrFail($id)

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

    السبب الرئيسي لاستخدام findOrFail($id) هو تجنب الحصول على قيمة null ومعالجة تلك القيمة في حالة عدم وجود السجل المطلوب في قاعدة البيانات، وعند استخدام findOrFail($id)، تستطيع ببساطة التعامل مع الاستثناء المرتبط في الكود، مما يسهل تحديد الأخطاء والتعامل معها بشكل أفضل.

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

    أي بإختصار، سيتسبب استخدام User::find($id) في تلقي المستخدمين خطأً 500 ، مما قد يكشف عن بيانات غير مقصودة، وسيتسبب استخدام User::findOrFail($id) في تلقي المستخدمين خطأ 404 ، والذي يعد أكثر أمانًا.

    بالإضافة إلى ذلك ، فإن استخدام User::findOrFail($id) سيساعد على منع الأخطاء التي قد تحدث إذا لم يكن المستخدم موجودًا، وإذا استخدمت User::find($id) ولم يكن المستخدم موجودًا ، فستتلقى خطأً 500.

    مما يؤدي إلى توقف API الخاص بك عن العمل، وسيكون من الصعب تحديد سبب المشكلة، وسيتسبب استخدام User::findOrFail($id) في تلقي خطأ 404 ، مما سيسهل تحديد سبب المشكلة وإصلاحها.

    • أعجبني 2
  13. في السوق الأوروبي، كل المجالات التي ذكرتها مذكورة، ولكن بالطبع كل مجال يتطلب وقت مختلف عن الآخر للدراسة والإتقان، وأيضًا مهارات مختلفة، وأصعب مجال بينهم هو الـ Ai.

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

    • 30٪ Java Development
    • 25٪ Mobile Development
    • 45٪ AI Development

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

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

    • LinkedIn
    • Indeed
    • Monster
    • Glassdoor
    • AngelList هو موقع وظائف يركز على الشركات الناشئة.
    • Stepstone موقع وظائف ألماني شهير يضم آلاف الوظائف الشاغرة في مجال البرمجة.

     

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

    أم أنت مطور تطبيقات cross-platform من خلال React Native أو Flutter؟

    وعلي أي حال أنصحك بالتوجه إلى GitHub أو جوجل وابحث عن Interview Questions for flutter  وستجد الكثير من الأسئلة الشائعة الخاصة بكل تقنية.

    وبالطبع تستطيع استبدال Flutter بالتخصص بالإطار أو اللغة التي تستخدمها.

    وإليك بعض الأسئلة العامة التي قد تطرح عليك خلال مقابلة العمل:

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

    ولكي تصبح مطور تطبيقات جوال ناجحًا، يجب أن تتمتع بمجموعة من المهارات، بما في ذلك:

    • مهارات البرمجة في لغات مثل Java أو Kotlin أو Swift أو Objective-C
    • مهارات استخدام أدوات تطوير تطبيقات الجوال مثل Android Studio أو Xcode
    • مهارات اختبار تطبيقات الجوال
    • مهارات نشر تطبيقات الجوال في متجر التطبيقات
    • مهارات حل المشكلات
    • مهارات العمل الجماعي
    • مهارات التواصل

     

  15. الأسئلة قد تكون كالتالي:

    • ما هي الفوائد التي يوفرها نظام الأرشفة الرقمي؟
    • ما هي أنواع الوثائق التي يمكن تخزينها في نظام الأرشفة الرقمي؟
    • ما هي خطوات إنشاء نظام أرشفة رقمي؟
    • ما هي أنواع قواعد البيانات التي يمكن استخدامها في نظام الأرشفة الرقمي؟
    • ما هي فوائد استخدام قاعدة بيانات SQL Server في نظام الأرشفة الرقمي؟
    • ما هي التحديات التي قد تواجهها في إنشاء نظام أرشفة رقمي؟
    • كيف يمكنك التغلب على تلك التحديات؟
    • اشرح ماهية قواعد البيانات وما دورها في الحفاظ على البيانات وتنظيمها؟
    • كيف تخطط لإنشاء قاعدة بيانات SQL Server؟ اشرح الخطوات الأساسية لإنشاء قاعدة بيانات جديدة.
    • ما هي أنواع الجداول المختلفة التي يمكنك إنشاؤها في قاعدة البيانات واشرح استخداماتها؟
    • ما هي الفروق بين القيود (Constraints) في قواعد البيانات مثل Primary Key و Foreign Key و Unique Key وغيرها؟
    • كيف تقوم بإدارة عمليات النسخ الاحتياطي والاستعادة (Backup and Restore) في SQL Server؟
    • ما هي أفضل الممارسات لتحسين أداء قواعد البيانات؟ اذكر بعض الطرق لتحسين أداء استعلامات SQL.
    • كيف ستقوم بتصميم نموذج البيانات (Data Model) الذي يعكس احتياجات الشركة للأرشفة المركزية والرقمية؟
    • ما هي الخطوات التي ستتبعها لتنفيذ نظام الأرشفة الرقمية والمركزية للمستندات؟
    • كيف ستضمن تأمين قاعدة البيانات وملفات المستندات من الوصول غير المصرح به؟
    • كيف ستتعامل مع الأخطاء والمشاكل المتعلقة بقواعد البيانات والأرشفة؟ اشرح كيفية تحديد الأخطاء وحلها.

    وبالإضافة إلى تلك الأسئلة، فقد يُطلب منك أيضًا إجراء بعض المهام العملية، مثل:

    • إنشاء قاعدة بيانات SQL Server
    • تحميل المستندات في قاعدة البيانات
    • البحث عن مستندات معينة في قاعدة البيانات
    • تصدير المستندات من قاعدة البيانات

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

    حظاً موفقاً في الاختبار!

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

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

    أو بإمكانك تجاهل المساحة الخاصة بالاستضافة، ورفع الصورة مباشرًة على سيرفر تخزين آخر مثل Amazon S3 وGoogle Cloud Storage وذلك عن طريق الـ API الخاص بهم.

    حيث أن Amazon S3 خدمة تخزين سحابية تقدمها أمازون وهي مناسبة لتخزين الصور والملفات بشكل آمن وقابل للتوسعة، ويمكنك تحميل الصور إلى سلة (Bucket) في S3 ومن ثم الحصول على روابط للصور لعرضها في موقعك، وكما أشرت ستستخدم واجهة API لإدارة الصور وتحميلها أو استخدام مكتبات جاهزة للتفاعل مع S3 مثل aws-sdk في Next.js.

    ونفس الأمر بالنسبة لـ Google Cloud Storage.

    وانتبه إلى أنّ الـ FTP ليس سيرفر تخزين، بل هو اختصار لـ "File Transfer Protocol"، وهو بروتوكول نقل الملفات، يُستخدم لنقل الملفات بين جهاز الكمبيوتر الخاص بك وخادم الإنترنت (أو FTP server) بطريقة سريعة وموثوقة.

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

  17. أنتِ تقصدين في لغة جافاسكريبت، صحيح؟

    الفواصل (Semicolons)

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

    مثال:

    const x = 5;
    const y = 10;
    const sum = x + y;

    الأقواس (Parentheses)

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

    مثال:

    function greet(name) {
      return "Hello, " + name + "!";
    }
    
    const result = (2 + 3) * 4;

    الأقواس المجعدة (Curly Braces)

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

    مثال:

    if (x > 0) {
      console.log("Positive number");
    } else {
      console.log("Non-positive number");
    }

    التعليقات (Comments)

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

    هناك نوعان من التعليقات:

    • تعليق واحد: يتم بدء التعليق بعلامتي السلش (//) ويستمر حتى نهاية السطر.
    • تعليق متعدد الأسطر: يبدأ بعلامة الجملة المائلة (/) وينتهي بعلامة الجملة المائلة الأخرى (/).
    // تعليق واحد
    
    /*
    تعليق متعدد
    */
    
    // الشفرة التالية لا تفعل أي شيء، فهي تعليق فقط
    /* 
    const x = 10;
    console.log(x);
    */

     

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

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

    الجبر الخطي

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

    الإحصاء

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

    الاحتمالات

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

    التعلم الآلي

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

     

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

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

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

    والكورسات التي على مستوى عالِ كلها باللغة الإنجليزية ويجب عليك أن تكون قادر على الاستماع والقراءة بالإنجليزية لتعلم ذلك المجال، وإليك بعض الكورسات:

    وأفضل كورس في القائمة هو الأخير  (Machine Learning AI Certification).

    • أعجبني 1
  20. الأمر يعتمد دائمًا على الخوارزمية والهيكلة المتبعة للواجهة الخلفية، فقد يؤثر ذلك على الأداء أولا يؤثر.

    وللتقليل من أثر الـ streaming على الـ backend، عليك باتباع بعض الإرشادات والتعديلات:

    • آليات التخزين المؤقت لتخزين المحتوى المسترجع من Google Cloud Storage في الـ backend، وذلك يساعد في تجنب استعلامات متكررة للـ Cloud Storage ويقلل من الحمل على الخادم.
    • استخدم CDN (شبكة توصيل المحتوى) لتسليم المحتوى إلى المستخدمين، وسيساعد ذلك في تقليل عبء العمل على ال backend عن طريق جلب المحتوى من خوادم قريبة من المستخدمين.
    • استخدام خوادم وكيل (Reverse Proxy) للتعامل مع طلبات الـ streaming وتحويلها إلى الـ backend، وخوادم الوكيل قادرة على إدارة عمليات الـ streaming بكفاءة وتحمي الـ backend من الأحمال الزائدة.
    • استخدام حلول(Load Balancer) لتوزيع الحمولة بين مجموعة من الخوادم الخلفية (backend)، وبالتالي تحسين استجابة الـ streaming عند وجود أعداد كبيرة من المستخدمين.
    • التأكد من أن الكود المستخدم في الـ backend محسن وفعال من حيث استخدام الموارد والاستجابة.
    • استخدام تقنيات التنقيح (Profiling)، وقم بتحليل أداء الـ backend باستخدام تلك التقنيات للتعرف على أي مشاكل أداء وحلها.
    • وإن كانت البيانات المستخدمة في الـ streaming مخزنة في قاعدة بيانات، فمن من المفيد تحسين أداء قاعدة البيانات والاستعلامات المستخدمة.
    • استخدم تقنية ضغط المحتوى لتقليل حجم المحتوى الذي يتم نقله إلى المستخدمين، وبالتالي تقليل عبء العمل على الشبكة وتحسين سرعة التحميل.
    • أعجبني 1
  21. تم النقاش حول سؤالك بشكل مفصل من قبل، وفي البداية عليك بتفهم أن مجال الأمن السيبراني متشعب وعليك بالسير خطوة بخطوة ودون استعجال.

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

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

    وبالطبع تحتاج إلى تعلم أساسيات الشبكات  مثل TCP / IP و DNS و DHCP و HTTP و HTTPS و SSL / TLS.

    بعد تعلم الأساسيات السابقة، يأتي دور التعرف على التشفير وأمن المعلومات، ومهارات التشفير تُمكِّن الهاكر الأخلاقي من فهم كيفية حماية البيانات وتأمينها، ومنها نظام التشفير المتقدم AES كمثال على الأدوات التي يمكن للهاكر الأخلاقي استخدامها لاختبار قوة التشفير وتعزيز أمان النظام.

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

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

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

    وأنصحك أيضًا بقراءة النقاش الخاص به على منصة حسوب I\O  حيث أجاب به على الكثير من الأسئلة.

     

  22. هل تقصد بخصوص إطار فلاتر نفسه؟ 

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

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

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

    بالإضافة إلى الرسوم السنوية، تتقاضى Apple أيضًا رسومًا بنسبة 30٪ من جميع المعاملات التي تتم في تطبيقك، وتلك الرسوم تُعرف باسم "رسوم العمولة".

    أي إذا كان لديك تطبيق يكلّف 1.99 دولارًا أمريكيًا للتنزيل، فستحصل Apple على 0.597 دولارًا أمريكيًا من كل عملية شراء، بينما ستحصل أنت على 1.393 دولارًا أمريكيًا.

    • أعجبني 1
  23. سؤالك عام، ولن تحصل على إجابة وافية، أنت تقصد هل هناك مجال أفضل من مجال؟

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

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

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

    مثلاً لغة مثل PHP متواجدة بقوة في سوق العمل منذ سنوات بسبب إطار لارافيل الذي يعطي للغة قوة ودعم كبير، وأيضًا لديك ASP.NET وإطار Angular.

    هل هناك مجال أفضل من مجال بالنسبة لك؟

    بالطبع، الأمر يعتمد على ظروفك وما تريده والوقت المتاح لك وخبراتك السابقة.

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

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

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

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

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

     

    • أعجبني 1
×
×
  • أضف...