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

Wael Aljamal

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

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

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

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

    218

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

  1. إجابة Wael Aljamal سؤال في ربط جدولين SQL JOIN بالاعتماد على قيم من أعمدة مختلفة كشرط للدمج MySQL كانت الإجابة المقبولة   
    من الأفضل ذكر الغرض من الاستعلام بشكل عام ليصبح من السهل التفكير السليم بأفضل طريقة لجلب البيانات.
    دمج جدول مع نفسه هو عملية نقوم بها عند وجود علاقة بين كينونات (أسطر) نفس الجدول، مثل تصنيفات جزئية لتصنيفات رئيسية أو علاقة المدير مع موظفيه (رقم المدير يكون مفتاح في حقل رقم الموظف) بشكل آخر لكل موظف مدير.. علاقة متعدية.
    كما ترى، أنت تبحث عن تساوي خاصيتين من نسختين من الجدول لقيمة واحدة
    FeaturesBook AS A ON A.t1 = BookSpecifications.IDBookSpecifications ^^^^ FeaturesBook AS B ON B.t2 = BookSpecifications.IDBookSpecifications ^^^^ ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ إن كان الاستعلام غير مفهوم الهدف، فمن الصعب معرفة الحل الخاص به.
    جرب الحل:
    $sql=" SELECT * FROM BookSpecifications As B LEFT JOIN FeaturesBook AS F ON F.t1 = B.IDBookSpecifications or F.t2 = B.IDBookSpecifications WHERE F.IDSubject ='145';" ;  
  2. إجابة Wael Aljamal سؤال في حساب العاملي Factorial للأعداد الأوليه prime فقط ضمن مصفوفة ++C كانت الإجابة المقبولة   
    الخطوات المنطقية في تسلسل الشيفرة لديك صحيحة، لكن فكرة حساب هل العدد أولي أم لا يجب أن يتم تعديلها لكي تعمل بشكل صحيح.
    لكل عدد في المصفوفة، نفرض أنه أولي، إن قبل القسمة على عدد أقل منه يصبح غير أولي، إن بقي العدد ألي نحسب العاملي له for (i = 0; i < n; i++) { bool prime = true; for (j = 2; j < a[i]; j++) { if (a[i] % j == 0) // قبل القسمة على عدد أصغر منه prime = false; } if (prime) a[i] = Factorial(a[i]); }  
  3. إجابة Wael Aljamal سؤال في الفروقات في إعداد خادم تطوير الويب المحلي و الحي / الحقيقي كانت الإجابة المقبولة   
    أول قسم: أعتقد أن ما يقصده الكاتب في development server هو أن يكون لكل مطور سيرفر خاص به، يرفع عليه المشاريع للتجريب. لأنه في حال غير ذلك سوف يرفع مشاريعه على استضافات مجانية أو أي خدمة لتشغيل المشروع مثل heroku مثلاً ويمكن أن يكون هذا الأمر مشتتاً. وسوف يتعلق ذلك بسرعة رفه و تعديل الملفات و تشغيل الخادم و التطبيق..
    ثاني قسم: ومن ثم عمل مقارنة بين تطوير المشاريع محليا Locally (التي يعتبرها أفضل لأن التعديلات على الملفات وإعادة تشغيل السيرفر المحلي تكون لحظية و سريعة) ولا تحتاج أكثر من تحديث المتصفح و قارنها بوضع المشروع على سيرفر حقيقي أنه يتطلب منه رفع التعديلات طيلة الوقت مهما كانت بسيطة وهذا يؤخر التطوير.
    طبعاً نقوم بإنشاء المشروع و تطويره محلياً ثم نقوم بنشر المشروع للخطوات المرحلية (المتوسطة الحجم) على سيرفر حقيقي لتجريب أداء التطبيق، لأنه لن يكون بنفس كفائة تشغيله محلياً.
  4. إجابة Wael Aljamal سؤال في ما هي أساسيات بناء موقع الكتروني بواسطة Django كانت الإجابة المقبولة   
    قبل البدء بتعلم إطار دجانغو، عليك دراسة أساسيات لغة بايثون، وبنى المعطيات الي تقدمها اللغة والإلمام بالبرمجة كائنية التوجه وتطبيقها في بايثون. يمكنك الوصول لدروس بايثون من الرابط: academy.hsoub / programming / python
    توفر أكاديمية حسوب العديد من الشروحات فيما يتعلق بإطار العمل Django يمكن الوصول لهم من الرابط: academy.hsoub / python / django
    الأساسيات:
    كيفية تنصيب الإطار والمكتبات وتهيئة بيئة العمل التعامل مع النماذج Model وقواعد البيانات التوجيه Routing و بروتوكول HTTP التعامل مع الاستمارات Form  التعامل مع ملفات العرض View
  5. إجابة Wael Aljamal سؤال في ما وظيفة الدالة hasnext عند التعامل مع الملفات في الجافا JAVA كانت الإجابة المقبولة   
    نستعمل الوظيفة hasnext غالباً عند التعامل مع الملفات، أو قراءة دخل من المستخدم، حيث أنها تعيد قيمة Boolean و تعطينا فكرة هل يوجد بيانات أخرى ضمن قناة القراءة الحالية لنستطيع قراءة البيانات دفعة دفعة بدون حصول خطأ (استثناء) مثل محاولة قراءة بيانات من قناة ولا يكون فيها بيانات.
    عادة ترتبط الوظيفة hasNext مع الصنف Scanner تعيد true في حال وجود بيانات أخرى في قناة الدخل.
    تتفرع الدالة لدوال مخصصة:
    للتأكد من وجود سطر آخر في الملف أو قناة الدخل: public boolean hasNextLine() و للتأكد من وجود رقم صحيح: public boolean hasNextInt() while(scan.hasNext()){ if(scan.hasNextInt(8)){ System.out.println("Found Int Value: "+scan.next()); } } وغيرهم.
    كما تستخدم بشكل عام مع Iterator في جافا كحلقة تكرار تطبق على التجميعات Collections مثل List ,HashTable, HashSet.. الخ
    Iterator<String> it = strList.iterator(); while(it.hasNext()){ String obj = it.next(); System.out.println(obj); }  
  6. إجابة Wael Aljamal سؤال في جلب بيانات CheckboxListTile من قاعدة البيانات كانت الإجابة المقبولة   
    يجب استدعاء دالة تهيئة الأب أولاً:
    @override void initState() { super.initState(); BooksType(); } أرجو تمرير اسم الدالة فقط للخاصية future وعدم استدعائها ضمن صنف الباني
    FutureBuilder( future: BooksType(), ^^^^^^ الصحيح FutureBuilder( future: BooksType, فهي دالة غير متزامنة Async.
    في حال بقاء أخطاء، أرجو تحديد في أي سطر
  7. إجابة Wael Aljamal سؤال في تطبيقات دورة javascript  تعمل على نظامين android و ios ؟ كانت الإجابة المقبولة   
    إن جافاسكربت تعمل في الويب و على الهواتف الذكية، جميع مسارات الدورة تشرح تقنيات الويب و هذه تعمل على جميع أنظمة التشغيل لأنك تحتاج للمتصفح فقط لتحميل الموقع.
    المسار الخاص بتطبيقات سطح المكتب هو مسار Electron.js.
    المسار الذي يطور تطبيقات الهاتف الجوال هو الخاص ب React Native. في هذا المسار يستخدم المدرب كما باقي المسار نظام ويندوز للبرمجة لأن 99% من الطلاب تستخدمه.
    يمكن تشغيل مشروع React Native على المتصفح او هاتف أندرويد باستخدام تطبيق expo او محاكي أندرويد او هاتف ios او (محاكي ios على نظام mac وهذا يتبع حاسوب الطالب).
    يوفر EXPO طريقة لبناء تطبيقات IOS عن طريق خوادمه على الانترنت بدون الحاجة لاقتناء جهاز mac.
    إن كان هاتفك android او ios عليك تحميل تطبيق Expo Go app لتشغيل المشروع على الهاتف خلال فترة التطوير، أي قبل مرحلة بناء التطبيق نفسه عندما يصبح جاهز للنشر (apk, ipa, aab) هذه المرحلة بعد الانتهاء من تطوير تطبيق الهاتف
  8. إجابة Wael Aljamal سؤال في هل يوجد برنامج موبايل أندرويد لكتابة أكواد البرمجة وتنفيذها كانت الإجابة المقبولة   
    بالنسبة للغة ++C يوجد برنامج CppDroid  أما بايثون يوجد Pydroid 3 جافاسكربت يوجد JavaScript For Android  
  9. إجابة Wael Aljamal سؤال في اعادة اسم واحد وليس كل البيانات من رد API في جافاسكربت كانت الإجابة المقبولة   
    في حال طباعة طول مصفوفة data
    console.log(data.length); سوف يكون 62 وهو عدد الشخصيات،
    وفي حال طباعة data سوف تظهر النتائج على الشكل التالي: (مصفوفة كائنات)
    [ { char_id: 1, name: 'Walter White', birthday: '09-07-1958', occupation: [ 'High School Chemistry Teacher', 'Meth King Pin' ], img: 'https://images.amcnetworks.com/amc.com/wp-content/uploads/2015/04/cast_bb_700x1000_walter-white-lg.jpg', status: 'Presumed dead', nickname: 'Heisenberg', appearance: [ 1, 2, 3, 4, 5 ], portrayed: 'Bryan Cranston', category: 'Breaking Bad', better_call_saul_appearance: [] }, { char_id: 2, name: 'Jesse Pinkman', birthday: '09-24-1984', occupation: [ 'Meth Dealer' ], img: 'https://vignette.wikia.nocookie.net/breakingbad/images/9/95/JesseS5.jpg/revision/latest?cb=20120620012441', status: 'Alive', nickname: "Cap n' Cook", appearance: [ 1, 2, 3, 4, 5 ], portrayed: 'Aaron Paul', category: 'Breaking Bad', better_call_saul_appearance: [] }, ..... ...... .... ] فالسؤال ما هو الاسم الذي تريدينه من بين 62 شخصية؟ يمكن الوصول لشخصية معينة عبر دليل المصفوفة data 0-1-2-3
    let character1 = data[0]; بهذه الطريقة سوف يحمل المتغير character1 كائن يمثل بيانات أول شخصية (كما في المثال السابق)
    وطالما أنه كائن JSON يمكن الوصول لخواص هذا الكائن عن طريق النقطة
    let name = data[0].name; or let name = character1.name; في حال أردت عمل فلترة ضمن المصفوفة نستخدم filter مع تمرير شرط ( رقم الشخصية)
    let character = data.filter(obj => obj.char_id == 1) console.log(character[0].name);  
  10. إجابة Wael Aljamal سؤال في كيفية استخلاص البيانات data من رد طلبية ل Javascript fetch API HTTP كانت الإجابة المقبولة   
    إن الطريقة fetch تقوم بإرسال طلب غير متزامن للخادم المتمثل في المسار الممرر لها، وتعيد كائن من نوع Promise ولكي نعمل resolve له، يتوجب انتظاره لينتهي تنفيذه، وذلك بوضع الكلمة المفتاحية await قبل استدعائه بالشكل التالي:
    const response = await fetch( "https://www.breaking.com/api/") أرجو التأكد من الرابط لأنه لا يعمل يمكن استعمال موقع json placeholder للتجريب الخطوة الثانية هي تحويل رد الخادم لكائن JSON ليسهل التعامل معه وتعريف المتغير data لأنه غير معرف لديك.
    const data= await response.json() لاحقاً يمكن طبع البيانات.
     
    ملاحظة:
    الموقع الصحيح هو:   breakingbadapi.com
    الشيفرة النهائية: لاننسى استدعاء الدالة
    async function breaking_bad() { const response = await fetch("https://www.breakingbadapi.com/api/"); const data= await response.json() console.log(data); } breaking_bad()  
  11. إجابة Wael Aljamal سؤال في ضمان حقوقي كـ مستقل كانت الإجابة المقبولة   
    عليك إرفاق الملفات كاملة، و تسليم المشروع، أي تسليم كامل الملفات.
    فريق مستقل يضمن حقوقك. أي لن يستطيع صاحب المشروع تحميل الملفات والاستفادة منهم أو سرقتهم و عدم الدفع.
    طالما تم توظيفك على المشروع فأنت بأمان، أما في حال كنت ضمن فترة النقاش لا ترسل أي ملفات ولا تنجز أي جزء من المشروع.
    عند موافقة صاحب المشروع على العرض يتم حجز أموال من رصيده حتى إنتهاء العمل من المشروع.
  12. إجابة Wael Aljamal سؤال في كيف استطيع تحميل مكتبة رياكت كانت الإجابة المقبولة   
    إن أفضل طريقة لإنشاء تطبيق React هو من خلال NodeJS - Npm وتثبيت المكتبات من خلالهم
    يوجد المكتبة  create-react-app التي من خلالها يمكن إنشاء مشروع ابتدائي مع هرمية ملفات مناسبة و مرتبة للبدء بالتطوير، ننصب هذه المكتبة في الحاسوب من خلال CMD بالأمر:
    npm install -g create-react-app  
    ثم ننتقل لمسار إنشاء المشروع و نقوم بالتالي:
    npx create-react-app my-app إنشاء المشروع cd my-app npm start تشغيله تقدم أكاديمية حسوب مجموعة شروحات عن React يمكن أن تجدها في دروس و مقالات البرمجة:
    باقي المقالات: ReactJS
    سؤال مشابه: أرجو البحث في الموقع.
     
  13. إجابة Wael Aljamal سؤال في اختلاف حجم الخط لنفس المشروع بين تشغيله محلياً local host و بعد رفعه على استضافةReactJs كانت الإجابة المقبولة   
    هل يمكنك التأكد من أنه لديك نفس معامل التكبير Zoom في المتصفح في كلا الحالتين؟
    وتأكد من أدوات المطورين، هل يتم تطبيق أصناف التنسيقات و الخطوط و الأبعاد بشكل صحيح ولا يوجد خطأ في console في حالة الاستضافة

  14. إجابة Wael Aljamal سؤال في لغه برولوك prolog ما هي الفوارق بين مصفوفة Array و قائمة List و قائمة اختيار menu كانت الإجابة المقبولة   
    إن List هي بنية معطيات مدعومة ضمن لغة برولوك، نضع فيها قيم مختلفة، وتتكون بشكل رئيسي من رأس القائمة head و الذيل وفيه بقية العناصر tail. التعامل مع القوائم في Prolog :
    يعبر عن القائمة الخالية ب [ ] أما القوائم غير الخالية فتأخذ الشكل: [Head |Tail] مثال: إذا كتبنا الحقيقة التالية:
    factlist([a,b,m,j,k]). ومن ثم سألنا الاستفسار التالي في مفسر ال Prolog :
    ?- factlist([Head|Tail]). سيكون الجواب :
    Head= a Tail= [b,m,j,k]. لتمييز نوع العناصر ذرات أما قوائم يمكن استخدام الإسنادات التالية:
    atom(X) تكون صحيحة إذا كان الوسيط فعلا ذرة. ولكن لا يمكن استخدام هذه الإسنادية مع الأرقام ! is_list(X) تكون صحيحة إذا كان الوسيط فعلا قائمة. ويمكن أن تكون عناصر القائمة أرقام مثال: ( تطبيق find في المثال الأخير) البحث عن عنصر ضمن قائمة:
    member( _ , _ ) للبحث عن عنصر ضمن قائمة.
    X قيمة نبحث عنها القائمة نقارن الرأس أي أول عنصر من القائمة مع العنصر الذي نبحث عنه، وفي حال لم يتم التطابق يتم البحث في باقي عناصر القائمة والتي هي Y (قائمة الذيل) نفس القائمة الأولى بدون أول عنصر member2(X,[X|_]). member2(X,[_|Y]):- member2(X,Y).  
    أما Array: فهي غير موجودة من أصل اللغة، أي لا يمكن الحصول على قائمة مفهرسة (لا يمكن الوصول للعنصر 3 مباشرة) أي يتم التعامل مع القوائم بشكل قوائم مترابطة Linked List وعليك المرور عليهم بطريقة عودية من خلال استدعاء الدالة التي تقوم بالتجوال على القائمة مع تمرير عداد لمعرفة ترقيم العناصر أو فحص القيم الخاصة بهم. أي لتشكيل قائمة لها طول ثابت عليك تعريف هذا الموضوع برمجياً بشكل مخصص.
     
    أما menu هي عبارة عن قائمة اختيارات ممكنة للمستخدم، لتنفيذ إجراءات أو استعلامات محددة مسبقاً. يتم العمل بهذه menu على شكل حلقة تكرارية تطبع الخطوات الممكنة التي يقوم بها البرنامج ثم تستقبل دخل المستخدم و تنفذ الإجرائية ثم تعود لطباعة قائمة الاختيارات.
    تستخدم القائمة menu الأمر repeat للتكرار و المثال التالي لاستعراض قائمة اختيارات ثم تنفيذ فعل action محدد بالرقم المدخل من المستخدم.
    main :- repeat, % تكرار طباعة القائمة write('-------MENU-------'), nl, write('1. add'), nl, write('2. find'), nl, write('3. delete'), nl, write('4. exit'), nl, write('Choose : '), read(Z), % قراءة دخل المستخدم ( Z = 4 -> !, fail ; true ), % ايقاف البرنامج if Z = 4 action_for(Z), % تنفيذ الإجرائية fail. % إيقاف البرنامج لدخل 4 يكون الإجرائية أو الدالة action for مكتوبة من المبرمج مثال:
    action_for(X) :- write('Action for '), write(X), nl. ... سيكون التنفيذ:
    | ?- main. -------MENU------- 1. add 2. find 3. delete 4. Exit Choose : 1. Action for 1 -------MENU------- 1. add 2. find 3. delete 4. Exit Choose : 2. Action for 2 -------MENU------- 1. add 2. find 3. delete 4. Exit Choose : 4. no | ?-  
  15. إجابة Wael Aljamal سؤال في المشروع يقوم بعمل تحديث تلقائي عند تشغيله بوضع production مع استخدام webpack كانت الإجابة المقبولة   
    ظهرت رسالة الخطأ التالية:
    Html Webpack Plugin: Error: html-webpack-plugin could not minify the generated output. In production mode the html minifcation is enabled by default. If you are not generating a valid html output please disable it manually. You can do so by adding the following setting to your HtmlWebpackPlugin config: | | minify: false | See https://github.com/jantimon/html-webpack-plugin#options for details. For parser dedicated bugs please create an issue here: https://danielruf.github.io/html-minifier-terser/ Parse Error: وسببها أن هنالك جزء من HTML غير مكتوب بطريقة صحيحة تماماً (هو صحيح لكن ليس 100%)
    وهو في السطر blog.html 87 :
    ModuleError: Module Error (from ./node_modules/html-loader/dist/cjs.js): Parse Error: <div class="card mb-3" "> <div class="card mb-3" "> ^^^ خطأ <div class="card mb-3"> الصحيح عندها يعمل build بشكل صحيح.
    ظهرت تنبيهات بشأن الأداء وحجم الصور، يمكنك تقليل حجم الصور و ضغطهم، ثم استخدام الصورة المضغوطة أو إبطال التحقق من ذلك بإضافة performance مع الخصائص التالية 
    module.exports = { performance: { hints: false, maxEntrypointSize: 512000, maxAssetSize: 512000, }, ثم أصبح npm run build يعمل بشكل سليم.
    يمكنك نشر السؤال أسفل الدرس في حال كنت تدرسه وليس مشروع امتحان
  16. إجابة Wael Aljamal سؤال في google chrom كيف اجعل المتصفح كروم هو المتصفح الافتراضى كانت الإجابة المقبولة   
    يتم ذلك من خلال إعدادات نظام ويندوز، ادخل setting ثم Apps ثم default apps وحدد مستعرض الويب الافتراضي default web browser

  17. إجابة Wael Aljamal سؤال في حل مشكلة تكرار نفس العدد العشوائي في random number in cpp كانت الإجابة المقبولة   
    سبب المشكلة أن تقوم بضبط مولد العدد العشوائي بنفس القيمة الابتدائية ضمن كل تكرار للحلقة، ما يعمل على تثبيت هذه القيمة. أي عند جلب عدد عشوائي مرى أخرى ستكون نفسها.
    الحل هو نقل srand لقبل الحلقة فيتم تهيئته مرة واحدة مجالك للأعداد صغير بطول 3 لذلك تكرار قيمة منه احتماله عال.. #include <iostream> using namespace std; int main(){ int a; int list_of_random_numbers[4]; srand(time(0)); for (int s = 0; s <= 10; s++) { a = rand() % 100; cout << a ; list_of_random_numbers[s] = a; // cout << "random number --> " << list_of_random_numbers[s]; cout << endl; } return 0; } النتيجة بحال توسعة المجالات وعدد الأعداد العشوائية التي يتم إنشائها.
    67 0 93 66 13 41 93 27 93 94 36  
  18. إجابة Wael Aljamal سؤال في مشكلة توقف سطر الأوامر عند تشغيل مشروع React Native على لينكس Linux؟ كانت الإجابة المقبولة   
    يوجد العديد من مسببات هذه المشكلة،
    إصدار مكتبة cli-platform-android  npm install @react-native-community/cli-platform-android@2.7.0 حاول استخدام إصدار آخر في حال مشكلة أحدث أو أقدم
    ربما يقوم بتحميل gradle خالا الأمر، لذلك قم بتحميلها و جعلها متاحة محلياً، ضع الملف المضغوط zip في المجلد  .grade/dist ثم عدل الإصدار ليكون موافق لما قمت بتحميله
    https\://services.gradle.org/distributions/gradle-YOUR_LOCAL_VERSION-all.zip ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^  
    تشغيل المشروع على مرحلتين الخادم ثم التطبيق في موجه أوامر آخر cmd | terminal react-native start react-native run-android  
  19. إجابة Wael Aljamal سؤال في كيفية عرض مكون معين عدد من المرات في React؟ كانت الإجابة المقبولة   
    يمكن حل المشكلة بتوليد مصفوفة أرقام، ثم عمل map 8 عليها مع توليد عنصر سطر جدول لكل رقم وهو ما يوافق الشيفرة لديك
    {[...Array(n)].map((e, i) => <tr><td>{i}</td></tr>)} أو بالطريقة التالية من خلال Array.from
    {Array.from({ length: 10 }, (_, i) => <tr><td>{i}</td></tr>)}  
  20. إجابة Wael Aljamal سؤال في منع المستخدمين من إضافة ملفات لها نفس الاسم بايثون python كانت الإجابة المقبولة   
    أرجو نسخ الشيفرة و إرفاقها في تعليق أو استخدام محرر الأكواد  يمكن إضافة نص متغير مثل الوقت عند رفع الملف بحيث لا يمكن لأي شخصين أن يكون لهما نفس اسم الملف المرفوع، 
    timestamp = str(now.strftime("%Y%m%d_%H%M%S")) newFileName = oldFileName + timestamp .. ثم استخدم newFileName  
  21. إجابة Wael Aljamal سؤال في مشكلة الحدث onBlur لا يستجيب في React Native كانت الإجابة المقبولة   
    طالما تستخدم حدث onBlur مع TextInput فيكون عليك جلب قيمة النص من الحدث بالطريقة التالية
    e.nativeEvent.text لكن هو لايعمل مع مختلف المكونات والتي تتكون من عدة أسطر multiline. لذلك نستخدم الطريقة التالية حيث نجلب النص من خلال الخاصية lastNativeText_:
    onBlur={() => console.log(this.refs.textInput._lastNativeText)} لكن بشكل عام، من الأفضل استخدام الحدث onEndEditing التي توفر نفس العملية functionality
    <TextInput onEndEditing={(e: any) => { this.setState({textValue: e.nativeEvent.text}) } }/>  
  22. إجابة Wael Aljamal سؤال في ما هو نوع العمل بعد دورة علوم الحاسوب وحفظ الاستثمار كانت الإجابة المقبولة   
    أرجو قراءة السؤالين التاليين: 
     
    في حال بقي لديك استفسار يمكنك طرحه أو سؤال مركز المساعدة
  23. إجابة Wael Aljamal سؤال في أريد زيادة حجم الملفات المسموح بها في PHP من خلال memory limit كانت الإجابة المقبولة   
    يمكنك معرفة القيمة الحالية ل memeory limit من خلال شيفرة PHP بسيطة تطبع الدالة phpinfo
    <?php phpinfo(); ?> وكما سيعطيكي مسار ملف php.ini يمكنك فتحه عن طريق أي محرر نصوص ثم تعديل الخاصية.
    كما يمكنك عمل ملف .htaccess في مجلد الجذر للمشروع (بجانب index.php)
    .htaccess ,ونضع فيه php_value memory_limit 2048M والحل الثالث، إن كنت تريدين تنفيذها ضمن ملف PHP فهذا ممكن من خلال كتابة الأمر في أول الملف
    <?php ini_set('memory_limit','2048M'); .. باقي الأكواد ?> لإلغاء حدود حجم الملف نمرر -1 
    // للوقت ini_set("max_execution_time", "-1"); // حجم الملف ini_set("memory_limit", "-1");  
    أرجو إعادة تشغيل المخدم بعد التعديل على ملف إعداد لغة PHP
  24. إجابة Wael Aljamal سؤال في إضافة خانة البحث في AlertDialog في flutter كانت الإجابة المقبولة   
    سبب المشكلة هو عدم عمل rebuild للواجهة بعد تعديل قيمة العناصر المفلترة (ألتي هي نتيجة إدخال المستخدم).
    الحل:
    تعريف مصفوفة/قائمة بجميع القيم all_Data تعريف مصفوفة/قائمة سوف تحوي النتائج results عند إدخال المستخدم لأي قيمة  نبحث ضمن مصفوفة all_Data ونعمل فلترة للنتائج ونخزنهم في results نعمل set State لتحديث العرض ضمن صف الحالة نعرف المصفوفتين، 
    final List<Map<String, dynamic>> all_Data = [ {"id": 1, "name": "Andy", "age": 29}, {"id": 2, "name": "Aragon", "age": 40}, .... ]; List<Map<String, dynamic>> results = []; @override initState() { results = all_Data; // ممكن وضع جميع القيم بشكل ابتدائي super.initState(); } ثم عمل فلترة حسب حقل معين ضمن القائمة
    // دالة البحث تستقبل كلمة للبحث عنها void _runFilter(String enteredKeyword) { List<Map<String, dynamic>> filtered_results = []; // مصفوفة مؤقتة للنتيجة // بحث فارغ if (enteredKeyword.isEmpty) { filtered_results = all_Data; } else { // عمل فلترة و بحث filtered_results = all_Data .where((user) => user["name"].toLowerCase().contains(enteredKeyword.toLowerCase())) .toList(); } // تحديث الواجهة setState(() { results = filtered_results; }); } يمكن استدعاء دالة البحث و الفلترة في حدث onchange
    TextField( onChanged: (value) => _runFilter(value), ),  
  25. إجابة Wael Aljamal سؤال في العناصر لا تظهر عند إستعمال map داخل مكون React كانت الإجابة المقبولة   
    المشكلة هو أن دالة map سوف تقوم بتنفيذ callback function لكك عنصر، ولكن يجب أن تعيد ذلك العنصر لكل تكرار أي تعمل return له، بدون عمل return لن يتم إضافة العنصر li للصفحة.
    elements.map(function(item, i){ console.log(item); return <li>{item}</li> }) لكن سيظهر إخطار من الشيفرة السابقة، حيث يجب لكل عنصر قائمة أن يكون له مفتاح مميز لتمييزه.
    وبذلك نضيف خاصية key و نعطي قيمة مختلفة لكل عنصر ولنفرض دليل العنصر ضمن القائمة، فنقوم بتمرير i له.
    elements.map(function(item, i){ console.log(item); return <li key={i}>{item}</li> })  
×
×
  • أضف...