-
المساهمات
18922 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
447
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Mustafa Suleiman
-
في حال الدرس خاص بأحد الدروس في الدورات، ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم أسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل. إن لم يكن كذلك أرجو التوضيح.
-
الأساسيات التي أنت بحاجة إلى معرفتها في البداية، أولاً يوجد طريقتين، الأحدث هي استخدام كائنات DateTime, DateTimeImmutable, DateTimeZone, و DateInterval وهي متوفرة منذ إصدار PHP 5.2 وما بعده. وهي الطريقة كائنية التوجه وتتميز بالأفضلية والمرونة خاصًة عند التعامل مع المناطق الزمنية والعمليات المعقدة. أما الطريقة القديمة عن طريق الدوال، date(), time(), strtotime(), mktime(), getdate() فلا تزال تعمل ولكنها أقل مرونة ومربكة في بعض الأحيان مع المناطق الزمنية والتحويلات. أولاً الحصول على التاريخ والوقت الحالي وذلك من خلال واجهة التاريخ DateTime في PHP: <?php $now = new DateTime(); echo $now->format('Y-m-d'); ?> فبشكل إفتراضي يتم إنشاء تاريخ الوقت الحالي، وميثود format نقوم من خلالها بعرض التاريخ. ولو أردت إنشاء تاريخ ووقت محدد: <?php $specificDate = new DateTime('2024-01-15'); $specificDateTime = new DateTime('2023-10-26 14:30:00'); ?> ولو أردنا عرض وتنسيق التاريخ نستخدم ميثود format كما أشرت وتوفر تنسيقات مختلفة قم بتجربة الكود لتتفهم: <?php $date = new DateTime('2025-10-26 15:05:10'); echo $date->format('Y-m-d'); echo $date->format('d/m/Y'); echo $date->format('Y-m-d H:i:s'); echo $date->format('l'); echo $date->format('h:i a'); ?> عامًة إليك شرح للرموز: Y: سنة (4 أرقام) m: شهر (01-12) d: يوم (01-31) H: ساعة (00-23) i: دقيقة (00-59) s: ثانية (00-59) l: اسم اليوم الكامل h: ساعة (01-12) a: صباحاً/مساءً (am/pm) ولو أردت تعديل التاريخ والوقت استخدم ميثود modify: <?php $date = new DateTime('2023-10-26'); $date->modify('+1 day'); echo $date->format('Y-m-d'); $date->modify('-1 month'); echo $date->format('Y-m-d'); ?> ستجد تفصيل هنا في الدرس التالي:
-
من الممكن تشفير أي شيء بواسطة برامج الفدية، الفكرة هو النظام والفئة المستهدفة، وبخصوص طرق الإختراق فمنها استغلال ثغرات التطبيقات ، حيث العديد منها خاصة تلك التي ليست من مطورين كبار أو غير محدثة تحتوي على ثغرات أمنية. الهندسة الاجتماعية من خلال التصيد الاحتيالي Phishing أو إنشاء تطبيقات تبدو مفيدة أو ألعاب، ولكنها تحتوي على كود خبيث. يتم نشرها غالبًا خارج متجر Google Play وتتطلب إقناع المستخدم بتثبيتها يدويًا وتفعيل صلاحية مصادر غير معروفة في النظام للتثبيت، أو إرسال رسائل تحتوي على روابط تؤدي إلى تحميل برمجيات خبيثة أو مواقع تصيد. هجمات الشبكة بتنفيذ منهجية الوسيط Man-in-the-Middle - MitM على شبكات Wi-Fi غير الآمنة، لإعتراض وتعديل حركة المرور من وإلى الجهاز في حال لم تكن مشفرة بشكل صحيح بواسطة بروتكول HTTPS، أو هجوم التسميم DNS (DNS Spoofing) بتوجيه المستخدم إلى خوادم خبيثة عند محاولته الوصول إلى مواقع معينة. تطوير حمولات مخصصة Custom Payloads بكتابة برمجيات خبيثة أو حمولات مخصصة تتجنب الكشف من قبل برامج الحماية، أو استخدام تقنيات التشفير، التعتيم Obfuscation، والحقن في تطبيقات شرعية لجعل الكشف أصعب. والأسهل لو لديك وصول مادي للجهاز، ستستخدم أدوات مثل ADB في حال خاصية تصحيح USB مفعلة، أو محاولة استغلال ثغرات في شاشة القفل، أو استخدام أدوات الاسترداد الجنائي للبيانات. تلك الطرق المعروفة فقط والتي تم اكتشافها من قبل باحثين أمنين ولا يعني جميعها، ولو بحثت عن أداة (Pegasus (spyware التي طورتها شركة NSO Group الإسرائيلية ستجد أنها تُعتبر واحدة من أكثر أدوات التجسس السيبراني تقدمًا، وهدفها الإختراق والتجسس على أشخاص ذو قيمة مرتفعة وهم رؤساء دول وغيرهم كسياسيين، صحفيين، ونشطاء. وتعتمد على اختراق الأجهزة دون الحاجة إلى تفاعل المستخدم وذلك ما يُعرف بـ zero-click exploits فبمجرد اختراق الجهاز، يمكنها جمع البيانات مثل الرسائل، المكالمات، الصور، وتفعيل الميكروفون أو الكاميرا عن بُعد.
-
ما تقصده هو أنك تريد أن يصبح برنامج phpmyadmin هو النظام الإفترضي لقاعدة البيانات، اضغط على الواجهة بزر الفأرة الأيمن ثم اختر tools ثم quick add ثم اضغط على phpmyadmin وسيتم التثبيت. ولتشغيلها اضغط على واجهة البرنامج بزر الفأرة الأيمن مرة أخرى ثم اختر mysql ومنها اختر phpmyadmin
- 4 اجابة
-
- 1
-
-
توجه إلى Settings في تطبيق جوجل بلاي بالضغط على الصورة الشخصية الخاصة بك أعلى اليسار أو اليمين، ثم اختر general ومنها اختر google play store feedback ثم قم بتعطيل خيار answer surveys about play store. لو استمرت المشكلة قم بتثبيت أحدث إصدار من Google Play services: https://google-play-services.en.uptodown.com/android وأحدث إصدار من Google Play: https://google-play.en.uptodown.com/android
-
السؤال غير واضح، أرجو التحدث لمركز المساعدة بخصوص تفاصيل الدورات أو الأمور المالية، وسيتم مساعدتك.
-
لا مشكلة في ذلك، عامًة لو أردت استخدم code runner لأنه يقوم بتنفيذ أمر cls، قم بإضافة التالي في ملف الإعدادات لتشغيله في التيرمنال كما تم التوضيح: "code-runner.runInTerminal": true,
-
لم يتم حذف النسخة القديمة إذن، هل النسخة القديمة مثبتة على قرص الـ C أم قرص آخر؟ في حال قرص آخر قم بحذفها، وفي حال قرص الـ C اتبع التالي: اختر نسخة ويندوز 11 التي تريد الاحتفاظ بها وغالبًا هي الخيار الأول المحدد تلقائيًا على وحدة التخزين 2. بمجرد الدخول إلى ويندوز، اضغط على مفتاح Windows + R لتشغيل نافذة Run. اكتب msconfig ثم اضغط Enter أو انقر OK. ستفتح نافذة System Configuration انتقل إلى علامة التبويب Boot. سترى هنا قائمة بأنظمة التشغيل المثبتة من المفترض أن تجد إدخالين لـ Windows 11. حدد الإدخال الذي يمثل نسخة ويندوز التي تريد إزالتها حيث النسخة القديمة هي المثبتة على وحدة التخزين 6 أو التي لا يظهر بجانبها Current OS; Default OS لكن بحذر واختر الإدخال الصحيح الذي تريد حذفه لا تحذف الإدخال الذي يظهر بجانبه Current OS أي نظام التشغيل الحالي. بعد تحديد الإدخال الذي تريد إزالته، انقر على زر Delete تأكد من أن الإدخال المتبقي الخاص بالويندوز الذي تستخدمه حاليًا محدد كـ Default وإن لم يكن كذلك، حدده وانقر على زر Set as default. انقر على Apply ثم OK. سيطلب منك إعادة تشغيل الكمبيوتر فقم بإعادة التشغيل.
- 3 اجابة
-
- 1
-
-
ذلك ليس متعلق بالدورة، ما الغرض من تثبيت code runner هل لتشغيل كود بايثون؟ لست بحاجة إليها إذن كل ما تحتاجه هو تثبيت إضافة python: https://marketplace.visualstudio.com/items?itemName=ms-python.python وستجد زر تشغيل للكود ظهر أعلى اليمين من خلال أيقونة < ولكن قم بحذف إضافة code runner لكي لا يحدث تعارض.
-
الصورة لم يتم إرفاقها أرجو إعادة رفعها، وفي حال السؤال خاص بأحد الدروس ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم أسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
-
ما تقصده هو أنك تريد VPS أو Dedicated Server وذلك يعتبر سيرفر خاص بك بموارد مخصصة لك أنت فقط لا يشاركك أحد بها، على عكس الاستضافات المشتركة shared hostings. هناك استضافات مختلفة توفر ذلك، منها DigitalOcean، AWS، Linode، أو Hetzner أو Hostinger وستحصل على سيرفر افتراضي VPS أو مخصص Dedicated تتحكم فيه بالكامل. وبالطبع هناك فرق بين Dedicated Server و VPS فالأول جهاز خادم مادي مخصص بالكامل لك وحدك ولا يشارك أي مستخدم آخر في موارده (المعالج، الذاكرة، التخزين، النطاق الترددي)، أي تحصل على جهاز كامل (مثل كمبيوتر قوي) مملوك لشركة الاستضافة، ويتم تخصيصه لاستخدامك الخاص وتستطيع تثبيت أي برامج أو أنظمة تشغيل تريدها، وتتحكم في كل شيء، وتكلفته مرتفعة عن VPS. أما VPS فهو سيرفر افتراضي يتم إنشاؤه عن طريق تقسيم جهاز خادم مادي إلى عدة خوادم افتراضية باستخدام تقنية المحاكاة الافتراضية Virtualization، وكل VPS يعمل بشكل مستقل، بمعنى تخصيص جزء من الموارد مثل 2 جيجابايت RAM، 1 نواة CPU، 20 جيجابايت تخزين لك، لكن تلك الموارد تأتي من جهاز مادي مشترك. وتحصل على تحكم شبه كامل كاختيار نظام التشغيل وتثبيت البرامج، ولكنه ليس مخصصًا بالكامل مثل Dedicated Server، لذا VPS هو ما تبحث عنه لأن تكلفته أقل.
-
مجلد المشروع ليس كامل أرجو توفيره لتفقده، حاول تنفيذ الأمر التالي لحذف الكاش: php artisan optimize:clear ثم تفقد هل يوجد أخطاء في الكونسول؟ وأيضًا تجربة تعديل السكريبت لمعالجة الأخطاء وعرض البيانات كالتالي: @push('scripts') <script> $(document).ready(function() { console.log('jQuery version:', $.fn.jquery); console.log('Select2 version:', $.fn.select2.amd.require.version); $('#housing_unit_id').select2({ placeholder: "اختر الوحدة السكنية أو ابدأ بالكتابة للبحث", allowClear: true, width: '100%', dir: "rtl", minimumInputLength: 1, ajax: { url: "{{ route('ajax.housing-units') }}", dataType: 'json', delay: 250, data: function(params) { console.log('Search params:', params); return { search: params.term, page: params.page || 1 }; }, beforeSend: function() { console.log('Sending AJAX request...'); }, success: function(data) { console.log('AJAX response:', data); }, error: function(xhr, status, error) { console.error('AJAX error:', error); console.error('Response:', xhr.responseText); }, processResults: function(data, params) { params.page = params.page || 1; return { results: data.results, pagination: { more: data.pagination?.more } }; }, cache: true } }).on('select2:open', function() { console.log('Select2 opened'); }).on('select2:closing', function() { console.log('Select2 closing'); }); }); </script> @endpush إن استمرت المشكلة افتح أدوات المطور، وانتقل إلى تبويب Network ثم قم بتصفية الطلبات لعرض XHR أو Fetch/XHR فقط، وانقر على حقل Select2 وابدأ بالكتابة ثم راقب تبويب Network هل يتم إرسال أي طلب إلى /ajax/housing-units؟ إن لم يتم إرسال أي طلب، ربما المشكلة في أن Select2 لا يقوم بتشغيل حدث البحث أو إرسال الطلب بسبب خطأ في التهيئة أو تضارب JavaScript. ولو تم إرسال الطلب ولكن فشل انقر على الطلب في تبويب Network، وافحص علامتي التبويب Headers و Response لمعرفة سبب الفشل كخطأ 404، 500، أو استجابة غير متوقعة، ولكن أنت ذكرت أن الرابط المباشر يعمل، من المفترض ألا يحدث ذلك الخطأ ولكنه ربما يحدث لو هناك خطأ في البارامتر search.
-
تحتاج إذن إلى التحدث لمركز المساعدة وإخبارهم بأنك تريد التقدم للإختبار وتقديم روابط المشاريع العملية على github التي قمت بها بالدورة في تلك المسارات ليتم مراجعتها، وبعد المراجعة سيتم العودة إليك لتحديد موعد الإختبار والأمر يتم كالتالي: محادثة صوتيّة لمدة 30 دقيقة يطرح المدرّب عليك أسئلة متعلّقة بالدورة والأمور التي نفّذتها خلالها. يحدد لك المدرّب مشروعًا مرتبطًا بما قمت به أثناء الدورة لتنفيذه خلال فترة محددة تتراوح بين أسبوع إلى أسبوعين. محادثة صوتيّة أخرى لمدّة 30 دقيقة يناقش بها مشروعك وما نفذته وتطرح أسئلة خلالها. إن سارت على جميع الخطوات السابقة بشكل صحيح، تحصل على الشهادة أو يرشدك المدرّب لأماكن القصور ويطلب منك تداركها ثم التواصل معنا من جديد.
-
لا مشكلة، لكن ذلك مناسب لو عدد الموظفين قليل جداً أقل من 50 موظف مثلاً، بينما لو لديك مئات أو آلاف الموظفين، فإن جلبهم جميعاً من قاعدة البيانات ووضعهم في قائمة HTML منسدلة <select> سيؤدي إلى بطء شديد في تحميل الصفحة وسيتسبب في تجميد المتصفح ويصبح من الصعب جداً على المستخدم البحث عن موظف معين في قائمة طويلة جداً. الطريقة الأفضل (القائمة المنسدلة القابلة للبحث والإكمال التلقائي تستطيع البحث عن Searchable Dropdown / Autocomplete بحيث تعرض حقل إدخال يبدو كقائمة منسدلة، ولكن عندما يبدأ المستخدم بالكتابة، تُرسل طلب إلى الخادم للبحث عن الموظفين الذين يتطابقون مع ما كتبه المستخدم، ثم تُعرض النتائج فقط. وبذلك لا يتم تحميل القائمة الكاملة للموظفين، فقط النتائج المطابقة للبحث ويسهل على المستخدم العثور على الموظف المطلوب بسرعة وتعمل بشكل جيد حتى مع عدد كبير جداً من الموظفين. ويتوفر مكتبات جافاسكريبت للقيام بذلك: Select2 Choices.js Tom Select
- 17 اجابة
-
- 1
-
-
الأسهل لك هو PHP مع لارافل، يوجد الكثير من المكونات والأدوات الجاهزة وأسهل في عملية التطوير بمفردك.
-
هناك مبادرتين الأولى مبادرة مصر الرقمية والثانية الرواد الرقميون Digilians وكلاهما يشترط الجنسية المصرية. في السعودية ستجد مبادرات ومنح منها: الأكاديمية السعودية الرقمية منصة دروب السعودية برنامج الابتعاث في الذكاء الاصطناعي منحة جامعة محمد بن زايد للذكاء الاصطناعي مبادرة سماي من الهيئة السعودية للبيانات والذكاء الاصطناعي (سدايا)
- 15 اجابة
-
- 1
-
-
أنت تقصد دورة الذكاء الاصطناعي ، بالفعل لم يتم التعمق لأنّ نطاق الدورة لا يختص بتعلم SQL أو قواعد البيانات، لذا تم ذكر الأساسيات وما تحتاجه لدراسة الدورة. ستحتاج إلى التعمق من خلال البحث عن كورس في يوتيوب به تفصيل أكثر ومواضيع متقدمة، بجانب المقالات المتاحة بالأكاديمية في قسم SQL: https://academy.hsoub.com/programming/sql/ ستجد بها دروس متقدمة مثل: وتوثيق لغة SQL من موسوعة حسوب. والكتب التعليمية أيضًا:
- 4 اجابة
-
- 1
-
-
صحيح تم إضافة مسارات جديدة للدورة، أحدثها منذ أيام وهو مسار التعلم المعزز Reinforcement Learning. ستجد تفاصيل التحديثات هنا: https://academy.hsoub.com/release-notes/
- 4 اجابة
-
- 1
-
-
أرجو توضيح ما هي الدورة المقصودة في السؤال؟