-
المساهمات
15772 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
407
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Mustafa Suleiman
-
في أي دورة خاصة بالذكاء الاصطناعي ستجد أنه تبدأ بشرح أساسيات الجبر الخطي وخلافه، وجميع الخوارزميات التي ستستخدمها مبنية على الرياضيات، وعمل عليها مختصي الرياضيات والإحصاء أولاً وليس المبرمجين، بل قام مهندسي الذكاء الاصطناعي باستخدام تلك المعادلات في بناء أدوات الذكاء الاصطناعي مثل TensorFlow. وأنت كمبتدأ لست بحاجة إلى معرفة كيف تم اشتقاق تلك الخوارزميات وكيف تم بنائها، كل ما تحتاجه هو أساسيات الرياضيات وهي الجبر الخطي والتفاضل والتكامل ولإحتمالات والتحليل الرياضي. وليس من الضروري أن يكون مستواك مرتفع في الرياضيات لتعلم الذكاء الاصطناعي بل يكفي تعلم الأساسيات ثم الاستزادة فيما بعد، وبالطبع كلما ارتفع مستواك في الرياضيات تطور مستواك وقدرتك على التعلم في مجال الذكاء الاصطناعي. والكورسات التي على مستوى عالِ كلها باللغة الإنجليزية ويجب عليك أن تكون قادر على الاستماع والقراءة بالإنجليزية لتعلم ذلك المجال، وإليك بعض الكورسات: كورس الذكاء الاصطناعي من جوجل (Google AI Education) الذكاء الإصطناعي - شهادة الماستر من جامعة كولومبيا (ColumbiaX's Artificial Intelligence MicroMasters) كورس الذكاء الاصطناعي للجميع (AI For Everyone) شهادة الذكاء الإصطناعي من جامعة ستانفورد (Machine Learning AI Certification) وأفضل كورس في القائمة هو الأخير (Machine Learning AI Certification).
- 8 اجابة
-
- 2
-
-
الأمر يعتمد دائمًا على الخوارزمية والهيكلة المتبعة للواجهة الخلفية، فقد يؤثر ذلك على الأداء أولا يؤثر. وللتقليل من أثر الـ streaming على الـ backend، عليك باتباع بعض الإرشادات والتعديلات: آليات التخزين المؤقت لتخزين المحتوى المسترجع من Google Cloud Storage في الـ backend، وذلك يساعد في تجنب استعلامات متكررة للـ Cloud Storage ويقلل من الحمل على الخادم. استخدم CDN (شبكة توصيل المحتوى) لتسليم المحتوى إلى المستخدمين، وسيساعد ذلك في تقليل عبء العمل على ال backend عن طريق جلب المحتوى من خوادم قريبة من المستخدمين. استخدام خوادم وكيل (Reverse Proxy) للتعامل مع طلبات الـ streaming وتحويلها إلى الـ backend، وخوادم الوكيل قادرة على إدارة عمليات الـ streaming بكفاءة وتحمي الـ backend من الأحمال الزائدة. استخدام حلول(Load Balancer) لتوزيع الحمولة بين مجموعة من الخوادم الخلفية (backend)، وبالتالي تحسين استجابة الـ streaming عند وجود أعداد كبيرة من المستخدمين. التأكد من أن الكود المستخدم في الـ backend محسن وفعال من حيث استخدام الموارد والاستجابة. استخدام تقنيات التنقيح (Profiling)، وقم بتحليل أداء الـ backend باستخدام تلك التقنيات للتعرف على أي مشاكل أداء وحلها. وإن كانت البيانات المستخدمة في الـ streaming مخزنة في قاعدة بيانات، فمن من المفيد تحسين أداء قاعدة البيانات والاستعلامات المستخدمة. استخدم تقنية ضغط المحتوى لتقليل حجم المحتوى الذي يتم نقله إلى المستخدمين، وبالتالي تقليل عبء العمل على الشبكة وتحسين سرعة التحميل.
- 3 اجابة
-
- 1
-
-
تم النقاش حول سؤالك بشكل مفصل من قبل، وفي البداية عليك بتفهم أن مجال الأمن السيبراني متشعب وعليك بالسير خطوة بخطوة ودون استعجال. وبالنسبة للأمن السيبراني فهو ليس بحاجة إلى تعلمك للغات برمجة لكن من الأفضل على الأقل تعلم لغة واحدة وهي بايثون، واللغة التي أنصحك بتعلم الأساسيات من خلالها هي C++ ولكن البعض قد يجدها صعبة وبعد المحاولة إن كانت كذلك، فتعلم الأساسيات من خلال بايثون. وبالطبع تحتاج إلى تعلم أساسيات الشبكات مثل TCP / IP و DNS و DHCP و HTTP و HTTPS و SSL / TLS. بعد تعلم الأساسيات السابقة، يأتي دور التعرف على التشفير وأمن المعلومات، ومهارات التشفير تُمكِّن الهاكر الأخلاقي من فهم كيفية حماية البيانات وتأمينها، ومنها نظام التشفير المتقدم AES كمثال على الأدوات التي يمكن للهاكر الأخلاقي استخدامها لاختبار قوة التشفير وتعزيز أمان النظام. وكبداية أنصحك بدورة علوم الحاس في أكاديمية حسوب وستتعلم بها التالي: أساسيات الحاسوب وعلومه والتفكير المنطقي وما هي الخوارزميات وكيف تفيد في البرمجة تطبيقات عملية على أساسيات التفكير المنطقي باستخدام بيئة سكراتش Scratch التفاعلية أساسيات لغة البرمجة JavaScript وبايثون، وتطبيق المفاهيم التي تم شرحها باستخدامها، والتوسع في شرح التطبيقات العملية للغات البرمجة أساسيات أنظمة التشغيل المختلفة وكيفية تثبيت البرمجيات اللازمة للبرمجة عليها أساسيات سطر الأوامر في نظام لينكس، وشرح الأسس التي بني عليها النظام مع تطبيقها عمليًا أنظمة قواعد البيانات المختلفة، مع شرح تفصيلي للغة SQL للتعامل معها مبادئ أساسية في أنظمة قواعد البيانات NoSQL المفاهيم الأساسية التي تبنى فيها صفحات الويب مفاهيم أساسية في الشبكات والخوادم، وكيف يتم استقبال الطلبيات إلى الخادم والرد عليها مبادئ الحماية والأمان في الويب وبخصوص المسار البرمجي Roadmap الذي يجب أن تسير عليه لتعلم الأمن السيبراني فقد تم توضيحه هنا من قبل خبير في المجال وهو محمد عبد الباسط النوبي، بعنوان ١٠١ - دليلك فى البرمجة ومجال امن وحماية واختبار اختراق تطبيقات الويب وستجد به كل ما تحتاج معرفته: وأنصحك أيضًا بقراءة النقاش الخاص به على منصة حسوب I\O حيث أجاب به على الكثير من الأسئلة.
-
هل تقصد بخصوص إطار فلاتر نفسه؟ لا يوجد صعوبة بخصوص الإطار نفسه، لكن هناك بعض المشاكل بالطبع بخصوص متجر آبل حيث يجب أن يفي تطبيقك بمعايير معينة من Apple حتى يتم قبوله في متجر التطبيقات، وقد يتضمن ذلك متطلبات فنية مثل دقة الشاشة أو حجم الذاكرة، أو متطلبات محتوى مثل سياسة الخصوصية أو شروط الخدمة. وتتطلب Apple من جميع التطبيقات الخضوع لمراجعة قبل أن يتم نشرها في متجر التطبيقات، ويمكن أن تستغرق تلك العملية عدة أيام أو أسابيع، وقد يتم رفض تطبيقك إذا لم يفي بمتطلبات Apple. أيضًا تتقاضى Apple رسومًا لاستخدام متجر التطبيقات، قدرها 99 دولارًا أمريكيًا للحساب المطور، وتلك الرسوم مطلوبة لنشر أي تطبيق على متجر التطبيقات، بغض النظر عن حجمه أو نوعه. بالإضافة إلى الرسوم السنوية، تتقاضى Apple أيضًا رسومًا بنسبة 30٪ من جميع المعاملات التي تتم في تطبيقك، وتلك الرسوم تُعرف باسم "رسوم العمولة". أي إذا كان لديك تطبيق يكلّف 1.99 دولارًا أمريكيًا للتنزيل، فستحصل Apple على 0.597 دولارًا أمريكيًا من كل عملية شراء، بينما ستحصل أنت على 1.393 دولارًا أمريكيًا.
- 2 اجابة
-
- 1
-
-
سؤالك عام، ولن تحصل على إجابة وافية، أنت تقصد هل هناك مجال أفضل من مجال؟ بالطبع لا، في البرمجة كل المجالات مكملة لبعضها، وفي الماضي لم تكن هناك العديد من المجالات المتواجدة الآن، والمجالات كانت محدوة والتقنيات بسيطة والموارد المتاحة لتعلمها قليلة أيضًا. حاليًا أصبح كل مجال في البرمجة متشعب وبه تخصصات وتقنيات ولغات ومكتبات، إلخ.. أما في سوق العمل، فهناك مجال أفضل من مجال بالطبع وذلك يعتمد على العرض والطلب وعلى مدى الدعم الذي تتلقاه لغة أو إطار معين وعلى مدى توافر الموارد والمطورين والمكتبات التي تسهل عملية التطوير وخلافه. مثلاً لغة مثل PHP متواجدة بقوة في سوق العمل منذ سنوات بسبب إطار لارافيل الذي يعطي للغة قوة ودعم كبير، وأيضًا لديك ASP.NET وإطار Angular. هل هناك مجال أفضل من مجال بالنسبة لك؟ بالطبع، الأمر يعتمد على ظروفك وما تريده والوقت المتاح لك وخبراتك السابقة.
- 3 اجابة
-
- 1
-
-
لسان حالك يخبرني أنك في سن صغير، وإذا كنت كذلك، فلا داعي للعجلة، يمكنك تجربة كافة المجالات من خلال تخصيص أسبوع أو أسبوعين لتجربة لتفقد كل مجال ورؤية ما يقدمه وتفقد ما تريده حقًا. وسواء كان سنك صغير أم قريب من سن العمل، فعليك أولاً تعلم أساسيات البرمجة بشكل صحيح، ثم إختيار المجال، وبالطبع الأساسيات تكون من خلال C++ أو بايثون وهي الأسهل لكن C++ الأفضل لتعلم الأساسيات. بعد ذلك تفقد المطلوب في سوق العمل في المجال الذي تريد التخصص به، سواء على مواقع العمل الحر أو الشركات، وستجد لغة برمجة وإطار عمل مطلوب بكثرة في مجال معين وهنا عليك تعلمه حتى لو كنت تريد تعلم لغة أو إطار آخر، فأنت في النهاية تريد العمل وليس الأمر مجرد هواية. وببساطة حدد الوقت المتاح لك وما الذي تريد فعله بالضبط وخطط لسنة قادمة والتزم بما خططت له، وأثناء تعلم المسار البرمجي الذي إخترته تستطيع التعديل قليلاً لكن عليك بالإلتزام بمجال واحد إلى النهاية، فتعلم مجال برمجي سينقل مستواك إلى مستوى آخر تمامًا حتى لو لم تعمل به وعملت بمجال برمجي آخر، لكنك تعلمت البرمجة بالفعل وسيسهل الإنتقال من مجال لآخر. وستجد هنا شرح مفصل:
- 2 اجابة
-
- 1
-
-
بالطبع ذلك مذكور في وصف الدورة، وبخصوص HTML وCSS تستطيع تعلمهم من خلال المسار الأول من دورة تطوير واجهات المستخدم وهو أساسيات تطوير الويب وستجد به التالي: أساسيات HTML أساسيات CSS أساسيات JavaScript أساسيات jQuery بناء موقع شخصي وجميع المسارات الأولى من الدورات الأخرى متاحة لك بشكل مجاني لتعلم ما تريد والإطلاع على الدورة قبل الإشتراك بها، ويوجد أيضًا المسار الأول دورة تطوير التطبيقات باستخدام JavaScript وهو أساسيات لغة JavaScript حيث يتم شرحها بشكل معمق أكثر.
-
في أكاديمية حسوب الهدف هو تحقيق إفادة لك وتوجيهك للطريق السليم وإخبارك بالخيارات المتاحة لك وما يجب فعله وما يمكن التخلي عنه مؤقتًا تبعًا للظروف الخاصة بك. وبشكل واضح، دورة علوم الحاسب غير مخصصة لتعليمك مجال محدد في البرمجة من أجل سوق العمل، بل غرضها هو تأهيلك لتعلم البرمجة بشكل سليم ودخول سوق العمل بقوة، حيث أنك ستمتلك أفضلية بالطبع بسبب تعلمك لأساسيات البرمجة من خلال بايثون وجافاسكريبت وأيضًا علوم الحاسب والتي تتضمن التالي: أساسيات الحاسوب وعلومه والتفكير المنطقي وما هي الخوارزميات وكيف تفيد في البرمجة تطبيقات عملية على أساسيات التفكير المنطقي باستخدام بيئة سكراتش Scratch التفاعلية أساسيات أنظمة التشغيل المختلفة وكيفية تثبيت البرمجيات اللازمة للبرمجة عليها أساسيات سطر الأوامر في نظام لينكس، وشرح الأسس التي بني عليها النظام مع تطبيقها عمليًا أنظمة قواعد البيانات المختلفة، مع شرح تفصيلي للغة SQL للتعامل معها مبادئ أساسية في أنظمة قواعد البيانات NoSQL المفاهيم الأساسية التي تبنى فيها صفحات الويب مفاهيم أساسية في الشبكات والخوادم، وكيف يتم استقبال الطلبيات إلى الخادم والرد عليها مبادئ الحماية والأمان في الويب وبالتالي يصبح لديك قاعدة معرفة قوية ووعي ودراية بمجالات البرمجة، الأمر الذي يؤهلك للخطوة القادمة وهي إختيار مجال البرمجة الذي تريده، حيث سيتم توجيهك بعد إنتهاء الدورة وإجتياز الإختبار إلى كيفية تعلم المجال الذي تريده لدخول سوق العمل أو إقتراح مجالات ومنها الويب أو تطوير تطبيقات الهاتف أو مجال الواجهة الخلفية Back-End أو الجمع بين الواجهة الأمامية والخلفية لتصبح مطور Full-stack. وأيضًا ستجد نفسك قادر على حل المشكلات التي تواجهك ولديك مهارة التفكير المنطقي أي مستواك أفضل من أي شخص قام ببدأ المسار التعليمي في مجال معين دون تعلم الأساسيات.
-
أرجو إن كان السؤال متعلق بدورة 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().
-
أولاً الهاكر الأخلاقي هو شخص يحاول العثور على الثغرات الأمنية في الأنظمة والشبكات من أجل تحسين أمنها، ويُعرف الهاكر الأخلاقي أيضًا باسم المخترق الأبيض أو صاحب القبعة البيضاء أو 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 بشكل أخلاقي لاختبار قوة التشفير وتحسين أمان النظام وتأمين البيانات. أما بخصوص تعلم الآلة فلست بحاجة إلى تعلمه في البداية، عليك بالتركيز على إحتراف المجال الذي تريده أولاً، ثم بإمكانك النظر إلى استخدام الذكاء الاصطناعي في تنفيذ عمليات إختبار الإختراق مثلاً بشكل آلي أو محاكاة أمرًا ما وبالطبع الذكاء الاصطناعي له استخداماته في ذلك المجال. وستجد هنا شرح مفصل عن مصادر التعلم:
-
هناك بعض الأسباب التي قد تمنع ظهور الصورة في محرر 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 بكسل.
-
العمل الحر هو سوق عمل يضم العديد من المهام والمشاريع التي يمكن أن يقوم بها الأشخاص من أي مكان في العالم، ويتطلب العمل الحر امتلاك مجموعة من المهارات والخبرات التي تسمح لك بالتميز عن الآخرين وجذب العملاء. وفي البداية عليك بمعرفة المجالات الملطوبة في مواقع العمل الحر والتي منها المواقع التالية: مستقل خمسات بعيد ومن المفترض أن تكوني متخصصة في أحد المهارات التالية للعمل على المواقع السابقة: أعمال وخدمات استشارية برمجة، تطوير المواقع والتطبيقات هندسة، عمارة وتصميم داخلي تصميم فيديو وصوتيات تسويق إلكتروني ومبيعات كتابة، تحرير، ترجمة ولغات دعم، مساعدة وإدخال بيانات تدريب وتعليم عن بعد وكل مجال من السابق بداخله تخصصات أخرى، فمثلاً، مجال البرمجة يحتوي على برمجة المواقع وبرمجة تطبيقات الهاتف وبرمجة برامج سطح المكتب، وبداخل كل تخصص هناك لغات برمجة مختلفة وهكذا. والأمر قد يبدوا معقد من الخارج، لكن خطوة بخطوة سيسهل الأمر عليك والجميع بدأ من نقطة الصفر. وبالنسبة للمدة اللازمة لتعلم أي مهارة، ففي رأي من 6 شهور وحتى سنة أو سنتين، حيث أن الأمر يتوقف على مقدار إجتهادك، وأيضًا معلوماتك المتوفرة أو خبراتك التي قد تساعدك في التعلم بشكل أسرع. والأفضل لك هو قراءة المقالات التالية لتحديد المجال الذي تريده، وفهم طبيعة العمل الحر بشكل شامل، بدلاً من التصورات الخيالية التي يروج لها على وسائل التواصل الإجتماعي. دليلك الشامل إلى العمل الحر عبر الإنترنت 28 وظيفة من وظائف العمل الحر الأكثر طلبًا للمبتدئين: 10 مقالات في مجال العمل الحر ينبغي لك قراءتها كيفية العمل على موقع مستقل وتحقيق أول 25 دولار دليل المستقلين
-
ما تحتاج إليه يدعى 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); والنتيجة هي كالتالي:
-
بالإَضافة إلى ما تم ذكره، تستطيع كتابة التعليقات بكل سهولة في برنامج vscode من خلال الضغط على CTRL + / وعلامة السلاس تلك هي حرف ظ في لوحة المفاتيح وبالطبع يجب أن تقوم بتحويل اللغة إلى الإنجليزية قبل الضغط. وستجد أن تم تعليق السطر الذي قمت بالوقوف عنده بشكل تلقائي كالتالي: ولعمل تعليق لأكثر من سطر عليك بتحديد السطور التي تريد تعليقها ثم الضغط على CTRL + / كالتالي: ولاحظ أنه تم تعليق كل سطر على حدى أي بإضافة الهاش تاج في بداية كل سطر. وإذا تعليق تلك السطور ضمن تعليق متعدد السطور أي Block Comment فعليك بالضغط على Shift + Alt + A وسيصبح الكود كالتالي:
-
هناك طريقتان لإدارة حملات Google Ads نيابة عن العميل: 1- تعيينك مديرًا للحملة الإعلانية، وذلك هو الخيار الأفضل إذا كنت ستدير حملات Google Ads للعميل بشكل منتظم، وبصفتك مديرًا للحملة الإعلانية، سيكون لديك حق الوصول الكامل إلى حساب Google Ads للعميل وستتمكن من إجراء أي تغييرات مطلوبة. ولجعلك مديرًا للحملة الإعلانية، سيحتاج العميل إلى منح حق الوصول لك إلى حساب Google Ads الخاص به، ويمكن القيام بذلك من خلال صفحة إعداد حساب Google Ads. قم بتسجيل الدخول إلى حساب Google Ads الخاص بالعميل. انقر على رمز الإعدادات في الزاوية العلوية اليمنى من الصفحة. انقر على "المستخدمون والحسابات". انقر على "إضافة مستخدم". أدخل عنوان بريدك الإلكتروني في حقل "بريد إلكتروني". حدد دور "مدير الحملة الإعلانية". انقر على "إضافة". بمجرد منح حق الوصول لك، ستتمكن من تسجيل الدخول إلى حساب Google Ads للعميل وإدارة الحملة الإعلانية. 2- استخدام حساب Google Ads الخاص بك لإنشاء الحملة الإعلانية للعميل، وهو الخيار الأفضل إذا كنت ستدير حملات Google Ads للعميل بشكل غير منتظم، وبصفتك مديرًا للحساب، ستحتاج إلى مشاركة بيانات اعتماد حساب Google Ads الخاص بك مع العميل حتى يتمكن من عرض التقارير وإجراء التغييرات على الحملة الإعلانية حسب الحاجة. أو إرسال التقارير له في حال وافق على ذلك، أو إضافة العميل لحسابك لرؤية التقارير، وستحتاج إلى منح العميل حق الوصول إلى حسابك، وذلك من خلال صفحة "المستخدمون والحسابات" في حسابك. قم بتسجيل الدخول إلى حساب Google Ads الخاص بك. انقر على رمز الإعدادات في الزاوية العلوية اليمنى من الصفحة. انقر على "المستخدمون والحسابات". انقر على "إضافة مستخدم". أدخل عنوان بريد العميل الإلكتروني في حقل "بريد إلكتروني". حدد دور "المشاهد". انقر على "إضافة". بمجرد منح العميل حق الوصول، سيتمكن من تسجيل الدخول إلى حسابك ورؤية التقارير، وبالطبع العميل لن يتمكن من إجراء أي تغييرات على حسابك، وسيكون بإمكانه فقط مشاهدة التقارير. فيما يلي بعض النصائح الإضافية لمنح العميل حق الوصول إلى حسابك: تأكد من أنك تثق بالعميل. امنح العميل فقط حق الوصول الذي يحتاج إليه. حدد مدة صلاحية حق الوصول. قم بمراجعة حق وصول العميل بانتظام.
-
الثغرة الأمنية هي أي عيب في البرنامج يمكن أن يستغله المهاجم للوصول غير المصرح به إلى النظام أو سرقة البيانات أو تدمير الملفات أو تنفيذ تعليمات ضارة أخرى. أي هي أخطاء أو عيوب في التصميم أو التنفيذ غير مقصودة بالطبع تتيح للمهاجمين الوصول غير المشروع إلى النظام أو تنفيذ أنشطة غير مصرح بها، وقد تسبب الثغرات في تعطيل البرنامج أو تنفيذ أوامر خبيثة أو أن يصبح النظام أكثر عرضة للهجمات. هناك عدة أنواع من الثغرات وأسبابها، ومنها: ثغرات البرمجة تنشأ نتيجة أخطاء في كتابة الشفرة البرمجية، مثل استخدام غير صحيح للمتغيرات أو عمليات غير صحيحة تؤدي إلى سلوك غير متوقع، ومن الأمثلة الشهيرة على ذلك ثغرة "قلب الأمر" (Heartbleed) في بروتوكول OpenSSL الذي كان يسمح للمهاجمين بسرقة بيانات الذاكرة. ثغرات التصميم تحدث بسبب سوء التخطيط أو التصميم العام للبرمجيات، مما يجعلها عرضة للاختراق، مثال على ذلك ثغرة "المصعد" (Elevator) حيث يمكن للمستخدم الوصول إلى مستويات غير مخول له. ثغرات الأمان تنشأ نتيجة عدم تنفيذ ممارسات أمان قوية، مما يسمح للمهاجمين بالاختراق والوصول إلى المعلومات الحساسة، مثلاً، ثغرات في الاستجابة البينية لمواقع الويب قد تسمح للمهاجمين بتنفيذ هجمات حقن الشيفرة (Code Injection)، مثل هجمات SQL Injection. وهناك العديد من الطرق المختلفة لاكتشاف الثغرات الأمنية، بما في ذلك: اختبار الاختراق Penetration Testing وهي عملية تقييم النظام الأمني عن طريق محاكاة هجوم من قبل المهاجم. تحليل الكو وهي عملية مراجعة الكود المصدري للبرنامج بحثًا عن الأخطاء أو العيوب التي يمكن استغلالها. يمكن للمستخدمين الإبلاغ عن الثغرات الأمنية التي يجدونونها إلى الشركة المصنعة أو المطور. وفي بعض الأحيان يحدث أن يتم اكتشاف الثغرة بالصدفة من قبل مستخدم عادي أو مخترق ما، والأمر راجع له في حال أراد التبليغ عن تلك الثغرة أو استغلالها لمصالحه الشخصية، لكن ذلك يعرضه للمسائلة القانونية بالطبع. وفي بعض الدول العربية، في حال لم يوجد برنامج مكافآت أو نظام للإبلاغ عن الثغرات، فستتعرض للمسائلة القانونية لأنك اكتشتف ثغرة وحاولت إختراق الموقع!! بدلاً من أن يتم شكرك مكافأتك. وهناك أشخاص وظيفتهم هي البحث عن الثغرات والتكسب منها من خلال برامج المكافآت Bug Bounty Programs التي تعلن عنها الشركات، مثلاً في فيسبوك تحسب المكافآت المالية بناءًا على خطورة الثغرة: منخفضة 500 دولار متوسطة 1000 دولار عالية 5000 دولار حرجة 10000 دولار وهناك شركات تقدم مكافآت أعلى.
- 4 اجابة
-
- 1
-
-
أولاً لا تترك بلدك أبدًا لتبحث عن عمل في دولة غريبك عنك، بل عليك باكتساب الخبرة في بلدك ثم التقدم للوظائف المعروضة في الدول العربية أو الأجنبية ثم الحصول على عقد عمل، وكلمة السر هي عقد عمل، فبدونه ستعاني وستواجه الكثير من المشاكل، ويجب أن يكون عقد العمل به المسمى الوظيفي الخاص بوظيفتك التي تريد العمل بها وليس وظيفة أخرى. وفي مجال البرمجة، لست بحاجة إلى العمل في شركة ببلدك من أجل اكتساب الخبرة، حيث تستطيع التعلم والعمل بشكل حر أو تنفيذ العديد من المشاريع بمفردك واكتساب الخبرة ولكن يجب أن تكون مشاريع حقيقية مشابهة لأرض الواقع، وبعد سنة من الخبرة تستطيع التقدم للوظائف المعروضة عن بعد أو يمكنك السفر في حال كان ذلك متوفر. وتستطيع البحث على مواقع مثل LinkedIn و Indeed و منصة بعيد، ومواقع مثل weworkremotely.
-
كلاهما مطلوبان في سوق العمل، حيث ستجد أن يتم طلب Django تحت مسمى Full Stack Developer أي ستعمل على تطوير الواجهة الأمامية والخلفية كمطور بايثون وقد يتم طلب React أيضًا لتطوير الواجهة الأمامية، أو أحيانًأ يتم طلب Django تحت مسمى وظيفي Backend Developer وستجد أنه مطلوب مثلاً (Django/PostgreSQL) للواجهة الخلفية. أما Laravel فهى بالطبع الأكثر طلبًا سواء على مواقع العمل الحر أو في الشركات، ويتم الإعتماد على إطار لارافل بشكل أكبر في إنشاء المواقع مقارنًة بـ Django. وأفضل طريقة لمعرفة ذلك، هي بالبحث بالكلمات المفتاحية على مواقع التوظيف مثل LinkedIn والبحث بكلمات مثل "Django, Back-End developer, python developer, Laravel developer , PHP developer". وأيضًا اتجه إلى مواقع العمل الحر التي تريد العمل عليها، وأنشيء حساب وتصفح المشاريع والمهارات المطلوبة وما هي اللغة والإطار الأكثر طلبًا، وبعدها اتخذ قرارك بناءًا على المطلوب في سوق العمل فعلاً.
- 3 اجابة
-
- 1
-
-
التنبيه "DevTools failed to load source map: Could not load content for chrome-extension://pejiikdiikindfooppgaidccahalenih/webspeed.js.map: System error: net: ERR_BLOCKED_BY_CLIENT" يعني خطأ في تحميل خريطة المصدر (source map) في جوجل كروم، وتعرف خريطة المصدر بأنها ملف يرتبط بملف JavaScript وتساعد في تحسين عملية تصحيح الأخطاء وتصفح الشيفرة المصدرية عند تطوير الويب، ولكن، قد يحدث خطأ في تحميل خريطة المصدر أحيانًا، مما يؤدي إلى ظهور رسالة الخطأ التي رأيتها. وتُبيّن الرسالة أنه لم يتمكن من تحميل محتوى خريطة المصدر من مسار الامتداد (extension) في جوجل كروم بعنوان pejiikdiikindfooppgaidccahalenih واسم الملف هو webspeed.js.map. أما System error: net: :ERR_BLOCKED_BY_CLIENT،تشير إلى أن الخطأ تم حظره بواسطة العميل، والعميل هنا يمثل امتداد مثبت على متصفح جوجل كروم يحميك من بعض السلوكيات غير المرغوب فيها على الإنترنت. وتعتبر خرائط المصدر (source maps) ملفات ضرورية للمطورين أثناء التطوير لكنها لا تؤثر على عمل الموقع أو التطبيق النهائي للمستخدمين العاديين، وتظهر تلك الرسالة للمطورين للإشارة إلى أن خريطة المصدر لهذا الامتداد قد فشلت في التحميل، وهي رسالة تحذيرية وليست ضارة بالضرورة، وبالطبع أنت لست مطور لتلك الإضافة وتستخدم متصفح جوجل كروم لتصفح الويب وتطوير موقعك بشكل عادي، ولذلك تلك الرسالة ليست مؤثرة وتستطيع تعطيل ظهورها كما أشار إليك قيس. وأنا مثلاً لدي تنبيهات مثلها تظهر بسبب إضافات المتصفح لدي: وتستطيع حذفها من خلال الضغط على الأيقونة التالية لحذف جميع الرسائل من الكونسول.
-
باستطاعتك الإعتماد على خدمة Google Cloud Storage لإنشاء رابط Blob ذي صلاحيات محدودة، وإليك الخطوات: انتقل إلى لوحة القيادة في Google Cloud Platform. انقر فوق "خدمات". انقر فوق "تخزين Google Cloud". انقر فوق "حاوية". انقر فوق الحاوية التي يحتوي عليها الملف الذي تريد إنشاء رابط Blob له. انقر فوق الملف الذي تريد إنشاء رابط Blob له. في قسم "الروابط"، انقر فوق "إنشاء رابط". في نافذة "إنشاء رابط"، حدد الخيار "رابط Blob". في قسم "الصلاحيات"، حدد مستوى الوصول الذي تريد منحه للرابط. انقر فوق "إنشاء". سيتم إنشاء رابط Blob وسيتم عرضه في قسم "الروابط"، وتستطيع نسخ ذلك الرابط واستخدامه لعرض الملف على موقعك. وإليك مثال على رابط Blob ذي صلاحيات محدودة: https://storage.googleapis.com/my-bucket/my-file.mp4?access_token=YOUR_ACCESS_TOKEN وفي الرابط، تم تحديد مستوى الوصول إلى "القراءة فقط"، أي أن المستخدمين لن يتمكنوا من تنزيل الملف أو نسخه أو مشاركته. أيضًا بإمكانك استخدام API Google Cloud Storage لإنشاء رابط Blob ذي صلاحيات محدودة، كالتالي: curl -X POST \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "my-file.mp4", "generation": 1234567890, "contentType": "video/mp4", "accessControl": { "bucketPolicy": { "roles": { "roles/storage.objectViewer": [ "user:YOUR_USER_EMAIL" ] } } } }' \ "https://storage.googleapis.com/v1/b/my-bucket/o" والاستجابة من API Google Cloud Storage هي ردًا يتضمن رابط Blob ذي صلاحيات محدودة، وتستطيع نسخ الرابط واستخدامه لعرض الملف على موقعك. أو بإمكانك الإعتماد على موقع استضافة للفيديو مثل "فيمو" أو أي بديل آخر يناسبك، وأنت تحدد النطاق (الدومين) المسموح بأن تعمل عليه الفيديوهات، وهو نطاق موقعك الخاص، وتتم هذه العملية عن طريق ضبط إعدادات حساب استضافة الفيديو لديك ليتم قبول النطاق الخاص بك كنطاق موثوق به (trusted domain). أو هناك خيار آخر وهو استخدام تقنية DRM (إدارة الحقوق الرقمية) للحماية من المحتوى الخاص بك، وDRM هي تقنية تسمح لك بتقييد الوصول إلى المحتوى الخاص بك، بحيث لا يمكن للمستخدمين مشاهدته أو تنزيله إلا إذا كانوا مصرح لهم بذلك، وهناك العديد من حلول DRM المختلفة المتاحة، ويمكنك اختيار الحل الذي يناسب احتياجاتك الخاصة. وأرشح لك الخدمات التالية: https://www.brightcove.com/en/ https://www.vkrpt.com/ https://bunny.net/ https://www.vdocipher.com/ وتستطيع البحث عن Video streaming CDN يدعم خاصية DRM لكنه بالطبع مكلف أكثر، تستطيع البحث واختيار المزود المناسب للميزانية الخاصة بك.
- 1 جواب
-
- 1
-
-
عليك بإضافة مستودع JitPack إلى إلى قسم repositories في ملف build.gradle: repositories { ... maven { url 'https://jitpack.io' } } ثم، تحتاج إلى إضافة تبعية FFmpegMediaMetadataRetriever إلى قسم dependencies في ملف build.gradle: dependencies { implementation 'com.github.wseemann.FFmpegMediaMetadataRetriever:FFmpegMediaMetadataRetriever-core:v1.0.15' } وفي حال أردت إضافة أي مستودع لمكتبة أخرى نتوجه إلى موقع https://jitpack.io ثم ألصق رابط المستودع الخاص بالمكتبة على GitHub وستظهر لك الإصدارات المتاحة ونضغط على get it وستجد الرابط بالأسفل: وتستطيع قراءة المستند الرسمي الخاص بالمكتبة في حال واجهتك مشكلة معينة: https://github.com/wseemann/FFmpegMediaMetadataRetriever
-
عليك بالتسويق في البداية في المجموعات المهتمة بذلك النوع من المنتجات على الفيسبوك، وأيضًا الـ Market Place الخاص به، وأيضًا حاول تكوين مجموعة على التيليجرام لتكوين قاعة عملاء وإغرائهم بخصم لكل من يشترك في المجموعة. أيضًا حاول إنشاء صفحة على الفيسبوك وكتابة محتوى مفيد والتسويق للمنتجات الخاصة بك، أو حاول كتابة محتوى مفيد في المجموعات المهتمة بذلك. بالإضافة إلى إنشاء مدونة على المتجر وكتابة محتوى مفيد حقًا يبحث عنه من يهتم بمنتجاتك ولا يجب أن يقل المحتوى عن 1000 كلمة وتكون مفيدة وليست حشو بدون داعي. وأرى أن المتجر الخاص بك باللغة الأجنبية، فهل أنت تستهدف دولة كندا؟ عليك بتفقد ما هي المنصات والبرامج التي يعتمد عليها عملائك ثم حاول تكوين قاعدة عملاء من خلالها كما أشرت إليك، والأمر بطيء بالطبع وبحاجة إلى وقت ونفس طويل.
-
ما هو الخطأ الذي يظهر لك، يجب تحديد الخطأ لحل المشكلة، وربما لديك تعارض في إصدارات الحزم conflict peer dependencies ولحل المشكلة، عليك باستخدام مؤشر أو --legacy-peer-deps عند التثبيت أي كالتالي: npm i --legacy-peer-deps والسبب أنه بعض الأحيان، يكون من الصعب تثبيت حزم معينة بسبب تبعيات النظائر القديمة، وقد يحدث ذلك عندما تكون الحزمة الأصلية معتمدة على نسخة محددة من حزمة، ولكن نسخة أحدث من تلك الحزمة مثبتة بالفعل ويتعارض ذلك مع التبعية. ومن الأفضل استخدام الحزم المتوافقة مع بعضها، من خلال تحديث الحزم من خلال تشغيل حزمة npm-check-updates بالأمر التالي: npx npm-check-updates وسيتم تحديث إصدارات الحزم في ملف package.json والآن عليك بالتثبيت من خلال الأمر npm i. ولكن انتبه إلى أن تحديث الحزم إلى آخر إصدار قد يتعارض مع الكود الخاص بمشروعك في حال كانت الإصدارات الجديدة تتطلب تعديل على الكود.
- 4 اجابة
-
- 1
-
-
كل الدول جيدة للعمل في مجال البرمجة، أما إذا كان السؤال بخصوص الشركات ذات الراتب وبيئة العمل التي تراها على مواقع التواصل وخلافه، فستجد ذلك في الدول الأوروبية وأمريكا، وبالطبع دول الخليج ستجد رواتب مرتفعة لكن بيئة العمل ليست الأفضل لكن الأفضل في المنقطة العربية على الأقل. وعليك بتخصيص سؤالك لتحصل على إجابة أفضل، وأيضًا هناك بعض الدول التي بها صناعات في البرمجة مثل صناعة الألعاب لذلك هي أفضل من غيرها، وأيضًا هناك بعض الدول الأوروبية رواتبها منخفضة مقارنًة بدول أخرى وأمريكا الرواتب بها أعلى، لكن الدول الأوروبية أفضل في رأي.
- 4 اجابة
-
- 1
-