10.9K subscribers
3.2K photos
19 videos
152 files
3.71K links
Level up daily with insider dev hacks, smart career tips, and real talk! 🚀

⚡️ Stay connected with me: linktr.ee/AliSamir
Download Telegram
Software Development Life Cycle (SDLC).pdf
947.6 KB
Software Development Life Cycle (SDLC)
.
.
#software_development
❤3
أتفق 💯
❤5💯2
How SSH works?
❤2👏2
أهم 10 مهارات لمهندس DevOps في 2026

https://cloudnativebasecamp.com/feed/devops-engineer-skills-2026
.
.
#devops
❤3
The Complete Backend Developer Roadmap [2026] 🚀

https://substack.com/@arslanah/note/p-179838506
.
.
#backend
❤5
AWS Cloud Training Full Course for Beginners (Better Than Any Bootcamp)
.
.
- AWS First Principles
- Cloud Architecture Fundamentals
- Cloud Infrastructure Fundamentals
- AWS Case Studies
- Cursor & AI Agents AWS
- Cloud Security Q&A
- Jobs & Careers with Gaz
- Interviews & Career Q&A

———

📌 Course Link:
https://youtu.be/EHUCb92gUg0

———
#devops
❤3
مفهوم الـ Rate Limiting 💯
.
.
من أهم الحاجات اللي لازم ناخد بالنا منها وإحنا بنبني أي Web Application هي إننا نتحكم في حجم الـ Requests اللي بيوصل للسيرفر، وده دور الـ Rate Limiting.

تعال نبسط الفكرة ونتكلم ليه الـ Rate Limiting مهم وليه لازم نفكر فيه في المشروع بتاعنا.

———

الـ Rate Limiting معناه إننا نحدد عدد الطلبات (Requests) اللي مسموح لأي مستخدم أو خدمة إنها تعملها على السيرفر خلال فترة معينة.

يعني مثلًا، ممكن نحدد إن أقصى عدد طلبات مسموح لمستخدم إنه يبعتها هو 100 طلب في الدقيقة. لو المستخدم حاول يبعت أكتر من كده، الطلبات دي هتترفض أو يطلعله رسالة error، زي "Too Many Requests" (429).

———

📌 ليه بنحتاج الـ Rate Limiting؟

- فيه هجمات زي DDoS، الهكر بيحاول يضغط على السيرفر بعدد ضخم من الطلبات لحد ما يخليه يقف، والـ Rate Limiting بيساعد في الحد من تأثير بعض أنواع الـ traffic الزائد وإساءة الاستخدام

لكنه مش حل كامل ضد DDoS وبيحتاج أحيانًا لحلول متخصصة زي WAF أو DDoS Protection.

- كل طلب بيتبعت للسيرفر بيستهلك جزء من موارد النظام، ولو الطلبات زادت أوي النظام هيتقل، وده هيأثر على كل المستخدمين.

- لو السيرفر شغال على Cloud زي AWS أو Azure، زيادة عدد الـ Requests والـ Resources المستخدمة ممكن تؤدي لتكاليف أعلى، وبالتالي الـ Rate Limiting ممكن يساعد في التحكم في الاستهلاك والتكاليف.

———

📌 إزاي بنطبق الـ Rate Limiting؟

- الـ Fixed Window: الطريقة دي بتحدد عدد الطلبات في فترة ثابتة، مثلًا 100 طلب في الدقيقة، وأي طلب بعد العدد ده بيتعمله reject.

- الـ Sliding Window: الطريقة دي بتحدد عدد الطلبات المسموح بيها داخل نافذة زمنية متحركة، وده بيخلي التحكم أدق من الـ Fixed Window في بعض الحالات.

- الـ Token Bucket: الطريقة دي بتحط عدد معين من الـ Tokens في "دلو"، ومع كل طلب بيتعمل سحب لواحد من الـ Tokens. لو الدلو فاضي، الطلبات بتتعملها reject لحد ما الـ Tokens تتضاف تاني بمعدل محدد.

———

📌 إزاي نتعامل مع الـ Rate Limiting؟

عشان نقدر نتعامل مع مشكلة الـ Rate Limiting بدون ما نأثر على تجربة المستخدم، فيه شوية خطوات ممكن نطبقها في الكود بتاعنا تساعدنا في تحقيق التوازن:

- مراقبة وتحديد النشاط حسب الـ IP:
تحديد وتتبع عدد الطلبات اللي بيتم استقبالها من كل IP بشكل دقيق. لو لقينا الـ IP معين بيبعت طلبات كتير جدًا، بنقدر نمنعه أو نحد من نشاطه.

