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

Mustafa Suleiman

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

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

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

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

    297

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

  1. بتاريخ 2 دقائق مضت قال Ail Ahmed:

    طيب ممكن لو سمحت تكتب الكود النهايه

    special_chars = ["ß", "ç", "é", "ê", "ì", "í", "ò", "ó", "ù", "ú"]
    
    for char in special_chars:
        original_length = len(char)
        uppercase_char = char.upper()
        lowercase_char = uppercase_char.lower()
        lowercase_length = len(lowercase_char)
    
        if lowercase_length > original_length:
            print(f"String: {char}, Original Length: {original_length}, Lowercase Length: {lowercase_length}")

     

    • أعجبني 1
  2. التابلت غير مناسب للبرمجة، ستحتاج إلى لابتوب، وبذلك السعر متوفر :

    •  Acer Aspire 5 A515-45-R74Z Slim
    • Microsoft Surface Laptop 3
    •  HP Laptop 15-dy2021nr
    • HP 14-fq1025nr
    • Dell Latitude 7400 Touch

    حاول إختيار لابتوب بمعالج من فئة H مع رامات بحجم 16 جيجابايت، وستجد تفصيل هنا:

     

    • شكرًا 1
  3. ستحتاج إلى استخدام أحد المنصات التي توفر ذلك مثل proprofschat أو Tidio أو Tawk.to أو Freshchat وهناك العديد من المنصات التي توفر تلك الخدمة مع باقة مجانية للاستخدام المجاني وباقات مدفوعة بخصائص متقدمة.

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

    إذا أردت خيار مجاني تمامًا من خلال مكتبة open source أي مفتوحة المصدر، فيوجد مكتبة papercups بعد التسجيل ستحصل على توكن استخدمه في تفعيل الـ widget في موقعك وستجد شرح هنا:

     

    • أعجبني 1
  4. بتاريخ 8 دقائق مضت قال Ail Ahmed:

    حاضر , شكرااا جداا لحضرتك

    توضيع لو سمحت هو ان اعمل قايمه ال هي List ام نص عادي String 

    عشان علي الموقع Codwars كتب الكود ده في اول سطر

    STRANGE_STRING = 'foo'

    تاني حاجه احديد طوال السلسله باستخدم الداله len() صح كده

    وكمان اي هي الحروف الخاص ده

    بالضبط، في البداية الحروف الخاصة هي كالتالي:

    special_chars = ["ß", "ç", "é", "ê", "ì", "í", "ò", "ó", "ù", "ú"]

    أرجو قراءة التعليق السابق مرة أخرى

    • أعجبني 1
  5. بتاريخ 23 دقائق مضت قال Ail Ahmed:

    طيب لو سمحت احلها ازي المسال ده بغلت باثيون

    @Ail Ahmed

    أولاً لنفترض أن لديك سلسلة نصية تحتوي على حرف خاص، وهو حرف "ß" (الحرف الألماني الحاد s)، ولا تتوفر هذه العلامة ß في جميع اللغات، بما في ذلك العربية.

    وعندما تقوم بتحويل هذا الحرف الألماني الحاد "ß" إلى أحرف كبيرة (uppercase) في بعض اللغات مثل بايثون، فسيتم تحويله إلى حرفين "SS" بدلاً من حرف واحد كبير "ß".

    الآن، إن قمت بتحويل الأحرف الكبيرة "SS" مرة أخرى إلى أحرف صغيرة (lowercase)، ستحصل على حرفين صغيرين "ss".

    أي تكمن المشكلة هنا في أن السلسلة النهائية "ss" أصبحت أطول من السلسلة الأصلية "ß" بحرف واحد، وذلك يتعارض مع السلوك المعتاد لتحويل الأحرف الكبيرة والصغيرة، حيث من المتوقع أن يظل طول السلسلة كما هو.

    ابدء بتحديد قائمة من الأحرف الخاصة، بما في ذلك الأحرف المعرّفة، والرموز، والأحرف غير القياسية في لغة بايثون.

    ثم قم باختبار تحويل الأحرف كالتالي:

    • نستخدم حلقة for للتكرار على قائمة من الأحرف الخاصة.
    • لكل حرف، نقوم بتحويله إلى أحرف كبيرة باستخدام طريقة upper().
    • ثم نقوم بتحويله إلى أحرف صغيرة باستخدام طريقة lower().
    • نقارن طول السلسلة الأصلية بطول السلسلة بعد تحويلها إلى أحرف صغيرة.

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

    حاول حلها، وأخبرني لتوضيح الأمر لك من خلال الكود.

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

    وستجد تفصيل أكثر هنا:

     

    • شكرًا 1
  7. من خلال مستودع المكتبة على GitHub ستجد الكود المصدري، ومثلاً numpy  المستودع الخاص بها هو التالي:

    https://github.com/numpy/numpy

    إما إن كنت تقصد رؤية الدوال التي تستطيع استخدامها فهناك دالة dir المدمجة في Python وتعرض قائمة بجميع الأسماء المحددة في ملف تعريف أو وحدة.

    import numpy as np
    
    functions = dir(np)
    
    for function in functions:
        print(function)

    أو من خلال المستند الرسمي:

    https://numpy.org/doc/stable/reference/

    • أعجبني 1
  8. سيتم إمتحانك في 4 مسارات أو 5 مسارات لا مشكلة، الحد الأدنى هو 4 مسارات، وسيتم إختبارك في تلك المسارات فقط، ويجب رفع المشاريع التي قمت بها خلال تلك المسارات على GitHub.

    لكن لا أنصحك بذلك، ومن الأفضل إتمام كامل الدورة.

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

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

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

    أيضًا في حال تم إنشاء تطبيق ستكون هناك رسوم تفرضها كل من Google و Apple على عمليات الشراء داخل التطبيق بمعدل 15-30٪، وبالتالي توفر منصة حسوب تلك الرسوم من أجل توفير رسوم منخفضة للعملاء والمستقلين.

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

    • أعجبني 1
  10. هناك نقطة هامة يجب الإنتباه إليها وهي أن قاعدة بيانات SQLite عبارة عن ملف بسيط بالمشروع، وليس قاعدة بيانات متقدمة مثل PostgreSQL أو MongoDB وغيرهم نستطيع الإتصال بهم عن طريق رابط.

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

  11. لا يوجد مطابقة بين أي طالب في جدول الطلاب (students) وأي مشروع في جدول المشاريع (projects).

    هل يوجد سجلات في كل من جدول الطلاب وجدول المشاريع؟ أيضًا تحقق من أن حقل "Num_std" في جدول الطلاب مطابقًا لحقل "Num_std" في جدول المشاريع.

    وربما هناك قيم null في حقل "Num_std" في جدول الطلاب أو حقل "id_teah" في جدول الطلاب أو حقل "id_dept" في جدول المعلمين.

    جرب استخدام JOINs خارجية لعرض جميع السجلات من جدول واحد، حتى لو لم تكن هناك مطابقة في الجدول الآخر:

    SELECT s.Num_std ,s.Name_std ,s.Email_STD ,p.name_project,t.Name_teah,d.Name_dept
    FROM projects p
    LEFT JOIN student s ON p.Num_STD=s.Num_std
    LEFT JOIN teachers t ON s.id_teah=t.id_teah
    LEFT JOIN departments d ON t.id_dept=d.id_dept;

     

  12. الـ Entity مفهوم منطقي يمثل شيئًا حقيقيًا في العالم الحقيقي، مثل طالب أو منتج أو طلب، ويتم تخزينه في قاعدة بيانات مع صفات وخصائص تمثل خصائص الكيان.

    لنفترض مثلاً Entity خاص بكتاب فسيكون له خصائص مثل عنوان المؤلف، ISBN، عدد الصفحات، النوع.

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

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

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

     بالتالي نعتمد على الـ Entity لتحديد البيانات التي يجب تخزينها واسترجاعها من قاعدة البيانات، بينما نستخدم الكائن Object لتمثيل البيانات وتنفيذ العمليات عليها في التطبيقات البرمجية، وبإمكانا استخدام كائنات برمجية متعددة لتمثيل Entity واحد.

     

  13. الأيقونة الموجودة بجانب كل من Member_photo3 و Member_photo1 هي أيقونة مُؤشر التراكب، وهي تعني أن الصورة أو الفيديو سيظهر فوق الطبقات الأخرى في المشروع، مما يعني أنها ستظهر فوق الطبقات الأخرى مثل الشفافية ووضع مزج الصورة مع الطبقات الأخرى.

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

    • أعجبني 1
  14. بشكل بسيط، الأمر أشبه أنه لماذا لا يتم استخدام محرك واحد على الجميع السيارات؟

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

    مثلاً معمارية معالجات M الخاصة بشركة آبل تختلف عن معمارية معالجات إنتل وهكذا.

    أيضًا توفر أنظمة التشغيل واجهات برمجة تطبيقات (APIs) محددة للتفاعل مع مكوناتها بالتالي علينا استخدام APIs المُناسبة لنظام التشغيل الذي يعمل عليه.

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

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

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

  15. بتاريخ 56 دقائق مضت قال Ail Ahmed:

    اه تمام الامر ده cls اشتغل صح

    شكرااا جداا لحضرتكم

    الف شكرااا والله

    للعلم الأمر clear يتم التعرف عليه بشكل طبيعي في الويندوز لكن بشرط أن تحميل تطبيق Windows Terminal وسيعمل:

    https://apps.microsoft.com/detail/9n0dx20hk701?rtc=1&hl=en-eg&gl=EG

     

    • أعجبني 1
  16. يوجد في جميع الأنظمة حيث نكتب أمر tracert، وهو أداة تشخيصية لتحديد المسار الذي تسلكه حزم البيانات من جهاز الحاسوب لديك إلى وجهة معينة على شبكة الإنترنت، ويُكتب الأمر في نافذة موجه الأوامر (Command Prompt) في نظام التشغيل Windows أو Terminal في أنظمة التشغيل macOS و Linux.

    ونكتب الأمر كالتالي وبجانبه عنوان الموقع أو تستطيع استخدام الـ IP مباشرًة إذا أردت:

    tracert www.google.com

    وستحصل على المعلومات التالية:

    •  اسم المضيف أو عنوان IP للوجهة.
    •  اسم كل راوتر على طول المسار.
    • وقت استجابة كل راوتر.
    • TTL: قيمة Time to Live، وهي عدد مرات إعادة إرسال الحزمة قبل أن يتم التخلص منها.

    وهناك معلمات تستطيع استخدامها مع الأمر:

    • -d: لا يتم حل أسماء المضيفين إلى عناوين IP.
    • -h: عرض مساعدة حول الأمر.
    • -j: استخدام عنوان IP المصدر المحدد.
    • -l: تحديد حجم الحزمة بالبايت.
    • -n: عدم استخدام أسماء المضيفين.
    • -p: تحديد رقم المنفذ.
    • -r: تتبع المسار إلى الوجهة العكسية.
    • -s: تحديد عدد القفزات القصوى.
    • -t: تتبع المسار بشكل مستمر.
    • -w: تحديد مهلة الانتظار بالمللي ثانية.
    tracert -d www.google.com

     

    • أعجبني 1
  17. ذلك ممكن ولكن بشكل تقريبي،  إن تم معرفة عنوان IP الخاص به لكن لا يمكن تحديد موقع الهاتف بدقة عالية أو معرفة موقعه المباشر.

    فتوجد العديد من خدمات تحديد الموقع الجغرافي عبر الإنترنت التي تسمح لك بإدخال عنوان IP وسيقومون بعرض موقع تقريبي على خريطة اعتمادًا على بيانات مزود خدمة الإنترنت (ISP).

    ويستطيع مزود خدمة الإنترنت (ISP) معرفة الموقع الجغرافي التقريبي للمستخدم من خلال عنوان IP الخاص به.

    تختلف دقة تحديد الموقع الجغرافي من خلال عنوان IP اعتمادًا على العديد من العوامل، مثل نوع عنوان IP (ثابت أو ديناميكي) ومزود خدمة الإنترنت (ISP) وطريقة تحديد الموقع.

    بتاريخ 16 ساعة قال oubai nezar:

    هل عنوان الip ثابت أم أنه متغير .

    يتم تعيينه بشكل دائم لجهازك من قبل مزود خدمة الإنترنت (ISP)، قم بفصل الراوتر لمدة 10 ثواني ثم أعد تشغيله وستحصل على IP عام جديد public IP، وأحيانًا يتوجب فصل الراوتر 10 دقائق.

     

  18. الأمر يعتمد على هدفك من تعلم PHP هل تريد تعلمها لتصبح مطور BackEnd أم تريد تطوير الواجهة الأمامية أيضًا؟

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

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

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

    • قوائم (lists) سواء كانت تحتوي على أرقام أو سلاسل نصية أو كائنات أخرى.
    • أزواج (tuples) مثل قوائم البيانات، يمكن للدالة sum() حساب مجموع عناصر أي زوج.
    • مفردات (dictionaries) بينما لا يمكن حساب مجموع مفردة مباشرةً، يمكن تحويلها إلى قائمة أو زوج قبل استخدام الدالة sum().
    • مولدات (generators) لحساب مجموع القيم دون الحاجة إلى تخزينها في الذاكرة.

    وتسمح الدالة sum() بتحديد قيمة افتراضية يتم إضافتها إلى مجموع العناصر، وذلك مفيد في الحالات التي تريد فيها حساب مجموع العناصر مع إضافة قيمة ثابتة، كالتالي:

    sum([1, 2, 3], 5)  # سيُرجع 11

    أيضًا تُتيح لك استبعاد القيم الفارغة مع مُرشِّح (filter) لاستبعاد القيم الفارغة من الحساب، كالتالي:

    sum(filter(None, [1, None, 2, 3]))  # سيُرجع 6

    أو استخدام تعبيرات lambda  لتطبيق وظيفة على كل عنصر قبل حساب مجموعها:

    sum(list(map(lambda x: x**2, [1, 2, 3])))  # سيُرجع 14

    أو دمج الدالة sum() مع وظائف أخرى لبناء تعبيرات معقدة، كالآتي:

    max(sum(x) for x in my_list)  # سيُرجع أكبر مجموع لعناصر في قائمة my_list
    • أعجبني 1
  20. إذا أردت رأي، فلا أنصحك بذلك، فستتحول دون أن تشعر إلى code monkey ولا أقصد إساءة لكن ذلك مصطلح بالفعل، ويعني أنك ستصبح كسول ولا تفكر كثيرًا عند كتابة الكود مجرد الإعتماد على الأدوات وتركيب الأكواد مثل قطع الـ LEGO أي دونّ فهم عميق لمبادئ البرمجة أو هندسة البرمجيات، ولا أقصد أنك غير قادر على التفكير لكن النفس كسولة بطبعها حتى إن كنت قادر ستجد أنك تبحث عن أداة للتفكير بدلاً منك وستجد صعوبة شديدة في التخلص من ذلك.

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

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

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

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

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

    ستجد تفصيل هنا:

     

  22. ذلك ممكن من خلال مكتبة PHP Desktop والفكرة الخاصة بها هي تشغيل المشروع من خلال محرك chromium أي تشغيل التطبيق في واجهة تشبه تطبيقات سطح المكتب لكنها تعتمد على المحرك الخاص بالمتصفح، فكر بالأمر على أنه مثل إطار Electrone.js الخاص بجافاسكريبت.

    ستجد تفصيل هنا:

    وتوجد طريقة أخرى وهي عن طريق منصة todesktop لكنها ليست مجانية إذا أردت نشر التطبيق.
    https://www.todesktop.com/works-with/laravel

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