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

Wael Aljamal

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

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

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

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

    218

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

  1. يمكن من خلال استخدام المكتبة random و الدالة choice import random foo = ['a', 'b', 'c', 'd', 'e'] print(random.choice(foo)) أو يمكننا يدويا من حساب قيمة عشوائية بحدود طول القائمة و من ثم قراءة العنصر ذو الدليل الموافق: import random foo = ['a', 'b', 'c', 'd', 'e'] index = int(random.random() * len(foo)) 0.2 * 5 ==> 1 print foo[index] # b
  2. لا داعِ لتشكيل جميع المصفوفات الفرعية و تخزينها في متغير لأن هذا يأخذ ذاكرة بدون داعِ يمكننا تحديد المصفوفات الجزئية بحلقتين i, j و المرور على هذه العناصر وحساب المجموع الجزئي فيها ومقارنته مع المتغير العام. القيمة البدائية للمتغير الذي سنخزن فيه النتيجة يجب ألا تكون 0، لأنه في حالة كانت جميع العناصر سالبة سيكون جواب المسألة خطأ لأنه سيعرض 0 بدل القيمة السالبة الأكبر ضمن عناصر المصفوفة. لذلك إن شيفرة المدرب محمد آيت لعراك أفضل ولكن يجب تعديلها قليلا في جزئية القيمة الابتدائية لمتغير الجواب ليجلب أكبر قيمة عنصر في المصفوفة (وبهذه الحالة سيخزن مؤقتا قيمة أكبر عدد سالب في حال كانت جميع العناصر في المصفوفة سالبة) وهذا لن يؤثر في حال كان هنالك حل آخر أكبر بدون هذه الحالة الخاصة. function getMaxSubSum(arr) { let maxSum = Math.max(...arr); // إذا لم نأخذ أي عناصر ، فسيتم إرجاع أكبر عدد سالب for (let i = 0; i < arr.length; i++) { let sumFixedStart = 0; // عند حساب المجموع لمصفوفة جزئية نبدأ ب 0 وهذا سليم for (let j = i; j < arr.length; j++) { sumFixedStart += arr[j]; maxSum = Math.max(maxSum, sumFixedStart); } } return maxSum; } يمكنك تجريب المثال التالي: console.log( getMaxSubSum([-1, -2, -9]) ); وسيعطي جواب -1 (أكبر قيمة سالبة) يمكن تسريع الخوارزمية باستخدام البرمجية الديناميكية و المجموع المتراكم ولكن لن يفرق الأداء في حال كانت عناصر المصفوفة عددها صغير نسبيا..
  3. لقراءة تكرار عنصر وحيد يمكن استخدام الدالة count على القائمة: x=[12,23,1,12,32,23,45,1] x.count(1) # 2 لنقوم بعد جميع تكرارات العناصر يمكننا استخدام Counter من المكتبة collections حيث يثوم ببناء قاموس حيث المفتاح هو العدد و القيمة هي التكرار: from collections import Counter z = ['blue', 'red', 'blue', 'yellow', 'blue', 'red'] Counter(z) # Counter({'blue': 3, 'red': 2, 'yellow': 1}) أو باستخدام القاموس مباشرة: dict((i, a.count(i)) for i in a) def occurDict(items): d = {} for i in items: if i in d: d[i] = d[i]+1 else: d[i] = 1 return d والمثال الأخير يعبر عن دالة تقوم ببناء قاموس لعد تكرارات القيم من قائمة.
  4. يمكننا استخدام الدالة dir التي تعيد قائمة list من الخصائص properties و الطرائق methods التي يملكها غرض ما: if 'property' in dir(a): a.property
  5. أعتقد أنها هكذا: <?php while($row = mysqli_fetch_array($result)) { $output .= substr(''.$row['message'].'', 0, 35) . '\n'; // </br> اذا كنت توجه الخرج لصفحة html بدل \n } echo $output; ?> يتم تجميع خرج البرنامج في المتغير output ثم نقوم بطباعة الناتج. يمكن حذف 'n\' فقد استخدمتها لطباعة سطر جديد. _ <br/> في HTML لماذا تضعها ضمن اقتباس فردي؟ ' ' لا داعٍ لذلك
  6. لقراءة كل سطر من ملف ووضعه كعنصر في قائمة وبافتراض المتغير الذي يعبر عن الملف f يمكننا استخدام الدالة readlines: تعيد هذه الدالة كل سطر في عنصر ضمن list with open('filename') as f: lines = f.readlines() أو نقوم بالمرور على الملف ونضيف كل سطر على حدى: with open("file.txt") as file_in: lines = [] for line in file_in: lines.append(line) أو نستخدم الدالة التالية للتخلص من ال n\: f.read().splitlines() with open(fname) as f: content = f.read().splitlines() حيث أن content هي list
  7. يمكننا استخدام الدالة sleep وتمرير لها الوقت الذي نريد التأخير له بالثواني. تتبع الدالة sleep للمكتبة time أي علينا تضمينها أولا: الشكل العام: import time time.sleep(t) تطبيق: #!/usr/bin/python import time print "Start : %s" % time.ctime() time.sleep( 5 ) print "End : %s" % time.ctime() يمكن ملاحظة أن التأخير قبل و بعد تنفيذ التعليمة هو 5 ثواني: Start : Tue Feb 17 10:19:18 2009 End : Tue Feb 17 10:19:23 2009
  8. أرى أنك لم تذكر لغة جافاسكربت فهي ضرورية لعمل تطبيق الهاتف حيث أن معظم أطر العمل التي تعتمد على تقنيات الويب تستخدم جافاسكربت بشكل أساسي. هذا أن PHP لا تعمل إلا على المخدمات web server ولا يوجد إطار عمل أو أي مكتبات مخصصة لشئ آخر. إن PHP مع LARAVEL كافية لعمل مواقع متنوعة مهما كان حجم الموقع فهمي تربط بين قاعدة البيانات و المخدم و العرض على المتصفح فقط. إن أردت تشغيل الموقع على الهواتف يمكنك تضمين WebView في تطبيق Android أو Flutter وهو يعمل عمل المتصفح، أي أن فكرة أن يعمل نفس المشروع على الهاتف الجوال هو شيئ غير ممكن. التقنية التي تسمح لتطبيق ويب بالعمل على الهاتف (باستخدام جافاسكربت كلغة برمجة للتطبيق) هي: Apache Cordova and PhoneGap (تعتمد على HTML - CSS للبنية والتنسيق وجافا للبرمجة وإدارة التطبيق مثل المواقع) ويمكنك معها استخدام جيكويري و بوتستراب وغيرهم Ionic شبيهة ب cordova ولكن تعمل بطريقة مختلفة من ناحية تصميم التقنية نفسها. يوجد غيرها لكن كل منها تعمل بلغة برمجة مختلفة مثل #C ل Xamarin .. أما باستخدام جافاسكربت فالأفضل هي React Native. الملخص: حتى الآن لايوجد طريقة لاستخدام PHP لبرمجة تطبيق هاتف، إنما نستطيع استعراض الموقع ضمن متصفح مدمج في تطبيق باستخدام WebView.
  9. يمكنك تنفيذ هذه التعليمة في محرر الأوامر: pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U كما يمكن تنفيذ التعليمات التالية ضمن شيفرة python: For pip < 10.0.1 import pip from subprocess import call packages = [dist.project_name for dist in pip.get_installed_distributions()] call("pip install --upgrade " + ' '.join(packages), shell=True) # =============== For pip >= 10.0.1 import pkg_resources from subprocess import call packages = [dist.project_name for dist in pkg_resources.working_set] call("pip install --upgrade " + ' '.join(packages), shell=True) حسب إصدار pip لديك.. كما يمكن تنفيذ التالي: $ pip install pip-review $ pip-review --local --interactive أو: $ pip freeze > requirements.txt $ pip install -r requirements.txt --upgrade أو: pipupgrade $ pip install pipupgrade $ pipupgrade --verbose --latest --yes
  10. تستخدم الكلمة المفتاحية yield فيما يدعى generators أو المولدات, حيث أن yield تعمل مثل return في إعادة القيمة التي تم حسابها ولكنها لا توقف عمل الدالة بشكل كامل بل تسمح لنا بإعادة استدعاء الدالة نفسها مع حفظ آخر خطوة قمنا بها والعمل على الخطوة التالية. حيث يتم الاعتماد على المولدات مثلا لتوليد سلاسل من الأعداد التي تتبع لعلاقة رياضية ما و بدل الانتظار لحساب كامل السلسلة و من ثم تخزينها (دالة عادية تقوم بتوليد السلسلة ثم تقوم بإرجاع array) وثم المرور عليها، تسمح لنا generator بتوليد القيمة التي نريدها بشكل متتالي عند كل استدعاء لهذه الدالة أي تعيد عنصر واحد عند كل استدعاء. مثلا إذا أردنا إرجاع عدة قيم لنفرض 1 2 3 يمكن عمل التالي: def simpleGeneratorFun(): yield 1 yield 2 yield 3 # Driver code to check above generator function for value in simpleGeneratorFun(): print(value) لاحظي استدعاء الدالة ضمن الحلقة حيث يمكن اعتبارها مصفوفة ولكن العنصر الحالي غير موجود حتى يتم حسابه و إعادته من خلال yield. بالنسبة للشيفرة لديكِ: تقوم بعمل Iterator (تكرار) على القائمة node لجلب العنصر التالي ويمكنك ملاحظة أننا نقوم بالاستدعاء بدون ذكر دليل العنصر أو index لأن ال Generator يقوم بحفظ المرحلة التي وصل لها من الاستدعاء أي سيرجع العنصر التالي دوما (له ذاكرة داخلية خاصة)
  11. يوجد عدة دوال تحقق ذلك: list(my_dataframe) أو list(my_dataframe.columns.values) كما يمكن my_dataframe.columns.values.tolist() أي أن استدعاء الدالة list على اسم القاموس سوف يقوم بعرض أسماء الأعمدة التي يحتويها. بالإضاف لذلك يمكن الوصول لأسماء الأعمدة من خلال متغير القاموس ثم الخاصية columns. ويحقق النتيجة المطلوبة.
  12. يمكننا زيادة وقت الاتصال عن طريق وضع الخاصية timeout لعميل S3Client في ملف: config/filesystems.php كالتالي: 'disks' => [ 's3' => [ 'driver' => 's3', 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => 'us-east-1', 'bucket' => env('FILESYSTEM_S3_BUCKET'), 'http' => [ 'timeout' => 360 ] ] ]
  13. أرجو توضيح السؤال أكثر، حفظ الكلاس؟ يمكنك كتابة java class في ملف ذو لاحقة java. يوجد شرط بأن يكون اسم الملف من نفس اسم الصنف. public class Main { public static void main(String[] args) { System.out.println("Hello World"); } } الشيفرة السابقة تمثل صنف اسمه Main بلغة جافا، فيه الدالة الرئيسية main والتي يتم استدعائها عند دء البرنامج. وتحوي الدالة main تعليمة الطباعة التي ستطبع عبارة الترحيب في console البرنامج التنفيذي. لتنفيذ الشيفرة السابقة، ننتقل لمسار الملف ثم نقوم بترجمته عن طريق javac ثم تنفيذه باستخدام تعليمة java
  14. يظهر هذا الخطأ عندما يفتح المستخدم الصفحة في تبويب جديد، ولكي يتم منع التشغيل التلقائي و يبدأ يظهر صوت بدون تفاعل المستخدم مع الصفحة منع غوغل كروم التشغيل التلقائي بدون كتم الصوت. يمكن حل المشكلة بوضع السطر التالي قبل تسغيل الفيديو: media.muted = true; ضمن الشيفرة: const notificationSound = () => { const audio = new Audio(`${process.env.PUBLIC_URL}/notificationsound.mp3`); audio.load(); media.muted = true; // هنا audio.play().catch(error => { console.log(error) }) }; هذا التعديل ضروري لإصدار كروم 66 و أحدث
  15. في لغة جافا يتم التعامل فقط مع الدليل الموجب index أكبر أو يساوي 0. في حال وضعنا قيمة سالبة كدليل لمصفوفة سوف يحدث خطأ و يتم رمي استثناء ArrayIndexOutOfBoundException. للوصول للعنصر من الخلف (من النهاية) يمكننا طرح قيمة دليل العنصر من طول المصفوفة: int x = 2; System.out.println( array[array.length - x ] ); ------ مثلا في لغة بايثون، تدعم اللغة الوصول للعنصر بالعكس باستخدام قيمة سالبة (غير متاحة في كل لغات البرمجة)
  16. أن جعل الدالة average ساكنة static يحل المشكلة.الحل موجود هنا و يعمل يمكنك التأكد (( الحل )) يوجد حل آخر وهو بناء غرض من الصنف Mycalcolator ومن ثم استدعاء الدوال: public class MyCalculator { public float average() { int input1 = 10; int input2 = 20; int input3 = 30; int input4 = 40; int input5 = 50; float avg =(input1 + input2 + input3 + input4 + input5)/5; return avg; } public static void main(String[] args) { MyCalculator calc = new MyCalculator(); float res = calc.average(); System.out.println(res); } } السبب أن الدوال الساكنة لا تتطلب بناء غرض من الصنف كي تعمل، إنما الدوال العادية يتم تطبيقها من قبل غرض Object من هذا الصنف لذلك يجب بناء غرض قبل الاستدعاء. ((الحل الثاني))
  17. public static void main(String[] args) { float result = average(); System.out.println(result); }
  18. عليك كتابة الدالة main وضمنها يتم استدعاء الدالة average وطباعة النتيجة.
  19. ربما تكمن المشكلة في إصدار react-scripts الرابع حيث ظهر المشكلة، يمكنك استعمال الإصدار الثالث تعديل الإصدار في packages.json الأعدادت "react-scripts": "3.4.4" حذف node_modules + package-lock.json ثم إعادة التثبيت npm i ..... في ريأكت 17 تم تعديل Hot refresh إلى Fast refresh عدل ملف env. : FAST_REFRESH=false
  20. يمكن ذلك من خلال الدالتين: onStepContinue onStepCancel نحتاج لتعريف controlsBuilder callback والذي يأخذ بدوره الدالتين السابقتين و من ثم يمكننا تغيير الاسم: هذا مثال عن stepper: Stepper( controlsBuilder: (BuildContext context, {VoidCallback onStepContinue, VoidCallback onStepCancel}) { return Row( children: <Widget>[ TextButton( onPressed: onStepContinue, child: const Text('NEXT'), ), TextButton( onPressed: onStepCancel, child: const Text('EXIT'), ), ], ); }, steps: const <Step>[ Step( title: Text('A'), content: SizedBox( width: 100.0, height: 100.0, ), ), Step( title: Text('B'), content: SizedBox( width: 100.0, height: 100.0, ), ), ], );
  21. نقوم بالمرور على المفاتيح التي نريد حذفها ونستخدم del key لحذف المفتاح من القاموس. mydict = {'one': 1, 'two': 2, 'three': 3, 'four': 4} print(mydict) keytoremove = ['one' , 'two'] for k in keytoremove: del mydict[k] print(mydict) ناتج أول طباعة: {'one': 1, 'two': 2, 'three': 3, 'four': 4} الثانية: {'three': 3, 'four': 4} عليك تعديل البرنامج ليعمل كما تريدين بعد تأكدك من فهم الفكرة.
  22. أرجو محاولة عمل التالي، استدعاء ملف التنسيقات الخاص ب Bootstrap قبل ملف بوتستراب الخاص بجافاسكربت. في حال كان لديك ملف تنسيقات خاص بالموقع مثلا style.css، أرجو أيضا استدعائه بعد ملف تنسيقات بوتستراب.
  23. أعتقد أن اسم الخط هو Halloween Fright RegularbyBrithos Type أو Evil Laughter RegularbyHanoded
  24. لا يوجد مشكلة أو حقوق على هذه الصور. يمكنك عرضها مباشرة عن طريق مثلا Network Image
  25. يوجد العديد من الأسباب التي من الممكن أن تؤدي لبطئ في عمل موقع ووردبريس. بعض الإضافات المثبتة غير كفوئة و تستهلك موارد كثيرة. تضارب عمل بعض الإضافات و تسبب بطيئ التحميل تثبيت إضافات لا داعِ لها سرعة الانترنت في المخدم server لديك قوة المعاجة للمخدم والاستضافة ضغط و تقليل حجم الصور استخدام خدمات CDN عادة تحتاج لتوظيف مبرمج ليقوم لك بالتعديلات، يمكنك ذلك من خلال موقع مستقل.
×
×
  • أضف...