DevGuide 🇵🇸
11.1K subscribers
2.79K photos
19 videos
129 files
3.58K 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
Partial Prerendering in Next.js 15
3
مفهوم الـ KISS (Keep It Simple, Stupid) 💯

.
.
مفهوم الـ KISS (Keep It Simple, Stupid) ببساطة يعني "خلي شغلك بسيط قدر الإمكان"، وده مش معناه إنك تتنازل عن الجودة أو الكفاءة، لكن يعني إنك تبعد عن التعقيد اللي ملوش لازمة.

في عالم البرمجة، لو عرفت تبسط الكود وتخليه سهل للفهم، ده هيخليك تقدر تدير الشغل بشكل أسهل وأسرع، وهيساعدك تقلل الأخطاء.

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


KISS (Keep It Simple, Stupid): The Art of Simplicity in Software Development 💯

https://dev.to/alisamir/kiss-keep-it-simple-stupid-the-art-of-simplicity-in-software-development-124l

———

وفقكم الله لكل خير 🌿
5
أداة NotebookLM 💡
.
.
من ضمن الأدوات اللي بقيت معتمد عليها بشكل كبير الفترة الأخيرة خصوصًا في قراءة الكتب وتحديدًا كتب البرمجة، هي NotebookLM.
بصراحة… الأداة فرقت معايا في طريقة مذاكرتي وفهمي للمواد التقنية بشكل رهيب جدًا.

———

أول حاجة، بقت بتوفر عليّ وقت كبير جدًا. بدل ما أقعد أقرأ كتاب 300 صفحة أو أكتر وأدوّر على كل جملة عايز أفهمها أو أرجع لها، بقيت برفع الكتاب على NotebookLM وهي بتلخص لي أهم الأفكار، وتديّني إجابات سريعة لأي سؤال يخطر في بالي.

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

———

كمان الأداة بتربطلك الأفكار ببعض، يعني لو بتذاكر كتاب Backend ومحتوى Frontend في نفس الوقت، تقدر تسأل سؤال يقارن بين فكرة هنا وفكرة هناك… والأداة بتفهم السياقين وتجمعلك إجابة مترتبة ومفهومة.

———

هل ده خلاني أستغنى عن القراءة العادية؟

طبعًا لا...
ولكن القراءة بقت أذكى وأسرع وأسهل خصوصًا في الكتب الكبيرة اللي فيها رغي كتير خارج المجال. بدل ما أضيع وقت في الفصول اللي مش مهمة، الأداة بتوجّهني لأهم الأجزاء، وتخلّي تركيزي على اللي فعلًا يفيدني.

———

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

———

📌 رابط الأداة:
https://notebooklm.google
8
دردشة سريعة عن الـ Message Queueing 🔻
.
.
عمرك سألت نفسك إزاي الأنظمة الكبيرة بتتعامل مع كميات مهولة من الطلبات في نفس اللحظة من غير ما تنهار؟ 🤔
الموضوع أبسط مما تتخيل… والسر في مفهوم صغير لكنه قوي جدًا اسمه Message Queueing.

الفكرة إن بدل ما السيستم يشيل الحمل كله مرة واحدة ويبدأ يتوتر، بنرتّب الشغل في طابور منظم، وكل حاجة بتتم واحدة واحدة.

تعال نفهم ليه الـ Message Queueing من أهم الأساليب اللي بنعتمد عليها في بناء أنظمة مرنة وقابلة للتوسع.

———

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


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

فأنت كمدير، بتعمل نظام طابور (queue) قدام المطبخ. الطلبات تدخل واحد واحد على حسب أولوية كل طلب، والمطبخ يشتغل بالترتيب.

هو ده بالضبط اللي بيحصل في الـ Message Queueing. بدل ما السيستم بتاعك ينفّذ كل المهام في نفس اللحظة، بيحطها في طابور، ويسيب جزء معين من السيستم يعالجها واحدة واحدة.

———

📌 استخدامات الـ Message Queueing:


الإشعارات (Notifications):
لما تبعت إشعار لعدد كبير جدًا من المستخدمين، مش كلهم لازم يوصلهم الإشعار في نفس اللحظة. بدل ما السيستم ينهار، بنبعت الإشعارات للطابور، وكل إشعار يتبعت في دوره.


طلبات الدفع (Payment Processing):
لما يجي طلب دفع، بتحطه في الطابور علشان يتحقق منه ويتنفّذ بشكل آمن بدون ما يحصل تضارب.


تحليل البيانات (Data Processing):
سيستم زي Google Analytics مثلًا، بيحتاج يتعامل مع مليارات الطلبات. الطابور هنا بيخلّي كل طلب ياخد دوره في التحليل.

———

📌 إيه مميزات الـ Message Queue؟


- المرونة (Scalability):
لو الطابور طويل، نقدر نزود عدد "الطباخين" بسهولة (workers) علشان يخلصوا الشغل أسرع.

- الثبات (Reliability):
حتى لو حصل مشكلة في جزء معين من السيستم، الطابور بيضمن إن البيانات متسجلة ومفيش حاجة هتضيع.

- الفصل بين الأجزاء (Decoupling):
كل جزء من السيستم بيشتغل لوحده. اللي بيبعت الرسائل مش محتاج يعرف التفاصيل بتاعة اللي بيعالجها، والعكس.

———

📌 أمثلة على الـ Message Queue Tools:


