اذهب إلى المحتوى

Mustafa Suleiman

الأعضاء
  • المساهمات

    12082
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    340

كل منشورات العضو Mustafa Suleiman

  1. أرجو منك حذف المستودع من على GitHub وستجد شرح لذلك هنا: بعد ذلك قم بحذف مجلد .git في المجلد الذي به المشاريع وتراه مخفي لديك كما بالصورة فقم بحذفه. بعد ذلك قم بإنشاء مستودع جديد على GitHub، ثم توجه افتح منفذ الأوامر في مسار المجلد الذي به المشاريع ونفذ الأوامر التالية بالترتيب: git init // ثم git add . // ثم git commit -m "first commit" // ثم git branch -M main // ثم git remote add origin https://github.com/ اسم المستخدم/repoName.git // ثم git push -u origin main
  2. بالفعل لا يوجد أية مشاريع في فرع main، والسبب أنك لم تقم بعمل push للتغييرات التي قمت بها في المستودع لاحظ الجزء التالي يخبرك بذلك: قم بالضغط على contribute ثم رفع تلك التغييرات أو من خلال المجلد لديك على حاسوبك الذي به تلك المشاريع قم بتنفيذ الأوامر: git add . // ثم git commit -m "first commit" // ثم git branch -M main // ثم git remote add origin https://github.com/ اسم المستخدم/repoName.git // ثم git push -u origin main وسيتم دفع تلك التغييرات لذلك الفرع. لكن لا حاجة إلى ذلك، فقد قمت أنت برفع المشاريع في فرع master وليس main، وذلك هو رابط الفرع: https://github.com/RADHWAN44/Hsoub-CS/tree/master
  3. أرجو التعليق أسفل الدرس الخاص بالسؤال في الدورة لمساعدتك بشكل أفضل. والمشكلة لديك هي أنك تحاول استخدام دالة copy لنسخ مجلد وذلك غير صحيح، فتلك دالة خاصة بنسخ الملفات فقط. لذا عليك استخدام دالة copytree من أجل ذلك الغرض.
  4. حاول تنفيذ الأمر التالي: flutter clean حيث يقوم بالتالي: حذف مجلدات البناء مثل "build" التي تحتوي على ملفات البناء الفعلية لتطبيقك. يزيل الملفات المؤقتة التي تم إنشاؤها خلال عمليات البناء والتشغيل. يساعد في تصحيح أي مشاكل تتعلق بالتعديلات التي تم إجراؤها على مشروعك. إعادة تحميل الاعتماديات (dependencies) وتحديثها. ثم: flutter pub get من أجل أمر تحميل وتحديث الاعتماديات (dependencies) المعرفة في ملف pubspec.yaml الخاص بتطبيق Flutter لديك. فعندما تعمل على مشروع Flutter، يحتوي ملف pubspec.yaml على قائمة بالاعتماديات التي يحتاج التطبيق إلى تحميلها لاستخدامها.
  5. ستجد على اليوتيوب مصادر عربية وأجنبية، ابحث فقط عن "دورة odoo" أو odoo course أيضًا يوجد في أكاديمية حسوب شرح شامل لـ odoo في دورة بايثون: ويوجد دروس ومقالات عن odoo في الأكاديمية: تطبيقات أودو odoo
  6. وعليكم السلام ورحمة الله، عليك أولاً تثبيت بايثون على الويندوز من خلال الرابط التالي: https://www.python.org/ftp/python/3.10.8/python-3.10.8-amd64.exe ولا تنسى إختيار add python to PATH أثناء التثبيت. بعد ذلك تثبيت الإضافة التالية في vscode: https://marketplace.visualstudio.com/items?itemName=ms-python.python والآن قم بإنشاء ملف وضع في نهايته صيغة .py وليكن مثلاً app.py وقم بكتابة كود بايثون به وتستطيع تشغيله من خلال علامة run أعلى اليمين كالتالي: وفي حال واجهت مشكلة أثناء ذلك، فتأكد من إختيار المترجم الخاص بترجمة كود بايثون في vscode حيث سنختار إصدار مترجم بايثون الذي قمت بتحميله وتثبيته وفي الرابط بالأعلى وفرت لك إصدار 3.10 لذلك سنضغط على التالي في vscode ثم نختار المترجم الذي بجانبه recommended:
  7. ستحتاجين إلى استخدام Spring Boot وهو إطار عمل خاص بجافا لتسهيل الأمر عليكِ. أولاً قومي بتحميل وتثبيت JDK على جهاز الكمبيوتر وهو اختصار لـ Java Development Kit، وتستطيعي العثور على JDK على موقع Oracle أو OpenJDK. استخدمي IDE مثل IntelliJ IDEA أو Eclipse أو محرر أكواد مثل vscode لتطوير تطبيقك وكتابة الكود. إنشاء مشروع جديد في الـ IDE أو المحرر الذي اخترتيه. تعريف نقاط النهاية (Endpoints) التي ستقوم بتعامل معها الـAPI، وتستطيعي استخدام الأنواع المختلفة للطلبات مثل GET و POST. كتابة controllers التي تدير نقاط النهاية وتنفذ العمليات المطلوبة. في حال كنتي بحاجة إلى التفاعل مع قاعدة البيانات، تتوفر JDBC للتواصل مع قاعدة البيانات. وإليك مثال بسيط باستخدام Spring Boot: // Main Application class @SpringBootApplication public class MyApiApplication { public static void main(String[] args) { SpringApplication.run(MyApiApplication.class, args); } } // Controller class @RestController public class MyController { @GetMapping("/hello") public String getHello() { return "Hello, World!"; } }
  8. إذا كان السؤال متعلق بأحد الدورات في الأكاديمية أرجو التعليق أسفل فيديو الدرس في التعليقات لمساعدتك بشكل أفضل، وتوضيح ما لم تفهمه لشرح الأمر لك.
  9. نقوم بتثبيت المكتبات اللازمة: expo install expo-notifications expo-permissions بعد ذلك عليك إنشاء ملف لإدارة الإشعارات (مثلاً: NotificationManager.js) وضعي به الكود التالي: import * as Notifications from 'expo-notifications'; import * as Permissions from 'expo-permissions'; export async function registerForPushNotificationsAsync() { const { status: existingStatus } = await Permissions.getAsync(Permissions.NOTIFICATIONS); let finalStatus = existingStatus; if (existingStatus !== 'granted') { const { status } = await Permissions.askAsync(Permissions.NOTIFICATIONS); finalStatus = status; } if (finalStatus !== 'granted') { console.log('Permission to receive push notifications denied'); return; } const tokenData = await Notifications.getExpoPushTokenAsync(); const token = tokenData.data; return token; } export async function sendNotification(title, body) { const token = await registerForPushNotificationsAsync(); await Notifications.scheduleNotificationAsync({ content: { title: title, body: body, data: { data: 'goes here' }, }, trigger: null, to: token, }); } الآن تستطيعي استخدام ذلك الملف في مكان آخر في تطبيقك لإرسال الإشعارات، وتحديث مكون Picker ليستدعي وظيفة sendNotification عندما يتم اختيار قيمة جديدة، كالتالي: import React, { useState } from 'react'; import { Picker, View } from 'react-native'; import { sendNotification } from './NotificationManager'; export default function MyComponent() { const [selectedValue, setSelectedValue] = useState("option1"); const handlePickerChange = (itemValue, itemIndex) => { setSelectedValue(itemValue); sendNotification('Picker Selected', `You selected: ${itemValue}`); }; return ( <View> <Picker selectedValue={selectedValue} onValueChange={handlePickerChange} > <Picker.Item label="Option 1" value="option1" /> <Picker.Item label="Option 2" value="option2" /> <Picker.Item label="Option 3" value="option3" /> </Picker> </View> ); }
  10. يمكنك محاولة تنفيذ ذلك بمفردك من خلال إتباع التالي: نقوم بتعريف دالة باسم sort_words_by_length. تستقبل الدالة قائمة من الكلمات (words) كمدخل. نستخدم دالة sorted لفرز الكلمات. نستخدم key=len لتحديد أن الفرز سيتم بناءً على طول الكلمات. نستخدم reverse=True لتحديد أن الفرز سيكون من الأطول إلى الأقصر. النتيجة المرتقبة هي قائمة (sorted_words) تحتوي على الكلمات مرتبة حسب الطول. نستخدم حلقة for للمرور عبر الكلمات في القائمة المرتبة. نطبع كل كلمة في سطر منفصل. نقوم بتعريف قائمة من الكلمات words_list التي نرغب في فرزها. نستدعي الدالة sort_words_by_length ونمرر إليها قائمة الكلمات. الدالة sorted()‎ في بايثون
  11. الوسيط 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); });
  12. حاليًا تقوم بفحص 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}")
  13. عليك أستخدام خاصية overflow-wrap مع بعض التنسيقات الأخرى لضمان عدم حدوث أية مشاكل، وإليك مثال: HTML: <div class="container"> <p class="long-text">هذا هو نص طويل جدا يحتوي على الكثير من الكلمات والجمل. هذا هو نص طويل جدا يحتوي على الكثير من الكلمات والجمل.</p> </div> CSS: .long-text { overflow-wrap: break-word; /* يُستخدم لتحديد تكسير الكلمات في حال تجاوزت الحاوية حدودها، للحفاظ على التنسيق. */ hyphens: auto; /* تُستخدم لتحديد ما إذا كانت الهوامش (الواصلات) مسموح بها لتقسيم الكلمات عند التمدد على السطر. */ white-space: normal; /* يُستخدم لتحديد كيفية التعامل مع المسافات البيضاء داخل العنصر . */ }
  14. في حال كانت المشكلة عامة أي تواجه ذلك مع جميع الإضافات، حاول تجربة حذف الملفات والمجلدات في مجلد الإضافات extensions لحذف جميع الملفات الخاصة بالإضافات والبدء من الجديد، ويقع في المسار التالي: C:\Users\waleed\.vscode\extensions قم باستبدال waleed باسم المستخدم لديك في الويندوز وستجد مجلدات وملفات كالتالي قم بحذفها: في حال استمرت المشكلة قم بتجربة استخدام vpn ثم المحاولة من جديد، وفي حال استمرت المشكلة حاول تثبيت الإضافة يدويًا من خلال ملف VSIX كما بالشرح التالي: وفي حال استمرت المشكلة قم بحذف vscode تمامًا أي uninstall ثم تثبيت أحدث نسخة من جديد.
  15. ما هي الدورة التي اشتركت بها؟ عامًة الدورة المناسبة لتعلم أساسيات البرمجة والتي هي أساسية لتعلم الأمن السيبراني، هي دورة علوم الحاسوب، وإذا أردت استرجاع الدورة عليك التحدث لمركز المساعدة في أكاديمية حسوب وإخبارهم بذلك. وإذا أردت معرفة الفائدة التي ستعود عليك من دورة علوم الحاسوب، تفقد النقاش التالي: وبخصوص الأمن السيبراني فستجد تفصيل هنا:
  16. حاول تعطيل مانع الإعلانات أو تجربة متصفح آخر، وفي حال استمرار المشكلة فلا فرار من تعطيل salfeld
  17. هناك بعض المزايا التي تجعل استخدام Policies أفضل: تسمح Policies بفصل التحقق من Authorization عن المعالجة الفعلية للطلب، وذلك يساعد في جعل الكود أكثر قابلية للاختبار والصيانة، بمعنى تجميع جميع القواعد المتعلقة بالصلاحيات في مكان واحد بدلاً من تشتيتها في Middlewares، وأيضًا بسهولة يمكن فحص السياسات لفهم كيف يتم التحقق من الصلاحيات لنوع محدد من الموديل، مما يسهل عليك وعلى الآخرين فهم اللوجيك والتعديل عليها عند الحاجة. إعادة استخدام السياسات بسهولة في أماكن متعددة في تطبيقك، لتحقق الصلاحيات في مكان معين دون الحاجة إلى إعادة كتابة اللوجيك. تستخدم Policies للتحكم في الوصول إلى الموارد المحددة، كاستخدام Policy لتحديد ما إذا كان المستخدم مرخصًا لرؤية صفحة معينة أو إجراء عملية معينة. بإمكانك توسيع Policies بسهولة لإضافة قواعد جديدة للتحقق من Authorization. إمكانية تجاوز السياسات بسهولة الصلاحيات الأكثر تعقيدًا وتعقيدًا بناءًا على معطيات محددة، بينما تكون Middleware أقل قابلة للتعديل لتلبية حالات الاستخدام المعقدة. استخدام السياسات بشكل مباشر مع الـ Gate والـ Authorization في Laravel، مما يوفر لك أسلوبًا أكثر جمالاً للتحقق من الصلاحيات.
  18. حاولي حذف الـ Data الخاصة بتطبيق EXPO GO على المحاكي. أو استخدام دالة clear لحذف جميع البيانات المخذنة: Asyncstorage.clear()
  19. الأسئلة الإختبارية لا يتم الإجابة عليها بشكل مباشر، ويمكن مساعدتك في حال توفير الكود، وإليك الخطوات لتنفيذ ما تريدين، والأسهل استخدام لغة جافا: تحريك وتكبير وتدوير الشكل: 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.
  20. تستطيع الحصول على ما تريد بالتعليق أسفل فيديو الدرس والسؤال عن تمارين حوله أو عن القسم بالكامل وسيتم توفيرها لك، وسيتم مساعدتك في حال واجهت صعوبة في تنفيذها وإرشادك للخطوات والحل إذا أردت.
  21. بيئة 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";
  22. ليس دائمًا، فقط في حال أنك تتعامل مع البيانات، حيث نستخدم Numpy في: التعامل مع البيانات العددية أو العمليات الرياضية المعقدة، مثل الحسابات العلمية أو الرياضيات المتقدمة. تحليل البيانات أو تحويل البيانات. ونستخدم Pandas في: في حال كان لدينا بيانات جدولية مثل الجداول أو إذا كنا نعمل على تحليل البيانات واستخدام البيانات الهيكلية، فمثلاً عند قراءة ومعالجة البيانات من مصادر مثل ملفات CSV أو قواعد البيانات، نستخدم Pandas لتبسيط تلك العمليات. أمثلة لتوضيح الفكرة: يمكن استخدام NumPy أو Pandas لإنشاء واجهة برمجة تطبيقات (API) تسمح للمستخدمين بالوصول إلى البيانات المخزنة في قاعدة بيانات، ونستخدم تلك الواجهة البرمجية لإنشاء تطبيقات ويب يمكنها عرض البيانات أو إجراء تحليلات عليها. إنشاء رسوم بيانية وجداول لعرض البيانات، أو لإجراء اختبارات إحصائية لتحديد الاتجاهات والعلاقات بين البيانات. إنشاء تطبيقات ويب ديناميكية تتفاعل مع البيانات، مثل موقع ويب يعرض قائمة المنتجات التي يتم تحديثها تلقائيًا بناءًا على بيانات المخزون.
  23. عليك تعطيل 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: الآن قم بتكرارنفس الأمر بالنسبة لشبكة الواي فاي حيث ستجد شبكة مماثلة وأسفلها اسم كرت الشبكة، فما قمنا به في البداية هو للشبكة الخاصة بكابل الإنترنت السلكي، لكون اللاب توب متاح بها الخيارين.
×
×
  • أضف...