-
المساهمات
9364 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
132
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو محمد_عاطف
-
في ملف chatbot_client.py سطر يجب تغيره ليكون كالتالي : client = OpenAI(api_key=api_key) أو الأفضل عدم تمريره وتكتفي فقط بوضع OPENAI_API_KEY في متغيرات البيئة . إذا ظهرت مشكلة أخرى يرجى إرفاق صورة للمشكلة.
-
نعم بالطبع يمكنك إستخدام أى لغة برمجة في vs code حيث يمكنك إنشاء الملف وفتحه في vs code وتنزيل الإضافة الخاصة باللغة التي تعمل عليها . ولكن بالفعل vs code يأتي إفتراضيا بإضافات بايثون ولن تحتاج لتنزيل أى شئ.
- 3 اجابة
-
- 1
-
-
لا يتم تحصيل الرسوم سوى بالدولار الأمريكي ولكن يمكنك محادثة خدمة العملاء الخاصة بالبنك التابع له حيث يمكن الدفع بالجنيه المصري من خلال البنك ولكن من خلال بطاقات الإئتمان وأيضا من خلال عمولة يأخذها البنك . أو يمكنكِ إستخدام بطاقات هدايا حيث يمكن جعل شخص يشتري بطاقة هدايا بقيمة الدورة وتدفعين له المبلغ بالجنيه المصري.
-
نعم يوجد دورة مختصة بواجهات المستخدمه ومن خلالها سيتم شرح HTML و CSS و JavaScript و Bootstrap وغيرها من الأدوات واللغات الخاصة بتنفيذ واجهات المستخدم وهذه تفاصيل الدورة : https://academy.hsoub.com/learn/front-end-web-development/ أما إذا أردتي شئ مجاني فيمكنك قراءة المقالات الموجودة هنا في الأكاديمية : https://academy.hsoub.com/programming/html/ أو قراءة الدروس التالية على موقع موسوعة حسوب : https://wiki.hsoub.com/HTML
-
وعليكم السلام ورحمة الله وبركاته. يفضل تنزيل الإصدار المستخدم في الدروس وذلك منعا لحدوث إختلافات أثناء الشرح وفي النهاية يمكنك بعد ذلك العمل على أى إصدار تريده. ولو أردت تنزيل أحدث إصدار فلامشكلة في ذلك ولكن ستجد إختلافات أثناء الشرح من الممكن أن تقوم بتعطيلك. ومستقبلا يرجى وضع تعليقك الخاص أسفل الدرس الذي تريد الإستفسار عنه حيث ستجد صندوق للتعليقات كما هنا حيث هنا قسم الأسئلة العامة ولا نقوم بالإجابة على أسئلة الدورات هنا.
-
إليك قائمة تشغيل من منصة حسوب لجميع الأسئلة المتعلقة بموقع خمسات : إذا كنت تقصد برفع المشاريع أى إنشاء الخدمات ستجد كل هذا في القائمة السابقة .
-
إن Shopify هي منصة تجارة إلكترونية (e-commerce) تسمح لأي شخص بإنشاء متجر إلكتروني لبيع منتجاته أو خدماته بسهولة ودون الحاجة إلى خبرة كبيرة في البرمجة. والمنصة مستضافة (SaaS) أي أن Shopify يوفر الاستضافة بنفسه فأنت لا تحتاج خوادم خاصة وإدارتها بنفسك. وأيضا لديها أدوات لإدارة المخزون والطلبات والدفع والشحن والتسويق. ومن مميزاتها أنها توفر : تكامل مع بوابات دفع كثيرة سواء محلية وعالمية. قوالب (Themes) احترافية لتصميم المتج. دعم تطبيقات وإضافات (Apps) لتوسيع وظائف المتجر. وتوفر أيضا تخصيص للثيمات وتحتاج إلى مطور لتنسيق الموقع وهي الوظائف المطلوبة بكثرة على منصات العمل الحر. أما سلة فهي منصة تجارة إلكترونية عربية (منصة سعودية) متخصصة لإنشاء متاجر إلكترونية بسهولة. وهي مثل Shopify توفر استضافة وإدارة كاملة للمتجر من منتجات و طلبات و شحن و دفع). ولديها متجر تطبيقات (Apps) لتوسيع وظائف المتجر. يمكنك البحث في يوتيوب عن “Shopify من الصفر” أو من التوثيق الرسمي الخاص بالموقع ومنه ستتعلم كيفية رفع المنتجات وكيفية تطبيق الثيمات وتخصيصها وغيرها. وبخصوص الثيمات فكل ما عليك هو رفع أكواد css أو الملفات فقط على المنصة من خلال لوحة التحكم وسيتم تطبيقها على الموقع . أى أنك تحتاج إلى إتقان واجهات المستخدم كما في الدورة التي أنت مشترك بها.
-
إن ال base64 هذا ليس تشفير آمن بل هو مجرد encoding عادي أي أنه أى حد يستطيع معرفة عمل decode له وإكتشاف البيانات . أما الإجابة على سؤالك فهي تعتمد تماما على نوع المشروع وطبيعة البيانات. فمثلا لو ال ID لديك متسلسل (auto-increment) وال routes لديك مفتوحة أو محمية بحماية ضعيفة فالمهاجم يستطيع عمل ID enumeration attack بسهولةوالتعرف على الصفحات وإكتشاف الثغرات أو التحكم في المشروع إذا لم يكن مؤمن بشكل كامل. لذلك الأفضل إستخدام UUID هكذا مثلا : $table->uuid('id')->primary(); فأغلب المشاريع الكبيرة حاليا تستخدم UUID + cursor pagination بدون أي قلق من الأمان.
-
أولا الإنقطاع البسيط مثلا من أسبوع أو أقل لن يؤثر على معلوماتك في البداية ولكن الإنقطاع لمدة أكثر من ذلك ستفقدك المعلومات التي قد إكتسبتها لذلك في البداية ينبغي عليك عجم الإنقطاع لفترة كبيرة لتفادي فقدان المعلومات التي تعلمتها. أيضا تأكد من عدم تخطي أى درس دون فهمه بشكل تام وأيضا تأكد من التطبيق بشكل جيد وكثيرا حتى لا تنسى المعلومات بشكل سريع . فالتطبيق العملي هو من سيجعلك تتذكر الدروس بشكل جيد ومن الممكن أن تستعين بالذكاء الإصطناعي لإعطائك تمارين تستطيع حلها لتثبيت معلوماتك أو حتى المراجعة سريعا على الدروس .
- 5 اجابة
-
- 1
-
-
أحسنت مشروع جيد والكود ممتاز . ولكن لاحظ أن الكود كبير جدا من خلال إستخدام كود جافاسكريبت نقي دون أى مكتبات أو غيرها . وهذا المشروع جيد للتعلم ولكنه ليس جيدا كإنشاء مشروع متكامل فقط بإستخدام plain js . يمكنك محاولة إستخدام jquery إذا أردت تعلم javascript بشكل منفرد أو محاولة إستخدام مكتبات تساعدك في تقليل وتحسين حجم الكود لديك.
- 2 اجابة
-
- 1
-
-
مرحبا أحمد. إقتراح جيد سأقوم بتوصيله للإدارة للعمل عليه ومحاولة تقديمه في أقرب وقت. حاليا بالفعل تستطيع معرفة إذا شاهدت الدروس أم لا حيث بجانب اسم كل درس في المسارات بالدورة ستجد دائرة زرقاء وعند مشاهدة الدرس تختفي تلك الدائرة : لكن في حال الإنقطاع لمدة تزيد عن أسبوع أو شهر، سيُصعب عليك تتبع أين توقفت، لذا أرجو تدوين أخر درس توقفت عنده في مدونة خاصة بك ولتكن google tasks. أو يمكنك استخدام قالب الدراسة التالي لتخطيط دراستك للدورة، في حال تُفضل استخدام Notion: https://www.notion.com/templates/course-planner-schedule-and-learning-progress ومن خلاله تستطيع قياس مدى تقدمك بالدورة.
-
حاليا لا توجد أى كوبونات خصم أو عروض على الدورات ولكن يتم دائما من الحين إلى الأخر نزول عروض دورتين بسعر دورة واحدة . ويتم توفير عروض في المناسبات مثل رمضان وأحيانًا في فترة الإجازات الصيفية وأحيانًا في فترة التخفيضات السنوية الخاصة بالجمعة البيضاء، وفي بعض الأحيان يتم توفير كوبونات. ولكن أحيانًا يوجد كوبونات خصم متوفرة أرجو التحدث لمركز المساعدة والسؤال عن ما إن كانت متوفرة أم لا.
-
غالبا المشكلة بسبب عدم إستخدام ملف .gitignore حيث يجب إنشاء هذا الملف ووضع بداخله المجلدات التي لا تريد إضافتها على git وهي الأكواد والملفات الخاصة بالحزم وغيرها والتي تكون ذات مساحة كبيرة جدا وأعداد ملفات ضخمة وهذا هو سبب عدم رفع جميع الملفات. فمثلا مجلد node_modules لا يجب رفعه حتى لا يأخذ مساحة كبيرة للمشروع وأيضا مجلد venodr وغيرها من الملفات الغير مهمة . ويمكنك البحث على جوجل عن gitignore for من ثم كتابة لغة البرمجة التي تعمل عليها وستجد الإعداد الصحيح للملف للمشاريع وإليك مستودع به قوالب جاهزة لمختلف المشاريع: https://github.com/github/gitignore وبعد إنشائه وتهيئته قم بتنفيذ الأمر التالي لإلغاء تتبع الملفات والمجلدات والبدء من جديد مع الأخذ في الإعتبار إعدادات ملف gitignore: git rm --cached .
-
ببساطة ال 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) كعقل مفكر لاتخاذ القرارات.
-
لن تفيدك كثيرا إلا إذا أردت دمج الذكاء الإصطناعي في المشاريع التي ستعمل عليها . أو تريد إنشاء فكرة لتطبيق لك تعتمد على دمج الذكاء الإصطناعي مع الويب . أو تريد أن تعمل في مجال تحليل البيانات هنا ستفيدك بشكل كبير حيث ستتعامل مع المواقع وسيكون لديك خبرة بها بالفعل. أما لو أردت أن تكمل في مسار تطوير تطبيقات الويب فإن دورة بايثون هي المناسبة لك إذا أردت العمل من خلال لغة بايثون أو أردت أن تصبح مطور odoo.
-
هل تريد أن تصبح مطور ذكاء إصطناعي أم ماذا ؟ إذا كان كذلك فإن ما تعلمته وهو تطوير الويب لن يكون مفيدا هنا أقصد أنك لن تستعمله مرة أخرى حيث التركيز سيكون على الذكاء الإصطناعي بشكل أكبر وأيضا لغات البرمجة التي تعلمتها لن تفيدك هنا لأنك يجب تعلم بايثون وهي المستخدمة في الذكاء الإصطناعي. أما دورة بايثون فستفيدك في تطوير تطبيقات الويب بإستخدام لغة بايثون وأيضا من الممكن أن تصبح مطور odoo وهي وظيفة جيدة جدا . لذلك الإختيار يعتمد على ما تريده فهل تريد أن تكون مطور ذكاء إصطناعي وتعلم آلة أم مطور تطبيقات ويب.
-
نعم، تعلم لغة Go (Golang) يمكن أن يفيدك حتى في مجتمع عربي ولكن مدى الفائدة يعتمد على المجال الذي تنوي العمل فيه وإليك شرح مفصل لذلك: الحقيقة أن Go أقل انتشارا من PHP / Python / JavaScript في الشركات العربية ولكنها ليست نادرة فالطلب موجود لكنه أقل مقارنة باللغات الأخرى. ولكن بعض شركات الدفع الإلكتروني والمحافظ الذكية تستخدم Go بسبب سرعتها وقوة الـ concurrency. والشركات التي تعتمد على Microservices فهنا شركات عربية عدة انتقلت ل Go لأنها: خفيفة وسريعة سهلة في نشر الخدمات (deploy) ممتازة لعمل APIs ضخمة وشركات التقنية التي تستهدف عملاء عالميين مثل شركات SaaS أو الشركات الناشئة فهم يستخدمون Go بكثرة. ولكن لا أنصحك بها إذا كان هدفك الحصول على عمل بسرعة داخل السوق العربي أو العمل الحر Freelance ففي هذه الحالات Node.js أو PHPأو Python تعطيك فرص أكبر.
-
لا من الصعب جدا أن تنقرض لغة 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.
-
أولا إليك النقاط الإيجابية في ملف 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
-
باختصار إن 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 مطور بدون تعطيل بعضهم البعض أو المشروع وبالتالي تشعر بالتعقيد.
-
هنا في موقع الأكاديمية لا نقوم بالإجابة على أسئلة الإختبارات ولكن نستطيع إرشادك إلى طريقة الحل . لاحظ أن المطلوب سهل جدا وهو من أساسيات تعلم البرمجة ولغة c++ التي لا غنى عنها أبدا. أولا يجب عليك إستخدام هنا حلقة while ول for وذلك لأنك لا تعرف عدد التكرار الذي ستقوم به لأن هذا يعتمد على إدخال المستخدم . بعد ذلك بداخل الحلقة تقوم بطلب إدخال العمر من المستخدم وتقوم بالتحقق من الإدخال . وبناء عليه ستقوم إما بإعادة التكرار أو الخروج من حلقة while . أنصحك بدراسة حلقات التكرار والشروط if وكيفية أخذ البيانات من المستخدم ومن ثم إرفاق البرنامج الذي أنشأته لنقوم بتقيمه لك وتصحيح الأخطاء لك.
-
وعليكم السلام ورحمة الله وبركاته. هذا الأمر يعتمد على المستوى الذي توقفت عنده فلو كان مستوى جيد وقمت بالتطبيق كثيرا فلا تقلق ستستطيع المراجعة والعودة إلى مستواك سريعا يكفي فقط مراجعة الأساسيات بشكل سريع وإسترجاع الدروس وإذا وجدت درس ما صعب في التذكر أو نسيته يمكنك حينها مذاكرته بشكل جيد والتطبيق عليه حتى تقوم بتذكره وفهمه بشكل كامل . وبعد المراجعة يمكنك إنشاء مشروعين على الأقل مشروع بسيط في المستوى ومشروع صعب قليلا وستجد أنك بدأت إسترجاع مستواك الذي توقفت عنده بسهوله . أيضا لو كنت قد قمت بالتطبيق في السابق يمكنك مراجعة تلك المشاريع ومحاولة إنشاءها من جديد بنفسك ومقرانة الكود الجديد بالقديم ومحاولة معرفة أى منهم الأفضل وحتى تعرف كيف كان تفكيرك في السابق.
- 3 اجابة
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته. الإجابة بإختصار هي لا فهما ليسا العوامل الوحيدة ولكنهما الأهم والأشهر في التحليل النظري ومقارنة الخوارزميات. ففي الواقع العملي في هندسة البرمجيات هناك عوامل أخرى قد تكون بنفس الأهمية أو حتى أهم بناء على الموقف. فإنه يتم التركيز على التعقيد الزمني (Time Complexity) و التعقيد المكاني (Space Complexity) لأنهما يمثلان الموردين الأساسيين المحدودين في أي جهاز كمبيوتر: الوقت (Time): كم ستستغرق الخوارزمية من وقت لتنفيذها مع زيادة حجم المدخلات؟ (يقاس بعدد العمليات). المساحة (Space): كم ستحتاج الخوارزمية من ذاكرة (RAM) مع زيادة حجم المدخلات؟ يستخدم تحليل (Big O Notation) لوصف سلوكهما التقريبي (Asymptotic behavior) وهذا ممتاز للمقارنات النظرية. وعند كتابة برامج حقيقية، توازن بين Time/Space وعوامل أخرى: سهولة القراءة والصيانة (Readability & Maintainability) : ففي كثير من الأحيان تكون الخوارزمية الأسرع معقدة جدًا وصعبة الفهم والأهم هو أن الكود يقرأ أكثر مما يكتب فإذا كان فريقك والأشخاص الأخرين لا يستطيع فهم الخوارزمية فمن المستحيل صيانتها أو تطويرها أو حتى إصلاح أخطائها. المفاضلة (Trade-off) فقد تختار خوارزمية أبطأ قليلًا إذا كانت أبسط وأسهل في الصيانة. بساطة التنفيذ (Implementation Simplicity) فكمم من الوقت سيستغرق المطور لكتابة هذه الخوارزمية بشكل صحيح فالخوارزميات المعقدة عرضة للأخطاء (Bugs) بشكل أكبر وصعوبة تنفيذها وتطويرها كبيرة . إذا الخلاصة أن ال Time وال Space هما الأساس الأكاديمي لمقارنة كفاءة الخوارزمية ولكن في هندسة البرمجيات أنت تبحث عن الخوارزمية الأفضل للمشكلة وهذا يشمل الموازنة بين الكفاءة وسهولة الصيانة ووقت التطوير والسياق الذي ستعمل فيه.
- 4 اجابة
-
- 1
-
-
النماذج التوليدية (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)
- 5 اجابة
-
- 1
-
