كل الأنشطة
- الساعة الماضية
-
Mohamed Amr17 اشترك بالأكاديمية
-
Nana Adel اشترك بالأكاديمية
-
حل واجبات و بحوث جامعية و مشاريع تخرج اعداد رسائل الماجستير والدكتوراة اشترك بالأكاديمية
-
خالد عيادة اشترك بالأكاديمية
-
Ahmed Hamdy45 اشترك بالأكاديمية
- اليوم
-
ناصر السيد اشترك بالأكاديمية
-
روان العنزي6 اشترك بالأكاديمية
-
وعليكم السلام ورحمة الله وبركاته، صباح الخير هذه مشكلة معروفة، وغالبًا ليست تعليقًا حقيقيًا بل بسبب إعداد أو خدمة غير مفعّلة في ويندوز. سأعطيك الحلول بالترتيب، لا تنتقل لخطوة قبل التي قبلها. أولًا: تأكد أنك تشغّل الأمر كمسؤول افتح PowerShell أو CMD: اضغط بزر الفأرة الأيمن اختر: Run as Administrator ثم نفّذ: wsl --install إذا لم يكن كمسؤول، سيبقى على 0%. ثانيًا: تأكد من إصدار ويندوز نفّذ: winver يجب أن يكون: Windows 10 إصدار 2004 أو أحدث أو Windows 11 إذا الإصدار قديم، التثبيت سيتوقف. ثالثًا: فعّل الميزات المطلوبة يدويًا أحيانًا الأمر wsl --install يفشل بصمت. نفّذ هذه الأوامر واحدًا واحدًا (كمسؤول): dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart ثم: dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart بعدها: أعد تشغيل الجهاز (إجباري) رابعًا: تحقق من تفعيل المحاكاة الافتراضية ادخل إلى: Task Manager Performance CPU ابحث عن: Virtualization: Enabled إن كانت Disabled: فعّلها من BIOS (اسمها غالبًا: Intel VT-x أو AMD-V) بدونها سيتوقف التثبيت. خامسًا: جرّب التثبيت بدون التحميل التلقائي بعد إعادة التشغيل: wsl --set-default-version 2 ثم نزّل توزيعة يدويًا من Microsoft Store: Ubuntu 20.04 أو 22.04 وشغّلها يدويًا. سادسًا: إن بقي على 0% (حل نهائي) أحيانًا المشكلة من Windows Update. نفّذ: net stop wuauserv net start wuauserv ثم أعد المحاولة. لماذا يظهر 0% ولا يتحرك؟ لأن: خدمة مطلوبة غير مفعلة أو Virtualization مغلقة أو PowerShell ليس كمسؤول أو Windows Update معطّل
-
وعليكم السلام ورحمة الله وبركاته، صباح النور سؤالك في مكانه، والإجابة المختصرة: نعم، WSL في الأصل يعمل كسطر أوامر مثل CMD، لكن يمكن تشغيل واجهة رسومية عليه. سأوضح الأمر بشكل منظم. أولًا: الشكل الافتراضي لـ WSL عند فتح WSL: تحصل على Terminal فقط تتعامل بالأوامر (مثل Linux تمامًا) يشبه CMD أو PowerShell من حيث الشكل، لكن الأوامر هي أوامر لينكس هذا هو الاستخدام الأساسي والأكثر شيوعًا. ثانيًا: هل توجد واجهة رسومية (GUI)؟ نعم، لكن ليست مفعّلة افتراضيًا. الخيار الأفضل: WSLg (في Windows 11) إذا كنت تستخدم Windows 11: الواجهة الرسومية مدمجة رسميًا يمكنك تشغيل برامج Linux الرسومية مباشرة مثال: sudo apt install gedit gedit سيظهر برنامج بواجهة رسومية عادية مثل أي برنامج ويندوز. ثالثًا: في Windows 10 لا توجد واجهة رسومية مدمجة، لكن يمكن إضافتها. الطريقة: تثبيت خادم عرض (X Server) مثل: VcXsrv Xming ضبط متغير DISPLAY تشغيل البرامج الرسومية يدويًا هذه الطريقة: تعمل لكنها أبطأ إعدادها متعب للمبتدئ رابعًا: هل تحتاج GUI فعلًا؟ في معظم الحالات: لا. WSL يُستخدم أساسًا من أجل: Git Node / Python Docker Flutter تشغيل السيرفرات أوامر لينكس كل هذا يتم أفضل وأسرع عبر الطرفية. خامسًا: بديل مريح استخدام: Windows Terminal يمنحك: واجهة أجمل Tabs تشغيل WSL و PowerShell و CMD في مكان واحد الخلاصة WSL افتراضيًا = سطر أوامر في Windows 11: واجهة رسومية مدمجة (WSLg) في Windows 10: ممكن لكن غير عملي
-
الخيار الأفضل فعلًا: الهاتف الحقيقي (Real Device) لماذا الهاتف الحقيقي؟ لا يستهلك RAM أو CPU إضافي أسرع من أي محاكي يعمل على أي جهاز ضعيف هو ما يستخدمه المحترفون أيضًا 1) تجهيز الهاتف (مرة واحدة فقط) تفعيل خيارات المطوّر افتح الإعدادات حول الهاتف اضغط على رقم الإصدار 7 مرات ستظهر رسالة “تم تفعيل خيارات المطور” تفعيل USB Debugging الإعدادات → خيارات المطوّر فعّل USB Debugging عند توصيل الهاتف سيظهر إشعار “السماح بتصحيح USB” → وافق 2) تجهيز الكمبيوتر (بدون Android Studio) تثبيت Flutter SDK فك الضغط في مسار بسيط: C:\flutter أضف: C:\flutter\bin إلى متغير البيئة PATH تحقق: flutter --version 3) تثبيت Android SDK فقط (خفيف جدًا) أنت تحتاج Android SDK وليس Android Studio. الطريقة الرسمية والخفيفة: حمّل Command Line Tools فقط من موقع Android فك الضغط في: C:\Android\Sdk المسار النهائي يكون مثل: C:\Android\Sdk\cmdline-tools\latest ثبّت الأدوات الأساسية: sdkmanager "platform-tools" "platforms;android-34" "build-tools;34.0.0" 4) التأكد من الإعداد نفّذ: flutter doctor سترى: Flutter ✔ Android toolchain ✔ Android Studio ✖ (وهذا طبيعي) 5) تشغيل التطبيق على الهاتف وصّل الهاتف بالـ USB نفّذ: flutter devices سيظهر: Android SDK built for arm64 • device-id • android-arm64 شغّل التطبيق: flutter run 6) العمل بدون أي محاكي أو برامج إضافية Hot Reload يعمل؟ نعم، يعمل بالكامل. Debugging؟ print() logs عبر: flutter logs بناء APK: flutter build apk 7) هل يمكن استخدام Emulator بدون Android Studio؟ نظريًا ممكن، عمليًا لا يُنصح. لأن: يحتاج ملفات كثيرة من Android Studio استهلاك RAM عالي إعداد معقد وغير مستقر 😎 هل يوجد شيء مدمج في الجهاز؟ لا. لا Windows ولا Linux ولا macOS يوفر محاكي أندرويد مدمج. 9) متى تحتاج Android Studio فعلًا؟ فقط إذا: جهازك قوي تريد UI Debugger متقدم أو تصميم واجهات بالسحب غير ذلك، غير ضروري للمبتدئ.
- البارحة
-
السيرفر الذي يستضيف تطبيقك يقوم بدور العميل الذي يتحدث مع خادم البريد SMTP Server مثل Gmail أو Outlook أو خدمات مثل SendGrid، كالتالي: المستخدم يضغط تسجيل والمتصفح يرسل طلب لسيرفر Render. تطبيقك يخزن البيانات في SQLite. تطبيقك يحاول فتح اتصال مع خادم الإيميل SMTP عبر الإنترنت. ينتظر الرد من خادم الإيميل، هل تم الإرسال؟ بعد نجاح الإرسال، يعود التطبيق ليرسل رسالة تم التسجيل للمستخدم. أثناء ذلك من الممكن حدوث أخطاء مختلفة، منها حساب Render المجاني يقطع الطلب بعد 30 ثانية تقريبًا، وفي حال الاتصال بـ SMTP يستغرق 30 ثانية ستحدث مشكلة، ولو الكود لديك متزامن Synchronous أي الكود يعمل سطرًا تلو الآخر وينتظر اكتمال الإرسال قبل الرد فسيحدث بطيء. كذلك الإشتراك المجاني يوفر موارد، والسيرفر يدخل في وضع السبات أي النوم بعد 15 دقيقة من عدم الاستخدام، لذا أول طلب بطيء. الأفضل هو استخدام HTTP API، عبر خدمات مثل SendGrid, Mailgun, Brevo والتي توفر مكتبات تسمح لك بإرسال الإيميل عبر بروتوكول HTTP الذي يعمل على Port 80/443. وبدلاً من إعدادات SMTP في settings.py في جانغو أو config في Flask، قم بتثبيت مكتبتهم واستخدم الـ API Key. وبها اشتراكات مجانية لكن الاستخدام محدود.
-
Mohamed Saleh19 اشترك بالأكاديمية
-
Aay Abdo اشترك بالأكاديمية
-
Yarah Edfawi بدأ بمتابعة Huda Almashta
-
Yarah Edfawi اشترك بالأكاديمية
-
تطبيق ويب ( فلاسك - دجانغو ) يتم فيه انشاء مستخدم وتسجيل دخول وتحقق وكل شيئ يعمل مع انشاء اي نمازج وتعديلها وحذفها.... الا اذا كان الطلب اذا تحقق ينتج عنه إرسال ايميل فهناك مشكله تواجهني ان الطلب يتأخر حتى يتم إيقافه وارجاع 502 ... نريد ان نعرف تفاصيل أكثر، الاستضافه المستخدمه هي free render host وقاعده بيانات sqlite.
- 1 جواب
-
- 1
-
-
أسفل اليمين في برنامج VS Code ستجدي اسم جهاز مكتوب سواء Windows أو Chrome أو No Device، اضغطي على الاسم، وستظهر لكِ قائمة بالأجهزة المتصلة في الأعلى. اختاري الهاتف من القائمة، ثم توجهي إلى ملف lib/main.dart واضغطي على زر F5 من لوحة المفاتيح لتشغيل التطبيق. ولو أردتي التشغيل من خلال منفذ الأوامر، فاكتبي التالي في التيرمنال في vscode: flutter run ولو لديكِ جهاز متصل سيطلب منك اختيار الجهاز من خلال لوحة المفاتيح. وعند التشغيل لأول مرة، سيستغرق الأمر بعض الوقت لبناء التطبيق وتثبيته على الهاتف، لذا يرجى الانتظار حتى تظهر شاشة التطبيق على هاتفك.
-
السلام عليكم ورحمة الله وبركاته مساء الخير ظهر الهاتف بعد كتابة Flutter devices كيف اشغله على vc code ؟
- 4 اجابة
-
- 1
-
-
عبدالباسط ابراهيم بدأ بمتابعة سؤال بخصوص الدرس
-
عموماً لا يجب عليك حفظ الأكواد. البرمجة ليست مثل حفظ نص أو ما إلى ذلك . البرمجة هي مهارة تعتمد على الفهم والممارسة، وليس على الحفظ فبدلاً من الحفظ، ركز على الفهم لكل سطر تكتبه فعندما تكتب كوداً من الدرس، اسأل نفسك "لماذا كتبنا هذا السطر؟ ماذا يفعل بالضبط؟ ماذا سيحدث لو غيرته أو حذفته؟". هذه الأسئلة ستجعلك تفهم المنطق وليس فقط تنسخ الكود. وأيضاً جرب أن تغير في الأكواد مثل أسماء المتغيرات، أو حتى ترتيب بعض الأسطر لترى ماذا سيحدث. عندما يظهر خطأ، حاول أن تفهم لماذا حدث. هذه التجارب تعلمك أكثر من مئة مرة نسخ صحيح للكود. والأفضل بعد أن تفهم مفهوماً معيناً من الدرس، مثلاً الحلقات التكرارية، حاول أن تكتب كوداً مختلفاً تماماً باستخدام نفس المفهوم.
-
لتفهم وظيفة هذا الكود لنحاول تفكيكه أولاً فالجزء <img src="x:x" ينشئ وسم صورة HTML مع مصدر غير صحيح أو غير موجود. لذلك سيفشل المتصفح في تحميل الصورة. والجزء onerror=alert('xss') هنا يكمن الخطر الحقيقي. عندما يفشل تحميل الصورة، يتم تشغيل حدث onerror الذي يحتوي على كود JavaScript (في هذه الحالة alert('xss')). هذا يعني أن كود JavaScript سينفذ في المتصفح . وفي هذا المثال البسيط، الكود يعرض فقط رسالة تنبيه. لكن في الهجمات الحقيقية، يمكن للمهاجم أن يستبدل alert('xss') بأكواد أكثر خطورة مثل سرقة ملفات تعريف الارتباط (cookies)، إعادة توجيه المستخدم لمواقع ضارة، أو سرقة بيانات حساسة. ولحماية تطبيقات الويب من مثل هذه الهجمات، يجب علىك تنظيف المدخلات أي يجب تحويل الرموز الخاصة مثل <, >, ", ' إلى HTML entities واستخدام Content Security Policy
-
وعليكم السلام ورحمة الله وبركاته. كما تم التوضيح في التعليق السابق فإنه يمكنكي تشغيل برامج لينكس بواسطة WSLg بدون أي مشكلة ولكن أعتقد أن الواجهة الرسومية المهمة بالنسبة لكي هي فتح VS Code بواجهته الكاملة ، ومتصلاً بنظام اللينكس. code .
-
وعليكم السلام ورحمة الله وبركاته. ربما تكون المشكلة في الإنترنت لديك ولذلك يمكنك محاولة إلغاء الأمر وإعادة المحاولة عن طريق الضغط على Ctrl + C في لوحة المفاتيح لإيقاف العملية ثم أعد كتابة الأمر wsl --install واضغط Enter. وإذا لم يتم حل المشكلة فيعتمد أمر WSL على خدمة "Windows Update" لتنزيل الملفات. إذا كانت هذه الخدمة متوقفة، سيبقى التحميل عند 0%. ولذلك يمكنك فتح services.msc ثم ابحث في القائمة عن Windows Update ثم حاول تشغيلها والتثبيت مرة أخرى.
- آخر أسبوع
-
كيفية جعل مقالات مدونة بلوجر متعددة اللغات: دليل SEO شامل 2025 المقدمة: لماذا تحتاج مدونة متعددة اللغات؟ في عالم الإنترنت المتوسع، أصبح الوصول إلى جمهور عالمي ضرورة وليس رفاهية. إن جعل مدونة بلوجر متعددة اللغات يفتح أمامك أبوابا واسعة للوصول إلى ملايين القراء من مختلف الدول والثقافات. وفقا لإحصائيات حديثة، فإن أكثر من 75% من مستخدمي الإنترنت يفضلون تصفح المحتوى بلغتهم الأم، مما يعني أن المحتوى أحادي اللغة يفقدك فرصا هائلة للنمو والانتشار. تعتبر منصة بلوجر من أشهر منصات التدوين المجانية التي توفرها جوجل، وتتميز بسهولة الاستخدام والتكامل المباشر مع خدمات جوجل الأخرى. ومع ذلك، فإن جعلها متعددة اللغات يتطلب فهما عميقا لإعدادات السيو والتقنيات المناسبة. SEO بالعربي
-
شرح أداة تحويل الصور أونلاين إلى صيغة Webp - دليل شامل 2025 في عالم الويب الحديث، تعتبر سرعة تحميل الموقع من أهم عوامل تحسين محركات البحث وتجربة المستخدم. ومع تطور التقنيات، ظهرت صيغة Webp كحل مثالي لتقليل حجم الصور مع الحفاظ على جودتها العالية. في هذا المقال الشامل، سنشرح بالتفصيل أداة تحويل الصور أونلاين إلى صيغة Webp، وكيفية استخدامها لتحسين أداء موقعك الإلكتروني. ما هي صيغة Webp؟ صيغة Webp هي تنسيق صور حديث تم تطويره بواسطة شركة جوجل في عام 2010، وهي مصممة خصيصاً لاستخدامها على الويب. تعتمد هذه الصيغة على تقنيات ضغط متقدمة توفر تقليلاً كبيراً في حجم الملفات مع الحفاظ على جودة الصورة الأصلية أو مع فقدان بسيط غير ملحوظ للعين البشرية. تم بناء Webp على أساس تقنية ضغط الفيديو VP8، مما يتيح لها تحقيق معدلات ضغط أعلى بكثير من الصيغ التقليدية. وفقاً لدراسات جوجل الرسمية، تستطيع صيغة Webp تقليل حجم ملفات JPEG بنسبة تصل إلى 34% وملفات PNG بنسبة تصل إلى 26% مع الحفاظ على نفس مستوى الجودة البصرية. SEO بالعربي
-
أكود تحسين المحتوى لنتائج Google SGE | دليل شامل 2025 ما هو Google SGE؟ Google SGE (Search Generative Experience) هو نظام البحث الجديد من جوجل الذي يعتمد على الذكاء الاصطناعي التوليدي لتقديم إجابات شاملة ومفصلة مباشرة في صفحة نتائج البحث. يُعد هذا التحول الأكبر في تاريخ محركات البحث منذ ظهورها. 💡 نقطة مهمة: Google SGE لا يحل محل نتائج البحث التقليدية، بل يُضاف فوقها كطبقة ذكية تُلخص المعلومات من مصادر متعددة. يعتمد SGE على نماذج الذكاء الاصطناعي التوليدي من جوجل لفهم سياق الاستفسارات وتقديم إجابات متكاملة تجمع بين عدة مصادر موثوقة. SEO بالعربي
-
الفرق الجوهري يكمن في الهدف من المخطط فأحدهما يركز على البرمجة (Logic) والآخر يركز على البيانات (Data). أولا Class Diagram : يركز على البنية البرمجية للكود (OOP). يتكون من Classes (فئات) وMethods (دوال) وAttributes (متغيرات). يوضح السلوك (Behavior) عبر الدوال (Functions/Methods). نستخدمه نحن المبرمجين لبناء ال Classes والربط بينها. ثانيا ER Diagram (Entity Relationship) : يركز على بنية قاعدة البيانات وتخزين المعلومات. يتكون من Entities (كيانات) و Attributes (صفات) وRelationships (علاقات). لا يوضح سلوك بل هو مجرد هيكل ثابت للبيانات (Static Data Structure). يستخدمه مصمم قاعدة البيانات (DB Admin) لبناء الجداول (Tables). نعم بالفعل يجب إضافة Activities و Fragments و Services والسبب هو انه في برمجة الأندرويد ال Activity هي في النهاية Class مثلا MainActivity extends AppCompatActivity هي جزء لا يتجزأ من هيكلية الكود بل هي ال Entry Point والمسؤولة عن إدارة واجهة المستخدم. وبخصوص كيفية التمثيل: يتم تمثيل ال Activity ك Class عادي. يحتوي على الدوال الخاصة به مثل onCreate() و onStart(). يحتوي على علاقات (Associations) مع ال Classes الأخرى مثل ال Adapters أو ال ViewModels. نظرياً الإجابة نعم لتوضيح الفكرة ولكن تقنيا لا يفضل ذلك لأن المفهوم مختلف. وهذا بسبب أن : ال ER Diagram صمم لقواعد البيانات العلائقية (SQL) التي تعتمد على الجداول (Tables) والمفاتيح الأجنبية (Foreign Keys). ال Firebase سواء Realtime DB أو Firestore هي قواعد بيانات NoSQL تعتمد على المستندات (Documents) والمجموعات (Collections) أو شجرة JSON. والبديل الأفضل هو استخدام ما يسمى ب Schema Diagram أو Collection-Document Model. فبدلا من رسم جداول يمكن رسم مربعات تمثل ال Collections وداخلها مستندات توضح حقول البيانات (JSON Structure). وهذا يعكس الواقع الفعلي للبيانات في Firebase بدقة أكبر من ERD التقليدي. تحويل الكود إلى مخطط تتابع (Sequence Diagram) يهدف لفهم سيناريو محدد مثلا عملية تسجيل الدخول. والقواعد الأساسية للتحويل: ال Classes تصبح Lifelines: كل Object أو Class يتم استدعاؤه في السيناريو يوضع في الأعلى ك (Lifeline). استدعاء الدالة يصبح رسالة (Message): عندما يقوم Class A بمناداة دالة في Class B مثلا user.getName() نرسم سهما متصلا من A إلى B. اسم السهم هو اسم الدالة. القيمة المرجعة (Return Value): نتيجة الدالة تمثل بسهم متقطع (Dashed Arrow) يعود للخلف. الشروط (If/Else) تصبح Alt Fragment: يتم وضع إطار (Frame) يسمى Alt. الجزء العلوي يمثل if (condition) والجزء السفلي يمثل else. الحلقات التكرارية (Loop/For/While) تصبح Loop Fragment: يتم وضع إطار يسمى Loop حول العمليات التي تتكرر.
- 2 اجابة
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته ليس هناك مشكلة إطلاقاً في طلب بعض الأسئلة من ال AI كما تفعل وفي فهم ما تريده . ولكن يفضل حالياً عدم الإعتماد عليه في حل التمارين التي تريدها أو إنشاء المشاريع بمساعدته (لاحقاً يعتبر من المهم استخدامه ) حيث يجب أن تعتمد على حل المشكلات بنفسك في مرحلة التعلم . وعموماً بالنسبة لسؤالك فليس هناك مشكلة وبالنسبة لما لا تستوعبه من المحاضرات فيمكنك طرح سؤالك في أي وقت وسيتم الإجابة عليه من المدربين هنا
- 1 جواب
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته. بما أن النموذج يتحسن تدريجياً مع كل دورة تدريبية epoch. في الوضع الطبيعي، يستمر النموذج في التدريب حتى يكمل العدد الكامل من الدورات التي حددتها له، حتى لو وصل إلى الأداء المطلوب في وقت مبكر. ولكن هذا الكود يطبق مفهوماً يسمى Early Stopping أو الإيقاف المبكر فيعمل على توفير الوقت والموارد الحاسوبية. عندما يصل نموذجك إلى الأداء المستهدف، فلا حاجة لمواصلة التدريب. هذا يوفر وقتاً حاسوبياً ثميناً، وخاصة عند العمل على مجموعات بيانات كبيرة أو نماذج معقدة قد تستغرق ساعات أو حتى أيام للتدريب الكامل. وأيضاً الوقاية من مشكلة تسمى Overfitting أو الإفراط في التلاؤم.
- 3 اجابة
-
- 1
-
-
المشكلة لديك في ملف app\images\[id]\page.tsx حيث لاحظ أنك تستخدم ال currentUser لعرض التعليقات مما يجعل أن التعليقات الصور وإسم المستخدم تظهر بالمستخدم الحالي وهذا هو سبب المشكلة . في ملف app\models\Comment.ts يجب أن نقوم بإضافة نموذج user ليتم إعادته مع كل تعليق والذي يحوي إسم الشخص الذي قام بالتعليق وصورة ملفه الشخص وهذا هو كود الملف بعد التعديل : import mongoose from "mongoose"; interface IComment { content: string; imageId: mongoose.Schema.Types.ObjectId; userId: mongoose.Schema.Types.ObjectId; } const commentSchema = new mongoose.Schema<IComment>( { content: { type: String, required: true, }, imageId: { type: mongoose.Schema.Types.ObjectId, required: true, ref: "Image", }, userId: { type: mongoose.Schema.Types.ObjectId, required: true, ref: "User", }, }, { timestamps: true ,toJSON: { virtuals: true }} ); commentSchema.virtual('user', { ref: 'User', localField: 'userId', // Field in the current schema foreignField: '_id', // Field in the referenced schema justOne: true // For a single document reference }); const Comment = mongoose.models.Comment || mongoose.model("Comment", commentSchema); export default Comment; الآن في ملف app\api\comments\route.ts سطر 14 يجب أن نعيد النموذج الذي قمنا بتعريفه مع الإستعلام ليكون لدينا المستخدم مع كل تعليق هكذا : const comments = await Comment.find().populate("user", "fullname avatar").sort({ createdAt: -1 }); الآن في ملف app\images\[id]\page.tsx سطر 182 و 183 و 190 يجب تغير currentUser إلى c.user هكذا : أولا سطر 182 : src={c.user?.avatar || "https://res.cloudinary.com/dgagbheuj/image/upload/v1763194734/avatar-default-image_yc4xy4.jpg"} ثانيا سطر 183 : alt={c.user?.fullname || "Anonymous"} ثالثا سطر190 : {c.user?.fullname || "Anonymous"}
-
شريت استضافة و الموقع الذي شريت منه يقدم استضافة و دومين. اريد ان اجرب اذا موقعي امن, هل يصلح ان اجرب ادوات التهكير على موقعي لاجل اكتشف الثغارت الامنية؟ ام هذا يعتمد على مزود الاستضافة اذا املك هذه الصلاحيات؟؟
-
سأجيبك بشكل منظّم ومباشر: أولًا: الفرق بين Class Diagram و ER Diagram 1. Class Diagram (UML) يُستخدم لتمثيل تصميم النظام البرمجي نفسه. يمثّل: الكلاسات الخصائص (Attributes) الدوال (Methods) العلاقات (Inheritance – Association – Aggregation – Composition) يجيب عن سؤال: كيف صُمّم الكود؟ وكيف تتفاعل الكائنات مع بعضها؟ يُستخدم غالبًا في: تصميم التطبيقات توثيق الكود شرح الـ Architecture 2. ER Diagram (Entity Relationship) يُستخدم لتمثيل قاعدة البيانات فقط. يمثّل: الجداول (Entities) الأعمدة (Attributes) العلاقات (1-1، 1-N، N-M) المفاتيح الأساسية والأجنبية يجيب عن سؤال: كيف تُخزَّن البيانات؟ وكيف ترتبط ببعضها؟ ثانيًا: عند رسم Class Diagram لتطبيق Android هل نضيف فقط Java Classes؟ لا. القاعدة الصحيحة: ترسم الكلاسات المنطقية المهمّة فقط. ماذا نضيف؟ Models (User, Product, Order…) Managers / Services Repositories ViewModels (في MVVM) هل نضيف Activities؟ نعم إذا كانت جزءًا من منطق التطبيق لا تضف كل Activity تلقائيًا الـ Activity: تمثل Controller / View تُضاف فقط إذا كان لها: منطق واضح تفاعل مهم مع الكلاسات الأخرى لا ترسم: Activities بسيطة لعرض UI فقط ثالثًا: هل يمكن استخدام ER Diagram مع Firebase؟ Firebase (Firestore / Realtime DB): ليست Relational Database لا توجد جداول ولا Foreign Keys هل نستخدم ER Diagram؟ ليس بشكل كلاسيكي لكن يمكن استخدام: Data Model Diagram أو ER مبسّط بدون علاقات صارمة تمثّل: Collections Documents العلاقات المنطقية (Reference أو Embedded) إذن: ER Diagram التقليدي ❌ Data Modeling Diagram ✔ رابعًا: تحويل الكود إلى Sequence Diagram (SD) (أعتقد أنك تقصد SD وليس SQD) القاعدة: Sequence Diagram لا يُرسم آليًا من الكود بل يُستخرج من سيناريو استخدام (Use Case) الخطوات: اختر سيناريو مثال: “تسجيل مستخدم” حدّد الأطراف: User → Activity → ViewModel → Repository → Database ارسم ترتيب الرسائل (method calls) لا ترسم كل التفاصيل، فقط التفاعل المهم خامسًا: مراجع موثوقة UML: UML Distilled – Martin Fowler Head First Object-Oriented Analysis & Design Class & ER: Database System Concepts – Silberschatz Lucidchart UML & ER Guides Android Architecture: Android Developers – Architecture Components MVVM Pattern for Android
- 2 اجابة
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته ما شاء الله، المشروع واضح أنه مكتمل ومنفّذ بعناية، والـ README مرتب ويعكس فهمًا جيدًا للـ Full-Stack. سأعطيك مراجعة عملية ومهنية كما لو كانت Code Review / تقييم مشروع. التقييم العام المشروع ناجح كـ تطبيق Full-Stack تعليمي/تطبيقي قوي، ويغطي دورة حياة كاملة: Auth CRUD رفع ملفات REST API Frontend حديث دعم RTL والعربية لو قُدّم هذا المشروع كمشروع تخرج أو اختبار توظيف Junior–Mid فسيُقيَّم بشكل إيجابي جدًا. نقاط القوة (Strengths) 1. اختيار التقنيات مناسب جدًا Express + SQLite: ممتاز للتعلّم والنماذج الأولية React + Vite: حديث وسريع REST واضح ومنفصل عن الواجهة استخدام Multer لرفع الصور بشكل صحيح هذا يدل على فهم حقيقي وليس مجرد “تركيب مكتبات”. 2. بنية المشروع واضحة تقسيم: server/ client/ مع README يشرح: التشغيل المنافذ المتطلبات API endpoints هذه نقطة مهمّة جدًا وغالبًا ما تُهمل من المبتدئين. 3. الميزات منطقية وقريبة من الواقع تسجيل كمستخدم أو طبيب ملف شخصي صور متعددة مع حد أقصى بحث صفحة تفاصيل مع خريطة هذا ليس CRUD سطحي، بل سيناريو استخدام حقيقي. 4. دعم العربية و RTL قلة من المشاريع التعليمية تهتم بهذا، ويحسب لك: اتجاه صحيح تجربة مستخدم مناسبة تصميم متجاوب ملاحظات تحسين (Important Improvements) 1. الأمان (مهم جدًا) بما أن التطبيق طبي: تأكد من: Hash كلمات المرور (bcrypt) عدم إعادة كلمة المرور في أي Response حماية رفع الصور (النوع والحجم) عدم كشف مسارات النظام إن لم يكن ذلك موجودًا، فهو أول شيء يجب إضافته. 2. الجلسات و Auth استخدام الجلسات جيد، لكن للتطوير المستقبلي: فكّر لاحقًا في: JWT Refresh Tokens فصل Auth middleware بوضوح حاليًا مقبول جدًا لمستوى المشروع. 3. قاعدة البيانات SQLite ممتاز للتعلّم، لكن: لو أردت نقل المشروع للإنتاج: PostgreSQL أو MySQL يفضّل وجود: migrations constraints أوضح (UNIQUE، NOT NULL) 4. فصل المنطق (Clean Code) إن كان كل شيء في index.js: يُفضّل فصل: routes controllers services database layer هذا يرفع المشروع مستوى كامل. 5. Frontend اقتراحات بسيطة: Handling أفضل للأخطاء (loading / empty states) Form validation أوضح إعادة استخدام المكوّنات (Cards / Inputs) واضح أنك واعٍ بهذا، فقط تحسين تدريجي. هل استخدام TRAE AI يقلل من قيمة المشروع؟ لا، بشرط واحد فقط: أنك تفهم كل سطر كود وتستطيع شرحه. وبناءً على وصفك للمشروع وREADME: واضح أنك تفهم ما بنيته، وهذا هو المهم. في المقابلات لا يسألون: هل كتبت كل سطر بيدك؟ بل: هل تفهم لماذا هذا الحل؟ وهل تستطيع تعديله؟ هل المشروع مناسب للعرض؟ نعم، وبقوة: GitHub Portfolio LinkedIn تقديم لوظائف Junior / Intern / Frontend / Full-Stack لو أضفت: Live demo Screenshots فيديو قصير سيصبح ممتازًا. الخلاصة مشروعك: متكامل مفهوم عملي منظم ويعكس فهمًا حقيقيًا للمسار لو طُلب مني تقييمه: 8.5 / 10 لمستوى تعليمي متقدم.
- 2 اجابة
-
- 1
-
-
عند إضافة تعليق على صورة معيّنة، كانت جميع التعليقات تظهر بنفس: الاسم (fullname) صورة الحساب (avatar) وذلك بغض النظر عن صاحب التعليق، أي أنّ كل التعليقات كانت تُعرض وكأنها كُتبت من قبل المستخدم الحالي (currentUser). سبب المشكلة المشكلة لم تكن في إضافة التعليق نفسها، بل في طريقة جلب وعرض التعليقات: في جهة الخادم (API) عند جلب التعليقات من قاعدة البيانات، كان يتم إرجاع بيانات التعليق فقط (مثل النص و userId)، بدون جلب بيانات المستخدم المرتبط بكل تعليق. في جهة الواجهة (page.tsx) عند عرض التعليقات، كان يتم استخدام: currentUser.fullname currentUser.avatar لكل تعليق، بدلًا من استخدام بيانات صاحب التعليق الحقيقي. وبالتالي، جميع التعليقات كانت تُعرض ببيانات المستخدم الحالي فقط. الحل 1. تعديل API لجلب بيانات المستخدم مع كل تعليق في ملف route.ts الخاص بالتعليقات، تم تعديل الاستعلام ليشمل بيانات المستخدم باستخدام populate: const comments = await Comment.find({ imageId }) .populate("userId", "fullname avatar") .sort({ createdAt: -1 }); بهذا الشكل، كل تعليق سيحتوي على: اسم صاحب التعليق صورة الحساب الخاصة به 2. تعديل واجهة العرض لاستخدام بيانات صاحب التعليق في ملف images/[id]/page.tsx، تم تعديل طريقة عرض التعليقات بحيث لا تعتمد على currentUser، وإنما على بيانات المستخدم المرتبطة بكل تعليق: بدلًا من: <img src={currentUser.avatar} /> <p>{currentUser.fullname}</p> تم استخدام: <img src={c.user?.avatar} /> <p>{c.user?.fullname}</p> حيث c هو كائن التعليق، و user هو المستخدم الذي تم جلبه عبر populate. النتيجة كل تعليق أصبح يُعرض باسم وصورة صاحب التعليق الحقيقي. لم تعد بيانات المستخدم الحالي تتكرر على جميع التعليقات. أصبح سلوك النظام مطابقًا للسلوك المتوقع في تطبيق مثل Pinterest. ملاحظة مهمة هذه المشكلة تُعد مثالًا واضحًا على أهمية: فهم العلاقة بين البيانات (Relations) عدم الخلط بين current user و comment owner جلب البيانات الصحيحة من الـ API بدل تعويضها في الواجهة حلّك يدل على فهم جيد للـ Back-end + Front-end data flow، وهو مستوى ممتاز لمشروع عملي. pinterest-clone_new.rar
-
مرحبا بناءً على المعطيات التي ذكرتها (خلفية علوم حاسوب، معرفة سابقة بأساسيات بايثون، وتفرغ بمعدل 40 ساعة أسبوعيًا)، فإن المدة المتوقعة لإنهاء الأربعة مسارات الأساسية بشكل جاد والاستعداد لاجتياز الشهادة تكون كالتالي: المدة المتوقعة من 6 إلى 8 أسابيع كحد أقصى. التقسيم المنطقي: أساسيات بايثون: 1 – 1.5 أسبوع (بما أنك تملك خلفية سابقة، سيكون الهدف المراجعة والترسيخ مع التطبيق) البرمجة كائنية التوجه + التعامل مع الملفات: 1 أسبوع تطوير تطبيقات الويب باستخدام Django: 2 – 3 أسابيع مشروع المتجر الإلكتروني + الربط والتطبيق العملي: 2 أسابيع هذا التقسيم يفترض: دراسة يومية منتظمة تطبيق عملي مع كل درس عدم الاكتفاء بالمشاهدة فقط تنفيذ المشروع النهائي بنفسك دون نسخ جاهز هل هذا الجدول واقعي؟ نعم، واقعي جدًا في حال: التزمت بـ 6–8 ساعات يوميًا فعلية ركزت على المسارات المطلوبة فقط لم تتشتت بدورات أو مصادر خارجية تعاملت مع المشروع النهائي كاختبار حقيقي بخصوص الاستعداد للشهادة إذا أنهيت المسارات الأربعة خلال هذه المدة مع: فهم حقيقي للكود تنفيذ المشروع بنفسك مراجعة المفاهيم الأساسية (Django – ORM – Templates – Auth) فستكون جاهزًا للتقدم للشهادة مباشرة دون الحاجة لفترة إضافية طويلة. ملاحظة مهمة تطبيق قانون Parkinson’s Law فكرة ممتازة، لكن احرص أن يكون الضغط: على الالتزام والتنفيذ لا على تجاوز الفهم أو القفز على التطبيق الخلاصة مع خلفيتك الحالية و40 ساعة أسبوعيًا: 6 أسابيع: إنجاز قوي وسريع 8 أسابيع: إنجاز مريح ومتين جدًا وأي مدة أطول من ذلك في حالتك غالبًا تكون إطالة غير ضرورية.
- 2 اجابة
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته . هذا الكود يمثل تطبيق مخصص لتقنية مهمة جدا في تعلم الآلة تسمى الإيقاف المبكر (Early Stopping). وأهمية هذا الكود تكمن في التحكم في دورة حياة تدريب النموذج بناء على مقاييس محددة وتتلخص أهميته في النقاط التالية: توفير الوقت والموارد الحاسوبية (Efficiency) فبدلا من الاستمرار في تدريب النموذج لعدد محدد مسبقا من ال Epochs يقوم هذا الكود بإيقاف التدريب فورا بمجرد الوصول للهدف المطلوب مثلا دقة 98%. مثال: إذا وصل النموذج لدقة 98% في ال Epochs رقم 10 فلا داعي لإضاعة الوقت وموارد وحدة المعالجة الرسومية (GPU) في تدريبه لل 90 Epochs المتبقية. منع ال (Overfitting) إن ال Overfitting هي واحدة من أكبر مشاكل تدريب النماذج حيث يبدأ النموذج في حفظ البيانات بدلا من فهم الأنماط العامة إذا استمر التدريب لفترة طويلة جدا بعد الوصول لأفضل أداء ولهذا بإيقاف التدريب عند نقطة جيدة بما فيه الكفاية مثل 98% فإنك تحمي النموذج من أن يبدأ في تدهور أدائه على البيانات الجديدة (Validation Data). وإليك شرح الكود كل سطر على حدى : الوراثة (tf.keras.callbacks.Callback): الكود يرث من فئة Callback الخاصة ب Keras وهذا يسمح للكود بالتدخل في عملية التدريب في نقاط محددة مثل بداية التدريب ونهاية ال Epochs . الدالة on_epoch_end: هذه الدالة يتم استدعاؤها تلقائيا من قبل Keras في نهاية كل دورة تدريبية (Epoch) والمتغير logs يحتوي على نتائج التدريب الحالية مثل الدقة accuracy والخسارة loss. الشرط if logs.get('accuracy') >= 0.98: هنا يتم فحص القاموس logs للبحث عن قيمة الدقة وإذا تجاوزت أو ساوت 98% يتم تنفيذ أمر الإيقاف. أمر الإيقاف self.model.stop_training = True: هذا هو السطر الأهم وهو الذي يرسل إشارة لعملية التدريب (model.fit) بأن تتوقف فورا ولا تكمل باقي ال Epochs المجدولة.
- 3 اجابة
-
- 1
-
