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

عبدالباسط ابراهيم

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

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

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

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

    11

كل منشورات العضو عبدالباسط ابراهيم

  1. يمكنني مساعدتك في ترتيب الكورسات وفقًا للتسلسل المنطقي الذي يمكن أن يساعدك في استيعاب المفاهيم بشكل أفضل. هنا هو الترتيب المقترح: علوم الحاسوب: يعتبر كورس علوم الحاسوب بداية جيدة لفهم المفاهيم الأساسية في مجال الحوسبة. سيساعدك في فهم الأساسيات مثل هياكل البيانات وخوارزميات البرمجة وأساسيات الشبكات وأمن المعلومات. إنه كورس هام لإكسابك المعرفة اللازمة لفهم المواضيع الأخرى بشكل أفضل. تطوير واجهات المستخدم: يمكنك التوجه إلى كورس تطوير واجهات المستخدم. ستتعلم في هذا الكورس كيفية تصميم وتطوير واجهات المستخدم الجذابة والسهلة الاستخدام لتطبيقات الويب . تطوير التطبيقات باستخدام لغة Python: بعد اكتساب المعرفة في تطوير واجهات المستخدم، يمكنك الانتقال إلى كورس تطوير التطبيقات باستخدام لغة Python. ستتعلم في هذا الكورس كيفية استخدام Python لتطوير تطبيقات الويب والمشاريع البرمجية الأخرى. ستتعلم أساسيات البرمجة باستخدام Python والتعامل مع قواعد البيانات وتطوير تطبيقات قوية وفعالة. إدارة تطوير المنتجات:وأخيراً هذا الكورس سيعطيك فهم أعمق لعملية تطوير المنتجات البرمجية من البداية للنهاية. وبالطبع، يجب أن تأخذ في الاعتبار اهتماماتك الشخصية وأهدافك في التعلم. إذا كان لديك اهتمام خاص بتطوير التطبيقات باستخدام Python، فيمكنك البدء بهذا الكورس أولاً. الهدف هو ترتيب الكورس
  2. النسيان وعدم الفهم الكامل لبعض الأكواد والدوال في مشاريع البرمجة هي مشكلة شائعة تواجه العديد من المبتدئين في تعلم البرمجة. لحل هذه المشكلة ، يمكنك اتباع بعض النصائح التالية: القراءة والبحث: قم بقراءة المصادر الإضافية والمقالات والكتب المرجعية (التي توفرها أكاديمية حسوب )المتعلقة بالمفاهيم التي تواجه صعوبة في فهمها. يمكن أن توفر لك هذه المصادر رؤية إضافية وشروحًا مفصلة تساعدك على فهم الأكواد بشكل أفضل. لاحقاً في المسارات القادمة عن طريق إنشاء مشاريع تطبيقية ستتمكن من فهم البرمجة بشكل أفضل وتطبيقها على سيناريوهات حقيقية. شارك في المجتمعات المبرمجين الموجودة هنا. يمكنك طرح الأسئلة ومناقشة الأكواد والمشاريع مع المطورين الآخرين، وهذا يمكن أن يفيدك في فهم الأكواد واكتساب المزيد من المعرفة. وأخيراً تعلم البرمجة يستغرق الوقت والممارسة المستمرة. لا تستسلم عندما تواجه صعوبات، واستمر في المحاولة والتعلم. كما يوجد العديد من النصائح القيمة في الأسئلة التالية
  3. في الكود الذي قمت بمشاركته، المتغير x يستخدم في حلقة التكرار (loop) لتمثيل قيم متتالية من 0 إلى 9. في كل تكرار للحلقة، قيمة x تتغير لتكون القيمة الحالية للتكرار. في كل تكرار، يتم ضرب العدد الذي تم إدخاله (number) بقيمة x ويتم طباعة الناتج. هذا يعني أنه سيتم طباعة قيم ضرب العدد المدخل بالأعداد من 0 إلى 9. هنا مثال آخر لتوضيح استخدام المتغير x في حلقة التكرار: for x in range(1, 6): print("Current value of x:", x) print("Square of x:", x**2) في هذا المثال، ستتم طباعة قيمة x الحالية ومربعه في كل تكرار للحلقة. ستكون النتيجة كالتالي: Current value of x: 1 Square of x: 1 Current value of x: 2 Square of x: 4 Current value of x: 3 Square of x: 9 Current value of x: 4 Square of x: 16 Current value of x: 5 Square of x: 25 وللمزيد من التفاصيل يرجى قراءة المقالة التالي
  4. نعم المحتوى الموجود كاف بشكل كبير ربما لاحقاً تحتاج لبعض المفاهيم المتقدمة نعم التقنيات التي ذكرتها كافية من ناحية الواجهة الأمامية ولم يتم ذكر الواجهة الخلفية أما عن TypeScriptوغيرها من التقنيات المساعدة لك في ال roadmap فهي لن تأخذ منك الكثير من الوقت ولا يجب عليك التفكير بها حالياً فالأفضل هو البدأ بالأساسيات حالياً دون التفكير في الأدوات المتقدمة
  5. يختلف الوصول إلى خادم VPS (Virtual Private Server) الذي يعمل بنظام Windows Server بحسب مزود الاستضافة وسياساته. قد يقدم بعض مزودي الاستضافة وصولًا إلى الخادم الافتراضي لأغراض الدعم الفني، في حين قد لا يقدمه البعض الآخر. من المهم التحقق من سياسات مزود الاستضافة الخاص بك أو الاطلاع على وثائقهم لفهم سياساتهم المتعلقة بدعم VPS. سيكونون قادرين على تزويدك بأدق المعلومات حول مستوى الوصول والدعم الذي يقدمونه لخادم VPS يعمل بنظام Windows Server. يرجى ملاحظة أن توافر الدعم الفني ومستوى الوصول قد يختلف اعتمادًا على نوع خطة استضافة VPS التي تمتلكها. يقدم بعض مزودي الخدمة استضافة VPS المُدارة، حيث يهتمون بإدارة الخادم وتقديم الدعم، بينما يقدم آخرون استضافة VPS غير المُدارة، حيث تكون لديك مزيد من التحكم والمسؤولية في إدارة الخادم. لضمان الوضوح، من الأفضل الاتصال بفريق الدعم لمزود الاستضافة الخاص بك والاستفسار عن الخيارات المحددة للوصول والدعم المتاحة لخادم VPS الذي يعمل بنظام Windows Server. تلخيصاً يجب الإهتمام بالتعامل مع شركة استضافة كبيرة حيث أن هذه الشركات تحافظ على سمعة جيدة
  6. دالة `__len__` تُستخدم في لغة Python لتعريف طريقة لاسترداد طول (عدد العناصر) لكائن معين من الصنف (class) عند استخدام دالة `len()`. عندما تستدعى دالة `len()` على كائن ما، فإن Python يحاول استدعاء دالة `__len__()` المعرفة داخل الكائن. وبالتالي، يمكنك تعريف دالة `__len__()` داخل صنفك الخاص لتحديد كيفية استرداد طول الكائن عند استخدام `len()`. على سبيل المثال، إذا كنت ترغب في تعريف صنف لقائمة مخصصة، يمكنك استخدام دالة `__len__()` لتحديد طول القائمة عند استخدام `len()`: class MyList: def __init__(self): self.items = [] def __len__(self): return len(self.items) my_list = MyList() my_list.items = [1, 2, 3, 4, 5] print(len(my_list)) # سيطبع: 5 في هذا المثال، تم تعريف دالة `__len__()` داخل صنف `MyList` لتسترد طول القائمة `items` عند استخدام `len(my_list)`. بالمقابل، دالة `len()` تستخدم لاسترداد طول الهيكل البيانات المدمجة في Python مثل القوائم والسلاسل والمجموعات والقواميس. ولكن عند استخدام `len()` مع صنف مخصص، فإن Python يحاول استدعاء دالة `__len__()` المعرفة داخل الكائن بدلاً من استخدام `len()` المعينة مسبقًا.
  7. نعم، يجب عليك الانتباه والاهتمام بالسياق الصحيح للفواصل والنقاط والعلامات الأخرى في النصوص والشفرات البرمجية. في معظم لغات البرمجة، الفواصل والنقاط والعلامات تستخدم كمعيار جزئي من قواعد البناء الجملي الصحيحة. على سبيل المثال، في لغة JavaScript، يجب وضع فاصلة (؛) بين الأوامر المختلفة للفصل بينها، ويجب استخدام النقاط (.) للوصول إلى خصائص وطرق الكائنات، ويجب استخدام العلامات ({}، []، ()) لتحديد الهياكل والتجميعات المختلفة. عدم وضع الفواصل والنقاط والعلامات في السياق الصحيح يمكن أن يؤدي إلى حدوث أخطاء syntax errors، والتي يمكن أن تؤثر على تنفيذ الشفرة وتؤدي إلى سلوك غير متوقع أو فشل في التنفيذ. لذا، فمن المهم حفظ السياق الصحيح للفواصل والنقاط والعلامات في لغة البرمجة التي تعمل عليها، وينبغي الإهتمام بال syntax والتركيب الصحيحة للشفرة. قد تختلف ال syntax بين لغات البرمجة المختلفة، لذا من الضروري التعرف على ال syntax الخاصة بلغة البرمجة التي تستخدمها وممارستها بشكل منتظم لضمان الكتابة الصحيحة والتنفيذ السليم للشفرة. ولكن لن تقوم بحفظها بالطريقة التقليدية كما أخبرك عدنان في التعليق السابق بل مع التدريب والتطبيق العملي سيتم حفظ هذه القواعد بسهولة شديدة
  8. لا يمكنك تحديد موقع شخص بدون علمه من خلال الهاتف باستخدام JavaScript بشكل مباشر. في متصفح الويب، يتطلب الوصول إلى معلومات الموقع الحصول على إذن من المستخدم. ولكن هناك بعض ال API التي تسمح لك بفعل ذلك عن طريق ال IP للمستخدم مثال على ذلك ip-api ومع ذلك، يمكنك استخدام واجهة برمجة تطبيقات الموقع الجغرافي (Geolocation API) المدعومة في متصفحات الويب للحصول على موقع المستخدم بعد الحصول على إذنه. يمكن استخدام هذه الواجهة للحصول على إحداثيات العنوان الجغرافي الحالي للمستخدم (مثل خط الطول والعرض) باستخدام GPS أو شبكة الإنترنت. يرجى ملاحظة أن المستخدم سيتلقى طلبًا للسماح بالوصول إلى الموقع عند تشغيل الكود في المتصفح. إذا قام المستخدم بالموافقة، ستتمكن من الحصول على الموقع، وإلا فلن يتمكن الكود من الوصول إلى المعلومات الجغرافية للمستخدم.
  9. سأعطيك مسار كامل لتعلم تطوير تطبيقات الموبايل باستخدام JavaScript ولكن يجب ملاحظة أن هناك مسارات أخرى تختلف باختلاف إطار العمل الخاص بال javascript ولكن هناسنتحدث عن ال reactnative وذلك لأنه الأفضل يجب تعلم أساسيات HTML وCSS لبناء واجهات المستخدم. أعتقد أن تعلمت لغة JavaScript بعمق (variables, arrays, objects, functions, classes etc). تعلم React + Redux لبناء الواجهات وإدارة الحالة. تعلم إحدى اطر العمل مثل React Native يوجد بدائل كثيره ولكن يعتبر reactnative الأفضل يجب تعلم طلبات الشبكة باستخدام Fetch API أو Axios. يجب تعلم بعض المفاهيم مثل تخزين البيانات على الجهاز باستخدام AsyncStorage. التعامل مع الأجهزة والحساسات باستخدام Expo أو React Native APIs. التكامل مع APIs وخدمات backend مثل Firebase. التعلم المستمر لأدوات وتقنيات جديدة مثل TypeScript. هذا بشكل أساسي ما يلزم لبناء تطبيقات موبايل كاملة باستخدام JavaScript والدخول لسوق العمل.
  10. أعتقد وبشكل كبير أن سبب طباعة اسم المتغير او الثابت وليس القيمة هو أنك تقوم بكتابة اسم المتغير بين علامتي تنصيص أي أنك تستخدم console.log("variableName"); // طباعة قيمة المتغير الطريقة السابقة هي سبب المشكلة لديك حيث لا يجب طباعة المتغير مع وضع علامة تنصيص لذلك الحل الصحيح هو كما يلي var variableName = "Hello, World!"; // تعريف المتغير وتعيين قيمته console.log(variableName); // طباعة قيمة المتغير لاحظ الفرق
  11. يبدو أنك تواجه مشكلة عند محاولة رفع ملف الفيديو إلى Cloudinary. الخطأ الذي تتلقاه "Invalid image file" يشير إلى أن الملف الذي تحاول رفعه ليس ملف صورة صالح.و المشكلة ليست بالكود يجب عليك التأكد من أن نوع الملف الذي تحاول رفعه هو ملف فيديو صالح وليس ملف صورة. Cloudinary يقدم دعمًا لرفع ومعالجة ملفات الصور وملفات الفيديو، ولكن يتعين عليك تحديد نوع الملف بشكل صحيح.أو جعل تحدد النوع تلقائياً من خلال التعديل التالي بدلاً من { resource_type: "video", } نستخدم { resource_type: "auto", } تحقق من طريقة التسجيل وتحويل الفيديو في التطبيق الخاص بك، وتأكد من أن الناتج هو ملف فيديو صالح بتنسيق مدعوم مثل MP4. قد تحتاج أيضًا إلى التأكد من أن مكتبة التسجيل أو الحزمة التي تستخدمها في React.js تنشئ ملف فيديو صحيح.
  12. لا يمكن حل المشكلة بدون الإطلاع على الأكولد لأو شرح المشكلة بشكل واضح حيث يمكن للكثير من الأسباب التي تجعل من تأثير ال grid يختفي أولاً إذا كنت تستخدم CSS وليس Bootstrap، فإليك بعض الأسباب التي قد تؤدي إلى عدم عمل ال grid بشكل صحيح: تأكد من أن لديك الأنماط والقواعد الصحيحة لإنشاء نظام ال grid الخاص بك. تأكد من أنك تستخدم الخصائص الصحيحة لتحديد العرض، والارتفاع، والهوامش، والتباعد بين العناصر. من الممكن وجود أخطاء إملائية في تحديد الأصناف من ال html قد يكون هناك تعارضات بين الأنماط والقواعد التي تستخدمها وبين المكونات الأخرى في صفحتك. تحقق من عدم وجود تعارضات مع أي من الأنماط الأخرى أو الإضافات التي تستخدمها في المشروع. يمكنك استخدام أدوات تصحيح الأخطاء المدمجة في المتصفح لتحديد وتصحيح أي أخطاء في CSS الخاص بك. فحص لوحة تحكم المطورين (Developer Console) في المتصفح الخاص بك لرؤية أي رسائل أو أخطاء تتعلق بالأنماط. ثانياً إذا كنت تستخدم Bootstrap وليس CSS فقد يكون هناك عدة أسباب لذلك. يرجى التحقق من النقاط التالية لمساعدتك في حل المشكلة: تأكد من أنك تقوم بتضمين ملفات CSS و JavaScript الخاصة بـ Bootstrap بشكل صحيح في صفحتك. يجب أن تكون روابط الملفات صحيحة وتوجد في الأماكن الصحيحة في صفحة HTML الخاصة بك. تحقق من الإصدار الذي تستخدمه من Bootstrap. قد يكون هناك تغييرات في الصيغة أو الأساليب في إصدارات مختلفة، وقد يؤدي ذلك إلى عدم عمل ال grid بشكل صحيح. تأكد من أن الأكواد التي تستخدمها متوافقة مع الإصدار الذي تستخدمه. تأكد من أنك تستخدم العناصر الصحيحة في هيكل ال grid . يجب أن يحتوي عنصر الصف (row) على العناصر الفرعية التي ترغب في تقسيمها بواسطة الأعمدة (columns). التأكد من أن العناصر الفرعية ملفوفة في عنصر الصف بشكل صحيح. تأكد من أنك تستخدم الفئات الصحيحة لتحديد الأعمدة والأنماط في الشبكة. تحقق من أن الفئات مثل container, row, col تستخدم بشكل صحيح وتوضع بالترتيب الصحيح. إذا استمرت المشكلة، يمكنك مشاركة جزء من الكود الخاص بك لأتمكن من مساعدتك بشكل أفضل
  13. أولاً بما أنك لا تميل لمجال محدد فالأفضل هو أخذ فكرة بسيطة عن المجالات البرمجية المتاحة حيث أن من الممكن أن يعجبك مجال محدد كما أن أخذ فكرة عامة عن البرمجة يسهل من عملية تعلم البرمجة ويمكن الإطلاع عليها من هذه المقالة ثانياً يوجد حالياً عرض بأنك ستحصل على دورة مجانية عند الإشتراك بواحدة من الدورات لذلك سيكون متاح لك دورتين ونصيحتي لك تعلم دورة تطوير واجهات المستخدم دورة تطوير التطبيقات باستخدام JavaScript من الدورات السابقة ستصبح مطور full stack كما أن في الدورة الثانية يتم شرح react native الذي يمكنك من بناء تطبيقات الجوال electron.js والذي يمكنك من بناء تطبيقات سطح المكتب
  14. شرح الشيفرة خطوة بخطوة: العنصر div يحتوي على صورة: <div class="img parallaxed"> <img src="https://alyomhost.com/wp-content/themes/alyom_2023/assets/pages/homepage/hero-w602-h547.svg" alt=""> </div> تلاحظ أن العنصر div يحتوي على الكلاس "img parallaxed"، وهذا الكلاس سيتم استخدامه في الشيفرة js. يتم تحديد الحدث الذي يتم الاستماع إليه على الجسم (body) وهو حدث حركة الماوس: var b = document.getElementsByTagName("BODY")[0]; b.addEventListener("mousemove", function(event) { parallaxed(event); }); عندما يتم حدوث حركة الماوس، سيتم استدعاء الدالة parallaxed وتمريرها بيانات الحدث (event)يمكنك القراءة أكثر عن ال event . في الدالة parallaxed، يتم حساب كمية التحرك الأفقي والعمودي من خلال ( e.clientX و e.clientY) بناءً على إحداثيات الماوس وتطبيق التحول على العناصر التي لها الكلاس "parallaxed": function parallaxed(e) { var amountMovedX = (e.clientX * 0.3 / 8); var amountMovedY = (e.clientY * 0.3 / 8); var x = document.getElementsByClassName("parallaxed"); var i; for (i = 0; i < x.length; i++) { x[i].style.transform='translate(' + amountMovedX + 'px,' + amountMovedY + 'px)' } } يتم حساب كمية التحرك بناءً على إحداثيات الماوس باستخدام قيمة ثابتة وتقسم على 8. هذا يعني أن الصورة ستتحرك بنسبة 0.3 من إحداثيات الماوس بالنسبة للعرض والارتفاع. ثم يتم الحصول على جميع العناصر التي لها الكلاس "parallaxed" باستخدام `document.getElementsByClassName("parallaxed")` وتحديث خاصية التحويل (transform) لتنفيذ التحرك. أخيراً، يتم إضافة ال transition للعنصر الذي له الكلاس "parallaxed" في CSS لإضافة نعومة في التحرك: .parallaxed { -webkit-transition: all 0.1s linear; transition: all 0.1s linear; }
  15. إذا قمت بأخذ دورة CS50 في السابق، فلديك بالفعل فهم جيد لمفاهيم البرمجة مثل المتغيرات والدوال والكائنات وما إلى ذلك. كما في المسار التالي ستجد "أساسيات البرمجة" ستكون بواسطة لغة البرمجة جافاسكريبت وستتعلم بها أساسيات البرمجة بشكل مفصل لذلك أجد أنه يمكنك تجاوز مسار " تعلم سكراتش" إذا كانت لديك خلفية بسيطة عن البرمجة ولكن يجب عليك الإنتباه إلى أنه هناك بعض الأشخاص التي تجد بداية تعلم البرمجة صعبة وتواجههم الكثير من الصعوبات لذلك تعلم سكراتش يكون هو الحل الممتاز لهذه المشكلة حيث يمكنك تعلم أساسيات البرمجة بدون أو صعوبة في الفهم وبشكل سلس
  16. الخطوات التي تحدث عند الضغط على المفتاح بشكل مختصر تكون كالتالي عند الضغط على المفتاح يتم إغلاق ال switch ويتدفق التيار إلى chip في لوحة المفاتيح. كل مفتاح على لوحة المفاتيح له رمز مرتبط به يسمى رمز المسح. يعتمد الرقم على موقع المفتاح على لوحة المفاتيح. هذا مفيد عندما يتعلق الأمر بلوحات المفاتيح التي تحتوي على تخطيطات ورموز مختلفة. يتم إرسال رمز المسح هذا إلى الكمبيوتر كرقم ثنائي. يتم إرسال الرقم إلى وحدة المعالجة المركزية يتم نقل البيانات الثنائية من لوحة المفاتيح إلى الكمبيوتر الخاص بك. مسار البيانات يعتمد على كيفية اتصال لوحة المفاتيح بالكمبيوتر. إذا كانت متصلة بواسطة كابل USB، فسوف يتم إرسالها إلى منفذ USB. إذا كانت لوحة المفاتيح متصلة عبر البلوتوث، فسوف تذهب إلى مستقبل البلوتوث. تسافر البيانات بعد ذلك إلى عقل الكمبيوتر: وحدة المعالجة المركزية. يتم تفسير البيانات بواسطة نظام التشغيل تذكر، وحدة المعالجة المركزية تعمل بنظام التشغيل. نظام التشغيل يقوم بفحص الضغط على المفاتيح باستمرار. قد يبدو وكأنه لا يفعل شيئاً، ولكن يجب على نظام التشغيل أن يستجيب فوراً للضغط على المفاتيح، لذا يجب أن يكون مستعداً لذلك في كل الأوقات. يقوم نظام التشغيل بتحويل رمز المسح إلى حرف ASCII أو يونيكود استنادًا إلى المفتاح المضغوط. عادةً ما تقوم بتعيين تخطيط لوحة المفاتيح لجهاز الكمبيوتر الخاص بك في نظام التشغيل، لذا يكون نظام التشغيل هو الذي يعرف أي حرف يمثله، على سبيل المثال، رمز المسح 1 في هذه اللغة/تخطيط لوحة المفاتيح. ينشئ نظام التشغيل حدثًا يعتمد على الحرف الناتج. في عالم الحوسبة، الحدث هو إجراء مدرك ومعالج من قبل البرنامج. غالبًا ما ينبعث من الأجهزة. يجب على نظام التشغيل الآن إرسال الحدث إلى التطبيق المناسب.
  17. التوفيق بين الدورة والدراسة الجامعية يمكن أن يكون صعباً ، ولكن هناك بعض الاستراتيجيات التي يمكن أن تساعدك في إدارة الالتزامات الأكاديمية ومتابعة الدورة قم بتخطيط الوقت: قم بإنشاء جدول زمني دقيق يشمل ساعات الدراسة والمهام الأكاديمية وتوفير وقت لمتابعة الدورة. الاستفادة من الأوقات الفاصلة: استخدم الفترات الفاصلة بين المحاضرات أو بعد انتهاء اليوم الدراسي للعمل على متابعة الدورة. قد تجد أنه يمكنك الاستفادة من هذه الأوقات لإنجاز بعض المهام أو مشاهدة محتوى الدورة. حاول تخصيص وقت محدد في كل أسبوع للالتزام بالدورة. يمكنك تحديد مثلاً ثلاث ساعات في الأسبوع للتركيز على الدورة ومشاهدة المحتوى وإكمال المهام المطلوبة. تخصيص 3 ساعات من الاجازة الأسبوعية للدورة قد يكون مفيدًا، ولكن يجب عليك متابعة الدورة يومياً ولو لمدة تقل عن ساعة وهو ما يجب التركيز عليه
  18. كما أخبرك مصطفى فإن المشكلة من الصنف section.works .gallary-work .overlay .list-inline حيث أن التنسيق transform: translateX(50px); هو ما يقوم بالمشكلة حيث يتنقل العنصر لليمين مما يجعل الصنف .list-inline خارج العنصر الأب لذلك الحل هو تبديل ال transform: translateX(50px); ب padding-left: 50px; أما بالنسبة للموقع فهو ممتاز من ناحية الأداء والتصميم الجيد المتناسق والتجاوبية ولكن هناك تعديل بسيط ال navbar عند النزول للأسفل فالصنف Active يجب عليك إعطاؤه اللون اللون المستخدم في التصميم بدلاً من اللون الأزرق كما أن ال nav-links يفضل تغيير اللون من الأزرق وال navbar عند النزول لأسفل لا تضيف الصنف transparent فيحدث تداخل بين ال navbar و العناصر في الخلفية لاحظ التعديلات في الصورة التالية
  19. يمكن استخدام كل من NPM و Yarn في مشاريع تطوير JavaScript و Node.js. ومع ذلك، هناك بعض الحالات التي يمكن أن تؤثر في اختيار أداة التحكم في الحزم المناسبة. إليك بعض المعايير التي يمكن أن تساعدك في اتخاذ القرار: سرعة التنزيل: إذا كانت سرعة التنزيل تعد أمرًا مهمًا بالنسبة لك، فقد يكون Yarn الخيار الأفضل. يتميز Yarn بأداء أسرع في عملية تنزيل الحزم والمكتبات، وذلك بفضل استخدامه لآلية التخزين المؤقت والشبكة بشكل أكثر كفاءة. إدارة التبعيات: إذا كنت تعمل على مشروع كبير أو معقد يحتوي على العديد من التبعيات (dependencies)، فقد يكون Yarn الخيار الأفضل. يتمتع Yarn بقدرة أفضل على إدارة التبعيات وتحسين توافق الحزم المثبتة. الاستقرار والأداء: إذا كنت تبحث عن مستوى أعلى من الاستقرار والأداء، فقد يكون Yarn الخيار المناسب. Yarn قد يكون أكثر استقرارًا وأداءً في بعض الحالات، وخاصةً في المشاريع الكبيرة والمعقدة. التوافق مع البنية البيئية: يجب أيضًا أن تأخذ في الاعتبار التوافق مع البنية البيئية والأدوات الأخرى التي تستخدمها. إذا استخدمت بالفعل NPM بشكل واسع في مشروعك وتعمل بشكل جيد معه، فقد يكون من الأفضل الاستمرار في استخدامه بدلاً من إجراء تغييرات كبيرة. كما يوجد pnpm و هي أداة إدارة حزم JavaScript أخرى، وهي تهدف إلى حل بعض التحديات التي تواجهها NPM و Yarn. تعتبر PNPM فريدة من نوعها بسبب نهجها في توفير مساحة التخزين وإدارة التبعيات. إليك بعض النقاط التي يتميز بها PNPM: مشاركة التخزين: بدلاً من تنزيل الحزم وتخزينها بشكل منفصل لكل مشروع، يقوم PNPM بمشاركة التخزين المؤقت بين المشاريع. هذا يؤدي إلى توفير مساحة التخزين والوقت المستغرق في تنزيل الحزم. توفير مساحة القرص: PNPM يستخدم نهجًا يسمى "Hardlinking" لتوفير مساحة القرص، حيث يمكنه مشاركة نسخ مشابهة من الحزم بدلاً من تكرارها. هذا يقلل من استهلاك مساحة القرص ويوفر مزيدًا من الكفاءة. سرعة التثبيت: بفضل مشاركة التخزين واستخدام Hardlinking، يتم تسريع عملية تثبيت الحزم في PNPM. قد تكون عملية التنزيل والتحميل أسرع بشكل عام مقارنةً بـ NPM و Yarn.
  20. إليك بعض النصائح لبناء تطبيق التواصل الاجتماعي: يمكنك استخدام React Native لبناء التطبيقات على Android وiOS أو Flutter كما في التعليق السابق. للواجهة الخلفية Backend ، يمكن استخدام Node.js مع Express أو Django بلغة Python أو Laravel بـ PHP. بالنسبة لقاعدة البيانات يمكنك MongoDB أو MySQL . احرص على استخدام WebSocket بدلاً من REST API للتفاعلات الفورية مثل الدردشة والإعجابات. راجع أمن التطبيق جيدًا وقم بالتشفير الصحيح لتخزين كلمات المرور والبيانات الحساسة. استخدم خادم قواعد بيانات منفصل لتخزين البيانات وخادم تطبيقات منفصل للمنطق البرمجي للفصل بينهما. راجع أداء التطبيق باستمرار وقم بالتحسين ، مثل الكاش والتخزين المؤقت للبيانات وتحسين استجابة الخادم. لا تنسى إمكانية توسيع النظام بسهولة مستقبلاً مع زيادة عدد المستخدمين. أتمنى أن تكون هذه النقاط مفيدة كبداية
  21. نعم ليس شائع مثل الويب حيث أن الطلب على مجالات تطوير الويب عالية سواء محلياً أو عالمياً ولكن ذلك لا يعني أن مجالات تطوير الويب مثل ال frontend أو ال backend أفضل مثلاً ليس صحيحاً فمع الطلب الكبير على هذه المجالات تجد أعداد المبرمجين في هذه المجالات عالية لذلك المنافسة أعلى على عكس مجال الأمن السيبراني كما أن مجال الأمن السيبراني يحتوي على عدّة مسميات وظيفية فرعيّة مخصصة عنه، ولكل من هذه المسميات مهامها المحدّدة ومتطلباتها و مجال الأمن السيبراني هو مجال نامٍ في جميع أنحاء العالم، والطلب على خبراء الأمن السيبراني يزداد بشكل مستمر. على الرغم من أن مستوى الوعي بأمن السيبراني قد يختلف من بلد إلى آخر، إلا أنه يُعتبر مجالًا مهمًا وأساسيًا في العصر الحديث. ولكن في مصر لا يولانه إهتماما بالغا مثلما نراه عالمياً ولكن شهدت السنوات الأخيرة زيادة في الاهتمام بأمن السيبراني وتطبيقه في القطاعات المختلفة مثل الحكومة والشركات والمؤسسات التعليمية. هناك جهود متزايدة لتعزيز الوعي بأمن السيبراني وتوفير فرص عمل في هذا المجال. يجب عليك الإنتباه إلى أن التخصص في مجال الأمن السيبراني يعني دراسة جيدة للبرمجة والعديد من الأساسيات الأخرى لذلك يمكنك التخصص في الويب مثلاً بجانب مجال الأمن السيبراني لذلك نصيحتي لك قم بالتخصص في هذا المجال
  22. إليك بعض الطرق الجيدة لتتبع التغييرات والإجراءات التي يقوم بها المستخدمون في موقع لارافل: استخدم ميزة التدقيق والمراجعة (Auditing) في لارافل حيث يقوم تلقائياً بتسجيل أي تعديلات أو إضافات أو حذف في قاعدة البيانات. استخدم Laravel Telescope لتسجيل كافة طلبات الويب والأحداث والاستثناءات والأخطاء والـqueries لتتبع كل شيء. بعض المكتبات المفيدة في Laravel لتتبع التغييرات والإجراءات: Spatie Activity Log: مكتبة رائعة لتسجيل نشاط المستخدم بسهولة، تقوم بتسجيل أي إضافة أو تعديل أو حذف تلقائياً. Owen It Activity Log: مكتبة بديلة لـ Spatie وتوفر نفس الميزات تقريباً. بهذه الطرق يمكنك تتبع ومراقبة جميع التفاعلات في الموقع بسهولة.
  23. من أسباب إيقاف الحسابات يمكنكي التأكد من ذلك من خلال الصفحة الخاصة بشروط المنصة من هنا كما يمكنكي الإطلاع على الإجابات التالية للمزيد من التفاصيل
  24. حسب ما فهمت إليك مثالاً لتنفيذ ما طلبت باستخدام React: إدارة حالة الرموز في مصفوفة باستخدام useState إضافة الرمز الحالي إلى المصفوفة عند الضغط على الزر عرض الرموز في قائمة وتمرير دالة لتعيين القيمة عند النقر تعيين قيمة الإدخال عند النقر على أحد الرموز في القائمة import React, { useState } from 'react'; function App() { const [codes, setCodes] = useState([]); const [inputValue, setInputValue] = useState(''); const handleClick = (code) => { setInputValue(code); } const addCode = () => { // أضف الرمز الحالي إلى المصفوفة setCodes(prevCodes => [...prevCodes, inputValue]); } return ( <div> <input value={inputValue} onChange={(e) => setInputValue(e.target.value)} /> <button onClick={addCode}>إضافة</button> {codes.map(code => ( <li onClick={() => handleClick(code)}>{code}</li> ))} <input value={inputValue} /> </div> ); } export default App;
  25. لتحويل السلايدر ليكون جزء من الصفحة بدلاً من كامل العرض، يمكن القيام بالتالي: غيّر عرض السلايدر من w-full إلى عرض محدد مثل w-2/3: <section class="s-block home-slider s-block--hero-slider wide-placeholder"> <salla-slider class="home-slider main-slider w-2/3 mx-auto rounded-lg" > <!-- باقي الكود --> </section> أضف wrapper حول السلايدر بعرض full واجعله flex ليكون السلايدر والمحتوى الآخر جنباً لجنب: <div class="flex w-full"> <section class="s-block home-slider s-block--hero-slider wide-placeholder w-2/3"> <!-- السلايدر --> </section> <div class="w-1/3"> <!-- باقي محتوى الصفحة --> </div> </div> عدّل paddings وmargins للتحكم بالمسافات. أو أضف max-width للسلايدر لتجنب أن يصبح عريضًا جدًا. هذا مثال عام لكن يمكن تعديله وفقاً للتصميم المطلوب.
×
×
  • أضف...