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

سامح أشرف

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

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

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

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

    56

كل منشورات العضو سامح أشرف

  1. الهدف من حماية الموقع، هو حماية البيانات الموجودة فيه (والتي تكون في الغالب مخزنة في قاعدة بيانات)، هذه البيانات مثل كلمات السر الخاصة بالمستخدمين، عناوين البريد الإلكتروني، حسابات بنكية ... إلخ. وبما أن موقعك لا يوفر إمكانية لتخزين مثل هذه البيانات، فلن يكون عرضه للاستهداف، حيث لا توجد فائدة مباشرة من التحكم في الموقع. أيضًا تستطيع استخدام خدمات استضافة مجانية مثل GitHub Pages لاستضافة الموقع، بدون الحاجة إلى شراء مساحة مدفوعة على أحد الخوادم، وذلك لأن الخادم قد يحتاج إلى بعض الإعدادات لحمايته من الاختراق (المخترق سوف يستفيد من الخادم نفسه، وليس كود أو البيانات الموجودة في الموقع)، بينما خدمات مثل GitHub Pages لا تحتاج إلى مثل هذه الإعدادات، كل ما عليك هو حماية حسابك في الموقع، وربما تفعيل ميزة 2FA حتى لا يتمكن أحد من الدخول إلى حسابك حتى ولو حصل على كلمة السر الخاصة بك. في حالة مازلت تحتاج إلى شراء خادم أو استضافة مدفوعة، فيوجد عدد من الأمور التي يجب أن تأخذها بعين الاعتبار: حماية النطاق domain الخاص بالموقع، من خلال استخدام كلمات مرور قوية، وتفعيل ميزة 2FA في الموقع الذي حصلت منه على النطاق (gogodaddy على سبيل المثال). إعداد حماية CloudFlare ضد هجمات DDoS Attacks إن كنت تستعمل خادم افتراضي VPS أو خادم مخصص dedicated server، فعليك القيام ببعض الخطوات الإضافية: تفعيل جدار حماية مثل ufw لحماية منافذ الخادم. منع تسجيل الدخول بحاسب root فحص السجلات logs من حين لآخر. يوجد المزيد من الأمور التي يمكنك القيام بها لتأمين الموقع الخاص بك، تجد شرح أكثر لهذه الأمور في المقالات التالية:
  2. كلمة case هي كلمة محجوزة مثل SELECT و FROM لذلك لا يمكن إستعمالها بشكل مباشر كاسم عمود أو جدول، ولكن يجب أن تقوم باستخدام اسم العمود بين علامتي ` ` ، على النحو التالي: SELECT * FROM word WHERE class >= 25 AND `case` != 65000; يمكنك كتابة العلامة ` (تسمى backtick) من خلال الضغط على حرف ذ في لوحة المفاتيح الإنجليزية. تستطيع أيضًا استعمال علامات الاقتباس المفردة والمزدوجة بدون مشكلة (قد لا تعمل في أنواع أخرى من قواعد البيانات): SELECT * FROM word WHERE class >= 25 AND 'case' != 65000; SELECT * FROM word WHERE class >= 25 AND "case" != 65000;
  3. كل لغات البرمجة تحتوي على نفس المميزات الأساسية، فعلى سبيل المثال ستجد الكثير من الأمور المتشابهة بين PHP و JavaScript ولكن بالتأكيد يوجد أيضًا العديد من الاختلافات بينهما. ولا تحتاج إلى تعلم كل شيء في لغة JavaScript لكي تتمكن من تعلم Vue.js، يكفي فقط أن تتعلم أساسات اللغة (المتغيرات variable، الشروط conditions، الحلقات loops ... إلخ) وتعلم كيفية التلاعب بالعناصر باستخدامها DOM Manipulation، بحيث ستحتاج إلى التعديل على العناصر كثيرًا باستخدام JavaScript لذلك من المهم تعلم هذه الجزئية. خلال فترة تعلمك لـ Vue.js يمكنك تعلم المزيد من الأمور في JavaScript أيضًا، ويُعد تعلمك واستخدامك لـ Vue.js جزء من تعلم JavaScript نفسها أيضًا.
  4. إطارات العمل والمكتبات مثل React.js و Vue.js و Angular.js تساعد مطور الواجهات الأمامية Frontend Developer في إنشاء تطبيقات ذات الصفحة الواحدة Single Page Application (SPA)، وهي نوع من المواقع التي تعرض صفحة معينة للمستخدم، وعندما يقوم المستخدم بالضغط على رابط ما للذهاب إلى صفحة أخرى -في نفس الموقع- فإن الكود يقوم فقط بتغير محتوى الصفحة وجلب البيانات -إن وُجدت- باستخدام API على سبيل المثال، وبالتالي يكون تحميل الصفحات بهذه الطريقة أسرع بكثير من تحميل كل صفحة على حدى من البداية في كل مرة يذهب المستخدم إلى صفحة أخرى. بالتأكيد مثل هذه التقنية تستعمل JavaScript بالكامل، لذلك يجب أن يكون لديك معرفة جيدة بهذه اللغة لكي تتمكن من تعمل أحد إطارات العمل المذكورة سابقًا، وتحتاج إلى HTML و CSS بالتأكيد لتكوين صفحات الموقع بالشكل الذي تريده. ليس عليك تعمل أي شيء غير هذه اللغات، ويمكنك اختيار أي إطار عمل من React.js و Vue.js و Angular.js وليس عليك تعلمهم جميعًا، حاول اختيار أحدهم وركز على تعلم الأساسيات جيدًا وحاول بناء مشاريع مختلفة للتطبيق، وبعد تعلم الأساسيات والتطبيق بشكل جيد سيكون في مقدورك تعلم أي مكتبة أو إطار عمل يستعمل نفس تقنية SPA بسهولة كبيرة. البرمجيات التي تساعدك في إنشاء مواقع من نوع SPA لا تقتصر على React.js و Vue.js و Angular.js فقط، ولكن يوجد غيرها الكثير مثل svelte.js و Ember.js و Preact (نسخة مصغرة من React) و backbone.js (أقدم هذه المكتبات)، حتى أنك يمكنك أن تقوم بنفس المهمة (إنشاء تطبيقات من نوع SPA) باستخدام jQuery أو JavaScript وحدها، ولكن هذه البرمجيات متخصصة وتساعدك في الكثير من المهام وتوفر عليك الكثير من الوقت والعمل غير الضروري. تعلم Vue.js في البداية خطوة جيدة نظرًا لبساطته وسهولته مقارنة بباقي المكتبات. ستجد في الأكاديمية هنا قسم يشرح Vue.js بشكل مفصل في شكل سلسلة مقالات: مقدمة إلى vue.js، وفي المستقبل يمكنك تعلم React بدون مشكلة (لديه أكبر مجتمع من المطورين بالنسبة للمكتبات الأخرى) وستجد أيضًا عدد أكبر من المقالات التي تشرحه من الصفر من هنا.
  5. يبدو أن لديك مشكلة في الإتصال بالإنترنت ولم يتمكن السكريبت الخاص بتثبيت composer من الحصول آخر إصدار بسبب مشكلة في SSL لديك (لم يتمكن من إنشاء إتصال آمن). إن كنت تستعمل VPN أو Proxy فحاول إغلاقه، أيضًا بعض برامج الحماية قد تُعيق هذه العملية في بعض الأحيان، حاول إغلاق أي Antivirus لديك وأعد المحاولة مرة أخرى. قد يكون من المفيد في بعض الحالات إعادة تشغيل جهاز الموجه (الراوتر router).كحل أخير حاول تشغيل نافذة السكريبت كمسئول Run as Administrator مرة أخرى.
  6. يمكنك إستعمال المواقع التي تقوم بإزالة الخلفية بشكل تلقائي عبر الذكاء الإصطناعي، هنا بعض هذه المواقع: remove.bg removal.ai pixlr remove background retoucher.online ويمكنك الوصول لمواقع أكثر من خلال البحث في جوجل على "Remove Background from Images".
  7. الأمر قد يختلف على حسب مدير الحزم package manager الذي تستعمله، إن كنت تستعمل npm فيمكنك إزالة مكتبة من المشروع من خلال الأمر التالي: npm uninstall <package-name> أو npm un <package-name> وإن كنت تستعمل yarn فيمكنك تنفيذ الأمر التالي: yarn remove <package-name> أما إن كان المشروع لديك هو مشروع PHP وتستعمل composer فيمكنك تنفيذ الأمر التالي: composer remove <packge-name> مع تغير <packge-name> في كل الأمثلة السابقة إلى اسم المكتبة التي تريد إزالتها.
  8. يبدو أن الملف الخاص بك باسم index.js.txt وليس index.js ، ولكن صيغة الملف الحالية مخفية بشكل إفتراضي، حاول إظهار صيغة الملف من خلال قائمة view ثم حدد على File name extensions كما في الصورة التالية: وإن كنت تستعمل window 11: بعد إظهار صيغة الملف ستجد أن اسم الملف لديك هو index.js.txt وعليك إعادة تسميته إلى index.js فقط.
  9. يوجد العديد من الإختلافات بين PHP و JavaScript، ولا يمكن معرفة أفضل طريقة لتنفيذ الكود بدون معرفة الغرض المطلوب من الكود تحديدًا. هنا نفس الكود السابق ولكن في لغة JavaScript: async function main() { const filesArray = [ 'http://domain1.com//ok.php', 'http://domain3.com//ok.php', 'http://domain2.com//ok.php' ]; for (const file of filesArray) { const res = await fetch(file) const content = await res.text(); if (content.includes('class="vid-myworld"')) { console.log(content); break; } } } ملاحظة: الكود السابق قد قد لا ينتج أي شيء أو قد يظهر خطأ ما مثل "This request has been blocked" حسب البيئة التي يتم تشغيل الكود فيها وحسب إعدادات المشروع والحزم المثبتة (في حالة إستعمال Node.js أو Deno.js)
  10. للآسف بدون هذا الكود لن تتمكن من تثبيت القالب. حاول التواصل مع المبرمج الذي قام بتركيب القالب لك ليعطيك الكود أو يقوم هو بتثبيت القالب مرة أخرى.
  11. للعثور على رمز الشراء Purchase code الخاص بك قم بتسجيل الدخول إلى حساب Envato Market الخاص بك. قم بتمرير الفأرة فوق اسم المستخدم الخاص بك في الجزء العلوي من الشاشة (أعلى اليمين)، ثم أضغط على Downloads. ستظهر لك المنتجات التي قمت بشرائها، وبجانبها زر Download أضغط عليه ومن القائمة المنسدلة ثم أضغط على ‘License certificate & purchase code’ وستجد الكود الخاص بك كما في الصورة: الكود متاح في شكل ملف PDF أو ملف TXT إن لم تتمكن من العصور على هذا الكود أو ظهرت لك مشكلة أثناء تفعيل المنتج الذي قمت بشرائه، فتواصل مع الدعم الفني الخاص بمتجر Envato
  12. يوجد العديد من أوامر لينكس المشهورة والتي يتم إستعمالها بكثرة من قِبل كل المستخدمين، ستجد في المقالة التالية أشهر الأوامر وأكثرها إستعمالاً: كما ستجد في تصنيف لينكس في الأكاديمية العديد من المقالات التي تشرح كل الأساسيات المتعلقة بلينكس وكذلك العديد من الأمور المتقدمة: DevOps > لينكس أنظمة تشغيل الحواسيب والهواتف > لينكس
  13. دورة CS50 عبارة عن دورة عامة تشرح العديد من التقنيات ولا تركز على لغة JavaScript فقط، لذلك لن تُفيدك هذه الدورة كثيرًا إذا أردت أن تتعلم أكثر عن لغة JavaScript وكيفية إستخدامها بطريقة عملية، بدلًا من ذلك حاول تعلم التقنيات المعروفة مثل React.js و Node.js وغيرها من مكتبات وتقنيات يتم إستعمالها بشكل عملي. حاول أيضًا العمل على مشروع شخصي لنفسك بإستخدام JavaScript، وسوف يساعدك هذا الأمر على تعلم المزيد عن هذه اللغة وكيفية إستعمالها بطريقة عملية، كما ستواجهك بعض المشاكل في هذه المرحلة وعند البحث عن حلول لهذه المشاكل سوف تتعلم المزيد من الأمور وسوف تحصل على المزيد من المعلومات. بالطبع يجب أن يكون لديك هدف من تعلم البرمجة، هل تريد إنشاء مواقع إلكترونية، إذًا حاول البحث عن مواقع ذات واجهات جذابة وحاول تقليدها أو حاول إنشاء خدمات مثل التي تستعملها بشكل يومي، كما يمكنك عمل سكربتات تسهل عليك بعض الأمور التي تقوم بها بشكل يومي، على سبيل المثال إن كنت تنشر على فيسبوك وتويتر على حدى، فحاول عمل خدمة تكتب عليها ما تريد ويتم نشره على فيسبوك وتويتر معًا، أو ربما تقوم بكتابة العديد من الملاحظات أثناء العمل أو مشاهدة بعض الدورات، فحاول إنشاء برنامج بسيط لتسجيل الملاحظات وترتيبها بحسب بعض التصنيفات للرجوع إليها بسرعة. المهم أن تستعمل ما تتعلمه في عمل أشياء تساعدك في عملك. ربما تخطر إلى بالك فكرة ما، ولكن لا تعلم من أين تبدأ بها، أو ربما لا يكون لديك القدر الكافي من المعلومات عن تقنية معينة أو كيفية إتمام مهمة ما، وهنا يأتي دور البحث عن حلول لهذه المشاكل وتعلم كيفية تخطيها، ومع الوقت ستتمكن من إتمام أي فكرة ترغب بها بسهولة وبدون الحاجة إلى مساعدة أو البحث كثيرًا لعملها. ستجد في الأكاديمية العديد من المقالات التي تتحدث عن JavaScript بشكل أو بآخر، حيث أن تصنيف جافاسكريبت هو أكبر تصنيف منن ناحية عدد المقالات الموجودة (أكثر من 400 مقالة في الوقت الحالي)، وبالتأكيد يوجد العديد من هذه المقالات التي تقوم فيها بإنشاء بعض المشاريع العملية، هنا بعضها: أنصحك أيضًا بقرأة كتاب البرمجة بلغة جافاسكربت، حيث يحتوي على العديد من المواضيع المتقدمة والمشاريع العملية.
  14. السبب هو أنك تفصل بين إستدعاء الدالة showusername وإستدعاء الدالة userClicked بفاصلة comma , وليس بفاصلة منقوطة semicolon ; حاول تعديل السطر التالي: <div id="user" onClick="userClicked(${user.id}, this); showusername(${user.name})"> <!-- ^^^^^ -->
  15. خدمة GitHub Pages لا توفر سوى إستضافة الملفات الساكنة Static Files أي ملفات HTML و CSS و JS وبعض الصور والفيديوهات .. إلخ، ولا يمكنك أن تقوم بتشغيل كود Backend عليها، لذلك إن أردت عمل لوحة تحكم Dashboard لتغير بعض المعلومات في الموقع الخاص بك، فستحتاج إلى إستضافة لتقوم بتشغيل كود مكتوب بـ Node.js (JavaScript) أو PHP أو Python أي لغة تطوير واجهات خلفية أخرى وعمل API، وفي الموقع الخاص بك تقوم بجلب اليبانات المطلوبة من الـ API وعرض هذه البيانات بالطريقة التي تريدها. البيانات التي يتم جلبها من الـ API تكون مخزنة في قاعدة بيانات مثل SQLite أو MYSQL أو MongoDB ... إلخ، ويتم جلب هذه البيانات من قاعدة البيانات عند طلبها. الهدف من كل ما سبق، هو تخزين البيانات في قاعدة البيانات، بحيث يمكنك عمل لوحة تحكم تقوم بإستعمال الـ API الخاص بك لتعديل البيانات المخزنة في قاعدة البيانات: ما يحدث في قاعدة البيانات، هو أنك تقوم بملء إستمارة form بها اسم الموقع الشخصي الخاص بك ولون خلفية الموقع على سبيل المثال، وعند الضغط على "حفظ" يتم إرسال طلب إلى الخادم عبر API تقوم أنت بإنشائه، ويتم حفظ هذه البيانات في قاعدة البيانات، وعند زيارة الموقع الشخص الخاص بك، سيتم إرسال طلب إلى الخادم عبر API تقوم بتحديده ليتم جلب البيانات المخزنة في قاعدة البيانات وعرضها بالشكل الذي تريده بإستعمال JavaScript
  16. المشكلة لديك في الكود هي أنك تقوم بإستدعاء الدالة showusername في حدث onClick ولكنك لا تقوم بتمرير أي شيء لها، حاول تعديل الكود الخاص بك ليبدو بالشكل التالي: for (user of users) { let content = ` <div id="user" onClick="userClicked(${user.id}, this); showusername('${user.name}')"> <!-- ^^^ ^^^^^^^^^^^^^^^^^ --> <h3>${user.name}</h3> <h3>${user.email}</h3> </div> ` document.getElementById("users").innerHTML += content } لاحظ وضع علامة الفاصلة المنقوطة semicolon ; بين إستدعاء الدالتين showusername و userClicked وكذلك وضع user.name داخل علامات إقتباس ' ' الآن تحتاج إلى تعديل الدالة showusername لتقوم بطباعة الاسم الممرر لها: function showusername(name) { console.log(name); } بهذا الشكل عند الضغط على أي مستخدم، سيتم طباعة اسمه في الـ console أما إن أردت تمرير كائن user بالكامل إلى الدالة showusername وليس مجرد الاسم، فستحتاج إلى تحويل user إلى نص من خلال التابع JSON.stringify، مثال: for (user of users) { let content = ` <div id="user" onClick="userClicked(${user.id}, this); showusername(${JSON.stringify(user).split('"').join("&quot;")})"> <h3>${user.name}</h3> <h3>${user.email}</h3> </div> ` document.getElementById("users").innerHTML += content } function showusername(user) { console.log(user); } بهذه الطريقة سوف يتم طباعة كلئن user بالكامل عند الضغط على أحد المستخدمين.
  17. حاول التأكد أولًا من أن الكود الخاص بك لا يوجد به مشكلة، بعد ذلك تأكد من أن Apache يعمل من برنامج XAMPP إن إستمرت المشكلة لديك، فحاول إنشاء ملف جديد في المسار C:\xampp\htdocs وليكن باسم hello.php وقم بكتابة كود بسيط فيه، للتأكد من أن الخادم يعمل بشكل سليم: <?php echo "Hello, World!"; بعد ذلك قم بزيارة المسار http://localhost/hello.php فإن ظهرت كلمة Hello, World! فهذا يعني أن الخادم يعمل بشكل سليم ولا يوجد مشكلة به، وأن المشكلة في الكود الخاص بك، لذلك عليك مراجعته مرة أخرى.
  18. في هذه الحالة لا يوجد فرق عملي بين الطرقتين، وكلاهما يؤدي لنفس النتيجة، ولكن الطريقة الثانية مختصرة وواضحة أكثر، أيضًا في حالة التعامل مع مدخلات تكون قيمتها الإفتراضية عبارة عن قيمة منطقية Boolean فلن تفي بالغرض الطريقة الأولى ويجب عليك حينها إستخدام الطريقة الثانية، مثال لتوضيح الفكرة: function login(isVerified = false) { if(isVerified) { console.log('You Are Logged In!'); } else { console.log('Please Verify Your Account!'); } } login(); هنا لدينا دالة تقوم بتسجيل الدخول (كمثال فقط)، وتأخذ المعامل isVerified والذي لديه قيمة إفتراضية وهي false، في هذه الحالة إن أستعملنا شرط مثل الطريقة الأولى المذكورة في سؤال، فلن يفيد في أي شيء: // الشرط التالي لن يفيد في شيء if (!isVerified) isVerified = false; أيضًا في حالة إستعمال مدخلات يمكن أن يكون لها قيمة مثل null أو undefined فمن الأفضل إستعمال المدخلات الإفتراضية بدلًا من إستعمال طريقة الشروط conditions.
  19. أنصحك بقراءة كتاب البرمجة بلغة بايثون، فهو يبدأ معك من الأساسيات تمامًا ويخوض في شرح أنواع البيانات والشروط وحلقات التكرار ... إلخ. إن كنت مهتم بالقراءة عن الويب عامةً أو عن لغة JavaScript خاصةً، فيمكنك قراءة كتاب البرمجة بلغة جافاسكربت، والذي يشرح أساسيات اللغة بشكل مبسط، وينتقل بعد ذلك إلى أمور متقدمة أكثر مثل الأنماط التعبيرية Regex والبرمجة غير المتزامنة، وبعد ذلك ينتقل إلى أمور متقدمة أكثر مثل إنشاء لغة برمجة بسيطة بإستخدام JavaScript ولعبة بسيطة تعمل في المتصفح ومحرر رسوم نقطية، ويتم ختم الكتاب عبر إنشاء موقع لمشاركة المهارات بإستخدام Node.js يوجد عدد جيد من الكتب في قسم كتب البرمجة، يمكنك الإطلاع عليها وتحميل أيً منها، فكلها مجانية تمامًا إن أردت قراءة مقالات متخصصة في مجال معين فيوجد في أكاديمية حسوب عدد من التصنيات التي تغطي مئات المواضيع، يمكنك الإطلاع على كل التصنيفات من هنا. يوجد أيضًا عدد من الكتب الأجنبية مثل سلسلة كتب Uncle Bob التي تهتم بكيفية كتابة كود نظيف Clean Code وعمل بنية قابلة للتطوير والتعديل في المستقبل Clean architecture ... إلخ.
  20. يبدو أن vite مازال يستعمل localhost عند بناء ملفات المشروع، حاول إضافة الكود التالي إلى ملف .env الخاص بك: ASSET_URL=https://yoursite.com مع تغير https://yoursite.com إلى عنوان الموقع الخاص بك. أو يمكنك تنفيذ الأمر التالي: heroku config:set ASSET_URL=https://yoursite.com
  21. في العادة يتم تعريف الدوال (إنشائها) قبل إستدعائها: function hello() { console.log('hello, world!'); } hello(); أما رفع الدوال أو Hoisting تعني إستدعاء الدالة قبل تعريفها، على سبيل المثال إن قمنا بإستدعاء دالة قبل إنشائها، فمن الطبيعي أن يظهر لنا خطأ: myFuntion(); // Uncaught ReferenceError: myFuntion is not defined هنا قمت بإستدعاء دالة myFunction ولكن هذه الدالة غير موجودة، وبالتالي يظهر خطأ يخبرني بذلك، وهذا الأمر طبيعي في أغلب لغات البرمجة، ولكن بالنسبة للغة JavaScript (وبعض اللغات الأخرى) يمكن إستدعاء دالة ما قبل تعريفها، على النحو التالي: hello(); // hello, world! function hello() { console.log('hello, world!'); } في المثال السابق قمت بإستدعاء الدالة hello قبل حتى أن أقوم بإنشائها (الإستدعاء يسبق إنشاء الدالة بحسب ترتيب الأسطر)، ويمكن عمل هذا الأمر كذلك للمتغيرات التي يتم إنشائها عبر الكلمة المفتاحية var بدون مشكلة: console.log(x); // undefined var x; x = 5; الكود السابق لن يسبب خطأ Error ولكن ستكون قيمة x هي undefined (غير معرف) إلى أن يتم تغير قيمتها لاحقًا جدير بالذكر أن عملية الرفع Hoisting لا تعمل في كل مكان، فلن تتمكن من إستعمالها في بيئة تفاعلية مثل الـ Console في أدوات المطورين Dev Tools في المتصفح، وكذلك إن بدأ ملف JavaScript بجملة "use strict" فلن تتكمن من إستخدام هذه الميزة: "use strict" console.log(x); // Uncaught ReferenceError: x is not defined var x; x = 5;
  22. يمكن عمل هذا الأمر من خلال CSS عبر الخاصية display: grid ، حيث تستخدم في إنشاء بنية شبكية ويمكن ترتيب العناصر (التدوينات في هذه الحالة) على شكل شبكة Grid بشكل سهل. تجد في المقالات التالية شرح وافي لكيفية إستخدام هذه الخاصية والتعديل عليها للتحكم في كيفية عرض التدوينات كما تريد: كما يوجد في موسعة حسوب عدد من المقالات التي توثق كيفية إستخدام كل خصائص CSS المتعلقة ببناء بنية شبكية Grid Layout
  23. بما أن لديك حسابين على GitHub، فيجب أن تقوم بإضافة الحساب الآخر 86AhmedSoliman إلى المستودع ArabiEcommerce/AE-commerce لكي يتمكن من رفع الملفات إليه، ويمكنك عمل ذلك من خلال الدخول إلى صفحة الإعدادات الخاصة بالمستودع، أضغط على زر Add people: ستظهر لك نافذة صغيرة، اكتب فيها اسم المستخدم الآخر 86AhmedSoliman بعد ذلك قم بفتح البريد الإلكتروني الخاص بالمستخدم 86AhmedSoliman، وستجد دعوة للإنضمام إلى المستودع ArabiEcommerce/AE-commerce، وافق على الدعوة، وأعد محاولة رفع الملفات إلى المستودع مرة أخرى.
  24. توفر أكاديمية حسوب الآلاف من المقالات في مختلف المجالات (البرمجة، التصميم، العمل الحر، ريادة الأعمال ... إلخ)، وتشرح هذه المقالات كل ما تحتاجه لتعلم تقنية معينة من الصفر تمامًا وحتى الكثير من الأمور المتقدمة، وكل المقالات باللغة العربية الفصحى، كما يوجد مجموعة كبيرة من المقالات المترجمة من أشهر المواقع والكتب. أيضًا تمت ترجمة عدد كبير من توثيق التقنيات البرمجية مثل python, ruby, Laravel, PHP, JavaScript, react, SQL, CSS, HTML وغيرهم الكثير في موسوعة حسوب. والإطلاع على توثيق أحد هذه التقنيات أثناء تعلمك لها سوف يفيدك بشكل كبير. إن كنت تحب قراءة الكتب، فستجد عدد من الكتب في الأكاديمية كذلك في عدة مجالات، وتوفر هذه الكتب نقطة بداية ممتازة إن أردت التعمق في أحد التقنيات المذكورة سابقًا. البعض يفضل مشاهدة دروس فيديو مسجلة، وستجد في قناة أكاديمية حسوب على اليوتيوب هذا الأمر، حيث يتم إستضافة بعض من أشهر المبرمجين العرب لشرح بعض التقنيات، وعمل بعض المشاريع كذلك. وإن واجهتك أي مشكلة أثناء تعلم أي تقنية أو لم تتمكن من حل مشكلة ما بنفسك، فتستطيع الإستفادة من قسم الأسئلة العامة هنا، وكتابة مشكلتك بالتفصيل، وسوف يقوم المستخدمون الآخرون والمدربون المتاحين من مساعدك بقدر الإمكان. ربما قد تصاب بالتشتت من كثرة المصادر أو من التنقل من تعلم تقنية إلى أخرى، لذلك عليك تحديد هدفك أولًا من تعلم البرمجة، وستجد في هذه المقالة شرح وافي لأشهر المجالات البرمجية وأشهر التقنيات المستعملة في كل مجال، وكيف تبدأ في تعلميه كذلك:
  25. نعم يمكن عمل ذلك، وسيعمل المشروع بدون مشكلة في أغلب الأحيان، فملفات مثل package.json و package-lock.json و yarn.lock تحتوي على نص عادية وهي نفسها لكل مشروع، ونفس الأمر بالنسبة للمجلد node_modules. لذلك يمكنك أن تقوم بعمل مشروع واحد ونسخه عندما تريد عمل مشروع جديد فقط وسيعمل بدون مشكلة بغض النظر عن الوقت اللازم لنسخ المشروع من مجلد إلى مجلد آخر (ستأخذ هذه العملية بعض الوقت بسبب عدد الملفات الكبير الموجود في المجلد node_modules). إن كنت تواجه مشكلة في سرعة عمل مشروع جديد بسبب حجم الحزم التي يتم تثبيتها، فحاول إستعمال yarn أو pnpm بدلًا من npm ، حيث يعمل كلًا منهما على تحميل وتثبيت الحزم بشكل أسرع، نظرًا لأنهما يخزنان الحزم على جهازك بدلًا من تحميلها في كل مرة مما يسرع من عملية إنشاء المشاريع أو تثبيت حزم أخرى.
×
×
  • أضف...