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

Wael Aljamal

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

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

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

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

    218

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

  1. بالنسبة للقيمة: $iv = AES256Encryption::generateIv(); أرجو الاحتفاظ بقيمة ثابتة منها، يمكن تشكيلها بطباعة قيمةتها باستعمال echo مثلا ثم وضعها بشكل مباشرة ضمن الكود
  2. يمكن استعمال المعامل and$ الذي يقبل مصفوفة تحوي على التعابير الشرطية، لتصبح العبارة كالتالي: find( $and: [{"balls.color": "red"}, {"balls.color": 1}]) أو ربما أنت تقصد كتابة الشرط هكذا: find({"balls.color": "red", "balls.color": 1}) حيث تمرر الخاصيات و القيم جميعها بعنصر واحد.
  3. يمكن استخدام الدالة concat لدمج عدة خاصيات سوياً: fullname: {$concat: ["$firstname", " ", "$lastname"]} حيث يتم تمرير الخاصيات المراد دمجها كعناصر مصفوفة
  4. عليك فقط عكس الشرط الأخير: find({ employees : { $gt : { $size: 5} }}) هكذا سيتم جلب أكبر مصفوفة لحجم أكبر من 5، لأنه يجب تمرير الخاصية المطلوبة للدالة gt
  5. يفترض أن يظهر خطأ مختلف، هل يمكنك إدراجه. شكرا لك بشكل عام ربما النسخة الحديثة لا يدعمها نظام win7 أرجو تثبيت إصدار قديم مثل: mongodb-win32-i386-3.2.21
  6. حسنا المشكلة هو عدم وجود مجلدين في القرص C حيث يتم تخزين بيانات mongo أرجو عمل مجلد باسم data في القرص C ثم مجلد آخر ضمنه باسم db، لاحظ رسالة الخطأ فهذا مطلوب لكي يعمل..
  7. هل يمكنك التاكد من تشغيل مخدم مونغو mongod server عن طريق الأمر: mongod ثم إعادة المحاولة بتشغيل mongo.
  8. السبب في اختلاف الدالة التي يتم استدعائها، حيث أن =+ في مثالك: >>> f.bar += [3] تقوم باستدعاء __iadd__ التي تعدل f.bar الأصلية. أما: >>> f.bar = f.bar + [4] تقوم بإنشاء قائمة جديدة ثم إسنادها للمتغير حيث أنها تستدعي الدالة __add__
  9. يمكن عمل ذلك باستخدام الدالة __setattr__ كالتالي: object.__setattr__(self, name, value) أي: x = "attr1" y = 123 foo.__setattr__( x, y)
  10. اترك صنف التشفير في ملف منفصل واستدعي دواله بعد تضمينه، لا تقم بتكراره
  11. يمكن عمل الفلترة بدون set حتى: temp3 = [item for item in temp1 if item not in temp2] يمكن استخدام المكتبة deepdiff: # تنصيب pip install deepdiff >>> t1 = {1:1, 2:2, 3:3} >>> t2 = {1:1, 2:4, 3:3} >>> pprint(DeepDiff(t1, t2), indent=2) {'values_changed': {'root[2]': {'newvalue': 4, 'oldvalue': 2}}} توثيق المكتبة: deepdiff
  12. نعم بالطبع تدعم بايثون هذه الطريقة مثل ternary operator لكن ترتيب الشروط فيها مختلف: a, b = 1, 2 min = a if a < b else b print(min) حيث نضع القيمة التي نريد إعادتها في حال تحقق الشرط، ثم الشرط وأخيرا القيمة الأخرى في حال لم يتحقق الشرط والشكل العام لها: [on_true] if [expression] else [on_false] كما يوجد عبارة مختصرة لكل من: a, b = 1, 2 # اختيارقيمة بناءاً على tuple # (if_test_false,if_test_true)[test] print( (b, a) [a < b] ) # أو القاموس print({True: a, False: b} [a < b]) بالنسبة لحلقة for المختصرة يوجد عدة أشكال عامة لها: for i in <collection> <loop body> _____________________ for <var> in <iterable>: <statement(s)> _____________________ مثال >>> a = [1, 2, 3] >>> for i in a: ... print(i) ... 1 2 3 حيث أدرجت مثال للمرور على قائمة بكل بساطة بدون أي تعقيدات. كما تعمل مع القواميس: >>> d = {'foo': 1, 'bar': 2, 'baz': 3} >>> for k in d: ... print(k) ... foo bar baz _____________________ >>> for k in d: ... print(d[k]) ... 1 2 3 كما يمكن المرور على قائمة من tuple : >>> i, j = (1, 2) >>> print(i, j) 1 2 >>> for i, j in [(1, 2), (3, 4), (5, 6)]: ... print(i, j) ... 1 2 3 4 5 6
  13. يمكننا استخدام fcntl والتي هي function provides for control over open files مجموعة دوال التي تؤمن التحكم بالملفات المفتوحة، تتم بتحديد اشارة حدث، مع دالة للتنفيذ عند حدوث تغير: import time import fcntl import os import signal # مسار الملف FNAME = "/HOME/TOTO/FILETOWATCH" # الدالة التي تتنفذ عند حدث التغيير def handler(signum, frame): print "File %s modified" % (FNAME,) # ربط حدث التغيير بالدالة signal.signal(signal.SIGIO, handler) # فتح الملف fd = os.open(FNAME, os.O_RDONLY) # ربط الملف مع الأحداث fcntl.fcntl(fd, fcntl.F_SETSIG, 0) fcntl.fcntl(fd, fcntl.F_NOTIFY, fcntl.DN_MODIFY | fcntl.DN_CREATE | fcntl.DN_MULTISHOT) # جعل الشيفرة تستمر لوقت طويل while True: time.sleep(10000)
  14. لا يوجد داع لتشفير البيانات في الجلسة، إنما أرفقته لأنك تريد استعمال cookies، كانت الملاحظة أن الجلسة أمنة أما ملفات الارتباط كلا، لذلك أرشدتك لطريقة تشفيرها. لكي ينجح التشفير هتين القيمتين يجب أن تكونا ثابتتين خلال عمل البرنامج: $key = 'secretkey'; $iv = AES256Encryption::generateIv(); لاحظ أن generateIv تقوم بتوليد قيمة جديدة عند استدعائها لذلك نحسبها مرة واحدة فقط ثم نستخدمها نفسها. القيمة المتغيرة هي النص في المتغير $text
  15. عندما نريد تمرير عدة قيم من HTML نضع أقواس مربعة [] مع اسم الخاصية name; المثال خاص ب category.. <div class="form-group"> <label><strong>Category :</strong></label><br> <label><input type="checkbox" name="category[]" value="Laravel"> Laravel</label> <label><input type="checkbox" name="category[]" value="JQuery"> JQuery</label> <label><input type="checkbox" name="category[]" value="Bootstrap"> Bootstrap</label> <label><input type="checkbox" name="category[]" value="Codeigniter"> Codeigniter</label> <label><input type="checkbox" name="category[]" value="JQuery UI"> JQuery UI</label> </div> يمكنك ملاحظة: name="category[]" ضمن ملف التهجير، يمكن تحديد نوع القيمة ك string: <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreatePostsTable extends Migration { public function up() { Schema::create('posts', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('category'); $table->longText('description'); $table->timestamps(); }); } } ثم في model نحدد دالة لإسناد القيمة و جلبها.. <?php namespace App; use Illuminate\Database\Eloquent\Model; class Post extends Model { protected $fillable = ['name','category','description']; public function setCategoryAttribute($value) { $this->attributes['category'] = json_encode($value); } public function getCategoryAttribute($value) { return $this->attributes['category'] = json_decode($value); } } حيث كما تلاحظين، نتبع العرف في التسمية في الدوال ليكون getCategoryAttribute - setCategoryAttribute ونتعامل مع المتغيرات كغرض JSON الذي يتم تخزينه كنص في قاعدة البيانات. باقِ الأجزاء تعمل بالطريقة التقليدية بدون تعديل فقط تم الاعتماد على الدالتين ضمن model لعمل طبقة وسيطة و تقوم باتحويل ل JSON.
  16. تدعم الشيفرة التالية العمل على عدة متصفحات: var language = window.navigator.userLanguage || window.navigator.language; alert(language); //works IE/SAFARI/CHROME/FF أو: navigator.languages ? navigator.languages[0] : (navigator.language || navigator.userLanguage)
  17. هذه الحزم غير متوافقة مع إصدار Laravel عليك التحديث للإصدار 6 على الأقل. أعتقد أنك تستخدم الإصدار 5.5 أو 5.6 أو 5.8. فيحدث تضارب بسبب المكتبات. يمكنك اتباع التوثيق الرسمي للتحديث للإصدر 6 من هنا laravel 6 upgrade
  18. للسماح بالمستخدم بتعديل أبعاد text area يمكن وضع خاصية resize في CSS: div { resize: both; overflow: auto; } وهي تقبل القيم: resize: none|both|horizontal|vertical|initial|inherit; منع تغيير الأبعاد، سماح أفقي و عمودي، فقط أفقي, فقط عمود،.
  19. إن الدالتين setItem + getItem تتعاملان مع سلاسل نصية وليس أغراض JSON عند التخزين أو جلب القيم. لذلك علينا تحويل المصفوصة لسلسلة نصية قبل حفظها، و إعادتها لغرض JSON بعد قرائتها: الدوال المساعدة: JSON.stringify لتحويل غرض JSON لسلسلة نصية JSON.parse: لتحويل السلسلة النصية لغرض JSON set setObjectValue = async (value) => { try { const jsonValue = JSON.stringify(value) await AsyncStorage.setItem('key', jsonValue) } catch(e) { // save error } console.log('Done.') } get getMyObject = async () => { try { const jsonValue = await AsyncStorage.getItem('@key') return jsonValue != null ? JSON.parse(jsonValue) : null } catch(e) { // read error } console.log('Done.') } تحتاج لعملية تعديل بسيطة في الشيفرة لديك كما في المثالين السابقين
  20. يوجد عدة مجلدات ناقصة لديك: logs framework framework/cache framework/cache/data framework/sessions framework/testing framework/views الأوامر التي تقوم بتوليدهم: cd storage mkdir logs mkdir framework mkdir framework/cache && framework/cache/data mkdir framework/sessions mkdir framework/testing mkdir framework/views chgrp -R www-data ../storage chown -R www-data ../storage أو: cd storage/ mkdir -p framework/{sessions,views,cache} chmod -R 775 framework chown -R www-data:www-data framework
  21. لمعرفة الدولة، يمكن استخدام API مجاني: https://www.iplocate.io/api/lookup/8.8.8.8 ^^^^^^^ = IP وهذا يعيد JSON كالتالي: {"ip":"8.8.8.8","country":"United States","country_code":"US", "city":null,"continent":"North America","latitude":37.751,"longitude":-97.822, "time_zone":"America/Chicago", "postal_code":null,"org":"GOOGLE","asn":"AS15169","subdivision":null,"subdivision2":null} حيث يمكنك الوصول للدوالة من الخاصية country. $.getJSON('https://www.iplocate.io/api/lookup/8.8.8.8', function(json) { alert(json.country); }); lمثال آخر ipinfo واستخدامها في PHP: $ip = $_SERVER['REMOTE_ADDR']; $details = json_decode(file_get_contents("http://ipinfo.io/{$ip}")); echo $details->country; // -> "US" لمعرفة اللغة، يمكن استخدام GeoIP كالتالي: if($country = geoip_country_code_by_name($host)) { switch($country) { case "DJ": case "ER": case "ET": $lang = "aa"; break; case "AE": case "BH": case "DZ": case "EG": case "IQ": case "JO": case "KW": case "LB": case "LY": case "MA": case "OM": case "QA": case "SA": case "SD": case "SY": case "TN": case "YE": $lang = "ar"; break; case "AZ": $lang = "az"; break; case "BY": $lang = "be"; break; case "BG": $lang = "bg"; break; case "BD": $lang = "bn"; break; case "BA": $lang = "bs"; break; case "CZ": $lang = "cs"; break; case "DK": $lang = "da"; break; case "AT": case "CH": case "DE": case "LU": $lang = "de"; break; case "MV": $lang = "dv"; break; case "BT": $lang = "dz"; break; case "GR": $lang = "el"; break; case "AG": case "AI": case "AQ": case "AS": case "AU": case "BB": case "BW": case "CA": case "GB": case "IE": case "KE": case "NG": case "NZ": case "PH": case "SG": case "US": case "ZA": case "ZM": case "ZW": $lang = "en"; break; case "AD": case "AR": case "BO": case "CL": case "CO": case "CR": case "CU": case "DO": case "EC": case "ES": case "GT": case "HN": case "MX": case "NI": case "PA": case "PE": case "PR": case "PY": case "SV": case "UY": case "VE": $lang = "es"; break; case "EE": $lang = "et"; break; case "IR": $lang = "fa"; break; case "FI": $lang = "fi"; break; case "FO": $lang = "fo"; break; case "BE": case "FR": case "SN": $lang = "fr"; break; case "IL": $lang = "he"; break; case "IN": $lang = "hi"; break; case "HR": $lang = "hr"; break; case "HT": $lang = "ht"; break; case "HU": $lang = "hu"; break; case "AM": $lang = "hy"; break; case "ID": $lang = "id"; break; case "IS": $lang = "is"; break; case "IT": $lang = "it"; break; case "JP": $lang = "ja"; break; case "GE": $lang = "ka"; break; case "KZ": $lang = "kk"; break; case "GL": $lang = "kl"; break; case "KH": $lang = "km"; break; case "KR": $lang = "ko"; break; case "KG": $lang = "ky"; break; case "UG": $lang = "lg"; break; case "LA": $lang = "lo"; break; case "LT": $lang = "lt"; break; case "LV": $lang = "lv"; break; case "MG": $lang = "mg"; break; case "MK": $lang = "mk"; break; case "MN": $lang = "mn"; break; case "MY": $lang = "ms"; break; case "MT": $lang = "mt"; break; case "MM": $lang = "my"; break; case "NP": $lang = "ne"; break; case "AW": case "NL": $lang = "nl"; break; case "NO": $lang = "no"; break; case "PL": $lang = "pl"; break; case "AF": $lang = "ps"; break; case "AO": case "BR": case "PT": $lang = "pt"; break; case "RO": $lang = "ro"; break; case "RU": case "UA": $lang = "ru"; break; case "RW": $lang = "rw"; break; case "AX": $lang = "se"; break; case "SK": $lang = "sk"; break; case "SI": $lang = "sl"; break; case "SO": $lang = "so"; break; case "AL": $lang = "sq"; break; case "ME": case "RS": $lang = "sr"; break; case "SE": $lang = "sv"; break; case "TZ": $lang = "sw"; break; case "LK": $lang = "ta"; break; case "TJ": $lang = "tg"; break; case "TH": $lang = "th"; break; case "TM": $lang = "tk"; break; case "CY": case "TR": $lang = "tr"; break; case "PK": $lang = "ur"; break; case "UZ": $lang = "uz"; break; case "VN": $lang = "vi"; break; case "CN": case "HK": case "TW": $lang = "zh"; break; default:break; } }
  22. نحن لا نحل الأسئلة الامتحانية. عليك البدء بالحل و كتابة الكود و إن كان هنالك جزء لم تفهمه يمكن أن نساعدك في توضيح الحل. الخطوات: كيف نعرف إن كان العدد أولي أما لا؟ كيف نقوم بتعريف تابع؟ كيف نعيد قيمة من تابع؟
  23. الكود النظيف clean code هو مجموعة من المبادئ والأعراف التي يطبقها المبرمج قبل البدء وخلال كتابة الشيفرة البرمجية. الإبقاء على البساطة و عدم التعقيد بدون داعِ وتقسيم العمل على أجزاء مثل دوال أو مكونات لعدم تكرار نفس الشيفرة عدم كتابة أجزاء بدون استخدامها استخدام أسماء ذات دلالة للمتغيرت و أسماء الأصناف.. إضافة تعليقات تطبيق هذا حسب اللغات التي طرحتها: HTML: استخدام القوالب، أي مثل كتابة الترويسة و التذييل مرة واحدة ثم استدعائهم في عدة ملفات CSS: استخام الأصناف Classes، كتابة أصناف تقوم بتجميع التنسيقات لعدد من العناصر المراد أن يكون لها تنسيق مشترك. SASS: استخدام المتغيرات، مثل اللون - حجم النص - الأبعاد، استخدام الدوال بطرية فعالة
  24. أين تقوم بتخزين البيانات في storage هل يمكنك إرفاق المشروع كملف مضغوط لأتمكن من تجريبه وإصلاح الأخطاء؟ شكرا لك
×
×
  • أضف...