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

Adnane Kadri

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

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

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

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

    51

كل منشورات العضو Adnane Kadri

  1. تأكد من أن حاوية الرابط تمتلك عرضا كاملا مساويا لعرض الشاشة، ثم أعطها الخاصية: .link-container{ text-align:center; } في حالة ما كانت هاته الحاوية مرنة (يتم تطبيق display: flex عليها) تأكد من توسيط العناصر في الحاوية المرنة باستخدام: .link-container{ justify-content: center; } في هاته الحالة، يمكنك أيضا اعطاء العنصر خاصية margin auto على المحور الأفقي: a{ margin: 1px auto; }
  2. وكل عام وأنت بخير، مجلد routes في لارافيل هو المجلد الحاوي لمسارات التطبيق بما في ذلك مسارات تطبيق الويب. وعادة ما يحتوي الملفات التالية: web.php: ويتم فيها تصريح جميع المسارات التي تعنى بتطبيق الويب api.php: يتم فيها تصريح مسارات واجهة التطبيق البرمجية console.php: هو الملف الذي يتم فيه تصريح أوامر Artisan اضافية، مثال: Artisan::command('test_command', function () { $this->comment('Hello From Hsoub Academy!'); }); ثم تشغيل الأمر: php artisan test_command سوف يعطي: Hello From Hsoub Academy . channels.php: هو ملف خاص بقنوات سوكيت التي يمكن استعمالها في التطبيق، ويتم فيه تصريح اسماء هاته القنوات ونوعها وأي خصائص اضافية لها. من الملاحظ أن ملفي channels و console مختلفين عن باقي الملفات، غير أن web و api يتشابهان قليلا عدى أن كل من الملفين يتم التعامل معه بطريقة مختلفة للآخر ويتم تطبيق بعض الطبقات الوسيطة الاضافية في كل منهما. فمثلا في api يتم تطبيق مجموعة الطبقات الوسيطة api في حين أن web يتضمن مجموعة الطبقات الوسيطة web. مثلما هما مبيننان في ملف Kernel.php: protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, ], 'api' => [ // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, \Illuminate\Routing\Middleware\ThrottleRequests::class.':api', \Illuminate\Routing\Middleware\SubstituteBindings::class, ], ]; كل طبقة وسيطة تتضمن آلية معينة تحدد طريقة التعامل مع المسارات المصرحة في أي من الملفين. مثال: المسارات المحددة في ملف API لا تحتاج إلى حماية CSRF لأن هجمات CSRF (Cross-Site Request Forgery) تستهدف عادةً صفحات الويب حيث يمكن للمهاجم استغلال جلسة المستخدم لإجراء طلبات غير مصرح بها. في المقابل، تطبيقات API غالبًا ما تكون عديمة الحالة (stateless)، مما يعني أنها لا تحتفظ بأي معلومات عن حالة العميل بين الطلبات. لذا، لا يمكن تنفيذ هجمات CSRF عليها بنفس الطريقة التي تُنفذ على صفحات الويب، وبالتالي لا تتطلب حماية CSRF بنفس القدر. في لارافيل، تُحمى صفحات الويب باستخدام CSRF لأن الطلبات تأتي عادة من متصفح المستخدم، بينما لا تحتاج تطبيقات API لهذه الحماية لأن الطلبات تُرسل غالبًا من تطبيقات أخرى أو من جهة العميل بشكل مباشر. ولذلك نجد الطبقة الوسيطة VerifyCsrfToken في مجموعة الطبقات web في حين أنها غائبة في مجموعة الطبقات api
  3. يمكنك الاستعانة بمواقع الإلهام التي تقدم ضمن معروضاتها القوالب المجانية. نذكر مثلا: siteinspire webdesign-inspiration templatemonster freewebsitetemplates free-css wix dribbble
  4. بالطبع سيتم المرور بتفصيل وإسهاب على كل تفاصيل وجزئيات لغة PHP في دورة تطوير تطبيقات الويب باستخدام لغة PHP. ويشمل ذلك 6 ساعات من المسارات التالية: أساسيات لغة PHP مدخل أساسيات لغة PHP العوامل Operators الجمل الشرطية Conditional Statements حلقات التكرار Loops المصفوفات Arrays الدوال Functions البرمجة الكائنية OOP التعامل مع الأخطاء قواعد البيانات MySQL التعامل مع الخادم إدارة الحزم بحيث يتفرع كل منها عن مجموعة فيديوهات ودروس. أما بالنسبة للوصول إلى صلاحيات الوصول إلى الكاميرا والميكروفون وما إلى ذلك فذلك من صلاحيات لغة JS التي تنشط على مستوى العميل، وليس من تخصص لغة PHP التي تنشط على الخادم. يمكنك معرفة المزيد عن الدورة من الصفحة الرسمية لها على الأكاديمية من هنا.
  5. هوستنجر مجرد خدمة استضافة ولا علاقة لها بالتسويق الرقمي بصورة مباشرة، وبالبطع نعم، يمكن للموقع المستضاف على هوستنجر أن يكون قابلا لعمليات التسويق الرقمي. اذ ان توافر الخدمات التي تدعم استراتيجيات التسويق الرقمي مثل SEO والإعلانات على وسائل التواصل الاجتماعي والتحليلات الويب هي المهمة لضمان نجاح استراتيجيات التسويق الرقمي وليس نوع خدمة الاستضافة بشكل كبير. كما أن هوستنجر يوفر الكثير من الخدمات التنافسية التي تساعدك في الأمر، مثل تتبع حركة المرور عبر الموقع وما إلى ذلك ..
  6. لا أظن ذلك، فالتخصص أصبح مطلوبا بشكل كبير وهاته التخصصات لم يعد بالإمكان الإلمام بها مع بعضها بصورة كبيرة. ولذلك فإنك قد تجد بعض المناصب الوظيفية المفتوحة التي تتطلب واحدة فيهما على الأكثر، على أن الإلمام ببعض أساسيات الأمن السيبراني وممارسات الأمان عبر الويب والخوادم مطلوبة. ولكن هذا لا يمنع من التخصص في إحداهما والتركيز عليها بشكل أكبر. ولذلك فإن الشركات تعمد إلى توظيف متخصصين بدل شخص واحد يدرك المجالين بشكل عام أو إجمالي.
  7. الملف المرفق لا يعبر إلا عن كود بصفحة عرض معينة، ولا يمكن منها تنبؤ المشكلة بطبيعة الحال. ولكن لمثل هاته المشاكل الشائعة تأكدي مما يلي: من أن المنفذ المستخدم في ملف تكوين Laravel هو المنفذ الصحيح (DB_PORT) من أن بيانات قاعدة البيانات المستعملة صحيحة. (DB_USERNAME, DB_NAME, DB_PASSWORD) من أن خدمة MySQL لديك مشغلة بالفعل (يمكنك التأكد من ذلك من خلال xampp Panel) في حالة استمرار المشكلة، يرجى ارفاق صورة عن المشكلة أو نص رسالة الخطأ التي تظهر.
  8. مبدئيا، لا يوجد بديل مباشر ولكن يمكنك استخدام بعض الوسائل الأخرى لمقاربة نفس الفكرة. مثل استخدام مكتبة مثل readline التي تأتي مدمجة مع Node.js. بحيث أن هاته المكتبة تتيح لك قراءة إدخال المستخدم من سطر الأوامر. إليك مثالا: const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); rl.question('مرحبا، كيف الحال؟ ', (answer) => { console.log(`شكرا على إجابتك بـ: ${answer}`); rl.close(); });
  9. جرب استخدام بطاقة ائتمان أو ديبت من بنك آخر إذا كان ذلك ممكنًا، وتحقق من صحة تفاصيل البطاقة والتأكد من أنها تدعم الدفع عبر الإنترنت. أما إذا استمرت المشكلة، فالخطوة الصحيحة هي الاتصال بدعم العملاء لمزود الخدمة للحصول على المساعدة اللازمة. يمكنك الوصول إليها من هنا.
  10. ضف بعض التنسيقات الأخرى لطبقة overlay لكي يمكنها التموضع بصورة صحيحة. أعطها عرضا كاملا واجعلها تتموضع بشكل absolute داخل حاويتها: header .overlay { background-image: linear-gradient(top right, rgba(46,178,181,0.8), rgba(197,203,50, 0.8)); min-height: 100vh; min-width: 100vw; position: absolute; top: 0; right: 0; } طبعا لا تنسى اعطاء وضعية relative للحاوية المباشرة لها: header{ position: relative; }
  11. جرب التأكد من كل من التالي: من وجود ملف .htaccess في المسار الصحيح على السيرفر. من أن محرك إعادة التوجيه (RewriteEngine) مفعل. (RewriteEngine On) من أن الشروط (RewriteCond) تعمل بشكل صحيح للتحقق من عدم وجود الملف أو المجلد المطلوب. من أن القاعدة (RewriteRule) مكتوبة بشكل صحيح وتتوافق مع تنسيق الروابط الجديدة التي ترغب في تطبيقها. ان كان ذلك وما زال يتم عرض الخطأ، قد يكون هناك مشكلة في إعدادات الخادم أو تكوين Apache لديك. في هذه الحالة، يمكنك مراجعة سجلات الخطأ (error logs) للخادم للعثور على تفاصيل أكثر حول الخطأ ومساعدتك في تحديد السبب الفعلي للمشكلة.
  12. التوثيقات بشكل عام مهمة وضرورية لفهم آلية عمل وسير أي لغة وأي إطار عمل بحيث توضح كيفية التعامل معها أو الاستفادة منها، وذلك بشكل أشمل. وكذلك: توضيح الوظائف والميزات احتواءها على أمثلة واقعية. احتواءها على توجيهات وتفضيلات الاستخدام. تحتوي شرحا للتوافق والاعتماديات ومتطلبات التشغيل. فيما يتعلق بمكتبة مثل NumPy، ليس من الضروري أن تعرف كل شيء عنها. ومع ذلك، من المفيد أن تكون قادرا على فهم الأساسيات وكيفية استخدام الوظائف الرئيسية التي تحتاجها في مشروعك. سيساعدك الاطلاع على التوثيق في فهم كيفية استخدام NumPy بشكل أكبر وأكثر فعالية، ولكن لا تحتاج إلى معرفة كل جزء من التفاصيل بطبيعة الحال، فالتوثيق رغم ذلك يبقى مرجعا يسهل العودة إليه للاستفادة منه ومما يشرحه.
  13. يمكنك الاستماع للحدث beforeunload للقيام بأي أكشن قبل مغادرة المستخدم الصفحة، قبل ذلك ستحتاج تعطيل السلوك الافتراضي لهذا الحدث، ثم القيام بذلك بشكل مخصص. إليك مثالا: window.addEventListener('beforeunload', function (e) { e.preventDefault(); e.returnValue = ''; return ''; }); function confirmExit() { return confirm("اذا غادرت الصفحة لن يتم حفظ البيانات. هل ترغب في المغادرة؟"); } أو نحوه: <body onbeforeunload="return confirmExit()"> الأحداث المتعلقة بدورة حياة صفحة HTML وكيفية التحكم بها عبر جافاسكربت
  14. لا، على الرغم من أن Python مدعومة بشكل طبيعي في macOS ويمكن تشغيل البرامج التي تستخدم Python على أجهزة Mac، إلا أن لغة Python لا تستخدم على نطاق واسع في تطوير تطبيقات iOS لأجهزة iPhone وiPad أو تطبيقات macOS لأجهزة Mac وغيرها من منتجات Apple. هنالك لغات برمجة أخرى مثل Swift و Objective-C تستخدم على نطاق أوسع لتطوير تطبيقات iOS و macOS. في حين أن بايثون غالبًا ما يستخدم في تطبيقات الخادم وتطوير الويب وتطبيقات الذكاء الصناعي، ولكنه يمكن استخدامه في بعض التطبيقات المحمولة باستخدام إطار عمل مثل Kivy أو PyObjC.
  15. يمكنك استعمال المحددات الزائفة الأخرى أيضا، ونذكر: ::selection ::first-letter ::first-line ::marker بجانب أنه يمكنك القيام بالعملية بشكل قياسي، ضف العنصر ضمن هيكلة HTML وليكن div آخر أو غيره، ثم قم بتنسيقه باستخدام CSS بشكل عادي. سوف يعطيك ذاك تحكما أكبر في الهيكلة وفي الكود.
  16. لا يبدوا بالشيفرة أي مشكلة. يرجح أن تكون المشكلة بسبب إعدادات الأمان في المتصفح أو في الخادم. فهذا السلوك يحدث عندما يتم فتح موقع عبر HTTPS وتتم محاولة الوصول إلى API الحافظة (navigator.clipboard.writeText) عبر HTTP. جرب الوصول إلى الموقع باستخدام HTTPS وانظر ما ان حلت المشكلة.
  17. قم بفحص مدخلات المستخدم عن طريق الاستمارة ثم قم بتنفيذ استعلام قاعدة بيانات لجلب ذلك العدد ثم قم بتنفيذ عملية الطرح ببساطة. اليك مثالا: <form action="{{ route('form.submit') }}" method="POST"> @csrf @method('POST') <input type="number" name="number" /> <button type="submit">submit</button> </form> ثم قم بتعريف المسار المعني: Route::post('/form/submit', function(Request $request){ $number = $request->number; $storedNumber = MyModel::first()->my_number; $result = (int) $number - $storedNumber; // بقية الكود })->name('form.submit'); قد تحتاج كخطوة اضافية فحص ادخال العدد والتأكد من أنه عدد بالفعل. Route::post('/form/submit', function(Request $request){ $request->validate(['number' => 'integer']); $number = $request->number; $storedNumber = MyModel::first()->my_number; $result = (int) $number - $storedNumber; // بقية الكود })->name('form.submit');
  18. بجانب ما اقترح مصطفى يمكنك أيضا التعديل على قيمة متغير الحالة notes - خصوصا وأنها قيم اختبارية: const [notes, setNotes] = useState([ { id: 1, text: "test", date: (new Date()).toLocaleString(), }, { id: 2, text: "test", date: (new Date()).toLocaleString(), }, { id: 3, text: "test", date: (new Date()).toLocaleString(), }, ])
  19. انتبه إلى أن هنالك خطأ في التعرف على عنصر Modal المرافق، إذ يتم تصريحه كـ: <div class="card modal fade" id="Model" في حين يتم ارفاقه للخاصية data-bs-modal كـ: <div class="text" data-bs-toggle="modal" data-bs-target="#Modal"> تأكد من جعلهما مماثلين حتى يمكن التعرف عليها. أيضا لا تنسى مراجعة هيكل عنصر model في نفسه، لا يبدوا أنه يتم توصيفه بشكل صحيح. ان كانت المشكلة تتعلق بدورة ما، يقترح نشر السؤال في قسم تعليقات الطلبة المرافق للدرس وسيتم المتابعة معك هنالك.
  20. مراحل هندسة البرمجيات والتي يختصر لها بـ SDLC اختصارا عن Software Development Life Cycle غالبا ما تتبع منهجا موحدا وهو كالتالي: البحث والتخطيط Planning & Analaysis: ويتم فيه هاته المرحلة تحليل متطلبات العميل وفهمها وتحديد مختلف احتياجات المشروع من تجهيزات بشرية ومادية وكذلك بناء مخططات حالات الاستخدام وقصص المستخدمين وما الى ذلك .. التصميم Design: في هاته المرحلة يتم بناء مختلف واجهات الاستخدام وتخريجها كتصميم UI/UX .. التطوير Development: يتم تسليم مختلف التصاميم والمخططات لفرق التطوير للعمل على التطبيق وبناءه ويشمل ذاك تطوير الواجهات الأمامية والخلفية. الاختبار Testing: يتم تقديم ناتج المرحلة السابقة لفرق الاختبار لاختبار مختلف حالات الاستخدام التي تم تحديدها في المرحلة الأولى، ويتم التأكد من استيفاءها للغرض إما بشكل مؤتمت Automated أو بشكل يدوي من وجهة نظر المستخدم النهائي end user perspective .. النشر والتكامل Deployment & Integegration: يتم هاهنا نشر التطبيق والتأكد من تكامله مع مختلف البيئات المستهدفة التي سينشط فيها. الصيانة والمتابعة Maintenance: بعد نشر التطبيق يتم متابعته بشكل دائم لصيانة أي أعطال أو التخلص من أي مشاكل .. وقد يتم تقديم بعض هاته المراحل أو دمجها في بعض الأساليب البرمجية من مثل أسلوب TDD أين يتم دمج مرحلة الاختبار مع التطوير أو BDD أو غيرها .. وكل ذاك بحسب مرونة المشروع أو بحسب النهج المستخدم مثل نهج Agile..
  21. تأكد من أن الصفحة التي تعرض الملف تقوم بعرضه لكي تعمل خاصية download بصورة صحيحة. إليك مثالا: download.php: <?php $file = "http://example.com/". $_GET['file']; header("Content-Description: File Transfer"); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"". basename($file) ."\""); readfile ($file); exit(); ?> فيكون الرابط: echo '<p><a href="http://example.com/download.php?file='.$filename.'" target="_blank" download>اضغط هنا للتحميل ملف النسخ الأحتياطي</a></p></h3>';
  22. أظن أن مثل هاته الفكرة موجودة بالفعل في مفاهيم مثل شجرة دوم الافتراضية Virtual DOM وما تقوم به مكتبات وأطر الجافاسكربت الحديثة بالفعل، فهي تقوم بتصيير محتوى HTML وهيكلته وضبط تنسيقاته من خلال تنفيذ أكواد جافاسكربت على المتصفح. ولذلك فهي ليست بالفكرة الجديدة. انتبه أيضا الى عيوب هاته الفكرة من حيث أن ناتج تصيير العناصر لن يتم أرشفته على محركات البحث، فمحركات البحث لن تستطيع الوصول لمحتوى جافاسكربت، فهو محتوى يتم عرضه بعد فتح الصفحة وليس عند طلب المورد من الخادم. أيضا انتبه إلى هدفك وما القيمة التي ستقدمها من خلال القيام بهاته الفكرة، ولما يجب عليك ذلك بدل كتابة شيفرة HTML و CSS قياسية. تأكد من أن أهدافك تتطلب هاته الفكرة.
  23. للنظر ما ان كنت جاهزا لامتحان الدورة وأخذ الشهادة أو لا تأكد من أنك تستوفي شروط الامتحان، والتي هي: إتمام أربعة مسارات تعليمية على الأقل التطبيق العملي مع المدرب، والاحتفاظ بالمشاريع العملية الناتج رفع المشاريع على حسابك على GitHub وفي حال ما كان ذلك، يمكنك التقدم الى الامتحان وطلب ذلك، يمكنك الإطلاع تفاصيل أكثر من هنا: الامتحان والحصول على الشهادة
  24. أغلبية مصطلحات البرمجة وهندسة الحاسوب تحمل مفاهيم دلالية تعبر عما تعنيه بالضبط، فكلمة Entity تترجم لكيان في حين أن كلمة Object تترجم لكائن، ولذلك فإن Entity في قواعد البيانات عادة ما يمثل شيئا محددا في العالم الحقيقي مثل شخص، مكان، حدث، أو شيء آخر قابل للتخزين في قاعدة البيانات. ويمكن أن يتكون هذا الكيان من عدة متغيرات أو أعمدة (Columns) تمثل السمات (Attributes) أو الخصائص التي تميز هذا الكيان عن غيره. أما بالنسبة لـ Object في لغات البرمجة فيُعرف عادةً كتجسيم لكيان يمثل شيئًا معينًا أو كائنًا في البرنامج. بحيث يتكون هذا الكائن من البيانات (الخصائص) والسلوك (الطرق أو الوظائف) التي تعبر عنه. وتتمثل وظيفته في تحقيق الوظائف المحددة التي يتوقعها المبرمج أو المستخدم من البرنامج. كما يمكن أن تتفاعل هاته الكائنات مع بعضها البعض أو مع مكونات النظام الأخرى لتحقيق أهداف محددة. هاته هي الفكرة باختصار.
  25. بما أنك قد تقدمت في المشروع فمن الصعب تطبيق ذلك وإلا سيكون ذلك بجهد كبير، ولكن مبدئيا، يمكنك العناية أكثر بالأكواد واستخدام short open tags وعزل خرج HTML كملفات عروض views في مجلد منفصل،
×
×
  • أضف...