لكن في بعض الحالات ممكن نستخدم User ID أو API Key بدل الـ IP أو بالإضافة إليه.

- الاعتماد على Headers زي Retry-After:
الـ Header ده بيدي المستخدم مؤشر عن الوقت المناسب لإعادة المحاولة بعد ما يتجاوز الحد المسموح للطلبات، وده بيساعدنا نوفر تجربة مستخدم أفضل.

- تخزين عدد الطلبات:
ممكن نستخدم Redis عشان نخزن عدد الطلبات لكل مستخدم أو IP بشكل مؤقت ونراقب العدد ده على طول.

———

الـ Rate Limiting مهم جدًا لأي تطبيق خصوصًا لو كبير لأنه بيساعد في الحد من إساءة الاستخدام والـ traffic الزائد، ويحافظ على الأداء واستقرار الـ system، وممكن كمان يساعد في التحكم في التكاليف.

لكن مهم نفتكر إنه مش حل كامل ضد DDoS، وغالبًا بيكون جزء من مجموعة أكبر من الـ security وinfrastructure solutions.

———
#software_engineering #system_design
❤3
مفهوم الـ HTTP Caching 💯
.
.
لو مهتم بـ Web Performance، فـ الـ HTTP Caching من المفاهيم الأساسية اللي لازم تكون فاهمها، لأنه بيساعد بشكل كبير في تقليل وقت تحميل المحتوى وتقليل عدد الـ Requests على السيرفر.

تعال نشوف إيه هو الـ HTTP Caching، وإزاي بيشتغل، وإيه أهم الإعدادات اللي بنستخدمها للتحكم فيه.

———

📌 يعني إيه Caching؟

الـ Caching معناه إن الموقع بيخزن بيانات معينة في مكان قريب من المستخدم (زي المتصفح أو سيرفر معين)، عشان لما تحتاج البيانات دي تاني، يجيبها بسرعة بدل ما يطلبها من السيرفر الأساسي كل مرة.

الفكرة هنا هي إنك بتقلل الوقت اللي بيستغرقه تحميل الصفحة، وبتقلل الضغط على السيرفر كمان.

———

📌 إزاي الـ HTTP Caching بيشتغل؟

لما تفتح موقع، الطلبات اللي بتروح للسيرفر (الـ HTTP Requests) ممكن يترد عليها ببيانات بتتخزن عندك محليًا أو على مستوى معين من الشبكة.

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

———

📌 أنواع الـ HTTP Caching:

- الـ Browser Caching:

المتصفح بيخزن حاجات زي الصور، ملفات CSS، و JavaScript لفترة معينة. لما تزور الموقع تاني، المتصفح ممكن يستخدم الحاجات دي بدل ما يحملها من السيرفر من جديد.


- الـ Server-Side Caching:

ده بيكون على مستوى السيرفر نفسه، وبيخزن صفحات أو أجزاء من البيانات الجاهزة عشان يبعتها للمستخدمين بسرعة.

«ملحوظة: ده يعتبر مفهوم أوسع من الـ HTTP Caching ومش بالضرورة يكون جزءًا منه.»


- الـ CDN Caching:

الـ Content Delivery Network هو شبكة سيرفرات موزعة عالميًا. السيرفرات دي بتخزن محتوى الموقع، زي الصور والفيديوهات وملفات CSS وJavaScript وأحيانًا HTML أو API responses، عشان توصل للمستخدمين من أقرب سيرفر ليهم، وبالتالي تقلل زمن التحميل.

———

الموضوع ده مش بيشتغل لوحده، لازم نستخدم شوية إعدادات زي الـ Cache-Control Headers عشان نتحكم في إزاي البيانات تتخزن، وفترة الـ freshness بتاعتها، وإمتى البيانات دي محتاجة تتأكد من السيرفر. تعال نشوف أشهر الأنواع:

- public:
  يعني الـ response ممكن يتخزن في الـ shared caches، زي الـ CDN، بالإضافة للـ Browser Cache حسب الإعدادات.

- private:
  يعني الـ response ممكن يتخزن في private cache زي الـ Browser Cache، لكن مش مفروض يتخزن في shared caches زي الـ CDN.

- no-cache:
  مش معناها إن البيانات مش هتتخزن. معناها إن الـ cache لازم يتأكد من السيرفر إن النسخة المخزنة لسه صالحة قبل استخدامها.

- max-age:
  ده بيحدد المدة اللي الـ response يفضل فيها Fresh، وبيتم تحديدها بالثواني.

———

📌 أهمية الـ HTTP Caching:

- سرعة التحميل: المواقع بتفتح أسرع لأن المتصفح مش بيضطر يحمل كل حاجة من الأول.

- تخفيف الحمل على السيرفر: كل ما الطلبات للسيرفر تقل، السيرفر يقدر يخدم عدد أكبر من المستخدمين في نفس الوقت.

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

———

📌 إيه المشاكل اللي ممكن تقابلنا؟

- لو بيانات الموقع بتتحدث كتير، ممكن المستخدم يشوف بيانات قديمة لو الـ Cache مش معمول له إدارة كويسة.

- ضبط الـ Caching بطريقة صح بيحتاج شوية خبرة، خصوصًا لو الموقع فيه أجزاء كتير بتتحدث بشكل مستمر.
.
.
#backend #software_engineering
❤2👍1
إمتى تستخدم Module Bundler؟
.
.
تخيّل إنك شغال على مشروع JavaScript فيه عشرات الملفات، ومكتبات خارجية كتير، وكل ملف بيعتمد على ملفات تانية...

هل المتصفح هيقدر يتعامل مع كل الملفات والـ Dependencies دي بسهولة؟ وإزاي تقدر تجهّز المشروع بحيث يكون أداؤه أفضل، وحجمه أصغر، والكود متوافق مع المتصفحات المختلفة؟

هنا بيظهر دور الـ Module Bundler.

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

———

📌 إيه هو الـ Module Bundler؟


ببساطة، هو أداة بتقوم بتحليل الملفات اللي بيستخدمها مشروعك (JS, CSS, Images... إلخ)، وتتبع الـ Dependencies بينها، وبعد كده بتجهّزها في صورة ملفات أو مجموعات ملفات (Bundles / Chunks) تكون مناسبة للتشغيل على المتصفح.

مش شرط يجمع كل حاجة في ملف واحد؛ ممكن يقسم الكود لعدة ملفات حسب احتياج المشروع.

من أشهر الأدوات في المجال ده:

- Webpack
- Vite
- Parcel
- Rollup

ملحوظة: Vite هو Development Server و Build Tool، وبيستخدم أدوات Bundling أثناء عملية الـ Production Build.

———

📌 ليه تستخدم الـ Module Bundler؟


1- تحسين الأداء (Performance Optimization)

- بيعمل Minification للكود، يعني بيشيل المسافات والتعليقات غير الضرورية، وبيقلل حجم الملفات علشان تتحمّل بشكل أسرع.
- بيدعم Tree Shaking، يعني بيقدر يشيل الكود غير المستخدم من المشروع، وده بيساعد في تقليل حجم الـ Bundle.


2- تقليل عدد الـ Requests

بدل ما المتصفح يطلب عدد كبير من ملفات JavaScript و CSS بشكل منفصل، الـ Bundler ممكن يجمع الملفات المرتبطة ببعض في عدد أقل من الملفات.
وده ممكن يقلل عدد الـ Requests ويحسّن الأداء، خصوصًا في بعض السيناريوهات.


3- التعامل مع الـ Dependencies بسهولة

لو بتستخدم مكتبات زي React أو Vue، الـ Bundler بيساعدك في تحليل الـ Dependencies وتنظيمها وتجهيزها ضمن ملفات المشروع بشكل مناسب للمتصفح.


4- التوافق مع جميع المتصفحات

ممكن يتكامل مع أدوات زي Babel لتحويل الكود الحديث (Modern JavaScript) إلى كود متوافق مع متصفحات أقدم، حسب المتصفحات المستهدفة وإعدادات المشروع.


5- سهولة تقسيم الكود (Code Splitting)

ممكن تقسّم التطبيق لأجزاء منفصلة، وتحمل كل جزء وقت الحاجة ليه بدل ما تحمل كل الكود مرة واحدة.
وده بيساعد في تقليل حجم الملفات اللي بتتحمل في البداية وتحسين وقت تحميل الصفحة.


6- دعم الـ Hot Module Replacement (HMR)

مع أدوات التطوير اللي بتيجي مع بعض الـ Bundlers وأدوات الـ Build زي Vite وWebpack Dev Server، لما تعدّل الكود ممكن التغييرات تظهر في المتصفح مباشرة من غير ما تحتاج تعمل Refresh كامل للصفحة.


7- سهولة التعامل مع الملفات المختلفة

تقدر تستخدم CSS وSCSS وتضيف صور وخطوط وملفات مختلفة بسهولة عن طريق إعدادات وأدوات الـ Bundler، زي الـ Loaders في Webpack والـ Plugins في أدوات تانية.

———

📌 إمتى ممكن تستغنى عن الـ Bundler؟


لو مشروعك صغير جدًا، زي صفحة HTML بسيطة مع شوية CSS وJavaScript، ممكن تشتغل من غير Bundler، خصوصًا إن المتصفحات الحديثة بتدعم JavaScript Modules بشكل مباشر.

لكن لو المشروع كبر ودخل فيه مكتبات وDependencies وأكواد كتير، وجود Bundler أو Build Tool مناسب هيكون مفيد جدًا.

———

💡 خلاصة الكلام


استخدام Module Bundler بيساعدك في:

✅ تحسين الأداء وتقليل حجم الملفات.
✅ تنظيم الـ Dependencies وإدارة ملفات المشروع.
✅ دعم توافق الكود مع المتصفحات المختلفة.
✅ تقسيم الكود وتحميل الأجزاء عند الحاجة.
✅ تجربة تطوير أسهل وأسرع.

———
#web_development
❤2
رسالة مهمة من أمازون لكل Software Engineer في عصر AI
.
.
دور الـ Software Engineer بيتغير. مش كفاية تكون شاطر في كتابة الكود، لازم تعرف تستخدم AI بذكاء، وتفهم إمتى تعتمد عليه وإمتى تتدخل بخبرتك.

المهندس اللي هيتميز هو اللي يقدر:
- يستخدم AI و Agents لزيادة إنتاجيته.
- يراجع ويفهم الكود اللي AI بيكتبه.
- يفكر في System Design وجودة الحل.
- يفهم احتياجات البيزنس والعميل.
- يركز على النتيجة مش عدد أسطر الكود.

قيمتك كمهندس مش في كمية الكود اللي بتكتبه، لكن في المشاكل اللي بتقدر تحلها والنتائج اللي بتقدر تحققها.


📌 رابط المقال:
https://www.aboutamazon.com/news/company-news/amazon-software-engineer-role-guideline-ai
❤5
Forwarded from DevJobs
🚀 هل تبحث عن فرصة عمل حقيقية؟
وزارة الشباب والرياضة تدعوك للمشاركة في ملتقى توظيف شباب مصر 2026، أكبر تجمع للشركات وجهات التوظيف الباحثة عن الكفاءات الشابة.
✅ أكثر من 200 شركة عارضة
✅ آلاف الفرص الوظيفية في مختلف التخصصات
✅ مقابلات مباشرة مع مسؤولي التوظيف
✅ فرص للتدريب والتطوير المهني
📅 الموعد: 28 نوفمبر 2026 بمختلف المحافظات
للتسجيل للحضور
https://forms.cloud.microsoft/r/09QAmEuU8P

لا تضيع الفرصة… قد تكون وظيفتك القادمة في انتظارك!
جهّز سيرتك الذاتية، وابدأ أول خطوة نحو مستقبلك المهني.
❤2
دورة Pre-CyberSecurity
.
.
دورة مصممة لتأهيل الطلبة لدخول مجال الأمن السيبراني عن طريق دراسة أساسيات الشبكات، أساسيات نظام اللينكس، أساسيات نظام الويندوز، وأساسيات مجال الأمن السيبراني، مع رسم خطة تأسيسية للمبتدئين ومشاركتهم أحدث المصادر التعليمية.

https://netriders.academy/all-courses/pre-cybersecurity
.
.
#cybersecurity
❤1
ليه الـ AI مش دايمًا بيطلع النتيجة اللي أنت متوقعها؟
.
.
أغلبنا لما بيستخدم AI بيدخل يكتب Prompt، ويستنى الـ AI يطلعله النتيجة. يلاقي النتيجة مش زي ما كان متوقع، فيبدأ يعدل، ويكتب Prompt تاني، ويعدل تاني وتالت، وبعد شويه يكتشف إن التعديلات الجديدة بوظت حاجات كانت شغالة أصلاً...

وده غالبًا بيحصل لأننا بنبدأ نطلب من الـ AI ينفذ قبل ما نكون حددنا بشكل واضح إحنا محتاجين إيه، وإيه التفاصيل والـ Requirements اللي المفروض التنفيذ يعتمد عليها.

تعال نتكلم عن واحدة من أهم الـ Approaches اللي بتنظم طريقة تعاملنا مع الـ AI ونستفيد من قدراته بأفضل شكل ممكن في عملية تطوير البرمجيات وهي الـ Spec-Driven Development

———

الـ Spec-Driven Development هو إنك قبل ما تطلب من الـ AI يكتب أي كود، بتحددله الأول أنت عايز تبني إيه، وإيه المطلوب منه بالظبط، وإزاي المفروض السيستم يشتغل.
يعني بدل ما تبدأ بالكود، بتبدأ بالـ Specification.

بمعنى تاني: بدل ما تقول للـ AI اعملي Feature، قوله الأول الـ Feature دي المفروض تعمل إيه، وإيه قواعدها، وإيه الحالات اللي لازم تتعامل معاها.

———

📌 إيه فائدة الـ Spec-Driven Development؟

- بيقلل سوء الفهم بينك وبين الـ AI.
- بيخلي الـ AI عنده Context واضح قبل ما يبدأ يكتب كود.
- بيقلل التعديلات العشوائية والـ Rework.
- بيساعدك تحافظ على Consistency في المشروع.
- بيخلي مراجعة الكود أسهل، لأن عندك متطلبات واضحة تقدر تقارنها بالنتائج.

———

📌 مكونات الـ Spec:

مفيش شكل واحد ثابت، لكن غالبًا الـ Specification بتتكون من أجزاء أساسية:

1. Requirements
إيه المشكلة اللي بنحلها؟ وإيه الـ Features المطلوبة؟ وإيه الـ Business Rules؟

2. Design
هننفذ الحل إزاي؟ وإيه شكل الـ Architecture؟ وإزاي الـ Components هتتعامل مع بعضها؟

3. Tasks / Implementation Plan
نقسم الشغل لمهام صغيرة وواضحة، بحيث الـ AI يقدر ينفذ كل Task بشكل منظم.

4. Acceptance Criteria
إمتى نقدر نقول إن الـ Feature خلصت فعلًا؟ وإيه الشروط اللي لازم تتحقق عشان نقبل التنفيذ؟

———

📌 إزاي نطبق الكلام ده بشكل عملي؟

خلينا نفترض إننا عايزين نبني Authentication System.

بدل ما تقول للـ AI:

"Build an authentication system"

ممكن تمشي معاه بالخطوات دي:

- Understand the requirements:
وضحله إنك محتاج Registration و Login و Password Reset، وحدد الـ Business Rules.

- Write the Specification:
خليه يساعدك تكتب Spec واضحة فيها كل التفاصيل والـ Edge Cases.

- Review the Spec:
راجع الكلام بنفسك، وعدّل أي حاجة مش متوافقة مع متطلبات المشروع.

- Create an Implementation Plan:
اطلب منه يقسم التنفيذ لمهام صغيرة ومرتبة.

- Implement:
ابدأ تنفيذ كل Task بناءً على الخطة والـ Spec.

- Validate:
اختبر النتيجة وتأكد إنها حققت الـ Acceptance Criteria.

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

———

الـ Spec-Driven Development مش مثالي وزي أي Approach تاني، له مميزات وعيوب.

📌 المميزات:

- وضوح أكبر في متطلبات المشروع.
- تقليل الـ Hallucinations الناتجة عن نقص الـ Context.
- سهولة تقسيم المشاريع الكبيرة.
- تحسين جودة الـ Code والـ Maintainability.


📌 العيوب:

- محتاج وقت ومجهود في البداية لكتابة الـ Specs.
- لو الـ Spec نفسها غلط، فالـ AI ممكن ينفذ المطلوب غلط وبشكل منظم جدًا.
- التغييرات المستمرة في المتطلبات محتاجة تحديث الـ Specs باستمرار.
- مش كل Task بسيطة محتاجة كل التعقيد ده.

———

الـ AI مش مجرد أداة بتكتبلك كود أسرع، لكنه ممكن يكون شريك قوي جدًا في عملية التطوير، بشرط إنك تعرف تديره صح.

والفرق الحقيقي مش بس في الـ Prompt اللي بتكتبه، لكن في طريقة تفكيرك وتنظيمك للشغل قبل ما تبدأ التنفيذ.

وفي النهاية، افتكر إن الـ AI ممكن يساعدك تكتب الكود، لكن مسؤولية فهم المشكلة، وتحديد الحل المناسب، ومراجعة النتيجة لسه مسؤوليتك أنت.
.
.
#ai #software_engineering
❤4
Roadmap to a career as a Backend Dev.pdf
504.1 KB
Roadmap to a career as a Backend Dev 💯
.
.
#backend
❤1