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

لوحة المتصدرين

  1. جمال الدين صمدوف

    • نقاط

      2

    • المساهمات

      91


  2. عبد الوهاب بومعراف

    • نقاط

      1

    • المساهمات

      2386


  3. Mustafa Suleiman

    Mustafa Suleiman

    الأعضاء


    • نقاط

      1

    • المساهمات

      20354


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

    • نقاط

      1

    • المساهمات

      7272


المحتوى الأكثر حصولًا على سمعة جيدة

المحتوى الأعلى تقييمًا في 12/01/25 في كل الموقع

  1. قبل عدة أيام سئلت في ال Technical Interview لوظيفة ال Senior Full-stack Developer عن عملية ال Debugging... ببساطة سألوني ما هي الخطوات الناجحة أو على الأقل التي أخطوها عندما ألاقي أي bug في ال System... في كل من ال Front-end و ال Server أعطوني مثال: مثلا ال Request يأخذ وقت طويل من العادة... السؤال كان: ما هو الخطوات الناجحة أو ال Methodologies التي خطوتها أو على الأقل التي سمعتها في هذه الحالة؟ لم أكن جاهزا للجواب... حكيت عن ال Logging... لكن كان واضحا أن الجواب كان ضعيفا... سألوني بعدها: هل على الأقل سمعت عن ال Indexing في ال Data Base ما هو الجواب المثالي المفروض كان علي إجابتها برأيكم؟
    1 نقطة
  2. قبل فترة قابلت في ال Technical Interview في إحدى الشركات... حكيت فيه عن تجاربي العملية وأثناء الحديث تكلمت عن أنني أيضا أثناء مسيرتي في إحدى الشركات التي اشتغلت فيها كنت المبرمج الأساسي وعملت Interviews ك Interviewer للمبرمجين المبتدئين وأنها كانت مثيرة للإهتمام بالنسبة لي (لكي أظهر عنده كتنين في المجال)... سألوني مباشرة: هل لقيتم الشخص المناسب؟ قلت: كانت صعبة قليلا أن تنقي الشخص المناسب، استغرق الموضوع وقتا... سألوني سؤال مفاجئ: كيف تحدد الشخص المناسب ك Interviewer؟ تكلمت مرتبكا كلام طويل... وأخطأت فيه عندما قلت: وربما أيضا عن طريق فهمه مثلا متى نستخدم كلا من التقنيات... مثلا متى وفي أي حالة نستخدم: ال React أو Vue... حينها سألوني: ومتى أنت تستخدم React أو Vue في أي حالة؟ أدركت أنني تورطت... والآن في خاطري سؤال: ما ذا كان علي أن أجيب على سؤال: "كيف تحدد الشخص المناسب ك Interviewer؟"
    1 نقطة
  3. أولاً السبب أنهم ذكروا الـ Indexing مباشرة هو أنها واحدة من أشهر الأسباب لبطء الاستعلامات، لكن الإجابة الشاملة يجب أن تكون أوسع من ذلك. ولكن أولاً يجب أن نعرف هل المشكلة في الـ Frontend أم الـ Backend أم الـ Network أم قاعدة البيانات؟ هنا تستخدم الـ Browser DevTools لفحص الـ Network Tab ومعرفة هل الـ Request فعلاً يأخذ وقت طويل على السيرفر (انظر لـ Time to First Byte)، أم أن المشكلة في نقل البيانات، أم في معالجة الـ Response على الـ Frontend. ثانياً إذا كانت المشكلة في الـ Backend نستخدم أدوات الـ Monitoring والـ APM (Application Performance Monitoring) مثل New Relic أو DataDog أو حتى الـ Logging المنظم لتتبع مسار الـ Request داخل السيرفر. فمثلاً تبحث عن الـ Slow Query Log أولاً. هذا يظهر لك الاستعلامات التي تأخذ وقتاً أطول من المتوقع. عندما تجد استعلام بطيء، تستخدم الـ EXPLAIN أو EXPLAIN ANALYZE لفهم خطة التنفيذ. هنا بالضبط يأتي دور الـ Indexing الذي ذكروه. إذا وجدت أن الاستعلام يقوم بـ Full Table Scan على جدول كبير، فهذا مؤشر واضح أنك بحاجة لـ Index على الأعمدة المستخدمة . وهنا أيضاً احتمالات أخرى للمشكلة. ولكن إذا كانت المشكلة خارج قاعدة البيانات قد تكون المشكلة في الـ Business Logic نفسها. ربما يوجد حلقة تكرارية معقدة، أو عمليات حسابية ثقيلة، أو استدعاءات لـ APIs خارجية بطيئة. هنا يأتي دور الـ Profiling Tools التي تظهر لك أي جزء من الكود يستهلك معظم الوقت. وأخيراً يمكن أن تكون المشكلة في الـ Frontend فقد يكون الـ Request سريع لكن معالجة البيانات في الـ Frontend تأخذ وقتاً. مثلاً، رسم آلاف العناصر في الـ DOM دفعة واحدة، أو عمليات حسابية معقدة في JavaScript. هنا تستخدم الـ Performance Tab في DevTools أو React DevTools Profiler لتحديد المشكلة. ويمكن أيضاً أن تكون المشكلة في الـ Network
    1 نقطة
  4. السلام عليكم ورحمة الله، في الحقيقة جميع هذه المجالات مطلوبة جدا خاصة في سوق العمل الأوروبي وخاصة مع قوانين مثل NIS2 التي يزداد الطلب على Cybersecurity فيها، بينما AI/ML يزداد الطلب عليها خاصة بسبب نمو الشركات التقنية وأما الفرونتاند فهو جزء أساسي من ال Full Stack الذي يمكن أن يفتح لك أبواب تأشيرات الهجرة بعد التخرج مباشرة إذا بنيت مشاريع قوية. لكني أنصحك أولا بالبدء بدورة علوم الحاسوب في حال أردت الاشتراك فيها، فهي ستعطيم الأساس وستستطيع من خلالها أن تفهم أي مجال سترغب في التوسع فيه فيما بعد، وأنصحك أن تهتم بالتعلم أكثر من الوظيفة والأموال، صحيح أنّ الهدف الأساسي لأي مبرمج قد يكون ايجاد وظيفة لكن الأمور في هذا المجال الواسع لا تسير بتلك الطريقة لأنّ الكثيرين يتوقفون في بداية المسير ويستسلمون، لذا احرص على فهم الأساسيات بشكل جيد، ويجب أن تتحلى بالصبر أثناء التعلم ولا تستهن بالأمور البسيطة فهذا مجال يكون تدريجيا من ناحية التعقيد، والاستمرارية والتطبيق العملي هي أساس النجاح في هذا المجال.
    1 نقطة
  5. ذلك متاح من خلال مكتبة asyncio تماماً كما في جافاسكريبت، حيث تعتمد البرمجية الغير متزامنة في بايثون على ثلاثة أعمدة رئيسية، أولاً الـ Event Loop وهو المنسق أو المدير، لتتبع المهام وتوزيع وقت التنفيذ عليها. والـ Coroutines أو الروتينات المساعدة والتي هي الدوال التي يمكن إيقافها مؤقتًا واستئنافها لاحقًا، وفي بايثون، يتم تعريفها من خلال الكلمة المفتاحية async def وهي تعادل الدوال async في جافاسكريبت. والكلمة المفتاحية await هي الأداة التي تخبر الـ Event Loop، بأنها على وشك القيام بعملية تستغرق وقت مثل طلب للـ API أو قراءة ملف، لذا تعمل في الخلفية ويستمر البرنامج في العمل لحين أن تنتهي من عملها، وبالطبع الـ Event Loop هو ما يقوم بجدولة تلك المهام. وبيئة Node.js بالفعل Single-Threaded، لكنها تستعين بـ Worker Pool أو مجموعة عمال منفصلة مكتوبة بلغة C++ عبر مكتبة libuv لتنفيذ عمليات I/O الثقيلة، بالتالي العمل الفعلي للـ I/O يحدث خارج الـ Thread الرئيسي لجافاسكريبت. أما بايثون لديها ما يسمى بـ Global Interpreter Lock (GIL)، أي قفل وهو ما يضمن أن خيطًا واحدًا فقط يمكنه تنفيذ Python Bytecode في نفس اللحظة الزمنية، حتى لو كان لديك معالج متعدد النوى. وasyncio تعمل بالكامل داخل Single Thread، لذا الـ GIL ليس مشكلة بالنسبة لـ asyncio بما أن كل شيء يحدث في خيط واحد، فلا يوجد تنافس بين الخيوط على الـ GIL. فعندما تقوم دالة async بعمل await لعملية I/O مثل asyncio.sleep أو قراءة ملف، فمكتبة asyncio تتواصل مع نظام التشغيل من خلال آليات مثل select أو epoll لتسجيل العملية، وأثناء انتظار نظام التشغيل للرد، يتم تحرير الـ GIL، ولكن الأهم من ذلك، أن الـ Event Loop في بايثون تكون حرة لتشغيل Coroutine آخر في نفس الخيط.
    1 نقطة
×
×
  • أضف...