-
المساهمات
13212 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
365
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Mustafa Suleiman
-
الوسيط validateObjectId يقوم بفحص قيمة المُعامل req.params.id للتحقق من قيمة ObjectId وإن لم تكن القيمة صالحة، فسيُرجع الوسيط استجابة HTTP 400 مع رسالة خطأ Invalid Id. حاول تفقد أين تقع المشكلة، من خلال عرض المزيد من المعلومات كالتالي: module.exports = (req, res, next) => { if (!mongoose.Types.ObjectId.isValid(req.params.id)) { return res.status(400).json({ message: "Invalid Id", invalidId: req.params.id }); } next(); }; أيضًأ هنا: const getPostCountCtrl = asyncHandler(async (req, res) => { console.log("Request params:", req.params); const countPosts = await Post.count(); console.log("Count posts:", countPosts); res.status(200).json(countPosts); });
- 2 اجابة
-
- 1
-
حاليًا تقوم بفحص responste.status_code == 20، ولكن كود الحالة الصحيح لاستجابة HTTP ناجحة هو 200، عليك تصحيح الشرط إلى responste.status_code == 200. أيضًا من الجيد أن تتعامل مع حالات عدم نجاح الاستجابة، كطباعة رسالة خطأ عندما يكون كود الحالة غير 200، والتحقق من وجود المجلد الذي يتم حفظ الملف فيه (assa) قبل محاولة حفظ الملف، وتستطيع استخدام os.makedirs(assa, exist_ok=True) للتأكد من وجود المجلد. import os import requests urls = [ 'https://www.noor-book.com/book/review/577461' ] assa = '.\Outputs' # التأكد من وجود مجلد الإخراج os.makedirs(assa, exist_ok=True) for url in urls: response = requests.get(url) # التحقق مما إذا كانت الطلب ناجحة (كود الحالة 200) if response.status_code == 200: # إضافة امتداد الملف الصحيح إلى اسم الملف file_path = os.path.join(assa, os.path.basename(url) + '.pdf') with open(file_path, 'wb') as f: f.write(response.content) else: # طباعة رسالة خطأ إذا فشل الطلب print(f"Failed to download {url}. Status code: {response.status_code}")
-
عليك أستخدام خاصية overflow-wrap مع بعض التنسيقات الأخرى لضمان عدم حدوث أية مشاكل، وإليك مثال: HTML: <div class="container"> <p class="long-text">هذا هو نص طويل جدا يحتوي على الكثير من الكلمات والجمل. هذا هو نص طويل جدا يحتوي على الكثير من الكلمات والجمل.</p> </div> CSS: .long-text { overflow-wrap: break-word; /* يُستخدم لتحديد تكسير الكلمات في حال تجاوزت الحاوية حدودها، للحفاظ على التنسيق. */ hyphens: auto; /* تُستخدم لتحديد ما إذا كانت الهوامش (الواصلات) مسموح بها لتقسيم الكلمات عند التمدد على السطر. */ white-space: normal; /* يُستخدم لتحديد كيفية التعامل مع المسافات البيضاء داخل العنصر . */ }
- 3 اجابة
-
- 1
-
في حال كانت المشكلة عامة أي تواجه ذلك مع جميع الإضافات، حاول تجربة حذف الملفات والمجلدات في مجلد الإضافات extensions لحذف جميع الملفات الخاصة بالإضافات والبدء من الجديد، ويقع في المسار التالي: C:\Users\waleed\.vscode\extensions قم باستبدال waleed باسم المستخدم لديك في الويندوز وستجد مجلدات وملفات كالتالي قم بحذفها: في حال استمرت المشكلة قم بتجربة استخدام vpn ثم المحاولة من جديد، وفي حال استمرت المشكلة حاول تثبيت الإضافة يدويًا من خلال ملف VSIX كما بالشرح التالي: وفي حال استمرت المشكلة قم بحذف vscode تمامًا أي uninstall ثم تثبيت أحدث نسخة من جديد.
- 1 جواب
-
- 1
-
ما هي الدورة التي اشتركت بها؟ عامًة الدورة المناسبة لتعلم أساسيات البرمجة والتي هي أساسية لتعلم الأمن السيبراني، هي دورة علوم الحاسوب، وإذا أردت استرجاع الدورة عليك التحدث لمركز المساعدة في أكاديمية حسوب وإخبارهم بذلك. وإذا أردت معرفة الفائدة التي ستعود عليك من دورة علوم الحاسوب، تفقد النقاش التالي: وبخصوص الأمن السيبراني فستجد تفصيل هنا:
-
هناك بعض المزايا التي تجعل استخدام Policies أفضل: تسمح Policies بفصل التحقق من Authorization عن المعالجة الفعلية للطلب، وذلك يساعد في جعل الكود أكثر قابلية للاختبار والصيانة، بمعنى تجميع جميع القواعد المتعلقة بالصلاحيات في مكان واحد بدلاً من تشتيتها في Middlewares، وأيضًا بسهولة يمكن فحص السياسات لفهم كيف يتم التحقق من الصلاحيات لنوع محدد من الموديل، مما يسهل عليك وعلى الآخرين فهم اللوجيك والتعديل عليها عند الحاجة. إعادة استخدام السياسات بسهولة في أماكن متعددة في تطبيقك، لتحقق الصلاحيات في مكان معين دون الحاجة إلى إعادة كتابة اللوجيك. تستخدم Policies للتحكم في الوصول إلى الموارد المحددة، كاستخدام Policy لتحديد ما إذا كان المستخدم مرخصًا لرؤية صفحة معينة أو إجراء عملية معينة. بإمكانك توسيع Policies بسهولة لإضافة قواعد جديدة للتحقق من Authorization. إمكانية تجاوز السياسات بسهولة الصلاحيات الأكثر تعقيدًا وتعقيدًا بناءًا على معطيات محددة، بينما تكون Middleware أقل قابلة للتعديل لتلبية حالات الاستخدام المعقدة. استخدام السياسات بشكل مباشر مع الـ Gate والـ Authorization في Laravel، مما يوفر لك أسلوبًا أكثر جمالاً للتحقق من الصلاحيات.
- 1 جواب
-
- 1
-
حاولي حذف الـ Data الخاصة بتطبيق EXPO GO على المحاكي. أو استخدام دالة clear لحذف جميع البيانات المخذنة: Asyncstorage.clear()
- 3 اجابة
-
- 1
-
الأسئلة الإختبارية لا يتم الإجابة عليها بشكل مباشر، ويمكن مساعدتك في حال توفير الكود، وإليك الخطوات لتنفيذ ما تريدين، والأسهل استخدام لغة جافا: تحريك وتكبير وتدوير الشكل: 1- ففي Java، تستطيعي استخدام JavaFX للرسوم، عليك إنشاء نافذة واستخدام GraphicsContext للرسم والمكتبات التالية: import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.canvas.Canvas; import javafx.scene.canvas.GraphicsContext; import javafx.stage.Stage; 2- استخدم متغيرات لتمثيل إحداثيات الكائن (x و y). 3- حساب الإحداثيات الجديدة بالإعتماد على اتجاه الحركة. 4- استخدمي clearRect لمسح الكائن من مكانه الحالي ورسمه في المكان الجديد. تحريك السيارة وإضافة الدخان: اعتمدي على نفس الأفكار لتحريك السيارة على طول خط مستقيم. رسم كرات تمثل الدخان وتكبر تدريجيًا باستخدام gc.setFill وgc.fillOval. قللي حجم الكرات حتى تختفي smokeSize -= 1.
- 1 جواب
-
- 1
-
بيئة Node.js تستخدم متغير تسمى NODE_ENV لتحديد البيئة التي يتم تشغيل التطبيق فيه، ويكون NODE_ENV إما "development" أو "production" أو test أو قيمة أخرى حسب ما تريده أنت. ونستخدم قيمة NODE_ENV لتحديد سلوك التطبيق حسب البيئة، وذلك مفيد في عدة سيناريوهات، منها: تحديد إعدادات مختلفة لقواعد البيانات أو الاتصال بالخدمات أو أي إعدادات أخرى بناءًا على البيئة، كاستخدام قاعدة بيانات مختلفة في الإنتاج مقارنة بالتطوير. تحديد ما إذا كان التطبيق يعمل في وضع تطوير أو إنتاج، والاستفادة من تلك المعلومة لتحسين أداء التطبيق في وضع الإنتاج. استخدامه في ملفات التكوين والكود لتشغيل الأكواد التصحيحية أو اختبار الوحدات عند تشغيل البرنامج في وضع اختبار. والقيمة الشائعة لـ NODE_ENV هي "development" عندما يكون التطبيق قيد التطوير، و"production" عندما يكون في إنتاج، و"test" عند تشغيل اختبارات، وتستطيع تعيين قيمة NODE_ENV باستخدام الأمر في الطرفية: //CMD SET NODE_ENV=production //PowerShell $env:NODE_ENV="production" أو في السكريبت التشغيلي: "scripts": { "start": "NODE_ENV=production node app.js" } أو في ملف .env: NODE_ENV=production وإليك بعض الأمثلة على كيفية استخدام NODE_ENV والاستفادة منه: تنفيذ أمر معين بناءًا بيئة التطوير: // في بيئة التطوير if (process.env.NODE_ENV === "development") { // تمكين التصحيح console.log("تطبيق التطوير"); } // في بيئة الإنتاج if (process.env.NODE_ENV === "production") { // تعطيل التصحيح console.log("تطبيق الإنتاج"); } تغيير المنفذ مثلاً: // تعيين اسم مضيف الخادم const host = process.env.NODE_ENV === "production" ? "localhost" : "0.0.0.0"; أو تغيير الـ API: // تعيين مزود API الخارجي const provider = process.env.NODE_ENV === "production" ? "productionProvider" : "developmentProvider";
- 2 اجابة
-
- 1
-
ليس دائمًا، فقط في حال أنك تتعامل مع البيانات، حيث نستخدم Numpy في: التعامل مع البيانات العددية أو العمليات الرياضية المعقدة، مثل الحسابات العلمية أو الرياضيات المتقدمة. تحليل البيانات أو تحويل البيانات. ونستخدم Pandas في: في حال كان لدينا بيانات جدولية مثل الجداول أو إذا كنا نعمل على تحليل البيانات واستخدام البيانات الهيكلية، فمثلاً عند قراءة ومعالجة البيانات من مصادر مثل ملفات CSV أو قواعد البيانات، نستخدم Pandas لتبسيط تلك العمليات. أمثلة لتوضيح الفكرة: يمكن استخدام NumPy أو Pandas لإنشاء واجهة برمجة تطبيقات (API) تسمح للمستخدمين بالوصول إلى البيانات المخزنة في قاعدة بيانات، ونستخدم تلك الواجهة البرمجية لإنشاء تطبيقات ويب يمكنها عرض البيانات أو إجراء تحليلات عليها. إنشاء رسوم بيانية وجداول لعرض البيانات، أو لإجراء اختبارات إحصائية لتحديد الاتجاهات والعلاقات بين البيانات. إنشاء تطبيقات ويب ديناميكية تتفاعل مع البيانات، مثل موقع ويب يعرض قائمة المنتجات التي يتم تحديثها تلقائيًا بناءًا على بيانات المخزون.
- 8 اجابة
-
- 1
-
عليك تعطيل salfeld فهو يسبب ظهور طبقة الحماية والتحقق في الأكاديمية الخاصة بـ cloudflare للتحقق من أنك لست روبوت، يمكنك تعطيل البرنامج أثناء استخدام الأكاديمية وتشغيله بعد ذلك. عامًة حاول تجربة تعديل الـ DNS في الشبكة لديك ليصبح الـ DNS الخاص بـ cloudflare حيث سنستخدم التالي: 1.1.1.1 1.0.0.1 أو التالي لحجب البرامج الضارة والمواقع الإباحية: 1.1.1.3 1.0.0.3 وإليك طريقة استخدامه: قم بالبحث في شريط البحث بالأسفل في الويندوز عن Network Connections ثم قم بالنقر عليها كما بالصورة: سيظهر أمامك عدّة شبكات اختر منها الذي يظهر أسفلها اسم كرت الشبكة لديك مثل التالي واضغط عليه بزر الفارة الأيمن ثم اختر properties. ستظهر لك نافذة ابحث بها عن ipv4 وقم بالنقر مرتين علي ذلك الخيار: وستظهر لك نافذة أخرى كالتالي، فقم بها بالضغط على use the following DNS server ثم قم بكتابة الـ DNS الذي ذكرته لك في الخانة الأولى ثم الثاني في الخانة الثانية كالتالي ثم اضغط على ok: الآن قم بتكرارنفس الأمر بالنسبة لشبكة الواي فاي حيث ستجد شبكة مماثلة وأسفلها اسم كرت الشبكة، فما قمنا به في البداية هو للشبكة الخاصة بكابل الإنترنت السلكي، لكون اللاب توب متاح بها الخيارين.
-
الطريق الأسهل هو أن تصبح لديك نسبة في أسهم الشركة كإمتياز لك من ضمن إمتيازات الوظيفة، وبعض الشركات توفر ذلك، والطريقة الثانية هي شراء الأسهم ولكن الأمر بحاجة إلى مبالغ كبيرة لكي تحصل على نسبة جيدة من الشركة. لكن إذا أردت الاستثمار، فيمكنك الاستثمار في أسهم البورصة في السعودية وأمريكا خاصًة S&P 500 ، لكن تجنب الاستثمار في الأسهم الخاصة بالبنوك بسبب الربا. الأسهم، كيف يمكنني الاستثمار به؟ الاستثمار، ما هي أنواعه؟ وما هو أفضلها في وقتنا الحالي؟
- 1 جواب
-
- 1
-
حاول القيام بذلك من خلال الهاتف، فربما يتم حجب الـ CAPTCHA للتحقق من أنك لست Robot بواسطة برنامج Salfeld ، أو يمكنك تعطيله وأيضًا تعطيل مانع الإعلانات إن كان لديك وتفقد هل تم حل المشكلة أم لا، ومن الممكن القيام بذلك من متصفح آخر.
- 1 جواب
-
- 1
-
أرجو التعليق أسفل فيديو الدرس لمساعدتك بشكل أفضل. هناك خطأ في استعلامك، فالقيمة التي تريد استبعادها هي "four, five" ككل وليست قيمتين منفصلتين، أي يجب عليك تقسيمهما بواسطة فاصلة، وذلك باستخدام كلمة "IN" فقط لكل قيمة، كالتالي: SELECT * FROM school WHERE class NOT IN ('four', 'five'); بالطبع قم بتغيير اسم الجدول بما يتناسب لديك، وأيضًا لاحظ أنه في الجدول كتبت for وليس four لذلك عليك تصحيح الأمر.
-
الأسماء الأخرى هي: السلامة المعلوماتية (Information Assurance) تأمين المعلومات (Information Security) الأمن الإلكتروني (Cyber Security) الأمن السيبراني (Cybersecurity) وهناك أيضًا بعض الجامعات التي تقدم تخصصات ذات صلة بأمن المعلومات، مثل: الهندسة الأمنية (Security Engineering) إدارة أمن المعلومات (Information Security Management) التحقيقات السيبرانية (Cyber Investigations) وتخصص أمن المعلومات يتطلب معرفة قوية بعلوم الحاسوب، ولذلك تقدم بعض الجامعات تخصصات في علوم الحاسوب مع مواد اختيارية في أمن المعلومات. ويمكنك تفقد الجامعات التي تقدم تلك التخصصات في بريطانيا أو تستطيع تغيير البلد من خلال المواقع التالية: https://www.bachelorsportal.com/search/bachelor/cyber-security/united-kingdom https://www.bachelorstudies.com/bachelor/cyber-security/united-kingdom
-
الدورة توفر لك تعلم التالي: الأسس البرمجية السليمة عبر لغة Python التعامل مع مختلف صيغ الملفات مثل إكسل Excel وورد Word وخدمات المستندات السحابية استخراج البيانات من صفحات الويب Web Scraping وتحليلها أساسيات التعامل مع قواعد البيانات عبر بايثون، والتعامل مع البريد الإلكتروني لإرسال الرسائل أساسيات إطار العمل جانغو Django بناء تطبيق إدارة المهام باستخدام إطار العمل جانغو Django تطوير متجر إلكتروني متكامل باستخدام إطار العمل جانغو Django وربطه مع وسائل الدفع باي بال PayPal وسترايب Stripe أساسيات إطار العمل فلاسك Flask، وبناء مدونة بسيطة تطوير واجهة برمجية API اعتمادًا على نمط RESTful لمعالجة الصور وبالتالي أنت تستطيع العمل بالمجالات التالية: مطور Full-stack لبناء مواقع الويب والمتاجر الإلكترونية أي قادر على تطوير الواجهة الأمامية والخلفية أيضًا من خلال Django و Flask. مطور واجهة خلفية Back-End فقط. مجال تعلم الآلة ولكن هنا أنت بحاجة إلى تعلم المزيد وعدم الإكتفاء بالدورة والأمر بحاجة إلى وقت أكثر من أي مجال آخر. محلل بيانات (Data Science )، حيث ستتمكن من استخدام مهارات البرمجة الخاصة بك للتحليل واستخراج البيانات من مصادر متنوعة، ومعالجة البيانات، وإجراء التحليلات الإحصائية والتعلم الآلي باستخدام مكتبات Python مثل pandas و NumPy و scikit-learn. مطور odoo وستجد توضيح أكثر هنا:
-
المنطق يتم من خلال الآتي: إنشاء دالة ولتكن باسم remove_duplicates لحذف التكرار. حلقة لحساب عدد التكرار. حلقة لإنشاء القائمة الجديدة وتخزينها في متغير باسم (unique_arr). إرجاع القائمة الجديدة وقاموس عدد التكرار. استدعاء الدالة وطباعة النتائج. def remove_duplicates(arr): # إنشاء قاموس لتتبع عدد التكرار لكل عنصر count_dict = {} # حلقة لحساب عدد التكرار لكل عنصر for num in arr: count_dict[num] = count_dict.get(num, 0) + 1 # حلقة لبناء قائمة جديدة بدون العناصر المكررة unique_arr = [num for num, count in count_dict.items() if count == 1] return unique_arr, count_dict # قائمة مثالية my_array = [1, 2, 3, 4, 3, 2, 5, 6, 7, 8, 7, 6] # استدعاء الدالة unique_numbers, counts = remove_duplicates(my_array) # طباعة النتائج print("New list without duplicates:", unique_numbers) print("Number of occurrences for each element:", counts) وستجد أن النتيجة هي: New list without duplicates: [1, 4, 5, 8] Number of occurrences for each element: {1: 1, 2: 2, 3: 2, 4: 1, 5: 1, 6: 2, 7: 2, 8: 1} لاحظ في القاموس ستجد العدد وبجانبه عدد التكرار.
-
حاليًا أنت قمت باستخدام title() على كل سطر (i.title())، ولكن دالة title() تقوم بتحويل الحرف الأول في كل كلمة في السطر بأكمله، وليس بعد الرمز (:). وما يجب فعله هو: تقسيم كل سطر إلى جزئين: key و value، بناءًا على الرمز (:). استخدام title() فقط للجزء key لتحويل الحرف الأول في كل كلمة. استخدام capitalize() على الجزء value لتحويل الحرف الأول فقط. على النحو التالي: File_storage = "" file_path = r"C:\Users\Uday Ali Al-Sufyani\Desktop\بيانات Uday Ali Al-Sufyani\exam\aa.txt" with open(file_path, 'r', encoding='utf-8') as file: File_storage = file.read() for line in File_storage.split('\n'): storage = line.split(':') if len(storage) == 2: # التأكد من وجود رمز (:) في السطر key, value = storage[0], storage[1].lstrip() # إزالة الفراغات الزائدة من القيمة print(f"{key}: {value.capitalize()}")
-
المسألة التي تحاول حلها هي String to Integer (atoi) والمطلوب هو: تحويل سلسلة نصية تحتوي على رقم إلى عدد صحيح، والهدف هو تحويل السلسلة إلى عدد صحيح، مع التعامل مع الحالات الخاصة مثل الفراغات في بداية السلسلة، والرموز غير الرقمية، وحدود التمثيل الصحيح. أي تحتاج إلى كتابة دالة تقوم بتحويل سلسلة نصية إلى عدد صحيح، والسلسلة يمكن أن تحتوي على فراغات في بدايتها، وقد تكون متباينة إذا كانت الأرقام إيجابية أو سلبية، وقد تحتوي السلسلة على أحرف غير رقمية وبالتالي يجب تجاهلها، وإذا تجاوزت القيمة المحسوبة حدود التمثيل الصحيح، يجب أن تُرجع INT_MAX (أكبر قيمة ممكنة للعدد الصحيح) أو INT_MIN (أصغر قيمة ممكنة للعدد الصحيح) حسب الحاجة. مثال: Input: str = " -42" Output: -42 Input: str = "4193 with words" Output: 4193 Input: str = "words and 987" Output: 0 Input: str = "-91283472332" Output: -2147483648 (INT_MIN) عليك تجاهل الفراغات في بداية السلسلة، وإذا كانت السلسلة فارغة أو لا يمكن تحويلها إلى عدد صحيح صالح، يجب أن تعيد الدالة قيمة 0. ولعلك تتسائل لماذا النتيجة هنا هي 0؟ Input: str = "words and 987" Output: 0 والسبب أن السلسلة "words and 987" تبدأ بكلمات (words) وليس برقم مباشر، وفي المسألة، يُطلب منك تحويل سلسلة تحتوي على رقم، وإذا كانت السلسلة لا تبدأ برقم، يجب عليك إرجاع 0.
- 2 اجابة
-
- 1
-
في حال أنك تستخدمين AsyncStorage فتستطيعي حذف التوكين من خلال التالي: await AsyncStorage.removeItem('accessToken'); نفذي التعليمة السابقة عند بداية التشغيل لمرة واحدة فقط وسيتم حذف التوكين ثم تعليق السطر لمنع حذف التوكين. وأظن أنها نفس المشكلة هنا في الدورة: