DevGuide (@the_developer_guide) kanali faol ishtirokchi. Hozirda hamjamiyat 10 982 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 10 921-o'rinni va Iroq mintaqasida 10 724-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 10 982 obunachiga ega bo‘ldi.
28 Avgust, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -38 ga, so‘nggi 24 soatda esa -4 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
Tasdiqlash holati: Tasdiqlanmagan
Jalb etish (ER): Auditoriya o‘rtacha 7.95% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 2.04% ini tashkil etuvchi reaksiyalarni to‘playdi.
Post qamrovi: Har bir post o‘rtacha 873 marta ko‘riladi; birinchi sutkada odatda 224 ta ko‘rish yig‘iladi.
Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 4 ta reaksiya keladi.
Tematik yo‘nalishlar: Kontent مَشرُوع, حَاجَة, بَيَان, جِدّ, طَلَب kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi: “محتوى تقني عربي عن هندسة البرمجيات
⚡️ Stay connected with me: linktr.ee/AliSamir
📍 To advertise on the channel: https://telega.io/c/the_developer_guide”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 29 Avgust, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
\n\nالمتصفح هيعمل الخطوات دي:\n\n1- يكمل قراءة الـ HTML\n2- يحمّل الـ script في الخلفية.\n3- بمجرد ما التحميل يخلص، هيوقف قراءة الـ HTML ويشغّل الـ script علطول.\n\n\n📍 تشغيل الـ script مش مرتبط بانتهاء تحميل باقي الصفحة.\n📍 لو عندك أكتر من async script، مفيش ضمان إنهم هيشتغلوا بنفس ترتيب الكتابة.\n\n———\n\n📌 ثانيًا: defer\n\nلما تستخدم defer في الـ script tag بالشكل ده:\n\n\n\nالمتصفح هيعمل الآتي:\n\n1- يكمل قراءة الـ HTML\n2- يحمّل الـ script في الخلفية (زي async).\n3- لكن مش هيشغّل الـ script غير لما الـ HTML كله يخلص تحميل بالكامل.\n\n\n📍 الـ scripts اللي بـ defer بتتنفذ بنفس ترتيب كتابتها في الـ HTML.\n📍 ده بيكون مفيد جدًا لو عندك scripts معتمدة على بعضها أو محتاجة ترتيب معين.\n\n———\n\nطيب.. أستخدم مين فين؟ 🤔\n\n✅ الـ async: لو الـ script مستقل ومش معتمد على حاجة تانية، زي script لتتبع الزوار (Analytics).\n\n✅ الـ defer: لو الـ script بيعتمد على ترتيب معين أو محتاج يستنى تحميل الصفحة بالكامل قبل التنفيذ، زي الكود الأساسي للـ application بتاعك.\n\n———\n\n📌 مثال توضيحي\n\nلو عندك كود بالشكل ده:\n\n\n\n\nممكن script2.js يشتغل قبل script1.js لأن async ملوش علاقة بالترتيب.\n\n\n📍 لكن لو استخدمت defer\n\n\n\n\nهنا script1.js دائمًا هيشتغل قبل script2.js، مهما حصل.\n\n———\n\n⚡️ خلاصة القول:\n\n- الـ async: سريع بس عشوائي.\n- الـ defer: منظم وبيشتغل بالترتيب.\n\n———\n\nوفقكم الله لكل خير 🌿","datePublished":"2025-12-23T12:18:54Z","dateModified":"2025-12-23T12:18:54Z","author":{"@type":"Organization","name":"DevGuide","url":"https://telemetr.io/uz/channels/1626339485-the_developer_guide","image":"https://img.tlmtr.io/c/1M3Xc1/6007882434009042228?ty=x"},"publisher":{"@type":"Organization","name":"DevGuide","url":"https://telemetr.io/uz/channels/1626339485-the_developer_guide","image":"https://img.tlmtr.io/c/1M3Xc1/6007882434009042228?ty=x"},"commentCount":2,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":716},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":9},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":11},{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":2}]}},{"@type":"ListItem","position":17,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/uz/channels/1626339485-the_developer_guide/posts/5928","url":"https://telemetr.io/uz/channels/1626339485-the_developer_guide/posts/5928","mainEntityOfPage":"https://telemetr.io/uz/channels/1626339485-the_developer_guide/posts/5928","headline":"دردشة سريعة عن الـ Hydration 🔻 . . عمرك فكرت إزاي React أو Next.js بيقدروا يحولوا كود الـ HTML اللي تم إنشاؤه…","articleBody":"دردشة سريعة عن الـ Hydration 🔻\n.\n.\nعمرك فكرت إزاي React أو Next.js بيقدروا يحولوا كود الـ HTML اللي تم إنشاؤه في السيرفر لموقع شغال بالكامل في المتصفح؟ 🤔\n\nالعملية دي اسمها Hydration ... تعال نعرف إزاي الموضوع بيتم...\n\n———\n\n📌 إيه هو الـ Hydration؟\n\nببساطة كده، الـ Hydration هو العملية اللي React بتعملها عشان \"تربط\" الكود اللي اتعمل على السيرفر (SSR - Server-Side Rendering) مع الكود اللي بيشتغل على المتصفح (Client-Side Rendering).\n\nيعني لما تفتح صفحة جايه من السيرفر، React مش بتبدأ من الصفر، هي بتلاقي كود HTML جاهز ومحتاج تزود عليه الـ React Components وتبدأ تتعامل معاها.\n\n———\n\n📌 ليه الـ Hydration مهم؟\n\n📍 تحسين الـ Performance:\nبما إن السيرفر بيبعت HTML جاهز، المتصفح يعرض الصفحة أسرع. المستخدم يشوف المحتوى أسرع حتى لو الـ JavaScript لسه بيحمل.\n\n📍 الـ SEO Optimization:\nعشان محركات البحث زي Google تقدر تقرأ محتوى الصفحة بسهولة، لازم الـ HTML يكون موجود وجاهز. ده بيخلي موقعك يظهر في ترتيب أعلى.\n\n📍 الـ Smooth User Interaction:\nبعد الـ Hydration، الصفحة تبقى interactive بالكامل. المستخدم يقدر يتفاعل مع الـ buttons، forms، والـ links بشكل طبيعي.\n\n———\n\n📌 إزاي الـ Hydration بيشتغل؟\n\nالعملية بتحصل كالتالي:\n\n1- السيرفر بيعمل Server-Side Rendering (SSR)، ويبعت HTML جاهز للمتصفح.\n2- لما يوصل الـ HTML، المتصفح يعرض الصفحة مباشرة.\n3- بعد ما الـ JavaScript يخلص تحميل، React بيبدأ الـ Hydration، وبيربط الكود الجاهز مع الـ DOM.\n4- من اللحظة دي، الصفحة بتتحول لـ interactive.\n\n———\n\n📌 مشاكل ممكن تواجهك مع الـ Hydration:\n\n⚡️ الـ Mismatch بين الـ HTML والـ React State:\n\nلو السيرفر بعت HTML معين والـ React حاول يرندر حاجة مختلفة، ممكن تظهر أخطاء زي Hydration failed.\n\n\n⚡️الـ Render Blocking JavaScript:\n\nلو فيه ملفات JavaScript كبيرة أو معقدة بتتأخر في التحميل، الـ Hydration هيبقى بطيء.\n\n\n⚡️ الـ Heavy Components في الـ Client:\n\nلو عندك Components معقدة جدًا، العملية هتستهلك وقت أطول.\n\n———\n\n📌 إزاي تحسن تجربة الـ Hydration؟\n\n✅ استخدم Dynamic Imports:\nفي Next.js، ممكن تستخدم ()dynamic عشان تأخر تحميل بعض الـ components غير الضرورية.\n\n✅ خلي فيه أهمية للـ Critical Content:\nاعمل رندر للمحتوى الأساسي الأول، وبعدها خلي باقي الصفحة تتفاعل.\n\n✅ تجنب الـ Client-Only Rendering لو مش ضروري:\nحاول تخلي معظم الـ Components بتشتغل مع الـ SSR، إلا لو عندك حاجة لازم تتعمل في الـ client.\n\n———\n\n📌 الفرق بين React و Next.js في الـ Hydration؟\n\nفي React، لو بتعمل Client-Side Rendering (CSR) بس، مفيش Hydration. لكن لما تستخدم ()ReactDOM.hydrate، بتبدأ العملية.\n\nأما في Next.js، الـ Hydration بيشتغل أوتوماتيك لما تستخدم ميزات زي الـ SSR أو الـ Static Site Generation (SSG).\n\n———\n\nوفقكم الله لكل خير 🌿","datePublished":"2025-12-22T15:05:37Z","dateModified":"2025-12-22T15:05:37Z","author":{"@type":"Organization","name":"DevGuide","url":"https://telemetr.io/uz/channels/1626339485-the_developer_guide","image":"https://img.tlmtr.io/c/1M3Xc1/6007882434009042228?ty=x"},"publisher":{"@type":"Organization","name":"DevGuide","url":"https://telemetr.io/uz/channels/1626339485-the_developer_guide","image":"https://img.tlmtr.io/c/1M3Xc1/6007882434009042228?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":712},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":5},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":7}]}},{"@type":"ListItem","position":18,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/uz/channels/1626339485-the_developer_guide/posts/5922","url":"https://telemetr.io/uz/channels/1626339485-the_developer_guide/posts/5922","mainEntityOfPage":"https://telemetr.io/uz/channels/1626339485-the_developer_guide/posts/5922","headline":"Cookie Masterclass 💯","articleBody":"Cookie Masterclass 💯","datePublished":"2025-12-22T08:08:58Z","dateModified":"2025-12-22T08:08:58Z","author":{"@type":"Organization","name":"DevGuide","url":"https://telemetr.io/uz/channels/1626339485-the_developer_guide","image":"https://img.tlmtr.io/c/1M3Xc1/6007882434009042228?ty=x"},"publisher":{"@type":"Organization","name":"DevGuide","url":"https://telemetr.io/uz/channels/1626339485-the_developer_guide","image":"https://img.tlmtr.io/c/1M3Xc1/6007882434009042228?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":692},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":2},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":3}]}},{"@type":"ListItem","position":19,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/uz/channels/1626339485-the_developer_guide/posts/5921","url":"https://telemetr.io/uz/channels/1626339485-the_developer_guide/posts/5921","mainEntityOfPage":"https://telemetr.io/uz/channels/1626339485-the_developer_guide/posts/5921","headline":"تعال ندردش شوية عن الـ Load Balancing 🔻 . . الـ Load Balancing حاجة مهمة جدًا بتأثر في سرعة وثبات أي تطبيق، و…","articleBody":"تعال ندردش شوية عن الـ Load Balancing 🔻\n. \n. \nالـ Load Balancing حاجة مهمة جدًا بتأثر في سرعة وثبات أي تطبيق، وخصوصًا لو التطبيق ده عليه عدد ضخم من المستخدمين.\n\nالفكرة في الـ Load Balancing إنه بيوزع ضغط الطلبات اللي بتيجي على السيرفرات عشان يخلي الأداء أحسن ويقلل أي مشاكل ممكن تحصل.\n\n———\n\n📌 إزاي الـ Load Balancing بيشتغل؟\n\nتخيل معايا أنك عندك تطبيق عليه عدد كبير من المستخدمين اللي بيدخلوا ويعملوا طلبات في نفس الوقت، زي متجر إلكتروني كبير أو موقع تواصل اجتماعي.\n\nلو التطبيق ده موجود على سيرفر واحد، هيواجه مشكلة كبيرة لو العدد زاد لأن السيرفر هيبدأ يبقى بطيء، أو ممكن يقع لو الضغط كان زيادة.\n\nالحل هنا إنك بدل ما تشغل التطبيق كله على سيرفر واحد، بتوزعه على أكتر من سيرفر، وكل سيرفر بيشيل جزء من الشغل.\n\nالـ Load Balancer بيدخل هنا وبيبقى هو اللي بيحدد الطلبات تروح لمين، بحيث مفيش سيرفر يكون عليه ضغط أكتر من التاني.\n\n———\n\n📍 أنواع الـ Load Balancing:\n\n- الـ Round Robin: الطريقة دي ببساطة بتوزع الطلبات بالتساوي على كل السيرفرات. أول طلب يروح لأول سيرفر، والتاني للتاني، وهكذا لحد ما يوصل لآخر سيرفر ويرجع تاني من الأول.\n\n- الـ Least Connections: الطريقة دي بتركز على عدد الاتصالات اللي كل سيرفر شغال عليها، بمعنى إنها بتبعت الطلب للسيرفر اللي عليه عدد أقل من الطلبات حاليًا، وده بيكون مفيد لما يكون فيه اختلاف كبير في الحمل بين الطلبات.\n\n- الـ IP Hash: هنا التوزيع بيكون بناءً على عنوان IP بتاع العميل اللي بيعمل الطلب، يعني كل عميل دايمًا هيتم توجيهه لنفس السيرفر بناءً على عنوان الـ IP بتاعه، ودي بتنفع في حالات معينة زي لما يكون فيه بيانات كاش محتاجة تتوزع.\n\n- الـ Weighted Load Balancing: في الحالة دي بنعمل أحمال مختلفة للسيرفرات بناءً على قدرتهم. يعني لو عندك سيرفر أقوى من الباقيين، تقدر تخليه ياخد حمل أكبر.\n\n———\n\n📍 ليه الـ Load Balancing مهم؟\n\nالهدف الأساسي من الـ Load Balancing هو إنه يخلي التطبيق بتاعك مستقر وسريع للمستخدمين مهما زاد عددهم.\n\nيعني بدل ما الموقع يعلق أو يقع، الطلبات هتفضل تتوزع بشكل مرن على كل السيرفرات.\n\n———\n\nوفقكم الله لكل خير 🌿","datePublished":"2025-12-21T14:12:00Z","dateModified":"2025-12-21T14:12:00Z","author":{"@type":"Organization","name":"DevGuide","url":"https://telemetr.io/uz/channels/1626339485-the_developer_guide","image":"https://img.tlmtr.io/c/1M3Xc1/6007882434009042228?ty=x"},"publisher":{"@type":"Organization","name":"DevGuide","url":"https://telemetr.io/uz/channels/1626339485-the_developer_guide","image":"https://img.tlmtr.io/c/1M3Xc1/6007882434009042228?ty=x"},"commentCount":1,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":756},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":4},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":7},{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1}]}},{"@type":"ListItem","position":20,"item":{"@type":"SocialMediaPosting","@id":"https://telemetr.io/uz/channels/1626339485-the_developer_guide/posts/5920","url":"https://telemetr.io/uz/channels/1626339485-the_developer_guide/posts/5920","mainEntityOfPage":"https://telemetr.io/uz/channels/1626339485-the_developer_guide/posts/5920","headline":"إزاي تكون مهندس برمجيات شاطر؟ . . How To Be A Good Software Engineer ——— 📌 الجزء الأول: Master the Fundamenta…","articleBody":"إزاي تكون مهندس برمجيات شاطر؟\n.\n.\nHow To Be A Good Software Engineer\n\n———\n\n📌 الجزء الأول: \n\nMaster the Fundamentals: The Bedrock of Becoming a Good Software Engineer \nhttps://dev.to/alisamir/master-the-fundamentals-the-bedrock-of-becoming-a-good-software-engineer-2823\n\n———\n\n📌 الجزء الثاني:\n\nWrite Clean, Maintainable Code: A Guide for Software Engineers \nhttps://dev.to/alisamir/write-clean-maintainable-code-a-guide-for-software-engineers-2834\n\n———\n\n📌 الجزء الثالث:\n\nMastering Testing and Continuous Learning: Steps to Become a Better Software Engineer \nhttps://dev.to/alisamir/mastering-testing-and-continuous-learning-steps-to-become-a-better-software-engineer-an1\n\n———\n\n📌 الجزء الرابع:\n\nHow to Excel in Problem-Solving and Collaboration as a Software Engineer \nhttps://dev.to/alisamir/how-to-excel-in-problem-solving-and-collaboration-as-a-software-engineer-2ih8\n\n———\n\n📌 الجزء الخامس:\n\nBecoming a Good Software Engineer: Business Alignment and Performance Optimization \nhttps://dev.to/alisamir/becoming-a-good-software-engineer-business-alignment-and-performance-optimization-3bd0\n\n———\n\n📌 الجزء السادس:\n\nHow Embracing Tools and Cultivating Soft Skills Can Make You a Better Software Engineer \nhttps://dev.to/alisamir/how-embracing-tools-and-cultivating-soft-skills-can-make-you-a-better-software-engineer-37c4\n\n———\n\n📌 الجزء السابع:\n\nBuilding a Personal Brand and Embracing Adaptability as a Software Engineer \nhttps://dev.to/alisamir/building-a-personal-brand-and-embracing-adaptability-as-a-software-engineer-5ke","datePublished":"2025-12-20T15:00:38Z","dateModified":"2025-12-20T15:00:38Z","author":{"@type":"Organization","name":"DevGuide","url":"https://telemetr.io/uz/channels/1626339485-the_developer_guide","image":"https://img.tlmtr.io/c/1M3Xc1/6007882434009042228?ty=x"},"publisher":{"@type":"Organization","name":"DevGuide","url":"https://telemetr.io/uz/channels/1626339485-the_developer_guide","image":"https://img.tlmtr.io/c/1M3Xc1/6007882434009042228?ty=x"},"commentCount":0,"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":834},{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":5},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":38}]}}]}
من ضمن المصطلحات المهمة في مجال الويب 💯
.
.
خلال رحلتك في مجال الويب أكيد مر عليك مصطلح الـ CORS، أو واجهتك مشكلة بسبب موضوع الـ CORS في المتصفح. تعال ندردش شوية...
———
ببساطة الـ CORS اختصار لـ Cross-Origin Resource Sharing
📌 في الأول كده خلينا نعرف يعني إيه Origin؟
الـ "Origin" هو الدومين (domain) أو النطاق اللي الموقع أو السيرفر بتاعك شغال عليه. بيبقى عبارة عن الـ "Protocol" (زي HTTP أو HTTPS) + اسم الدومين (زي example.com) + البورت (لو مختلف عن الـ 80 لـ HTTP أو 443 لـ HTTPS).
———
⚡️ فين المشكلة؟
لو أنت شغال على موقع معين وعاوز الموقع بتاعك يطلب بيانات أو resources (زي JSON أو ملفات) من سيرفر تاني، السيرفر التاني ده لازم يبقى من نفس الـ origin بتاعك، يعني نفس الدومين، نفس البروتوكول، ونفس البورت.
ودي حاجة اسمها Same-Origin Policy، السياسة دي معمولة أساسًا علشان تحمي المستخدمين من أي طلبات ضارة ممكن تجي من مواقع تانية غير موثوقة.
بس في بعض الحالات، أنت كـ Developer بتبقى محتاج تعمل طلبات للسيرفرات اللي مش من نفس الـ origin بتاعك، زي لما يكون عندك Frontend شغال على دومين معين وAPI أو Backend شغالين على دومين أو بورت مختلف.
———
هنا بقى ييجي دور الـ CORS 👇
الـ Cross-Origin Resource Sharing (CORS) هو الحل اللي بيسمح للمواقع إنهم يطلبوا بيانات أو ملفات من سيرفرات تانية بمختلف الـ origins بشكل آمن، بمعنى إنك تقدر تتخطى الـ Same-Origin Policy وتعمل طلبات لسيرفرات تانية طالما السيرفر ده بيقبل إنه يتعامل مع الموقع بتاعك.
———
📌 إزاي الـ CORS بتشتغل؟
لما موقعك بيطلب بيانات من سيرفر تاني مختلف عن الـ origin بتاعه، السيرفر اللي عليه الـ resource اللي أنت بتطلبها هو اللي بيقرر إذا كان الطلب ده مسموح أو لا.
السيرفر بيرد على الطلب من خلال الـ (headers) اللي بيرجعها مع الـ response.
واحد من أهم الـ headers دي هو:
Access-Control-Allow-Origin
اللي بيحدد الـ origins اللي مسموح ليها تطلب بيانات من السيرفر ده. لو الـ origin بتاع موقعك موجود في القيمة بتاعت الـ header ده، السيرفر هيسمح بتنفيذ الطلب وهيرجعلك الـ response. ولو لل، الطلب هيتمنع وهيجيلك error من نوع CORS في المتصفح.
———
📍 كمان فيه Headers تانية زي:
- الـ Access-Control-Allow-Methods: اللي بتحدد أنواع الطلبات اللي مسموح ليك تعملها (GET, POST, PUT, DELETE...).
- الـ Access-Control-Allow-Headers: اللي بتحدد الـ headers اللي مسموح ليك تبعتها في الطلبات.
- الـ Access-Control-Allow-Credentials: لو الطلب محتاج يبعت Cookies أو بيانات معينة، لازم الـ header ده يبقى موجود ومظبوط على true.
———
وفقكم الله لكل خير 🌿
سؤال انترڤيو محنك شويتين بس فكرته سهلة جدًا...
.
.
الناتج هيكون 8 .. وتعال أقولك ليه؟
خلينا نقسم السؤال إلى جزئين:
📌 الجزء الأول .. الـ Array الصغيرة، وهي دي حل السؤال، الـ comma هنا هتعمل Evaluation للـ Array وهترجع تاني رقم وهو 3، دايمًا بترجع الرقم اللي على اليمين أو الرقم الأخير.
[1, 3] => 3
📌 الجزء الثاني .. الـ Array الكبيرة، ودي Array عادية جدًا بيتعمل عليها Access من قبل القيمة اللي طلعت من الـ Array الصغيرة اللي هي 3، يعني الموضوع هيوصل وهيبقى بالشكل ده:
[2, 4, 6, 8, 10][3] => 8
لو الدنيا لسه موضحتش ممكن تقرأ أكتر عن الـComma Operator من هنا:
🔰 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_operator
🔰 https://www.javascripttutorial.net/javascript-comma-operator
1. What is Node.js?
2. Why is Node.js single-threaded?
3. What is the V8 engine?
4. What is the Event Loop?
5. Difference between Node.js and JavaScript in the browser.
6. What are global objects in Node.js?
7. What is npm?
8. What is package.json?
9. What is module.exports?
10. Difference between require and import.
11. What is callback?
12. What is asynchronous programming?
13. What is Promise?
14. Difference between Promise and callback.
15. What is async/await?
16. What is REPL?
17. What is middleware?
18. What is Express.js?
19. What is REST API?
20. How do you handle errors in Node.js?
———
🟡 𝗠𝗶𝗱-𝗟𝗲𝘃𝗲𝗹 (𝟮–𝟱 𝗬𝗲𝗮𝗿𝘀 𝗘𝘅𝗽𝗲𝗿𝗶𝗲𝗻𝗰𝗲)
21. What is non-blocking I/O?
22. How does the Event Loop work internally?
23. Difference between process.nextTick and setImmediate.
24. What are streams in Node.js?
25. Types of streams.
26. What is Buffer?
27. What is clustering?
28. How do you handle multiple requests?
29. How do you manage environment variables?
30. What is CORS?
31. How do you secure Node.js APIs?
32. What is JWT authentication?
33. How do you connect Node.js with databases?
34. Difference between SQL and NoSQL in Node.js apps.
35. What is Mongoose?
36. How do you handle file uploads?
37. What is rate limiting?
38. How do you implement pagination?
39. How do you handle logging?
40. How do you test Node.js applications?
———
🔵 𝗦𝗲𝗻𝗶𝗼𝗿 / 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁 𝗟𝗲𝘃𝗲𝗹
41. Explain Node.js architecture.
42. How do you scale Node.js applications?
43. What is horizontal vs vertical scaling?
44. How do you handle CPU-intensive tasks?
45. How do you design microservices in Node.js?
46. How do you handle inter-service communication?
47. What is message queue usage in Node.js?
48. How do you implement caching?
49. What is Redis used for?
50. How do you handle memory leaks?
51. How do you monitor Node.js applications?
52. How do you implement CI/CD for Node.js?
53. How do you secure APIs at enterprise level?
54. How do you handle API versioning?
55. How do you manage secrets?
56. What are Node.js performance bottlenecks?
57. How do you implement graceful shutdown?
58. What are common Node.js anti-patterns?
59. How do you design fault-tolerant systems?
60. When should you NOT use Node.js?
For many types of software engineers it is important to understand the fundamentals of operating systems.
———
Course Link👇🏻
https://youtu.be/yK1uBHPdp30
تعال ندردش شوية عن الـ JSDoc 💯
.
.
لو أنت شغال بـ JavaScript أو TypeScript ممكن تبقى سمعت مصطلح الـ JSDoc
خليني أقولك إن شغلك ممكن يكون جامد جدًا، لكن لو الكود بتاعك مش موثق كويس (Well Documented)، هتبقى بتعذب الشخص اللي هيشتغل عليه بعدك، وممكن حتى "أنت" نفسك تتعذب لو رجعتله بعد فترة. وهنا بقى بييجي دور JSDoc. 💡
———
📌 إيه هو الـ JSDoc؟
الـ JSDoc ببساطة هو tool أو مكتبة بتسمحلك تكتب documentation داخل الكود نفسه باستخدام comments. الفكرة إنه يخليك تشرح الكود بتاعك بشكل structured ومفهوم لأي حد يقرأه.
والأجمل إنه كمان بيساعدك لو بتشتغل بـ TypeScript أو حتى JavaScript عشان يحسن تجربة الكتابة بـ IDE زي VSCode.
———
📌 ليه تستخدم الـ JSDoc؟
✅ الـ Documentation هتكون واضحة وسهلة:
الكود بتاعك ممكن يكون معقد أو فيه لوجيك معقد شوية. باستخدام JSDoc، تقدر توضح إيه اللي الكود بيعمله، إيه الـ inputs اللي بياخدها، وإيه الـ output اللي بيرجعه.
✅ هتلاقي Autocomplete محترم:
لو بتكتب الكود في IDE زي WebStorm أو VSCode، الـ JSDoc comments بتساعدك بـ Autocomplete رهيب. يعني لو كودك معقد شوية، هيبقى سهل جدًا تعرف إيه الـ properties أو الـ methods المتاحة وأنت بتكتب.
✅ تحسين الـ Type Checking:
لو بتشتغل بـ JavaScript ومش TypeScript، الـ JSDoc ممكن يديك تقريبًا نفس الفائدة اللي TypeScript بتقدمها من ناحية الـ types (مش بنفس القوة طبعًا، بس حاجة محترمة).
✅ لو شغال في تيم، الـ documentation اللي بتكتبها بـ JSDoc بتوفر على زمايلك وقت كبير في فهم الكود، وده بيقلل الـ technical debt بشكل كبير.
———
💡 إزاي تبدأ مع الـ JSDoc؟
الموضوع بسيط جدًا هتدخل على الموقع ده وتبدأ تشوف الأجزاء اللي عاوز تعملها توثيق (Documentation) سواء كانت Function أو Object Types أو Classes
https://jsdoc.app
وده مقال لذيذ فيه شوية معلومات حلوة:
https://dev.to/alisamir/a-comprehensive-guide-to-jsdoc-3meb
———
💯 نصائح وإرشادات:
- بلاش توثق حاجات بديهية، يعني لو عندك function اسمها add، مش محتاج تكتب "دي بتجمع حاجتين" لو اسمها واضح. استخدم الـ JSDoc للحاجات اللي فعلًا محتاجة توضيح.
- خلي التعليقات (Comments) بتاعتك قصيرة ومباشرة.
———
وفقكم الله لكل خير 🌿
مسار قواعد البيانات 💯
مسار تعليمي يُمكّن المهتمين بمجال قواعد البيانات من بناء فهم راسخ لأساسيات قواعد البيانات، واكتساب مهارات SQL المتقدمة، والتعامل بكفاءة مع قواعد البيانات باستخدام MongoDB، بالإضافة إلى إدارة البيانات وتخزينها عبر Firebase بأسلوب احترافي وعملي.
———
📌 المهارات المكتسبة من المسار:
- القدرة على اختيار نوع قاعدة البيانات المناسب حسب المشروع.
- التمييز بين قواعد البيانات: Structured Data & UnStructured Data.
- مهارات التعامل مع SQL.
- مهارات التعامل مع MongoDB.
- إدارة قواعد البيانات باستخدام Firebase.
- كتابة استعلامات CRUD (Create, Read, Update, Delete).
- ربط قواعد البيانات مع تطبيقات الويب أو الموبايل.
———
📌 رابط المسار:
https://satr.tuwaiq.edu.sa/path/BDwtRrEpyD/view
سؤال فرونت إند لذيذ ممكن يقابلك في الانترڤيو 💯
.
.
📌 إيه الفرق بين الـ async والـ defer في الـ script tag؟
———
📍 تعال نفهم المشكلة الأول
لما بتستخدم <script> عشان تضيف JavaScript في الصفحة، المتصفح بيبدأ يقرأ الكود (HTML parsing)، لكن لما يوصل لـ script مش محدد له async ولا defer، هيعمل إيه؟
- هيوقف قراءة الـ HTML.
- هيحمّل الـ script بالكامل.
- بعدين يشغّل الكود.
- وبعدين يكمل قراءة الـ HTML.
ده معناه إن الصفحة هتقف شوية (render blocking) لحد ما التحميل والتشغيل يخلصوا. النتيجة؟ تجربة مستخدم أبطأ والموقع هيكون تقيل.
———
وهنا دور الـ async والـ defer علشان يحلوا المشكلة:
📌 أولًا: async
لما تستخدم async في الـ script tag بالشكل ده:
<script src="main.js" async></script>
المتصفح هيعمل الخطوات دي:
1- يكمل قراءة الـ HTML
2- يحمّل الـ script في الخلفية.
3- بمجرد ما التحميل يخلص، هيوقف قراءة الـ HTML ويشغّل الـ script علطول.
📍 تشغيل الـ script مش مرتبط بانتهاء تحميل باقي الصفحة.
📍 لو عندك أكتر من async script، مفيش ضمان إنهم هيشتغلوا بنفس ترتيب الكتابة.
———
📌 ثانيًا: defer
لما تستخدم defer في الـ script tag بالشكل ده:
<script src="main.js" defer></script>
المتصفح هيعمل الآتي:
1- يكمل قراءة الـ HTML
2- يحمّل الـ script في الخلفية (زي async).
3- لكن مش هيشغّل الـ script غير لما الـ HTML كله يخلص تحميل بالكامل.
📍 الـ scripts اللي بـ defer بتتنفذ بنفس ترتيب كتابتها في الـ HTML.
📍 ده بيكون مفيد جدًا لو عندك scripts معتمدة على بعضها أو محتاجة ترتيب معين.
———
طيب.. أستخدم مين فين؟ 🤔
✅ الـ async: لو الـ script مستقل ومش معتمد على حاجة تانية، زي script لتتبع الزوار (Analytics).
✅ الـ defer: لو الـ script بيعتمد على ترتيب معين أو محتاج يستنى تحميل الصفحة بالكامل قبل التنفيذ، زي الكود الأساسي للـ application بتاعك.
———
📌 مثال توضيحي
لو عندك كود بالشكل ده:
هنا script1.js دائمًا هيشتغل قبل script2.js، مهما حصل.
———
⚡️ خلاصة القول:
- الـ async: سريع بس عشوائي.
- الـ defer: منظم وبيشتغل بالترتيب.
———
وفقكم الله لكل خير 🌿
دردشة سريعة عن الـ Hydration 🔻
.
.
عمرك فكرت إزاي React أو Next.js بيقدروا يحولوا كود الـ HTML اللي تم إنشاؤه في السيرفر لموقع شغال بالكامل في المتصفح؟ 🤔
العملية دي اسمها Hydration ... تعال نعرف إزاي الموضوع بيتم...
———
📌 إيه هو الـ Hydration؟
ببساطة كده، الـ Hydration هو العملية اللي React بتعملها عشان "تربط" الكود اللي اتعمل على السيرفر (SSR - Server-Side Rendering) مع الكود اللي بيشتغل على المتصفح (Client-Side Rendering).
يعني لما تفتح صفحة جايه من السيرفر، React مش بتبدأ من الصفر، هي بتلاقي كود HTML جاهز ومحتاج تزود عليه الـ React Components وتبدأ تتعامل معاها.
———
📌 ليه الـ Hydration مهم؟
📍 تحسين الـ Performance:
بما إن السيرفر بيبعت HTML جاهز، المتصفح يعرض الصفحة أسرع. المستخدم يشوف المحتوى أسرع حتى لو الـ JavaScript لسه بيحمل.
📍 الـ SEO Optimization:
عشان محركات البحث زي Google تقدر تقرأ محتوى الصفحة بسهولة، لازم الـ HTML يكون موجود وجاهز. ده بيخلي موقعك يظهر في ترتيب أعلى.
📍 الـ Smooth User Interaction:
بعد الـ Hydration، الصفحة تبقى interactive بالكامل. المستخدم يقدر يتفاعل مع الـ buttons، forms، والـ links بشكل طبيعي.
———
📌 إزاي الـ Hydration بيشتغل؟
العملية بتحصل كالتالي:
1- السيرفر بيعمل Server-Side Rendering (SSR)، ويبعت HTML جاهز للمتصفح.
2- لما يوصل الـ HTML، المتصفح يعرض الصفحة مباشرة.
3- بعد ما الـ JavaScript يخلص تحميل، React بيبدأ الـ Hydration، وبيربط الكود الجاهز مع الـ DOM.
4- من اللحظة دي، الصفحة بتتحول لـ interactive.
———
📌 مشاكل ممكن تواجهك مع الـ Hydration:
⚡️ الـ Mismatch بين الـ HTML والـ React State:
لو السيرفر بعت HTML معين والـ React حاول يرندر حاجة مختلفة، ممكن تظهر أخطاء زي Hydration failed.
⚡️الـ Render Blocking JavaScript:
لو فيه ملفات JavaScript كبيرة أو معقدة بتتأخر في التحميل، الـ Hydration هيبقى بطيء.
⚡️ الـ Heavy Components في الـ Client:
لو عندك Components معقدة جدًا، العملية هتستهلك وقت أطول.
———
📌 إزاي تحسن تجربة الـ Hydration؟
✅ استخدم Dynamic Imports:
في Next.js، ممكن تستخدم ()dynamic عشان تأخر تحميل بعض الـ components غير الضرورية.
✅ خلي فيه أهمية للـ Critical Content:
اعمل رندر للمحتوى الأساسي الأول، وبعدها خلي باقي الصفحة تتفاعل.
✅ تجنب الـ Client-Only Rendering لو مش ضروري:
حاول تخلي معظم الـ Components بتشتغل مع الـ SSR، إلا لو عندك حاجة لازم تتعمل في الـ client.
———
📌 الفرق بين React و Next.js في الـ Hydration؟
في React، لو بتعمل Client-Side Rendering (CSR) بس، مفيش Hydration. لكن لما تستخدم ()ReactDOM.hydrate، بتبدأ العملية.
أما في Next.js، الـ Hydration بيشتغل أوتوماتيك لما تستخدم ميزات زي الـ SSR أو الـ Static Site Generation (SSG).
———
وفقكم الله لكل خير 🌿
تعال ندردش شوية عن الـ Load Balancing 🔻
.
.
الـ Load Balancing حاجة مهمة جدًا بتأثر في سرعة وثبات أي تطبيق، وخصوصًا لو التطبيق ده عليه عدد ضخم من المستخدمين.
الفكرة في الـ Load Balancing إنه بيوزع ضغط الطلبات اللي بتيجي على السيرفرات عشان يخلي الأداء أحسن ويقلل أي مشاكل ممكن تحصل.
———
📌 إزاي الـ Load Balancing بيشتغل؟
تخيل معايا أنك عندك تطبيق عليه عدد كبير من المستخدمين اللي بيدخلوا ويعملوا طلبات في نفس الوقت، زي متجر إلكتروني كبير أو موقع تواصل اجتماعي.
لو التطبيق ده موجود على سيرفر واحد، هيواجه مشكلة كبيرة لو العدد زاد لأن السيرفر هيبدأ يبقى بطيء، أو ممكن يقع لو الضغط كان زيادة.
الحل هنا إنك بدل ما تشغل التطبيق كله على سيرفر واحد، بتوزعه على أكتر من سيرفر، وكل سيرفر بيشيل جزء من الشغل.
الـ Load Balancer بيدخل هنا وبيبقى هو اللي بيحدد الطلبات تروح لمين، بحيث مفيش سيرفر يكون عليه ضغط أكتر من التاني.
———
📍 أنواع الـ Load Balancing:
- الـ Round Robin: الطريقة دي ببساطة بتوزع الطلبات بالتساوي على كل السيرفرات. أول طلب يروح لأول سيرفر، والتاني للتاني، وهكذا لحد ما يوصل لآخر سيرفر ويرجع تاني من الأول.
- الـ Least Connections: الطريقة دي بتركز على عدد الاتصالات اللي كل سيرفر شغال عليها، بمعنى إنها بتبعت الطلب للسيرفر اللي عليه عدد أقل من الطلبات حاليًا، وده بيكون مفيد لما يكون فيه اختلاف كبير في الحمل بين الطلبات.
- الـ IP Hash: هنا التوزيع بيكون بناءً على عنوان IP بتاع العميل اللي بيعمل الطلب، يعني كل عميل دايمًا هيتم توجيهه لنفس السيرفر بناءً على عنوان الـ IP بتاعه، ودي بتنفع في حالات معينة زي لما يكون فيه بيانات كاش محتاجة تتوزع.
- الـ Weighted Load Balancing: في الحالة دي بنعمل أحمال مختلفة للسيرفرات بناءً على قدرتهم. يعني لو عندك سيرفر أقوى من الباقيين، تقدر تخليه ياخد حمل أكبر.
———
📍 ليه الـ Load Balancing مهم؟
الهدف الأساسي من الـ Load Balancing هو إنه يخلي التطبيق بتاعك مستقر وسريع للمستخدمين مهما زاد عددهم.
يعني بدل ما الموقع يعلق أو يقع، الطلبات هتفضل تتوزع بشكل مرن على كل السيرفرات.
———
وفقكم الله لكل خير 🌿