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

Mustafa Suleiman

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

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

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

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

    365

كل منشورات العضو Mustafa Suleiman

  1. من خلال الكود في موقعك، حيث تتعامل مع المجلد الخاص بتخزين الصور كما تتعامل معه في حاسوبك، عليك بالإشارة إلى مسار المجلد في الكود الخاص بك مع اسم الصور. وأيضًأ تتيح الاستضافة لك إمكانية توليد رابط مباشر للصورة بعد تحميلها عبر FTP، ويمكنك العثور على الصورة داخل مجلدات الاستضافة الخاصة بك ومن ثم الحصول على الرابط الكامل الذي يؤدي إلى الصورة، مثال للرابط: http://example.com/path/to/image.jpg
  2. استخدام findOrFail($id) بدلاً من find($id) يعتبر عملية جيدة في بعض الحالات وذلك لضمان أمان التطبيق والتعامل مع الأخطاء بشكل أفضل. ولكن يجب توضيح الفرق بين الاثنين: User::find($id) تلك الطريقة تقوم بالبحث عن سجل في قاعدة البيانات باستخدام المفتاح الرئيسي للجدول (وغالبًا ما يكون الـ ID)، وإن وجد السجل، فيتم إرجاع السجل نفسه، وإذا لم يتم العثور عليه، فيتم إرجاع قيمة null. User::findOrFail($id) نفس عملية البحث السابق، ولكن في حالة عدم العثور على السجل، فيتم برفع استثناء من نوع ModelNotFoundException، وذلك يعني أنه إذا لم يتم العثور على السجل، يتم رمي استثناء وتوقف تنفيذ البرنامج، مما يتطلب التعامل مع الاستثناء في الكود. السبب الرئيسي لاستخدام findOrFail($id) هو تجنب الحصول على قيمة null ومعالجة تلك القيمة في حالة عدم وجود السجل المطلوب في قاعدة البيانات، وعند استخدام findOrFail($id)، تستطيع ببساطة التعامل مع الاستثناء المرتبط في الكود، مما يسهل تحديد الأخطاء والتعامل معها بشكل أفضل. إذا قمت بتعيين APP_DEBUG=true في ملف .env، فذلك سيساعدك في رؤية الأخطاء والاستثناءات التي تم رفعها، ولكن لا ينصح بالاعتماد على ذلك الإعداد في بيئة الإنتاج، حيث سيكشف عن معلومات حساسة. أي بإختصار، سيتسبب استخدام User::find($id) في تلقي المستخدمين خطأً 500 ، مما قد يكشف عن بيانات غير مقصودة، وسيتسبب استخدام User::findOrFail($id) في تلقي المستخدمين خطأ 404 ، والذي يعد أكثر أمانًا. بالإضافة إلى ذلك ، فإن استخدام User::findOrFail($id) سيساعد على منع الأخطاء التي قد تحدث إذا لم يكن المستخدم موجودًا، وإذا استخدمت User::find($id) ولم يكن المستخدم موجودًا ، فستتلقى خطأً 500. مما يؤدي إلى توقف API الخاص بك عن العمل، وسيكون من الصعب تحديد سبب المشكلة، وسيتسبب استخدام User::findOrFail($id) في تلقي خطأ 404 ، مما سيسهل تحديد سبب المشكلة وإصلاحها.
  3. في السوق الأوروبي، كل المجالات التي ذكرتها مذكورة، ولكن بالطبع كل مجال يتطلب وقت مختلف عن الآخر للدراسة والإتقان، وأيضًا مهارات مختلفة، وأصعب مجال بينهم هو الـ Ai. ووفقًا لدراسة أجرتها شركة Hays المتخصصة في التوظيف، فإن نسبة الطلب على المبرمجين في ألمانيا هي: 30٪ Java Development 25٪ Mobile Development 45٪ AI Development وبالطبع نلاحظ أن مجال الذكاء الاصطناعي هو الأكثر طلبًا، ويرجع ذلك إلى النمو السريع لهذا المجال واستخدامه في مجموعة متنوعة من التطبيقات، أما مجالي Java Development و Mobile Development، فهما مطلوبان أيضًا، ولكن بدرجة أقل. وهناك العديد من المواقع التي يمكنك البحث بها عن وظائف البرمجة في السوق الأوروبي، إليك بعض من أشهر تلك المواقع: LinkedIn Indeed Monster Glassdoor AngelList هو موقع وظائف يركز على الشركات الناشئة. Stepstone موقع وظائف ألماني شهير يضم آلاف الوظائف الشاغرة في مجال البرمجة.
  4. سؤالك عام عليك بالتفصيل لتحصل على إجابة مفيدة، هل أنت مطور تطبيقات أندرويد فقط؟ بلغة كوتلن أم جافا؟ أم أنت مطور تطبيقات cross-platform من خلال React Native أو Flutter؟ وعلي أي حال أنصحك بالتوجه إلى GitHub أو جوجل وابحث عن Interview Questions for flutter وستجد الكثير من الأسئلة الشائعة الخاصة بكل تقنية. وبالطبع تستطيع استبدال Flutter بالتخصص بالإطار أو اللغة التي تستخدمها. وإليك بعض الأسئلة العامة التي قد تطرح عليك خلال مقابلة العمل: ما هي لغات البرمجة التي تستخدمها لتطوير تطبيقات الجوال؟ ما هي أدوات تطوير تطبيقات الجوال التي تستخدمها؟ ما هي خبرتك في اختبار تطبيقات الجوال؟ ما هي خبرتك في نشر تطبيقات الجوال في متجر التطبيقات؟ ما هي مهاراتك في حل المشكلات؟ ما هي مهاراتك في العمل الجماعي؟ ما هي مهاراتك في التواصل؟ ولكي تصبح مطور تطبيقات جوال ناجحًا، يجب أن تتمتع بمجموعة من المهارات، بما في ذلك: مهارات البرمجة في لغات مثل Java أو Kotlin أو Swift أو Objective-C مهارات استخدام أدوات تطوير تطبيقات الجوال مثل Android Studio أو Xcode مهارات اختبار تطبيقات الجوال مهارات نشر تطبيقات الجوال في متجر التطبيقات مهارات حل المشكلات مهارات العمل الجماعي مهارات التواصل
  5. الأسئلة قد تكون كالتالي: ما هي الفوائد التي يوفرها نظام الأرشفة الرقمي؟ ما هي أنواع الوثائق التي يمكن تخزينها في نظام الأرشفة الرقمي؟ ما هي خطوات إنشاء نظام أرشفة رقمي؟ ما هي أنواع قواعد البيانات التي يمكن استخدامها في نظام الأرشفة الرقمي؟ ما هي فوائد استخدام قاعدة بيانات SQL Server في نظام الأرشفة الرقمي؟ ما هي التحديات التي قد تواجهها في إنشاء نظام أرشفة رقمي؟ كيف يمكنك التغلب على تلك التحديات؟ اشرح ماهية قواعد البيانات وما دورها في الحفاظ على البيانات وتنظيمها؟ كيف تخطط لإنشاء قاعدة بيانات SQL Server؟ اشرح الخطوات الأساسية لإنشاء قاعدة بيانات جديدة. ما هي أنواع الجداول المختلفة التي يمكنك إنشاؤها في قاعدة البيانات واشرح استخداماتها؟ ما هي الفروق بين القيود (Constraints) في قواعد البيانات مثل Primary Key و Foreign Key و Unique Key وغيرها؟ كيف تقوم بإدارة عمليات النسخ الاحتياطي والاستعادة (Backup and Restore) في SQL Server؟ ما هي أفضل الممارسات لتحسين أداء قواعد البيانات؟ اذكر بعض الطرق لتحسين أداء استعلامات SQL. كيف ستقوم بتصميم نموذج البيانات (Data Model) الذي يعكس احتياجات الشركة للأرشفة المركزية والرقمية؟ ما هي الخطوات التي ستتبعها لتنفيذ نظام الأرشفة الرقمية والمركزية للمستندات؟ كيف ستضمن تأمين قاعدة البيانات وملفات المستندات من الوصول غير المصرح به؟ كيف ستتعامل مع الأخطاء والمشاكل المتعلقة بقواعد البيانات والأرشفة؟ اشرح كيفية تحديد الأخطاء وحلها. وبالإضافة إلى تلك الأسئلة، فقد يُطلب منك أيضًا إجراء بعض المهام العملية، مثل: إنشاء قاعدة بيانات SQL Server تحميل المستندات في قاعدة البيانات البحث عن مستندات معينة في قاعدة البيانات تصدير المستندات من قاعدة البيانات وبالطبع تختلف الأسئلة من شركة لأخرى وتعتمد على تفاصيل الوظيفة المعلن عنها، ويُفضل أن تستعرض مواضيع الاختصاص والمفاهيم المتعلقة بالوظيفة قبل موعد الاختبار، ولا تنسى أن الاختبار ليس الغرض منه معرفة إجابات نموذجية فحسب، بل يهدف أيضًا إلى تقييم قدرتك على التفكير النقدي وحل المشكلات المعقدة. حظاً موفقاً في الاختبار!
  6. نعم صحيح، وجميع الكورسات مجانية، لكن للحصول على شهادة إتمام الكورس ستحتاج إلى دفع تكلفة معينة.
  7. من المفترض أنك ستقوم بنشر الموقع على استضافة، وتلك الاستضافة توفر لك مساحة تخزين محددة حتى لو كانت استضافة مجانية فهناك مساحة تخزين. وتستطيع رفع الصور من خلال موقعك بشكل طبيعي وتخزينها في المكان الذي تريده، أي اعتبر أن مجلد المشروع موجود لديك على حاسوبك ولكن في السحابة (سيرفر الاستضافة). أو بإمكانك تجاهل المساحة الخاصة بالاستضافة، ورفع الصورة مباشرًة على سيرفر تخزين آخر مثل Amazon S3 وGoogle Cloud Storage وذلك عن طريق الـ API الخاص بهم. حيث أن Amazon S3 خدمة تخزين سحابية تقدمها أمازون وهي مناسبة لتخزين الصور والملفات بشكل آمن وقابل للتوسعة، ويمكنك تحميل الصور إلى سلة (Bucket) في S3 ومن ثم الحصول على روابط للصور لعرضها في موقعك، وكما أشرت ستستخدم واجهة API لإدارة الصور وتحميلها أو استخدام مكتبات جاهزة للتفاعل مع S3 مثل aws-sdk في Next.js. ونفس الأمر بالنسبة لـ Google Cloud Storage. وانتبه إلى أنّ الـ FTP ليس سيرفر تخزين، بل هو اختصار لـ "File Transfer Protocol"، وهو بروتوكول نقل الملفات، يُستخدم لنقل الملفات بين جهاز الكمبيوتر الخاص بك وخادم الإنترنت (أو FTP server) بطريقة سريعة وموثوقة. وعند استخدام FTP، تستطيع تحميل (رفع) الملفات من جهاز الكمبيوتر الخاص بك إلى الخادم الذي يتم استضافة موقعك عليه، أو تحميل (تنزيل) الملفات من الخادم إلى حاسوبك، وتتم تلك العملية عبر الاتصال بالخادم باستخدام برنامج مخصص لـ FTP مثل FileZilla أو من خلال سطر الأوامر في الطرفية.
  8. أنتِ تقصدين في لغة جافاسكريبت، صحيح؟ الفواصل (Semicolons) نستخدم الفاصلة المنقوطة (;) لفصل بين عبارات الشفرة. في جافا سكريبت، يعتبر وضع الفاصلة المنقوطة اختياريًا، لكنه من الممارسات الجيدة أن تضعها لتفادي بعض المشاكل المحتملة. مثال: const x = 5; const y = 10; const sum = x + y; الأقواس (Parentheses) تُستخدم الأقواس لتحديد التعبيرات وتجميعها معًا. يتم استخدامها بشكل خاص مع دوال الجافا سكريبت وأيضًا لتحديد ترتيب العمليات الحسابية. مثال: function greet(name) { return "Hello, " + name + "!"; } const result = (2 + 3) * 4; الأقواس المجعدة (Curly Braces) تُستخدم الأقواس المجعدة لتحديد بداية ونهاية كتلة من الشفرة، ومع التحكم في التدفق مثل الشروط والحلقات والدوال، ويجب أن تُفتح الأقواس المجعدة في نفس السطر الذي يبدأ فيه الكود وتُغلق في نفس السطر. مثال: if (x > 0) { console.log("Positive number"); } else { console.log("Non-positive number"); } التعليقات (Comments) يمكنك إضافة تعليقات لشرح الشفرة أو توضيحها. يتم تجاهل التعليقات من قبل المترجم. هناك نوعان من التعليقات: تعليق واحد: يتم بدء التعليق بعلامتي السلش (//) ويستمر حتى نهاية السطر. تعليق متعدد الأسطر: يبدأ بعلامة الجملة المائلة (/) وينتهي بعلامة الجملة المائلة الأخرى (/). // تعليق واحد /* تعليق متعدد */ // الشفرة التالية لا تفعل أي شيء، فهي تعليق فقط /* const x = 10; console.log(x); */
  9. أولاً تحليل البيانات هو عملية جمع وتحليل وتفسير البيانات بهدف اتخاذ قرارات مستنيرة، ويستخدم محللو البيانات مجموعة متنوعة من الأدوات والتقنيات، بما في ذلك الرياضيات، لتحليل البيانات. وإليك بعض من أهم المفاهيم الرياضية المستخدمة في تحليل البيانات: الجبر الخطي فرع من الرياضيات يتعامل مع الأنظمة الخطية من المعادلات والكميات المصفوية، ويستخدم في تحليل البيانات لتمثيل البيانات وحل المشكلات. الإحصاء فرع من الرياضيات يتعامل مع جمع وتحليل البيانات وتفسيرها، ويستخدم الإحصاء في تحليل البيانات لتحديد الأنماط في البيانات واتخاذ قرارات مستنيرة. الاحتمالات فرع من الرياضيات يتعامل مع دراسة الأحداث العشوائية واحتمال حدوثها، ويعتمد عليه في تحليل البيانات لتقييم دقة التنبؤات واتخاذ قرارات مستنيرة. التعلم الآلي فرع من الذكاء الاصطناعي يتعامل مع تطوير خوارزميات يمكنها تعلم من البيانات دون الحاجة إلى أن يتم برمجة بشكل صريح، وأيضًا يستخدم في تحليل البيانات لإنشاء نماذج يمكن استخدامها لتنبؤ النتائج المستقبلية.
  10. في أي دورة خاصة بالذكاء الاصطناعي ستجد أنه تبدأ بشرح أساسيات الجبر الخطي وخلافه، وجميع الخوارزميات التي ستستخدمها مبنية على الرياضيات، وعمل عليها مختصي الرياضيات والإحصاء أولاً وليس المبرمجين، بل قام مهندسي الذكاء الاصطناعي باستخدام تلك المعادلات في بناء أدوات الذكاء الاصطناعي مثل TensorFlow. وأنت كمبتدأ لست بحاجة إلى معرفة كيف تم اشتقاق تلك الخوارزميات وكيف تم بنائها، كل ما تحتاجه هو أساسيات الرياضيات وهي الجبر الخطي والتفاضل والتكامل ولإحتمالات والتحليل الرياضي. وليس من الضروري أن يكون مستواك مرتفع في الرياضيات لتعلم الذكاء الاصطناعي بل يكفي تعلم الأساسيات ثم الاستزادة فيما بعد، وبالطبع كلما ارتفع مستواك في الرياضيات تطور مستواك وقدرتك على التعلم في مجال الذكاء الاصطناعي. والكورسات التي على مستوى عالِ كلها باللغة الإنجليزية ويجب عليك أن تكون قادر على الاستماع والقراءة بالإنجليزية لتعلم ذلك المجال، وإليك بعض الكورسات: كورس الذكاء الاصطناعي من جوجل (Google AI Education) الذكاء الإصطناعي - شهادة الماستر من جامعة كولومبيا (ColumbiaX's Artificial Intelligence MicroMasters) كورس الذكاء الاصطناعي للجميع (AI For Everyone) شهادة الذكاء الإصطناعي من جامعة ستانفورد (Machine Learning AI Certification) وأفضل كورس في القائمة هو الأخير (Machine Learning AI Certification).
  11. الأمر يعتمد دائمًا على الخوارزمية والهيكلة المتبعة للواجهة الخلفية، فقد يؤثر ذلك على الأداء أولا يؤثر. وللتقليل من أثر الـ streaming على الـ backend، عليك باتباع بعض الإرشادات والتعديلات: آليات التخزين المؤقت لتخزين المحتوى المسترجع من Google Cloud Storage في الـ backend، وذلك يساعد في تجنب استعلامات متكررة للـ Cloud Storage ويقلل من الحمل على الخادم. استخدم CDN (شبكة توصيل المحتوى) لتسليم المحتوى إلى المستخدمين، وسيساعد ذلك في تقليل عبء العمل على ال backend عن طريق جلب المحتوى من خوادم قريبة من المستخدمين. استخدام خوادم وكيل (Reverse Proxy) للتعامل مع طلبات الـ streaming وتحويلها إلى الـ backend، وخوادم الوكيل قادرة على إدارة عمليات الـ streaming بكفاءة وتحمي الـ backend من الأحمال الزائدة. استخدام حلول(Load Balancer) لتوزيع الحمولة بين مجموعة من الخوادم الخلفية (backend)، وبالتالي تحسين استجابة الـ streaming عند وجود أعداد كبيرة من المستخدمين. التأكد من أن الكود المستخدم في الـ backend محسن وفعال من حيث استخدام الموارد والاستجابة. استخدام تقنيات التنقيح (Profiling)، وقم بتحليل أداء الـ backend باستخدام تلك التقنيات للتعرف على أي مشاكل أداء وحلها. وإن كانت البيانات المستخدمة في الـ streaming مخزنة في قاعدة بيانات، فمن من المفيد تحسين أداء قاعدة البيانات والاستعلامات المستخدمة. استخدم تقنية ضغط المحتوى لتقليل حجم المحتوى الذي يتم نقله إلى المستخدمين، وبالتالي تقليل عبء العمل على الشبكة وتحسين سرعة التحميل.
  12. تم النقاش حول سؤالك بشكل مفصل من قبل، وفي البداية عليك بتفهم أن مجال الأمن السيبراني متشعب وعليك بالسير خطوة بخطوة ودون استعجال. وبالنسبة للأمن السيبراني فهو ليس بحاجة إلى تعلمك للغات برمجة لكن من الأفضل على الأقل تعلم لغة واحدة وهي بايثون، واللغة التي أنصحك بتعلم الأساسيات من خلالها هي C++ ولكن البعض قد يجدها صعبة وبعد المحاولة إن كانت كذلك، فتعلم الأساسيات من خلال بايثون. وبالطبع تحتاج إلى تعلم أساسيات الشبكات مثل TCP / IP و DNS و DHCP و HTTP و HTTPS و SSL / TLS. بعد تعلم الأساسيات السابقة، يأتي دور التعرف على التشفير وأمن المعلومات، ومهارات التشفير تُمكِّن الهاكر الأخلاقي من فهم كيفية حماية البيانات وتأمينها، ومنها نظام التشفير المتقدم AES كمثال على الأدوات التي يمكن للهاكر الأخلاقي استخدامها لاختبار قوة التشفير وتعزيز أمان النظام. وكبداية أنصحك بدورة علوم الحاس في أكاديمية حسوب وستتعلم بها التالي: أساسيات الحاسوب وعلومه والتفكير المنطقي وما هي الخوارزميات وكيف تفيد في البرمجة تطبيقات عملية على أساسيات التفكير المنطقي باستخدام بيئة سكراتش Scratch التفاعلية أساسيات لغة البرمجة JavaScript وبايثون، وتطبيق المفاهيم التي تم شرحها باستخدامها، والتوسع في شرح التطبيقات العملية للغات البرمجة أساسيات أنظمة التشغيل المختلفة وكيفية تثبيت البرمجيات اللازمة للبرمجة عليها أساسيات سطر الأوامر في نظام لينكس، وشرح الأسس التي بني عليها النظام مع تطبيقها عمليًا أنظمة قواعد البيانات المختلفة، مع شرح تفصيلي للغة SQL للتعامل معها مبادئ أساسية في أنظمة قواعد البيانات NoSQL المفاهيم الأساسية التي تبنى فيها صفحات الويب مفاهيم أساسية في الشبكات والخوادم، وكيف يتم استقبال الطلبيات إلى الخادم والرد عليها مبادئ الحماية والأمان في الويب وبخصوص المسار البرمجي Roadmap الذي يجب أن تسير عليه لتعلم الأمن السيبراني فقد تم توضيحه هنا من قبل خبير في المجال وهو محمد عبد الباسط النوبي، بعنوان ١٠١ - دليلك فى البرمجة ومجال امن وحماية واختبار اختراق تطبيقات الويب وستجد به كل ما تحتاج معرفته: وأنصحك أيضًا بقراءة النقاش الخاص به على منصة حسوب I\O حيث أجاب به على الكثير من الأسئلة.
  13. هل تقصد بخصوص إطار فلاتر نفسه؟ لا يوجد صعوبة بخصوص الإطار نفسه، لكن هناك بعض المشاكل بالطبع بخصوص متجر آبل حيث يجب أن يفي تطبيقك بمعايير معينة من Apple حتى يتم قبوله في متجر التطبيقات، وقد يتضمن ذلك متطلبات فنية مثل دقة الشاشة أو حجم الذاكرة، أو متطلبات محتوى مثل سياسة الخصوصية أو شروط الخدمة. وتتطلب Apple من جميع التطبيقات الخضوع لمراجعة قبل أن يتم نشرها في متجر التطبيقات، ويمكن أن تستغرق تلك العملية عدة أيام أو أسابيع، وقد يتم رفض تطبيقك إذا لم يفي بمتطلبات Apple. أيضًا تتقاضى Apple رسومًا لاستخدام متجر التطبيقات، قدرها 99 دولارًا أمريكيًا للحساب المطور، وتلك الرسوم مطلوبة لنشر أي تطبيق على متجر التطبيقات، بغض النظر عن حجمه أو نوعه. بالإضافة إلى الرسوم السنوية، تتقاضى Apple أيضًا رسومًا بنسبة 30٪ من جميع المعاملات التي تتم في تطبيقك، وتلك الرسوم تُعرف باسم "رسوم العمولة". أي إذا كان لديك تطبيق يكلّف 1.99 دولارًا أمريكيًا للتنزيل، فستحصل Apple على 0.597 دولارًا أمريكيًا من كل عملية شراء، بينما ستحصل أنت على 1.393 دولارًا أمريكيًا.
  14. سؤالك عام، ولن تحصل على إجابة وافية، أنت تقصد هل هناك مجال أفضل من مجال؟ بالطبع لا، في البرمجة كل المجالات مكملة لبعضها، وفي الماضي لم تكن هناك العديد من المجالات المتواجدة الآن، والمجالات كانت محدوة والتقنيات بسيطة والموارد المتاحة لتعلمها قليلة أيضًا. حاليًا أصبح كل مجال في البرمجة متشعب وبه تخصصات وتقنيات ولغات ومكتبات، إلخ.. أما في سوق العمل، فهناك مجال أفضل من مجال بالطبع وذلك يعتمد على العرض والطلب وعلى مدى الدعم الذي تتلقاه لغة أو إطار معين وعلى مدى توافر الموارد والمطورين والمكتبات التي تسهل عملية التطوير وخلافه. مثلاً لغة مثل PHP متواجدة بقوة في سوق العمل منذ سنوات بسبب إطار لارافيل الذي يعطي للغة قوة ودعم كبير، وأيضًا لديك ASP.NET وإطار Angular. هل هناك مجال أفضل من مجال بالنسبة لك؟ بالطبع، الأمر يعتمد على ظروفك وما تريده والوقت المتاح لك وخبراتك السابقة.
  15. لسان حالك يخبرني أنك في سن صغير، وإذا كنت كذلك، فلا داعي للعجلة، يمكنك تجربة كافة المجالات من خلال تخصيص أسبوع أو أسبوعين لتجربة لتفقد كل مجال ورؤية ما يقدمه وتفقد ما تريده حقًا. وسواء كان سنك صغير أم قريب من سن العمل، فعليك أولاً تعلم أساسيات البرمجة بشكل صحيح، ثم إختيار المجال، وبالطبع الأساسيات تكون من خلال C++ أو بايثون وهي الأسهل لكن C++ الأفضل لتعلم الأساسيات. بعد ذلك تفقد المطلوب في سوق العمل في المجال الذي تريد التخصص به، سواء على مواقع العمل الحر أو الشركات، وستجد لغة برمجة وإطار عمل مطلوب بكثرة في مجال معين وهنا عليك تعلمه حتى لو كنت تريد تعلم لغة أو إطار آخر، فأنت في النهاية تريد العمل وليس الأمر مجرد هواية. وببساطة حدد الوقت المتاح لك وما الذي تريد فعله بالضبط وخطط لسنة قادمة والتزم بما خططت له، وأثناء تعلم المسار البرمجي الذي إخترته تستطيع التعديل قليلاً لكن عليك بالإلتزام بمجال واحد إلى النهاية، فتعلم مجال برمجي سينقل مستواك إلى مستوى آخر تمامًا حتى لو لم تعمل به وعملت بمجال برمجي آخر، لكنك تعلمت البرمجة بالفعل وسيسهل الإنتقال من مجال لآخر. وستجد هنا شرح مفصل:
  16. بالطبع ذلك مذكور في وصف الدورة، وبخصوص HTML وCSS تستطيع تعلمهم من خلال المسار الأول من دورة تطوير واجهات المستخدم وهو أساسيات تطوير الويب وستجد به التالي: أساسيات HTML أساسيات CSS أساسيات JavaScript أساسيات jQuery بناء موقع شخصي وجميع المسارات الأولى من الدورات الأخرى متاحة لك بشكل مجاني لتعلم ما تريد والإطلاع على الدورة قبل الإشتراك بها، ويوجد أيضًا المسار الأول دورة تطوير التطبيقات باستخدام JavaScript وهو أساسيات لغة JavaScript حيث يتم شرحها بشكل معمق أكثر.
  17. في أكاديمية حسوب الهدف هو تحقيق إفادة لك وتوجيهك للطريق السليم وإخبارك بالخيارات المتاحة لك وما يجب فعله وما يمكن التخلي عنه مؤقتًا تبعًا للظروف الخاصة بك. وبشكل واضح، دورة علوم الحاسب غير مخصصة لتعليمك مجال محدد في البرمجة من أجل سوق العمل، بل غرضها هو تأهيلك لتعلم البرمجة بشكل سليم ودخول سوق العمل بقوة، حيث أنك ستمتلك أفضلية بالطبع بسبب تعلمك لأساسيات البرمجة من خلال بايثون وجافاسكريبت وأيضًا علوم الحاسب والتي تتضمن التالي: أساسيات الحاسوب وعلومه والتفكير المنطقي وما هي الخوارزميات وكيف تفيد في البرمجة تطبيقات عملية على أساسيات التفكير المنطقي باستخدام بيئة سكراتش Scratch التفاعلية أساسيات أنظمة التشغيل المختلفة وكيفية تثبيت البرمجيات اللازمة للبرمجة عليها أساسيات سطر الأوامر في نظام لينكس، وشرح الأسس التي بني عليها النظام مع تطبيقها عمليًا أنظمة قواعد البيانات المختلفة، مع شرح تفصيلي للغة SQL للتعامل معها مبادئ أساسية في أنظمة قواعد البيانات NoSQL المفاهيم الأساسية التي تبنى فيها صفحات الويب مفاهيم أساسية في الشبكات والخوادم، وكيف يتم استقبال الطلبيات إلى الخادم والرد عليها مبادئ الحماية والأمان في الويب وبالتالي يصبح لديك قاعدة معرفة قوية ووعي ودراية بمجالات البرمجة، الأمر الذي يؤهلك للخطوة القادمة وهي إختيار مجال البرمجة الذي تريده، حيث سيتم توجيهك بعد إنتهاء الدورة وإجتياز الإختبار إلى كيفية تعلم المجال الذي تريده لدخول سوق العمل أو إقتراح مجالات ومنها الويب أو تطوير تطبيقات الهاتف أو مجال الواجهة الخلفية Back-End أو الجمع بين الواجهة الأمامية والخلفية لتصبح مطور Full-stack. وأيضًا ستجد نفسك قادر على حل المشكلات التي تواجهك ولديك مهارة التفكير المنطقي أي مستواك أفضل من أي شخص قام ببدأ المسار التعليمي في مجال معين دون تعلم الأساسيات.
  18. أرجو إن كان السؤال متعلق بدورة PHP في أكاديمية حسوب، التعليق أسفل الفيديو المتعلق بالسؤال، وطرح الأسئلة العامة هنا في قسم أسئلة البرمجة لمساعدتك بشكل أفضل. وبخصوص سؤالك، الرسالة التي تظهر لك هي تحذير من PHP يفيد بأن الثابت (constant) FILTER_SANITIZE_STRING قد تم إهماله (deprecated) وفي PHP، الثوابت هي متغيرات لا يمكن تغيير قيمتها بعد تعريفها، وتستخدم لتعيين قيم ثابتة. والمشكلة هي أنه بدءًا من إصدار PHP 8.1، تم وضع علامة deprecated على الدالة FILTER_SANITIZE_STRING وأصبحت قديمة وغير مستخدمة، ولكن لا مشكلة، فالدالة ما زالت تعمل في النسخ الحديثة من PHP، ولكن يُنصح باستخدام وسائل أخرى لتحقيق نفس الغرض. وعليك استبدال دالة FILTER_SANITIZE_STRING بدالة أخرى، وهناك العديد من الدالات التي يمكنك استخدامها، وإحدى الخيارات الشائعة هي دالة htmlspecialchars(). وإليك مثال لكيفية استخدام دالة htmlspecialchars(): $sanitized_string = htmlspecialchars($_POST['name']); وتستقبل الدالة htmlspecialchars() سلسلة كإدخال وتعيد سلسلة مع جميع الأحرف الخاصة المشفرة، مما يساعد على منع هجمات حقن النص التشعبي (XSS). وبذلك يتم حل المشكلة وتتجنبي ظهور التحذير، وإذا أردتي الشرح بشكل مفصل، فإليك التوضيح: والفلتر الذي تم إلغاء دعمه كان له غرض غير واضح، ولم يكن من السهل معرفة بالضبط ماذا كان من المفترض أن يحقق أو متى ينبغي استخدامه. وكان أيضًا يُشتبه بأنه نفس فلتر النص الافتراضي (FILTER_UNSAFE_RAW) بسبب اسمه، على الرغم من أن الفلتر الافتراضي للنص الآمن هو FILTER_UNSAFE_RAW، وقرر مجتمع PHP أنه لا يجب دعم استخدام هذا الفلتر بعد الآن. والفلتر كان يزيل كل محتوى بين علامات <>، كما كان يزيل جميع بايتات NUL. وأخيرًا، كان يقوم بترميز ' و " إلى كيانات HTML. ولاستبداله لديك خياران: استخدم فلتر النص الآمن الافتراضي FILTER_UNSAFE_RAW الذي لا يقوم بأي عملية تصفية، وينبغي استخدامه إذا كنتِ لا تعرفين بالضبط سلوك FILTER_SANITIZE_STRING وترغبين فقط في استخدام فلتر افتراضي يمنحك قيمة النص. وفي حال كنتِ تستخدمين ذلك الفلتر للحماية ضد ثغرات XSS (Cross-Site Scripting)، فاستبدليه باستخدام htmlspecialchars().
  19. أولاً الهاكر الأخلاقي هو شخص يحاول العثور على الثغرات الأمنية في الأنظمة والشبكات من أجل تحسين أمنها، ويُعرف الهاكر الأخلاقي أيضًا باسم المخترق الأبيض أو صاحب القبعة البيضاء أو Ethical Hacking. وهو في الأساس هو مبرمج محترف، حيث لا يمكن أن تحترف مجال الـ Ethical Hacking بدون أن تتقن أساسيات من خلال برمجة قوية وهي C++، وفي رأي هي حجر الأساس، وبعد إتقان اللغة وتنفيذ مشروع من خلالها أو أكثر من مشروع، عليك بتعلم PHP وSQL، بعد ذلك عليك بتعلم جافاسكريبت. ولا مشكلة إذا قمت بتعلم بايثون في البداية بدلاً من C++ في حال كنت تواجه صعوبة، لكن ستحتاج إلى تعلم C أو C++ بعد ذلك. وبالطبع لن تتقن جميع اللغات السابقة بنسبة 100% أقصد أن تعلم C++ سيؤهلك لتعلم أي لغة بعد ذلك بسهولة وفي وقت قصير، وتحتاج إلى تعلم أساسيات تلك اللغات ثم تعلم ما ينقصك عندما تحتاجه. ثم ستحتاج إلى تعلم أساسيات الشبكات مثل TCP / IP و DNS و DHCP و HTTP و HTTPS و SSL / TLS. وبعد ذلك تأتي مرحلة التعلم عن مهارات التشفير AES. AES هو اختصار لـ "Advanced Encryption Standard" وهو نظام تشفير متقدم يُستخدم لحماية البيانات وتأمينها، ومن الممكن استخدام مهارات التشفير AES بشكل أخلاقي لاختبار قوة التشفير وتحسين أمان النظام وتأمين البيانات. أما بخصوص تعلم الآلة فلست بحاجة إلى تعلمه في البداية، عليك بالتركيز على إحتراف المجال الذي تريده أولاً، ثم بإمكانك النظر إلى استخدام الذكاء الاصطناعي في تنفيذ عمليات إختبار الإختراق مثلاً بشكل آلي أو محاكاة أمرًا ما وبالطبع الذكاء الاصطناعي له استخداماته في ذلك المجال. وستجد هنا شرح مفصل عن مصادر التعلم:
  20. هناك بعض الأسباب التي قد تمنع ظهور الصورة في محرر HTML وCSS، حتى لو كان الكود صحيحًا. فيما يلي بعض الأسباب الأكثر شيوعًا: قد لا تكون الصورة موجودة في نفس المجلد الذي يوجد فيه ملف HTML وCSS. يجب أن تكون الصورة في نفس المجلد الذي يوجد فيه ملف HTML وCSS. إذا كانت الصورة في مجلد مختلف، فستحتاج إلى تحديد المسار الكامل للصورة في علامة img. اسم الصورة غير صحيح. تأكد من أن اسم الصورة صحيح وأنك قد كتبته بشكل صحيح في علامة img. الصورة بتنسيق غير مدعوم. تأكد من أن الصورة بتنسيق مدعوم من قبل المتصفح، وبعض التنسيقات الشائعة المدعومة هي JPG، PNG، وGIF. حجم الصورة كبيرًا جدًا. قد لا يعرض بعض المتصفحات الصور الكبيرة جدًا، وفي حال كانت الصورة كبيرة جدًا، فقد تحتاج إلى تقليل حجمها باستخدام برنامج تحرير الصور. هناك خطأ في الكود HTML وCSS. تأكد من أن الكود HTML وCSS صحيحًا، وإذا كنت غير متأكد، فيمكنك استخدام أداة تصحيح HTML وCSS لمساعدتك في العثور على الأخطاء. وإليك مثال على الاستخدام الصحيح للغة HTML وCSS لعرض صورة: <html> <head> <title>This is a title</title> </head> <body> <img src="image.jpg" alt="This is an image"> </body> </html> حيث نستخدم علامة img لعرض الصورة. الوسم src هو المسار إلى الصورة، والوسم alt هو النص البديل الذي سيعرض إذا لم تتمكن المتصفحات من عرض الصورة. ولاحظ أن مسار الصورة في الخاصية src هو اسم الصورة فقط، وذلك يعني أن الصورة موجودة مباشرًة بجانب ملف html، أما في حال كانت الصورة بداخل مجلد imgs مثلاً، نقوم بكتابة المسار كالتالي: <html> <head> <title>This is a title</title> </head> <body> <img src="imgs/image.jpg" alt="This is an image"> </body> </html> وتستطيع استخدام CSS لتغيير حجم الصورة وتمركزها وإضافة حدود لها والعديد من الأشياء الأخرى، كالتالي: img { width: 100px; height: 100px; } والكود سيجعل الصورة بعرض 100 بكسل وارتفاع 100 بكسل.
  21. لم أفهم ما تريده بالضبط عذرًا، أنت تقوم بطباعة عنصار HTML؟
  22. العمل الحر هو سوق عمل يضم العديد من المهام والمشاريع التي يمكن أن يقوم بها الأشخاص من أي مكان في العالم، ويتطلب العمل الحر امتلاك مجموعة من المهارات والخبرات التي تسمح لك بالتميز عن الآخرين وجذب العملاء. وفي البداية عليك بمعرفة المجالات الملطوبة في مواقع العمل الحر والتي منها المواقع التالية: مستقل خمسات بعيد ومن المفترض أن تكوني متخصصة في أحد المهارات التالية للعمل على المواقع السابقة: أعمال وخدمات استشارية برمجة، تطوير المواقع والتطبيقات هندسة، عمارة وتصميم داخلي تصميم فيديو وصوتيات تسويق إلكتروني ومبيعات كتابة، تحرير، ترجمة ولغات دعم، مساعدة وإدخال بيانات تدريب وتعليم عن بعد وكل مجال من السابق بداخله تخصصات أخرى، فمثلاً، مجال البرمجة يحتوي على برمجة المواقع وبرمجة تطبيقات الهاتف وبرمجة برامج سطح المكتب، وبداخل كل تخصص هناك لغات برمجة مختلفة وهكذا. والأمر قد يبدوا معقد من الخارج، لكن خطوة بخطوة سيسهل الأمر عليك والجميع بدأ من نقطة الصفر. وبالنسبة للمدة اللازمة لتعلم أي مهارة، ففي رأي من 6 شهور وحتى سنة أو سنتين، حيث أن الأمر يتوقف على مقدار إجتهادك، وأيضًا معلوماتك المتوفرة أو خبراتك التي قد تساعدك في التعلم بشكل أسرع. والأفضل لك هو قراءة المقالات التالية لتحديد المجال الذي تريده، وفهم طبيعة العمل الحر بشكل شامل، بدلاً من التصورات الخيالية التي يروج لها على وسائل التواصل الإجتماعي. دليلك الشامل إلى العمل الحر عبر الإنترنت 28 وظيفة من وظائف العمل الحر الأكثر طلبًا للمبتدئين: 10 مقالات في مجال العمل الحر ينبغي لك قراءتها كيفية العمل على موقع مستقل وتحقيق أول 25 دولار دليل المستقلين
  23. ما تحتاج إليه يدعى loaders أو Spinners ويتم إنشائها من خلال CSS، وستجد العديد من النماذج الجاهزة على الإنترنت ولست بحاجة إلى إنشاء loader من البداية مثلاً لو بحثت عن css loader ستجد مواقع ومنها: https://cssloaders.github.io/ https://loading.io/css/ وكل ما عليك هو نسح كود HTML وCSS للشكل الذي نال إعجابك، ثم تمضينه في مشروعك وكتابة كود جافاسكريبت لعرض الـ Loader في الوقت المناسب وإليك مثال لشكل اخترته من المواقع السابقة: HTML: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" href="css/style.css" /> <script defer src="js/scripts.js"></script> <title>Document</title> </head> <body style="background-color: black"> <button id="loaderBtn">ابدأ التحميل</button> <div class="loader-container"> <span class="loader"></span> </div> </body> </html> CSS: .loader { position: relative; display: flex; align-items: center; justify-content: center; width: 100%; max-width: 6rem; margin-top: 3rem; margin-bottom: 3rem; } .loader:before, .loader:after { content: ''; position: absolute; border-radius: 50%; animation: pulsOut 1.8s ease-in-out infinite; filter: drop-shadow(0 0 1rem rgba(255, 255, 255, 0.75)); } .loader:before { width: 100%; padding-bottom: 100%; box-shadow: inset 0 0 0 1rem #fff; animation-name: pulsIn; } .loader:after { width: calc(100% - 2rem); padding-bottom: calc(100% - 2rem); box-shadow: 0 0 0 0 #fff; } .loader-container .loader { display: none; } @keyframes pulsIn { 0% { box-shadow: inset 0 0 0 1rem #fff; opacity: 1; } 50%, 100% { box-shadow: inset 0 0 0 0 #fff; opacity: 0; } } @keyframes pulsOut { 0%, 50% { box-shadow: 0 0 0 0 #fff; opacity: 0; } 100% { box-shadow: 0 0 0 1rem #fff; opacity: 1; } } لاحظ أنني نسخت الكود ولكن أضفت له التنسيق التالي من أجل إظهار وإخفاء العنصر من خلال جافاسكريبت: .loader-container .loader { display: none; } والآن كود JavaScript: وانتبه إلى ليتم عرض الـ loader حتى انتهاء المهمة، يجب أن تقوم المهمة بالتنفيذ بشكل غير متزامن (asynchronously)، حتى لا يتوقف تحميل الصفحة أثناء تنفيذ المهمة. أي نستخدم Promise و async/await في الدالة التي تقوم بتنفيذ المهمة، وبالتالي ستتمكن من استخدام الـ loader لحين انتهاء المهمة. // العناصر المستخدمة const loaderBtn = document.getElementById('loaderBtn'); const loader = document.querySelector('.loader'); // استهداف العنصر الـ loader // المهمة التي تحاكي العملية التي تستغرق وقتًا function simulateTask() { return new Promise(resolve => { setTimeout(() => { // اكمل هنا ما ترغب بعمله في المهمة (مثال: تنفيذ طلب API أو عملية طويلة) resolve(); // اكمل هنا إذا كان هناك بيانات نريد إرجاعها بعد الانتهاء }, 3000); // هنا تحدد فترة التنفيذ بالميلي ثانية (3 ثواني مثال) }); } // الدالة التي تنفذ عند النقر على الزر async function startLoading() { console.log('www'); loaderBtn.disabled = true; // تعطيل الزر أثناء التحميل loader.style.display = 'flex'; // إظهار الـ loader try { // قم بتنفيذ المهمة الغير متزامنة (asynchronously) await simulateTask(); // تنفيذ هذا الجزء فقط عندما ينتهي التنفيذ بنجاح loader.style.display = 'none'; // إخفاء الـ loader بعد الانتهاء من التحميل loaderBtn.disabled = false; // تمكين الزر بعد الانتهاء من التحميل } catch (error) { // إدارة الأخطاء إن وجدت console.error('حدث خطأ أثناء التحميل:', error); loader.style.display = 'none'; // إخفاء الـ loader في حالة حدوث خطأ loaderBtn.disabled = false; } } // إضافة مستمع للنقر على الزر loaderBtn.addEventListener('click', startLoading); والنتيجة هي كالتالي:
  24. بالإَضافة إلى ما تم ذكره، تستطيع كتابة التعليقات بكل سهولة في برنامج vscode من خلال الضغط على CTRL + / وعلامة السلاس تلك هي حرف ظ في لوحة المفاتيح وبالطبع يجب أن تقوم بتحويل اللغة إلى الإنجليزية قبل الضغط. وستجد أن تم تعليق السطر الذي قمت بالوقوف عنده بشكل تلقائي كالتالي: ولعمل تعليق لأكثر من سطر عليك بتحديد السطور التي تريد تعليقها ثم الضغط على CTRL + / كالتالي: ولاحظ أنه تم تعليق كل سطر على حدى أي بإضافة الهاش تاج في بداية كل سطر. وإذا تعليق تلك السطور ضمن تعليق متعدد السطور أي Block Comment فعليك بالضغط على Shift + Alt + A وسيصبح الكود كالتالي:
  25. هناك طريقتان لإدارة حملات Google Ads نيابة عن العميل: 1- تعيينك مديرًا للحملة الإعلانية، وذلك هو الخيار الأفضل إذا كنت ستدير حملات Google Ads للعميل بشكل منتظم، وبصفتك مديرًا للحملة الإعلانية، سيكون لديك حق الوصول الكامل إلى حساب Google Ads للعميل وستتمكن من إجراء أي تغييرات مطلوبة. ولجعلك مديرًا للحملة الإعلانية، سيحتاج العميل إلى منح حق الوصول لك إلى حساب Google Ads الخاص به، ويمكن القيام بذلك من خلال صفحة إعداد حساب Google Ads. قم بتسجيل الدخول إلى حساب Google Ads الخاص بالعميل. انقر على رمز الإعدادات في الزاوية العلوية اليمنى من الصفحة. انقر على "المستخدمون والحسابات". انقر على "إضافة مستخدم". أدخل عنوان بريدك الإلكتروني في حقل "بريد إلكتروني". حدد دور "مدير الحملة الإعلانية". انقر على "إضافة". بمجرد منح حق الوصول لك، ستتمكن من تسجيل الدخول إلى حساب Google Ads للعميل وإدارة الحملة الإعلانية. 2- استخدام حساب Google Ads الخاص بك لإنشاء الحملة الإعلانية للعميل، وهو الخيار الأفضل إذا كنت ستدير حملات Google Ads للعميل بشكل غير منتظم، وبصفتك مديرًا للحساب، ستحتاج إلى مشاركة بيانات اعتماد حساب Google Ads الخاص بك مع العميل حتى يتمكن من عرض التقارير وإجراء التغييرات على الحملة الإعلانية حسب الحاجة. أو إرسال التقارير له في حال وافق على ذلك، أو إضافة العميل لحسابك لرؤية التقارير، وستحتاج إلى منح العميل حق الوصول إلى حسابك، وذلك من خلال صفحة "المستخدمون والحسابات" في حسابك. قم بتسجيل الدخول إلى حساب Google Ads الخاص بك. انقر على رمز الإعدادات في الزاوية العلوية اليمنى من الصفحة. انقر على "المستخدمون والحسابات". انقر على "إضافة مستخدم". أدخل عنوان بريد العميل الإلكتروني في حقل "بريد إلكتروني". حدد دور "المشاهد". انقر على "إضافة". بمجرد منح العميل حق الوصول، سيتمكن من تسجيل الدخول إلى حسابك ورؤية التقارير، وبالطبع العميل لن يتمكن من إجراء أي تغييرات على حسابك، وسيكون بإمكانه فقط مشاهدة التقارير. فيما يلي بعض النصائح الإضافية لمنح العميل حق الوصول إلى حسابك: تأكد من أنك تثق بالعميل. امنح العميل فقط حق الوصول الذي يحتاج إليه. حدد مدة صلاحية حق الوصول. قم بمراجعة حق وصول العميل بانتظام.
×
×
  • أضف...