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

Sherif Aboghazala

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

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

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

آخر الزوار

لوحة آخر الزوار معطلة ولن تظهر للأعضاء

إنجازات Sherif Aboghazala

عضو نشيط

عضو نشيط (3/3)

24

السمعة بالموقع

  1. وعليكم السلام ورحمة الله وبركاته. نعم، يمكن القول إن بعض مجالات البرمجة، خصوصًا مثل Front-end، أصبحت مزدحمة نسبيًا، لكن كلمة “مشبع” ليست دقيقة بالكامل. السوق لم يمتلئ بالمبرمجين الجيدين، بل امتلأ بالمبتدئين أو بمن يملكون معرفة سطحية فقط. لذلك نرى فجوة واضحة بين عدد المتقدمين للوظائف وعدد من يتم توظيفهم فعليًا. المشكلة ليست في كثرة من تعلموا HTML وCSS وJavaScript، بل في أن كثيرًا منهم توقف عند هذا الحد أو اعتمد على تقليد المشاريع دون فهم عميق. الشركات اليوم لا تبحث عن شخص يعرف الإطار أو الأداة فقط، بل عن شخص يفهم كيف يبني منتجًا حقيقيًا، يحل مشاكل، ويتعامل مع الأداء، والأمان، وتجربة المستخدم. الخروج من المنافسة لا يكون بتعلم لغة جديدة كل فترة، بل بالتميّز داخل المجال نفسه. مثلًا في Front-end، من يتقن أساسيات الويب جيدًا، ويفهم الأداء، وإمكانية الوصول، واستهلاك الـ APIs، وكتابة كود نظيف وقابل للصيانة، سيكون مختلفًا تمامًا عن الأغلبية. إضافة القدرة على فهم الباك إند أو العمل مع فرق متعددة يزيد من فرصك كثيرًا. أما عن المجالات التي فيها فرص أكثر ومنافسة أقل نسبيًا، فهي غالبًا المجالات التي تحتاج صبرًا وتعلّمًا أعمق، ولا تعطي نتائج سريعة. مثل مجال الباك إند المتقدم، الأمن السيبراني، تحليل البيانات، هندسة البيانات، الأتمتة، DevOps، وعمليات المراقبة والدعم التقني المتقدم مثل SOC. هذه المجالات لا يندفع لها الجميع لأنها تتطلب فهمًا تقنيًا أوسع ومسؤولية أكبر، ولذلك الطلب عليها مستمر. كذلك التخصص في مجال معين داخل البرمجة يعطيك ميزة قوية. بدل أن تكون “مبرمج ويب عام”، تصبح مطور نظم مالية، أو مطور أنظمة حجوزات، أو مطور منصات تعليمية، أو تعمل في حلول الأعمال والأنظمة الداخلية. هذا النوع من التخصص يقلل المنافسة بشكل كبير لأنك تنافس على خبرة، لا على لغة فقط.
  2. وعليكم السلام ورحمة الله وبركاته. سؤالك في مكانه، وهذه نقطة تصميم مهمة في قواعد البيانات. الأفضل في أغلب التطبيقات الحديثة أن تجعل الـ id المتسلسل رقمًا داخليًا فقط، وتضيف بجانبه حقل UUID مستقل، ثم تستخدم الـ UUID في الروابط وواجهات الـ API، ولا تعتمد على الـ id المتسلسل خارجيًا. بهذه الطريقة تجمع بين الأداء الجيد والأمان. السبب أن الـ id المتسلسل ممتاز من ناحية الأداء، خصوصًا مع قواعد البيانات العلائقية، لأنه صغير الحجم، سريع في الفهرسة، ويسهّل العلاقات بين الجداول. لكنه غير مناسب للاستخدام في الروابط أو الواجهات العامة، لأن من السهل تخمينه أو التلاعب به، مثل تجربة أرقام متتالية للوصول إلى بيانات لا يجب الوصول إليها. أما الـ UUID فهو ممتاز للاستخدام الخارجي، لأنه عشوائي وصعب التخمين، وبالتالي أكثر أمانًا عند استخدامه في الروابط أو عند التعامل مع الـ API. لكنه أبطأ نسبيًا من الـ id الرقمي، ويستهلك مساحة أكبر في الفهارس، لذلك لا يُفضل غالبًا كمفتاح أساسي وحيد في قواعد البيانات الكبيرة. لهذا، الحل العملي الشائع هو أن يكون المفتاح الأساسي Primary Key رقمًا متسلسلًا، مع وجود حقل UUID عليه فهرس فريد، وتستخدم الـ UUID في كل ما هو ظاهر للمستخدم أو للتكامل مع الأنظمة الأخرى، بينما تبقى العلاقات الداخلية مبنية على الرقم المتسلسل. استخدام الـ UUID كمفتاح أساسي مباشرة يكون مناسبًا في حالات معينة، مثل الأنظمة الموزعة أو عند توليد البيانات من أكثر من مصدر بدون تعارض، أو إذا كنت تعمل على Microservices وتحتاج معرفًا فريدًا عالميًا دون الرجوع لقاعدة البيانات. لكن في التطبيقات التقليدية أغلب الوقت لا تحتاج ذلك.
  3. وعليكم السلام ورحمة الله وبركاته. مسمّى SOC Analyst هو اختصار لـ Security Operations Center Analyst، وهو الشخص المسؤول عن مراقبة الأنظمة والشبكات بشكل مستمر لاكتشاف أي نشاط مشبوه أو هجمات سيبرانية، وتحليلها، ثم اتخاذ الإجراء المناسب أو تصعيدها حسب خطورتها. هذا الدور يُعد من أكثر الأدوار شيوعًا للدخول إلى مجال الأمن السيبراني، خصوصًا في المستوى المبتدئ. عمل محلل SOC يتمحور حول المراقبة والتحليل أكثر من الاختراق. يومه العملي غالبًا يكون داخل مركز عمليات أمنية، يتعامل مع تنبيهات صادرة من أنظمة حماية مختلفة مثل أنظمة كشف التسلل، الجدران النارية، وأنظمة SIEM. عندما يظهر تنبيه، يبدأ بتحليله ليفهم هل هو هجوم حقيقي أم إنذار كاذب، وإن كان هجومًا يحدد نوعه، مصدره، ومدى تأثيره، ثم يتخذ الإجراء المناسب أو يرفع الحالة إلى مستوى أعلى. حتى تكون مهيأ لهذا الدور، تحتاج أولًا إلى أساس قوي في الشبكات، لأن أغلب الهجمات تعتمد على فهم البروتوكولات مثل TCP/IP وDNS وHTTP، ومعرفة كيف تتواصل الأجهزة مع بعضها. بعد ذلك يجب فهم أنظمة التشغيل، خصوصًا لينكس وويندوز، من ناحية إدارة النظام، الصلاحيات، السجلات، وكيف تظهر الأنشطة غير الطبيعية داخل النظام. بعدها تنتقل إلى أساسيات الأمن السيبراني مثل أنواع الهجمات الشائعة، البرمجيات الخبيثة، التصيد، هجمات حجب الخدمة، وكيف تعمل أدوات الحماية. جزء مهم جدًا في هذا المسار هو التعامل مع أنظمة SIEM مثل Splunk أو ELK، لأنها الأداة الأساسية التي يستخدمها محلل SOC لمتابعة السجلات وتحليل الأحداث الأمنية. كما يفيدك تعلم أساسيات تحليل السجلات، قراءة الـ logs، وربط الأحداث ببعضها لاكتشاف نمط هجوم كامل وليس مجرد حدث منفصل. معرفة بسيطة بالبرمجة أو السكربتات مثل Python أو Bash تعتبر ميزة قوية لكنها ليست شرطًا في البداية. بالنسبة للمستوى الوظيفي، أغلب من يبدأون في هذا المجال يدخلون كـ SOC Analyst Tier 1، وهو مستوى تركيزه على المراقبة والتحليل الأولي. مع الخبرة، يمكن التدرج إلى Tier 2 ثم Tier 3، حيث يصبح الدور أكثر عمقًا في التحليل والاستجابة للحوادث. من حيث التعلم، توجد مصادر قوية جدًا باللغة الإنجليزية. من أفضل القنوات التعليمية على يوتيوب قناة NetworkChuck وقناة John Hammond، فهما يشرحان الأمن السيبراني بشكل عملي ومفهوم. كذلك قناة TryHackMe مفيدة جدًا لأنها تجمع بين الشرح والتطبيق العملي داخل بيئة محاكاة، وهي ممتازة لمن يريد دخول مجال SOC تحديدًا. منصة Blue Team Labs Online أيضًا متخصصة في الجانب الدفاعي وتحليل الحوادث. أما الدورات، فهناك مسارات جيدة على منصات مثل Coursera وUdemy تتحدث عن Cybersecurity Fundamentals وSOC Operations، بالإضافة إلى مسار SOC Analyst الموجود داخل TryHackMe، وهو من أفضل الخيارات للمبتدئين لأنه يربط المفاهيم بالواقع العملي مباشرة.
  4. وعليكم السلام ورحمة الله وبركاته، مساء الخير. يمكنك البدء في تعلّم الباك إند مباشرة دون الحاجة لإتقان الفرونت إند أولًا، لكن من المهم أن يكون لديك فهم عام لما يفعله الفرونت إند وكيف يتواصل مع الخادم. لا يُشترط أن تكون قادرًا على بناء واجهات كاملة، لكن فهم أساسيات مثل HTTP، الطلبات والاستجابات، النماذج، وواجهات API سيساعدك كثيرًا على استيعاب دورك كـ Backend Developer والعمل بسلاسة مع بقية الفريق. الطريق الثابت لاحتراف الباك إند يبدأ بفهم البرمجة نفسها بشكل جيد، أي إتقان لغة واحدة على الأقل ومفاهيم مثل المتغيرات، الشروط، الحلقات، والدوال. بعد ذلك تنتقل لفهم كيفية عمل الويب، مثل بروتوكول HTTP، أنواع الطلبات، الأكواد الخاصة بالاستجابات، والجلسات وملفات الكوكيز. بعدها تأتي خطوة تعلم إطار عمل Backend حقيقي، لأن العمل الفعلي لا يتم باللغات الخام، بل عبر أطر تسهّل بناء التطبيقات وتنظيمها. بالتوازي مع ذلك يجب تعلّم قواعد البيانات، سواء كانت علائقية مثل PostgreSQL وMySQL أو غير علائقية مثل MongoDB، مع فهم جيد لكيفية تصميم الجداول والعلاقات والاستعلامات. بعد هذه المرحلة يصبح من الضروري التعمق في مواضيع الأمان، التحقق من المستخدمين، الصلاحيات، حماية الـ APIs، ثم الانتقال إلى مفاهيم أكثر تقدمًا مثل تحسين الأداء، التخزين المؤقت، واختبار التطبيقات ونشرها على الخوادم. نعم، يمكنك باستخدام لغة بايثون أن تحترف مجال الباك إند بشكل كامل وقوي جدًا. بايثون تُستخدم على نطاق واسع في هذا المجال، ولها أطر عمل قوية مثل Django وFlask وFastAPI. إطار Django مناسب لبناء أنظمة كبيرة بسرعة وبهيكل واضح، بينما Flask وFastAPI أخف وأقرب لفلسفة الـ APIs الحديثة. كثير من الشركات والمشاريع الكبيرة تعتمد على بايثون في الباك إند، لذلك اختيارك لها خيار صحيح ومستقبلي.
  5. أفضل المصادر لتعلم n8n Automation بأسلوب عملي: 1. الموقع الرسمي والـ Docs الموقع الرسمي يملك توثيق مفصل يشرح: تثبيت n8n وتشغيله محليًا الواجهة إنشاء الـ Workflows Nodes وربط الخدمات المختلفة المواضيع فيه منتظمة ومن البداية حتى المتقدم، ويستحق أن تبدأ منه مباشرة. 2. قناة YouTube الرسمية قناة n8n على يوتيوب فيها فيديوهات قصيرة تشرح: الربط مع خدمات مثل Google Sheets، Discord، Slack إنشاء سيناريوهات عملية مقابلات وأمثلة واقعية الفيديوهات مفيدة لأنها تظهر لك الفعل وليس النظرية فقط. 3. قناة n8n على GitHub لو كنت تريد أن ترى: الافكار المتقدمة أمثلة على Workflows مفتوحة ملفات إعداد وأمثلة جاهزة فـ GitHub مفيد جدًا كمصدر تعلم تطبيقي وليس نظري فقط. 4. دورات عمليّة على منصات تعليمية قد لا تجد الكثير من الدورات العربية، لكن هناك دورات جيدة بالإنجليزية على منصات مثل: Udemy Coursera LinkedIn Learning ابحث عن: n8n Automation أو Workflow Automation with n8n الدورات هناك غالبًا تبدأ من الصفر وتشرح: المفاهيم الأساسية الربط مع API تشغيل التقارير التعامل مع الأخطاء 5. مجتمع n8n n8n لها مجتمع نشط في: Discord Reddit منتديات خاصة التواجد هناك مفيد جدًا لأنه يمكنك: طرح الأسئلة مشاركة Workflows رؤية حلول وأفكار الآخرين التعلم من المجتمع أسرع بكثير لأنك ترى تطبيقات واقعية. 6. مصادر تطبيقية ومشاريع جاهزة يوجد مواقع مثل: n8n.io/workflows StackOverflow يمكنك أن تأخذ Workflows جاهزة وتفككها لتعرف لماذا وكيف تعمل. هذا مهم جدًا لأن n8n تعتمد على: المنطق الربط بين الأحداث تحويل البيانات وهذه المهارات تُكتسب فقط بالتطبيق العملي. أفضل طريقة لتعلم n8n عمليًا ابدأ بمشروع صغير جدًا مثلاً: ربط Google Sheets مع Discord بحيث عند إضافة سطر جديد في الـ Sheet يُرسل رسالة في القناة. ثبّت n8n محليًا واعمل Demo بسيط. ابدأ بإضافة Node بعد Node وتعلم كيف تنتقل البيانات من خطوة لأخرى. جرّب سيناريوهات حقيقية مثل: إشعارات عند وصول طلب دمج CRM مع البريد A/B testing للـ Workflows راجع الأخطاء وكرر التعلم التكرار هنا يصنع الفهم الحقيقي.
  6. السبب الأساسي للنسيان هنا ليس أنك “لم تفهم”، بل لأن مسار الـ LLM يعتمد على مفاهيم مترابطة لا تترسخ بالحفظ أو بالمشاهدة فقط، بل بالاستخدام المتكرر في سياق حقيقي. لذلك إعادة الدراسة دون تطبيق عملي غالبًا تعطيك إحساسًا زائفًا بالفهم ثم يتبخر سريعًا. سؤالك: هل تدخل المسار التالي أم لا؟ الإجابة المختصرة: نعم، ادخل المسار التالي، ولكن بطريقة مختلفة عمّا فعلته سابقًا. ما الذي أنصحك به عمليًا؟ لا تعِد دراسة المسار كاملًا مرة ثالثة. هذا غالبًا لن يغيّر النتيجة. بدل ذلك: أولًا، حدّد ما المطلوب منك فعليًا من مسار الـ LLM أنت لا تحتاج أن تتذكر كل التفاصيل النظرية. المطلوب عادة أن تكون قادرًا على: فهم الفكرة العامة للنماذج اللغوية وكيف تعمل استخدام API لنموذج لغوي بناء تطبيق بسيط يعتمد على LLM فهم مفاهيم مثل prompt، context، embeddings، وRAG بشكل عملي إن كنت تستطيع تنفيذ هذه الأشياء بالرجوع للمراجع، فأنت بخير حتى لو “نسيت” التفاصيل. ثانيًا، طبّق فورًا أثناء الانتقال للمسار التالي وأنت في المسار القادم: ابنِ مشروعًا صغيرًا جدًا باستخدام LLM حتى لو كان: بوت أسئلة وأجوبة تلخيص ملفات مساعد بسيط لبياناتك كلما احتجت فكرة نسيتها، ارجع لها فقط في تلك اللحظة بهذه الطريقة تتحول المعلومة من “ذاكرة مؤقتة” إلى مهارة. ثالثًا، اعتمد على المراجعة الذكية لا الحفظ لا تحاول أن تتذكر كل شيء من رأسك. الطريقة الصحيحة هي: أن تعرف أين تجد المعلومة وأن تفهم متى ولماذا تستخدمها حتى المحترفون يرجعون للتوثيق باستمرار، وهذا طبيعي. رابعًا، تقبّل أن النسيان جزء من التعلم خصوصًا في الذكاء الاصطناعي، التعلّم تراكمي. اليوم لا ترى الصورة كاملة، بعد 3 أو 4 مشاريع، ستتفاجأ أن الأمور “ثبتت” وحدها دون حفظ متعمد.
  7. وعليكم السلام ورحمة الله وبركاته من الصورة يظهر أن المشكلة ليست في XAMPP نفسه، بل في Apache تحديدًا. الخطأ الأساسي هو: Port 80 in use Apache WILL NOT start without the configured ports free أي أن المنفذ 80 مستخدم من برنامج آخر، لذلك Apache يفشل في التشغيل. سبب المشكلة غالبًا أحد الأمور التالية: وجود برنامج آخر يعمل على المنفذ 80 مثل: IIS (خدمة الويب الخاصة بويندوز) Skype VMware Docker أي سيرفر محلي آخر أو أن Apache يعمل مسبقًا في الخلفية أو أن الخدمة محجوزة من النظام الحل الأول (الأسهل): تغيير منفذ Apache افتح XAMPP اضغط Config بجانب Apache اختر Apache (httpd.conf) ابحث عن السطر: Listen 80 وغيّره إلى: Listen 8080 ثم ابحث عن: ServerName localhost:80 وغيّره إلى: ServerName localhost:8080 احفظ الملف وأعد تشغيل XAMPP ثم شغّل Apache بعدها افتح المتصفح واكتب: http://localhost:8080 الحل الثاني: إيقاف البرنامج الذي يستخدم المنفذ 80 اضغط Win + R اكتب services.msc ابحث عن: World Wide Web Publishing Service إن وجدته، أوقفه واجعل Startup type = Disabled أعد تشغيل XAMPP وجرب تشغيل Apache. الحل الثالث: معرفة من يستخدم المنفذ افتح CMD كمسؤول واكتب: netstat -ano | findstr :80 سيظهر رقم PID بعدها افتح Task Manager وابحث عن نفس PID لمعرفة البرنامج.
  8. يمكنك الحصول على Redis بشكل عالمي ومجاني (أو بخطة مجانية قوية) من عدة منصات موثوقة، وهذه أشهرها للمبتدئين: أولًا: Redis Cloud (الرسمي) تقدمه شركة Redis نفسها. يوفر خطة مجانية بحجم صغير مناسبة للتجربة والتعلم، مع اتصال عالمي ومستقر. مميز لأنه رسمي، لكن السعة محدودة. ثانيًا: Upstash من أفضل الخيارات حاليًا. يوفر Redis عالمي (Serverless) مع خطة مجانية جيدة جدًا. سهل الربط مع Web و Node.js و Python و Cloud Functions. مناسب للمشاريع الصغيرة وReal-Time. ثالثًا: Railway يمكنك تشغيل Redis بنقرة واحدة. الخطة المجانية تعتمد على الرصيد الشهري، وغالبًا تكفي للتجارب. جيد إذا كنت تستخدم Railway لبقية المشروع. رابعًا: Render يدعم Redis ضمن خدماته. الخطة المجانية محدودة لكنها كافية للتعلم. مناسب إذا كنت تستضيف الـ Backend على Render. خامسًا: تشغيل Redis محليًا (للتعلم فقط) على جهازك باستخدام Docker أو WSL. ليس عالميًا، لكنه ممتاز للتجارب والتطوير. ملاحظة مهمة: لا يوجد Redis “غير محدود 100% مجاني” للإنتاج الحقيقي، لكن Upstash هو الأقرب لفكرة المجاني العالمي للمبتدئين والمشاريع الصغيرة.
  9. وعليكم السلام ورحمة الله وبركاته، سؤالك مهم جداً، لأن اختيار المسار الصحيح في البداية يوفّر عليك وقتاً وجهداً كبيرين. نعم، هناك وظائف تقنية أخرى مناسبة للمبتدئين غير Web Developer و SOC Analyst Tier 1، وبعضها أسهل دخولاً وأسرع من حيث فرص العمل. من أفضل الخيارات للمبتدئين حالياً: Web Developer (Front-end أو Back-end أو Full-stack) من أكثر المسارات طلباً. يمكن البدء بـ HTML و CSS و JavaScript ثم إطار عمل واحد مثل React أو Laravel. مناسب للعمل الحر والوظائف التقليدية. SOC Analyst Tier 1 مناسب لمن يميل للأمن السيبراني. لا يحتاج برمجة قوية في البداية، بل فهم الشبكات، أنظمة التشغيل، SIEM، ومفاهيم الهجمات. غالباً متاح للمبتدئين في الشركات الكبيرة. IT Support / Help Desk مدخل ممتاز للمجال التقني. يعلّمك أنظمة التشغيل، الشبكات، حل المشاكل، والتعامل مع المستخدمين. كثير من المحترفين بدأوا منه ثم انتقلوا لمسارات أقوى. QA / Software Tester اختبار البرمجيات يركز على التفكير المنطقي وتحليل السلوك وليس البرمجة العميقة في البداية. يمكن البدء بالاختبار اليدوي ثم الانتقال إلى Automation لاحقاً. Junior Data Analyst مناسب لمن يحب الأرقام. يتطلب Excel، SQL، وأساسيات Python أو Power BI. أسهل من الذكاء الاصطناعي وأسرع دخولاً لسوق العمل. No-Code / Low-Code Developer مثل استخدام أدوات Bubble، Webflow، n8n، Zapier. مطلوب حالياً في الشركات الصغيرة والناشئة، ولا يحتاج برمجة عميقة. Cloud Support Associate مبتدئ في مجال السحابة (AWS / Azure / GCP). يركز على الإعدادات، المراقبة، والدعم الفني، وليس التصميم المعقد. WordPress Developer ليس مجرد تركيب قوالب فقط، بل تخصيص مواقع، متاجر، وتحسين الأداء. مناسب للعمل الحر والدخول السريع للسوق. نصيحة مهمة: اختر المسار بناءً على ميولك، وليس فقط على “ما هو الرائج”. لو تحب البرمجة اختر Web أو Back-end، لو تحب التحليل اختر Data أو SOC، ولو تحب الحلول السريعة اختر No-Code أو QA.
  10. إذا أردت مشاريع أقل تعقيدًا من Social Media Developers Hub ولكن ما زالت تحدّي حقيقي وتعمل بالزمن الحقيقي (Real-Time) فهذه أمثلة مناسبة جدًا للتدرّب وبناء خبرة فعلية، دون أن تكون سطحية أو “لعب أطفال”: أولًا: نظام دردشة بسيط لغرفة واحدة تطبيق محادثة حيّة (Chat Room) يسمح لعدة مستخدمين بالدخول والتحدث في نفس الغرفة. ستتدرّب فيه على: التعامل مع WebSocket أو Firebase Realtime / Firestore إدارة المستخدمين المتصلين تحديث الواجهة فورًا بدون إعادة تحميل التعامل مع الرسائل والوقت (timestamps) هذا المشروع أساس ممتاز قبل أي منصة اجتماعية كبيرة. ثانيًا: نظام تتبع الطلبات (Order Tracking System) مثل نظام مطعم أو توصيل. المستخدم يطلب، والإدارة تغيّر حالة الطلب، والمستخدم يرى التحديث لحظيًا. تحدّيه الحقيقي: Real-time updates لحالة الطلب فصل الصلاحيات (مستخدم / مشرف) لوحة تحكم بسيطة هذا قريب جدًا من تطبيقات حقيقية في السوق. ثالثًا: لوحة إعلانات حيّة (Live Notice Board) تطبيق يسمح بنشر إعلانات أو تنبيهات تظهر فورًا لجميع المستخدمين. تتعلّم فيه: Real-time broadcasting إدارة المحتوى تحديث الواجهة لجميع المستخدمين بنفس اللحظة مفيد جدًا لفهم كيف تعمل الأنظمة الجماعية. رابعًا: نظام حجز مواعيد مع تحديث لحظي مثل حجز طبيب أو صالون. المواعيد المحجوزة تختفي فورًا من باقي المستخدمين. التحدي هنا: منع التعارض (Race Conditions) التحديث الفوري التعامل مع الوقت والتاريخ هذا مشروع قوي ومحبوب في المقابلات. خامسًا: نظام أسئلة وأجوبة مباشر (Mini Q&A Platform) المستخدم يطرح سؤال، الآخرون يجيبون، والتصويت يحدث لحظيًا. ستتدرّب على: Real-time voting ترتيب المحتوى ديناميكيًا التعامل مع البيانات المتغيرة باستمرار نسخة مصغّرة جدًا من StackOverflow. سادسًا: لوحة مهام جماعية (Real-Time Task Board) مثل Trello لكن بشكل مبسّط. عدة مستخدمين يضيفون ويعدّلون المهام وتظهر التغييرات فورًا. تحدياته: التزامن إدارة الحالة التعامل مع تعدد المستخدمين مشروع ممتاز لفهم التطبيقات التعاونية. لماذا هذه المشاريع أفضل لك الآن؟ لأنها: أصغر من منصة اجتماعية كاملة لكن تحتوي مشاكل حقيقية من الواقع وتجعلك تفهم Real-Time بعمق وتبني عقلية مهندس وليس مجرد كاتب كود
  11. استعمال Bootstrap أو أي إطار عمل آخر لا يُضعف مستوى المبرمج بحد ذاته، لكن طريقة الاستعمال هي التي قد تؤثر سلبًا أو إيجابًا. إطارات العمل وُجدت لتسريع العمل، وتنظيم الواجهات، وتوحيد الأسلوب، خاصة في المشاريع الحقيقية التي يُهم فيها الوقت والجودة أكثر من إعادة اختراع كل شيء من الصفر. المبرمج المحترف في الواقع العملي يستخدم الأطر باستمرار، ولا يُنظر إلى ذلك على أنه ضعف أبدًا. المشكلة تظهر فقط في حالة واحدة، وهي أن يعتمد المتعلم على الإطار دون أن يفهم الأساسيات التي يقوم عليها. فإذا كان الشخص لا يفهم كيف يعمل flexbox أو grid، ولا يعرف أساسيات CSS مثل box model أو positioning، ثم يستخدم Bootstrap فقط عن طريق نسخ الأصناف الجاهزة، هنا فعلاً سيتكوّن اعتماد زائد، وسيشعر بالعجز عند العمل بدون إطار. أما إذا تعلم الأساسيات أولًا، وفهم HTML وCSS جيدًا، ثم استخدم Bootstrap كأداة لتوفير الوقت، فلن يفقد قدرته أبدًا على كتابة كود يدويًا. بل العكس، سيصبح قادرًا على تخصيص الإطار، وتعديل سلوكه، بل وحتى الاستغناء عنه عند الحاجة. بمعنى آخر، Bootstrap لا يُعلّمك، لكنه أيضًا لا يمنعك من التعلّم. أنت من يحدد كيف تستخدمه. من العلامات الجيدة أنك ما زلت على المسار الصحيح: أن تستطيع بناء صفحة بسيطة بدون أي إطار. أن تفهم ماذا يفعل كل class تستخدمه، ولو بشكل عام. أن تعرف كيف تحقق نفس النتيجة بـ CSS خام حتى لو لم تفعلها دائمًا. وفي الحياة العملية، كثير من المطورين الأكفاء جدًا يستخدمون Bootstrap أو Tailwind أو غيرها يوميًا، ومع ذلك يستطيعون كتابة كود نظيف بدون أي إطار عند الحاجة.
  12. وعليكم السلام ورحمة الله وبركاته، قبل الدخول في تعلّم الذكاء الاصطناعي، من المهم أن تكون لديك قاعدة رياضية متينة، لأن معظم خوارزميات الذكاء الاصطناعي وتعلّم الآلة مبنية أساسًا على مفاهيم رياضية واضحة. لا يشترط أن تكون خبيرًا رياضيًا، لكن الفهم الجيد أهم بكثير من الحفظ. أول ما يجب التركيز عليه هو الجبر. تحتاج إلى فهم المتغيرات والمعادلات، حل المعادلات الخطية، التعامل مع الدوال، وفهم فكرة المتجهات والمصفوفات بشكل مبدئي. هذه المفاهيم تُستخدم مباشرة في تمثيل البيانات وفي كيفية تعلّم النماذج من القيم الرقمية. بعد ذلك تأتي المصفوفات والجبر الخطي، وهو من أهم الأساسيات في الذكاء الاصطناعي. يجب أن تفهم ما هي المصفوفة، كيفية جمعها وضربها، معنى المتجه، والفرق بين الضرب العادي والضرب المصفوفي. كذلك من المهم فهم مفهوم التحويلات الخطية، لأن الشبكات العصبية في جوهرها عمليات جبر خطي متتالية. ثالثًا، التفاضل والتكامل، وبالأخص التفاضل. لا تحتاج إلى الغوص العميق في التكامل المعقّد، لكن يجب أن تفهم معنى المشتقة، ولماذا تُستخدم، وكيف تساعد في معرفة اتجاه التغيّر. هذا المفهوم هو الأساس في خوارزميات التدريب مثل الانحدار التدريجي، حيث يتم تحسين النموذج خطوة بخطوة. رابعًا، الاحتمالات والإحصاء. هذا الجزء مهم لفهم كيفية التعامل مع البيانات وعدم اليقين. يجب أن تفهم معنى الاحتمال، التوزيعات الاحتمالية، المتوسط الحسابي، الوسيط، الانحراف المعياري، والتباين. هذه المفاهيم تُستخدم في تحليل البيانات، تقييم النماذج، وفهم نتائج التنبؤ. خامسًا، أساسيات التحليل العددي والمنطق الرياضي بشكل عام. مثل فهم التقريب، الأخطاء العددية، ولماذا لا تكون النتائج دائمًا دقيقة بنسبة مئة بالمئة. هذا يساعدك على فهم سلوك النماذج في الواقع العملي. لو أردنا تحويل ذلك إلى مسار تعلّم عملي، فيمكنك البدء بالجبر الأساسي، ثم الجبر الخطي، بعدها التفاضل، ثم الاحتمالات والإحصاء، وكل ذلك مع تطبيقات بسيطة باستخدام البرمجة، وخصوصًا بلغة بايثون، لأن التطبيق العملي يرسّخ المفاهيم أكثر من الدراسة النظرية وحدها.
  13. اولًا يجب أن تفهم طبيعة العمل أنت لا تكتب بيانات جاهزة فقط، بل ستقوم بجرد فعلي للمتجر. هذا يعني أنك ستتعامل مع عدد كبير من الأصناف، وستحسب الكميات، وتدوّن الأسعار، وربما تصحّح أخطاء أو تسأل عن منتجات متشابهة. هذا عمل يتطلب وقتًا وتركيزًا ومسؤولية. ثانيًا ما الذي يحدد السعر؟ السعر لا يُحسب هكذا مباشرة، بل يعتمد على عدة أمور، أهمها عدد المنتجات، حجم المتجر، هل الأسعار واضحة أم تحتاج سؤال صاحب المتجر، وهل ستعمل في مكان المتجر أم ستأخذ البيانات وتعمل عليها لاحقًا. لكن أبسط طريقة عادلة للتسعير هي الاعتماد على الوقت، لأنك لا تعرف مسبقًا كم صنف بالضبط. ثالثًا تسعير تقريبي عملي في العادة، إدخال بيانات منتج واحد في إكسل مع الكمية والسعر قد يأخذ من نصف دقيقة إلى دقيقة إذا كان كل شيء واضحًا. لو افترضنا أن المتجر فيه 500 منتج، فهذا يعني من 6 إلى 8 ساعات عمل تقريبًا، وربما أكثر إذا كان العمل مرهقًا. تسعير منطقي في هذه الحالة يكون بالأجر اليومي أو بالساعة، وليس بالمشروع ككل. كم تطلب؟ إن كنت في بلد عربي، فطلب أجر يوم عمل كامل يتراوح عادة بين 20 إلى 40 دولارًا حسب بلدك ومستوى الخبرة. إن حسبتها بالساعة، فبين 3 إلى 7 دولارات للساعة يعد رقمًا مقبولًا لهذا النوع من العمل. لو كان المتجر كبيرًا جدًا (ألف صنف أو أكثر)، من حقك أن تطلب أكثر أو تقسّم العمل على أيام. رابعًا كيف تتفق معه بذكاء؟ قبل أن تبدأ، قل له بوضوح إن السعر يعتمد على عدد الأصناف والوقت، واقترح أحد حلّين: إما أجر بالساعة أو أجر يومي محدد ولا تبدأ العمل قبل الاتفاق حتى لا تجد نفسك تعمل ساعات طويلة بأجر قليل. خامسًا نصيحة مهمة لا تُقلّل من قيمة عملك، فصاحب المتجر سيبني قراراته التجارية لاحقًا على هذه البيانات، وهي أساس إدارة المخزون والمحاسبة. عملك ليس مجرد كتابة، بل تنظيم معلومات مهمة.
  14. وعليكم السلام ورحمة الله وبركاته فكرة التطبيق ممتازة ومناسبة جدًا لطبيعة الخدمات المحلية، ووجود غرف دردشة لكل قرية سيزيد التفاعل ويجعل التطبيق حيًّا فعليًا. بما أنك تستخدم Firebase فاختيارك موفق، لأنه مناسب جدًا لهذا النوع من التطبيقات. سأشرح لك الفكرة بشكل متكامل من ناحية التصميم، قاعدة البيانات، وآلية العمل، دون الدخول في تعقيد غير ضروري. أولًا: الفكرة العامة للنظام أنت لا تحتاج إلى “غرفة دردشة” بالمعنى المعقد، بل نظام رسائل بسيط مرتبط بكل قرية. كل قرية يكون لها Chat خاص بها، وأي مستخدم يدخل القرية يستطيع القراءة والكتابة ضمن هذا الشات حسب الصلاحيات. ثانيًا: أي خدمة من Firebase تختار؟ Firebase يوفر حلّين مناسبين: Cloud Firestore و Realtime Database للتطبيقات التي تعتمد على الدردشة، Realtime Database أبسط وأسرع في التنفيذ، بينما Firestore أنظم وأفضل للتوسع مستقبلاً. إن كنت في البداية، أنصحك بـ Firestore لأنه أكثر مرونة وأسهل في التحكم بالصلاحيات. ثالثًا: تصميم قاعدة البيانات (Firestore) فكرة التصميم تكون هكذا منطقيًا: collection اسمها villages داخلها documents تمثل القرى كل document يحتوي معلومات القرية (الاسم، المعرف، إلخ) داخل كل قرية، collection اسمها chatMessages كل رسالة تكون document مستقل محتوى الرسالة عادة يكون: معرّف المستخدم اسم المستخدم نص الرسالة تاريخ الإرسال (Timestamp) اختياري: نوع الرسالة (نص، صورة لاحقًا) بهذا الشكل، كل قرية لها سجل دردشة منفصل وواضح. رابعًا: ربط المستخدمين بالدردشة أي مستخدم مسجّل دخول (باستخدام Firebase Authentication) يستطيع: الدخول إلى صفحة القرية تحميل آخر الرسائل إرسال رسالة جديدة من المهم أن تعتمد دائمًا على userId القادم من Firebase Auth، ولا تسمح للمستخدم بتمرير اسمه أو هويته يدويًا حتى لا يتم التلاعب. خامسًا: عرض الرسائل في الواجهة تستخدم Listener من Firestore للاستماع للتغييرات اللحظية. عند إضافة رسالة جديدة: تظهر فورًا لكل المستخدمين داخل نفس القرية دون تحديث الصفحة. تقوم بترتيب الرسائل حسب التاريخ من الأقدم إلى الأحدث، أو العكس حسب التصميم الذي تريده. سادسًا: الحماية ومنع الفوضى هذه نقطة مهمة جدًا. يجب ضبط Firebase Security Rules بحيث: لا يسمح بالقراءة والكتابة إلا للمستخدمين المسجلين لا يسمح بتعديل أو حذف الرسائل يسمح فقط بإضافة رسالة جديدة يتم التحقق أن userId في الرسالة يساوي المستخدم الحالي بهذا تحمي النظام من التخريب أو التلاعب. سابعًا: التبليغ والإشراف بما أن الشات مفتوح للعامة، من الأفضل: إضافة زر “إبلاغ عن رسالة” تخزين البلاغات في collection منفصل أو على الأقل تسجيل الرسائل المسيئة لمراجعتها لاحقًا ويمكنك لاحقًا إضافة مشرف لكل قرية. ثامنًا: الأداء وعدد الرسائل حتى لا يبطئ التطبيق: لا تحمل كل الرسائل دفعة واحدة حمّل آخر 50 أو 100 رسالة فقط وعند التمرير للأعلى، حمّل رسائل أقدم Firebase يدعم هذا الأسلوب بسهولة. تاسعًا: التوسّع مستقبلاً بعد نجاح النظام، يمكنك إضافة: إرسال صور رد على رسالة إشعارات عند وصول رسالة جديدة غرف دردشة حسب نوع الخدمة (نقل، كهرباء، مياه، إلخ) لكن في البداية ركّز على النص فقط.
  15. وعليكم السلام ورحمة الله وبركاته، مساء النور. عدم ظهور خيار Auto Save في قائمة File لا يعني وجود مشكلة لديك بالضرورة، وغالبًا لا يتعلق بخلل في برنامج VS Code. في بعض الإصدارات أو حسب اللغة المختارة للواجهة، قد لا يظهر خيار الحفظ التلقائي بشكل واضح داخل قائمة File، لكنه يكون موجودًا ويمكن التحكم به من الإعدادات مباشرة. يمكنك التأكد من تفعيل الحفظ التلقائي بطريقتين بسيطتين: الأولى عبر الإعدادات، حيث تفتح Settings ثم تكتب في خانة البحث Auto Save، وستجد خيارًا باسم Files: Auto Save، ومن هناك تستطيع تفعيله واختيار متى يتم الحفظ، مثل عند فقدان التركيز أو بعد تأخير زمني بسيط. الطريقة الثانية باستخدام لوحة الأوامر، وذلك بالضغط على Ctrl + Shift + P ثم كتابة Auto Save، وستظهر لك أوامر تفعيل أو تعطيل الحفظ التلقائي مباشرة. أما بخصوص التحديث، فليس من الضروري أن يكون السبب هو إصدار قديم، لأن ميزة Auto Save موجودة منذ فترة طويلة في VS Code. لكن يفضل دائمًا استخدام إصدار حديث لتفادي أي اختلافات في الواجهة أو الإعدادات. باختصار، الميزة موجودة لديك على الأغلب، لكنها مخفية داخل الإعدادات أو لوحة الأوامر وليست مشكلة تحديث.
×
×
  • أضف...