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

عبدالباسط ابراهيم

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

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

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

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

    11

أجوبة بواسطة عبدالباسط ابراهيم

  1. هناك طريقة أخرى لتجنب هذا السلوك وهي باستخدام Promise و async/await. يمكن استخدام Promise لتنفيذ الكود بعد فترة زمنية محددة بدلاً من setTimeout، ويمكن استخدام async/await لتجنب تنفيذ الأكواد المحددة في Promise في نفس الوقت.

    مثال على استخدام Promise و async/await:

    function delay(time) {
      return new Promise((resolve) => {
        setTimeout(resolve, time);
      });
    }
    
    async function printHi() {
      for (let i = 0; i < 5; i++) {
        await delay(3000);
        console.log('hi');
      }
    }
    
    printHi();

    في هذا المثال، تم استخدام دالة delay لإنشاء Promise لتأخير تنفيذ الكود بعد فترة زمنية محددة (3 ثوانٍ)، وتم استخدام الكلمة الرئيسية async مع الدالة printHi للسماح باستخدام await داخلها. ثم تم استخدام await داخل حلقة الـ for لتأخير تنفيذ الكود بعد فترة زمنية محددة، وبالتالي تم طباعة "hi" بشكل متتابع بعد فترة زمنية محددة لكل تأخير.

  2. بتاريخ 5 ساعة قال Ali Ali49:

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

    لأن ذلك يحدث ثقلا عند فتح البرنامج في حين كانت ورقة العمل مليئة.

    يمكنك استخدام خاصية lazy loading لتحميل الملف عند الضغط على زر التحميل، وذلك باستخدام دالة openpyxl.load_workbook، وإرجاع الملف المفتوح في دالة __init__ دون تحميله، كما يلي:

    from openpyxl import load_workbook
    
    class W_book:
        def __init__(self, workbook, sheet):
            self.workbook = workbook
            self.sheet = sheet
    
        def load_workbook(self, path):
            self.workbook = load_workbook(path)

    وعند الضغط على زر التحميل، يمكن استدعاء دالة `load_workbook` لتحميل الملف، كما يلي:

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

  3. كما أخبرك مصطفى في التعليق السابق فالخطأ في الخاصية innerHtml تكتب بالشكل التالي innerHTML 

    لتسهيل العملية، يمكن استخدام أدوات المطورين في المتصفح مثل "DevTools" في Google Chrome 

    • افتح متصفح الويب الخاص بك (مثل Google Chrome أو Mozilla Firefox).
    • انقر بزر الماوس الأيمن في أي مكان على الصفحة واختر "Inspect" أو "Inspect Element" أو "Developer Tools" أو ما شابه ذلك، وذلك يعتمد على المتصفح الذي تستخدمه.
    • ستظهر أدوات المطورين في الجزء العلوي أو السفلي من نافذة المتصفح، ويمكنك التنقل بين علامات الشريط الجانبي للوصول إلى الأدوات المختلفة المتاحة، مثل عرض العناصر، وعرض الشبكة وعرض الكونسول.
    • يمكنك استخدام أدوات المطورين لتحديد وتعديل عناصر HTML وCSS، والتحقق من الأخطاء النحوية والمنطقية في JavaScript، وتحليل مدى تحميل الصفحة وأداء الصفحة بشكل عام.

    وللمزيد من المعلومات يفضل الإطلاع على المقالة التالية

     

  4. المشكلة في هذا الكود هي عدم استدعاء الدالة validate() عند الضغط على زر الإرسال (submit)، وبالتالي لن يتم التحقق من صحة البيانات المدخلة (Data validation)، ولن يتم إلغاء إرسال النموذج (Event) عندما تكون البيانات غير صالحة.

    يمكن حل المشكلة عن طريق إضافة استدعاء للدالة validate() في حدث إرسال النموذج (submit event) في النموذج، ويمكن القيام بذلك بإضافة "return validate();" إلى الحدث onsubmit في النموذج، كما يلي:

    <form onsubmit="return validate();">
        <label for="username">insert your age</label><br>
        <input id="username" type="username"><br>
        <label for="checkbox">I agree to the terms</label>
        <input id="checkbox" type="checkbox"><br>
        <input type="submit">
    </form>

    وبهذا، عند الضغط على زر الإرسال (submit)، سيتم استدعاء الدالة validate() وسيتم التحقق من صحة البيانات المدخلة وإلغاء إرسال النموذج عندما تكون البيانات غير صالحة.

  5. بتاريخ 31 دقائق مضت قال احمد قابل هاشم ألصميدعي:

    احسنت اخي تم حل المشكلة مثل هكذا اخطاء كيف استطيع معرفتها .خطر كل شي ببالي الا العرض ؟ ما سبب ذلك 

    أخطاء ال css عادة تنحصر في الأخطاء التالية

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

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

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

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

    • إعدادات الإشعارات في iOS: يمكن أن تتأثر إعدادات الإشعارات في iOS بتحديثات النظام أو الإعدادات الشخصية للمستخدم. تحقق من إعدادات الإشعارات في iOS وتأكد من أنها مفعلة ومضبوطة بشكل صحيح.
    • مشكلة في مكتبة Firebase Messaging: قد يكون هناك مشكلة في مكتبة Firebase Messaging التي تستخدمها في تطبيقك. يمكنك محاولة تحديث مكتبة Firebase Messaging إلى أحدث إصدار أو التحقق من الأخطاء والتحذيرات المطبوعة في وحدة التحكم الخاصة بـ Firebase.
    • القيود المفروضة على التطبيق: يمكن أن يفرض نظام iOS قيودًا على تطبيقات الجوال التي تستخدم الإشعارات. قد يتم حظر التطبيق أو تقييده بسبب انتهاكات معينة. تحقق من سياسات App Store وتأكد من أن التطبيق الخاص بك يلتزم بالقواعد والمتطلبات.
    • يمكن أن يكون APNs certificate أحد الأسباب المحتملة أيضًا. 

    • يمكن أن يقوم iOS بإيقاف تشغيل تطبيقات "خلفية" لتوفير البطارية.

       

  7. بتاريخ 3 ساعة قال Abdulaziz Alshmmri:

    السؤال الثاني مثلا صنعت موقع ويب وله backend python هل اذا صنعت له نسخة للجوال مثلا بلغة سويفت واجه مستخدم استطيع استخدام backend python ولا لا له backend خاص للجوال هذا سؤال يدور في راسي ومحيرني .

    سأحاول شرح السؤال الثاني بالتفصيل اكثر 

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

    على الرغم من استخدام لغات مختلفة في الواجهة الأمامية لتطبيقات الويب والجوال (مثل ReactJS و AngularJS و VueJS لتطبيقات الويب و Swift و Kotlin لتطبيقات الجوال) ، يتم استخدام لغات الـ backend الشائعة مثل Python و Ruby و PHP و Node.js وغيرها لتطوير backend الخاص بالموقع الإلكتروني وتطبيق الجوال.

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

    بعد ذلك ، يمكن لتطبيق الجوال الاتصال بـ backend باستخدام API واجهة الـ backend و استرداد البيانات بصيغة JSON. يمكن استخدام مكتبات الشبكة المختلفة في Swift مثل Alamofire و URLSession للاتصال بـ backend واسترداد البيانات المطلوبة.

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

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

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

  8. بالإضافة للحل الذي قدمه عدنان في التعليق السابق يبدو أنك لا تريد استخدام div حول العنصرين p لذلك يمكنك استخدام قوسين زاويين فارغين (<> </>) بدلاً من <div> لتجميع العناصر المرجعية في عنصر واحد. يتم استخدام قوسين زاويين بدلاً من العنصر <div> الذي يؤدي إلى إضافة عنصر <div> زائد في الشجرة الأساسية للتطبيق.

    function Text(props){
        return (
          <>
              <p>{props.text}</p>
              <p>{props.children}</p>
          </>
        )
    }

     

  9. بتاريخ 11 ساعة قال Drive Man:

    مش فاهم النقطة الاخيرة دى 

     

    هذا الكود ينشئ شريط تقدم (progress bar) في تطبيق Android كالتالي

    السطر الأول في الكود يقوم بإنشاء ProgressBar object جديد باستخدام ال constructor الذي يأخذ ثلاثة مدخلات:

    • Context object: وهو العنصر الذي يحتوي على الإطار الزمني للتطبيق والذي يسمح باستخدام موارد النظام.
    • AttributeSet object: وهو معيار إدخال يحتوي على السمات الخاصة بالعنصر. في هذه الحالة ، يتم تمرير null.
    • ProgressBar style: وهو النمط الذي يستخدم لتحديد شكل الشريط. في هذه الحالة يتم استخدام النمط progressBarStyleHorizontal لتحديد شكل الشريط الأفقي.

    السطر الثاني في الكود يقوم بإنشاء LinearLayout.LayoutParams object جديد وتعيين القيم اللازمة لعرض وارتفاع الشريط. يتم تعيين قيمة العرض إلى MATCH_PARENT وهي تعني أن الشريط سوف يأخذ عرضًا مماثلًا لعرض عنصر الأب الذي يحتوي عليه. ويتم تعيين الارتفاع إلى 20dp، ويتم تمرير هذه القيم إلى الشريط باستخدام setLayoutParams() method.

    السطر الثالث في الكود يقوم بتعيين القيمة الافتراضية للشريط باستخدام setProgress() method. يتم تعيين القيمة الحالية للشريط إلى الصفر في هذه الحالة.

    السطر الرابع في الكود يقوم بتعيين الحد الأقصى للشريط باستخدام setMax() method. يتم تحديد الحد الأقصى للشريط إلى 100 في هذه الحالة.

    السطر الخامس في الكود يقوم بإضافة الشريط إلى الـ layout الخاص به باستخدام addView() method. يتم تمرير الشريط الذي تم إنشاؤه في السطر الأول إلى الـ layout باستخدام هذا الـ method.

    • شكرًا 1
  10. لا يعد علم البيانات (Data Science) شرطًا أساسيًا للتعلم الآلي (Machine Learning)، ولكن يمكن أن يكون مفيدًا. يركز التعلم الآلي على تطوير الخوارزميات والنماذج التي يمكنها التعلم من البيانات، بينما يشمل العلم البيانات مجالات أوسع تتضمن جمع البيانات ومعالجتها وتحليلها وتفسيرها. على الرغم من أن فهمًا جيدًا للعلم البيانات يمكن أن يساعد في تطوير وتطبيق نماذج التعلم الآلي، إلا أنه ليس شرطًا صارمًا. ومع ذلك، ينطوي التعلم الآلي في كثير من الأحيان على العمل مع مجموعات بيانات كبيرة، لذلك فإن فهمًا أساسيًا لتحليل وتلاعب البيانات مهم.

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

    حسب موقع " indeed "

    تنبؤ مكتب العمل الأمريكي بأن الطلب على وظائف تحليل البيانات سينمو بنسبة 23% بين عامي 2021 و2031، بمعدل أسرع بكثير من المتوسط البالغ 5% لجميع الصناعات الأخرى.

     

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

    • أعجبني 1
  12. في جافاسكريبت، يعني "document" وثيقة HTML التي يتم تحميلها في المتصفح، ويتم استخدامها للوصول إلى عناصر HTML الموجودة في هذه الوثيقة والتحكم بها. ويعتبر "document" من العناصر الأساسية في جافاسكريبت لأنه يتيح للمطورين الوصول إلى المحتوى الذي يتم عرضه في المتصفح والتحكم به.

    ومن أهمية "document" في جافاسكريبت:

    • الوصول إلى عناصر HTML: يتيح "document" للمطورين الوصول إلى عناصر HTML الموجودة في الصفحة والتحكم بها، مثل تغيير النص، تغيير الألوان، إضافة أو حذف العناصر، وغيرها.
      // الحصول على عنصر HTML الذي يحمل الهوية "myElement"
      var element = document.getElementById("myElement");
      
      // تغيير نص العنصر إلى "Hello World!"
      element.innerHTML = "Hello World!";
      
      // تغيير لون خلفية العنصر إلى اللون الأحمر
      element.style.backgroundColor = "red";

       

    •  التفاعل مع المستخدم: يمكن استخدام "document" للتعامل مع الحدث الذي يتم تنشيطه من قبل المستخدم، مثل النقر على زر، أو إدخال بيانات في حقل النص.
      // الحصول على زر HTML الذي يحمل الهوية "myButton"
      var button = document.getElementById("myButton");
      
      // إضافة حدث النقر على الزر
      button.addEventListener("click", function() {
        // تنفيذ الأكواد التي ترد هنا عند النقر على الزر
        alert("Button clicked!");
      });

       

    •  التحكم في الصفحة بشكل ديناميكي: يمكن استخدام "document" لتغيير تصميم الصفحة وعرض المحتوى بشكل ديناميكي، مثل تحديث المحتوى بدون إعادة تحميل الصفحة.
      // الحصول على عنصر HTML الذي يحمل الهوية "myList"
      var list = document.getElementById("myList");
      
      // إضافة عنصر جديد إلى القائمة
      var newItem = document.createElement("li");
      newItem.innerHTML = "New item";
      list.appendChild(newItem);

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

  13. اختيار النمط المناسب يعتمد على متطلبات المشروع وطبيعة التطبيق. لكن بشكل عام:

    MVVM يناسب:  

    •  التطبيقات المعقدة والكبيرة خاصة مع  Repository pattern.
    •  عند الحاجة إلى عزل طبقة العرض تماما عن المنطق. 
    •  يساعد على اختبار الـViewModel بشكل أفضل.

    Repository pattern يناسب:

    •  المشاريع التي لديها مصادر بيانات متعددة (مثل Room وRetrofit و SharedPreferences).
    •  تبسيط التعامل مع هذه المصادر في التطبيق.
    •  يسهل اختبار وحدات Repository.

    ملخصا، كل نمط له ميزاته الخاصة والأفضل دمج أكثر من نمط للاستفادة من مزاياها مثل:

    •  MVVM + Repository : لتطبيقات أندرويد كبيرة ومعقدة.
    • -MVP : لتطبيقات صغيرة حيث البساطة مطلوبة. 

    ولكن السؤال هل يمكن استخدام أكثر من نمط في نفس التطبيق؟

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

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

  14. عنوان MAC (Media Access Control Address) هو عنوان فريد لكل واجهة شبكة في جهاز الكمبيوتر. وهو عبارة عن معرف مكون من 6 بايتات (Bytes) بصيغة هيكلية، ويستخدم لتحديد جهاز الكمبيوتر في شبكة محلية. يتم تعيين عنوان MAC لجهاز الكمبيوتر من قبل الشركة المصنعة للجهاز، ولا يمكن تعديله.

     عناوين MAC لا ترسل عبر الإنترنت ولكنها تستخدم فقط في شبكات الاتصالات المحلية (LAN) وعادةً ما تستخدم لتحديد المعدات المتصلة بها. وعندما يرسل جهاز الكمبيوتر طلبًا للاتصال بجهاز آخر في شبكة محلية، فإنه يرسل البيانات بعنوان MAC الخاص بالجهاز المستهدف ليتم توجيه الحزمة بشكل صحيح.

    عنوان IP، على الجانب الآخر، يستخدم في توجيه البيانات عبر الإنترنت. ويتم تعيين عنوان IP لكل جهاز متصل بالإنترنت ويتم استخدام هذا العنوان لتحديد موقع الجهاز وتوجيه البيانات الواردة إليه. ويمكن الحصول على عنوان IP الخاص بالزائر باستخدام الدالة `$_SERVER['REMOTE_ADDR']` في PHP .

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

    ومن المهم ملاحظة أنه يمكن تغيير عنوان IP للزائر عن طريق استخدام خادم وكيل (Proxy Server) أو شبكة VPN (Virtual Private Network)، مما يجعل العنوان المعاد من `$_SERVER['REMOTE_ADDR']` غير دقيق في بعض الأحيان. لذلك، يجب استخدام العناوين IP كمعيار تحديد دقيق للمستخدمين.

  15. يمكن حفظ الصورة مع إضافة وصف لها في Adobe Photoshop عن طريق تعديل خصائص الملف. يمكنك اتباع الخطوات التالية:

    1. افتح الصورة في Adobe Photoshop.
    2. انقر فوق File (الملف) في الشريط العلوي واختر File Info (معلومات الملف).
    3. في نافذة File Info (معلومات الملف)، انتقل إلى علامة IPTC وأدخل الوصف المطلوب في الحقل المناسب.
    4. انقر فوق OK (موافق) لحفظ الإعدادات.

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

    ومن المهم ملاحظة أن بعض خدمات التواصل الاجتماعي مثل Facebook تستخدم بيانات EXIF المدمجة في الصورة لعرض معلومات الصورة مثل الموقع الجغرافي والكاميرا المستخدمة. لذلك، قد ترغب في التحقق من إعدادات الصورة المدمجة في Adobe Photoshop لتحديد ما إذا كنت تريد تضمين هذه المعلومات مع الصورة عند نشرها.

  16. يمكن تحديث قيمة قائمة منسدلة في Tkinter باستخدام المتغيرات النصية StringVar. يمكنك تعريف متغير StringVar باستخدام الدالة StringVar() وتعيينه لقائمة منسدلة باستخدام خاصية القيمة (value) للقائمة المنسدلة.

    فيما يلي مثال عن كيفية تحديث قيمة قائمة منسدلة باستخدام متغير StringVar:

    import tkinter as tk
    
    root = tk.Tk()
    
    # تعريف متغير StringVar 
    selected_option = tk.StringVar()
    
    # قائمة المنسدلة
    options = ['Option 1', 'Option 2', 'Option 3']
    dropdown = tk.OptionMenu(root, selected_option, *options)
    dropdown.pack()
    
    # دالة التحديث لقائمة المنسدلة
    def update_dropdown():
        new_options = ['New Option 1', 'New Option 2', 'New Option 3']
        dropdown['menu'].delete(0, 'end')
        for option in new_options:
            dropdown['menu'].add_command(label=option, command=tk._setit(selected_option, option))
        selected_option.set(new_options[0])
    
    # زر التحديث
    update_button = tk.Button(root, text="Update Dropdown", command=update_dropdown)
    update_button.pack()
    
    root.mainloop()

    في هذا المثال، تم تعريف متغير StringVar باسم selected_option وتعيينه لقائمة منسدلة باستخدام خاصية القيمة (value) للقائمة المنسدلة. ثم تم إنشاء دالة update_dropdown() التي تحدث القائمة المنسدلة باستخدام خاصية القائمة (menu) وتعيين الخيار المحدد لأول خيار في القائمة الجديدة. وأخيرًا، تم إنشاء زر update_button الذي يقوم بتحديث قائمة المنسدلة عند النقر عليه.

  17. يجب عليك محاولة معرفة الخطأ الذي يظهر لك حتى تستطيع حل المشكلة بنفسك ولنتعرف أولاً على SyntaxError

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

    مثال على ذلك، عندما تكتب دالة وتنسى قوسًا ) لتغليف الشفرة، فستتلقى SyntaxError مع رسالة محددة جدًا عن ما تفتقده. وهذا ما نراه في المثال التالي:

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

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

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

    يمكن أيضًا أن تواجه خطأ SyntaxError عندما تحتاج إلى عنصر صغير ولكن حاسم في الشفرة الخاصة بك، مثل النقطة الزائدة + بعد اسم المتغير. عندما تواجه SyntaxError: Unexpected token، تحقق جيدًا من شفرتك لمعرفة وجود مشغلات مفقودة أو إضافية مثل علامة الجمع (+).

    حاول الإطلاع على المقالة التالية للمزيد من المعلومات

     

  18. بتاريخ 3 دقائق مضت قال Ahmed Shawky Mohamed Aly El Karra:

    شكرا جزيلا لحضرتك 

    عندي سؤال اخر بعد اذنك هل يمكن اختصار او تجاوز  بعض دروس

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

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

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

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

    • أعجبني 2
  19.  يعتمد الأمر على العوامل التالية:

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

    العلامة الشخصية: هل تعرف كيفية استخدام LinkedIn بشكل فعال؟ إذا لم يكن الأمر كذلك، فأنت تتأخر، فأسهل طريقة للحصول على مقابلة في هذه الشركات هي الحصول على توجيه (referral) . يجب عليك التواصل مع الأشخاص على LinkedIn للحصول على الreferrals.

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

  20. بتاريخ 1 ساعة قال Ali Ahmed39:

    يعني المهندس ده اتعلم حاجات كتير  يعني برمجه ويب وموبيل وكمان Ai

    ماشاء الله

    ليس شرطا أن يتعلم المهندس البرمجي Software Engineer مجالات متنوعة كثيرة. فيمكن أن يتخصص المهندس البرمجي في مجال محدد:

    • قد يتخصص في تطوير تطبيقات الويب Web Development ، ويتعلم لغات الـ PHP أو Node.js أو .NET بشكل مكثف.
    • أو يتخصص في تطوير التطبيقات على الهواتف الذكية Mobile App Development ويتعلم لغات كـ Swift أو Java أو Kotlin.
    • أو يتخصص في مجال ذكاء اصطناعي AI ويتعلم لغات برمجة خاصة بذلك كـ Python للتعلم الآلي Machine Learning.

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

    وللتوضيح أكثر قم بقراءة المقالات الموجودة في التعليق السابق

    • أعجبني 1
  21. الخطأ الموجود بسبب  Flutter 3.7.11 لا يعمل مع Gradle 8 وتم حل هذه المشكلة في الإصدار Flutter 3.7.12 كما في هذا الرابط

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

    لذلك تحتاج لتنفيذ الأمر التالي 

    flutter upgrade

    ويبج أن يعمل المشروع كما يجب

  22. يمكن استخدام العنصر "code" في HTML لعدة أغراض، منها:

    • عرض شفرة البرمجة: يمكن استخدام العنصر "code" لعرض الشفرة البرمجية وتسهيل قراءتها وفهمها. على سبيل المثال:
    <code>
    function sum(a, b) {
      return a + b;
    }
    </code>
    • عرض رسائل الخطأ: يمكن استخدام العنصر "code" لعرض رسائل الخطأ والتحذيرات التي تظهر في صفحة الويب، مثل رسائل الخطأ التي تظهر في وحدة تحكم المطور. على سبيل المثال:
    <code>
    
    Uncaught TypeError: Cannot read property 'length' of null
    
    </code>

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

    <code>
    Subject: Error message
    
    An error has occurred while processing your request. Please try again later.
    </code>

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

  23. بتاريخ On 2‏/6‏/2023 at 09:21 قال Ali Ahmed39:

    هو يتكون من front ,back بس ؟

    لا، مجال تطوير الويب (Web Development) لا يتكون فقط من الجانب الأمامي (Front-end) والجانب الخلفي (Back-end)، بل يتضمن أيضًا جوانب أخرى مثل:

    • تصميم الواجهة الرسومية (UI/UX Design): وهو العمل على تصميم واجهة المستخدم وتجربة المستخدم لتحسين تفاعلاته مع الموقع أو التطبيق.
    • قواعد البيانات (Database): وهو العمل على تصميم وتطبيق وصيانة قواعد البيانات المستخدمة في تطبيقات الويب.
    • الأمان والحماية (Security): وهو العمل على تطوير وتنفيذ الإجراءات اللازمة لحماية التطبيقات والمواقع من الاختراقات والهجمات السيبرانية.
    •  اختبار وتحليل الأداء (Testing and Performance Analysis): وهو العمل على اختبار وتحليل أداء التطبيقات والمواقع لضمان تجربة مستخدم سلسة وخالية من الأخطاء.
    • إدارة المشاريع (Project Management): وهو العمل على إدارة عملية تطوير الموقع أو التطبيق من البداية إلى النهاية، وضمان تنفيذ المشروع بالطريقة الصحيحة وفي الوقت المحدد.
    • DevOps هو جزء من تطوير الويب (Web Development)، وهو عبارة عن مجموعة من الممارسات والأدوات التي تستخدم لتحسين عملية تطوير الويب وتسريع وتحسين نشر التطبيقات والمواقع الإلكترونية.

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

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

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

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

    • أعجبني 1
  24. بتاريخ 20 ساعة قال طالب علم4:

    شكرا على ايضاحك للأمور ولكنني بالفعل تعلمت لغة

    Cs وتمرنت على استخدام المحرك يونيتي

    مقصدي  ما هي المواقع او التطبيقات التي تساعدني

    في رسم وتصميم الشخصيات و المراحل التي سأضعها

    في لعبتي ؟ وشكرا على نصحكم لي

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

    • Adobe Photoshop: هو برنامج تصميم متعدد الاستخدامات يمكن استخدامه لتصميم الشخصيات والمراحل في الألعاب.
    • Blender: برنامج تصميم ثلاثي الأبعاد يمكن استخدامه لتصميم الشخصيات والمراحل في الألعاب.
    • Sketch: برنامج تصميم متخصص في تصميم واجهات المستخدم والشخصيات.
    • Procreate: تطبيق رسم يمكن استخدامه لرسم الشخصيات والمراحل في الألعاب.
    • Paint Tool SAI: برنامج رسم وتصميم يمكن استخدامه لرسم الشخصيات والمراحل في الألعاب.
    • Dalle-2 و Stable Diffusion: خدمتان تستخدمان الذكاء الاصطناعي لإنشاء صور استنادًا إلى وصف نصي. يمكنك توليد صور توضيحية لشخصياتك أو مناظر لمراحلك المختلفة. 
    •  ArtBreeder: موقع يستخدم الذكاء الاصطناعي لخلط صور وإنشاء شخصيات هجينة. يمكنك استخدامه لإنشاء نماذج لشخصياتك.
    • Anthropic: خدمة تستخدم الذكاء الاصطناعي لتوليد إطارات حركية للشخصيات بناءً على وصف نصي.
    • Clip Studio Paint: برنامج رسم يدعم خدمات الذكاء الاصطناعي لتسريع عملية إنشاء الرسوم المتحركة وتلبية طلباتك.
  25. بتاريخ 21 ساعة قال Alaa Abdallah2:

    هو ابلكيشن جاهز انا محمله لخصت الايرو الي اعرفها فضل دولت بقاا 

    تم استبدال  FlatButton  في إصدارات فلتر الأحدث.

    وهناك بعض الخيارات البديلة لاستبدال  FlatButton :

    TextButton:

    TextButton(   
      onPressed: () { /* ... */ },    
      child: Text('Text'),  
     )

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

    OutlinedButton:

    OutlinedButton(  
     onPressed: () { /* ... */ },     
     child: Text('Text'),    
    ) 

    يُعرض   OutlinedButtonزرًا مسطحًا له إطار. وبشكل  مماثل لـ TextButton ، فإنه يتكيف مع حجمه ليتناسب مع طفله.

×
×
  • أضف...