لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 12/02/21 في كل الموقع
-
كيف يمكنني التحقق من وجود كلمة في جملة معينة بإستخدام لغة ++C، فعلى سبيل المثال لدي المتغيرين التاليين: std::string s1 = "Hello, world"; std::string s2 = "world"; كيف يمكنني التحقق برمجيًا من أن المتغير s1 يحتوي على قيمة المتغير s2؟ في لغات أخرى مثل Python يمكنني إستعمال المعامل in للتحقق من هذا الأمر، كيف أقوم بنفس الشيء في لغة ++C؟1 نقطة
-
أحاول الحصول على الip address في socket io باستخدام الدالة socket.handshake.address ولكن يعطيني دائمًا رقم ::1 ما الحل1 نقطة
-
أحتاج إلى تحديد عنصر من القائمة المنسدلة، مثلاً: <select id="A" class="select" name="B"> <option value="0">Choose your option:</option> <option value="1">ARG</option> <option value="2">BRA</option> <option value="3">GER</option> <option value="4">ITA</option> </select> أولا لا بد لي من النقر فوقه. أفعل هذا: driver.find_element_by_xpath("//select[id='B']").click() بعد ذلك لا بد لي من تحديد عنصر وليكن ARG. جربت استخدام inputElementFruits.send_keys(...) لكن لم ينجح.1 نقطة
-
أقوم بالعديد من التنقلات في سيلينيوم لذا أريد طريقة لمعرفة عنوان url الحالي.1 نقطة
-
كيف يمكننا استدعاء متصفح Firefox بدون رأس 'head'؟ قمت بتنفيذ الكود التالي، لكن لم ينجح الأمر: driver = webdriver.Firefox(firefox_binary=FirefoxBinary('firefox.exe', log_file=sys.stdout).add_command_line_options("--headless"))1 نقطة
-
1 نقطة
-
حاولت أن أقرأ بعض أكواد برامج ++C معروفة، ووجد أنهم يستعملون الكود التالي في أغلب ملفات الترويسات header files: #pragma once // ... ولكن ما معنى هذا الكود؟ وهل يجب أن أستعمله؟1 نقطة
-
1 نقطة
-
تأكد بأنك تضع هذا السطر بداخل الملف GuestFactory use App\Models\Guest; وأيضا تأكد بأنك تكتب namespace الخاص بالموديل Guest بشكل صحيح كالتالي namespace App\Models; ثم جرب الأمر مرة أخرى, اذا لم ينجح الأمر أرجو منك ارفاق مجلد المشروع بشكل مضغوط بدون المجلد vendor1 نقطة
-
هل يمكنك إرفاق مسار هذا المتحكم , يبدو لي أنك وضعته في مسار خاطئ ؟1 نقطة
-
للاسف اخي فعلت ماطلبت وفشل في التحميل، عندما ادخل الامر ls تطهر لي ملفات ومجلدات من بينها المكتبه التي طلبت مني ان احرب تحميلها ولكن لا يمكنني استخدامها متلم انزلها لمجلد المشروع كيف يمكن ان انقلها او انسخها لمجلد المشروع1 نقطة
-
1 نقطة
-
عندما أحصل على مدخلات المستخدم من خلال الدالة getline وتخزين النص في متغير str، كالتالي: #include <iostream> #include <string> int main() { std::string str; std::cout << "Enter your name: "; std::getline(std::cin >> std::ws, str); std::cout << '\n' << str << '\n'; return 0; } كيف يمكنني معرفة طول هذا النص؟ وكيف أقوم بعمل حلقة للمرور على كل حرف من خلال for؟1 نقطة
-
فعلت هذا وفشل في تحميل المكتبه رغم انه نجح في تحميلها عدما لم ادخل لملف المشروع، هل هناك طريقه لنقل ماتم تحميله في الدليل العام للكمبوسر الى دليل ومجلد المشروع1 نقطة
-
اخي استخدمت ما اخبرتني به والامر شغال ممتاز لكن لا اعلم اين قام بتحميل المكتبه كيف اجعله يحمل المكتبه في مجلد المشروع1 نقطة
-
إن لم يكن لديك composer مسبقًا، فستحتاج أولًا إلى تثبيت composer من خلال الأمر التالي: pkg install composer ثم يمكنك أن تقوم بمحاولة تثبيت أحد الحزم كتجربة في مجلد جديد، من خلال مثل هذا الأمر: composer require monolog/monolog ثم يمكنك التأكد من أن عملية التثبيت تمت بنجاح من خلال عرض محتويات الملف composer.json، حيث سيحتوي على اسم الحزمة وإصدارها أيضًا. أما إن لم تستخدم composer من الأساس، فستحتاج إلى أن تقوم بعمل ما يقوم به composer يدويًا، مثل البحث عن المكتبات وإختيار الإصدار المناسب والمتوافق مع إصدار php لديك وكذلك الإصدار المتوافق مع باقي المكتبات المثبته بالفعل .. إلخ.1 نقطة
-
اخي هل يوجد طريقه اخرى لتضمين المكتبات غير الكمبوسر لانه لا يشتغل عندي او يشتغل ولكنه يفشل في تحميل المكتبات الحزم، انا استهدم هاتف اندرويد واستخدم برنامج سطر الاوامر تيرمكس1 نقطة
-
يمكنك التحقق من حالة ال WIFI في حال كان يعمل أم لا داخل ال BroadcastReciever وتنفيذ المطلوب أو تجاهل التنفيذ كليًا بحسب الحالة المطلوبة كالتالي: public class bbb extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { int wifiStateExtra = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN); // يعمل WIFI if(wifiStateExtra == WifiManager.WIFI_STATE_ENABLED) { Toast.makeText(context," السلام عليكم ",1).show(); } } } لا يمكن ذلك تقريبا بشكل مباشر لانه يعتبر تسريب لمعلومات عن المستخدم واستخدامه للتطبيقات الأخرى، لكن قد يمكنك التحقق من التطبيقات التي تعمل حاليًا (أثناء تشغيل تطبيقك) كالتالي: ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses(); for (int i = 0; i < runningAppProcessInfo.size(); i++) { if(runningAppProcessInfo.get(i).processName.equals("com.the.app.you.are.looking.for") { // التطبيق المستهدف يعمل حاليا } } ويجب إضافة الساحية التالية: <uses-permission android:name="android.permission.GET_TASKS" /> لكن بعد نسخة Android L أصبح من غير الممكن ذلك1 نقطة
-
اقوم ببرمجة تطبيق react به خاصية التسجيل الصوتي, عندما اقوم بفتح التطبيق من متصفح الموبايل وهو مرفوع على استضافة خارجية يمكنني فتح المايك بعد اعطاء الاذونات لكن عند فتحه من الlocalhost لا يمكنني, ما الحل؟1 نقطة
-
يمكنك التأكد من ذلك عبر إستخدام الregex عن طريق الدالة regex_replace التي تقوم بأخذ مُعاملات كالتالي النص المُراد تطبيق النمط عليه النمط النص الذي سيتم إستبداله بدلًا من النمط وتقوم بإرجاع النص الجديد, فيمكنك تنفيذ الدالة على النص الموجود لديك وتعطي في النص المُستبدِل قيمة فارغة أي يتم حذفه, ومن ثم مقارنة طول النص الجديد بالنص القديم, إن تغير الطول هذا يعني أنهم لم يُصبحو نفس النص, أي أن الكلمة موجودة , ويمكن تطبيق ذلك عبر الشفرة البرمجية التالية string a = "hello world"; string b = "hello"; regex re(b); string c = regex_replace(a,re,""); if(c.length()<a.length()) cout<<"true"; else cout<<"false"1 نقطة
-
يحتوي النوع string على التابع find والتي يقوم بإرجاع فهرس النص الذي تبحث عنه: #include <iostream> #include <string> int main() { std::string s1 = "Hello, world"; std::string s2 = "world"; // التحقق من وجود قيمة المتغير s2 داخل قيمة المتغير s1 if (s1.find(s2) != std::string::npos) { std::cout << "found '" << s2 << "' in '" << s1 << "'" << '\n'; } return 0; } في حالة وجود النص s2 داخل قيمة المتغير s1 سوف يتم طباعة الجملة found 'world' in 'Hello, world'1 نقطة
-
أغلب الشركات تشترط أن يكون لدى المبرمج خبرة عدة عام أو عامين أو أكثر حسب الشركة، وبعض هذه الشركات قد لا تطلب أي خبرة سابقة (يسمى تدريب في بعض الأحيان ويكون بمرتب أيضًا)، لذلك قد تجد صعوبة في العمل في أحد الشركات خصوصًا إن لم يكن لديك مشاريع قد قمت بها بنفسك، لكن ليس من المستحيل أن تعمل في أحد الشركات، وهذا على عكس العمل الحر Freelancing بالطبع، حيث لا تحتاج إلى أي خبرة أو مشاريع سابقة لتعمل في أحد مواقع العمل الحر مثل مستقل (بالتأكيد وجود مشاريع في معرض أعمال سيزيد من فرصة الحصول على عمل أيضًَا). لاحظ أيضًا أنك إن لم تنهي تعلم باقي الدورة وبدأت تبحث عن عمل قبل أن تتعلم باقي أساسيات Laravel من خلال إكمال باقي مشاريع الدورة، فقد تعمل على مشاريع في أحد الشركات ولا تعلم كيفية القيام بمهمة معنية وذلك لأنك لم تكمل تعلم أساسيات Laravel وبالتالي ستضطر للتعلم أثناء العمل على مشروع مما سيجعلك تحت ضغط وقلة الوقت، وبالتالي قد يتم إنتاج المشروع بشكل غير سليم أو ربما الكود لن يكون منظم للغاية أو غير نظيف Dirty Code (عكس Clean Code) وسيأثر على عملك في المجمل. لاحظ أني لا أقصد أن هذه المشاريع التي ذكرتها في سؤالك مفيدة وسوف تستعملها بالفعل في أغلب المشاريع و المواقعالتي ستعمل عليها، ولكنها لا تكفي لعمل أي مشروع مهما كان، وهذا سبب وجود باقي الدروس والمسارات في الدورة (لتتعلم كل ما تحتاجه للعمل). لذلك نتيجة لكل ما سبق، فربما تجد صعوبة في العثور على عمل، ولكن حتى إن قمت بالعمل في أحد الشركات فستحتاج إلى إكمال التعلم وإنهاء باقي المشاريع (وفي الغالب ستتعلم وأنت تعمل على مشاريع الشركة)، لذلك من الأفضل أن تكمل الدورة للنهاية قبل البحث عن عمل في أحد الشركات.1 نقطة
-
يمكن تحويل العدد الصحيح لتمثيله في النظام الثنائي من خلال تكرار قسمته على 2 وفي كل مرة أخذ باقي القسمة على 2 كخرج للمرحلة، فيكون الخرج سلسلة 0و1 تعطينا التمثيل الثنائي. باستخدام خوارزمية عودية: تكرار الاستدعاء طالما n/2 ليس 0 (شرط التوقف) استدعاء الدالة عودياً للخطوة التالية n/2 طباعة باقي قسمة n على 2 كنتيجة للخطوة الحالية void convert_To_Binary(int n) { if (n / 2 != 0) { convert_To_Binary(n / 2); } printf("%d", n % 2); } في الحل السابق، لانضطر لعكس جهة البتات المشكلة للعدد لأن تعليمة الطباعة للخطوة الحالية سيتم تنفيذها لاحقاً بعد انتهاء الاستدعاءات العودية ويمكن الحل باستخدام حلقة: r سلسلة الجواب وستكون من 0 و 1 ثم حلقة طالما n لا تساوي 0 سنكرر الخطوات: حساب قيمة باقي قسمة العدد n على 2 إضافة قيمة السلسلة النصية المؤقتة للإجابة قسمة العدد n على 2 إعادة r std::string to_Binary(int n) { std::string r; while(n!=0) { std::string tmp = (n%2==0 ?"0":"1"); r=+temp; n/=2; } return r; }1 نقطة
-
يمكنك تنفيذ التالي بسهولة عبر إستخدام هيكل البيانات bitset والذي يقوم بتحويل الأرقام العشرية إلى ثنائية , حيث تقوم بوضع الرقم في الconstructor الخاص بالهيكل وثم تقوم بتحويله إلى نص وطباعته كما في المثال التالي std::string binary = std::bitset<8>(128).to_string(); std::cout<<binary<<"\n"; unsigned long decimal = std::bitset<8>(binary).to_ulong(); std::cout<<decimal<<"\n"; ﻻحظ أننا قمنا بإعطاء الbitset قيمة 8 مما يعني أنها تحمل 8 بيتات بمعنى أن أقصى رقم يمكن وضعه هو 2 مرفوع لقوى الرقم 8 -1 بما يعادل 255, إن أردت قيمة أكبر يمكنك إسناد خانات أكبر من البيتات1 نقطة
-
تدعم لغة ++C طباعة الأرقام بنظام ثماني وست عشري بدون مشكلة، ومع ذلك فإن طباعة الأرقام بالنظام الثماني تحتاج إلى بعض الخطوات الأضافية، تحتوي مكتبة ++C القياسية على الكائن std::bitset (موجود في ملف الترويسة header المسمى <bitset>) . في البداية يجب أن تحدد للكائن std::binset عدد الـ bits التي سيقوم بتخزينها (يجب أن يكون هذا العدد من نوع compile time constant وليس run time constant) ثم تقوم بتمرير الرقم الذي تريد تحويله إلى النظام الثنائي، كالتالي: #include <bitset> // std::bitset< حجم ال bits > variable_name { unsigned int }; std::bitset<8> bin{ 13 }; // يمكن تمرير أرقام Hex و Oct و Binary أيضًا std::bitset<8> bin2{ 0xd }; std::bitset<8> bin3{ 015 }; std::bitset<8> bin4{ 0b0000'1101 }; ملاحظة: الرقم الذي تريد تحويله إلى النظام الثنائي يجب أن يكون من نوع unsigned أي ليس له إشارة (موجب فقط)، لذلك تحتاج إلى إستخدام static_cast لتحويل نوع المتغير age عند طباعة الرقم #include <iostream> #include <bitset> int main() { std::cout << "Enter your age: "; int age{}; std::cin >> age; std::cout << "Your age in decimal is " << std::dec << age << '\n'; std::cout << "Your age in HEX is " << std::hex << age << '\n'; std::cout << "Your age in OCT is " << std::oct << age << '\n'; // تحويل المتغير إلى unsigned unsigned int unsigned_age = static_cast<unsigned int>(age); std::cout << "Your age in Binary is " << std::bitset<8>{unsigned_age} << '\n'; return 0; } وستكون النتيحة كالتالي: Enter your age: 15 Your age in decimal is 15 Your age in HEX is f Your age in OCT is 17 Your age in Binary is 00001111 يمكنك أيضًا تحويل المتغير age إلى unsinged ثم تحويله إلى كود Binary مباشرة دون تخزينه في متغير جديد: // تحويل المتغير إلى unsigned وطباعته كنظام ثنائي std::cout << "Your age in Binary is " << std::bitset<8>{static_cast<unsigned int>(age)} << '\n';1 نقطة
-
استخدمنا for loop مرتين, المرة الأولى للقيام بادخال معلومات ثلاثة أشخاص وهذا الكود الخاص بهذا الجزء for(int i =0; i<3;i++){ cout << "Enter Student[" << i <<"] name : " ; cin >> student[i].name; cout << "Enter Student age : " ; cin >> student[i].age; cout << "Enter Student height : " ; cin >> student[i].height; cout << "Enter Student score : " ; cin >> student[i].score; } حلقة تكرار تتنفذ فقط 3 مرات , تتنفذ طالما قيمة المتغير i أقل من 3 , تبدأ وقمية i تساوي 0 , عندما تصبح قيمة i أكبر أو يساوي من 3 تتوقف حلقة التكرار الجزء الثاني الذي استخدم فيه for loop هو لطباعة بيانات الطلاب الثلاثة الذي تم ادخال بياناته مسبقا وهذا الكود الخاص بطباعة البيانات for (int i =0; i< 3; i++){ if(student[i].score >= 50){ cout << "Name = " << student[i].name << endl; cout << "age = " << student[i].age << endl; cout << "heiht = " << student[i].height << endl; cout << "score = " << student[i].score << endl; cout <<"============================================" <<endl; } طبعا بداخل كل حلقة يتم التأكد من درجة الطالب , اذا كانت اكبر أو يساوي 50 يتم طباعة البيانات , اذا كانت أقل لا يتم الطباعة استخدمنا cin لكي يتم قبول القيم المدخلة من قبل المستخدم واسنادها الى المتغيرات الخاصة بكل مستخدم1 نقطة
-
يكمن الفرق بين الطريقتين في مكان الملفات التي يبحث عنها الـ preprocessor: #include <filename> عند إستخدام الكود السابق يقوم الـ Preprocessor بالبحث عن الملفات حسب ترتيب إستدعائها في المجلدات المعدة مسبقًا في بيئة التطوير IDE أو في المصرف Compiler، وينم إستخدام هذه الطريقة في العادة لإستدعاء ملفات الترويسة Header الخاصة بالمكتبات القياسية Standard Libraries. في حين أن أستخدام الكود التالي: #include "filename" يقوم الـ Preprocessor بالبحث عن الملفات بداية من المجلد الحالي (مجلد التنفيذ CWD) عن الملفات حسب المسار المستخدم في جملة include، وتستخدم هذه الطريقة في العادة لإستدعاء ملفات الترويسة Header التى قام بكتابتها أو إضافتها المبرمج نفسه، وهي ليست جزء من مكتبات اللغة القياسية. يمكنك الإطلاع على هذه المقالة: ولمزيد من الشرح عن المعالجة الأولية Preprocessor أطلع على هذه المقالة:1 نقطة
-
المتغيرات الرقمية الصحيحة في ++C إما أن يكون لها إشارة (موجب - سالب) مثل نمط int أو فقط موجبة unsigned غير مؤشرة.. في النمط unsigned يتم تعريف المتغير على 4 بايت أي 32 بت ولكن يتم أخذ جميع 32 بت لتحمل قيمة (لايوجد بت إشارة) فيكون مجال القيم لها دوماً موجب.. من 0 أصغر قيمة حتى 4 مليار و 294 مليون .. 4294967295 0, 1, 2, 3, ... (2^32 = 4294967295) 00000000000000000000000000000000 //0 00000000000000000000000000000001 //1 00000000000000000000000000000010 //2 . . 11111111111111111111111111111111 // 4294967295 في حال جمع 1 لآخر قيمة 4294967295 + 1 = 0 ستعود ل 0 (لأنه لا يتم الاحتفاظ بالقيمة المحمولة) في حال طرح 1 من 0 في النمط unsigned، سيعود التمثيل الثنائي ليصبح 11111111111111111111111111111111 أي أعظم قيمة ممكنة للرقم يمكن اعتبار التمثيل يدور بشكل حلقة و 0 بجانب 4294967295 ***** في النمط int يتم تعريف المتغير على 4 بايت أي 32 بت منهم 31 تحمل قيمة و الأخير للإشارة، ومجال الأرقام له من: - 2 ^ 31 => -2147483648 2 ^ 31 - 1 => 2147483647 (أقل ب 1 لأنها تضمن 0) كمجال .. =>>> -2147483648, -2147483647, -2147483646 ... -2 -1 0 1 2 3 .. 2147483646 , 2147483647, -2147483648, -2147483647 *********** 0 0000000000000000000000000000000 ^ 0 => موجب 1 => سالب 00000000000000000000000000000000 //0 00000000000000000000000000000001 //1 00000000000000000000000000000010 //2 11111111111111111111111111111111 // -1 11111111111111111111111111111110 // -2 11111111111111111111111111111101 // -3 عليك الانتباه، أن أسلوب التعامل مع الأعداد كما هي في النظام الثاني، يتم الجمع ضمن حلقة وهي عدد البتات القادرة على تمثيل العدد، وعند الجمع أو الطرح يتم تجاهل القيمة المحمولة للخانة الأكبر، أو يتم إسناد 1 للبت اليساري فتقلب إشارة العدد للسالب بشكل خطأ.. ********* في الشيفرة لديك، أنت تقوم بتعريف X ضمن main بنوع unsigned ولكن تستقبلها في الدالة check بالنوع int أي تمرير 11111111111111111111111111111111 كمتغير بدون إشارة بقيمة 4294967295 لمتغير بإشارة فسيقوم بمعاملتها ك -1 مما يحقق الشرط، أي X ضمن الدالة check قيمتها -1 بينما في main ستكون 4294967295 وهذا سبب طباعتها.1 نقطة
-
يوجد في ++C نوعين من المتغيرات الرقمية، متغيرات بإشارة signed ومتغيرات بدون إشارة unsigned، ويتم تخزين هذه المتغيرات بطرق مختلفة، ويكمن الإختلاف بينهما هو أن المتغيرات بدون إشارة unsigned يمكنها تخزين أرقام أكبر من المتغيرات التي بإشارة، وذلك لأنها تستخدم bit إضافة (الـ bit الخاصة بالإشارة الموجبة او السالبة). ولفهم سبب حدوث المشكلة يجب أن نعرف النوع int وكيف يتم تخزينه في الذاكرة. قيمة 1-بايت من نوع int يمكن أن يحمل 255 إحتمال من القيم، وهي ما بين -127 و +127 ، وبالتالي عند محالة تخزين رقم أكبر من 127 (مثل 180 على سبيل المثال) سيحدث شيء يسمى "طفح عدد صحيح integer overflow" وذلك يعني أن المتغير لا يمكنه أن يحمل قيمة أكبر من 127 أو أقل من -127 وسيؤدي هذا الأمر إلى حدوث خطأ أثناء عملية التصريف compiling في أغلب بيئات التطوير. على الجانب الآخر يمكن للمتغيرات التي ليس لها إشارة unsigned أن تحمل 255 إحتمال من القيم أيضًا ولكن تكون هذه القيمة ما بين 0 إلى 255 وبالتالي يمكن تخزين الرقم 180 بدون مشكلة في نفس حجم الذاكرة، لكن تكمن المشكلة في هذا النوع أنه عند تخزين رقم أكبر من 255 سوف يحدث ما يسمى Unsigned integer overflow أي أن الأرقام الأكبر من 255 سوف تبدأ من صفر مجددًا: #include <iostream> int main() { unsigned short x{ 65535 }; // النوع short يمكنه أن يحمل قيمة 65535 بحد أقصى std::cout << "x was: " << x << '\n'; x = 65536; // 65536 is out of our range std::cout << "x is now: " << x << '\n'; // x = 0 x = 65537; // 65537 is out of our range std::cout << "x is now: " << x << '\n'; // x = 1 return 0; } ملاحظة: النوع short مثل int تمام لكنه يحمل قيم أقل (65535 بحد أقصى). في الكود السابق يتم تحويل الرقم 65536 إلى 0 مجددًا وذلك لأن النوع short لا يمكنه أن يحمل كل هذه القيم لذلك يتم تجاهل الـ bit الأخير، حيث يتم التعبير عن الرقم 65535 في الذاكرة بهذا الشكل 1111 1111 1111 1111 وعندما نقوم بزيادة رقم واحد ليصبح 65536 سوف يكون شكل الرقم كالتالي: 1 0000 0000 0000 0000 ويتم تجاهل الـ bit الأخير (لأن هذا النوع يمكنه أن يحمل 16-bit فقط) مما يؤدي إلى جعل الرقم يصبح صفر في النهاية. وبالمثل يتم التعامل مع الأرقام السالبقة في المتغيرات التي لا تحمل إشارة unsigned، فعندما تحاول طرح رقمين unsigned وفي حالة كان الرقم سالبًا سوف تبدأ من العكس: #include <iostream> int main() { unsigned int x{ 3 }; unsigned int y{ 5 }; std::cout << x - y << '\n'; // 4294967294 return 0; } وذلك لنفس السبب السابق، وفي الكود الخاص بك يتم التحقق مما إذا كان الرقم أكبر من أو يساوي -1 وبالتالي سوف يتم التعامل مع الرقم -1 الأخير على أنه الرقم 4294967295، ولحل المشكلة يجب تغير الشرط في الدالة check ليصبح أكبر من أو يساوي 0: bool check(int x) { return x >= -1; } يؤدي إستخدام المتغيرات من نوع unsigned إلى سلوك غير معرف في بعض الأحيان، لذلك لا ينصح أبدًا بإستخدامه إلا عند الضرورة الشديدة مثل برمجة برامج تعمل على أجهزة بذاكرة محدودة للغاية (لتوفير المساحة) أو عند التعامل مع الأرقام الثنائية bitwise operations أو عند التعامل مع خوارزميات التشفير encryption أو توليد الأرقام العشوائية random number generation.1 نقطة
-
في مصر يمكنك أن تقوم بإستخراج بطاقة فيزا لإستخدامها على الإنترنت، وتسمى "فيزا مشتريات أونلاين" في أغلب البنوك مثل البنك الأهلي المصري وبنك مصر وبنك الإسكندرية وبنك QNB وغيرها، وخطوات إستخراج هذه البطاقة وتكلفتها والوقت المستغرق في هذه العملية يختلف من بنك لآخر، ويجب أن تقوم بسؤال أحد الموظفين في أي فرع للبنك الذي تريده وسوف يخبرك بتفاصيل إستخراج بطاقة مشتريات من البنك، وفي الغالب سوف تحصل عليها في نفس اليوم أو بعد أسبوع كحد أقصى من وقت طلبك للفيزا. عليك أيضًا أن تسأل إن كانت الفيزا تدعم ربطها مع PayPal وأغلب البنوك تدعم ذلك بدون مشكلة، وذلك لأن كل البنوك لديهم عدة أنواع من البطاقات الإئتمانية التي تدعم الشراء عبر الإنترنت، وتختلف هذه الأنواع ومميزاتها من ينك لآخر بالطبع. أيضًا يمكنك أن تستخرج بطاقة Easy Pay مسبقة الدفع من أي مكتب للبريد المصري وهي بطاقة تدعم الشراء عبر الإنترنت وكذلك ربطها مع PayPal بدون مشكلة، وتدعم السحب من أغلب ماكينات ATM كذلك، ويُمكن إستخراجها في نفس اليوم ببطاقة الرقم القومي فقط وبتكلفة 25 جنية مصري فقط، وبعد إستخراجها يجب أن تقوم بشحنها بقيمة 100 جنية مصري على الأقل لكي يتم تفعيلها (يتم إضافة المئة جنية على الفيزا كرصيد). خطوات ربط بطاقة الفيزا مع PayPal بعد تسجيلك في موقع PayPal ستحتاج إلى إضافة بطاقة إئتمانية تدعم الشراء عبر الإنترنت إلى حسابك، وسوف يقوم موقع PayPal بخصم 1 دولار أمريكي من الفيزا للتأكد من صلاحيتها (سوف يتم إرجاع هذه القيمة بعد أسبوع من سحبها إلى حساب PayPal الخاص بك)، ولكي يتمكن PayPal من سحب هذه القيمة يقوم بطلب إدخال "رقم تأكيد عملية الدفع لـ PayPal"، ويجب أن تقوم بالإتصال بخدمة عملاء البنك الخاص بك (أو البريد المصري في حالة بطاقة Easy Pay) وطلب منهم "رقم تأكيد عملية الدفع لـ PayPal" وسوف يخبرك به موظف الدعم الفني، وهذا الرقم سوف تقوم بكتابته في موقع PayPal. ملاحظة: إن لم تتمكن من ربط بطاقة فيزا الخاصة بك بـ PayPal يُمكنك طلب المساعدة من خدمة العملاء الخاصة بالبنك وسوف يقوم بمساعدتك وإرشادك إلى الخطوات والتفاصيل. ملاحظة: قد تتأخر عملية الحصول على "رقم تأكيد عملية الدفع لـ PayPal" إلى ما يصل لأسبوع، لذلك قد يكون عليك أن تقوم بالإتصال بخدمة عملاء البنك الخاص بك أكثر من مرة للتأكد من وصول الرقم لديهم لكي يخبرك به. طريقة شحن البطاقات الإتمانية مسبقة الدفع يُمكنك أن تقوم بشحن البطاقة من أي فرع للبنك الخاص بك (أو أي مكتب بريد مصري في حالة بطاقة Easy Pay) أو من ماكينات ATM التي تدعم الإيداع، ويمكنك أن تسأل البنك عن أماكن تواجد هذه الماكينات في المنطقة التي تسكن بها. ملاحظة: يُمكن شحن بطاقة Easy Pay أيضًا من ماكينات الإيداع الخاصة بأغلب البنوك بما فيها ماكينات البنك الأهلي المصري.1 نقطة
-
ويندوز 11 جديد نسبيًا مقارنة بالإصدارات السابقة منه مثل Windows 10 أو Windows 8.1، لذلك قد يكون هناك الكثير من المشاكل -حتى ولو كانت صغيرة- التي لم يتم حلها بعد (أو لم يتم إكتشافها من الأساس)، وعلى سبيل المثال إن كان حاسوبك يعمل بمعالج من نوع AMD Ryzen فقد تواجهة مشكلة في تشغيل بعض الألعاب أو بطء عام في الجهاز بنسبة تصل إلى 15% من أداء الجهاز العادي، مع العلم أن Microsoft قد أعلنت أنها أصلحت هذه المشكلة في التحديث الأخير (تحديث رقم Build 22000.282)، وقد قامت شركة AMD بطرح تعريف Driver جديد لإصلاح المشكلة من جانبها أيضًا (الإصدار 3.10.08.506). هذا وقد تجد عدد من المشاكل الأخرى مثل الإتصال بالطابعات، أو طلب صلاحييات المدير في كل مرة يتم فيها إستخدام الطابعة، أو مشاكل عند إنشاء أو إستخدام نظام إفتراضي Virtual machines (VMs)، وغيرها من المشاكل الأخرى يمكنك الإطلاع على آخر المشكلات الموجودة حاليًا في النظام ومعرفة كيفية إصلاح المشكلة (إن كان لها حل في الوقت الحالي) من خلال Windows 11 known issues and notifications الرسمية. لذلك لا يُنصح بتجربة Windows 11 على حاسوب الشخصي وخصوصًا إن كان لديك ملفات مهمة أو تستخدمه بكثرة في الأعمال، لأنك قد تواجهة مشكلة من المشكلات السابقة أو حتى مشكلة جديدة لم يتم إصلاحها بعد، مما سيؤثر بالسلب على عملك أو وقتك، ويُفضل أن تنتظر عدة أسابيع أخرى قبل تجربة النظام لضمان أن أغلب المشكلات قد تم حلها بالفعل. كما أنك في الغالب لا تحتاج إلى تثبيت Windows 11 من الأساس، فإن كان حاسوبك على ما يرام بـ Windows 10 وكل البرامج التي لديك تعمل عليه، فلست بحاجة إلى المخاطرة وتجربة نظام جديد خصوصًا إن كنت تستعمل حاسوبك في أمور مهمة كالعمل أو الدراسة كما ذكرت سابقًا، أما إن كان ينتابك الفضول فقط وتريد تجربة النظام فمن الأفضل أن تقوم بتجربة على حاسوب آخر أو حتى كنظام وهمي Virtual machine مع العلم أن هذا الأمر قد يكون معقدًا قليلًا في الوقت الحالي بسبب متطلبات تشغيل windows 11.1 نقطة
-
يمكنك أن تستخدم أكثر من عنصر tbody كما وضح المدرب أسامة، ويمكنك أن تستخدم الصفوف فقط للقيام بهذه المهمة أيضًا، على النحو التالي: <table border="2" width="100%"> <thead> <tr> <th>Group</th> <th>Avatar</th> <th>Name</th> <th>Email</th> <th>Character</th> <th>Profile</th> </tr> </thead> <tbody> <!-- المجموعة الأولى --> <tr> <td rowspan="3">Ninja</td> <td rowspan="2"><img src="https://via.placeholder.com/40/f00" alt=""></td> <td rowspan="2">Osama mohamed</td> <td>o1@nn.sa</td> <td rowspan="2">@</td> <td rowspan="2"><a href="#">Profile</a></td> </tr> <tr> <td>o2@nn.sa</td> </tr> <tr> <td><img src="https://via.placeholder.com/40/00f" alt=""></td> <td>Saed Zareef</td> <td>S@nn.ss</td> <td>™</td> <td><a href="#">Profile</a></td> </tr> <!-- المجموعة الثانية --> <tr> <td>Monsters</td> <td><img src="https://via.placeholder.com/40/000" alt=""></td> <td>Mohamed Hany</td> <td>m@nn.sa</td> <td>®</td> <td><a href="#">Profile</a></td> </tr> </tbody> <tfoot> <tr> <td colspan="5">Total members </td> <td>3</td> </tr> </tfoot> </table> لاحظ كيف أن كل صف tr في المجموعة الأولى يحتوي على عدد معين من عناصر td، وذلك للسماح للخلايا بالتوسع وأخذ مساحة أكثر من صف rowspan.1 نقطة
-
يُمكن بيع القوالب الجاهزة في خمسات، فعند البحث عن كلمة "قالب" على سبيل المثال، ستجد خدمات تقوم ببيع قالب معين مع بعض الإضافات والمميزات المدفوعة والإختيارية مثل بيع القالب بدون حقوق أو تركيبة على أكثر من مدونة. ويمكنك أن تقوم بعمل خدمة في خمسات وسيتم مراجعتها من قِبل فريق مختص، وإن حدثت مشكلة أو كانت الخدمة مخالفة سوف يتم الرد عليك من خلال البريد الإلكتروني بكل التفاصيل وهذا الأمر مذكور في نهاية صفحة المساعدة "إضافة خدمة مميزة". يمكنك أيضًا أن تقوم بإعطاء المستخدم شرح بسيط عن كيفية إستخدام القالب ومميزاته في شكل كُتيب صغير أو مقطع فيديو. نصيحة إضافية: قُم بقراءة بعض المقالات من الأكاديمية حول إستخدام برنامج Microsoft Word، وهذا الأمر سيساعدك للغاية في تحسين القوالب التي تقوم بها وإضافة بعض المميزات إليها.1 نقطة
-
منذ الإصدار 1.6 من جانغو Django يمكنك تشغيل حالة اختبار كاملة، أو اختبار فردي. سيتم اكتشاف الاختبارات تلقائيًا الموجودة في أي ملف يبدأ بكلمة test ضمن المسار الحالي Current Working Directory (CWD). لذلك إذا كنت في نفس المجلد الذي يحتوي على الملف manager.py وتريد تشغيل test_a داخل الصنف الفرعي A داخل الملف test.py ضمن التطبيقapp / الوحدة module باسم example، فيجب أن تنفذ الأمر التالي: ./manage.py test example.tests.A.test_a ويمكننا أن نضع صيغة الأمر كالتالي: ./manage.py test app_name.tests.SubClass.test_name كما يمكنك أن تستخدم الحزمة django-nose التي تتيح لك تحديد الاختبارات لتشغيلها على النحو التالي: ./manage.py test another.test:TestCase.test_method أو كما هو مذكور في التعليقات ، استخدم بناء الجملة: ./manage.py test another.test.TestCase.test_method لاحظ أن الأمر الأخير لا يحتوي على علامة نقتطين : عكس الأمر الذي يسبقه. لتثبيت حزمة django-nose يمكنك تنفيذ أحد الأمر التاليين: pip install django-nose pip install -e git://github.com/jazzband/django-nose.git#egg=django-nose ثم يجب إضافة الحزمة ضمن التطبيقات المثبته installed apps في ملف settings.py، كالتالي: INSTALLED_APPS = ( # ... 'django_nose', # ... ) وفي النهاية يجب إضافة TEST_RUNNER إلى نفس الملف لكي تتمكن الحزمة من تشغيل الإختبارات: TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'1 نقطة
-
يمكنك أن تقوم بذلك من خلال إستخدام التابع group في الكائن console بدلًا من التابع log، كالتالي: console.group('Group 1'); console.log('Message One'); console.log('Message Two'); // Nested Groups console.group('Child Group'); console.log('Message One'); console.log('Message Two'); console.group('Grand Child Group'); console.log('Message One'); console.log('Message Two'); console.groupEnd(); console.groupEnd(); console.groupEnd(); لاحظ أن المجموعة group يجب أن يتم إغلاقها من خلال التابع groupEnd (بحرف E كبير). أيضًا يمكنك أن تقوم بطباعة هذه المجموعات مغلقة بشكل إفتراضي collapsed من خلال إستخدام التابع groupCollapsed بدلًا من التابع group، كالتالي: console.groupCollapsed('Group 1'); console.log('Message One'); console.log('Message Two'); // Nested Groups console.groupCollapsed('Child Group'); console.log('Message One'); console.log('Message Two'); console.groupCollapsed('Grand Child Group'); console.log('Message One'); console.log('Message Two'); console.groupEnd(); console.groupEnd(); console.groupEnd(); ستلاحظ أن المجموعات تظهر بشكل إفتراضي، وأنها تغلق من خلال التابع groupEnd أيضًا.1 نقطة
-
بالنسبة لكيفية تصميم المواقع على الإنترنت فهي مهارة يمكنك تعلمها و هذا قد يستغرق بعض الوقت إن كنت بدون موجه و مؤطر يتبع خطواتك في التعلم و يرشدك إلى الخطوات القادمة للتعلم بسرعة و جودة كافية, لذلك أنصحك بأخذ دورة تطوير واجهات المستخدم و دورة تطوير تطبيقات الويب باستخدام لغة PHP أو دورة تطوير تطبيقات الويب باستخدام لغة Ruby. لفهم الفرق بين الدورات لابد أن تعلم مما تتكون المواقع الإلكترونية, هته الأخيرة تنقسم لجزأين : Front-End : هو كل ما يظهر للمستخدم من أشكال و ألوان مشكلَة شكلَ و تناسق الموقع أو بمعنى آخر واجهة المستخدم و تطور هته الواجهة بثلاثة لغات أساسية: HTML و CSS و JavaScript و الكثير من الأدوات التي ستتعلمها في دورة تطوير واجهات المستخدم. Back-End : إذا كان الموقع يقتصر فقط على Front-End فسيكون ثابت, لذلك فلتطوير موقع ديناميكي أيْ موقع يعرض لك محتوى متغيرا عن الذي يعرضه لمستخدم آخر فلابد من تدخل لغات Back-End في هته المهمة و التي هي كثيرة لكن أهمها هما PHP و Ruby لذلك لتعلم هذا الجانب من الموقع يمكنك أخذ واحدة من هته الدورات PHP أو Ruby. متقن الFront-End يطلق عليه Front-End Developer, و متقن الBack-End يطلق عليه Back-End Developer, أما الذي يتقنهما الإثنين فيطلق عليه Full Stack Web Developer. لكن إن كنت لا تود إطلاقا تعلم أي شيء, لا تقلق, لايزال بإمكانك تصميم صفحات الويب و تسويقها و ذلك بتشغيل مستقلين عرب يمتلكون المهارات المذكورة أعلاه و بالثمن الذي تريده و ذلك باستخدام منصة مستقل التي يمكنك دخولها بنفس حساب الأكاديمية. أتمنى أن تترك لي انطباعك عن الجواب فهذا يهمني كثيرا و شكرا. تحياتي الحارة.1 نقطة
-
1 نقطة