- الـ RabbitMQ: أداة قوية وسهلة الاستخدام.
- الـ Apache Kafka: مثالية للتعامل مع البيانات الكتيرة اللي بتيجي في وقت واحد.
- الـ Amazon SQS: خدمة بسيطة وسحابية من AWS.
- الـ Redis: مناسب لو بتدور على حاجة خفيفة وسريعة.

———

وفقكم الله لكل خير 🌿
7
Top 20 System Design Concepts You Should Know ⭐️
6
كلام خفيف عن الـ SOLID Principles 💯
.
.
ليه بعض المشاريع البرمجية بتفضل ثابتة وقوية مهما زاد حجمها وتعقيدها، بينما مشاريع تانية أول ما تكبر شوية بتنهار وكل شوية يحصل فيها مشاكل والدنيا بتبقى مدعكة؟ 🤔

الحقيقة السر مش بس في الكود، لكن كمان في طريقة التفكير وكتابة وتنظيم الكود.

وهنا ييجي دور مبادئ الـ SOLID اللي تعتبر زي خريطة طريق لأي مهندس برمجيات عايز يكتب كود نظيف، قابل للتطوير، وسهل الصيانة.

كلمة SOLID اختصار لـ 5 مبادئ أساسية في البرمجة كائنية التوجه (Object-Oriented Programming)، وكل مبدأ فيهم له دور كبير في تحسين جودة الكود.

تعال نفهم كل مبدأ بشكل مبسط:

———

📌 الـ Single Responsibility Principle (SRP) - المسؤولية الواحدة


ده معناه ببساطة إن كل كائن (class) في الكود بتاعك لازم يكون عنده وظيفة واحدة بس، وما يعمل أكتر من حاجة.

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

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

———

📌 الـ Open/Closed Principle (OCP) - مفتوح للتوسع ومغلق للتعديل


المبدأ ده بيقولك خلي الكود بتاعك جاهز للتطوير أو إضافة مميزات جديدة من غير ما تعدّل في الكود الأساسي.

علشان ما تكسر حاجات شغالة بالفعل وتبقى الميزة الجديدة زي طبقة إضافية فوق النظام القديم.

📍 مثال عملي: زي إنك تبني بيت وتسيب أماكن للتوسعات، بدل ما تضطر تهد الحيطان كل ما تحتاج تضيف أوضة جديدة.

———

📌 الـ Liskov Substitution Principle (LSP) - استبدال الأنواع الفرعية بالأساسية


لو عندك (Parent Class) و (Child Class)، الـ child class لازم يقدر يحل محل الأساسي من غير ما يحصل أي مشاكل في الكود.

علشان تضمن إن الكود بتاعك يشتغل بشكل متماسك وسلس حتى لو استخدمت كائنات مختلفة.

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

———

📌 الـ Interface Segregation Principle (ISP) - تقسيم الواجهات


المبدأ ده بيقول: مينفعش تجبر الـ classes إنها تستخدم حاجات مش محتاجاها. لو فيه واجهة (Interface) كبيرة ومعقدة، قسمها لواجهات صغيرة خاصة بوظائف محددة.

علشان ما تخلي الكود مليان حاجات مش ضرورية أو ملهاش علاقة بااـ class.

📍 مثال عملي: زي إنك تطلب اشتراك في صالة جيم علشان تتمرن، مينفعش تلاقي نفسك مجبر إنك تدفع رسوم لحاجات زي الساونا وحمام السباحة وأنت أصلًا عايز تتمرن بس!

———

📌 الـ Dependency Inversion Principle (DIP) - عكس التبعية


هنا المبدأ بيقول إنك لازم تخلي الكود بتاعك يعتمد على واجهات مجردة (Abstractions) بدل ما يعتمد على تفاصيل محددة (Implementations).

علشان التعديلات تبقى أسهل وماتربط الكود بتفاصيل صغيرة ممكن تتغير في أي وقت.

📍 مثال عملي: زي إنك تستخدم شاحن USB عام بدل ما تعتمد على شاحن نوع معين، لأن أي شاحن تاني ممكن يشتغل على نفس الجهاز.

———

⚡️ ليه مبادئ الـ SOLID مهمة؟

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

———

وفقكم الله لكل خير 🌿
7
Event Emitters in JavaScript 💯

Event emitters decouple components, enabling scalable, event-driven architectures.


———

📌 Ideal For:

- UI interactions (clicks, form submissions)
- APIs/HTTP servers (request/response handling)
- Real-time apps (chat, notifications)
- Modular systems (plugins, micro-services)
5
As a React.js developer,

Please learn:

1. Advanced State Management
- Redux & Redux Toolkit
- Context API
- Recoil or Zustand

2. React Performance Optimization
- Memoization (React.memo, useMemo, useCallback)
- Code Splitting
- React Profiler

3. Component Design Patterns
- Higher-Order Components (HOCs)
- Custom Hooks

4. Server-Side Rendering (SSR)
- Next.js
- Hydration

5. TypeScript with React
- Type Safety
- Advanced Types and Generics

6. Testing
- React Testing Library
- End-to-End Testing (Cypress, Playwright)
- Mocking and Stubbing

7. React Ecosystem and Tooling
- Webpack and Babel
- ESLint and Prettier

8. API Integration
- GraphQL (Apollo Client, Relay)
- SWR and React Query
- WebSockets and Real-Time Updates

9. Authentication and Authorization
- OAuth and JWT
- Role-Based Access Control (RBAC)

10. Code Architecture
- Monorepos (Nx, Lerna)
- Micro-Frontends
- Atomic Design

11. Web Performance Optimization
- Lazy Loading
- Progressive Web Apps (PWA)
- Service Workers
3