-
المساهمات
15389 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
403
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Mustafa Suleiman
-
يوجد WARP وهو يقوم بمثابة وسيط بينك وبين الإنترنت من خلال شبكة Cloudflare ولكن لا يتيح لك اختيار بلد معين للإتصال منه، لذلك يوجد Tom Vpn فهو مجاني ويوجد به الكثير من البلاد لتغيير الـ IP الخاص بك إليها.
-
ستجدين أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم الأسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
- 1 جواب
-
- 1
-
-
من خلال تعيين إتجاه ذلك العنصر إلى rtl أي من اليمين إلى اليسار وإليك مثال: <!DOCTYPE html> <html> <head> <style> #selectRtl { direction: rtl; } </style> </head> <body> <select id="selectRtl"> <option value="option1">Option 1</option> <option value="option2">Option 2</option> <option value="option3">Option 3</option> </select> </body> </html>
-
الكود الذي وضعته ليس كافٍ هو خطوة أولى فقط لجعل الموقع متجاوب بحيث يظهر بدون Zoom-out وبعرض شاشة الجهاز فقط. لكن سيتعين عليك تعديل التنسيقات بما يتناسب مع أحجام الشاشة المختلفة وذلك من خلال media queries، ولا توجد قاعدة واحدة لجميع التصميمات. لكن لتسهيل الأمر عليك، تستطيع استخدام مكتبات مثل بوتستراب حيث توفر تجاوبية جاهزة للمكونات الخاصة بها. وبدون المكتبة ستجعل الأمر أسهل لو استخدمت الـ Grid و الـ Flex بشكل صحيح، ستجد تفصيل هنا:
-
ما هو إطار الواجهة الخلفية؟ رسالة الخطأ AxiosError: Request failed with status code 419 تعني عدم تطابق رمز CSRF (الحماية من التزوير عبر المواقع)، أي أن الخادم يتوقع رمز CSRF صالحًا في طلبك، لكنه إما مفقود أو غير صحيح. رمز CSRF هو رمز مميز وفريد من نوعه يتم إنشاؤه بواسطة جانب الخادم لمنع هجمات CSRF ويعمل كإجراء أمني لضمان أن الطلبات الواردة إلى تطبيق الويب لديك شرعية وليست من مصادر ضارة. في حين رمز الحالة 419 يعني رمز حالة HTTP غالبًا 419 Page Expired إلى أن الخادم تلقى طلبك لكنه رفضه بسبب رمز CSRF غير صالح أو مفقود. عند إرسال الطلبات في Postman، فإنه لا يقوم بتضمين ملفات تعريف الارتباط cookies من متصفح الويب تلقائيًا، ومن الشائع تخزين رموز CSRF في ملفات تعريف الارتباط، ويجب تكوين تطبيق الويب لتضمين رمز CSRF في كل طلب يقوم بتعديل البيانات على الخادم (مثل طلبات POST و PUT و DELETE).
-
سرعة الموقع غير مهمة في حال كانت واجهة المستخدم بحاجة إلى التحسين، فعند التوجه للموقع لم تقابلني مشكلة في سرعة تحميله حيث استغرق 3 ثوانِ تقريبًا على إتصال VDSL، بينما 5 ثوانِ على إتصال Fast 3G، مع الأخذ في الإعتبار أنك تستخدم استضافة مجانية. كتحسين قم بوضع سكريبت leaflet و رابط تنسيقات font-awesome في نهاية عنصر body وليس في عنصر head. أيضًا ضغط الصور وتقليل حجمها واستخدام صيغة webp أو avif، بجانب عمل minify لملفات الأكواد لديك. لكن عليك العمل على واجهة الموقع من خلال ترتيبها واختيار ألوان هادئة ومريحة للعين.
- 4 اجابة
-
- 1
-
-
أرجو تجربة إعادة تحديث الصفحة بالضغط على CTRL + F5 من أجل حذف الملفات المؤقتة، وإن فعلت ذلك لنقم بتجربة متصفح آخر. إن استمرت المشكلة لنقم بتجربة تحميل وتثبيت Cloudflare WARP فهو بمثابة طبقة وسيطة مثل الـ VPN من خلال شبكة Cloudflare وبعد التثبيت قم بتشغيل التطبيق بالضغط على زر الإتصال مباشرًة وتفقد الدروس مرة أخرى. https://install.appcenter.ms/orgs/cloudflare/apps/1.1.1.1-windows-1/distribution_groups/release وذلك لتفقد هل يوجد مشكلة بالإنترنت أم لا.
-
أعلى اليمين في المتصفح ابحث عن الإضافات المثبتة لديك، وعند الوقوف بمؤشر الفأرة عليها سيظهر اسمها، وإن لم تجد إضافات ظاهرة، اضغط على أيقونة مشابة لأحد الأيقونات التالية: وسيظهر لك الأيقونات المثبتة بالمتصفح. إن لم تجدها أرجو ذكر اسم المتصفح لتوضيح الطريقة.
-
تلك إضافة بالمتصفح لمنع الإعلانات، في حال لم تعرفها فغالبًا ليست مثبتة لديك في حال كنت أنت فقط من تستخدم الحاسوب.
-
عذرًا على ذلك عمر، في حال كان لديك إضافة adblock فغالبًا ذلك سبب المشكلة، استخدم uBlock Origin فتلك الإضافة لا تسبب مشكلة. ثم إعادة تحديث الصفحة بالضغط على CTRL + F5 من أجل حذف الملفات المؤقتة. إن استمرت أرجو تجربة تحميل وتثبيت Cloudflare WARP فهو بمثابة طبقة وسيطة مثل الـ VPN من خلال شبكة Cloudflare وبعد التثبيت قم بتشغيل التطبيق بالضغط على زر الإتصال مباشرًة وتفقد الدروس مرة أخرى. https://install.appcenter.ms/orgs/cloudflare/apps/1.1.1.1-windows-1/distribution_groups/release وذلك لتفقد هل يوجد مشكلة بالإنترنت أم لا.
-
ما هي مقابلة العمل المقصودة؟
- 11 اجابة
-
- 1
-
-
هل المقصود التقدم للإختبار في الأكاديمية بخصوص الدورة؟ أم أنك تودين تمارين على Excel؟
- 11 اجابة
-
- 1
-
-
مشكلة الأساسيات أنه هناك رغبة في التخلص منها سريعًا ظنًا أنها غير مفيدة وأننا لا نستطيع إنجاز شيء مفيد بواسطتها، وفيما بعد ستجد أنك تعود إليها عند مواجهة مشكلة لا تستطيع حلها لأنك لست مستوعب لما يحدث بسبب الضعف في الأساسيات، جميع التنقيات مبنية على الأساسيات ومن الخارج يظهر أنّ هناك سحر يدور ولكن عند دراسة كيف تم بنائها ستزول تلك الدهشة. في مقابلات العمل سيتم سؤالك عن الأساسيات بشكل غالب عن التقنيات، فالشخص الذي لديه أساسيات قوية أفضل من الشخص الذي لديه معرفة قوية بالإطار أو المكتبة، فالأول يستطيع تعلم ذلك بسهولة، لكن الثاني لا يستطيع حل المشاكل التي ستواجهه لضعف الأساسيات، أيضًا لأول سيكتب كود أفضل من حيث الأداء. مثلاً في مقابلات العمل ستجد أنه يتم السؤال عن SQL وحل أسئلة معقدة من خلالها لمطوري الواجهة الخلفية وليس استخدام مكتبة لفعل ذلك.
-
لا حاجة إلى ذلك طالما أنه مشروع تخرج فلن تحتاج ذلك، أظن أنّ المقصود هو تخصيص مساحة معينة من الذاكرة لتنفيذ تلك العملية ولا يتخطى الأمر ذلك صحيح؟ من الممكن تحديد ذلك من خلال دالة ini_set لضبط إعدادات الذاكرة قبل العملية ثم إعادة ضبطها بعد الانتهاء: ini_set('memory_limit', '128M'); ini_set('memory_limit', '64M'); وذلك هو الحد أقصى للذاكرة الذي يمكن لأي سكربت PHP استخدامه.
- 12 اجابة
-
- 1
-
-
من الأفضل دائمًا اختبار العملية ببيانات تجريبية مماثلة لحجم البيانات الفعلي للتأكد من أنها تعمل بشكل صحيح قبل استخدامها في بيئة الإنتاج. والأمر يعتمد على أمور مختلفة، فيجب أن تكون موارد الاستضافة وهما الذاكرة و CPU كافية للتعامل مع حجم البيانات، والكود مكتوبًا بكفاءة لتجنب استهلاك موارد إضافية، حيث تُستخدم الذاكرة لتخزين ملف Excel أثناء إنشائه بجانب وحدة المعالجة المركزية لتنفيذ مكتبة PHPSpreadsheet وإنشاء ملف Excel. وقد تحتاج إلى تعديل بعض إعدادات PHP مثل memory_limit و max_execution_time للسماح للسكربت بالعمل مع البيانات الكبيرة. وفي حالة البيانات الكبيرة جدًا، من الأفضل تقسيمها إلى ملفات Excel متعددة لتحسين الأداء. أي مثلاً قاعدة بيانات صغيرة إلى متوسطة بعدد 10 آلاف إلى 50 ألف سجل، فستكون الاستضافة المشتركة قادرة على تنفيذ ذلك في حيث ستحتاج من 128 إلى 256 ميجابايت من الذاكرة العشوائية. لكن يجب ألا يؤثر ذلك على استخدام الموقع بالنسبة لباقي المستخدمين، لذا تفقد الموارد المتاحة الباقية أثناء تنفيذ العملية هل هناك ما يكفي لعمل الموقع بشكل طبيعي؟
- 12 اجابة
-
- 1
-
-
يتم ذلك من خلال الـ API، ففي الواجهة الخلفية يتم إنشاء API's ولها مسارات end points أو نقاط نهاية، نستخدم تلك المسارات في الواجهة الأمامية لإرسال البيانات من خلال طلبات POST أو الحصول على البيانات من خلال طلبات GET. ستجد تفصيل هنا:
-
ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم الأسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
- 2 اجابة
-
- 1
-
-
من خلال جافاسكريبت، أولاً إنشاء حقول Select مع IDs مختلفة و display: none لإخفائها في البداية، وإنشاء حقل input من نوع file لرفع الصور. نستخدم addEventListener لالتقاط event التغيير change التغيير في Select الأول، وعند تغيير Select الأول، يتم إظهار Select الثاني و إخفاء الباقي، وهكذا عند تغيير Select الثاني، يتم إظهار Select الثالث بناءً على اختيار Select الأول و الثاني. وإظهار حقل رفع الصور فقط عند اختيار "Bachelors" في Select الثالث. <!DOCTYPE html> <html> <head> <title>Dependent Select Fields</title> </head> <body> <label for="area">Area name:</label><br> <select id="area" name="H1"> <option value="">Select an area</option> <option value="region1">The first region</option> <option value="region2">The second area</option> <option value="region3">The third region</option> </select> <div id="side-container" style="display:none;"> <label for="side">Side:</label><br> <select id="side" name="H2"> <option value="">Select a side</option> <option value="side1">The first side</option> <option value="side2">The second side</option> <option value="side3">The third side</option> </select> </div> <div id="academic-container" style="display:none;"> <label for="academic">Academic:</label><br> <select id="academic" name="H3"> <option value="">Select academic level</option> <option value="bachelors">Bachelors</option> <option value="preparatory">Preparatory school</option> <option value="medium">Medium</option> </select> </div> <div id="jurion-container" style="display:none;"> <label for="jurion">Jurion:</label><br> <select id="jurion" name="H4"> <option value="">Select a jurion</option> <option value="engineer">Engineer</option> <option value="doctor">Doctor</option> </select> </div> <div id="tion-container" style="display:none;"> <label for="tion">Tion:</label><br> <select id="tion" name="H4"> <option value="">Select a tion</option> <option value="neer">Neer</option> <option value="tor">Tor</option> </select> </div> <div id="image-container" style="display:none;"> <label for="image">Image:</label><br> <input type="file" id="image" name="H5"> </div> <script> const areaSelect = document.getElementById('area'); const sideContainer = document.getElementById('side-container'); const academicContainer = document.getElementById('academic-container'); const jurionContainer = document.getElementById('jurion-container'); const tionContainer = document.getElementById('tion-container'); const imageContainer = document.getElementById('image-container'); areaSelect.addEventListener('change', () => { sideContainer.style.display = 'block'; academicContainer.style.display = 'none'; jurionContainer.style.display = 'none'; tionContainer.style.display = 'none'; imageContainer.style.display = 'none'; }); sideContainer.querySelector('select').addEventListener('change', () => { academicContainer.style.display = 'block'; }); academicContainer.querySelector('select').addEventListener('change', (event) => { const selectedValue = event.target.value; if (areaSelect.value === 'region1' && selectedValue === 'bachelors') { jurionContainer.style.display = 'block'; tionContainer.style.display = 'none'; } else if (areaSelect.value === 'region2' && selectedValue === 'bachelors') { jurionContainer.style.display = 'none'; tionContainer.style.display = 'block'; } else { jurionContainer.style.display = 'none'; tionContainer.style.display = 'none'; } if (selectedValue === 'bachelors') { imageContainer.style.display = 'block'; } else { imageContainer.style.display = 'none'; } }); </script> </body> </html>
- 2 اجابة
-
- 1
-
-
متى تقوم بإنهاء 4 مسارات؟ في حال تريد التخصص بمهارة معينة ضمن الدورة، وليس الدورة كلها، مثل التخصص في الواجهة الخلفية فقط في دورة جافاسكريبت أو بايثون. في حال ليس لديك توجه ناحية تخصص معين، نقوم بإنهاء الدورة بالكامل ثم التعمق في التخصص الذي تريده. الحصول على الشهادة ليس بتلك الأهمية، في الواقع العملي المهم هو ما تستطيع تنفيذه والمهارات التي لديك ووجود معرض أعمال بجودة جيدة يثبت ذلك، الشهادة بمثابة دليل فقط على أنك اجتزت محتوى تعليمي معين.
-
وصفك للأمر ليس صحيح، فليس لديك تحكم بموقع Shein فور مغادرة الزائر موقعك ليس لديك تحكم فيما يفعله، تفقدت الـ API الخاص بالمنصة وليس متاح سوى المنتجات التي تم طلبها بالفعل. لذا الأمر بشكل منطقي غير ممكن، الصحيح هو عرض المنتجات على موقعك وتفاصيل كاملة عنها ثم توصيلها للعميل بعد أن يطلبها وذلك يعرف باسم Dropshipping. للتوضيح الـ Dropshipping حرام بسبب بيع الشخص ما لا يملك، إلا في حالة أنك وكيل أو مسوق لذلك الموقع مثل منصة تاجر مثلاً، بحيث يكون لديك حساب به وتسوق للمنتجات وتبيعها بالسعر الذي تريده.
-
30 عمودًا في جدول واحد يعتبر عددًا صغيرًا جدًا ولا يمثل أي مشكلة لمعظم أنظمة إدارة قواعد البيانات. وللتوضيح بشكل دقيق، سأفترض أنك تعمل على MySQL بما أنها نظام قواعد البيانات الأشهر مع مشاريع PHP، فالحد الأقصى النظري الذي يُذكر في وثائق MySQL لعدد الأعمدة في الجدول هو 4096 عمودًا. أما الحد العملي فعمومًا الأفضل هو عدم عدم تجاوز بضع مئات من الأعمدة في جدول واحد، وذلك للحفاظ على أداء قاعدة البيانات. وعليك تقسيم البيانات إلى جداول متعددة ذات علاقات واضحة بينها، بدلاً من إنشاء جدول واحد يحتوي على عدد كبير جدًا من الأعمدة مع استخدم أنواع البيانات المناسبة للأعمدة لتوفير مساحة التخزين وتحسين الأداء، واستخدم الفهارس لتسريع عمليات البحث في الجداول التي تحتوي على عدد كبير من الأعمدة.
- 10 اجابة
-
- 1
-
-
من ضمن وصف الدورة هو التالي: بعد حصولك على الشهادة، وإن لم تحصل على عمل خلال 6 أشهر يغطي قيمة الدورة التي دفعتها، فسنعيد لك ما دفعت. بهذه البساطة! وبعد منحك الشهادة ستحصل على باقة كتابة السيرة الذاتية في موقع بعيد بقيمة 99$ مجانًا. أرجو ذكر الدورة لتحصل على إجابة واضحة، أغلب الدورات تؤهلك لذلك ولكن هناك مجهود منك مطلوب في تعلم مهارات إضافية والتعمق أكثر بالطبع، فلا توجد تلك الدورة التي تعلمك كل شيء في أي مكان. أرجو توضيح الدورة
-
بعد الإنتهاء من الدورة ستتاح لك فرص العمل بالمجالات التالية: مطور Full-stack لبناء مواقع الويب والمتاجر الإلكترونية أي قادر على تطوير الواجهة الأمامية والخلفية أيضًا من خلال Django و Flask. مطور واجهة خلفية Back-End فقط. مجال تعلم الآلة ولكن هنا أنت بحاجة إلى تعلم المزيد وعدم الإكتفاء بالدورة والأمر بحاجة إلى وقت أكثر من أي مجال آخر. محلل بيانات (Data Analyst )، حيث ستتمكن من استخدام مهارات البرمجة الخاصة بك للتحليل واستخراج البيانات من مصادر متنوعة، ومعالجة البيانات، وإجراء التحليلات الإحصائية والتعلم الآلي باستخدام مكتبات Python مثل pandas و NumPy و scikit-learn. مطور odoo كل مجال وله المهارات الخاصة به وفي الدورة ستتمكن من تعلم الأساسيات اللازمة لكل منهم، بعد ذلك سيتعين عليك التعمق أكثر وتنفيذ مشاريع أكثر في المجال الذي ستختاره. لكن اختار بناءًا على المطلوب في سوق العمل الذي تستهدفه، هل تستهدف الشركات المحلية؟ إذن ابحث عن الوظائف المعروضة على مواقع التوظيف مثل LinkedIn و Glassdoor و Indeed وغيرهم ثم تفقد ما هو المجال المطلوب بكثرة وله وظائف بمستوى Junior. ستجد تفصيل هنا: