-
المساهمات
2852 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
38
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Hassan Hedr
-
بعد انشاء الـ subplot ax = plt.subplot(...) يمكن تغيير العنوان للـ subplot من الخاصية title عن طريق استدعاء الدالة set_text كالتالي ax.title.set_text("title") يصبح المثال لديك كالتالي axs[0, 0].title.set_text('Title 1') axs[1, 0].title.set_text('Title 2') axs[0, 1].title.set_text('Title 3') axs[1, 1].title.set_text('Title 4')
-
- 4 اجابة
-
- 1
-
-
لا يوجد ما هو الأفضل، بل يوجد ما هو الأنسب، بحسب متطلبات المشروع الذي تعمل عليه، بشكل عام اذا كنت متمكن جيدًا من JavaScript ستجد سهولة بالعمل بنفس اللغة والحلول بكافة أقسام المشروع سواء تطوير الواجهات أو النظم الخلفية، يمكنك الإطلاع على المقارنة بين Laravel و NodeJS من الإجابة التالية NextJS طرفي العميل والخادم أقرب، يوفر مزايا تسهل تنفيذ أجزاء من الكود بطرف الخادم وأجزاء بطرف العميل دون الحاجة للاهتمام بالبنية التحتية لمثل ذلك التقسيم يوفر مزايا التحسين لمحركات البحث SEO يمكن انشاء مشاريع تتدرج بين مشروع على خادم بالكامل، ومشروع بطرف العميل بالكامل Static Website، ومزيج بين الاثنين
- 1 جواب
-
- 1
-
-
حاول تعطيل التحقق من شهادة الحماية SSL لهذا الطلب حصرا عبر تمرير التالي: $response = Http::withOptions([ 'verify' => false ]) ->withHeaders(['X-Authorization' => 'ehougO6....' ]) ->post($url, $data); حاول مسح الإعدادات المؤقتة php artisan route:clear php artisan config:clear php artisan cache:clear قد تكون مشكلة في الاتصال بال DNS، أو مشكلة بالاتصال بشكل عام حاول التأكد حاول إعادة تشغيل الخادم المحلي (Apache أو Nginx)
- 4 اجابة
-
- 1
-
-
يمكن تعديل خصائص التسميات على المحور x عن طريق التابع xticks الموجود داخل plt لتدوير التسميات نمرر المعامل rotation بالقيمة 90 أو -90 حسب اتجاه الدوران المراد plt.xticks(rotation=90) لتكبير حجم المسميا نمرر المعامل fontsize بقياس الخط المناسب plt.xticks(fontsize=20) يمكن دمن التعليمتين معا يصبح مثالك كالتالي ... # تدوير وتكبير حجم التسميات plt.xticks(rotation=90, fontsize=20) plt.title('Matplotlib xticklabels Example') plt.show()
-
الأمر prompt ينتمي للغرض window الذي يوجد في بيئة المتصفح، NodeJS لا يحوي مثل الغرض window وبالتالي هذا التابع، الحل يكون بانشاء ملف HTML وربط ملف الـ JavaScript الذي لديك به سيمكنك ذلك من اختبار الشيفرة داخل بيئة المتصفح محتوى ملف الصفحة سيكون كالتالي <html> <head> <script src="ali.js"></script> </head> <body> </body> </html>
- 2 اجابة
-
- 1
-
-
عند الاستعلام من جدول ما عادة نذكر أسماء الأعمدة فقط، ضمنيا تجاهلنا إسباق اسم الجدول الذي ينتمي له العمود ضمنيا أيضا تجاهلنا إسباق اسم قاعدة البيانات الذي ينتمي له الجدول بفرض لدينا جدول المستخدمين users داخل قاعدة البيانات بالاسم company، الثلاث استعلامات التالية متساوية: SELECT * FROM users; # يساوي SELECT users.* FROM users; # يساوي SELECT company.users.* FROM users; تنفيذ الاستعلام من عدة قواعد بيانات بالذكر الصريح لمكان تواجد البيانات يمكن الاستعلام من عدة جداول في قواعد بيانات مختلفة بفرض لدينا الجدول users في قاعدتي بيانات لشركتين بالاسم company1 و company2، نستعلم عن مستخدمي الشركتين معًا كالتالي: SELECT company1.users.*, company2.users.* FROM company1.users, company2.users; لدمج النتائج معا وإظهارها كما لو كنا نستعلم من جدول واحد نقوم بعمل دمج بين الجدولين لمطابقة الأعمدة SELECT * FROM company1.users; JOIN company2.users on company1.users.Id = company2.users.Id
- 2 اجابة
-
- 1
-
-
بفرض لدينا جدول المستخدمين users التالي: +----+-------+ | Id | Name | +----+-------+ | 1 | أحمد | | 2 | عبدالله | | 3 | يوسف | | 4 | جمال | | 5 | محمد | | 6 | سعيد | +----+-------+ ونريد تصفح النتائج على صفحات كل صفحة فيها ثلاث أسطر، سيكون الجدول السابق عبارة عن صفحتين كل منها تحتوي ثلاث نتائج بالشكل التالي: # الصفحة الأولى +----+-------+ | Id | Name | +----+-------+ | 1 | أحمد | | 2 | عبدالله | | 3 | يوسف | +----+-------+ # الصفحة الثانية +----+-------+ | Id | Name | +----+-------+ | 4 | جمال | | 5 | محمد | | 6 | سعيد | +----+-------+ MYSQL نستخدم الكلمتين: LIMIT لتحديد عدد النتائج في الصفحة الواحدة (3 في حالتنا) OFFSET لتحديد رقم الصفحة يمكن تجاهلها للصفحة الأولى (1 أو 2 في حالتنا) تكون الاستعلامات كالتالي: # الصفحة الأولى SELECT * FROM users LIMIT 3 OFFSET 1; # أو SELECT * FROM users LIMIT 3; # الصفحة الثانية SELECT * FROM users LIMIT 3 OFFSET 2; SQL Server نستخدم الجملتين FETCH NEXT x ROWS ONLY لتحديد عدد النتائج في الصفحة الواحدة حيث x هو عدد النتائج (3 في حالتنا) OFFSET x ROWS لتحديد بداية الصفحة، حيث x يشير إلى ترتيب أول نتيجة نريدها في الصفحة، يمكن حسابها بدليل الصفحة كالتالي (حجم الصفحة × (رقم الصفحة - 1))، يمكن تجاهلها لأول صفحة (0 و 3 في حالتنا) تكون الاستعلامات كالتالي: # الصفحة الأولى SELECT * FROM users OFFSET 0 ROWS FETCH NEXT 3 ROWS ONLY; # أو SELECT * FROM users NEXT 3 ROWS ONLY; # الصفحة الثانية SELECT * FROM users OFFSET 3 ROWS FETCH NEXT 3 ROWS ONLY;
- 2 اجابة
-
- 1
-
-
أنت تقوم بتنفيذ الملف app.js يوجد فيه فقط انشاء الاتصال وتعريف للتابع singleRowInsert، قم باستدعاء تلك الدالة بعد تعريفها ليتم تنفيذ استعلام الإدخال على الجدول let singleRowInsert = () => { // ... }; // تنفيذ التابع singleRowInsert()
- 2 اجابة
-
- 1
-
-
توصيل شاشة إضافية يمكن ذلك عبر توصيل شاشة خارجية بأحد المآخذ من النوع HDMI - DVI - VGA بحسب المآخذ التي تدعمها الشاشة مع مأخذ حاسوبك للشاشة الخارجية عادة يكون إما HDMI أو VGA حسب المآخذ التي يدعمها إذا كان نوعي المآخذ في الطرفين مختلفين يجب شراء كبل خاص أو محول Adapter لأحد الطرفين لتحويله لنوع آخر يمكن وصله تغيير دوران الشاشة لعرض الشاشة طوليا أولا وضع الشاشة بشكل طولي وبعد وصلها وتشغيلها يمكنك الدخول الى إعدادات العرض بالضغط بالزر الأيمن على سطح المكتب ثم اختيار الشاشة الخارجية وتغيير اعدادات التدوير إلى Portrait
- 1 جواب
-
- 1
-
-
في حال كان الدمج JOIN عاديا فلا يوجد فرق في ترتيب الجداول قبل وبعد JOIN a JOIN b # تساوي b JOIN a أما إذا كنت تستعمل النوع LEFT أو RIGHT أو FULL من JOIN فالترتيب مهم لأن معنى العبارة يختلف فالجدول قبل JOIN يسمى يساري وبعدها يسمى يميني a LEFT JOIN b # لا تساوي b LEFT JOIN a a RIGHT JOIN b # لا تساوي b RIGHT JOIN a a FULL JOIN b # لا تساوي b FULL JOIN a
-
هل يمكن الاعتماد على العمل الحر ماديا؟ نعم العمل الحر هو العمل كمستقل غير مرتبط بوظيفة مع جهة محددة، انما يتم توظيفك لاتمام اعمال معينة وينتهي العقد بينك وبين صاحب العمل بمجرد انتهاء تنفيذ المطلوب، بعد مدة من دخولك السوق ستصبح تغطي وقتك بالكامل بعدة مشاريع مع عدة جهات وهو ما يجعلك معتمدا ماديا كليا على العمل الحر كيف أحصل على مشروعي الأول؟ بحسب مهاراتك وخبراتك ومجال عملك سيختلف الوقت الذي ستبدأ به باستلام المشاريع وتنفيذها بالاضافة الى تطوير مهاراتك وهو الأهم، يمكنك قراءة سلسلة مقالات دليل العامل المستقل هنا أيضا يجب أن تطلع على أساليب التسويق والتعامل مع الزبائن لكي تزيد فرصك، يمكنك القراءة أكثر عن ذلك
- 1 جواب
-
- 1
-
-
بفرض استخدام لغة PHP وفرض ان القصد من تنسيق الجدول هو جدول HTML، نقوم ببناء هيكلية الجدول كالتالي <table> <thead> <tr> <th>العدد</th> <th>مربع العدد</th> <th>مكعب العدد</th> </tr> </thead> <tbody> <!-- محتويات الجدول --> </tbody> </table> ثم نملئ محتويات الجدول بأسطر وخلايا بالترتيب التالي (العدد - مربع العدد - مكعب العدد) نستخدم حلقة for للمرور على الأعداد من 0 وحتى 10 نستخدم التابع pow لحساب عدد إلى قوة ما بتمرير الأساس ثم الأس، نستخدمه مرة لحساب المربع ومرة لحساب المكعب <tbody> <?php for ($i = 0; $i <= 10; $i++) : ?> <tr> <td><?php echo $i ?></td> <td><?php echo pow($i, 2) ?></td> <td><?php echo pow($i, 3) ?></td> </tr> <?php endfor ?> </tbody>
- 1 جواب
-
- 1
-
-
تقوم أولا بتعريف مصفوفة لعناوين المواعيد بنفس الترتيب الذي يرجعه الصف PrayTime ويجب أن يكون تصاعديا (في الشيفرة قد يبدو الترتيب معكوسا بسبب اتجاه اللغة العربية) String[] salahNames = { "الفجر", "الصبح", "الظهر", "العصر", "المغرب", "العشاء" }; نقوم بالمرور على كافة المواعيد بالترتيب، ونقارن الوقت الحالي بتوقيت كل موعد، عند أول توقيت لا يكون قد مضى نكون حاليا عند الموعد القادم for (int i = 0; i < salahNames.length; i++) { // اسم الموعد الحالي String salahName = salahNames[i]; // توقيت الموعد الحالي String salahTimeString = times.get(i); LocalTime salahTime = LocalTime.parse(salahTimeString, DateTimeFormatter.ofPattern("hh:mm a", Locale.ENGLISH)); // التوقيت الآن LocalTime currentTime = LocalTime.now(); // اذا كان الموعد الحالي هو القادم if (salahTime.isAfter(currentTime)) { // نقوم بحساب الوقت المتبقي وننهي الحلقة ... break; } } تقوم بحساب الوقت المتبقي للموعد القادم ابتداءا من الوقت الحالي، وانشاء النص وتحديث الواجهة if (salahTime.isAfter(currentTime)) { // الوقت المتبقي Duration diff = Duration.between(salahTime, currentTime); // الساعات والدقائق long hours = diff.toHours(); long minutes = diff.minusHours(hours).toMinutes(); // بناء نص الإظهار String timeLeftToNextSalah = ""; if (hours > 0) { // اضافة الساعات فقط اذا كان التوقيت اكثر من ساعة timeLeftToNextSalah += hours + " ساعات"; timeLeftToNextSalah += " و "; } timeLeftToNextSalah += minutes + " دقيقة"; // نحدث الواجهة باسم الموعد القادم والوقت المتبقي findViewById<TextView>(R.id.NextSalahName).text = salahName; findViewById<TextView>(R.id.NextSalahTimeLeft).text = timeLeftToNextSalah; break; } يمكنك إعادة تنفيذ ما سبق والتحديث كل دقيقة عبر استخدام Timer كالتالي Timer timer = new Timer(); timer.schedule( new TimerTask() { public void run() { // إعادة الحساب وتحديث الواجهة } }, 0, 60*1000); // كل دقيقة
- 7 اجابة
-
- 1
-
-
بتطبيق معامل بين أسماء الأعمدة حسب نوع الدمج الذي تريده العمليات الحسابية إذا كانت عملية دمج حسابية يمكن استخدام المعاملات الحسابية (جمع + ، طرح - ، قسمة / ، ضرب *) كالتالي SELECT عمود2 + عمود1 FROM جدول; SELECT عمود2 - عمود1 FROM جدول; SELECT عمود2 / عمود1 FROM جدول; SELECT عمود2 * عمود1 FROM جدول; عمليات النصوص إذا كانت عملية دمج نصية تمرر أسماء الأعمدة بالترتيب للتابع CONCAT، يمكن أيضا تمرير قيمة نصية ثابتة مع المعاملات مثال نريد دمج قيم عمودين مع وضع فاصلة بينهما "," SELECT CONCAT(عمود2 ,',' ,عمود1) FROM جدول; تغيير اسم الحقل الناتج اسم العمود الناتج عن عملية الدمج يكون نفس نص صيغة الدمج كالتالي "عمود1 + عمود2" "(عمود2 ,',' ,عمود1)CONCAT" لكي تعطي العمود اسما معبرا عن العملية التي تمت عليه يمكنك استخدام AS بعد صيغة العمود وتمرير الاسم الذي تريده SELECT عمود2 + عمود1 AS المجموع FROM جدول; SELECT CONCAT(عمود2, ',', عمود1) AS الأسماء FROM جدول; تصبح أسماء الأعمدة في النتيجة "المجموع" "الأسماء"
- 2 اجابة
-
- 1
-
-
الصيغة العامة لاستخدام SELECT هي كالتالي بتحديد الأعمدة التي نريدها في النتيجة SELECT عمود_أول, عمود_ثان FROM جدول إذا أردنا كل الأعمدة يمكننا وضع نجمة "*" لنعبر عن جميع الأعمدة SELECT * FROM جدول إذا كنا نستعلم من عدة جداول معًا يجب وضع إسم أحد الجدولين قبل اسم العمود وبينهما نقطة "." SELECT جدول_أول.عمود, جدول_ثان.عمود FROM جدول_أول, جدول_ثان إذا أردت جلب كل الأعمدة من أحد الجداول نضع نجمة "*" SELECT جدول_أول.* , جدول_ثان.عمود FROM جدول_أول, جدول_ثان ملاحظة: في أول مثالين يمكن وضع اسم الجدول قبل اسم العمود، لكن اختصارا يمكن عدم كتابته في حال كنت تستعلم من جدول واحد
- 2 اجابة
-
- 1
-
-
اصطلاحات الربط الربط بشكل عام يستخدم للربط بين البيانات (بغض النظر عن مكان وجودها)، أي نوع من أنواع الربط هو اصطلاح وتسمية لمكان وجود البيانات في كلا طرفي الربط الربط الذاتي Self Join عندما تكون البيانات في كلا الطرفين موجودة في نفس الجدول نصطلح أن نوع الربط هذا هو Self Join أي أننا نربط بيانات الجدول ببيانات أخرى من الجدول نفسه، أمثلة: جدول أشخاص، قد يكون هناك علاقة بين الأشخاص (أب - أبن، زوج - زوجة، صديق - صديق) جدول موظفين، قد يكون هناك علاقات بين الموظفين (موظف - مدير، موظف - زملاء)
- 2 اجابة
-
- 1
-
-
الخوارزمية يمكنك تقسيم النص الى مصفوفة حروف عبر الدالة split بتمرير محرف فارغ لها كالتالي: "shImA".split('') // ['s', 'h', 'I', 'm', 'A'] ثم المرور على مصفوفة الحروف وتغيير حالتها عن طريق الدالة map من أحرف كبيرة إلى صغيرة وبالعكس، عبر مقارنتها بعد التحويل وإعادة الحالة المناسبة كالتالي: "shImA".split('') .map(char => char.toUpperCase() === char ? char : char.toLowerCase()) // ['S', 'H', 'i', 'M', 'a'] ثم إعادة تجميع مصفوفة الحروف إلى نص مجددا عبر الدالة join بتمرير محرف فارغ لتحصل على المطلوب كالتالي: "shImA".split('') .map(char => char.toUpperCase() === char ? char : char.toLowerCase()) .join('') // SHiMa كتابة دالة toggleCase يمكنك كتابة ما سبق في دالة: function toggleCase(text) { return text.split('') .map(char => char.toUpperCase() === char ? char : char.toLowerCase()) .join('') } واستخدامها داخل تطبيقك: let swappedName = "shImA"; console.log(toggleCase(swappedName)) // SHiMa
- 5 اجابة
-
- 1
-
-
المكون next/image مبني فوق الوسم img في HTML ويضيف فوقه مزايا تخص تحسين الأداء تخديم الصور بصيغة Webp التي تدعم القياسات المتعددة ليختار المتصفح منها اصغر القياس المناسب تحسين أحجام الصور تلقائيا (عند الطلب) وبالتالي التوفير في مساحة المستخدمة على الخادم تأخير تحميل الصور في الموقع Lazy Loading مما يجعل تحميل الصفحة أسرع تصيير الصور دون التأثير على العناصر المجاورة أو ما يسمى Cumulative Layout Shift، أي يتم حجز مساحة مسبقة للصورة قبل تحميلها لكي تصير هيكلية الموقع كما تم تصميمها ولا تقفز العناصر عند تحميل الصور
- 2 اجابة
-
- 2
-
-
لا يوجد الأفضل، كل بيئة أو إطار عمل له مزاياه وتطبيقاته التي يتفوق بها، وايضا عند الحاجة يمكن فصل النظام الذي تريد تطويره الى خدمات مترابطة وكل منها تستخدم اطار عمل أو بيئة معينة NodeJS مكتبات عديدة أداء سريع في التطبيقات التي تعتمد على كميات كبيرة من الادخال والاخراج (تطبيقات الوقت الحقيقي - تطبيقات نقل الصوت والفيديو) سهولة بدء التطوير للمبرمج الخبير ب JavaScript، بما انه لديك خبرة في Node JS سيكون العمل أسهل Laravel وقت أقصر لبناء منتج أولي، مكونات ومزايا جاهزة عديدة داخلها تجعل تجربة المطور سهلة الشهرة الواسعة، أغلب المشاكل ستجد لها حلولا لاشخاص واجهوها من قبلك وكيفية حلها أو تضمينها سهولة بدء التطوير للمبرمج الخبير في PHP، يمكن الاستفادة من قراءة المقال التالي
- 1 جواب
-
- 2
-
-
يجب أولا التأكد من تنصيب بيئة NodeJS على المخدم إذا كنت تستخدم الإستضافة بواسطة CPanel يمكنك مراجعة خطوات التنصيب بالإجابة التالية: إذا كنت تستخدم مخدم خاص ولديك وصول للمستخدم root نفذ الأمر التالي لتنصيب NodeJS sudo apt install nodejs ثم تأكد من التنصيب بنجاح بتنفيذ الأمر التالي يجب أن تظهر نسخة NodeJS في الخرج node –v الان قم بنسخ ملفات مشروعك وتغيير المسار الى مجلد المشروع ونفذ الأوامر التالية لتنصيب الاعتماديات وتشغيل التطبيق كالتالي (بافتراض ملف البداية في مشروعك هو index.js) npm install & node index.js
- 1 جواب
-
- 1
-
-
يحدث ذلك نتيجة الوقت الطويل الذي يحتاجه نسخ المستودع عبر سرعة الاتصال الحالية، يمكنك تغيير شروط قطع الاتصال، رفع حد سرعة الاتصالات البطيئة ورفع الوقت الذي سيتم فصل الاتصال بعده لها بتنفيذ الأوامر التالية: اذا بقيت السرعة تحت 1 كيلوبايت بالثانية git config --global http.lowSpeedLimit 1000 لمدة 600 ثانية (10دقائق) git config --global http.lowSpeedTime 600 سيتم قطع الاتصال بعدها
-
REST API هي معمارية تفيد في بناء الموارد والاستعلام عنها بين خدمات الويب، وتحديدا كيف يتم تطبيق هذه الفلسفة في بروتوكول HTTP REST هو اختصار ل Representational State Transfer أي كيف يمكن لنا أن نعبر عن شكل حالة ما وننقلها بين الخدمات. API تعني Application Programming Interface وهو الواجهة التي يتمكن من خلالها المستخدم الخارجي من ضبط والتأثير على الخدمة. دمج المصطلحين معا يعني أن توفر الخدمة واجهة برمجية API مبنية بطريقة REST يمكن للمستخدمين (أو الخدمات بين بعضها) التواصل عبرها عبر بروتوكول HTTP يتم استخدامها في بناء واجهات النظم الخلفية عادة لاغلب الانظمة يمكنك متابعة فيديو الشرح والقراءة عن REST أكثر عبر المقال التالي
- 2 اجابة
-
- 1
-
-
تفيد الأداة في بناء نموذج يمكن الاعتماد عليه لاتخاذ قرارات، تطبيقها برمجيا يفيد في حالات مثل تحليل بيانات كبيرة وبناء شجرة قرار منها تكون قادرة على اتخاذ قرار من بيانات جديدة من نفس النمط، الشجرة التي ستنتج قد تعطيك صورة عن بعض القواعد المهمة في اتخاذ القرار لهذه البيانات بالتأكيد اذا صممت شجرة قرار يدويا تكون قد طبقت نفس الفكرة كما لو ضمنتها برمجيا، نلجأ للبرمجة في حالة نحتاج اتمتة عملية تعديل الشجرة أو نحتاج تحليل بيانات كبيرة واستخراج الشجرة منها شجرة القرار هي أداة تفيد في اتخاذ قرار ما بناء على البيانات متوفرة، ليس فقط برمجيا العديد من قرارات حياتك تعتمد نفس المبدأ فأنت تتخذ قراراتك بناء على عدة شروط قد تحققت
- 2 اجابة
-
- 1
-