لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 12/03/21 في كل الموقع
-
هل استطيع تضمين مكتبة بوت ستراب في مشروع لارافيل بدون انترنت ؟؟ اذا كانت هناك طريقة ارشدوني بالمثلطريقة لاي مكتبة اخرى2 نقاط
-
أولا، عند انشاء مشروع جديد في هيروكو وعمل deploy له هل يجب ان اقوم باضافة متغيرات البيئة كاعدادات قاعدة البيانات مثلا في ملف env. ام أكتفي باضافتها هنا فقط في config vars ؟ ثانيا، لدي مشكله تحدث عند التهجير سواء في بيئه محليه أو علي هيروكو . حيث انه يجب أن أقوم بتسميه اسم الملف بسنة سابقة. مثلا اذا كان اسم الملف يحتوي علي 2021 يجب ان اقوم بتسميته الي 2004 ويجب ان يكون اول سطر والا يتم تجاهل الملف ولا تحدث عمليه التهجير، ما السبب في ذلك؟ استخدم خادم xampp باصدار قديم.2 نقاط
-
أريد أن أستخدم النوع std::string لتخزين القيمة المرجعة من الدالة ()fget، لذلك أحتاج تحويل القيمة من نوع *char المرجعة من الدالة ()fget إلى std::string كيف أقوم بهذا الأمر في لغة ++C؟1 نقطة
-
كيف اكتب كود يخبرني بنوع القيمة الموجودة داخل النص؟ مثلا "mohammed" الناتج string " 5 " الناتح integer " 5.7 " الناتج double مع التأكيد ان كل القيم السابقة داخل علامات تنصيص1 نقطة
-
كيف يمكنني الحصول على كود المصدر page_source لصفحة الويب باستخدام السيلينيوم؟ أريد أن أقوم بشيء مماثل لما يلي، لكن لا أعرف كيف أحصل على ال page_source : from selenium import webdriver br = webdriver.Firefox() br.get("url") if "something" in page_source : # Do something else: # Do something else1 نقطة
-
أريد حفظ جميع ملفات تعريف الارتباط الحالية ضمن ملف لكي أعيد استخدامها لاحقاً، كيف يمكنني القيام بذلك؟1 نقطة
-
لدي namespace ويحتوي على دالة باسم user_details ولكن لدي دالة أخرى عامة global بنفس الاسم: std::string user_details() { return "global"; } namespace user { std::string user_details() { return "local"; } void execute() { std::cout << user_details(); // Output: local } } عندما أقوم بتنفيذ الدالة execute يتم تنفيذ الدالة user_details الموجودة في الـ namespace، كيف أقوم بإستدعاء الدالة العامة الموجودة خارج الـ namespace لكي تكون النتيجة "global"؟1 نقطة
-
هل الصداع بالرأس طبيعي اثناء تعلم البرمجه واذا هاد الامر طبيعي شو حله1 نقطة
-
الصداع هو أمر ستواجهه أثناء العمل المكتبي وخصوصًا الذي يحتاج لجلوس لفترات طويلة، سببه الأساسي هو وضعية الجلوس الخاطئة وخاصة احناء الرأس إلى الأمام دون الشعور بذلك لفترات طويلة أنصحك بتعديل وضعية جلوسك وخاصة الانتباه لانحناء الرأس إلى الأمام وتعديلها دوما بحيث يكون مستوى الأذنين فوق الكتفين مباشرة طوال الوقت ما أمكن إلى أن تعتاد على وضعية الجلوس الصحيحة تلك. هناك تمارين خاصة بالعمل المكتبي يجب عليك الاعتياد على تنفيذها مع الوقت ستشعر بالراحة أثناء الجلوس لفترات طويلة. راجع دليل حسوب لوضعية الجلوس الصحيحة، و دليل الإعداد الصحيح لمكان العمل. راحتك الجسدية والنفسية ليست من الكماليات، بل هي أساس عملك المكتبي كمطور، حاول الاهتمام بها قدر الإمكان وسينعكس ذلك على انتاجيتك.1 نقطة
-
يمكنك تحميل ملفات المكتبة من هنا ,و من ثم يمكنك وضع هذه الملفات بداخل مجلد public و من ثم يمكنك الوصول لملفات css بهذه الطريقة <link rel="stylesheet" href="{{ asset('dist/css/bootstrap.min.css') }}" <link rel="stylesheet" href="{{ url('') }}/dist/css/bootstrap.min.css" و ملفات js بهذه الطريقة <script src="{{ asset('dist/js/bootstrap.min.js') }}"></script> <script src="{{ url('') }}/dist/js/bootstrap.min.js"></script>1 نقطة
-
1 نقطة
-
في هيروكو، أي متغيرات تخص البيئة يجب إضافتها إلى قسم إعداد المتغيرات ليتم العمل بها لأن ملف البيئة env. متجاهل افتراضا من عليها. للإجابة على سؤالك الثاني بشأن تجاهل ملف التهجير يجب أولا فهم طريقة لارافيل والمنطق وراء تعقب ملفات التهجير وتطبيقات الشيفرات داخلها حتى يمكن تحديد المشكل بالضبط. تحمل ملفات التهجير في لارافيل الأسماء على النحو التالي: 2021_12_03_100000_create_users_table يتم تقطيع سلسلة الاسم النصية إلى 7 أجزاء كالتالي: 2021 12 03 100000 create users table يتم اقتطاع الأربع أجزاء الأولى الممثلة بتاريخ إنشاء ملف التهجير ليتبقى: create users table يتم إعادة تشكيل السلسة النصية و كتابة الأحرف الأولى كأحرف كبيرة كالتالي: CreateUsersTable يكون هذا هو اسم الصنف الموجود داخل ملف التهجير، ولارافيل تقوم بكل هذا عند إنشاء ملف تهجير عن طريق الأمر: php artisan make:migration create_users_table أو عند إنشاء ملف نموذج: php artisan make:model -m تحدث أحيانا مشكلة تجاهل ملف التهجير هاته عند إنشاء الملفات يدويا أو تعديل أسماءها لاحقا، ويكون ذلك عن الإخلال بترتيب أو خطأ بخصوص توافق اسم ملف التهجير مع الصنف المحتو فيه مثل: وضع تاريخ الإنشاء آخرا، وهذا في الأرجح ما حصل معك. وبالتالي يجب دوما عند إنشاء ملفات التهجير يدويا مراعاة القواعد التي يستعملها لارافيل في استخراج الأصناف المستهدفة من الملفات. [year]_[month]_[day]_[HHMMSS]_[action]_[tableName] حل آخر يقدمه لارافيل، هو في إنشاء ملفات التهجير المجهولة التي لا يتطلب اسم ملفها مراعاة لقواعد التسمية في لارافيل. إذ يمكنك تسمية هذا الملف وفق ما تشاء بشرط أن يحتوي التعريف التالي داخله: <?php use Illuminate\Database\Migrations\Migration; return new class extends Migration { // }; تعرف أكثر عن تهجير قواعد البيانات (migrations) على Laravel.1 نقطة
-
لا يجب عليك النظر إلى ملفات المكتبة إلا كملفات css أو جافاسكربت عادية، وبالتالي فإنه يمكنك الإعتماد على الأنترنت في تحميل ملفات أي المكتبة أولا ومن ثم سيمكن تضمينها كأي ملف css أو جافاسكربت آخر. على سببيل المثال: قم بتحميل ملف bootstrap.min.css. قم بإنشاء مجلد ملفات داخل public وليكن libs وضع به ملفات المكتبة. يمكنك الآن بأي ملف عرض تضمينه كالتالي: <link rel="stylesheet" href="{{ asset('libs/bootstrap.min.css') }}" وبمثل الطريقة تضمين ملف الجافاسكربت وهكذا .. في حالة توفر المكتبة لمدير الحزم npm يفضل تثبيتها وفقه مثلما أشار المدرب صلاح الدين.1 نقطة
-
اذا كان تساؤلك عن طريقة لتواجد bootstrap في المشروع والعمل بدون انترنت يعني تجنب التضمين عبر cdn فيمكنك تثبيته في المشروع عبر هذه الاوامر composer require laravel/ui بعد تثبيت الحزمة بنجاح نقوم بتثبيت Bootstrap 4 في تطبيقنا باستخدام الأمر التالي php artisan ui bootstrap يمكنك أيضًا تثبيت مكتبات المصادقة باستخدام الأمر التالي بدلاً من ذلك php Artisan ui bootstrap --auth أخيرًا تحتاج إلى تثبيت حزمة bootstrap والاعتماديات ذات الصلة بالواجهة الأمامية مثل jquery باستخدام الأمر التالي npm install1 نقطة
-
بالجافاسكريبت يمكنك فعل ذلك بسهولة عن طريق التلاعب بخاصية display في css <button onclick="myFunction()">show</button> <tabel id="table"> ... </table> function myFunction() { var x = document.getElementById("table"); if (x.style.display === "none") { x.style.display = "block"; } else { x.style.display = "none"; } } ويمكنك استخدام الاستراتيجية ذاتها لاخفاء زر الاظهار مثلا واظهار زر الاخفاء1 نقطة
-
الملف .env يعمل فقط في بيئة التطوير أي انه لا يجب أن ترفعه الى اي مكان فعمله ينتهي في حاسوبك ولهذا يجب تجاهله عن الرفع على github وبالنسبة ل heroku فانت أي متغير بيئي مستخدم من طرفك في المشروع يجب وضعه في ال config vars ولن تكون هناك مشكلة لأن مشروعك سيتغذى على متغيرات البيئة الموضوعة في config vars ملاحظة عند تغيير متغيرات البيئة config vars يجب عمل restart ل dyno لتأخذ الفعالية1 نقطة
-
هذا الكود عبارة عن موجهة معالجة مسبق preprocessor directive ويستخدم كحارس لملفات الترويسة header guard، فبدلًا من تعريف قيمة معينة (في الغالب تكون اسم الملف بأحرف كبيرة) لكي لا يتم إستدعاء ملفات الترويسة أكثر من مرة لكي لا يحدث خطأ (function already has a body)، فيمكن أن تستخدم هذا الموجهة بشكل تلقائي في كل ملفات الترويسة لديك لكي لا يحدث هذا الخطأ. يوفر هذا الموجهة الكود والوقت لأنك لن تضطر إلى تعريف موجهة خاص لكل ملف ترويسة لديك. #pragma once struct foo { int member; }; يوجد بعض المصرفات compilers التي تقوم بتحسين أداء البرنامج عند إستعمال هذا الموجهة بدلًا من الطريقة التقليدية، حيث لن يقوم الـ preprocessor بإعادة قراءة الملفات التي تحتوي على هذا الموجهة في بدايتها مما يحسن من عملية التصريف وأداء البرنامج بشكل طفيف ملاحظة: هذا الموجهة ليس جزء من تعليمات ++C الرسمية ولكن يتم إستعماله بشكل كبير في أغلب المصرفات compilers، لذلك عليك التأكد أولًا من أن المصرَّف الذي لديك يدعم هذا الموجهة. هنا صورة توضح المصرفات التي تدعم هذا الموجهة والتي لا تدعمه: أنظر إلى خطأ function already has a body من هنا: يمكنك أن تقرأ المزيد عن هذا الموجهة من خلال هذه المقالة هنا:1 نقطة
-
يمكنك الحصول على طول النص عبر التابع length حيث يقوم هذا التابع بإرجاع طول النص من خلال قيمة من نوع unsigned int: #include <iostream> #include <string> int main() { std::string str; std::cout << "Enter your name: "; std::getline(std::cin >> std::ws, str); std::cout << str.length() << '\n'; return 0; } ثم يمكنك المرور على كل الحروف عبر عمل حلقة for، كالتالي: #include <iostream> #include <string> int main() { std::string str; std::cout << "Enter your name: "; std::getline(std::cin >> std::ws, str); for (int i = 0; i < str.length(); ++i) std::cout << str[i] << '\n'; return 0; } لاحظ كيف تم إستخدام المتغير i للوصول إلى أحد الحروف في النص str1 نقطة
-
عند مقارنة أعداد عشرية (فاصلة عائمة) وحساب القيمة المطلقة، يفضل استخدام الدالة fabs أي float absolute لأنها خاصة بالأعداد العشرية، ويمكننا الحصول على الثابت epsilon بقيمة صغيرة ودقيقة للحسابات من std::numeric_limits<double>::epsilon() الرياضية من مكتبة limits #include <cmath> #include <limits> bool AreSame(double x, double y) { return std::fabs(x - y) < std::numeric_limits<double>::epsilon(); }1 نقطة
-
يمكنك أن تقوم بعمل دالة تقارن بين رقمين مع فارق بسيط، كالتالي: #include <cmath> // epsilon عبارة عن مقدار المقبول الممكن بين المتغيرين bool isAlmostEqual(double a, double b, double epsilon) { // إذا كان المتغيرين a و b متقاربين كفاية return std::abs(a - b) <= epsilon; } ويمكن إستخدام هذه الدالة، كالتالي: double x{ 0.1 + 0.2 }; std::cout << isAlmostEqual(x, 0.3, 0.0001) << '\n'; سيتم طباعة 1 (true) إذا كان الفارق بين القيمتين أقل من أو يساوي 0.0001. كما يمكن إستخدام دالة أفضل، فبدلًا من الإعتماد على أن يكون المعامل epsilon عبارة عن الفارق بين المتغيرين، يمكن أن نستخدمه على أنه نسبة الفارق بين المتغرين: bool isAlmostEqual(double a, double b, double epsilon) { return (std::abs(a - b) <= (std::max(std::abs(a), std::abs(b)) * epsilon)); } ويمكن أن تستخدمها بنفس الطريقة السابقة أيضًا.1 نقطة
-
يمكنك أن تستخدم typeid للحصول على نوع المتغير كسلسلة نصية string: #include <iostream> #include <typeinfo> int main() { int x{ 1 }; std::cout << typeid(x).name() << '\n'; // int return 0; } أما إن كنت تستعمل boost فتستطيع القيام بالتالي: #include <iostream> #include <boost/type_index.hpp> using boost::typeindex::type_id_with_cvr; int main() { int x { 1 }; std::cout << "decltype(i) is " << type_id_with_cvr<decltype(x)>().pretty_name() << '\n'; // int return 0; }1 نقطة
-
النوع * int يشير إلى مؤشر pointer إلى متغير من نوع int، ويكتب بصيغة واحدة فقط: int x{ 1 }; int * y{ &x }; std::cout << x << ' ' << y << '\n'; // 1 004FFA3C النوع الثاني هو * int const ، ويستخدم لعمل مؤشر pointer إلى ثابت من نوع int (أي أن المتغير هو الثابت وليس المؤشر)، ويكتب هذا النوع بطريقتين: const int x{ 1 }; // لاحظ أن هذا ثابت constant int const * y{ &x }; std::cout << x << ' ' << y << '\n'; // 1 004FFA3C // نفس الكود السابق const int x{ 1 }; const int * y{ &x }; // طريقة مختلفة لكتابة هذا النوع std::cout << x << ' ' << y << '\n'; // 1 004FFA3C النوع الثالث هو int * const وهو يعني عمل مؤشر ثابت لمتغير من نوع int (أي أن المؤشر pointer هو الثابت هنا): int x{ 1 }; int * const y{ &x }; std::cout << x << ' ' << y << '\n'; // 1 004FFA3C النوع الرابع وهو int const * const ويمكن أن يتم إستخدامه بطريقة أخرى وهي const int * const، تؤدي كلا الطريقتين نفس الغرض: const int x{ 1 }; int const * const y{ &x }; std::cout << x << ' ' << y << '\n'; // 1 004FFA3C // طريقة أخرى لإستعمال نفس النوع const int x{ 1 }; const int * const y{ &x }; std::cout << x << ' ' << y << '\n'; // 1 004FFA3C يمكنك ان تفهم ما يقوم به أي نوع من الأنواع السابقة من خلال قراءته من اليمين إلى اليسار، فعلى سبيل المثال النوع int * const يقرأ: int * const constant pointer to int لاحظ كيف أن إتجاه القراءة بدأ بكلمة const إلى int وبنفس الطريقة يمكن أن تقوم بقراءة باقي الأنواع: int * - pointer to int int const * - pointer to const int int * const - const pointer to int int const * const - const pointer to const int1 نقطة