-
المساهمات
214 -
تاريخ الانضمام
-
تاريخ آخر زيارة
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Taha Khaled2
-
Redis : هو نظام قاعدة بيانات يستخدم لتخزين واسترجاع البيانات بسرعة عالية. يتميز Redis بكونه سريعًا ، ويدعم العديد من البيانات الأساسية مثل السلاسل (Strings) والقوائم (Lists) والمجموعات (Sets) والمخطوطات (Hashes) والترتيبات المرتبطة بالنصوص (Sorted Sets)، بالإضافة إلى دعم توسيع الوظائف بواسطة مكتبات مضمنة. دعنا نطبق علي كيفية استخدام Redis في الداله الخاصه بك getMyAllPosts اولا قم بتثبيت المكتبه عن طريق هذه الامر npm install redis ثانيا يجب عليك استرداد المكتبه بهذه الطريقه const Redis = require('redis'); ثالثا يجب عليك انشاء اتصال بالخادم const redisClient = Redis.createClient(); ثما يمكنك استخدام Redis مع دالة getMyAllPosts لستصبح بهذه الشكل exports.getMyAllPosts = async (req, res) => { try { // التحقق مما إذا كانت البيانات موجودة في ذاكرة Redis redisClient.get('myAllPosts', async (err, cachedPosts) => { if (err) { console.error('Error retrieving data from Redis cache:', err); } if (cachedPosts) { // إذا تم العثور على البيانات في ذاكرة Redis، استرجاعها وإرجاعها كاستجابة console.log('Data found in Redis cache'); res.status(200).json(JSON.parse(cachedPosts)); } else { // إذا لم يتم العثور على البيانات في ذاكرة Redis، قم بالاستعلام عن قاعدة البيانات وتخزين النتائج في ذاكرة Redis const myPosts = await models.Post.findAll({ where: {UserId: req.currentUser.id}, include: [ { model: models.Post_Image } ] }); // تخزين البيانات في ذاكرة Redis للاستفادة منها في الطلبات المستقبلية redisClient.set('myAllPosts', JSON.stringify(myPosts), (err, reply) => { if (err) { console.error('Error storing data in Redis cache:', err); } console.log('Data stored in Redis cache'); }); // إرجاع البيانات كاستجابة res.status(200).json(myPosts); } }); } catch (e) { console.error('Error retrieving posts:', e); res.status(500).json(e); } }
- 2 اجابة
-
- 1
-
فلنبداء اولا بمعرفة ما هي تقنية البلوكتشين البلوكتشين هو دفتر رقمي لجميع عمليات التداول بالعملات المشفرة عبر جميع شبكات الند للند (peer to peer). وتختلف تقنية البلوكتشين هذه عن أي طرق تداول تقليدية أخرى تكون مركزية وتخضع لسيطرة حكومات معينة او مجموعات معينة. ولكن هذا البلوكتشين هو بلوكتشين متميز باللامركزية، مما يعني أنه لا يخضع لسيطرة أي كيان أو مجموعة واحدة. هذه التقنية تعود بالنفع أكثر للشركات حول العالم لأن تقنية البلوكتشين تسمح للشركات بإجراء عمليات تداول آمنة دون الحاجة إلى جهات ثالثة. يقوم العُقَد في الشبكة بالتحقق من العمليات التداولية وتسجيلها في دفتر رقمي موزع عمومًا يُسمى بلوكتشين. ويقوم كل عُقد في الشبكة بتحديث وحفظ البلوكتشين بشكل مستمر. ولذلك، تعتبر تقنية البلوكتشين معروفة بشكل خاص بأمانها، حيث يكون من الصعب جدًا التلاعب بالبيانات بمجرد تسجيلها على البلوكتشين. كيف تستطيع البدء في هذه المجال وتصبح مطور بلوكتشين البداية بتعلم اساسيات علوم الحاسب: لتصبح شخص مطورًا لتقنية البلوكتشين، يجب عليك أولاً الحصول على خلفية أكاديمية قوية في علوم الحاسوب أو الرياضيات. لذالك انصحك بدورة علوم الحاسب باكاديمية حسوب ، حيث سيكون من المفيد أن يكون لديك فهم جيد لمجالات علوم الحاسوب وتكنولوجيا المعلومات والرياضيات. اكتساب المهارات المطلوبة لتعلم البلوكتشين: لغات البرمجة: لتصبح مطورًا لتقنية البلوكتشين، تحتاج إلى اكتساب خبرة في البرمجة. كما تمت مناقشته في تعلم اساسيات علوم الحاسب،فإن هناك متطلبًا أساسيًا للبرمجة وتطوير التطبيقات المختلفة لتقنية البلوكتشين. هياكل البيانات: تعزز دراسة هياكل البيانات مهارتك في فهم المشاكل على مستوى واسع وتساعد في توفير حلول محسنة ضمن القيود. وتُستخدم أيضًا لتخزين البيانات بطريقة منظمة وفعالة. قواعد البيانات والشبكات: تعتبر الشبكة البلوكتشينية شبكة ند للند (peer to peer) موزعة يتم فيها مشاركة البيانات بين جميع العُقد. و وفقًا لتعريف التقنية البلوكتشينية، فإن إدارة قواعد البيانات والشبكات الحاسوبية جزء أساسي من إنشاء وصيانة شبكة بلوكتشين. التشفير : هو طريقة لتأمين البيانات الحساسة من المستخدمين غير المصرح لهم والتهديدات والهجمات. تعتبر الأساسيات في علوم الحاسوب والرياضيات أساسًا لتطوير بروتوكولات التشفير. بشكل عام، يتم تشفير البيانات عند الإرسال وفك التشفير عند الاستقبال باستخدام تقنيات تشفير مختلفة. فهم أساسيات التقنية البلوكتشينية: لتدريب نفسك على أن تصبح مطورًا لتقنية البلوكتشين، فيجب عليك فهم المفاهيم الأساسية والمصطلحات في مجال التقنية البلوكتشينية أمر مهم جدًا، فبدون معرفة المجال المناسب، لا يمكن للشخص المضي قدمًا في صناعة البلوكتشين. لذا، تعلم المفاهيم الأساسية للبلوكتشين، واكتساب فهم أعمق وأوضح لها، وتعلم أيضًا عن التطبيقات البلوكتشينية في الوقت الحقيقي، وآلية عمل مختلف بروتوكولات التوافق. تعلم عن الكريبتونوميكس (Cryptonomics): في تقنية البلوكتشين، يتم تأمين البيانات بشكل تشفيري بمساعدة مختلف بروتوكولات الأمان. الكريبتونوميكس هو مزيج من الاقتصاد والتشفير. تُطلب مفاهيم قوية في الرياضيات وعلوم الحاسوب لبناء بروتوكولات تشفيرية قوية. هناك معايير تشفيرية مختلفة تُستخدم في شبكة بلوكتشين، مثل RSA ووظائف التجزئة. فهم العملات المشفرة مثل البيتكوين والإيثر يتطلب معرفة بكل من التشفير والاقتصاد. الحصول على معرفة بإثيريوم والتطبيقات المتمركزة (Ethereum and DApps): إثيريوم هي واحدة من أحدث التقنيات، التي تعتمد على المفاهيم الأساسية لتقنية البلوكتشين ومبنية على أساسها. هي تقنية مفتوحة المصدر تستخدمها العديد من الخبراء في الصناعة. تسمح إثيريوم لمطوري بلوكتشين إثيريوم بإنشاء بروتوكول معاملة خاص يُسمى العقد الذكي وتطبيقات أخرى تُعرف باسم التطبيقات المتمركزة (DApps). وهذه مشابهة للتطبيقات النقالة العادية. تعلم عن العقد الذكي ولغة البرمجة Solidity: تُمكِّن هذه التقنية مطوري بلوكتشين إثيريوم من كتابة وتطوير نوع خاص من بروتوكول المعاملات يُسمى العقد الذكي. الهدف من العقد الذكي هو تبسيط عملية المعاملة بين الأطراف، وتقييد مشاركة طرف ثالث وكذلك تقليل التكلفة الإضافية المرتبطة بها. لغة Solidity هي لغة برمجة، تُستخدم لتطوير العقود الذكية وتنفيذ المنطق التجاري. إنها مشابهة لمفاهيم OOPS.
-
لا تحتوي جميع التطبيقات والألعاب بالضرورة على واجهة برمجية (API) متاحة للاستخدام الخارجي. واجهات البرمجة تُستخدم لتمكين التفاعل بين تطبيقات البرمجيات المختلفة، لكن ليس كل المطورين يوفرونها للالعاب الخاصه بهم او تطبيقاتهم، تختلف من شركه لاخري و من مطور لاخر إذا لم تتوفر واجهة برمجية من الشركة المطورة للبرنامج أو اللعبة او التطبيق او الموقع او المنتج الخاص بهم عامة، فمن الصعب الحصول عليها بشكل قانوني لان يمكن للمجتمع أو المطورين المستقلين أن ينشئوا واجهات برمجية غير رسمية أو أدوات يمكنها التفاعل مع البرنامج أو اللعبة ايضا بعض الشركات قد توفر وثائق أو أدوات للتطوير (SDKs) التي تسمح بتوسيع أو تعديل البرمجيات، و لاكن كل هذا يعتمد على سياسات الشركة وطبيعة البيزنس الخاص بهم. الحصول على API لتطبيق معين من خلال استخدام برامج مثل Android Studio أو محررات ملفات APK ليس مباشرًا. مثل هذه الأدوات يمكن أن تساعد في تحليل الكود و فهم كيفية تفاعل التطبيق مع خوادم الويب أو خدماته الداخلية . ولاكن ليس لها علاقه ببناء API للتطبيق
-
عند التوسع في التطبيق ليشمل ارسال الاشعارات لجميع المستخدمين يجب عليك دراسة الموضوع بحيث لا يؤثر علي السيرفر وادائه بحيث اذا كان عدد المستخدمين اكثر من 10 الاف فا بتاكيد اذا ارسلت لهم في وقت واحد ستحدث مشكله لحل هذه المشكله يجب عليك ارسال الاشعارات في الخلفيه عن طريق استخدامك لل cron job تستخدم المهام المجدولة باستخدام الأداة Cron لجدولة تنفيذ الأوامر في وقت محدد، حيث يمكن إعداد الأوامر أو السكربتات، التي يمكن أن يتم تنفيذها بشكل متكرر في وقت محدد. يُعتبر Cron أحد أكثر الأدوات إفادة في أنظمة لينكس وشبيهات يونكس، حيث تعمل خدمة cron في الخلفية وتتحقق باستمرار من ملف etc/crontab/، ومجلّدات /.*etc/cron/، كما تتحقق من مجلد /var/spool/cron/. اذا كنت دراسة الموضوع بتعمق فهذه المفال تداول جميع النقاط المهمه به
-
هذه المشكله سببها عد تضمين هذه الكود Paginator::useBootstrap(); داخل AppServiceProvider في هذه المسار app\Providers\AppServiceProvider.php بعد الدخول هنا في هذه المسار يجب علي وضع هذه الكود Paginator::useBootstrap(); داخل دالة ()boot
-
المشروع ليس سهل وسياخذ وقت طويل جدا اذا كنت ستعمل بمفردك لان الموقع سيحتاج الكثير من المهارات سواء في تطوير الوجهه الاماميه او تطوير الوجهه الخلفيه يجب اولا دراسة منصة (منتديات فبلتن الجيل الثالث) اللذي تود انشاء مثله وتعرف جميعع المميزات و الخصائص التي يتيحها الي عملائه ساذكر بعض النصائح التي وجدتها عندما تصفحة الموقع نظام إدارة الأعضاء المتقدم. نظام إدارة المحتوى. نظام إدارة الإعلانات. نظام إدارة المجموعات. نظام إدارة الرسائل الخاصة. نظام تنبيهات جديد. نظام تحليلات جديد. نظام إدارة الوسائط الجديد. بعد تحديد المميزات يجب تحديد للغات البرمجه المطلوبه و اطارات العمل للوجهه الخلفيه مثل Laravel \ php و اللغات المطلوبه للواجهه الاماميه و اطارات العمل مثل React \ js
-
يوجد اكثر من اضافه في جوجل كروم تقوم بهذه المهمه ساعرض بعض الاضافات التي يمكنك استخدامها لمساعدك Buster: Captcha Solver for Humans Rumola - bypass CAPTCHA Auto CAPTCHA Solver: CAPTCHAs.IO يمكنك تثبيت اضافة Buster: Captcha Solver for Humans من هنا
-
خذها كا قاعده في تعلمك في اي مجال برمجي مثل تطوير الواجهه الاماميه او تطوير الواجهه الخلفيه بعد تغيير اي اصدار سيكون المبادئ الأساسية ستكون واحده مثل بعد تغير اخر اصدار لAngular فا ستجد ان مبادئ Angular الأساسيةمثل المكونات والقوالب والتوجيهات والخدمات وحقن التبعية والتوجيه لن تتغير بشكل ملحوظ الاختلافات التي تكون باين اصدار و الاخر مثل اضافة المميزات بحيث تقدم الإصدارات الأحدث ميزات جديدة أو تحتوي على تغييرات على الميزات الموجودة, عندما تواجه مفاهيم أو بناء جملة يختلف عن الدورة التدريبية. الوثائق هي المصدر الأكثر موثوقية للحصول على أحدث المعلومات. جميع هذه التغييرات يكفي فقط ان تغطيها بقراءتك الوثائق الرسمية لاطار العمل Angular عبر موقعهم الرسمي
-
هناك الكثير من الأسباب التي يمكن أن تؤدي لظهور مشكلة الشاشة الزرقاء أو ما تُعرف بشاشة الموت "Blue Screen of Death" وإليك أبرز تلك الأسباب: السبب الأول:فشل الأجهزة يمكن أن يتسبب فشل الأجهزة في ظهور مشكلة الشاشة الزرقاء ويشمل فشل محرك الأقراص الثابتة أو حدوث خلل في ذاكرة الوصول العشوائي وغيرها. السبب الثاني:مشاكل برنامج التشغيل برامج التشغيل هي مكونات برمجية تسمح للأجهزة بالاتصال بنظام التشغيل، فإذا كان برنامج التشغيل قديمًا أو غير متوافق أو تالفًا فقد يتسبب في ظهور مشكلة الشاشة الزرقاء. السبب الثالث :البرامج الضارة أو الإصابة بالفيروسات تُتلف البرامج الضارة والفيروسات ملفات نظام التشغيل، ما يؤدي بدوره لظهور مشكلة شاشة الموت، ولذا يجب التأكد من وجود برنامج انتي فايرس "Anti Virus" قوي يحمي جهازك وبياناتك من جميع البرامج الخبيثة. السبب الرابع: ارتفاع درجة الحرارة إذا كان نظام تبريد الكمبيوتر لا يعمل بشكل صحيح، فقد يتسبب ذلك في ارتفاع درجة حرارة مكونات الكمبيوتر وظهور الشاشة الزرقاء، لذا احرص على صيانة نظام التبريد بشكل دوري واستخدم مراوح خارجية لتعزيز التبريد. السبب الخامس:مشاكل إمداد الطاقة قد يؤدي مشاكل عدم انتظام طاقة الجهاز أو فشل البطارية في ظهور مشكلة الشاشة الزرقاء، ولذا يجب التأكد من كفاءة البطارية وانتظام مصادر الطاقة الذي تعتمد عليها. بنسبه للحل يوجد اكثر من طريقه وهي علي النحو التالي : الطريقة الأولى:تهيئة شريحة الذاكرة يمكن بنسبة قليلة أن يجدي تهيئة شريحة الذاكرة نفعًا فيما يتعلق بمشكلة الشاشة الزرقاء، والذي يتم بمحو جميع البيانات الموجودة عليها، وإليك الخطوات: أدخل شريحة الذاكرة في منفذ USB الخاص بحاسوبك. افتح مستكشف الملفات وحدد موقع شريحة الذاكرة. انقر بزر الماوس الأيمن على شريحة الذاكرة وحدد "تهيئة / Format" من القائمة المنسدلة. اختر نظام الملفات الذي تريد استخدامه كـ FAT32 أو exFAT وانقر على "ابدأ". قم بتأكيد رغبتك في تهيئة شريحة الذاكرة بالنقر فوق "موافق" في رسالة التحذير التي تظهر. انتظر حتى تكتمل عملية التهيئة. لاحظ أن تهيئة شريحة الذاكرة سيؤدي إلى محو جميع البيانات الموجودة عليها بشكل دائم، لذا تأكد من عمل نسخة احتياطية من أي ملفات مهمة قبل التهيئة. الطريقة الثانية:تأكد من اتصال دائرة الأجهزة يمكن أن يؤدي ضعف اتصال دائرة الأجهزة إلي ظهور العديد من المشاكل والتي من بينها مشكلة الشاشة الزرقاء، لذا تأكد أن الاتصال صحيح وسليم وقوي ولا يوجد به أي مشاكل. الطريقة الثالثة:الحل الأمثل لعلاج مشكلة الشاشة الزرقاء-4DDiG Windows boot genius أداة 4DDiG Windows boot genius هي أداة مجانية توفر حلولاً لأكثر من 200 مشكلة تشمل جميع مشاكل شاشات الكمبيوتر وعيوب برامج الويندوز وغيرها، وتتوفر الأداة مجانًا ولها اشتراك مدفوع، إلا أن نسختها المجانية تكفي لحل جميع المشاكل بكفاءة كل ما تود فعله لإصلاح حاسوبك تُمكنك منه أداة 4DDiG Windows boot genius بكل سهولة ظهور مشكلة الشاشة الزرقاء. حدوث تعليق في شاشة الترحيب. ظهور مشكلة الشاشة السوداء. إعادة تشغيل جهاز الكمبيوتر عشوائيًا دون تحكم منك. تعطل جهاز الكمبيوتر وعدم القدرة علي إعادة تشغيله. صعوبة الوصول لـ bootrec fixboot. حل مشكلة عدم القدرة على تشغيل جهاز الكمبيوتر. إصلاح مشكلة تعطيل وتعليق تحديثات الويندوز. تسهل إغلاق الويندوز حال وجود أي مشكلة تعيق ذلك. إصلاح مشكلة IRQL_NOT_LESS_OR_EQUAL. حل مشاكل الإصلاح التلقائي وبدء التشغيل
-
هدف الدورة هو التركيز على فهم الأساسيات وطريقة رفع التطبيقات إلى أي متجر حيث بنسبة كبيرة جدًا تكون جميع المنصات متشابهة تمامًا في الطريقة التي يتم بها الرفع. على سبيل المثال، إذا كنت تتعامل مع متجر Google Play وتعلمت رفع تطبيقك هناك، ستحتاج إلى: إرفاق صور للتطبيق. إضافة فيديو توضيحي للتطبيق. كتابة سياسة الخصوصية. تقديم طريقة لحذف الحساب إن وجد، بالإضافة إلى بعض الأسئلة الأخرى مثل البلدان المستهدفة والفئة العمرية المستهدفة. تقديم نسخة من التطبيق. وعند رفع التطبيق على منصات أخرى، فإنك ستجد أن 90% من هذه الطلبات متشابهة تقريبًا. وإذا كنت ترغب في معرفة كيفية رفع أي تطبيق على أي متجر، يمكنك طرح السؤال في التعليقات أو الاستفسارات المرفقة بالدرس، وسيتم توفير الخطوات بتفصيل شامل للمساعدتك في الاجابه علي سؤالك.
- 2 اجابة
-
- 1
-
بنسبه للسؤال الاول لتغيير نص QLabel بناءً على مدخلات المستخدم في PyQt5، يجب عليك استخدام الدالة ()setText لتحديث نص العلامة : كما موضح بالكود هذه from PyQt5 import QtWidgets from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QLineEdit import sys app = QApplication(sys.argv) w = QWidget() l1 = QLabel("الاسم: ", w) l1.move(150, 150) b1 = QPushButton("Print", w) b1.move(100, 150) e1 = QLineEdit(w) e1.move(200, 150) # قد تحتاج لتعديل الموقع بناءً على التخطيط الخاص بك l2 = QLabel("", w) l2.move(180, 200) # اختر موقعاً مناسباً لعرض النتيجة def get(): name_get = e1.text() l2.setText(f"الاسم: {name_get}") b1.clicked.connect(get) w.show() app.exec_() اما بنسبه للسؤال الثاني لفتح مستكشف الملفات (file explorer) لحفظ ملف في PyQt5، يمكنك استخدام QFileDialog لتنفيذ عمليات فتح ملف وحفظ ملف: from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QFileDialog def openFileNameDialog(): options = QFileDialog.Options() fileName, _ = QFileDialog.getOpenFileName(None,"QFileDialog.getOpenFileName()", "","All Files (*);;Python Files (*.py)", options=options) if fileName: print(fileName) def saveFileDialog(): options = QFileDialog.Options() fileName, _ = QFileDialog.getSaveFileName(None,"QFileDialog.getSaveFileName()","","All Files (*);;Text Files (*.txt)", options=options) if fileName: print(fileName) app = QApplication([]) window = QWidget() openButton = QPushButton('Open', window) openButton.clicked.connect(openFileNameDialog) saveButton = QPushButton('Save As', window) saveButton.move(0, 50) saveButton.clicked.connect(saveFileDialog) window.show() app.exec_() في هذا الكود، الزر Open يفتح نافذة لاختيار ملف لفتحه، ويقوم زر Save As بفتح نافذة لاختيار موقع واسم الملف لحفظه.
-
المشكلة الأساسية في تطبيقك هي كيفية إضافة مستمع للحدث إلى عناصر الاختيار داخل وظيفة ()makeQuiz. حيث في كل مرة يتم النقر فيها على خيار، لا تتم إزالة مستمع الحدث من الأسئلة السابقة، مما يؤدي إلى تكديسهم وتنفيذهم عدة مرات. وهذه يؤدي إلى سلوك غير صحيح في التطبيق، مثل تمييز إجابات متعددة أو تلوين الإجابات الصحيحة بشكل غير صحيح. قبل إضافة مستمع حدث جديد إلى الاختيار، يجب إزالة المستمع القديم لمنع عدة مستمعين من التكديس على نفس العنصر. يمكنك تجربة هذه الكود بعد التحسين وحل المشكله const questions = [ { question: "which is largest animal in the world?", answers: [ { text: "Shark", correct: false }, { text: "Blue whale", correct: true }, { text: "Elephant", correct: false }, { text: "Giraffe", correct: false }, ], }, { question: "Which is the smallest continent in the world?", answers: [ { text: "Asia", correct: false }, { text: "Australia", correct: true }, { text: "Arctic", correct: false }, { text: "Africa", correct: false }, ], }, { question: "Which is the smallest country in the world?", answers: [ { text: "Vatican City", correct: true }, { text: "Bhutan", correct: false }, { text: "Nepal", correct: false }, { text: "Shri Lanka", correct: false }, ], }, { question: "Which is the more popular programmation language?", answers: [ { text: "JIK", correct: false }, { text: "Batata", correct: false }, { text: "Javascript", correct: true }, { text: "Youssef", correct: false }, ] } ]; const quiz = document.querySelector(".quiz"); const questionTitle = document.getElementById("quiz-question"); const choices = document.querySelectorAll(".quiz__choice"); const nextButton = document.getElementById("next-button"); const score = document.querySelector(".score"); const scoreNumber = document.getElementById("score-number"); const numberOfQuestions = document.getElementById("score-questionsNumber"); let scoreCounter = 0; let questionCounter = 0; const againButton = document.getElementById("score-again"); makeQuiz(0); nextButton.addEventListener("click", function () { if (questionCounter < questions.length) { makeQuiz(questionCounter); choices.forEach(function (choice) { choice.classList.remove("quiz__answer--correct", "quiz__answer--wrong"); }) } else { quiz.style.display = "none"; score.style.display = "block"; scoreNumber.textContent = scoreCounter; numberOfQuestions.textContent = questions.length; } }) function makeQuiz(questionIndex) { // Reset quiz state for the new question nextButton.disabled = true; choices.forEach(function (choice) { choice.classList.remove("quiz__answer--correct", "quiz__answer--wrong"); }); questionTitle.textContent = questions[questionIndex].question; let answers = questions[questionIndex].answers; choices.forEach(function (choice, answersIndex) { choice.textContent = answers[answersIndex].text; // Remove previous click listeners choice.onclick = null; // This line effectively removes any click event listener previously assigned. // Assign new click listener choice.onclick = function() { // Determine if the selected answer is correct const isCorrect = answers[answersIndex].correct; if (isCorrect) { choice.classList.add("quiz__answer--correct"); scoreCounter++; } else { choice.classList.add("quiz__answer--wrong"); // Highlight the correct answer choices.forEach(function (item, itemIndex) { if (answers[itemIndex].correct) { item.classList.add("quiz__answer--correct"); } }); } // Prevent further choices from being clicked disableChoices(); nextButton.disabled = false; }; }); questionCounter++; } function disableChoices() { choices.forEach(function(choice) { choice.onclick = null; // This disables further clicks on choices. }); }
- 3 اجابة
-
- 1
-
الفرق بين middleware و guards middleware: الMiddleware يعمل كفلتر يتم تنفيذه قبل أو بعد طلبات ال HTTP. يُستخدم لفحص الطلبات وتنفيذ العمليات قبل وصولها إلى الروتر أو الكنترولر، أو قبل إرسال الرد للمستخدم يمكنك استخدامه علي سبيل المثال في عمليات مثل التحقق من الأمان، تحويل الطلبات، تسجيل الطلبات، إدارة الجلسات. افضل مثال يمكنك فهمه هو عملية ال auth وهل المستخدم مسجل دخول ام لا دعنا اولا ننشئ CheckUserAuth مديلوير php artisan make:middleware CheckUserAuth ثما انشاء المنطق الخاص بالميدلوير public function handle($request, Closure $next) { if (!auth()->check()) { return redirect('login'); } return $next($request); } هذه الكود معناه هو اذا المستخدم مسجل دخول فسيتم الاستمرار في الطلب اما اذا كان غير مسجل فسيتم اعادة توجيه الي صفحة تسجيل الدخول يمكنك استخدامه بهذه الطريقه Route::post('reset-password', [ResetPasswordController::class, 'resetPassword'])->middleware('اسم المديلوير'); ال Guard : هي مكونات أساسية تحدد كيفية تحقق النظام من هوية المستخدمين وتحافظ عليها. ببساطة، الـ Guards توفر طبقة التوثيق التي تساعد في التحقق من صحة المستخدمين وإدارة جلسات المستخدم أو توكنات الوصول. آلية عمل Guards عندما يحاول المستخدم الوصول إلى موارد محمية في تطبيق Laravel، يتم استدعاء Guard المناسب للتحقق من مصادقة المستخدم. يتم ذلك إما عن طريق التحقق من الجلسة الحالية للمستخدم أو عبر توكن مرفق في الطلب. إذا تم التحقق من المستخدم بنجاح، يتم السماح له بالوصول إلى الموارد المطلوبة. في حال عدم التحقق من هوية المستخدم، يمكن رفض الطلب أو إعادة توجيه المستخدم إلى صفحة تسجيل الدخول. يمكنك اعداد ال guard عليك التوجهه لهذه المسار config/auth.php ثما اعداده الويب و لل api 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'token', 'provider' => 'users', 'hash' => false, ], ], ثما يمكنك استخدامه بهذه الطريقه // استخدام Guard الافتراضي $user = Auth::user(); // استخدام Guard محدد $user = Auth::guard('api')->user();
- 2 اجابة
-
- 1
-
1. تأكد من دعم الاستضافة لوظيفة ()mail لان بعض مزودي الاستضافة قد يقيدون استخدام دالة ()mail في PHP لأسباب تتعلق بالأمان. يمكن التحقق من ذلك عبر التواصل مع دعم الاستضافة. 2. يجب ايضا التاكد من ملف php.ini لتأكد من أن ملف php.ini لديك مكون بشكل صحيح لإرسال البريد الإلكتروني، خاصة الإعدادات المتعلقة بـ SMTP و sendmail_path. 3. ايضا تاكد في البريد الخاص بك في صندوق الرسائل الغير مرغوب بها او ال spam لان عندما تكون الاستضافه جديده فبيتم تصنيفه كبريد عشوائي في بريد المستلم. 4. الافضل ان لا تستخدام دالة ()mail مباشرة، يمكنك استخدام مكتبات مثل PHPMailer أو SwiftMailer التي تساعد في التعامل مع مشكلات البريد الإلكتروني بشكل أفضل.
-
با الاضافه الي التعليق السابق يجب ايضا الترجمه لا تكون علي النصوص الثابته فقط ايضا من المفترض ان تكون علي البيانات التي تاتي من قاعدة البيانات فيجب كل حقل باللغه الانجليزيه اضافة حقل اخر ولاكن للغه العربيه لاحظ الكود التالي public function up() { Schema::create('colors', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('name_en', 50); $table->string('color_code',50)->nullable(); }); } هذه الجدول به حقل واحد فقط لحفظ الاسم فاما سيكون باللغه العربيه او باللغه الانجليزيه فيجب تحدبث الجدول بهذه الطريقه Schema::create('colors', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('name_en', 50); $table->string('name_ar', 50); $table->string('color_code',50)->nullable(); $table->index('name_en'); $table->index('name_ar'); }); الان بعد تعديل الجدول ستلاحظ زياد حقل اخر للغه العربيه فهنا عند اضا لون سيتم كتابة اسمه بكلتا اللغتان وعند المستخدم اختيار اللغه العربيه سيرجع لك البينات باللغه العربيه والعكس صحيح
- 7 اجابة
-
- 1
-
بتاكيد Hostinger خيار مناسب لاستضافة موقعك، خاصة إذا كان الموقع عبارة عن صفحة واحدة فهذه يعتبر موقع بسيط جدا. حتي لو الموقع كبير وعليه ضغط فيمكنك اتباع افضل الممارسات لتحسين موقعك وتجاوز المشاكل ايضا Hostinger توفر خطط استضافة مختلفة تتناسب مع احتياجات موقعك، يوجد اكثر من طريقه هي الرفع عن طريق جيتهاب او ssh او الرفع عن طريق FileZilla انا افضل او الموصي به الرفع عن طريق ssh و رابطه بجيتهاب بحيث ان ssh هي بيئه يمكنك التعامل معها عند البحث عن موقعك بتاكيد سيظهر ولاكن يجب الاهتمام seo SEO هو تحسين محركات البحث بحيث يضم مجموعة من الإجراءات والتقنيات التي تهدف إلى زيادة رؤية موقعك في نتائج محركات البحث وتحسين ترتيبه
-
بشكل عام، لغة بايثون آمنة من حيث الذاكرة. فهي لغة مُدارة تلقائيًا، مما يعني أن مُترجم بايثون يتحكم في تخصيص الذاكرة وإلغاء تخصيصها تلقائيًا. وكل للغه لها المميزات و العيوب الخاصه بها بحيث تختلف لغات البرمجة بشكل كبير من حيث أمان الذاكرة. فيجب مرعاة هذه الجوانب عند اختيارك للغاتك البرمجيه نوع النظام: لغات البرمجة المُدارة: مثل Java و Python و C#، تُوفر بيئة برمجة أكثر أمانًا من خلال إدارة الذاكرة تلقائيًا. لغات البرمجة غير المُدارة: مثل C و C++، تمنح المبرمج تحكمًا أكبر في الذاكرة، ولكنها تُعرضه لخطر أكبر من أخطاء الذاكرة. ميزات اللغة: هل اللغه توفر ميزة جمع القمامة تُساعد على إزالة الكائنات غير المستخدمة من الذاكرة، مما يُقلل من خطر حدوث تسريبات الذاكرة. هل تتعامل اللغه مع الكائنات الغير مُتغيرة بحيث تُقلل من خطر حدوث أخطاء الذاكرة من خلال منع تغيير قيم الكائنات بعد إنشائها. هل اللغه توفر مكتبات تشفير لانه بطبع تُساعد على تأمين البيانات الحساسة. هذه جدول يوضح مقارنه بين عدة للغات يمكنك الاستفادهه منه
- 4 اجابة
-
- 1
-
يوجد اكثر من مكتبه تدعم التقويمين الهجري والميلادي معًا، مثل مكتبة hijri-date و moment-hijri و WP-Hijri . يجب عليك اختيار واحدة منهم دعنا نعطي مثال علي مكتبة WP-Hijri تتيح لك هذه المكتبه عرض التواريخ بالهجري أو الميلادي أو كليهما في موقعك. بالاضافه الي ان يمكنك عرض التاريخين الهجري والميلادي بتنسيق واحد. و أيضًا الاستمرار في استخدام التاريخ الميلادي دون الحاجة إلى إلغاء تنشيط المكتبه. بالاضافه تساعدك في تغيير عناوين URL إلى اللغة الهجرية. ويحتوي على أدوات التقويم والأرشيف الهجري المكافئة تمامًا لأدوات WordPress الأصلية. المميزات يمكنك الاستمرار باستخدام التقويم الميلادي دون الحاجة إلى إلغاء تفعيل plugin. يتيح لك plugin استخدام تنسيقات مخصصة للتواريخ بالتقويمين الهجري والميلادي. يُتيح لك إجبار جميع التواريخ في موقع ووردبريس على الظهور بالتقويم الهجري. يُتيح لك تعديل بداية الشهر الهجري لمزامنتها مع رؤية الهلال، ويتم حفظ التعديلات في قاعدة البيانات. يُتيح لك استخدام التقويم الهجري في عناوين URL للموقع. يُظهر plugin التاريخ الهجري بعشرين لغة عالمية. : خوارزمية أم القرى والخوارزمية الجدولية.
- 5 اجابة
-
- 1
-
من الصعب احد ان يحديد السعر الدقيق دون معرفة المزيد من التفاصيل حول موقعك انت فقط من تستطيع تقدير مستوي العمل و الصعوبه و الوقت اللذي ستحتاجه لبناء مثل هذه المشروع. ومع ذلك، يوجد بعض الامور التي يجب الإنتباه لها عند تحديد التكلفة 1. هل ستحتاج إلى تصميم مخصص أم يمكنك استخدام قالب جاهز 2. هل عدد اللغات هذا سيؤثر على عدد الصفحات والمحتوى الذي سيتم إنشاؤه. 3. هل العميل يحتاج إلى خدمات استضافة وصيانة للموقع 4. هل تحتاج إلى تكامل مع أنظمة خارجية مثل بوابات الدفع 5. ما هو مستوي المشروع صعب او معقد او متوسط 5. ما مدي خبراتك و عدد السنين التي تمتلكها في المجال بناءً على هذه العوامل واجابتك، يمكنك ان تحدد سعر المشروع
-
تستخدم دالة abs لحساب القيمة المطلقة للفرق بين pp$ و rlst_counter$. القيمة المطلقة هي المسافة بين رقمين على خط الأعداد، دون اعتبار العلامة. لذلك، إذا كان الرقمان متطابقين، فإن القيمة المطلقة للفرق بينهما ستكون صفرًا، ولن يتم عرض أي شيء افضل حل يمكنك ان ستخدمه هو استخدم عامل المقارنة == للتحقق من تساوي الرقمين فاإذا كانا متساويين، فقم بعرض الرقم. كما موضح بهذه الشكل if (isset($_POST['sb_1'])) { $pp = $_POST['st_1']; $rlst_counter = '500'; if ($pp == $rlst_counter) { echo $pp; } else { echo abs($pp - $rlst_counter); } } الكود سيعمل بهذه الطريقه التحقق من وجود متغير _POST['sb_1']$. فإذا كان موجودًا، فسيتم تخزين قيمة في المتغير pp$. ثما سيتم المقارنه بين pp$ معrlst_counter $. إذا كانا متساويين، سيتم عرضpp$. فإذا لم يكونا متساويين، سيتم حساب القيمة المطلقة للفرق بينهما وعرضها
-
1. اولا يجب ان تنشئ جدول Transaction يحتوي على الأعمدة التالية: id: معرف للمعاملة (integer). date: تاريخ المعاملة (date). description: وصف المعاملة (string). debit: المبلغ المدفوع (decimal). credit: المبلغ المستحق (decimal). 2. ثانيا قم بإنشاء وحدة تحكم TransactionsController لانشاء دالة العرض index.لعرض جميع المعاملات مع خانة الإجمالي بهذه الطريقه class TransactionsController extends Controller { public function index() { $transactions = Transaction::all(); return view('index', compact('transactions')); } } 3. يجب انشاء المودل بهذه الامر php artisan make:model Transaction -m ثما قم بوضع هذه الكود داخل المودل class Transaction extends Model { use HasFactory; protected $fillable = [ 'date', 'description', 'debit', 'credit', ]; protected $casts = [ 'debit' => 'decimal:2', 'credit' => 'decimal:2', ]; public function calculateTotal() { return $this->debit - $this->credit; } } calculateTotal تستخدم لحساب الرصيد 4. اخير يمكنك عرض البيانات بهذه الطريقه <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Transactions</title> </head> <body> <h1>Transactions</h1> <table border="1"> <tr> <th>Date</th> <th>Description</th> <th>Debit</th> <th>Credit</th> <th>Total</th> </tr> @foreach ($transactions as $transaction) <tr> <td>{{ $transaction->date }}</td> <td>{{ $transaction->description }}</td> <td>{{ $transaction->debit }}</td> <td>{{ $transaction->credit }}</td> <td>{{ $transaction->calculateTotal() }}</td> </tr> @endforeach <tr> <td colspan="4">Total</td> <td>{{ $transactions->sum('calculateTotal') }}</td> </tr> </table> </body> </html> .
-
يوجد طرق يمكنها حل هذه المشاكل عن تجربتي الشخصيه وتعرضي لمثل هذه المواقف أود ان اشاركك ببعض النصائح التي قد تساعدك في تجنب هذه المشكلة من البداية، سنتحدث هنا عن مفهوم مهم جدًا يُعرف بـ "scalability " وكيف يمكنك تحقيقه قدر الإمكان. التوسع الأفقي: في هذا النوع من التوسع، يتم زيادة عدد الخوادم أو الخوادم الفعّالة التي يعمل عليها التطبيق. على سبيل المثال، إذا كان لديك تطبيق ويب يواجه زيادة في عدد المستخدمين، يمكنك إضافة خوادم إضافية للتعامل مع هذا الضغط الإضافي دون الحاجة إلى تغيير الموارد الحالية بشكل كبير. مثلاً، إذا كان لديك موقع للتجارة الإلكترونية، يمكنك إضافة خوادم إضافية لمعالجة المزيد من الطلبات أثناء فترات الضغط التوسع الرأسي: يتم زيادة قدرات الخادم الفردي مثل الذاكرة العشوائية (RAM) أو المعالج. مثلا، يمكنك ترقية الخادم الحالي لديك بزيادة سعة الذاكرة العشوائية أو بترقية المعالج لمواجهة الضغط الزائد. ومع ذلك، يأتي التوسع الرأسي بحدود، وبمجرد أن تصل إلى هذه الحدود، ستحتاج إلى البدء في التفكير في التوسع الأفقي. تقسيم قاعدة البيانات: تقسيم قاعدة البيانات إلى أجزاء صغيرة تسمى يسمح بتوزيع الأعباء بينها، هذه يحسن من أداء عمليات القراءة والكتابة. مثلا، إذا كان لديك تطبيق يعمل على مستوى عالمي ويتعامل مع كميات كبيرة من البيانات، يمكنك تقسيم قاعدة البيانات إلى مجموعات حسب الموقع الجغرافي أو الفئة الفرعية للبيانات. التخزين المؤقت: يسمح التخزين المؤقت الاحتفاظ بالبيانات في ذاكرة سريعة الوصول لفترة مؤقتة، مما يقلل من الحاجة إلى الوصول المتكرر إلى قاعدة البيانات وبالتالي يحسن من أداء التطبيق. مثلا، يمكنك تخزين نتائج الاستعلامات الشائعة في ذاكرة مؤقتة لفترة محددة من الوقت لتقليل الضغط على قاعدة البيانات. توزيع الحمولة: توزيع الحمولة يسمح بتوجيه الطلبات بشكل متساوٍ إلى الخوادم المتاحة، هذه يسهل التعامل مع الحمولة المتزايدة ويحسن من أداء التطبيق. على سبيل المثال، يمكن استخدام خادم وسيط (Load Balancer) لتوجيه الطلبات إلى الخوادم بشكل متساوي استنادا إلى الحمولة الحالية. المعالجة الغير متزامنة: تستخدم المعالجة الغير متزامنة للمهام التي قد تستغرق وقتًا طويلاً للانتهاء، مما يسمح بتحسين استجابة التطبيق وسرعته. على سبيل المثال، يمكن استخدام طوابو (Queues) لمعالجة الطلبات بشكل تدريجي، مما يسمح بإرسال البريد الإلكتروني لعدد كبير من المستخدمين دون تعطيل التطبيق.
- 1 جواب
-
- 1
-
نعم يمكنك عن طريق استخدام عملية باقي القسمه في Python باستخدام العملية الحسابية % لقد نقشنا هذه الموضوع من قريب هنا اذا كنت تريد الفهم اكثر علي سبيل المثال في الكود الخاص بك يمكنك استخدام عملية القسمة والقسمة الصحيحة لتحقيق ذلك n = 32 # القسمة الصحيحة للحصول على الأرقام الفردية n0 = n // 10 n1 = n % 10 print("الرقم الأول:", n0) # 3 print("الرقم الثاني:", n1) # 2
- 4 اجابة
-
- 1
-
نصيحه دراسة علوم الحاسب من اكثر الاشياء الممتعه والغير ممله وكلما ذاد علمك حتي اذا كانو الماداتان متشابهان فحاول دراستهم اما اذا كنت تريد الاجابه فالرياضيات المنطقية (Mathematical Logic) والرياضيات التكاملية (Discrete Mathematics) هما فعلاً مرتبطان من حيث المنطق والتفكير الرياضي، ولكنهما يغطيان مجالات مختلفة.
- 8 اجابة
-
- 1