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

محمد عاطف25

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

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

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

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

    154

كل منشورات العضو محمد عاطف25

  1. إن ال base64 هذا ليس تشفير آمن بل هو مجرد encoding عادي أي أنه أى حد يستطيع معرفة عمل decode له وإكتشاف البيانات . أما الإجابة على سؤالك فهي تعتمد تماما على نوع المشروع وطبيعة البيانات. فمثلا لو ال ID لديك متسلسل (auto-increment) وال routes لديك مفتوحة أو محمية بحماية ضعيفة فالمهاجم يستطيع عمل ID enumeration attack بسهولةوالتعرف على الصفحات وإكتشاف الثغرات أو التحكم في المشروع إذا لم يكن مؤمن بشكل كامل. لذلك الأفضل إستخدام UUID هكذا مثلا : $table->uuid('id')->primary(); فأغلب المشاريع الكبيرة حاليا تستخدم UUID + cursor pagination بدون أي قلق من الأمان.
  2. أولا الإنقطاع البسيط مثلا من أسبوع أو أقل لن يؤثر على معلوماتك في البداية ولكن الإنقطاع لمدة أكثر من ذلك ستفقدك المعلومات التي قد إكتسبتها لذلك في البداية ينبغي عليك عجم الإنقطاع لفترة كبيرة لتفادي فقدان المعلومات التي تعلمتها. أيضا تأكد من عدم تخطي أى درس دون فهمه بشكل تام وأيضا تأكد من التطبيق بشكل جيد وكثيرا حتى لا تنسى المعلومات بشكل سريع . فالتطبيق العملي هو من سيجعلك تتذكر الدروس بشكل جيد ومن الممكن أن تستعين بالذكاء الإصطناعي لإعطائك تمارين تستطيع حلها لتثبيت معلوماتك أو حتى المراجعة سريعا على الدروس .
  3. أحسنت مشروع جيد والكود ممتاز . ولكن لاحظ أن الكود كبير جدا من خلال إستخدام كود جافاسكريبت نقي دون أى مكتبات أو غيرها . وهذا المشروع جيد للتعلم ولكنه ليس جيدا كإنشاء مشروع متكامل فقط بإستخدام plain js . يمكنك محاولة إستخدام jquery إذا أردت تعلم javascript بشكل منفرد أو محاولة إستخدام مكتبات تساعدك في تقليل وتحسين حجم الكود لديك.
  4. مرحبا أحمد. إقتراح جيد سأقوم بتوصيله للإدارة للعمل عليه ومحاولة تقديمه في أقرب وقت. حاليا بالفعل تستطيع معرفة إذا شاهدت الدروس أم لا حيث بجانب اسم كل درس في المسارات بالدورة ستجد دائرة زرقاء وعند مشاهدة الدرس تختفي تلك الدائرة : لكن في حال الإنقطاع لمدة تزيد عن أسبوع أو شهر، سيُصعب عليك تتبع أين توقفت، لذا أرجو تدوين أخر درس توقفت عنده في مدونة خاصة بك ولتكن google tasks. أو يمكنك استخدام قالب الدراسة التالي لتخطيط دراستك للدورة، في حال تُفضل استخدام Notion: https://www.notion.com/templates/course-planner-schedule-and-learning-progress ومن خلاله تستطيع قياس مدى تقدمك بالدورة.
  5. حاليا لا توجد أى كوبونات خصم أو عروض على الدورات ولكن يتم دائما من الحين إلى الأخر نزول عروض دورتين بسعر دورة واحدة . ويتم توفير عروض في المناسبات مثل رمضان وأحيانًا في فترة الإجازات الصيفية وأحيانًا في فترة التخفيضات السنوية الخاصة بالجمعة البيضاء، وفي بعض الأحيان يتم توفير كوبونات. ولكن أحيانًا يوجد كوبونات خصم متوفرة أرجو التحدث لمركز المساعدة والسؤال عن ما إن كانت متوفرة أم لا.
  6. غالبا المشكلة بسبب عدم إستخدام ملف .gitignore حيث يجب إنشاء هذا الملف ووضع بداخله المجلدات التي لا تريد إضافتها على git وهي الأكواد والملفات الخاصة بالحزم وغيرها والتي تكون ذات مساحة كبيرة جدا وأعداد ملفات ضخمة وهذا هو سبب عدم رفع جميع الملفات. فمثلا مجلد node_modules لا يجب رفعه حتى لا يأخذ مساحة كبيرة للمشروع وأيضا مجلد venodr وغيرها من الملفات الغير مهمة . ويمكنك البحث على جوجل عن gitignore for من ثم كتابة لغة البرمجة التي تعمل عليها وستجد الإعداد الصحيح للملف للمشاريع وإليك مستودع به قوالب جاهزة لمختلف المشاريع: https://github.com/github/gitignore وبعد إنشائه وتهيئته قم بتنفيذ الأمر التالي لإلغاء تتبع الملفات والمجلدات والبدء من جديد مع الأخذ في الإعتبار إعدادات ملف gitignore: git rm --cached .
  7. ببساطة ال AI Agent (أى وكيل الذكاء الاصطناعي) هو نظام برمجي مستقل (Autonomous) يمكنه مراقبة بيئته، واتخاذ قرارات، وتنفيذ إجراءات لتحقيق أهداف محددة. يمكنك التفكير فيه كأنه موظف رقمي تمنحه مهمة مثل احجز لي رحلة طيران إلى مكان ما الأسبوع القادم بأفضل سعر وهو يقوم بالبحث والمقارنة واتخاذ القرار وحتى إتمام عملية الحجز بنفسه دون تدخل بشري في كل خطوة وأصبح هذا المصطلح شائع جدا في الفترة الأخيرة وخاصة مع تطور النماذج اللغوية الكبيرة (LLMs) التي تمنح هؤلاء الوكلاء قدرة فائقة على الفهم والتخطيط. ودور الـ AI Agent هو تجاوز كونه مجرد أداة" ليصبح شريكاً أو منفذا للمهام وأدواره الرئيسية تشمل: الأتمتة المتقدمة (Advanced Automation): تنفيذ مهام معقدة تتكون من خطوات متعددة مثل إدارة بريدك الإلكتروني بالكامل كالقراءة،والتصنيف والرد والحذف بناء على أهدافك. اتخاذ القرار (Decision-Making): تحليل البيانات المتاحة واختيار أفضل مسار عمل. مثلاً، وكيل في نظام إعلانات يقرر الميزانية المناسبة لعرض إعلان معين. التفاعل مع البيئة (Interaction): يمكن أن يتفاعل مع بيئات رقمية مثل مواقع الويب وقواعد البيانات أو واجهات برمجة التطبيقات APIs أو حتى بيئات مادية عبر الروبوتات. الاستقلالية (Autonomy): يعمل بنفسه لفترات طويلة لتحقيق هدف طويل الأمد دون الحاجة إلى موافقة بشرية مستمرة. ويعمل ال AI Agent ضمن حلقة مستمرة تسمى الإدراك و التفكير والتنفيذ (Perceive - Think - Act): الإدراك (Perception): يستخدم مستشعرات (Sensors) لجمع معلومات عن حالته الحالية وبيئته. أمثلة: قراءة رسائل بريد إلكتروني جديدة أو مراقبة أسعار الأسهم عبر API أو قراءة مدخلات المستخدم أو حتى استقبال بيانات من كاميرا في الروبوتات. التفكير واتخاذ القرار (Thinking & Decision-Making): هذا هو عقل الوكيل حيث يستخدم "النموذج الخاص به مثل LLM لتحليل ما أدركه. يقوم بالتخطيط (Planning): يضع خطة من عدة خطوات لتحقيق هدفه. (مثال: "الهدف هو حجز رحلة. الخطوة 1: البحث عن رحلات. الخطوة 2: مقارنة الأسعار. الخطوة 3: اختيار الأفضل. الخطوة 4: الحجز"). يقوم بالاستنتاج (Reasoning): إذا واجهته مشكلة مثل الموقع يتطلب CAPTCHA فإنه يفكر في كيفية حلها مثل سأستخدم أداة لحل الـ CAPTCHA أو سأبحث في موقع آخر. التنفيذ (Action): يستخدم أدوات تنفيذية (Actuators) لتنفيذ القرار الذي اتخذه. أمثلة: إرسال بريد إلكتروني، استدعاء API مثل API الخاص بشركة الطيران كتابة كود برمجي وتشغيله أو تحريك ذراع روبوت. وتستمر هذه الحلقة حتى يتم تحقيق الهدف النهائي. باختصار إن ال AI Agent الحديث هو غالباً وكيل قائم على نموذج وهدف (Model-Based, Goal-Based Agent) ويستخدم نموذج لغوي كبير (LLM) كعقل مفكر لاتخاذ القرارات.
  8. لن تفيدك كثيرا إلا إذا أردت دمج الذكاء الإصطناعي في المشاريع التي ستعمل عليها . أو تريد إنشاء فكرة لتطبيق لك تعتمد على دمج الذكاء الإصطناعي مع الويب . أو تريد أن تعمل في مجال تحليل البيانات هنا ستفيدك بشكل كبير حيث ستتعامل مع المواقع وسيكون لديك خبرة بها بالفعل. أما لو أردت أن تكمل في مسار تطوير تطبيقات الويب فإن دورة بايثون هي المناسبة لك إذا أردت العمل من خلال لغة بايثون أو أردت أن تصبح مطور odoo.
  9. هل تريد أن تصبح مطور ذكاء إصطناعي أم ماذا ؟ إذا كان كذلك فإن ما تعلمته وهو تطوير الويب لن يكون مفيدا هنا أقصد أنك لن تستعمله مرة أخرى حيث التركيز سيكون على الذكاء الإصطناعي بشكل أكبر وأيضا لغات البرمجة التي تعلمتها لن تفيدك هنا لأنك يجب تعلم بايثون وهي المستخدمة في الذكاء الإصطناعي. أما دورة بايثون فستفيدك في تطوير تطبيقات الويب بإستخدام لغة بايثون وأيضا من الممكن أن تصبح مطور odoo وهي وظيفة جيدة جدا . لذلك الإختيار يعتمد على ما تريده فهل تريد أن تكون مطور ذكاء إصطناعي وتعلم آلة أم مطور تطبيقات ويب.
  10. نعم، تعلم لغة Go (Golang) يمكن أن يفيدك حتى في مجتمع عربي ولكن مدى الفائدة يعتمد على المجال الذي تنوي العمل فيه وإليك شرح مفصل لذلك: الحقيقة أن Go أقل انتشارا من PHP / Python / JavaScript في الشركات العربية ولكنها ليست نادرة فالطلب موجود لكنه أقل مقارنة باللغات الأخرى. ولكن بعض شركات الدفع الإلكتروني والمحافظ الذكية تستخدم Go بسبب سرعتها وقوة الـ concurrency. والشركات التي تعتمد على Microservices فهنا شركات عربية عدة انتقلت ل Go لأنها: خفيفة وسريعة سهلة في نشر الخدمات (deploy) ممتازة لعمل APIs ضخمة وشركات التقنية التي تستهدف عملاء عالميين مثل شركات SaaS أو الشركات الناشئة فهم يستخدمون Go بكثرة. ولكن لا أنصحك بها إذا كان هدفك الحصول على عمل بسرعة داخل السوق العربي أو العمل الحر Freelance ففي هذه الحالات Node.js أو PHPأو Python تعطيك فرص أكبر.
  11. لا من الصعب جدا أن تنقرض لغة PHP في المستقبل القريب بل على العكس فإن تلك اللغة تشهد تطور كبير مع الوقت. والاعتقادات التي ذكرتها صحيحة و لكنها تحتاج لبعض التوضيح لأن المقارنة ليست بهذه البساطة. هل PHP بطيئة لأنها Synchronous ؟ هذا هو سوء الفهم الأكبر حيث : PHP ليست بطيئة: هذا الانطباع قديم جدا فمنذ إصدار PHP 7 حدثت طفرة كبيرة في الأداء ف PHP الحديثة المزودة بمترجم JIT (Just-In-Time) أصبحت سريعة جداً، وتتفوق أحيانا على Node.js (JavaScript) و Python في بعض اختبارات الأداء (Benchmarks) الخاصة بال CPU. مشكلة التزامن "Synchronous" : نعم صحيح أن PHP تقليدياً تعمل بنموذج متزامن (Request-Per-Process) حيث كل طلب مستخدم يشغل عملية PHP خاصة به. وإذا كان هذا الطلب ينتظر قاعدة البيانات (I/O) فإن العملية تظل منتظرة ولا تفعل شيئاً آخر. و هذا النموذج ليس سيئاً في الواقع بل هو أبسط في الفهم وللتعامل مع آلاف المستخدمين يتم الاعتماد على خادم الويب مثل Nginx أو Apache الذي يدير مجموعة من العمليات (PHP-FPM) جاهزة لتلقي الطلبات بالتوازي. هل JavaScript (Node.js) أسرع لأنها Asynchronous؟ هنا أيضا نحتاج لتوضيح: Asynchronous (غير متزامن): لا تعني تنفيذ أسرع للكود ولكن هي تعني كفاءة أعلى في الانتظار. كيف يعمل Node.js: حيث يستخدم Node.js ما يسمى ب Event Loop فعندما يأتي طلب يحتاج لعملية I/O مثل قراءة ملف أو استعلام من قاعدة بيانات لا ينتظر Node.js بل يسجل ملاحظة (Callback أو Promise) ويذهب لخدمة طلب مستخدم آخر وعندما تأتي النتيجة من قاعدة البيانات يعود لإكمال الطلب الأول. النتيجة: أن Node.js ممتاز في التطبيقات عالية التزامن (High Concurrency) فيمكنه التعامل مع عدد هائل من الاتصالات المفتوحة مثل تطبيقات الدردشة والألعاب الأونلاين وبث البيانات بموارد (رام) أقل بكثير من PHP التقليدية لأنه لا يحجز عملية لكل مستخدم. ولا تزال قوة PHP تتميز في : WordPress: النقطة التي تنهي أي نقاش حول موت PHP هو ووردبريس حيث يدير أكثر من 43% من جميع مواقع الإنترنت في العالم وهو مبني بالكامل ب PHP. هذا يعني أن ملايين المطورين والشركات يعتمدون عليه. أطر العمل الحديثة (Frameworks): PHP ليست فقط ووردبريس بل أطر عمل مثل Laravel و Symfony هي من أقوى وأفضل أطر العمل في الويب اليوم وتستخدم لبناء تطبيقات ضخمة ومعقدة . سهولة الاستضافة (Shared Hosting): لا يزال نشر موقع PHP بسيط جدا وأرخص من نشر تطبيق Node.js وهو ما يجعله خيار أول للمشاريع الصغيرة والمتوسطة. باختصار، اللغتان قويتان جداً وتخدمان أغراضاً مختلفة، ولا توجد أي مؤشرات على انقراض PHP.
  12. أولا إليك النقاط الإيجابية في ملف README الحالي: شامل فهو يحتوي على كل الوظائف الرئيسية لل API مثل التسجيل وتسجيل الدخول وإدارة الأفلام وإعجابوعدم إعجاب. مقسّم بطريقة واضحة فكل جزء له عنوان واضح مثل Register و Login و Movies Routes وغيرها. توضيح Headers و Body و Response فهوممتاز للمطور الذي يريد اختبار الـ API مباشرة. ذكر التقنيات المستخدمة مثل Node.js و Express.js و MongoDB و JWT و Cloudinary. توضيح صلاحيات المسؤول (Admin). وإليك المشاكل أو الأشياء التي يمكن تحسينها : طول محتوى بعض الأقسام فبعض الأقسام مثل Register أو Create Movie طويلة جدا بالتفاصيل داخل README. يمكن تبسيطها وإحالة المطور إلى Postman collection أو API doc لتجنب الحشو. التنسيق غير متسق بالكامل فبعض العناوين تستخدم #### وبعضها لا. JSON Responses أحيانًا تستخدم _id وأحيانًا \_id. الأفضل توحيد الصياغة. نقص Badges لا يوجد Build Status, Node version, أو Coverage badges، مما يعطي انطباع أقل احترافية. نقص مثال للبيئة .env لم توضح متغيرات البيئة المطلوبة مثل MONGO_URI و JWT_SECRET و CLOUDINARY_API_KEY وهي مهمة لأي مطور يريد تشغيل المشروع. طريقة التشغيل غير واضحة بالكامل فلا يوجد توضيح للفرق بين npm run start و npm run dev . يمكن إضافة خطوات تشغيل MongoDB محليًا أو استخدام Atlas. بعض الأخطاء اللغوية والصياغية مثل: "Here you can like the app; if you don't like it, it will increase by one…" هذه الجملة مربكة. ينصح بتبسيط اللغة وجعلها مباشرة وواضحة. Missing Contribution / License Section README الحالي لا يحتوي على قسم عن المساهمة أو الترخيص، وهذا مهم للمشاريع المفتوحة المصدر. وإليك نصائح للتحسين : تبسيط شرح كل Route حيث ضع الأمثلة الأساسية فقط، وأضف رابطًا لتوثيق Postman أو Swagger للمزيد من التفاصيل. أضف Badges مثل Node version و build status و license و npm downloads. أضف جدول متغيرات البيئة (.env) تحسين لغة الردود مثال فبدلا من "Here you can like the app; if you don't like it, it will increase by one", اجعلها "Toggle like/unlike for a movie." استخدم تنسيق موحد للـ Headers/Body/Response ضف Contribution & License
  13. باختصار إن Nest.js ليس معقدا ولكنه منظم بشكل كبير مقارنة ب Express وبما أن خلفيتك القديمة هي Express واللذي هو minimal فطبيعي جدا أن تشعر أن Nest غريب ومعقد. فإنExpress عبارة عن: Router Middleware Request/Response وانت لك الحرية في : إنشاء المجلدات اللي تعجبك تكتب الكود بأي ترتيب ليس هناك قيود وليس هناك أى قواعد Rules وهو سهل وسريع ولكن: ليس هنا Standard كل مشروع من الممكن أن يكون مختلف في الشكل والتنظيم وبعد فترة لو كبر المشروع فإن الوضع سيصير معقد وغير منظم. أما Nest بُني على: OOP Decorators Dependency Injection Modules & Layers SOLID principles يعني أن Nest مثل إطار عمل Enterprise جاهز لمشاريع ضخمة. فهو يجبرك على وجود: Controller Service Module Provider Decorators قوائم منظمة لل imports و providers و exports. ولأن Nest مصمم يشتغل لمشاريع 10 مطورين أو 50 مطور بدون تعطيل بعضهم البعض أو المشروع وبالتالي تشعر بالتعقيد.
  14. هنا في موقع الأكاديمية لا نقوم بالإجابة على أسئلة الإختبارات ولكن نستطيع إرشادك إلى طريقة الحل . لاحظ أن المطلوب سهل جدا وهو من أساسيات تعلم البرمجة ولغة c++ التي لا غنى عنها أبدا. أولا يجب عليك إستخدام هنا حلقة while ول for وذلك لأنك لا تعرف عدد التكرار الذي ستقوم به لأن هذا يعتمد على إدخال المستخدم . بعد ذلك بداخل الحلقة تقوم بطلب إدخال العمر من المستخدم وتقوم بالتحقق من الإدخال . وبناء عليه ستقوم إما بإعادة التكرار أو الخروج من حلقة while . أنصحك بدراسة حلقات التكرار والشروط if وكيفية أخذ البيانات من المستخدم ومن ثم إرفاق البرنامج الذي أنشأته لنقوم بتقيمه لك وتصحيح الأخطاء لك.
  15. وعليكم السلام ورحمة الله وبركاته. هذا الأمر يعتمد على المستوى الذي توقفت عنده فلو كان مستوى جيد وقمت بالتطبيق كثيرا فلا تقلق ستستطيع المراجعة والعودة إلى مستواك سريعا يكفي فقط مراجعة الأساسيات بشكل سريع وإسترجاع الدروس وإذا وجدت درس ما صعب في التذكر أو نسيته يمكنك حينها مذاكرته بشكل جيد والتطبيق عليه حتى تقوم بتذكره وفهمه بشكل كامل . وبعد المراجعة يمكنك إنشاء مشروعين على الأقل مشروع بسيط في المستوى ومشروع صعب قليلا وستجد أنك بدأت إسترجاع مستواك الذي توقفت عنده بسهوله . أيضا لو كنت قد قمت بالتطبيق في السابق يمكنك مراجعة تلك المشاريع ومحاولة إنشاءها من جديد بنفسك ومقرانة الكود الجديد بالقديم ومحاولة معرفة أى منهم الأفضل وحتى تعرف كيف كان تفكيرك في السابق.
  16. وعليكم السلام ورحمة الله وبركاته. الإجابة بإختصار هي لا فهما ليسا العوامل الوحيدة ولكنهما الأهم والأشهر في التحليل النظري ومقارنة الخوارزميات. ففي الواقع العملي في هندسة البرمجيات هناك عوامل أخرى قد تكون بنفس الأهمية أو حتى أهم بناء على الموقف. فإنه يتم التركيز على التعقيد الزمني (Time Complexity) و التعقيد المكاني (Space Complexity) لأنهما يمثلان الموردين الأساسيين المحدودين في أي جهاز كمبيوتر: الوقت (Time): كم ستستغرق الخوارزمية من وقت لتنفيذها مع زيادة حجم المدخلات؟ (يقاس بعدد العمليات). المساحة (Space): كم ستحتاج الخوارزمية من ذاكرة (RAM) مع زيادة حجم المدخلات؟ يستخدم تحليل (Big O Notation) لوصف سلوكهما التقريبي (Asymptotic behavior) وهذا ممتاز للمقارنات النظرية. وعند كتابة برامج حقيقية، توازن بين Time/Space وعوامل أخرى: سهولة القراءة والصيانة (Readability & Maintainability) : ففي كثير من الأحيان تكون الخوارزمية الأسرع معقدة جدًا وصعبة الفهم والأهم هو أن الكود يقرأ أكثر مما يكتب فإذا كان فريقك والأشخاص الأخرين لا يستطيع فهم الخوارزمية فمن المستحيل صيانتها أو تطويرها أو حتى إصلاح أخطائها. المفاضلة (Trade-off) فقد تختار خوارزمية أبطأ قليلًا إذا كانت أبسط وأسهل في الصيانة. بساطة التنفيذ (Implementation Simplicity) فكمم من الوقت سيستغرق المطور لكتابة هذه الخوارزمية بشكل صحيح فالخوارزميات المعقدة عرضة للأخطاء (Bugs) بشكل أكبر وصعوبة تنفيذها وتطويرها كبيرة . إذا الخلاصة أن ال Time وال Space هما الأساس الأكاديمي لمقارنة كفاءة الخوارزمية ولكن في هندسة البرمجيات أنت تبحث عن الخوارزمية الأفضل للمشكلة وهذا يشمل الموازنة بين الكفاءة وسهولة الصيانة ووقت التطوير والسياق الذي ستعمل فيه.
  17. النماذج التوليدية (Generative Models) هي نوع من نماذج الذكاء الاصطناعي التي لا تكتفي بتصنيف البيانات أو التنبؤ بها، بل تتعلم الأنماط والخصائص الأساسية للبيانات لدرجة تمكنها من إنشاء أو توليد بيانات جديدة تمامًا تشبه البيانات التي تدربت عليها. والآن إليك الإجابة على أسئلتك : كيف يعمل النموذج التوليدي؟ الفكرة الأساسية هي أن النموذج التوليدي يحاول فهم" التوزيع الاحتمالي للبيانات. بدلا من مجرد تعلم كيفية رسم خط فاصل بين فئتين مثل قطة وكلب وهو ما يفعله النموذج التمييزي (Discriminative Model) فإن النموذج التوليدي يتعلم ما الذي يجعل القطة قطة في جوهرها شكل الأذنين وملمس الفرو ونسب الوجه. وللتوضيح: نموذج تمييزي (Discriminative): يرى صورة ويسألك: هل هذه قطة أم كلب أى إنه يتعلم الحدود بين الفئات. نموذج توليدي (Generative): تطلب منه مثلا ارسم لي قطة فيقوم بإنشاء صورة جديدة لقطة لم تكن موجودة من قبل. إنه يتعلم التوزيع الحقيقي للبيانات. ولكي يفعل ذلك، يتم تدريبه على مجموعة بيانات ضخمة مثل ملايين الصور أو النصوص أو مقاطع صوتية ويستخدم خوارزميات معقدة لمحاولة بناء نموذج داخلي لهذه البيانات. بمجرد تدريبه، يمكنه أخذ عينات من هذا النموذج لإنشاء مخرجات جديدة. ما هي أنواع النماذج التوليدية؟ هناك عدة عائلات رئيسية من النماذج التوليدية، لكل منها طريقتها الفريدة في العمل: الشبكات التوليدية التنافسية (GANs - Generative Adversarial Networks): هي الأكثر شهرة، وتتكون من شبكتين تتنافسان: المولِّد (Generator): يحاول إنشاء بيانات مزيفة (مثل صورة وجه). المميِّز (Discriminator): يحاول التمييز بين البيانات الحقيقية (من مجموعة التدريب) والبيانات المزيفة (التي أنشأها المولِّد). وتستمر هذه "اللعبة" حتى يصبح "المولِّد" بارعًا جدًا في خداع "المميِّز". مشفِّرات الأوتو التباينية (VAEs - Variational Autoencoders): تعمل عن طريق ضغط البيانات إلى تمثيل "كامِن" (Latent Space) منخفض الأبعاد ثم إعادة بنائها. تتعلم VAEs كيفية تمثيل البيانات بكفاءة، مما يسمح لها بتوليد بيانات جديدة عن طريق أخذ عينات من هذا الفضاء الكامن. نماذج الانتشار (Diffusion Models): وهي النماذج الأحدث والأكثر قوة في توليد الصور (مثل DALL-E 2 و Stable Diffusion). تعمل عن طريق: إضافة "ضوضاء" (noise) بشكل تدريجي إلى صورة حتى تصبح ضوضاء نقية (Forward Process). تدريب شبكة عصبية على عكس هذه العملية: البدء من ضوضاء نقية و"إزالة الضوضاء" (denoising) بشكل تدريجي حتى تتكون صورة واضحة (Reverse Process). النماذج الانحدارية الذاتية (Autoregressive Models): مثل نماذج (GPT) للغة. تعمل هذه النماذج عن طريق توليد البيانات خطوة بخطوة (مثل كلمة بكلمة، أو بكسل ببكسل)، حيث يعتمد كل مخرج جديد على المخرجات التي سبقته. ما هي الخوارزميات (المعمارِيات) المستخدمة؟ السؤالان مرتبطان جدا فالأنواع" المذكورة في الأعلى هي في الأساس الخوارزميات أو الأطر المعمارية المستخدمة. التفاصيل الدقيقة تكمن في كيفية تدريبها: الشبكات التوليدية التنافسية (GANs) مشفِّرات الأوتو التباينية (VAEs) نماذج الانتشار (Diffusion) المحولات (Transformers)
  18. توجد العديد من المواقع الشهيرة لذلك مثل Leetcode و codewars و codeforces و HackerRank وغيرها من المواقع الأخرى ويمكنك التدرج في مستوى صعوبة الأسئلة كما تريد. وإليك المزيد من المواقع في الإجابة التالية :
  19. وعليكم السلام ورحمة الله وبركاته. أولا إن أفضل الاستضافات لمشاريع Node.js + PostgreSQL : Render وهي أفضل خيار لمشاريع Node.js + PostgreSQL وسيعطيك: Deployment سهل جدا من GitHub و PostgreSQL Database مدعومة بشكل رسمي HTTPS تلقائي Start Commands واضحة مجاني لبعض الخصائص ولكن إنتبه لأنه يتم إغلاق الخادم عند عدم الاستخدام. Railway هو سريع جدا وسهل الاستخدام ويدعم PostgreSQL مباشرة ويعمل مثل Heroku القديم. والخطة المجانية جيدة للبدء فيه ولكنها محدودة بعدد الساعات. Fly.io صاحب أداء قوي جدا وهو مناسب للتطبيقات الإنتاجية ويتطلب خبرة بسيطة في ال CLI. وإليك إستضافات قيوة إذا أردت تحكم أكبر في الخادم : DigitalOcean Droplet يعمل ك VPS حقيقي وتحتاج لإعداد كل شيء يدويا وهو أقوى وأرخص على المدى الطويل. AWS / Google Cloud / Azure هي إستضافات قوية واحترافية جدا وهي ليست مناسبة كبداية لأنها معقدة وليست للمبتدأين
  20. وعليكم السلام ورحمة الله وبركاته. نعم يوجد فرق واضح بين المجالين، على الرغم من تداخلهما الكبير. فببساطة تحليل البيانات (Data Analysis) يركز على فهم الماضي بينما علم البيانات (Data Science) يركز على التنبؤ بالمستقبل. يمكن اعتبار تحليل البيانات جزءاً أساسياً وخطوة مهمة داخل المجال الأوسع وهو علم البيانات. إليك مقارنة توضيحية: تحليل البيانات (Data Analysis) الهدف الرئيسي هو فحص البيانات التاريخية والحالية للإجابة على أسئلة محددة، واستخلاص رؤى (insights) وتحديد الأنماط وتقديمها في شكل تقارير ولوحات عرض (Dashboards) لدعم اتخاذ القرار. والسؤال الأساسي هو ماذا حدث و لماذا حدث أى وصفي وتشخيصي. والمهام الشائعة له: جمع وتنظيف البيانات. إجراء تحليل إحصائي وصفي. إنشاء تقارير دورية ولوحات عرض تفاعلية. تحديد الاتجاهات (Trends) والأنماط في البيانات. والأدوات الشائعة المستخدمة فيه هي SQL و Microsoft Excel و Google Sheets و أدوات BI مثل Tableau و Power BI. علم البيانات (Data Science) هو مجال أشمل يستخدم الأساليب العلمية والخوارزميات وعمليات معقدة لاستخراج المعرفة من البيانات المنظمة وغير المنظمة و لا يكتفي بفهم الماضي بل يهدف لبناء نماذج تتنبأ بالمستقبل. والسؤال الأساسي: ماذا سيحدث و ما أفضل إجراء يمكن اتخاذه أى تنبؤي وتوجيهي. والمهام الشائعة له: يتضمن جميع مهام محلل البيانات (الجمع والتنظيف و التحليل). تطبيق خوارزميات التعلم الآلي (Machine Learning) والذكاء الاصطناعي. بناء نماذج تنبؤية (مثل التنبؤ بمبيعات و اكتشاف الاحتيال و أنظمة التوصية). معالجة البيانات الضخمة (Big Data). والأدوات الشائعة المستخدمة فيه هي كل أدوات محلل البيانات بالإضافة إلى لغات برمجة متقدمة مثل Python ومكتباتها مثل Pandas و NumPy و Scikit-learn و TensorFlow و R.
  21. وعليكم السلام ورحمة الله وبركاته. نعم بالطبع يمكنكِ بناء تطبيق متكامل باستخدام بايثون سواء كان تطبيق ويب أو تطبيق سطح مكتب أو حتى تطبيق موبايل بسيط أو API أو حتى نظام متكامل يجمع بين الواجهة الأمامية والخلفية وقاعدة البيانات. فمثلا لو أردتي : تطبيق ويب كامل (Back-end + Front-end Template) يمكنكِ استخدام: Django (أسهل وأسرع لبناء نظام متكامل) Flask (خفيف ومرن) تطبيق سطح مكتب GUI يمكنكِ استخدام: Tkinter PyQt Kivy واجهات API يمكنكِ استخدام: FastAPI (الأسرع والأحدث) تطبيقات موبايل بسيطة يمكنكِ استخدام: Kivy / BeeWare
  22. المشكلة الأساسية لديك تظهر في رسالة الخطأ في السطر الأخير: GatewayRuntimeError: ... "predict() missing 1 required positional argument: 'test_with_dates'" فسبب المشكلة هو مكتبة التقييم (kaggle_evaluation) ففي هذه المسابقة تقوم باستدعاء دالة predict الخاصة بك وتقوم بتمرير متغير واحد فقط وهو البيانات الخاصة بالاختبار test ولكنك قمت بتعريف الدالة لتنتظر متغيرين (test و test_with_dates). بما أن الدالة تنتظر شيئاً لم يتم إرساله يحدث الخطأ لديك. إذا يجب تعديل دالة predict لتستقبل متغيراً واحداً فقط، وتستخرج date_id من نفس المتغير test : import pandas as pd import tensorflow as tf import kaggle_evaluation import os # ... (باقي تعريف الأعمدة col وتحميل الموديل كما هو) ... # تأكد أن قائمة col تحتوي فقط على الأعمدة الموجودة فعلياً في البيانات القادمة (Feature Columns) def predict(test: pd.DataFrame) -> pd.DataFrame: # 1. التعديل هنا: حذفنا test_with_dates من تعريف الدالة df = test.copy() # تأكد أنك تختار فقط أعمدة الميزات (Features) للتنبؤ # قد تحتاج للتحقق إذا كانت كل الأعمدة في col موجودة في test # أحياناً date_id يكون موجوداً فنحتاج استثنائه من الموديل x_test = df[col] preds = model.predict(x_test, verbose=0) allocation = preds.clip(0, 2).reshape(-1) # 2. التعديل هنا: نأخذ date_id من الـ test dataframe نفسه return pd.DataFrame({ "date_id": test["date_id"].values, "prediction": allocation }) inference_server = kaggle_evaluation.default_inference_server.DefaultInferenceServer(predict) if os.getenv('KAGGLE_IS_COMPETITION_RERUN'): inference_server.serve() else: inference_server.run_local_gateway(('/kaggle/input/hull-tactical-market-prediction/',)) وهناك ملاحظة هامة جدا بخصوص التحذير (Warning) حيث ظهر لك تحذير خطير في بداية اللوج: RuntimeWarning: 1889 seconds elapsed before server startup وهذا يعني أن الكود استغرق 31 دقيقة فقط ليعمل قبل أن يبدأ التنبؤ حتى والحد المسموح به عادة هو 15 دقيقة (900 ثانية) للإقلاع. والسبب غالبا هي عملية تحميل الموديل tf.keras.models.load_model أو استدعاء المكتبات بطيء جداً. لذلم تأكد أنك تستخدم GPU accelerator في النوت بوك.
  23. وعليكم السلام ورحمة الله وبركاته. البديل المباشر والكامل لتقنية الفلاش (Flash) هو HTML5 ومجموعة التقنيات المرتبطة به. ففي الماضي كان الفلاش هو المكون الإضافي (plugin) الذي يقوم بكل شيء: عرض الفيديو، تشغيل الأصوات، الرسوم المتحركة، والإعلانات التفاعلية. أما اليوم، فكل هذه الوظائف أصبحت مدمجة أصلاً في متصفحات الويب الحديثة باستخدام التقنيات التالية: أولا CSS3 (للتأثيرات والرسوم المتحركة) فهذا هو البديل الأهم والأكثر استخداماً لتحريك العناصر وإضافة التأثيرات البصرية مثل : الانتقالات (Transitions): لتغيير الخصائص بشكل سلس (مثل تغيير اللون عند مرور الماوس). الرسوم المتحركة (Animations): لإنشاء حركات معقدة باستخدام keyframes@، مثل تحريك شعار، أو جعل زر يهتز، أو ظهور إعلان بتأثيرات دخول. التحويلات (Transforms): لتغيير شكل العنصر (تدوير، تكبير/تصغير، إمالة) بشكل ثنائي أو ثلاثي الأبعاد (2D/3D). وهو أفضل لأنه يعمل مباشرة عبر المتصفح وسريع جداً في الأداء حيث يستخدم تسريع العتاد GPU ولا يحتاج لأي إضافات. ثانيا JavaScript (للتفاعلية والحركات المعقدة) فعندما تكون الرسوم المتحركة في CSS غير كافية، أو عندما تحتاج إلى تفاعل معقد (مثل إعلان تفاعلي أو لعبة بسيطة)، يأتي دور جافاسكريبت. Web Animations API: واجهة برمجية مدمجة في المتصفحات للتحكم الدقيق في الرسوم المتحركة (إيقاف، تشغيل، إرجاع) وهو البديل البرمجي لـ CSS Animations. مكتبات جافاسكريبت (Libraries): هي البديل الأقوى لبرامج تصميم الفلاش. بدلاً من إنشاء ملف swf.، يقوم المطورون باستخدام مكتبات جاهزة لإنشاء إعلانات وتأثيرات مذهلة. أشهرها: GSAP (GreenSock): المعيار الذهبي في عالم الرسوم المتحركة عبر الويب. هو الأداة المفضلة لإنشاء إعلانات البانر (Banner Ads) المعقدة والحركات الاحترافية. Lottie (by Airbnb): تقنية رائعة تسمح للمصممين بتصدير الرسوم المتحركة من برنامج Adobe After Effects مباشرة إلى ملف JSON، ثم عرضها على الويب بسلاسة. هذا يعطيك جودة رسوم متحركة عالية جداً. Anime.js: مكتبة خفيفة وممتازة للرسوم المتحركة. ثالثا SVG (Scalable Vector Graphics) كان الفلاش يعتمد على الرسوم المتجهة (Vectors) التي لا تفقد دقتها عند تكبيرها. البديل الحديث هو SVG. يمكنك رسم شعارات وأيقونات ورسوم معقدة كملفات SVG. الأهم من ذلك، يمكن تحريك عناصر SVG باستخدام CSS أو JavaScript. هذا يفتح مجالاً كبيراً لإنشاء رسوم متحركة تفاعلية (Infographics) أو تأثيرات تحميل (Loaders) مميزة. رابعا HTML5 Canvas فهو "لوحة رسم" يوفرها HTML5. يمكنك الرسم عليها باستخدام جافاسكريبت. يُستخدم للتأثيرات البصرية المعقدة جداً، الألعاب ثنائية الأبعاد، أو معالجة الصور مباشرة في المتصفح. يُستخدم غالباً في إعلانات البانر التفاعلية التي تحتوي على ألعاب مصغرة. خامسا وسوم <video> و <audio> بدلاً من مشغل الفلاش (ملفات .flv)، أصبح تشغيل الفيديو والصوت مباشراً عبر وسمي <video> و <audio> في HTML5.
  24. أولا النسيان أمر طبيعي في البداية ولكن بعد سنتين وما زلت تنسى فهذا الأمر ليس طبيعا . يبدوا أنك لا تقوم بالمذاكرة بشكل جيد أى لا تقوم بالفهم التام للدروس والمواضيع وأيضا لا تقوم بالتطبيق بشكل جيد عليهم. لذلك أنصحك بالبدأ من البداية تماما وعدم تخطي أى درس أو موضوع دون التطبيق الكامل عليه والتطبيق كثيرا حتى تتأكد من أن المعلومة قد ثبتت لديك وبعد أن تقوم بدراسة عدة مواضيع معا تقوم بتطبيق عملي حقيقي على هذه المواضيع والدروس لتستطيع ربط الدروس مع بعضها البعض.
  25. ان دراسة علوم الحاسوب عموما والبرمجة خصوصا الافضل متابعتها على جهاز الحاسوب وليس الهاتف وذلك لان البرمجة تحتاج الى تطبيق ومتابعة كثيرا . وحاليا لا يوجد تطبيق للهاتف خاص بالاكاديمية ولكن يمكنك تصفح الموقع مباشرة من خلال الهاتف اذا اردت.
×
×
  • أضف...