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

Mustafa Suleiman

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

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

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

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

    336

كل منشورات العضو Mustafa Suleiman

  1. بالضبط ذلك ما ذكرته لك آنفًا، فلا يمكن إحتراف كلاهما في تخصص الـ Full-stack ستجد أنك جيد في أحدهما عن الآخر والبعض جيد في كلاهما لكن ليس بمستوى شخص متخصص في أحدهم فقط بالطبع. لذا الـ Tall stack يقوم بتنفيذ المطلوب أي gets the job done وذلك هو المطلوب في الواقع العملي، مع أنني من أنصار دراسة الأساسيات حتى مع عدم تفضيلي للغة معينة لكنها من ضمن الأساسيات والتي من خلالها تستطيع حل المشكلات التي ستواجهك.
  2. العفو أحمد، لكي لا تشتت نفسك، عليك تحديد وجهتك بخصوص التخصص في البرمجة هل تريد أن تصبح Full-stack أم مطور Back-End فقط؟ في حال مطور واجهة خلفية فتعلمك لإطار أو مكتبة للواجهة الأمامية للقيام بمشاريع بمفردك هو كافي مع التعمق في الواجهة الخلفية بالطبع. أما لو تريد أن تصبح Full-stack فلا يمكن أن تكون محترف في كلاٌ من الواجهة الأمامية والخلفية معًا فالمجالين بهما الكثير لتتعلمه وأيضًا ستجد أنك تميل لتخصص عن تخصص أكثر، في كل الأحوال عليك إذن هنا تعلم أساسيات الواجهة الأمامية HTML, CSS, JS ونفس الأمر للواجهة الخلفية وبالأخص SQL. قد تخبرني بأنك لا تفضل CSS، إذن تستطيع تعلم المكتبات المشهورة مثل Tailwinds CSS وهي الأشهر حاليًا وستسهل عليك المهمة كثيرًا ويوجد لها الكثير من المكونات الجاهزة، لكن لن تستطيع تخصيص مشروعك بشكل كبير مثلما ستفعل لو تمكنت من CSS. أيضًا ألقي نظرة على مكتبة shadcn فستنال إعجابك.
  3. ذلك غير صحيح، علوم الحاسوب هي ما ستفيدك لتكون مبرمج متميز ومتفهم لما يقوم به وما يحدث بالخلفية وليس مستخدم للتقنية فقط كغالب المبرمجين، ومن حاله كذلك في الوقت الحالي لن يدوم طويلاً مستقبلاً. بالتالي ما تدرسه في الجامعة من آلية عمل نظام التشغيل ومفهوم الـ Concurrency به، وهياكل البيانات والخوارزميات ولغة الحاسوب أي binary وأيضًا دراسة لغة برمجة قوية مثل C++ أو جافا والتي تؤسسك برمجيًا بشكل عميق وسليم بالإضافة إلى أساسيات الـ Network وذلك ما يجعل منك مبرمج جيد يستطيع دراسة أي شيء أي مهندس برمجيات. هل يوجد من يعمل بسوق العمل دون فهم ما سبق؟ نعم يوجد وكثير ما هم، حيث يتعلم التقنيات مثل React و Next.js او لارافل المطلوبة للوظيفة وليس الأساسيات، وفي الوقت الحالي من الصعب أن يجد من يحذوا حذوهم فرصة في سوق العمل حيث يجب التأسيس بشكل جيد لأنه يتم الفلترة في مقابلات العمل. لكن هل يكفي تعلم ما يتم تدريسه بالجامعة فقط؟ بالطبع لا فستحتاج إلى تعلم المهارات المطلوبة للوظيفة وذلك يسمى بالـ Technology
  4. ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم الأسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
  5. طالما تم قبول مشروع التخرج فستتوافر شهادة إلكترونية لها رابط خاص بك على موقع أكاديمية حسوب. يمكنك طلب الشهادة الورقية أيضًا وسيتم شحنها لك، والشهادة متوفرة الكترونيا وهذا يمكّن من التحقق منها بطلب الرابط الخاص بها وهو خاص بكل شهادة طالب حيث سيكون هنالك ملف مرفوع على مخدمات الأكاديمية لتأكيد حصولك على الشهادة، لذا أرجو التحدث لمركز المساعدة وطلب الشهادة.
  6. ذلك KML (لغة ترميز Keyhole) وذلك عبارة عن تنسيق أو صيغة ملف لعرض البيانات الجغرافية ثلاثية الأبعاد في خرائط Google Earth وخرائط Google ثنائية الأبعاد وخدمات رسم الخرائط الأخرى. أي تخيل أن ملف KML هو مثل وصفة طعام لخريطة يحتوي على مجموعة من التعليمات التي تخبر برنامج الخرائط بكيفية عرض البيانات الجغرافية: خطوط الطول والعرض لنقاط، وخطوط، ومضلعات على الخريطة. صور تمثل مواقع أو أنواع مختلفة من البيانات. تنظيم البيانات في مجموعات مختلفة، مثل طبقة للمطاعم وطبقة للفنادق. معلومات نصية تظهر عند النقر فوق موقع أو رمز على الخريطة. صور ثلاثية الأبعاد: نماذج ثلاثية الأبعاد للمباني أو المعالم. في البداية ابحث في مواقع مثل ArcGIS Online أو Data.gov عن ملفات KML عامة للمنطقة واستخدم كلمات مفتاحية مثل KML واسم منطقتك أو نوع البيانات التي تبحث عنها (مثل "حدود KML للجزيرة العربية"). وستجد مواقع مثل KML library for countries, states and region borders أو اعتمد على برامج مثل Google Earth Pro أو ArcGIS لإنشاء ملف KML للمنطقة التي تريدها وارسم الحدود أو أضف النقاط.
  7. مبارك لك، ما تحتاجه الآن تحديد التخصص الذي تنوي تطوير مستواك به في الفترة القادمة هل هو الذكاء الاصطناعي أم تحليل البيانات؟ ما زال سنك صغير لذا تستطيع تعلم كلاهما لا مشكلة لكن عليك تحديد تخصص واحد ثم الإلتزام به والاستمرار في الـRoadmap الخاصة به، وبعد سنة مثلاً تستطيع تعلم تخصص آخر. وهناك أمر يجب توضيحه، لا توجد تلك الدورة التي توفر لك كل شيء، بل تضعك على بداية الطريق على أرض صلبة ثم عليك تطوير مستواك وسيتم إرشادك نحو ذلك خلال الفترة القادمة.
  8. في حال لم تكن لغتة الإنجليزية قوية أي تستطيع القراءة والاستماع والبحث والاستيعاب بشكل جيد، فعليك إذن بتعلم دورة علوم الحاسوب ودورة PHP وذلك هو المناسب في الوقت الحالي لكي تتمكن من العمل بعد الدورة على مواقع العمل الحر مثل مستقل وخمسات. أما المناسب لمجال دراستك فهو دورة علوم الحاسوب ودورة الذكاء الاصطناعي، لكن ذلك المجال بحاجة إلى دراسة مكثفة على فترة ليست بالقصيرة لذا لا تتوقع أن تجد عملاً مباشرًة، وذلك المجال لابد لك من الوصول لمستوى B2 في الإنجليزية على الأقل. بخصوص c++ ستجد على اليوتيوب الكثير من المصادر عليك بالبحث عن كورس C++
  9. حلقة LOOPNZ ستقوم بالتكرار 10 مرات (القيمة الأولية لـ CX)، وفي كل تكرار، زيادة قيمة AX بمقدار 1، بالتالي بعد انتهاء الحلقة، ستكون قيمة AX هي 12 (2 + 10).
  10. لا تشغل بالك كثيرًا بالجامعة، نعم هي مهمة لكن ليست للدرجة التي يتوقف عليها دخول سوق العمل أم لا، وذلك على عكس كلية الهندسة التي يجب الحصول على شهادتها للعمل في ذلك المجال. أما مجال البرمجة الأهم به هي مهاراتك وخبرتك حيث تستطيع دراسة المعلومات والمهارات التي يتم اكتسابها من الكلية بمفردك من خلال كورسات وتنفيذ مشاريع وبالطبع الأمر بحاجة إلى وقت وليس مجرد 6 أشهر بل الأمر يتراوح ما بين عام إلى عامين على الأقل حسب خلفيتك السابقة.
  11. لنتفقد هل يوجد إتصال سليم بقاعدة البيانات أم لا، أرجو تتنفيذ الاستعلام التالي على الـ vps: SELECT * FROM alsaadirs أيضًا تفقد إصدار MariaDB على الـ VPS وقارنه بالإصدار المحلي لديك، بالإضافة إلى إعدادات الترميز Encoding بتنفيذ التالي: SHOW CREATE TABLE alsaadirs
  12. من المفترض أنه تم تفعيل الثيم فأنتِ تستخدمين إضافة Starter Templates، فعند التوجه للصفحة التي بها القوالب تختاري القالب الذي تريدينه ثم التعديل عليه، ثم الضغط على continue ثم submit and build. حاولي تحديث الصفحة من خلال CTRL + F5، إن استمرت المشكلة جربي حذف وإعادة تثبيت الإضافة ثم المحاولة.
  13. ما ذكرته إذن صحيح، من المفترض ألا يتم تنفيذ الكود إلا في حال مطابقة العنصر الذي حددته، عليك إذن إرفاق الكود لتفقد المشكلة.
  14. بشكل high-level overview وبدون تفصيل، عليك أولاً إنشاء الـ Models: نموذج البائع Vendor : name: اسم البائع (نص). commission_rate: نسبة عمولة البائع (رقم عشري، افتراضياً 0.15 أي 15%). ونموذج المعاملة Transaction: vendor: الرابط بالبائع الذي تمت المعاملة معه (مفتاح أجنبي). amount: إجمالي قيمة الدفع (رقم عشري). payment_date: تاريخ الدفع (تاريخ ووقت). commission_amount: قيمة عمولة البائع (رقم عشري، افتراضياً 0). admin_amount: قيمة المبلغ الذي يحصل عليه المسؤول (رقم عشري، افتراضياً 0). ثم ربط تطبيق Django ببوابة دفع مثل PayPal أو Stripe وعند قيام العميل بالدفع، ستقوم بوابة الدفع بإرسال إشعار إلى تطبيقك. منطق تقسيم الدفع سيتم كالتالي، عند استلام إشعار الدفع، يتم إنشاء كائن جديد في نموذج Transaction ثم يتم حساب قيمة عمولة البائع وقيمة المبلغ الذي يحصل عليه المسؤول حسب نسبة عمولة البائع. def process_payment(payment_data): vendor = Vendor.objects.get(id=payment_data['vendor_id']) transaction = Transaction.objects.create( vendor=vendor, amount=payment_data['amount'], ) commission_amount = transaction.amount * vendor.commission_rate admin_amount = transaction.amount - commission_amount transaction.commission_amount = commission_amount transaction.admin_amount = admin_amount transaction.save() transfer_funds_to_vendor(vendor, commission_amount) transfer_funds_to_admin(admin_amount) ثم نأتي إلى تحويل الأموال، من خلال تنفيذ الدالتين transfer_funds_to_vendor و transfer_funds_to_admin لتحويل المبالغ المحسوبة إلى حسابات البائع والمسؤول على التوالي، وتستطيع القيام بذلك باستخدام واجهة برمجة تطبيقات بوابة الدفع أو خدمة خارجية، كالتالي: دفع العميل مبلغ 100 دولار للبائع بنسبة عمولة 15٪. ستقوم الدالة process_payment بإنشاء كائن Transaction بقيمة 100 دولار. ستحسب الدالة قيمة عمولة البائع: 100 * 0.15 = 15 دولار. ستحسب الدالة قيمة المبلغ الذي يحصل عليه المسؤول: 100 - 15 = 85 دولار. ستقوم الدالة بتحديث كائن Transaction بالقيم المحسوبة. ستقوم الدالة بتحويل 15 دولارًا إلى حساب البائع و 85 دولارًا إلى حساب المسؤول (المبرمج). بالطبع ذلك مثال مبسط، ويجب مراعاة تنفيذ منطق إضافي للتعامل مع الأخطاء والمبالغ المستردة والحالات الأخرى.
  15. ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم الأسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل، فحاليًا السؤال غير واضح وأسفل الدرس يتم ربط سؤالك بمحتوى الدرس والكود المشروح.
  16. 1- مسار تطبيق تعلم اللغات بتقنيات الذكاء الاصطناعي في دورة الجافا سكربت next.js react emotion/react mui openAI API 2- مسار بناء صفحات هبوط HTML CSS JS jQuery Bootstrap font-awesome 3- مسار تطوير لوحة تحكم HTML CSS JS sass fortawesome Bootstrap webpack 4- مسار تطوير موقع اخباري HTML CSS JS sass fortawesome Bootstrap prism
  17. إذن الثيم لم يتم تفعيله أو الضغط على نشر publish أي ما زال في وضع التعديل غالبًا.
  18. توجهي إلى إعدادات ووردبريس ثم اختاري themes أو المظهر وختاري الثيم الذي تريدينه وتأكدي من تفعيله بالضغط على activate. هل الثيم مفعل؟ وهل يظهر في حال تسجيل الدخول ك admin ؟
  19. بشكل مٌبسط، Polymorphism أو تعدد الأشكال عبارة عن قدرة الكائن على اتخاذ أشكال متعددة، أي يمكن لكائن من صنف معين أن يتصرف بطرق مختلفة اعتمادًا على السياق. بمعنى تخيل أن لديك صنف اسمه "حيوان" وصنفين فرعيين منه هما "قطة" و "كلب". تستطيع إنشاء متغير من نوع "حيوان" وإسناد إليه إما كائن من نوع "قطة" أو "كلب"، وعند استدعاء دالة مثل "اصدر صوتًا" على ذلك المتغير، سيتم تنفيذ الدالة الخاصة بالصنف الفرعي (قطة أو كلب) المخزن في المتغير. وبخصوص أنواع Polymorphism في C#: Static Polymorphism تعدد الأشكال الساكن: والذي يتم تحديده في وقت الترجمة Compile Time من خلال Overloading (زيادة التحميل) للـ Methods و Operators. Dynamic Polymorphism تعدد الأشكال الديناميكي: يُحدد في وقت التشغيل Runtime من خلال Overriding (التجاوز) للـ Methods باستخدام الكلمات المفتاحية virtual, override, و abstract. 2- Abstract Class الصنف المجرد هو صنف لا يمكن إنشاء كائنات منه مباشرة، ويستخدم كقالب للصفات والوظائف المشتركة بين الأصناف الفرعية. وله الخصائص التالية: يُعرّف باستخدام الكلمة المفتاحية abstract. متاح له أن يحتوي على دوال مجردة Abstract Methods ودوال غير مجردة. الدوال المجردة لا تحتوي على تنفيذ Implementation داخل الصنف المجرد، ويجب على الأصناف الفرعية التي ترث منه توفير تنفيذ لهذه الدوال. مثلاً إنشاء صنف مجرد "شكل" يحتوي على دالة مجردة "احسب المساحة"، وستقوم الأصناف الفرعية مثل "مربع" و "دائرة" بوراثة ذلك الصنف وتوفير تنفيذ خاص بها لدالة "احسب المساحة". 3- Interface الواجهة هي بمثابة عقد Contract يحدد مجموعة من الدوال التي يجب على الصنف الذي ينفذها توفيرها. ولها الخصائص التالية: تُعرّف باستخدام الكلمة المفتاحية interface. تحتوي فقط على تعريفات دوال Signatures ولا تحتوي على أي تنفيذ. متاح للصنف أن ينفذ أكثر من واجهة. مثل إنشاء واجهة "قابلة للرسم" تحتوي على دالة "ارسم"، فيمكن للعديد من الأصناف مثل "دائرة" و "مربع" و "صورة" تنفيذ هذه الواجهة وتوفير تنفيذ خاص بها لدالة "ارسم". بالتالي الواجهة الغرض منها تحديد سلوك Behavior معين يمكن للعديد من الأصناف تطبيقه، بينما الصنف المجرد هو لتوفير هيكل أساسي مشترك للأصناف الفرعية
  20. تلك عبارة عن دوال يتم تعريفها بدون اسم، أي بدلاً من تعريفها باستخدام الكلمة المفتاحية function متبوعة باسم، نقوم تعريفها باستخدام الكلمة المفتاحية function فقط، أو باستخدام صيغة arrow function. function() { console.log(" دالة عديمة الاسم!"); } والدوال عديمةالاسم لا نستطيع إعادة استخدامها مباشرًة، فليس لها اسم نستطيع من خلالها استدعائها. أيضًا لا يتم تنفيذ الرفع Hoisting لها، أي لا تستطيع استدعائها قبل تعريفها في الكود أي قبل السطر الخاص بها في الكود، فنحن لا نستطيع ذلك بدون اسم لذا لا يتم رفعها. والفائدة منها هي استخدامها كدالة IIFE أي كـ (Immediately Invoked Function Expression) وهي دوال يتم تعريفها وتنفيذها مباشرةً. (function() { console.log("أنا دالة عديمة الاسم!"); })(); لاحظ الأقواس التي حول الدالة والقوسين بعدها والتي تعني تنفيذها مباشرًة فور الوصول لتلك الدالة في الكود من قبل المترجم. بالتالي في أي موضع لا تحتاج به إعادة استخدام تلك الدالة مرة أخرى في الكود، فقم بكتابتها بدون اسم، مثل دالة IIFE. أو مثلاً كـ دوال Callback والتي تستخدم بكثرة كـ دوال يتم تمريرها كمعامل لدوال أخرى، مثل دوال معالجة الأحداث أو دوال setTimeout و setInterval. setTimeout(function() { console.log("تم تنفيذ هذه الدالة بعد ثانية واحدة"); }, 1000); أيضًا مع دوال ذات ترتيب أعلى Higher-Order Functions مثل map و filter و reduce. const numbers = [1, 2, 3, 4, 5]; const doubledNumbers = numbers.map(function(number) { return number * 2; }); وللعلم توفر جافاسكريبت صيغة مختصرة لكتابة الدوال عديمة الاسم، وهي Arrow Function. const sum = (a, b) => a + b; فلا تحتاج إلى استخدام الكلمة المفتاحية function، ولا تحتاج إلى استخدام الأقواس {} أو الكلمة المفتاحية return إن كان جسم الدالة يتكون من سطر واحد فقط، وترث قيمة this من النطاق scope المحيط بها. وعلى الرغم من أنك تستطيع استخدام المتغير sum لاستدعاء الدالة أي من خلال اسم، لكن الدالة نفسها بدون اسم، لذا الأمر قد يحيرك قليلاً لفهمه.
  21. بشكل بسيط، تخيل أن لديك مجموعة من الأوراق مكتوب عليها أرقام عشوائية، وتريد ترتيبها تصاعديًا، فدالة sort() في جافاسكريبت تساعدك على فعل ذلك مع عناصر المصفوفة. حيث تستقبل الدالة متغيرًا واحدًا اختياريًا وهو دالة مقارنة comparison function، وتلك الدالة تخبر sort() كيف تقارن بين عنصرين في المصفوفة لتحديد ترتيبهما. بخصوص الكود، elements_array اسم المصفوفة التي تريد ترتيبها. sort((a, b) => a - b): sort() هي الدالة التي تقوم بترتيب عناصر المصفوفة في جافاسكريبت. (a, b) => a - b دالة المقارنة التي تخبر sort() كيف تقارن بين عنصرين، ويحدث بها ما يلي: a و b: هما معاملان parameters يمثلان أي عنصرين يتم مقارنتهما في المصفوفة. a - b تلك هي عملية المقارنة: لو كانت نتيجة a - b سالبة، فإن a يوضع قبل b. في حال نتيجة a - b موجبة، فإن a يوضع بعد b. في حال نتيجة a - b صفر، فإن ترتيب a و b يبقى كما هو. بالتالي الكود يرتب عناصر المصفوفة elements_array تصاعديًا باستخدام دالة المقارنة (a, b) => a - b التي تقارن بين كل عنصرين في المصفوفة وتعيد قيمة سالبة أو موجبة أو صفر لتحديد ترتيبهما. Array.prototype.sort()‎
  22. يمكنك تفقد كل التقنيات التي استخدمناها في مستودع المشاريع لكل مسار، تفقد درس المدخل أو المقدمة ثم تفقد ملف package.json في المستودع
  23. في مشروع المتجر الإلكتروني استخدمنا HTML, CSS, JS وللتنسيقات استخدمنا مكتبة bootstrap و Sass. أيضًا مكتبة fortawesome وpopperjs. ولتحزيم المشروع وتجميع الملفات وتجهيزه للنشر استخدمنا webpack. بالنسبة لمشروع تطوير موقع إخباري، فاستخدمنا نفس الأمر لكن بدون webpack، وأيضًا قمنا به بإنشاء API لعرض البيانات وذلك بواسطة prism لمحاكاة وجود واجهة خلفية، حيث تستخدم ملف بيانات كقاعدة بيانات.
  24. هل لديك حسابات كثيرة مسجلة بنفس الرقم؟ إن كان كذلك فعليك استخدام رقم آخر، أو الإنتظار 24 ساعة ثم المحاولة بنفس الرقم.
×
×
  • أضف...