DevGuide 🇵🇸
11K subscribers
2.71K photos
19 videos
127 files
3.57K links
Level up daily with insider dev hacks, smart career tips, and real talk! 🚀

⚡️ Stay connected with me: linktr.ee/AliSamir

📍 To advertise on the channel: https://telega.io/c/the_developer_guide
Download Telegram
دردشة سريعة عن الـ WebAssembly ⚡️
.
.
عمرك سألت نفسك إزاي التطبيقات التقيلة زي Photo Editor و Video Processor، أو ألعاب الويب بتشتغل داخل المتصفح بسرعة تكاد تكون زي التطبيقات اللي بنشغلها على الجهاز؟ 🤔

السر هنا في الـ WebAssembly (Wasm) - تقنية بتسمح إنك تشغل لغات زي ++C أو Rust أو Go داخل المتصفح بنفس تقريبًا كفاءة الأداء الـ native،

الفكرة بدأت لما الناس اكتشفت إن JavaScript رغم إنها قوية جدًا، بس مش معمولة في الأساس عشان تشيل برامج تقيلة أو عمليات معقدة على مستوى الأداء (زي الـ Machine Learning أو معالجة الفيديوهات).
وده عمل performance gap بين native apps و web apps.

———

📌 يعني إيه WebAssembly؟

الـ WebAssembly هو binary instruction format، يعني كود بيتنفّذ بسرعة عالية جدًا لأن المتصفح بيقرأه مباشرة شبه الـ machine code.
بس في نفس الوقت بيشتغل داخل الـ browser sandbox، يعني آمن جدًا ومش هيأثر على نظام التشغيل.

ببساطة:
هو layer جديدة بين الـ browser و الـ native code، بتخلي المتصفح يفهم كود مكتوب بلغة مش JavaScript (زي C و ++C و Rust...) بعد ما بيتحوّل لـ Wasm format.

———

⚙️ إزاي العملية دي بتحصل؟

1- المبرمج بيكتب الكود بلغة زي ++C أو Rust.
2- بعد كده بيستخدم compiler زي Emscripten أو wasm-pack عشان يحوّل الكود ده لملف wasm.
3- الملف ده بيتحط في المشروع بتاعك على الويب.
4- الـ JavaScript بقى بتقدر تستدعي الـ WebAssembly module وتشغله كأنه function عادية.

المتصفح في اللحظة دي بيترجم الـ wasm مباشرة للبروسيسور، وده اللي بيخليه أسرع بكتير جدًا من JavaScript في العمليات الحسابية أو المعالجة المعقدة.

———

💡 أهم استخدامات الـ WebAssembly:

- ألعاب الويب (Web Games) اللي محتاجة performance عالي جدًا.
- تطبيقات AI و Machine Learning بتشتغل على المتصفح.
- الـ Web-based editors زي Figma أو Canva أو Photoshop Web Edition.
- مكتبات جاهزة مكتوبة بلغة تانية وعايز تستخدمها في مشروع JavaScript.
- أي حاجة فيها heavy computation أو math operations تقيلة.

يعني ببساطة، WebAssembly فتح الباب إن الويب يبقى platform أقوى بكتير من مجرد صفحات HTML و CSS و JS.

———

⚠️ هل هو بديل لـ JavaScript؟

لا، هما بيكملوا بعض.

الـ WebAssembly مش معمول عشان يستبدل JavaScript، لكنه معمول عشان يساعدها في المهام اللي محتاجة performance عالي جدًا.
يعني ممكن تسيب الجزء الـ UI و الـ DOM لـ JavaScript، وتسيب الـ logic التقيل لـ WebAssembly.

———

📍 أمثلة بسيطة من الواقع:

- Canva
- Photopea
- Google Earth
- AutoCAD Web
- Flixier
- Zoom

وده بيوضح قد إيه Wasm فعلًا بيغيّر شكل التطبيقات اللي ممكن تتعمل على الويب.

———

وفقكم الله لكل خير 🌿
9
مفهوم الـ Infrastructure as Code (IaC) 💯
.
.
تعال ندردش شوية عن مفهوم مهم جدًا في عالم الـ DevOps، وهو Infrastructure as Code (IaC)، أو بمعنى آخر "البنية التحتية كـ كود".

الفكرة دي يمكن تكون غريبة شوية في البداية، لكن خليني أوضحلك إزاي الموضوع ده بيغير شكل إدارة البنية التحتية في المشاريع التقنية.

———

📌 إيه فكرة الـ IaC؟


زمان لما كنا بنشتغل على السيرفرات أو الكلاود، كان لازم نقعد نجهز كل حاجة يدوي: نثبت أنظمة التشغيل، نظبط الإعدادات، نحدد ال permissions، وده طبعًا بياخد وقت طويل جدًا.

لكن مع Infrastructure as Code الموضوع مختلف، لأننا بنكتب كل الإعدادات دي على شكل كود، زي ما بنكتب الكود بتاع التطبيق، يعني بتتحول عملية إعداد السيرفرات نفسها لكود نقدر نشغله في أي وقت ونطلع نفس النتيجة بدون تدخل يدوي.

———

📌 أهمية الـ IaC؟


⚡️ السرعة والدقة: بدل ما نجهز كل السيرفرات يدوي ونضيع وقت، بنكتب كود بيجهز لنا السيرفرات أو الموارد اللي عايزينها بالضبط وبالسرعة المطلوبة. وده بيخلي الشغل أسرع بكتير وبيقلل الأخطاء اللي ممكن تحصل.

⚡️ قابلية التكرار: لما نبني بيئة من الأول أو نعمل سيرفر جديد، بنقدر نستخدم نفس الكود عشان نضمن إن كله متظبط بالضبط زي السيرفرات التانية، وده مهم لو بنشتغل في شركة فيها أكتر من بيئة (زي بيئة للتطوير وبيئة للاختبار وبيئة للإنتاج).

⚡️ التحكم في النسخ والـ Versioning: بما إن الكود ده بنكتبه على شكل ملفات زي كود البرنامج، بنقدر نعمل عليه Version Control باستخدام أدوات زي Git. يعني لو حصلت مشكلة في أي وقت، بنقدر نرجع لنسخة أقدم من الكود بسهولة.

———

📌 فيه أدوات كتير بتساعدنا نكتب الـ IaC وننفذه، وأشهر الأدوات دي:


⚙️ الـ Terraform: الأداة دي بتساعدك تكتب كود يشتغل على أي منصة تقريبًا، سواء AWS أو Azure أو GCP أو غيرهم.

⚙️ الـ AWS CloudFormation: دي أداة مخصوصة لـ AWS، بتقدر تكتب بها الـ IaC بتاعك لو شغال على خدمات AWS.

⚙️ الـ Ansible و Chef و Puppet: دول أدوات بنسميها Configuration Management Tools، بتساعدنا نجهز السيرفرات ونحافظ على الإعدادات ثابتة.

———

📌 مثال بسيط على الـ Terraform


لو عندك مشروع شغال على AWS وعايز تبني فيه بيئة مكونة من EC2 Instance و S3 Bucket، ممكن تكتب كود بسيط باستخدام Terraform وتقول له يعمل Deploy، وفي ثواني هتلاقي البيئة كلها اتبنت بنفس المواصفات اللي كتبتها.

📍 إزاي بنكتب الكود؟

الكود بيتكتب غالبًا بلغة بسيطة بتعبر عن الموارد اللي عايز تبنيها والإعدادات بتاعتها. لو عايز سيرفر، هتكتب كود يقول يعمل سيرفر بالشكل ده، وبعدين هتشغل الكود بتاعك، وهو هيجهز لك كل حاجة، حتى لو هتشتغل على أكتر من سيرفر أو Cloud Provider.

———

📌 التحديات اللي ممكن تواجهك مع الـ IaC؟


- التعلم: الـ IaC بيحتاج شوية وقت عشان تتعلم الأدوات المختلفة وتفهم إزاي تكتب كود يناسب البنية التحتية اللي عايز تبنيها.

- الاختبار والتحديث: أي تغيير في الكود ممكن يأثر على البنية كلها، علشان كده هتحتاج تختبر الكود كويس وتتأكد إنه شغال تمام قبل ما تطبقه.

- الأمان: كتابة إعدادات الأمان والـ permissions بطريقة صح في الكود بتاعك مهمة جدًا، خصوصًا لو بتشتغل على بيئة Production.

———

الـ Infrastructure as Code (IaC) بيوفر وقت ومجهود كبير وبيخلي إدارة البنية التحتية أبسط وأدق بكتير.

ممكن تتخيلها كأنك بتبني البنية التحتية بنفس الطريقة اللي بتبني بيها التطبيق بتاعك، كله بالكود، كله قابل للتكرار والتحديث بسهولة.

———

وفقكم الله لكل خير 🌿
9
الـ DNS Prefetching 🔻
.
.
الموضوع ده مهم جدًا لأنه بيحسن سرعة تحميل الصفحات في المواقع وبيخلّي تجربة المستخدم أحسن بكتير...

———

📍 يعني إيه DNS Prefetching؟

ببساطة، الـ DNS Prefetching هو أسلوب بيخلي المتصفح يعمل استباق لتحويل الدومينات اللي محتمل تزورها قريب، قبل ما المستخدم يضغط على اللينك أو قبل ما اللينك يشتغل.

يعني إيه الكلام ده؟

يعني المتصفح بيحاول يعرف عنوان الـ IP الخاص بالدومين أو الموقع اللي اللينك بتاعه موجود في الصفحة عشان يكون جاهز بسرعة لو المستخدم ضغط عليه.

———

📍 ليه بنحتاج الـ DNS Prefetching؟

خليني أقولك إن كل ما يكون فيه روابط كتير في الصفحة، والمتصفح يحتاج يعرف العناوين الخاصة بها قبل ما يقدر يجيب البيانات، الموضوع بياخد وقت.

كل رابط محتاج تحويل أو DNS Lookup عشان يوصل للمكان اللي بيخزن عليه المحتوى.

التحويل ده ممكن ياخد وقت خاصة لو كان فيه أكتر من دومين مختلف. الـ DNS Prefetching بيخلي المتصفح يخلص الحكاية دي بسرعة من غير ما يستنى المستخدم، وبكده بيكون جاهز لما ييجي دور الرابط.

———

📍 إزاي الـ DNS Prefetching بيشتغل؟

⚙️ المتصفح بيعمل استباق للدومين: يعني المتصفح بيقول لنفسه "اللينك ده هيستخدم دومين مختلف؟ طيب خليني أجيب عنوان IP بتاعه من دلوقتي".

⚙️ التقليل من وقت الـ DNS Lookup: لما المستخدم يضغط على الرابط، المتصفح بالفعل عنده عنوان الـ IP الخاص بالموقع الجاي، وبالتالي مفيش وقت هيضيع في محاولة الوصول للمكان.

———

📍 إمتى نستخدم الـ DNS Prefetching؟

الـ DNS Prefetching يعتبر فكرة كويسة لو عندك موقع فيه لينكات كتير لمصادر خارجية زي مكتبات الـ JavaScript، الصور، الخطوط، أو إعلانات.

يعني لو الموقع بتاعك فيه مكتبات JavaScript مستوردة من دومينات خارجية، زي مكتبة الخطوط من جوجل أو أي حاجة من دومينات تانية، يبقى الـ DNS Prefetching فكرة ممتازة عشان السرعة تكون أعلى والمستخدم ما يلاحظ أي تأخير.

———

📍 إيه فائدة الـ DNS Prefetching للمستخدم؟

أكبر فائدة للمستخدم هي تسريع تحميل الصفحة. ده بيخلي الموقع يشتغل بشكل أسرع ومريح أكتر، خاصة لو الصفحة فيها لينكات لمحتوى خارجي أو مصادر مختلفة، وبالتالي بيقلل الانتظار اللي ممكن يواجهه المستخدم لما يضغط على رابط معين.

———

📍 إزاي نستخدمه في الكود؟

هنضيف الوسم الخاص بالـ DNS Prefetching في الـ <head> وهيكون بالشكل ده:
<link rel="dns-prefetch" href="https://example.com">

السطر ده بيخلي المتصفح يجهز عنوان الـ IP الخاص بالدومين المحدد في الوسم.

———

وفقكم الله لكل خير 🌿
4