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

Sherif Aboghazala

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

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

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

كل منشورات العضو Sherif Aboghazala

  1. وعليكم السلام ورحمة الله وبركاته من الصورة يظهر أن المشكلة ليست في 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 لمعرفة البرنامج.
  2. يمكنك الحصول على 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 هو الأقرب لفكرة المجاني العالمي للمبتدئين والمشاريع الصغيرة.
  3. وعليكم السلام ورحمة الله وبركاته، سؤالك مهم جداً، لأن اختيار المسار الصحيح في البداية يوفّر عليك وقتاً وجهداً كبيرين. نعم، هناك وظائف تقنية أخرى مناسبة للمبتدئين غير 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.
  4. إذا أردت مشاريع أقل تعقيدًا من 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 بعمق وتبني عقلية مهندس وليس مجرد كاتب كود
  5. استعمال Bootstrap أو أي إطار عمل آخر لا يُضعف مستوى المبرمج بحد ذاته، لكن طريقة الاستعمال هي التي قد تؤثر سلبًا أو إيجابًا. إطارات العمل وُجدت لتسريع العمل، وتنظيم الواجهات، وتوحيد الأسلوب، خاصة في المشاريع الحقيقية التي يُهم فيها الوقت والجودة أكثر من إعادة اختراع كل شيء من الصفر. المبرمج المحترف في الواقع العملي يستخدم الأطر باستمرار، ولا يُنظر إلى ذلك على أنه ضعف أبدًا. المشكلة تظهر فقط في حالة واحدة، وهي أن يعتمد المتعلم على الإطار دون أن يفهم الأساسيات التي يقوم عليها. فإذا كان الشخص لا يفهم كيف يعمل flexbox أو grid، ولا يعرف أساسيات CSS مثل box model أو positioning، ثم يستخدم Bootstrap فقط عن طريق نسخ الأصناف الجاهزة، هنا فعلاً سيتكوّن اعتماد زائد، وسيشعر بالعجز عند العمل بدون إطار. أما إذا تعلم الأساسيات أولًا، وفهم HTML وCSS جيدًا، ثم استخدم Bootstrap كأداة لتوفير الوقت، فلن يفقد قدرته أبدًا على كتابة كود يدويًا. بل العكس، سيصبح قادرًا على تخصيص الإطار، وتعديل سلوكه، بل وحتى الاستغناء عنه عند الحاجة. بمعنى آخر، Bootstrap لا يُعلّمك، لكنه أيضًا لا يمنعك من التعلّم. أنت من يحدد كيف تستخدمه. من العلامات الجيدة أنك ما زلت على المسار الصحيح: أن تستطيع بناء صفحة بسيطة بدون أي إطار. أن تفهم ماذا يفعل كل class تستخدمه، ولو بشكل عام. أن تعرف كيف تحقق نفس النتيجة بـ CSS خام حتى لو لم تفعلها دائمًا. وفي الحياة العملية، كثير من المطورين الأكفاء جدًا يستخدمون Bootstrap أو Tailwind أو غيرها يوميًا، ومع ذلك يستطيعون كتابة كود نظيف بدون أي إطار عند الحاجة.
  6. وعليكم السلام ورحمة الله وبركاته، قبل الدخول في تعلّم الذكاء الاصطناعي، من المهم أن تكون لديك قاعدة رياضية متينة، لأن معظم خوارزميات الذكاء الاصطناعي وتعلّم الآلة مبنية أساسًا على مفاهيم رياضية واضحة. لا يشترط أن تكون خبيرًا رياضيًا، لكن الفهم الجيد أهم بكثير من الحفظ. أول ما يجب التركيز عليه هو الجبر. تحتاج إلى فهم المتغيرات والمعادلات، حل المعادلات الخطية، التعامل مع الدوال، وفهم فكرة المتجهات والمصفوفات بشكل مبدئي. هذه المفاهيم تُستخدم مباشرة في تمثيل البيانات وفي كيفية تعلّم النماذج من القيم الرقمية. بعد ذلك تأتي المصفوفات والجبر الخطي، وهو من أهم الأساسيات في الذكاء الاصطناعي. يجب أن تفهم ما هي المصفوفة، كيفية جمعها وضربها، معنى المتجه، والفرق بين الضرب العادي والضرب المصفوفي. كذلك من المهم فهم مفهوم التحويلات الخطية، لأن الشبكات العصبية في جوهرها عمليات جبر خطي متتالية. ثالثًا، التفاضل والتكامل، وبالأخص التفاضل. لا تحتاج إلى الغوص العميق في التكامل المعقّد، لكن يجب أن تفهم معنى المشتقة، ولماذا تُستخدم، وكيف تساعد في معرفة اتجاه التغيّر. هذا المفهوم هو الأساس في خوارزميات التدريب مثل الانحدار التدريجي، حيث يتم تحسين النموذج خطوة بخطوة. رابعًا، الاحتمالات والإحصاء. هذا الجزء مهم لفهم كيفية التعامل مع البيانات وعدم اليقين. يجب أن تفهم معنى الاحتمال، التوزيعات الاحتمالية، المتوسط الحسابي، الوسيط، الانحراف المعياري، والتباين. هذه المفاهيم تُستخدم في تحليل البيانات، تقييم النماذج، وفهم نتائج التنبؤ. خامسًا، أساسيات التحليل العددي والمنطق الرياضي بشكل عام. مثل فهم التقريب، الأخطاء العددية، ولماذا لا تكون النتائج دائمًا دقيقة بنسبة مئة بالمئة. هذا يساعدك على فهم سلوك النماذج في الواقع العملي. لو أردنا تحويل ذلك إلى مسار تعلّم عملي، فيمكنك البدء بالجبر الأساسي، ثم الجبر الخطي، بعدها التفاضل، ثم الاحتمالات والإحصاء، وكل ذلك مع تطبيقات بسيطة باستخدام البرمجة، وخصوصًا بلغة بايثون، لأن التطبيق العملي يرسّخ المفاهيم أكثر من الدراسة النظرية وحدها.
  7. اولًا يجب أن تفهم طبيعة العمل أنت لا تكتب بيانات جاهزة فقط، بل ستقوم بجرد فعلي للمتجر. هذا يعني أنك ستتعامل مع عدد كبير من الأصناف، وستحسب الكميات، وتدوّن الأسعار، وربما تصحّح أخطاء أو تسأل عن منتجات متشابهة. هذا عمل يتطلب وقتًا وتركيزًا ومسؤولية. ثانيًا ما الذي يحدد السعر؟ السعر لا يُحسب هكذا مباشرة، بل يعتمد على عدة أمور، أهمها عدد المنتجات، حجم المتجر، هل الأسعار واضحة أم تحتاج سؤال صاحب المتجر، وهل ستعمل في مكان المتجر أم ستأخذ البيانات وتعمل عليها لاحقًا. لكن أبسط طريقة عادلة للتسعير هي الاعتماد على الوقت، لأنك لا تعرف مسبقًا كم صنف بالضبط. ثالثًا تسعير تقريبي عملي في العادة، إدخال بيانات منتج واحد في إكسل مع الكمية والسعر قد يأخذ من نصف دقيقة إلى دقيقة إذا كان كل شيء واضحًا. لو افترضنا أن المتجر فيه 500 منتج، فهذا يعني من 6 إلى 8 ساعات عمل تقريبًا، وربما أكثر إذا كان العمل مرهقًا. تسعير منطقي في هذه الحالة يكون بالأجر اليومي أو بالساعة، وليس بالمشروع ككل. كم تطلب؟ إن كنت في بلد عربي، فطلب أجر يوم عمل كامل يتراوح عادة بين 20 إلى 40 دولارًا حسب بلدك ومستوى الخبرة. إن حسبتها بالساعة، فبين 3 إلى 7 دولارات للساعة يعد رقمًا مقبولًا لهذا النوع من العمل. لو كان المتجر كبيرًا جدًا (ألف صنف أو أكثر)، من حقك أن تطلب أكثر أو تقسّم العمل على أيام. رابعًا كيف تتفق معه بذكاء؟ قبل أن تبدأ، قل له بوضوح إن السعر يعتمد على عدد الأصناف والوقت، واقترح أحد حلّين: إما أجر بالساعة أو أجر يومي محدد ولا تبدأ العمل قبل الاتفاق حتى لا تجد نفسك تعمل ساعات طويلة بأجر قليل. خامسًا نصيحة مهمة لا تُقلّل من قيمة عملك، فصاحب المتجر سيبني قراراته التجارية لاحقًا على هذه البيانات، وهي أساس إدارة المخزون والمحاسبة. عملك ليس مجرد كتابة، بل تنظيم معلومات مهمة.
  8. وعليكم السلام ورحمة الله وبركاته فكرة التطبيق ممتازة ومناسبة جدًا لطبيعة الخدمات المحلية، ووجود غرف دردشة لكل قرية سيزيد التفاعل ويجعل التطبيق حيًّا فعليًا. بما أنك تستخدم 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 يدعم هذا الأسلوب بسهولة. تاسعًا: التوسّع مستقبلاً بعد نجاح النظام، يمكنك إضافة: إرسال صور رد على رسالة إشعارات عند وصول رسالة جديدة غرف دردشة حسب نوع الخدمة (نقل، كهرباء، مياه، إلخ) لكن في البداية ركّز على النص فقط.
  9. وعليكم السلام ورحمة الله وبركاته، مساء النور. عدم ظهور خيار Auto Save في قائمة File لا يعني وجود مشكلة لديك بالضرورة، وغالبًا لا يتعلق بخلل في برنامج VS Code. في بعض الإصدارات أو حسب اللغة المختارة للواجهة، قد لا يظهر خيار الحفظ التلقائي بشكل واضح داخل قائمة File، لكنه يكون موجودًا ويمكن التحكم به من الإعدادات مباشرة. يمكنك التأكد من تفعيل الحفظ التلقائي بطريقتين بسيطتين: الأولى عبر الإعدادات، حيث تفتح Settings ثم تكتب في خانة البحث Auto Save، وستجد خيارًا باسم Files: Auto Save، ومن هناك تستطيع تفعيله واختيار متى يتم الحفظ، مثل عند فقدان التركيز أو بعد تأخير زمني بسيط. الطريقة الثانية باستخدام لوحة الأوامر، وذلك بالضغط على Ctrl + Shift + P ثم كتابة Auto Save، وستظهر لك أوامر تفعيل أو تعطيل الحفظ التلقائي مباشرة. أما بخصوص التحديث، فليس من الضروري أن يكون السبب هو إصدار قديم، لأن ميزة Auto Save موجودة منذ فترة طويلة في VS Code. لكن يفضل دائمًا استخدام إصدار حديث لتفادي أي اختلافات في الواجهة أو الإعدادات. باختصار، الميزة موجودة لديك على الأغلب، لكنها مخفية داخل الإعدادات أو لوحة الأوامر وليست مشكلة تحديث.
  10. ما قمتَ به في الصورة صحيح من حيث المبدأ، وطريقتك في التفكير سليمة تمامًا. عند كتابة: name = "Mohamad Amin" فقد قمتَ بتخزين نص (سلسلة نصية) داخل متغير. عند استخدام: name[0] فهذا يعني الوصول إلى أول حرف في السلسلة، وهو الحرف M. لكن يجب كتابة القوس بالشكل الصحيح [ ]، لأن استخدام } يؤدي إلى خطأ نحوي (SyntaxError)، وهذا ما حدث لديك في أحد الأسطر. عند كتابة: name[-3] فأنت تطلب من بايثون إرجاع ثالث حرف من نهاية الكلمة، وكانت النتيجة صحيحة. أما بخصوص تغيير حرف أو جزء من الكلمة، فهنا نقطة مهمة: السلاسل النصية في بايثون غير قابلة للتعديل مباشرة، أي لا يمكنك تغيير حرف داخل النص نفسه. لذلك الحل الصحيح هو إنشاء نص جديد باستخدام القص (slicing). عندما كتبت: name[:-3] فهذا يعني: خذ النص من البداية وحتى قبل آخر ثلاثة أحرف. وعند دمجها مع: name[:-3] + "min" فأنت أنشأت سلسلة جديدة، وكانت النتيجة: "Mohamad Armin" وهذا هو الأسلوب الصحيح لتغيير جزء من الكلمة في بايثون.
  11. بشكل عام، الفرق بين هذه الرموز مرتبط بالغرض البرمجي منها وليس بشكلها. الأقواس الدائرية () تُستخدم غالبًا عند استدعاء الدوال أو تعريفها، وكذلك في الشروط والعمليات الحسابية لتحديد أولوية التنفيذ. عندما ترى أقواسًا دائرية فهذا يعني عادةً “نفّذ شيئًا” أو “قيّم تعبيرًا”. مثلًا عند استدعاء دالة، أو عند كتابة شرط if، أو عند تجميع عملية حسابية. الأقواس المربعة [] تُستخدم غالبًا مع البيانات المتسلسلة. ستجدها عند التعامل مع المصفوفات أو القوائم أو عند الوصول إلى عنصر معيّن باستخدام الفهرس. في بعض اللغات تُستخدم أيضًا لتعريف مصفوفة أو للوصول إلى قيمة داخل كائن باستخدام مفتاح. وجودها غالبًا يدل على “عنصر داخل مجموعة”. الأقواس المعقوفة {} لها استخدامات أوسع وتختلف قليلًا حسب اللغة، لكنها غالبًا تعبّر عن كتلة من الكود أو بنية بيانات. تُستخدم لتعريف جسم الدالة أو الشرط أو الحلقة، وتُستخدم أيضًا لتعريف الكائنات أو القواميس. عندما ترى {} فهذا يعني أنك أمام مجموعة تعليمات أو مجموعة قيم مرتبطة ببعضها. الفكرة الأساسية التي تساعدك على التمييز هي أن: () مرتبطة بالتنفيذ والتقييم [] مرتبطة بالوصول إلى عناصر {} مرتبطة ببنية أو كتلة أو تجميع منطقي مع الوقت وكثرة التطبيق سيصبح استخدام هذه الرموز بديهيًا ولن تحتاج للتفكير فيها. ملاحظة: لو كان السؤال متعلقًا بمحتوى درس معيّن أو كود داخل دورة، فنحن لا نجيب عليه هنا بهذه الطريقة. في هذه الحالة ستجد أسفل فيديو الدرس صندوق التعليقات كما هنا، ويُرجى طرح سؤالك أسفل الدرس نفسه، وليس في قسم الأسئلة العامة، وذلك حتى نعرف الدرس الذي توجد به مشكلتك ونستطيع مساعدتك بدقة
  12. فكرتك منطقية جدًا، ولا أحد يعيد كتابة هذا العدد من الأسئلة يدويًا إذا كان هناك حل عملي. الطريقة المثلى في حالتك تعتمد على خطوة أساسية وهي تحويل الصور إلى نص أولًا، ثم تنظيم هذا النص وتحويله إلى JSON. لا توجد طريقة مباشرة تقفز من صورة إلى JSON بدون المرور بمرحلة استخراج النص. أول ما تحتاجه هو استخدام تقنية OCR، وهي المسؤولة عن قراءة النص الموجود داخل الصور. هذه التقنية تقوم بتحويل الصورة إلى نص عادي يمكنك التعامل معه برمجيًا. جودة النتيجة تعتمد كثيرًا على وضوح الصور، نوع الخط، وهل النص عربي أم إنجليزي. إذا كانت الصور واضحة والأسئلة مكتوبة بخط مطبوع فالناتج غالبًا سيكون جيدًا. بعد أن تحصل على النص، ستجد أن الأسئلة والأجوبة أصبحت مجرد نص متتابع. هنا يأتي دورك في تنظيمه. غالبًا الأسئلة تكون بنمط متكرر مثل: سؤال ثم عدة اختيارات أو إجابة صحيحة. يمكنك كتابة سكربت بسيط بلغة مثل Python يقرأ النص ويقسمه بناءً على هذا النمط، ثم يحوله إلى كائنات JSON تحتوي على السؤال، الاختيارات، والإجابة الصحيحة. مثلًا، كل سؤال يصبح عنصرًا واحدًا داخل مصفوفة، وداخله نص السؤال، قائمة الإجابات، وتحديد الإجابة الصحيحة. هذه المرحلة تحتاج بعض التعديل اليدوي في البداية، لكن بعد ضبط القواعد، يمكن معالجة مئات الأسئلة دفعة واحدة. لو أردت تقليل الجهد أكثر، يمكنك استخدام أدوات OCR تدعم العربية بشكل جيد، ثم تمرير النص الناتج إلى سكربت يعيد ترتيبه. بعض الناس يراجعون النتائج سريعًا بعد التحويل بدل الكتابة من الصفر، وهذا يوفر وقتًا كبيرًا. الخلاصة أن الحل الأفضل ليس تحويل الصور مباشرة إلى JSON، بل بناء مسار منطقي: صورة ثم نص، ثم تنظيم النص، ثم JSON. في البداية ستأخذ منك بعض الوقت لضبط العملية، لكن بعد ذلك ستوفر عليك ساعات طويلة من العمل اليدوي.
  13. وعليكم السلام ورحمة الله استضافة dzsecurity هي استضافة تقليدية (Shared Hosting)، وهذا النوع من الاستضافات لا يشغّل React مباشرة لأنه لا يدعم Node.js لتشغيل السيرفر، لكن يمكن رفع موقع React عليها بعد تحويله إلى ملفات ثابتة. الفكرة ببساطة أن React أثناء التطوير يعمل كسيرفر، أما عند النشر فنحن لا نرفع المشروع كاملًا، بل نرفع الناتج النهائي فقط. أول خطوة على جهازك هي بناء نسخة الإنتاج من المشروع. تدخل إلى مجلد مشروع React وتنفّذ أمر البناء. هذا الأمر يقوم بتحويل المشروع إلى HTML وCSS وJavaScript جاهزة للتشغيل على أي استضافة عادية. بعد الانتهاء سيظهر لديك مجلد جديد غالبًا اسمه build أو dist حسب الأداة المستخدمة. بعد ذلك تدخل إلى لوحة التحكم في استضافة dzsecurity، وغالبًا ستكون cPanel. من هناك تفتح مدير الملفات وتدخل إلى مجلد public_html، لأن هذا هو المجلد الذي تُعرض منه الملفات على المتصفح. إذا كان داخله ملفات قديمة يمكنك حذفها أو نقلها. الآن تقوم برفع محتويات مجلد build نفسه إلى داخل public_html، وليس المجلد كاملًا. المهم أن يكون ملف index.html موجودًا مباشرة داخل public_html. بعد رفع الملفات، افتح موقعك من المتصفح. في أغلب الحالات سيعمل مباشرة. إذا وجدت أن التنقل بين الصفحات لا يعمل ويظهر لك خطأ 404 عند تحديث الصفحة، فهذا بسبب أن React يعتمد على routing داخلي، والاستضافة لا تعرف ذلك. لحل هذه المشكلة تحتاج إلى إضافة ملف بسيط اسمه .htaccess داخل public_html. هذا الملف يخبر السيرفر أن أي رابط غير معروف يجب أن يعود إلى index.html، وبهذا يعمل الموقع بشكل طبيعي. أيضًا انتبه قبل البناء أن تضبط المسار الصحيح للموقع. إذا كان الموقع على الدومين الرئيسي فالأمر طبيعي، أما إذا كان داخل مجلد فرعي فيجب تعديل إعدادات React قبل البناء حتى لا تتكسر المسارات. باختصار، React لا يُرفع ككود تشغيل، بل يُرفع كناتج جاهز. طالما حصلت على ملفات HTML وJS النهائية، فهذه الاستضافة كافية تمامًا. إذا أردت لاحقًا موقع React مع Backend أو API، فستحتاج إما إلى استضافة تدعم Node.js أو فصل الواجهة الأمامية عن الخلفية كل واحد على استضافة مختلفة.
  14. العملية تتكون من 3 خطوات رئيسية داخل ملف الـ HTML الأساسي (الذي يحتوي على وسم <head>): 1. تعديل وسم الصفحة (HTML Tag) أول سطر في ملف القالب يجب أن يخبر المتصفح أن الاتجاه من اليمين لليسار. ابحث عن: <html lang="en"> واستبدله بـ: <html lang="ar" dir="rtl"> 2. استبدال ملفات CSS (الخطوة الأهم) في AdminLTE، لا يكفي مجرد تغيير الاتجاه، بل يجب استدعاء ملفات التصميم المخصصة للعربية. داخل وسم <head>، احذف أو عطل الروابط الخاصة بـ adminlte.min.css العادي، وضع بدلاً منها الروابط التالية بالترتيب: <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Cairo:400,600&display=swap"> <link rel="stylesheet" href="{% static 'plugins/fontawesome-free/css/all.min.css' %}"> <link rel="stylesheet" href="https://cdn.rtlcss.com/bootstrap/v4.2.1/css/bootstrap.min.css"> <link rel="stylesheet" href="{% static 'dist/css/adminlte.rtl.min.css' %}"> ملاحظة: إذا لم تجد ملف adminlte.rtl.min.css في مجلدات مشروعك، يمكنك استخدام رابط الـ CDN المباشر مؤقتاً للتجربة: <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/admin-lte@3.1/dist/css/adminlte.rtl.min.css"> 3. ضبط الخط (Font) لجعل النصوص تظهر بخط "القاهرة" (Cairo) الذي أضفناه، أضف هذا التنسيق البسيط في الـ <head> أو في ملف الـ CSS الخاص بك: <style> body, h1, h2, h3, h4, h5, h6, .btn, .sidebar { font-family: 'Cairo', sans-serif !important; } </style> ملخص التغييرات في ملف base.html: بعد التعديل، يجب أن يبدو الجزء العلوي من ملفك بهذا الشكل تقريباً: {% load static %} <!DOCTYPE html> <html lang="ar" dir="rtl"> <head> <meta charset="utf-8"> <title>لوحة التحكم</title> <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Cairo:400,600&display=swap"> <link rel="stylesheet" href="https://cdn.rtlcss.com/bootstrap/v4.2.1/css/bootstrap.min.css"> <link rel="stylesheet" href="{% static 'dist/css/adminlte.rtl.min.css' %}"> <style> body { font-family: 'Cairo', sans-serif !important; } </style> </head> <body class="hold-transition sidebar-mini"> ... طبق هذه الخطوات واعمل Refresh للصفحة (يفضل مسح الكاش بـ Ctrl + F5)، وستجد القائمة الجانبية انتقلت لليمين والنصوص تظهر بشكل عربي سليم.
  15. المشكلة التي تواجهها طبيعية جداً وتحدث معنا جميعاً عند الانتقال من بيئة التطوير (Development) إلى الإنتاج (Production) أو عند تجربة DEBUG = False. الخطأ (500) يعني أن "الكود الخاص بصفحة 404 نفسه فيه مشكلة" أو أن جانغو لا يستطيع الوصول إليه بشكل صحيح. إليك الحل من واقع خبرتي في هذه النقطة تحديداً: 1. مكان handler404 (السبب الأرجح) أنت ذكرت أنك وضعت الكود في main_app/urls.py. جانغو يبحث عن handler404 في ملف urls.py الرئيسي للمشروع (Project Level) وليس داخل التطبيقات الفرعية (App Level). الملف الذي يحتوي عادةً على path('admin/', admin.site.urls). الحل: انقل سطر handler404 = 'main_app.views.error404' إلى ملف urls.py الرئيسي للمشروع. 2. مشكلة الملفات الثابتة (Static Files) عندما تضبط DEBUG = False، جانغو يتوقف فوراً عن تقديم الملفات الثابتة (CSS, JS, Images). هو مصمم هكذا لأنه يفترض أنك الآن تستخدم خادم مثل Nginx أو Apache للقيام بهذه المهمة. لهذا السبب لا تظهر التنسيقات، وربما هذا هو سبب الخطأ 500 إذا كان قالب 404.html يحاول استدعاء ملفات غير موجودة بطريقة خاطئة. الحل المؤقت للمعاينة: لكي ترى الصفحة وتتأكد أن كل شيء يعمل وأنت على جهازك (Localhost) مع DEBUG = False، شغل السيرفر بهذا الأمر: python manage.py runserver --insecure هذا الأمر يجبر جانغو على تقديم الملفات الثابتة حتى لو كان الديبرج مغلقاً. 3. التحقق من الخطأ الحقيقي الخطأ 500 هو خطأ عام يخفي المشكلة الحقيقية. بما أن DEBUG = False، أنت لا ترى "Log" الخطأ في المتصفح. الحل: انظر إلى التيرمينال (شاشة الأوامر) التي يعمل فيها السيرفر، ستجد سبب الـ 500 مكتوباً هناك (غالباً سيكون TemplateSyntaxError أو مشكلة في الاستيراد Import Error بسبب نقل الـ Handler).
  16. بصفتي مبرمج مررت بهذه المرحلة، سأعطيك الخلاصة لتبدأ بشكل صحيح ولا تتشتت في بحر المصادر: 1. الأساس ليس اللغة، بل التفكير (Logic) الخطأ الذي يقع فيه الكثيرون هو البدء بحفظ الأكواد فوراً. البرمجة هي "حل المشكلات" (Problem Solving). عليك أولاً فهم كيف يفكر الحاسوب. تعلم الخوارزميات (Algorithms): وهي الخطوات المنطقية لحل أي مشكلة. هياكل البيانات (Data Structures): كيف ترتب البيانات داخل الذاكرة. هذه المفاهيم ثابتة سواء برمجت بلغة بايثون، جافا، أو غيرها. 2. اختر مسارك (مجالك) عالم البرمجة واسع جداً، حدد هدفك ليسهل عليك اختيار اللغة: تطوير المواقع (Web Development): ابدأ بـ HTML, CSS, JavaScript. تطوير تطبيقات الموبايل: ابدأ بـ Flutter أو Kotlin/Swift. الذكاء الاصطناعي وتحليل البيانات: (وهو مجالي المفضل) اللغة الأساسية هنا هي Python لسهولتها وقوتها. 3. التطبيق ثم التطبيق لا تكتفِ بمشاهدة الفيديوهات. الكود الذي لا تكتبه بيدك ستنساه. ابدأ بمشاريع صغيرة جداً (آلة حاسبة، صفحة هبوط بسيطة، لعبة تخمين أرقام).
  17. 1. أين اختفى شريط القوائم؟ في نظام Windows، كل نافذة برنامج تحمل قوائمها الخاصة (File, Edit, Run) ملتصقة بها من الأعلى مباشرة. أما في نظام macOS الذي تستخدمه، فلسفة التصميم مختلفة؛ شريط القوائم واحد فقط ومشترك لكل البرامج، وهو الشريط الثابت الموجود في أقصى أعلى الشاشة (بجانب شعار التفاحة ، والبطارية، والساعة). هذا الشريط يتغير محتواه بحسب البرنامج الذي تعمل عليه حالياً. الخطوة العملية: اضغط بالفأرة نقرة واحدة داخل نافذة البايثون البيضاء (لتصبح هي النافذة النشطة)، ثم ارفع عينك وانظر للشريط العلوي الثابت في الشاشة وستجد الخيارات File, Edit, Run قد ظهرت هناك. 2. الفرق بين النافذة التفاعلية (Shell) والمحرر (Editor) النافذة التي أرفقت صورتها تسمى IDLE Shell (التي تحتوي على علامات >>>). هذه النافذة تنفذ الأوامر سطراً بسطر. لكي تجد خيار Run Module وتطبق ما في الفيديوهات، غالباً تحتاج لإنشاء ملف جديد: من الشريط العلوي (الذي وجدناه في الخطوة الأولى) اختر File ثم New File. ستظهر نافذة جديدة فارغة تماماً، اكتب فيها الكود، ومن هذه النافذة الجديدة ستتمكن من اختيار Run ثم Run Module. 3. اختصار لوحة المفاتيح (الحل السريع) بدلاً من البحث عن القائمة في كل مرة، يمكنك استخدام اختصار لوحة المفاتيح الموحد في بايثون لتشغيل الكود: اضغط على زر F5 (أو Fn + F5 حسب إعدادات اللابتوب لديك) وسيقوم البرنامج بتشغيل الكود مباشرة دون الحاجة لفتح القوائم. هذا الاختلاف شكلي فقط ولن يؤثر على تعلمك للغة البرمجة نفسها، فالأكواد تعمل بنفس الطريقة تماماً.
  18. المشكلة التي تواجهها لا تتعلق بكود HTML أو CSS الذي أرفقته، فالكود سليم ولا توجد أي خاصية background-color: white مطبقة على الشعار أو العنصر الحاوي له (.logo) في ملف التنسيقات. السبب يكمن في ملف الصورة نفسه. كون الصورة بصيغة PNG لا يعني بالضرورة أنها شفافة (Transparent). الكثير من الصور يتم حفظها بصيغة PNG ولكن تكون طبقة الخلفية فيها بيضاء مصمتة وليست مفرغة. لحل المشكلة، يجب عليك معالجة الصورة نفسها وليس الكود، وذلك عبر إحدى الطريقتين: استخدام أدوات تعديل الصور: قم بفتح الصورة في برنامج مثل Photoshop أو أي أداة مجانية لإزالة الخلفية (مثل remove.bg)، وقم بحذف اللون الأبيض ثم أعد حفظ الصورة بصيغة PNG مع التأكد من تفعيل خيار الشفافية (Transparency). البحث عن أيقونة مفرغة: عند البحث عن صور أو شعارات، تأكد أن الصورة تظهر بخلفية "مربعات رمادية وبيضاء" في المعاينة قبل التحميل، فهذا دليل على أنها مفرغة فعليًا. بمجرد استبدال الملف الحالي بالملف المفرغ، سيظهر الشعار بشكل صحيح فوق خلفية الموقع.
  19. طرحك في محلّه فعلًا، ومجال الأمن السيبراني واختبار الاختراق من أهم المجالات التقنية في الوقت الحالي، خصوصًا مع ازدياد الاعتماد على الأنظمة الرقمية وارتفاع الهجمات الإلكترونية. بالنسبة لسبب عدم وجود دورة في الأمن السيبراني حاليًا في أكاديمية حسوب، يمكن فهم الأمر من عدة زوايا: أولًا: طبيعة المجال نفسه الأمن السيبراني مجال واسع جدًا وحسّاس، ويعتمد على: أنظمة تشغيل وشبكات وبروتوكولات برمجة متقدمة فهم عميق للبنية التحتية قوانين وأخلاقيات صارمة وهذا يجعله أصعب في التحويل إلى دورة عربية منظمة تستهدف جمهورًا عامًا، مقارنة بمجالات مثل الويب أو البرمجة العامة. ثانيًا: المسؤولية القانونية والأخلاقية تدريس اختبار الاختراق (Penetration Testing) تحديدًا يحتاج: إطارًا قانونيًا واضحًا تركيزًا قويًا على الأخلاقيات منع إساءة الاستخدام وهذا يتطلب محتوى مدروسًا بدقة عالية حتى لا يُساء استخدام المعرفة، خاصة مع جمهور واسع ومتنوع. ثالثًا: فلسفة أكاديمية حسوب الأكاديمية تركّز غالبًا على: المجالات ذات الطلب العالي في سوق العمل العربي المسارات التي يمكن تحويلها إلى فرص عمل واضحة (عمل حر، وظائف، مشاريع) حاليًا، سوق الأمن السيبراني العربي لا يزال محدودًا مقارنة بالويب أو البرمجة العامة، ويحتاج غالبًا إلى شهادات دولية ومسارات احترافية طويلة. لكن مع ذلك، طرحك مهم جدًا تعزيز الوعي العربي بالأمن السيبراني حاجة حقيقية، حتى على مستوى: أساسيات الحماية التفكير الأمني فهم الثغرات الشائعة حماية التطبيقات والمواقع وربما يكون البدء بدورات: أساسيات الأمن السيبراني أمن تطبيقات الويب مبادئ التفكير الأمني للمبرمجين خطوة ممتازة قبل الدخول في اختبار الاختراق المتقدم. اقتراحك يستحق أن يُطرح رسميًا أنصحك بطرحه كاقتراح عبر: قسم الأسئلة أو النقاشات في الأكاديمية أو مراسلة فريق حسوب مباشرة خصوصًا إذا كان الطرح يركّز على “التوعية وبناء الأساس” وليس فقط الاختراق. الخلاصة نعم، المجال مهم جدًا، ووجود محتوى عربي منظم فيه ضرورة حقيقية. عدم وجود دورة حاليًا لا يعني عدم أهميته، بل يعكس صعوبة تقديمه بشكل مسؤول ومنهجي. ومع ازدياد الوعي والطلب، من المتوقع أن نرى اهتمامًا أكبر به مستقبلًا. طرحك في الاتجاه الصحيح، واستمر بالمطالبة بالمحتوى العربي المتخصص.
  20. وعليكم السلام ورحمة الله وبركاته، أهلاً بك، وبارك الله فيك على حرصك على توجيه قريبك مبكرًا. سأجيبك نقطةً نقطة بشكل واضح ومباشر: أولًا: هل يستطيع الاستفادة من مميزات الدورات والعمل على مواقع العمل الحر وهو دون 18 سنة؟ من ناحية التعلّم: نعم، يمكنه الاشتراك في الدورات والاستفادة الكاملة من المحتوى التعليمي، المتابعة، التمارين، والمجتمع. أما من ناحية العمل على مواقع العمل الحر التابعة لحسوب (مثل مستقل): أغلب منصات العمل الحر تشترط أن يكون المستخدم بعمر 18 سنة أو أكثر لإنشاء حساب باسمه الشخصي. إن كان دون 18: لا يمكنه العمل رسميًا باسمه. يمكنه التعلّم وبناء المهارات والمحفظة (Portfolio). عند بلوغه 18 عامًا سيكون جاهزًا للبدء مباشرة. بعض الأشخاص يعملون باسم وليّ أمرهم، لكن هذا موضوع قانوني وإجرائي خارج إطار الأكاديمية نفسها. الخلاصة: الدورات مفيدة جدًا له الآن للتأسيس، لكن تحقيق دخل رسمي خلال 6 أشهر قد يكون صعبًا إن لم يبلغ 18 بعد. ثانيًا: هل يمكن الاشتراك في دورة الذكاء الاصطناعي مباشرة دون دورة علوم الحاسوب؟ من الناحية العملية: لا يُنصح بذلك إطلاقًا، خصوصًا لشخص لا يملك أي خلفية برمجية. دورات الذكاء الاصطناعي تفترض وجود: أساسيات برمجة فهم جيد للمنطق البرمجي التعامل مع البيانات والخوارزميات الطريق الصحيح لطالب ثانوي مبتدئ هو: البدء بدورة علوم الحاسوب أو دورة برمجة مناسبة للمبتدئين ثم الانتقال لاحقًا إلى الذكاء الاصطناعي بعد تكوين الأساس الدخول مباشرة إلى الذكاء الاصطناعي دون أساس سيؤدي غالبًا إلى الإحباط والتوقف. ثالثًا: ما المتطلبات التي يجب تجهيزها قبل بدء التعلم؟ لا يحتاج تجهيزات معقدة، لكن الأهم: متطلبات تقنية: حاسوب بمواصفات متوسطة اتصال إنترنت مستقر نظام تشغيل محدث متطلبات معرفية: مستوى مقبول في اللغة الإنجليزية (للمصطلحات) استعداد للتعلّم الذاتي والصبر متطلبات نفسية وتنظيمية: الالتزام بوقت ثابت يومي عدم التسرّع في النتائج تقبّل أن التعلّم رحلة طويلة رابعًا: هل تقدم أكاديمية حسوب تخفيضات في رأس السنة؟ أكاديمية حسوب لا تعتمد جدول تخفيضات ثابت أو معلن (مثل رأس السنة أو غيرها). لكن: قد تظهر عروض أو تخفيضات في فترات متفرقة واحيانا دورتين بسعر دورة واحدة يتم الإعلان عنها عبر الموقع أو البريد الرسمي الأفضل: متابعة الموقع الرسمي الاشتراك في النشرة البريدية إن وُجدت الخلاصة النهائية: نعم، الدورات مناسبة جدًا لطالب ثانوي لبناء مستقبل قوي. لا يُتوقع تحقيق دخل رسمي سريع قبل سن 18. لا يُنصح بدخول الذكاء الاصطناعي دون أساس برمجي. الاستثمار الآن هو في التعلم، وليس في الربح السريع. وفقكم الله، وبارك في سعيكم، وأحسن توجيه هذا الطالب لما فيه خير مستقبله.
  21. وعليكم السلام ورحمة الله وبركاته، إحصائيات الحساب (مثل النقاط، السمعة، عدد المساهمات والمتابعين) ليست مجرد أرقام شكلية، بل لها أكثر من فائدة عملية داخل المجتمع، ويمكن تلخيصها كالتالي: أولًا: ما فائدة النقاط والسمعة والمساهمات؟ قياس الجدية والخبرة تعكس هذه الإحصائيات مدى نشاطك، التزامك، وجودة مشاركاتك. الحساب الذي يملك سمعة جيدة ومساهمات مفيدة غالبًا يكون موثوقًا لدى الآخرين. بناء الثقة داخل المجتمع عندما تطرح سؤالًا أو تجيب على الآخرين، فإن السمعة العالية تجعل الأعضاء أكثر استعدادًا للتفاعل معك وأخذ رأيك بجدية. تحفيز على المشاركة المفيدة النظام يشجع على: طرح أسئلة واضحة تقديم إجابات دقيقة مساعدة الآخرين بدل الاكتفاء بالاستهلاك فقط تمييز المساهمات القيّمة المشاركات التي تحصل على تفاعل إيجابي ترفع السمعة، وبالتالي تُبرز أصحابها كأعضاء نشطين ومفيدين. فوائد غير مباشرة مستقبلية في بعض المجتمعات التقنية (ومنها أكاديمية حسوب): الحساب النشط قد يُنظر إليه بإيجابية عند التقديم على فرص عمل أو تعاون يعكس سجلًا علنيًا لتطورك وخبرتك التقنية مع الوقت ثانيًا: هل الهدف فقط إظهار التميز؟ لا، الهدف الأساسي هو: تنظيم المجتمع رفع جودة النقاش تقليل المحتوى الضعيف أو العشوائي وإظهار التميز هو نتيجة طبيعية للمشاركة الجيدة، وليس الهدف الوحيد. ثالثًا: ما هي المخالفات التي تؤدي إلى نقاط تحذير؟ أبرز المخالفات تشمل: نشر محتوى مخالف لسياسات الأكاديمية التعدي أو الإساءة للأعضاء أو المشرفين تكرار الأسئلة دون بحث أو دون إضافة قيمة نشر روابط دعائية أو تسويقية دون إذن نسخ المحتوى أو الحلول دون ذكر المصدر استخدام المجتمع لأغراض غير تعليمية أو مثيرة للجدل رابعًا: هل يمكن أن يصل الأمر لإيقاف الحساب؟ نعم، في الحالات التالية: تكرار المخالفات رغم التنبيه الإساءة المتعمدة أو التخريب التحايل على النظام أو استغلاله نشر محتوى ضار أو مضلل بشكل متكرر وقد يكون الإيقاف: مؤقتًا للتحذير أو دائمًا في الحالات الجسيمة مهم: الاشتراك في الدورات لا يمنح حصانة من العقوبات. نظام المجتمع منفصل، ويُتوقع من الجميع الالتزام بالقواعد للحفاظ على بيئة تعليمية محترمة. الخلاصة: إحصائيات الحساب وسيلة لتنظيم المجتمع، تشجيع المحتوى الجيد، وبناء سمعة رقمية تعكس جديتك وتطورك، وليست مجرد أرقام للزينة. وفقك الله وبارك في علمك.
  22. تحية طيبة، سؤالك في محلّه، وهو تحدٍّ شائع في المنصات الخدمية التي تعمل في سوق محلي وتقدّم خدمات ميدانية، خصوصًا عندما يكون هناك جانب تقني أو إداري خلف الخدمة. سأجيبك بشكل عملي ومباشر: أولًا: هل نركّز على التدوين التقني أم صفحات الهبوط؟ الجواب المختصر: الاثنان، لكن لكلٍ دور مختلف. صفحات الهبوط (Landing Pages) هذه هي الأساس والأولوية الأولى في حالتك، لأن جمهورك النهائي هو: عميل يبحث عن خدمة الآن يستخدم لغة بسيطة ومحلية مثل: “نقل عفش بالرياض”، “إدارة أملاك”، “نقل أثاث مع التخزين” صفحات الهبوط يجب أن: تستهدف كلمات بحث واضحة ذات نية شراء (High Intent) تكون مكتوبة بلغة المستخدم، لا بلغة تقنية تحتوي على: وصف الخدمة آلية التنفيذ المميزات أسئلة شائعة دعوة واضحة للتواصل هذه الصفحات هي التي ستجلب التحويلات والعملاء الفعليين. التدوينات التقنية (Technical / Educational Content) دورها مختلف تمامًا، وهي: رفع سلطة النطاق (Authority) دعم الثقة بالموقع تغذية محركات البحث بمحتوى عميق لكن لا أنصح بأن تكون “تقنية بحتة” بمعنى برمجي، بل: تقنية مرتبطة بالخدمة نفسها مثل: أنظمة إدارة العقارات آلية تتبع نقل الأثاث معايير السلامة والتخزين التحول الرقمي في الخدمات اللوجستية هذه المقالات لا تستهدف العميل الجاهز للشراء، بل: الباحث صاحب قرار الشركات أو العميل في مرحلة المقارنة ثانيًا: كيف نربط المصطلحات التقنية بلغة المستخدم المحلي؟ هذه النقطة الأهم، والطريقة الصحيحة لها هي: لا تستخدم المصطلح التقني كعنوان أساسي بدل: “نظام إدارة الأصول العقارية (ERP)” استخدم: “إدارة العقارات بسهولة باستخدام نظام ذكي” ثم داخل المحتوى: “يعتمد النظام على تقنيات إدارة الأصول (ERP) التي تتيح…” استخدام الأسلوب المزدوج (Hybrid Language) أي: المصطلح الدارج أولًا ثم التوضيح التقني بين قوسين أو في جملة لاحقة مثال: “نوفّر خدمة تتبع شاحنات نقل العفش لحظة بلحظة، عبر نظام تتبع رقمي (GPS Tracking System) يضمن وصول الأثاث بأمان.” صفحات ربط داخلية ذكية صفحة خدمة بلغة بسيطة تربط إلى مقال تقني يشرح “كيف تعمل الخدمة تقنيًا” والمقال التقني يعود ويربط لصفحة الخدمة بهذا: المستخدم لا يتشتت ومحرك البحث يفهم العمق التقني ثالثًا: أفضل هيكلة محتوى لمنصة مثل المنبع أنصحك بالهيكل التالي: صفحات خدمات أساسية (Core Services Pages) نقل العفش تخزين الأثاث إدارة العقارات بلغة بسيطة + محلية + تحويلية مدونة معرفية موجهة للسوق “كيف تختار شركة نقل عفش موثوقة؟” “أخطاء شائعة في تخزين الأثاث” “كيف تساعد الأنظمة الرقمية في إدارة العقارات بكفاءة؟” محتوى تقني داعم (Authority Content) مقالات أعمق عن: الأتمتة الأنظمة الإدارية التحول الرقمي في الخدمات اللوجستية ليس بكثرة، بل بجودة. الخلاصة العملية: صفحات الهبوط = جلب عملاء التدوين التقني = بناء ثقة وسلطة اللغة البسيطة أولًا، والتقنية تأتي كداعم لا كبديل اربط بينهما داخليًا بذكاء
  23. وعليكم السلام ورحمة الله وبركاته، وأهلاً بك يا صديقي. يسعدني جداً طموحك ووضوح رؤيتك لمسارك المهني، فهذا أول طريق النجاح. بما أنك تمتلك خلفية مسبقة، سأعطيك نصيحة مباشرة وعملية توازن بين "الإتقان" و"السرعة": 1. هل تكمل الدورة الحالية أم تنتقل للتخصص؟ بما أن المفاهيم (بايثون، خوارزميات، أنماط تصميم) ليست جديدة عليك، فإليك القاعدة: لا تستهلك وقتاً طويلاً في الدروس النظرية: إذا كنت تفهم منطق البرمجة جيداً، انتقل فوراً إلى دورات التخصص. نصيحتي: ألقِ نظرة سريعة على دروس "الخوارزميات وبنى المعطيات" لأنها "عصب" التفكير البرمجي السليم، حتى لو لم تتعمق فيها الآن، يجب أن تعرف كيف تطبقها لاحقاً. لكن بشكل عام، ابدأ بالتخصص (تطوير الويب) لتبني مشاريع حقيقية تكسر حاجز الرهبة. 2. واجهات أمامية (Front-end) أم خلفية (Back-end) أولاً؟ الأفضل دائماً البدء بالواجهات الأمامية (Front-end). لماذا؟ لأنك سترى نتيجة كودك أمام عينيك فوراً (بصرياً)، وهذا يعطيك دافعاً معنوياً كبيراً. الترابط: من الصعب جداً فهم كيف تعمل الواجهة الخلفية (Back-end) وإرسال البيانات دون أن تفهم كيف يتم استقبال هذه البيانات وعرضها في المتصفح. الأساس: إتقان HTML, CSS, و JavaScript هو حجر الزاوية لأي مطور ويب، سواء كنت ستتخصص في الواجهات الأمامية فقط أو تصبح مطوراً كاملاً (Full-Stack). 3. اختيار اللغة المناسبة للواجهات الخلفية (Back-end) بما أنك محتار بين الخيارات، دعنا نبسط الأمور بناءً على ما تملكه من دورات: Node.js (JavaScript) : ستستخدم لغة واحدة للـ Front والـ Back.إذا كنت تريد توحيد مجهودك وتعلّم لغة واحدة فقط للإتقان السريع. Python (Django/Flask):لغة سهلة جداً، قوية، ومطلوبة في مجالات الذكاء الاصطناعي أيضاً.إذا كنت تميل للبساطة وسرعة الإنجاز وتريد لغة متعددة الاستخدامات. PHP (Laravel):هي "ملك" تطوير الويب التقليدي، وفرص العمل الحر (Freelance) بها ضخمة جداً.إذا كان هدفك العمل الحر أو العمل في شركات تعتمد على أنظمة إدارة المحتوى. Ruby on Rails:فلسفتها تعتمد على "اتفاقية البرمجة"، تجعلك تبني تطبيقات معقدة بسرعة مذهلة.إذا كنت تحب التنظيم العالي والكود النظيف جداً. نصيحتي لك: ابدأ بـ Node.js (بما أنك ستتعلم JavaScript حتماً للواجهات الأمامية) أو PHP مع Laravel إذا كنت تبحث عن فرص عمل محلية وعالمية واسعة في سوق الويب. خطتك المقترحة للتحرك فوراً: المرحلة الأولى: ركز على تطبيق مشروع "واجهة أمامية" كامل باستخدام (HTML, CSS, JavaScript) لتثبيت خبرتك السابقة. المرحلة الثانية: اختر لغة Back-end واحدة (أنصح بـ Node.js أو PHP) وابدأ في تعلم كيفية ربطها بقاعدة بيانات. المرحلة الثالثة: عد لدروس "أنماط التصميم والخوارزميات" وطبقها داخل مشاريع الويب التي تبنيها، ليكون التعلم تطبيقياً وليس نظرياً مملاً.
  24. ما هو XSS؟ XSS (Cross-Site Scripting) هو نوع من ثغرات الأمان في المواقع. ببساطة: المهاجم يدخل كود جافاسكريبت أو HTML في الموقع. هذا الكود يتم تنفيذه عند زيارة المستخدم العادي للموقع. النتيجة: المهاجم ممكن يسرق بيانات، أو يغير محتوى الصفحة، أو يعرض نوافذ مزعجة، أو حتى يتحكم بالجلسة (Session) للمستخدم. شرح الكود <img src="x:x" onerror=alert('xss')> الجزء الأول: <img src="x:x"> هذا عنصر صورة. src="x:x" غير صالح، أي الصورة لن تُحمَّل. المتصفح سيحاول تحميل الصورة، ويفشل، فيحدث خطأ تحميل. الجزء الثاني: onerror=alert('xss') onerror هو حدث (Event) يُنفَّذ عند حدوث خطأ في العنصر (مثل فشل تحميل صورة أو فيديو). هنا الخطأ متوقع لأنه src غير صالح. القيمة alert('xss') تعني: "شغّل نافذة منبثقة فيها نص 'xss'". ماذا يحدث عمليًا؟ المتصفح يرى <img src="x:x" onerror=alert('xss')>. يحاول تحميل الصورة من x:x → يفشل. يحدث خطأ → onerror يُنفَّذ → يظهر alert('xss'). لماذا يستخدم المهاجمون هذا؟ هذه مجرد طريقة اختبار للثغرة. بدل alert('xss')، يمكنهم وضع كود ضار مثل: سرقة الكوكيز: document.cookie إعادة توجيه المستخدم لموقع آخر تعديل محتوى الصفحة لتظهر رسائل خادعة نقاط مهمة هذا الهجوم يحدث فقط إذا لم يقم الموقع بتنظيف أو حماية المدخلات (Input Sanitization). المواقع الآمنة: تمنع تنفيذ أي جافاسكريبت من مدخلات المستخدم، أو تستخدم Content Security Policy (CSP).
  25. أولًا: هل مسموح لك تجربة “أدوات تهكير” على موقعك؟ الجواب: نعم بشرط، ولا في نفس الوقت إن استُخدمت بشكل خاطئ. أنت تملك الموقع، لكن: الخادم (السيرفر) لا تملكه، بل تملكه شركة الاستضافة. أي نشاط قد يسبب ضغطًا، مسحًا عدوانيًا، أو محاولات استغلال قد يُعتبر هجومًا على البنية التحتية الخاصة بهم. كثير من شركات الاستضافة تمنع صراحة: Port Scanning Brute Force Exploitation Scans DDoS-like traffic حتى لو كان الموقع موقعك. لذلك: قبل أي اختبار أمني نشط، يجب مراجعة سياسة الاستخدام (Terms of Service / Acceptable Use Policy). بعض الشركات تسمح باختبارات محدودة، وبعضها يطلب إذنًا مسبقًا. ثانيًا: ما الذي يمكنك فعله بأمان 100% دون مشاكل؟ هناك فرق بين: اختبار أمني قانوني (Security Testing) والاختراق (Hacking) المسموح والآمن عادة: الفحص السلبي (Passive Testing) هذا لا يسبب أي ضغط أو هجوم. مثل: التحقق من: HTTPS مفعّل شهادة SSL صحيحة رؤوس الأمان (Security Headers) إعدادات الكوكيز (HttpOnly, Secure) أدوات مثل: Security Headers Check SSL Test هذه آمنة ومسموح بها دائمًا. فحص التطبيق من منظور مطوّر بدون أدوات هجومية: هل ملفات حساسة مكشوفة؟ .env config backup files هل رفع الملفات محمي؟ هل التحقق من الصلاحيات صحيح؟ هل يوجد تحقق من المدخلات (Validation)؟ هذه اختبارات من داخل التطبيق نفسه. فحص الثغرات المنطقية (Business Logic) وهي أهم من أدوات “التهكير”: هل مستخدم عادي يستطيع: الوصول لصفحة Admin؟ تعديل بيانات غيره؟ إرسال طلب غير مصرح به؟ هذا لا يحتاج أدوات، بل تفكير. ثالثًا: متى تحتاج إذنًا من شركة الاستضافة؟ تحتاج إذنًا إذا أردت استخدام: Nmap Nikto SQL Injection scanners Brute force tools أي أداة تولّد طلبات كثيرة أو تحاول الاستغلال في هذه الحالة: إما تطلب إذنًا رسميًا أو تختبر على: Localhost VPS تملكه بالكامل بيئة Staging منفصلة ولا يُنصح أبدًا بالتجربة على الاستضافة المشتركة (Shared Hosting). رابعًا: الطريقة الصحيحة لاختبار أمان موقعك كمبتدئ الترتيب السليم: تأمين الأساسيات HTTPS تحديث الإطار البرمجي إخفاء معلومات السيرفر عدم عرض الأخطاء في الإنتاج مراجعة الكود Validation Authentication Authorization CSRF XSS SQL Injection (prepared statements) استخدام أدوات فحص آمنة غير هجومية تعطيك تقريرًا فقط لاحقًا، إن أردت التعمق تعلم أساسيات Web Security OWASP Top 10 ثم جرّب الأدوات على بيئة محلية الخلاصة لا تستخدم “أدوات تهكير” هجومية مباشرة على موقعك المستضاف دون مراجعة سياسة الشركة. نعم، يمكنك اختبار أمان موقعك بطريقة قانونية وآمنة. الأمان الحقيقي يبدأ من الكود والتصميم، لا من الأدوات..
×
×
  • أضف...