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

Wael Aljamal

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

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

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

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

    218

كل منشورات العضو Wael Aljamal

  1. حاول إضافة الشيفرة التالية في الملف لإعادة توجيه الطلبيات: url.redirect = ( "^/(.*)" => "/index.php" ) أو url.rewrite-once = ( "^/(.*)" => "/index.php" )
  2. يعتمد الأمر على عدد العناصر (مجال البحث) حيث إن كان حتى 100 عنصر، و هذه العناصر ثابتة بشكل أو بآخر أن تكون بالطريق التي تعمل عليها في الشيفرة المرفقة، أما في حال كانت النتائج بالآلاف و كثيرة و متغيرة، ففي هذه الحالة عليك بعمل استعلام AJAX لقاعدة البيانات و عمل البحث ضمنها، و عندها لن يكون من المحبذ أن تقوم بالتحميل المسبق للعناصر ضمن صفحة HTML. في معظم الحالات عمل استعلام AJAX هو الحل الأفضل لصندوق البحث. شيفرة أجاكس ستكون تقريبا كما يلي: $("form").on("keyup", function() { $.ajax({ method: "post", url: "search.php", data: {q: $(this).val()}, // تمرير الاستعلام success: function(result) { // جلب النتيجة $("#result-list").html(result); // إسناد النتيجة للقائمة }, error: function() { console.log("error"); } }); }) يعمل AJAX على إرسال طلبية HTTP Request ألى الخادم، server حيث نرسلها لرابط معين، نفس فكرة HTML Form حيث نحدد المسار و الطريقة post - get .. و تكون البيانات عبارة عن مفتاح-قيمة ترسل للمخدم. إن افترضنا أنك تتصل على ملف php فإن أي محتوى يتم طباعته مثلا باستخدام echo يتم استقباله في دالة نجاح الطلبية في شيفرة جافاسكربت/أجاكس.. success callback function, ثم باستخدام دوال جافاسكربت التي تعدل على DOM يمكنك حشر المحتوى بالطريقة التي تريدها. يمكنك الاستفادة من المقالة التالية: والسؤال والإجابة التالية:
  3. أول شيفرة مسؤولة عن إظهار زر الدفع، نضعها بجانب أزرار الدفع الأخرى أو بعدهم في الشيفرة ليتم عرض الزر. <div id="smart-button-container"> <div style="text-align: center;"> <div id="paypal-button-container"></div> </div> </div> أما بالنسبة لعناصر script يمكنك وضعهم قبل نهاية الوسم body في الأسفل ليتم تحميلهم مع إنتهاء تحميل الصفحة.. توثيق شوبيفاي للدفع عن طريق باي بال تجده من هنا ربما تحتاج لتنسيق الأزرار أو تعديل الأكواد (من الممكن) لذلك أنصح بتوظيف مبرمج ليساعدك، و يمكنك ذلك من خلال موقع خمسات أو مستقل.
  4. يمكنك حل مشكلة النسيان بمراجعة كل مسار على حدى بعد الانتهاء منه لتثبيت المعلوامات بالإضضافة لما تقوم به من تطبيق، ثم لا مانع من كتابة ملاحظات حول جميع الأفكار المفيدة التي تمر معك،.. بشكل عام، سوف تحفظ الدوال و الخواص لكن بعد مدة زمنية من التطبيق، ومن الصعب حفزهم مباشرة، ولا مانع من استخدام موسوعة حسوب أو البحث في الانترنت عن أي دوال و شيفرات برمجية و فهمها واستخدامها، أي حتى المبرمجين الخبراء يقومون بمراجعة لمواقع التوثيق الرسمي للتقنيات و استذكار وسطاء دالة ما، وغيرها من الأمور البرمجية، لا يتم الاعتماد على الذاكرة في كل شيء، بل البحث و التعلم المستمر.
  5. تمام، نعمل and بين أول شرط state = 0 مع الجزء الآخر للجملة، لكن لن تعمل state = 1 لأنها للتو قيمتها 0 WHERE state = 0 AND ( name Like ? OR Table1.IdTable1 Like ? )";
  6. فهمت أنك تريد جلب البيانات في حال state = 1 ثم شرط آخر هو state 0 مع اسم معين أو id ميعن.. جرب التالي: WHERE state = 1 OR ( State = 0 AND name Like ? ) OR (Table1.IdTable1 Like ? )"; أو WHERE state = 0 OR ( State = 1 AND name Like ? ) OR (Table1.IdTable1 Like ? )"; ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ وضع أقواس لكل مجموعة شروط مرتبطة بينهم OR هو حل مشكلتك. AND لها أولوية (يتم تقييم طرفيها ثم استبدالها بقيمة منطقية) ثم ننتقل ل AND الثانية .. ثم يتم تجميع الشرط كاملاً بعبارات OR في حال الاستعلام خطأ، عليك وضع توضيح للشروط التي تستعملها لأنه غير مفهوم.
  7. هذا هو التصرف الافتراضي السليم لفتح ملف 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] ^^^^^^
  8. لدى المعالج خاصتك 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 بشكل عام: ارتفاع حرارة الحواسيب القديمة عند تشغيل مهمات متوسطة في أيامنا هذه تعتبر عادية.
  9. أحيانا يتوقف المنفذ بسبب جدار النار fire wall لذلك يمكن السماح بالاتصالات على المنفذ 8080 بإتاحة المنفذ ابحث عن Windows Firewall ثم advanced settings ثم إضافة Role جديدة نوعها port بقيمة 8080 للمزيد: شرح من موقع مايكروسوفت لتشغيل المخدم بواسطة node: node server.js -p 3000 -a : --listen 192.168.1.100 port ip
  10. يبدو أن هنالك رابط بين questionsContent مع القائمة بقيت أحذف أكواد و أضيف من index حتى عملت.. هل جافاسكربت لديك تعتمد على id أو أصناف في القسم الناقص
  11. القائمة تفتح ولكن داخلها لا يعمل، يظهر خطأ 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 الخاصة بالقائمة الداخلية
  12. هذا الأمر مخالف و غير صحيصح، عليك الاتلزام بمعايير الخدمة التي تستخدمها
  13. هل من الممكن تصغير حجم ملف المشروع و تحديد بدقة أكثر ما هي الأكودا التي لا تعمل؟ من الصعب التصفح كل شيء
  14. توصلت لحل جيد بالاستعانة مع 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); });
  15. لأنه من المتعارف عليه أم المنفذ 80 هو الافتراضي لخدمات الويب وبروتوكول HTTP وفي حال تم تعديله يتوجب تغييره
  16. تأكد من اتصال الهاتف و الحاسوب على نفس الشبكة، ثم أدخل IP الحاسوب ضمن أي متصفح في التطبيق للاتصال على server الخاص بك، و اطلع رسالة مثلاً في الشاشة فتتأكد من أن المشكلة في الوصول للشبكة أم في التطبيق أو المخدم.. بعد تشغيل مخدم Express تجد أن وضه External network وهو IP+PORT استخدمه في التطبيق + IP غير ثابت بالضرورة يمكن أن يتغير مع كل اتصال للراوتر.
  17. توجه لحاسوبك في إعدادت الشبكة الخاصة ب wifi مثلاً (حسب اتصالك على الراوتر المنزلي) و حددها ك خاصة | private لتصبح مرئية للأجهزة على نفس الشبكة.
  18. حاول تبديل mouseover إلى mouseenter أو hover وأرجو توضيح المشكلة مثلا في فيديو .. كما يمكنك تمرير حدث e ضمن function callback و استخدام e.target بدل this لأنها تستهدف العنصر بشكل أفضل. جرب و أخبرنا بالنتيجة
  19. يوجد لتطبيق أندرويد ما يدعى 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 ثم أعد بناء المشروع و رفعه على المتجر
  20. الشروط بالنسبة للدوال 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 { .. } }
  21. ينقص تعريف الدالة number ضمن الصنف admin عمل override بالإضافة لتحديد محدد الوصول Access Modifier كما تم تعريفها ضمن الانترفيس public* (تلقائية ولكن بعد إعادة التصريح عن الدالة يجب وضع نفس محدد الوصول) لتصبح: class admin implements result{ @override // هنا public void number(){ // ^^^ System.out.print("Total"); } }
  22. الدوال ضمن الانترفيس interface هي في الأساس abstract method لذلك لا حاجة لوضع كلمة abstract قبلها عند تعريف أي دالة بداخله والدوال بداخله جميعها تعتبر public ولا يمكن تعريفها private أو final أو Static أو final public void num();✅ private void dis();❎ حتى يمكن تجاهل كتابة public
  23. متغيرات الانترفيس interface تعتبر معرفة ك public final static حتى ولو لم نقم بذلك، أي يتوجب علينا إعطاءها قيمة نهائية (غير قابلة للتعديل لاحقاً). interface admin { int p = 0; // مثلاً }
  24. من الأفضل وضع الشيفرة البرمجية و إضافة شرح عما تحاول القيام به، لربما يستطيع أحد المساعدة
  25. مرحبا محمد، إن كنت مشترك بأحد دورات الأكاديمية أرجو نشر تعليق أسفل الدرس ليتابع معك المدرب بشكل أفضل. و إن كان سؤالك خارجياً عن الدورة و خاص، فهو غير واضح و لايحوي أي تفاصيل. شكرا لك
×
×
  • أضف...