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

Wael Aljamal

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

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

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

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

    218

إجابات الأسئلة

  1. إجابة Wael Aljamal سؤال في نسيان المعلومات التي درستها ضمن مسارات في الدورة كانت الإجابة المقبولة   
    يمكنك حل مشكلة النسيان بمراجعة كل مسار على حدى بعد الانتهاء منه لتثبيت المعلوامات بالإضضافة لما تقوم به من تطبيق، ثم لا مانع من كتابة ملاحظات حول جميع الأفكار المفيدة التي تمر معك،..
    بشكل عام، سوف تحفظ الدوال و الخواص لكن بعد مدة زمنية من التطبيق، ومن الصعب حفزهم مباشرة، ولا مانع من استخدام موسوعة حسوب أو البحث في الانترنت عن أي دوال و شيفرات برمجية و فهمها واستخدامها، أي حتى المبرمجين الخبراء يقومون بمراجعة لمواقع التوثيق الرسمي للتقنيات و استذكار وسطاء دالة ما، وغيرها من الأمور البرمجية، لا يتم الاعتماد على الذاكرة في كل شيء، بل البحث و التعلم المستمر.
  2. إجابة Wael Aljamal سؤال في استعمال المعاملات المنطقية AND, OR, NOT ضمن جملة شرطية PHP / SQL كانت الإجابة المقبولة   
    تمام، نعمل and بين أول شرط state = 0 مع الجزء الآخر للجملة، لكن لن تعمل state = 1 لأنها للتو قيمتها 0
    WHERE state = 0 AND ( name Like ? OR Table1.IdTable1 Like ? )";  
  3. إجابة Wael Aljamal سؤال في ظهور اسم الملف ولاحقته عند فتح ملفات HTML المحلية في المتصفح كانت الإجابة المقبولة   
    هذا هو التصرف الافتراضي السليم لفتح ملف html في نظام الملفات المحلية للحاسوب، لماذا تتوقع من المتصفح فتح ملف إن تم تمرير مسار مجلد؟
    في مخدمات الويب يتم إعادة تعريف الطلبية و تقوم بإخفاء أسماء امتداد الملف ولكن بطبيعة الحال ما يتم عرضه هو محتوى ملف.
    في مخدم الويب Apache يتم استخدام ملف .htaccess يتم ضمنه كتابة قواعد تسمية. المسارات و منها يتم إخفاء اسم أو اسم ولاحقة الملف 
    مثلا نريد إظهار
    example.com/content بدل
    example.com/content.html  فنستعمل مخدم ويب مع وضع ملف .htaccess في المجلد الجذر للمشروع و فيه الشيفرة 
     
    RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.html [NC, L] ^^^^^^  
     
  4. إجابة Wael Aljamal سؤال في سبب ارتفاع درجة حرارة الحاسوب عند مشاهدة اليوتيوب كانت الإجابة المقبولة   
    لدى المعالج خاصتك 2 من نوى المعالجة مع 4 مسالك، وهو جيل قديم. وعندما يكون هنالك عدد قليل من النوى و عمليات معالجة كبيرة سوف يتم بالضرورة رفع تردد المعالج ليتسطع إنهاء المهمات بوقت مناسب مما يرفع حرارته.
    لذلك يمكن أن تأخذ الحاسوب للصيانة لتغيير معجون التبريد و تنظيف المراوح أو استبدالهم. إغلاق البرامج التي لا تستخدمها تحديث نظام التشغيل و المتصفحات التي من الممكن أن تحدث برمجيات فك ترميز الفيديو مما يحل مشاكل الأداء نظام التشغيل من الممكن أنه غير محسن لعرض الفيديو optimized  فك ترميز الفيديو و خاصة بالدقة المرتفعة هو ليس بالشيء البسيط، و يتطلب معالجة كثيرة، كما يتطلب اتصال الشبكة أي أن adapter الاتصال أيضاً يقوم بتبادل بيانات مما يأخذ قوة معالجة.
    وتختلف سرعة فك ترميز و معالجة البيانات حسب مجموعة تعليمات المعالجة المدعومة (يوجد معالجات أسرع من غيرها)
    ربما بعض مكونات الحاسوب غير متوافقة مع التعريف Drivers لذلك جرب التثبيت بالأمر
    sudo ubuntu-drivers autoinstall من الممكن تفعيل GPU accelerated video playback وضع تسريع الفيديو في متصفح FireFox
    layers.acceleration.force-enabled layers.omtp.enabled layout.display-list.retain ولغة جافاسكربت التي تعمل في المتصفح تستهلك موارد بشكل أكبر نسبياً من باقي اللغات.
    يمكنك تجريب متصفح آخر مثل Opera أو Edge لأن عملية تشغيل الفيديو ربما يكون لها تحسينات في متصفحات أخرى مثل غوغل كروم chrome. أو تشغيل الفيديو عن طريق VLC 
    بشكل عام: ارتفاع حرارة الحواسيب القديمة عند تشغيل مهمات متوسطة في أيامنا هذه تعتبر عادية.
  5. إجابة Wael Aljamal سؤال في عدم عمل القائمة الجانبية الداخلية المشتركة بين صفحتين HTML و أكواد جافاسكربت كانت الإجابة المقبولة   
    القائمة تفتح ولكن داخلها لا يعمل، يظهر خطأ
    Uncaught TypeError: searchSon.children is not a function سببه أن دالة children مقدمة من جيكويري لذلك عدل التالي:
    let searchSon = $("#searchSon"); ^^^^^^^^^^^^^^^ ... searchSon.children("div").onmouseout = function () { // ^^^^^^^^^^^^^^^^^^ searchSon.style.backgroundColor = "green"; }; وفي صفحة all activity 
    Uncaught TypeError: Cannot set properties of null (setting 'onclick') لأن business غير موجودة فيها.
    ************
    بعد بحث طويل تبين أن سببب عدم عرض القائمة الجانبية الداخلية هو أنط قمت بتعريفها ضمن قسم question ب questionsContent أي لم تكن مضمنة في صفحة النشاطات activity
    بعد نقل الجزء التالي من index إلى all activity عملت القائمة الداخلية
    <section class="questions"> <div class="container"> <div class="questionsContent"> <div class="row"> <div class="mr-lg-5 business" id="business">ريادة الاعمال</div> <div class="mr-lg-5 freelancing" id="freelancing">العمل الحر</div> <div class="mr-lg-5 marketing" id="marketing">التسويق و المبيعات</div> <div class="mr-lg-5 programming" id="programming">البرمجة</div> <div class="mr-lg-5 design" id="design">التصميم</div> <div class="mr-lg-5 devops" id="devops">DevOps</div> <div class="mr-lg-5 app" id="app">البرامج و التطبيقات</div> <div class="mr-lg-5 spicialist" id="spicialist">الشهادات المختصة</div> </div> </div> </div> </section>  

    كان السؤال غير واضح ولا يحوي تفاصيل .. المشكلة ليست في أكواد جافاسكربت بل عدم وجود هيكلية HTML الخاصة بالقائمة الداخلية
  6. إجابة Wael Aljamal سؤال في كيفية القيام بإظهار POP UP بعد المرور على الصورة الشخصية للمستخدم باستخدام jQuery كانت الإجابة المقبولة   
    توصلت لحل جيد بالاستعانة مع set time out - setTimeout أي إعطاء وقت للمستخدم للانتقال ل pop up قبل إخفاء الصورة الحالية، مع التخلص من set time out في حال انتقل ل pop up بالاستعانة ب clear time out - clearTimeout
    // معرف المؤقت let timeoutID; // صورة المستخدم $(".img img") .on("mouseover", function () { $(this).next().slideDown(500); // إظهار التفاصيل بعد }) .on("mouseleave", function () { timeoutID = setTimeout(() => { // إخفاء التفاصيل بعد مغادرة الفأرة لها $(this).next().slideUp(500); }, 300); }); // عنصر التفاصيل $(".img img") .next() .on("mouseover", function () { // عند وضع المؤشر نوقف دالة الإخفاء clearTimeout(timeoutID); $(this).next().slideDown(500); }) .on("mouseleave", function () { // عند خروج المؤشر نخفي العنصر $(this).slideUp(500); });  
  7. إجابة Wael Aljamal سؤال في لا يمكنك طرح هذا الاصدار لانه لا يسمح لاى من المستخدمين الحاللين بالترقية ..... بعدما رفعت التطبيق على جوجل ستور ظهرت لى هذه المشكلة .. ما الحل ؟ كانت الإجابة المقبولة   
    يوجد لتطبيق أندرويد ما يدعى versionCode وهو غير versionName تأكد من زيادة قيمته ليستطيع غوغل بلاي تمييز هذا الإصدار بأنه أحدث من السابق 
    يمكنك تعديله ضمن
    app/build.gradle كهذه:
    android { ... defaultConfig { ... versionCode = 2 versionName = "1.1" } productFlavors { create("demo") { ... versionName = "1.1-demo" } create("full") { ... } } } رسالة الخطأ بالانكليزي:
    You can't rollout this release because it doesn't allow any existing users to upgrade to the newly added app bundles ثم أعد بناء المشروع و رفعه على المتجر
  8. إجابة Wael Aljamal سؤال في ماهي شروط تعريف الواجهة interface كانت الإجابة المقبولة   
    الشروط بالنسبة للدوال methods: يجب أن لا تملك جسم body و أن تكون public
    interface result { public void number(); } بدون جسم أي بدون اكواد فلا يجوز وضع أي شيفرة فيها:
    interface myinterface { public void printer(){ System.out.peintln()/// خطأ }; } بالنسبة للمتغيرات: يجب أن تحمل قيمة فهي public final مثال: (وضع محدد الوصول اختياري)
    interface point { int x = 0, y = 0; } تقبل الواجهات تعريف أصناف متداخلة فيها و واجهات أخرى
    public interface mainInterface { class A { .. } interface B { .. } }  
  9. إجابة Wael Aljamal سؤال في خطأ استدعاء دالة تمت وراثتها من واجهة برمجية interface بعد أن تم التصريح عنها وعن الدوال بشكل صحيح لكن حصلت مشكلة اخرى كانت الإجابة المقبولة   
    ينقص تعريف الدالة number ضمن الصنف admin عمل override بالإضافة لتحديد محدد الوصول Access Modifier كما تم تعريفها ضمن الانترفيس public* (تلقائية ولكن بعد إعادة التصريح عن الدالة يجب وضع نفس محدد الوصول) لتصبح:
    class admin implements result{ @override // هنا public void number(){ // ^^^ System.out.print("Total"); } }  
  10. إجابة Wael Aljamal سؤال في خطأ عند تعربف الدوال ضمن الانترفيس interface بهذا الشكل لماذا أواجه مشكلة عند وضع محدد وصول Access Modifier كانت الإجابة المقبولة   
    الدوال ضمن الانترفيس interface هي في الأساس abstract method لذلك لا حاجة لوضع كلمة abstract قبلها عند تعريف أي دالة بداخله والدوال بداخله جميعها تعتبر public 
    ولا يمكن تعريفها private أو final أو  Static أو final public void num();✅ private void dis();❎ حتى يمكن تجاهل كتابة public
     
  11. إجابة Wael Aljamal سؤال في لماذا أواجه مشكلة عندما أقوم بتعريف متغيرات في الانترفيس من دون اعطاءها قيمة كانت الإجابة المقبولة   
    متغيرات الانترفيس interface تعتبر معرفة ك public final static حتى ولو لم نقم بذلك، أي يتوجب علينا إعطاءها قيمة نهائية (غير قابلة للتعديل لاحقاً).
    interface admin { int p = 0; // مثلاً }  
  12. إجابة Wael Aljamal سؤال في ماوظيفة معامل التساوي الثنائي "==" في جافاسكريبت كانت الإجابة المقبولة   
    إن استخدام = يقوم بتعديل قيمة الخاصية display،  بينما == سوف تختبر قيمة display و تعيد true | false وهي لا تنفع في حالتنا هنا.. أنت تريد عرض / إخفاء عناصر من القائمة حسب وجودها أو عدم وجودها حسب الشرط السابق. ويتم ذلك كما قمت بالضبط و باستعمال = (== هي تعمل شرط) يعني إن كنت تريد التأكد من هل قيمة display نكتب == 
    if (allLi[i].style.display == "block") { // العنصر ظاهر } // none // مخفي  
  13. إجابة Wael Aljamal سؤال في مشكلة انشاء مستخدم في user in phpmyadmin كانت الإجابة المقبولة   
    حاول فتح ملف إعدادت config.inc.php من لوحة xampp ثم تأكد من أن السطر التالي قيمته true و إن لم يكن موجو أضفه 
    $cfg['Servers'][$i]['DisableIS'] = true; ثم أعد تشغيل المخدم ليتم الأخذ بالتعديلات
  14. إجابة Wael Aljamal سؤال في مشكلة عند محاولة الاتصال بموقع freepik.com كانت الإجابة المقبولة   
    ظهر لي أن الموقع نفسه متوقف و الدومين معروض للبيع ولم يفتح،
    يمكنك تجريب مواقع أخرى للصور مثل unsplash و pexel و غيرهم.
  15. إجابة Wael Aljamal سؤال في مشكلة في gradle يظهر الخطأ Execution failed for task :app:validateSigningDebug كانت الإجابة المقبولة   
    حاولي تحديث المكتبات جميعها من خلال android studio أي SDKو عمل flutter upgrade 
    ثم حاولي إنشاء تطبيق جديد ليأخذ أحدث إصدار 
  16. إجابة Wael Aljamal سؤال في جلب العناصر المميزة في بداية القائمة ثم مجموعة عشوائية من العناصر في استعلام SQL كانت الإجابة المقبولة   
    يمكن عمل أكثر من ترتريب بنفس عبارة اسعلام SQL
    لايوجد مشكلة من تعديل ملف ضمن استعلام (طبعا أنت تجرب على localhost) ,وليس على سيرفر حقيقي يعمل
    SELECT * FROM table ORDER BY special DESC, RAND() هكذا نرتب أو نعمل UNION لاستعلامين SQL
    SELECT column1, column2, ... FROM table_name WHERE special = 1 ORDER BY RAND UNION ALL SELECT column1, column2, ... FROM table_name WHERE special = 0 ORDER BY RAND نجلب كل شيء special و نرتبه بشكل عشوائي ثم الغير special  و نرتبه بشكل عشوائي
  17. إجابة Wael Aljamal سؤال في بطئ في تشغيل فيجوال ستوديو على أوبنتو كنظام وهمي على حاسوب ماك كانت الإجابة المقبولة   
    أعتقد أنه من الطبيعي أن يحصل ذلك، فالحاسوب يقوم بتشغيل نظامي تشغيل (ماك + اوبنتو) مع برامج ثقيلة بنفس الوقت (virtual box  + visual studio)..
    الحلول:
    حاول تنصيب visual studio الخاص بنظام ماك مباشرة على الحاسوب إن كنت تريد أن تستخدم محرر أكواد بسيط وليس بيئة متكامل أنصح بمحرر أكواد vs code (فيجوال ستوديو كود) فهو نسخة أخف من فيجوال ستوديو صيانة حاسوبك و إضافة ذاكرة RAM و تعديل القرص الصلب ليصبح SSD سريع 
  18. إجابة Wael Aljamal سؤال في حل مشكلة VirtualBox’s “Kernel Driver Not Installed (rc=-1908)” Error on a Mac في oracle virtualbox على نظام mac os كانت الإجابة المقبولة   
    حاول الدخول إلى System Preferences ثم Security and Privacy ثم في تبويب General اضغط 
    “System Software from Developer ‘Oracle America, Inc.’  انقر على Allow button..
    هذا الخيار متاح لنصف ساعة / 30 دقيقة، يجب إلغاء تنصيب oracle virtualbox وإعادة التنصيب ليظهر الخطأ مرة أخرى..

  19. إجابة Wael Aljamal سؤال في إظهار وإخفاء ابن من خلال استخدام محدد الوصول pseudo-classes hover في CSS / HTML كانت الإجابة المقبولة   
    في CSS ل يمكن إظهار عنصر بتعديل شفافيته إن كان له أب شفافيته 0، يجب أن يكون الأب مرئي ليظهر الابن
    عملت على التنسيق التالي:
    إظهار overlay إخفاء img-text إظهار img-text عندما نعمل hover هلى overlay section.team .overlay { opacity: 1; } section.team .overlay .img-text { opacity: 0; } section.team .overlay:hover .img-text { opacity: 1; } هنا لدينا تداخل، كما أن opacity يتم وراثتها للأبناء
    استخدام img:hover .overlay خطأ لأن الصورة ليس لها أبناء
  20. إجابة Wael Aljamal سؤال في ما الفرق بين break & return عند استخدامهم ضمن دالة كانت الإجابة المقبولة   
    نلاحظ أن لدينا دالة Main فيها حلقة، والدالة يمكن إيقافها عندما نعمل return أما الحلقة نوقفها عندما نعمل break.
    إن عمل return ضمن الحلٌقة يوقف التكرار الحالي للحلقة و يوقف الدالة بنفس الوقت، أما عمل break سوف يوقف الحلقة ويخرج منها و يتابع تنفيذ التعليمات المتبقية بعد الحلقة ضمن الدالة.
    وضع return:
    static void Main(string[] args) { while (true) { return; } // لا يتم تنفيذه console.WriteLine("NOOOO"); } وضع Break:
    static void Main(string[] args) { while (true) { break; } // يتم تنفيذه console.WriteLine("YEES"); }  
  21. إجابة Wael Aljamal سؤال في تشغيل سيرفر apache php8 لويندوز 32بت كانت الإجابة المقبولة   
    غير متوفر ب 64 بت مع php 8
    الأفضل عمل Formant وتنصيب نظام متوافق.
  22. إجابة Wael Aljamal سؤال في كيفية تمرير اكثر من قيمة واحده ل SearchDelegate في flutter كانت الإجابة المقبولة   
    ما رأيك أن نلصق ال id باسم المستخدم، أي سنعمل String من الاسم ثم الرقم مع وجود فاصل بينهم مثلاً (:)
    for (int i=0 ; i < responsebody.length ; i++){ listsearch.add(responsebody[i]['name'] + ':' + responsebody[i]['id']); } هذه ستنفع لأن البحث يتم عن طريق startsWith أي من اليسار لليمين،
    يمكنك لاحقاً اقتصاص id من خلال البحث عن ":" ثم الاحتفاظ بالجزء الأول للاسم و الثاني للرقم
    //s هي النص name + : + id String name = s.substring(0, s.indexOf(':')); String id = s.substring(s.indexOf(':') + 1); او // int id = int.parse(s.substring(s.indexOf(':') + 1));  
  23. إجابة Wael Aljamal سؤال في مشكلة في برنامج لحذف الأعداد الأولية من Stack بلغة ++C كانت الإجابة المقبولة   
    سأقترح عليك فكرة أبسط لحذف الأعداد الأولية من مكدس، 
    يمكنك تعريف مكدس مؤقت (يكون فارغ بالحالة الأولية)، سوف نقوم بإفراغ المكدس الأساسي من العناصر الواحد تلو الآخر، و سوف نضيف العنصر الغير أولي من المكدس الأساسي للمكدس المؤقت، ثم بعد انتهاء فلترة العناصر جميعها، نعيد تفريع المكدس المؤقت و نضيف العناصر للمكدس الأساسي وسوف يعاد ترتريب جميع العناصر بنفس الترتيب السابق مع التخلص من الأعداد الأولية.
    stack; // مكدس فيه عناصر temp; // مكدس فارغ مؤقت while (stack.size() > 0) { int x = stack.pop() if (! prime(x)) { // غير أولي X temp.push(x) } } // إعادة العناصر للمكدس الأساسي while (temp.size() > 0) { int x = temp.pop() stack.push(x) }  
  24. إجابة Wael Aljamal سؤال في كيفية توليد عدد من 100 خانة كانت الإجابة المقبولة   
    حسناً، في هذه الحالة و نمط البيات int لا يتسع لعدد كبير من الخانات، لذلك نحفظ الرقم على شكل سلسلة نصية أو مصفوفة، حيث نقوم بالمرور على عناصر المصفوفة مثلا، و نقوم بإسناد قيمة عشوائية لكل عنصر فيها، فيتم تمثيل العدد على عناصر المصفوفة. أو تشكيل عدد عشوائي و إضافته لسلسة نصية، نفس المنطق.
    import java.util.Random; Random rand = new Random(); int arr[] = new int[111]; int y = rand.nextInt(9); // 0-8 y = y + 1; // => 1-9 arr[0] = y; for (int i=1;i <100;i++) { arr[i] = rand.nextInt(10); // 0-9 }  
  25. إجابة Wael Aljamal سؤال في جلب حقلين بنفس الاسم من جدولين مختلفين في قاعدة بيانات MySQL و لغة ،SQL, PHP و عرض الناتج في تطبيق Flutter كانت الإجابة المقبولة   
    الحل يكمن في استعلام SQL حيث يمكنك وضع اسم مستعار لكل من الحقلين الذين لهما نفس الاسم
    $sql=" SELECT cat1.name AS name1, cat2.name AS name2, FROM Tabletop inner join Cat cat1 ON Tabletop.IDCat = cat1.id inner join Sub_Cat cat2 ON Tabletop.Id_Sub_Cat = cat2.id where Tabletop.id = ? " ; ثم في Flutter 
    if (data != null) { //table -1 name1 var GetName = data[0]['name1']; // Table-2 name2 var GetNameTwo = data[0]['name2']; }  
×
×
  • أضف...