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

Mustafa Suleiman

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

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

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

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

    305

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

  1. بالطبع تستطيع ذلك، لكن عليك بتفهم أن تلك الأيقونات هي من مكتبة Font Awesome وتستطيع تحريكها كيفما تريد من خلال الصنف الزائف :hover في CSS، أي عند وقوف مؤشر الفأرة على الأيقونة تستطيع تنفيذ تنسيق مثل تكبير الأيقونة قليلاً نحو المستخدم وهكذا.

    وستجد الأيقونات في الغالب تم تطبيقها على عنصر زائف ‎::before في مواقع سلة.

    ومن الأفضل أن تبحث عن CSS Icons Animation على يوتيوب وستجد الكثير من الشروحات.

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

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

    • أعجبني 1
  3. بتاريخ 5 ساعة قال عمار عبد الهادي ميرزا:

    هل يمكن استخدام If.  Else.   في حال كان لدي اكثر من حالتين ؟

    بالطبع وحتى في حال كان لديك أكثر من 10 حالات ولا يوجد عدد محدد، وإليك مثال:

    const x = 10;
    
    if (x > 0) {
      console.log("x هو عدد موجب");
    } else if (x < 0) {
      console.log("x هو عدد سالب");
    } else {
      console.log("x هو الصفر");
    }

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

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

    أيضًا نستطيع استخدام شروط معقدة مع المعاملات المنطقية المختلفة مثل AND و OR للتحقق من صحة الشروط المتعددة، أما في "switch case"، يتم التحقق من تطابق القيمة المحددة للمتغير مع القيم المحددة في حالات "case".

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

     

  4. الفرق هو أن auth()->user() يرجع الكائن User الحالي بينما Auth::user() يرجع الكائن User الحالي أو null إذا لم يكن هناك مستخدم محدد.

    وتستطيع استخدام auth()->user() في المواقف التي تحتاج فيها إلى التأكد من وجود مستخدم محدد، مثلاً في حال كنت تريد عرض معلومات المستخدم الحالي ، فاستخدم:

     auth()->user()->name

    بينما نستخدم Auth::user() في المواقف التي لا تحتاج فيها إلى التأكد من وجود مستخدم محدد. كمثل معرفة ما إذا كان هناك مستخدم محدد متصل.

    وإليك مثال:

    // استخدام auth()->user()
    $user = auth()->user();
    
    // طباعة اسم المستخدم الحالي
    echo $user->name;
    
    // استخدام Auth::user()
    if (Auth::check()) {
        // هناك مستخدم متصل
    } else {
        // لا يوجد مستخدم متصل
    }
    • أعجبني 1
    • شكرًا 1
  5. بتاريخ 53 دقائق مضت قال ابراهيم بازي:

    اعتذر علئ كثرة الاسئلة , لكن في حالة اتمامي لجميع المسارات و بناء جميع المشاريع  , هل يمكن ان تعوض المشاريع اللاحقة مشروع انستغرام مثلا ؟

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

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

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

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

    • شكرًا 1
  6. هناك عدة طرق لجعل القوالب الجاهزة بصيغة يمكن للناس التعديل عليها بعد شرائها، من بينها:

    تصدير القوالب بصيغة PSD. PSD هي اختصار لـ Photoshop Document، وهي صيغة ملف مفتوحة المصدر يمكن فتحها وتعديلها باستخدام برنامج فوتوشوبK ,عند تصدير قالب بصيغة PSD، ستتمكنين من حفظ جميع طبقات القالب وعناصره، مما سيسمح للمشترين بإجراء التغييرات التي يريدونها بسهولة.

    تصدير القوالب بصيغة PDF وهي اختصار لـ Portable Document Format، أي صيغة ملف قياسية يمكن فتحها وعرضها على أي جهاز كمبيوتر أو جهاز لوحي أو هاتف ذكي، وفي حال تصدير قالب بصيغة PDF، ستتمكنين من الحفاظ على جودة القالب وتنسيقه، مما سيضمن أن المشترين سيحصلون على منتج نهائي عالي الجودة.

    استخدام خدمة تحويل ملفات التي تسمح لك بتحويل الملفات من صيغة إلى أخرى، وباستطاعتك استخدام إحدى هذه الخدمات لتحويل قوالب Canva الخاصة بك إلى PSD أو PDF أو أي صيغة أخرى تدعم التعديل.

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

    وفيما يلي بعض النصائح لبيع القوالب الجاهزة على Envato Elements:

    • اكتبي وصفًا تفصيليًا لكامل القوالب، وتأكدي من تضمين جميع المعلومات التي قد يرغب المشترون في معرفتها حول القوالب، مثل حجمها وتنسيقها وميزاتها.
    • أضيفي صورًا عالية الجودة لكامل القوالب وستساعد الصور عالية الجودة المشترين على تصور كيفية استخدام القوالب.
    • حددي أسعارًا تنافسية لكامل القوالب، بأسعار تنافسية مع أسعار القوالب الأخرى المتوفرة على Envato Elements.
    • قدمي ضمانًا لكامل القوالب وذلك سيساعد المشترين على الشعور بالأمان عند شراء قوالبك.
    • أعجبني 1
  7. السؤال مطروح بشكل عام، حيث أن اللاب توب جيد بالطبع ومناسب للبرامج الهندسية والألعاب، فإذا كنت تطمح لتشغيل بعض الألعاب الثقيلة وأيضًا برامج هندسية مثل 3D MAX فلن يخذلك اللاب توب بتلك المواصفات.

    لكن قد تكون تلك الإمكانيات زائدة عن حاجتك، فهل تريد اللاب توب لتعلم البرمجة مثلاً؟ ففي تلك الحالة عليك بشراء جهاز بمواصفات أقل فأنت لن تحتاج إلى كل تلك المواصفات، لكن المهم هو أن تكون الرامات 16 جيجا والهارديسك الخاص بالنظام من نوع SSD لتجنب بطيء النظام والعمل بسلاسة على الجهاز، والمعالج من فئة H وليس U.

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

  8. من الأفضل أن تشاهد Crash Course يوضح لك طريقة استخدام GitHub بدلاً من العناء الغير ضروري الذي يواجهه الكثيرين في البداية، وبعد الشرح ستجد أن الأمر أصبح بسيط، وستجد ذلك متوفر في أكاديمية حسوب من هنا:

    بعد ذلك أنصحك بقراءة التالي:

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

     

  9. بتاريخ 2 ساعة قال علي العبدالله:

    نعم
    لقد قمت باختبار الباك اند في Postman

    والبيانات تُرسل وتخزن بشكل صحيح

     

    وقمت بتعديل الملف في .env لكن لم ينجح الامر

    فضلاً وليس امراً

    ان اتواصل معك عبر الرسائل الخاصة وارسل لك رابط الكود على القت هب

    عليك بإضافة متغيرات البيئة  Environment variables في Netlify تفقد التالي:

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

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

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

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

    وقد يفيدك النقاش التالي:

     

  11. الأمر بسيط، بإمكانك وضع العنصرين الشعار والأيقونة داخل عنصر حاوي لهم أي عنصر أب، ثم إعطاء خاصية flex للعنصر الأب وستظهر العناصر بداخله بجانب بعضها البعض، مع استخدام خاصية gap بقيمة 10 بكسل مثلاً من أجل توفير مساحة بين عناصرالـ  flexbox.

    أو لا داعي لاستخدام الـ Flex حيث يمكنك وضع الشعار والأيقونة داخل عنصر أب حاوي لهم، ثم إعطاء خاصية margin للأيقونة من جهة اليمين أو اليسار بحسب رغبتك، وبذلك سيتم عرضهم بجانب البعض، لكن عليك بإعطاء العنصر الخاص بالأيقونة والشعار خاصية inline-block من أجل أن يتموضع كل منهم بجانب بعضهم البعض، حيث أن عناصر block مثل div تستحوذ على كامل عرض الشاشة وتأتي العناصر الأخرى بعدها في سطر جديد.

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

     

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

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

    وهل البيانات المرسلة بواسطة طلبات API تتم معالجتها بشكل صحيح وتخزينها بنجاح.

    وقد يفيد ااستخدم أدوات التطوير المتاحة مثل تفقد هل يوجد خطأ في الكونسول أو الإعتماد Postman للتحقق من طلبات API الصادرة والاستجابات المستلمة، وتحقق من رموز الاستجابة (response codes) والبيانات المرسلة والمستلمة للتأكد من أنه لا يوجد أي خطأ في عملية استدعاء البيانات وتخزينها.

  13. جميع لغات وبيئات الواجهة الخلفية مطلوبة في سوق العمل، لكن عليك بتفقد المطلوب بنسبة أكبر في السوق المحلي لديك من خلال البحث على الموقع التوظيف مثل LinkedIn بكلمة مفتاحية مثل Back-End developer.

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

    • شكرًا 1
  14. عليك باستيعاب أنه في لغة البرمجة بايثون، تستخدم الإزاحات (Indentations) لتنظيم الكود وتحديد الهيكل والتسلسل الزمني للتعليمات، وعند تضمين تعليمات داخل كتلة معينة مثل الشروط (if/else) أو الحلقات (loops)، نستخدم الإزاحات لتحديد البلوك الذي يتبع الكود.

    لنفترض أن لديك شرط "if" للتحقق مما إذا كانت قيمة متغير ما تساوي 10، فنستخدم الإزاحات لتحديد الكود الذي سيتم تنفيذه في حالة تحقق الشرط كالتالي:

    x = 10
    
    if x == 10:
        print("قيمة x تساوي 10")
        print("هذا الكود ينفذ فقط إذا كانت القيمة تساوي 10")
        
    print("هذا الكود يعمل بعد انتهاء الشرط")

    ولاحظ الإزاحات (المسافات في بداية كل سطر) لتحديد الكود الذي يتم تنفيذه في حالة تحقق الشرط x == 10، والأسطر الملونة تحت الشرط هي جزء من البلوك الذي سيتم تنفيذه فقط إذا كانت القيمة مساوية لـ 10، بينما السطر الملون بالأزرق يتم تنفيذه بغض النظر عن الشرط.

    تستخدم الإزاحات أيضًا في حلقات الكود، مثل حلقة "for"، لتحديد الكود المراد تكراره داخل الحلقة وإليك مثال آخر:

    for i in range(5):
        print("قيمة i هي:", i)
        print("هذا السطر يعمل في كل تكرار للحلقة")
    
    print("هذا السطر يعمل بعد انتهاء الحلقة")

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

     

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

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

  16. هناك عدة طرق لإضافة إمكانية التحديث اللحظي بين شيت إكسل وتطبيق آخر، وأحد تلك الطرق هي استخدام وظيفة "Data Refresh" لتحديث البيانات في شيت الإكسل من مصدر البيانات تلقائيًا كالتالي:

    1. افتح شيت الإكسل الذي تريد تحديث بياناته.
    2. حدد النطاق الذي تريد تحديث بياناته.
    3. انقر على علامة التبويب "بيانات".
    4. في المجموعة "أدوات البيانات"، انقر فوق "تحديث".
    5. في مربع الحوار "تحديث البيانات"، حدد "تحديث كل البيانات" من القائمة المنسدلة "تحديث".
    6. انقر فوق "موافق".

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

    1. افتح شيت الإكسل الذي تريد تحديث بياناته.
    2. انقر على علامة التبويب "بيانات".
    3. في المجموعة "أدوات البيانات"، انقر فوق "استيراد".
    4. في مربع الحوار "استيراد البيانات"، حدد "من Power Query" من القائمة المنسدلة "مصدر البيانات".
    5. حدد مصدر البيانات الذي تريد استيراده.
    6. انقر فوق "موافق".
    7. سيتم الآن استيراد البيانات من مصدر البيانات إلى شيت الإكسل.
    8. لإعداد التحديث التلقائي، انقر بزر الماوس الأيمن على النطاق الذي يحتوي على البيانات المستوردة.
    9. من القائمة المنسدلة، حدد "تحديث".
  17. لا مشكلة ولا تنزعج من ذلك، فذلك أمر وارد وأنا لا أعلم ما الذي مررت به أنت، لكن أحيانًا نحتاج إلى التوقف قليلاً من أجل استكمال حياتنا.

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

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

    وإذا أردت تستطيع البحث على اليوتيوب عن "أساسيات بايثون" وستجد الكثير من الدورات المختصرة.

    وأنصحك بقراءة النقاش التالي فهو مشابه لسؤالك:

    وفي المسار الأول تم استخدام مكتبات قياسية في بايثون، والمكتبة الخارجية التي تم استخدامها هي tabulate.

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

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

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

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

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

    • أعجبني 1
  19. بتاريخ 5 ساعة قال اشرف حسونه:

    اريد كيفية كتابة الكود في netbeans في text field اخر لاظهار كم عمره

    1. عليك بإنشاء واجهة المستخدم في NetBeans، واستخدام JFrame و JTextField لإنشاء مربع نص لإدخال تاريخ الميلاد وزر لحساب العمر، عن طريق نافذة الجديدة، اختر "Java" من القائمة الجانبية اليسرى وحدد "Java Application" ثم انقر فوق "الزر التالي".
    2. بعد ذلك أضف إلى واجهة المستخدم مربع نص JTextField لإدخال تاريخ الميلاد وزر JButton لحساب العمر.
    3. ثم كتابة الكود للحصول على تاريخ الميلاد المدخل وحساب العمر، وسيكون الكود لديك كالتالي بناءًا على الخطوات السابقة:
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    
    public class AgeCalculator extends JFrame {
        private JTextField dateOfBirthTextField;
        private JButton calculateButton;
        private JLabel ageLabel;
        
        public AgeCalculator() {
            initComponents();
        }
        
        private void initComponents() {
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setTitle("حاسبة العمر");
            
            JPanel panel = new JPanel();
            dateOfBirthTextField = new JTextField(10);
            calculateButton = new JButton("احسب العمر");
            ageLabel = new JLabel();
            
            calculateButton.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    calculateAge();
                }
            });
            
            panel.add(dateOfBirthTextField);
            panel.add(calculateButton);
            panel.add(ageLabel);
            
            add(panel);
            pack();
            setVisible(true);
        }
        
        private void calculateAge() {
            String dateOfBirthStr = dateOfBirthTextField.getText();
            
            DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
            try {
                Date dateOfBirth = dateFormat.parse(dateOfBirthStr);
                Calendar today = Calendar.getInstance();
                Calendar birthDate = Calendar.getInstance();
                birthDate.setTime(dateOfBirth);
                
                int age = today.get(Calendar.YEAR) - birthDate.get(Calendar.YEAR);
                
                if (today.get(Calendar.DAY_OF_YEAR) < birthDate.get(Calendar.DAY_OF_YEAR)) {
                    age--;
                }
                
                ageLabel.setText("عمرك هو " + age + " سنة.");
            } catch (Exception e) {
                ageLabel.setText("تاريخ الميلاد غير صالح.");
            }
        }
        
        public static void main(String[] args) {
            new AgeCalculator();
        }
    }

    بعد تشغيل البرنامج ستظهر واجهة المستخدم الخاصة بحاسبة العمر، فقم بإدخال تاريخ الميلاد بتنسيق "dd/MM/yyyy" في مربع النص وانقر على زر "احسب العمر" لعرض العمر في التسمية.

    ولاحظ أن تنسيق تاريخ الميلاد هو "dd/MM/yyyy"، وفي حال كان تنسيق تاريخ الميلاد لديك مختلفًا، يجب تعديل الكود وفقًا لذلك.

  20. عليك بتثبيت حزمة Microsoft Visual Studio 2010 Service Pack 1 من خلال الرابط التالي:

    وبعد التثبيت عليك بإعادة تشغيل الحاسوب، ثم إعادة تثبيت SQL Server مرة أخرى.

    وإذا استمرت المشكلة، من الأفضل أن تقوم بحذف Visual Studio 2010 ثم إعادة تشغيل الحاسوب، وتثبيت  SQL Server، وبعدها تستطيع تثبيت Visual Studio 2010.

  21. الأمر غريب حقًا، حاول إعادة تثبيت بايثون وتثبيت أحدث إصدار من خلال الرابط التالي ولا تنسى إختيار add to path أثناء الثتبيت:

    وأيضًا حاول تغيير الكود للتالي

    import sys
    
    num = int(input("enter the num: "))
    
    sys.exit()

    وجرب استخدام الكود في منفذ الأوامر ولكن خارج vscode، أي قم بكتابة python ثم Enter ثم كتابة الكود الذي تريده لترجمته.

    • أعجبني 1
  22. الكود به عدة أخطاء:

    • في السطر import ttkbootstrap as ttk، الوارد في السطر الثاني، تحتاج إلى استبدالها بـ from tkinter import ttk، حيث أن ttkbootstrap ليس وحدة معترف بها في مكتبة tkinter.
    • في السطر BOOK1 = load_document(file_path)، يجب تمرير القيمة file_path كوسيطة للكائن load_document بدلاً من BATH، وتغيير السطر إلى BOOK1 = load_document(file_path).
    • يجب استدعاء load_file() لتحميل الملف داخل الدالة COLS_V() بعد تعيين قيمة BATH لكائن BOOK1، وتغيير السطر BOOK1.load_file() إلى BOOK1.load_file().
    • تحديث قائمة column_values داخل الدالة COLS_V2() بعد تحميل الملف واستعادة أسماء الأوراق، أي تغيير السطر column_values = BOOK1.workbook.sheetnames إلى column_values = BOOK1.sheet.sheetnames.
    from openpyxl import load_workbook
    from tkinter import ttk, filedialog
    
    class load_document:
        def __init__(self, BATH=None):
            self.BATH = BATH
            self.workbook = None
            self.sheet = None
            
        def load_file(self):
            if self.BATH:
                self.workbook = load_workbook(self.BATH)
                self.sheet = self.workbook.active
    
    BOOK1 = load_document()
    column_values = ()
    
    def COLS_V():
        # اختيار الملف
        file_path = filedialog.askopenfilename(initialdir="C:\\Users\\Cakow\\PycharmProjects\\Main",title="Open file okay?",filetypes=(("text files","*.xlsx"),("all files","*.*")))
        BOOK1 = load_document(file_path)
        BOOK1.load_file()
    
    def COLS_V2():
        global column_values
        column_values = BOOK1.sheet.sheetnames
        # تحديث قيم Combobox
        combo['values'] = column_values
    
    # أدوات الواجهة
    root = ttk.Tk()
    #-----------------------------------------------------------
    frame = ttk.Frame(root)
    frame.pack()
    #-----------------------------------------------------------
    widgets_frame = ttk.LabelFrame(frame, text="إختر الملف")
    widgets_frame.grid(row=0, column=0, padx=20, pady=5, sticky="nsew")
    #-----------------------------------------------------------
    b1 = ttk.Button(widgets_frame, text="إختر الملف", style="info.Outline.TButton", command=COLS_V)
    b1.grid(row=0, column=0, padx=5, pady=5, sticky="ew")
    
    b2 = ttk.Button(widgets_frame, text="إدرج أوراق العمل للقائمة", style="info.Outline.TButton", command=COLS_V2)
    b2.grid(row=1, column=0, padx=5, pady=5, sticky="ew")
    #-----------------------------------------------------------
    combo = ttk.Combobox(widgets_frame, values=column_values)
    combo.grid(row=2, column=0, padx=5, pady=5, sticky="ew")
    root.mainloop()

     

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

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

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

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

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

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

×
×
  • أضف...