DevGuide 🇵🇸
10.9K subscribers
2.62K photos
18 videos
127 files
3.55K links
Join our channel for top-notch programming hacks, epic discussions, and brilliant career moves. 🚀

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

📍 To advertise on the channel: https://telega.io/c/the_developer_guide
Download Telegram
الـ Asynchronous Programming في JavaScript 💯

لا تنسوا أهلنا في فلــسطــين وفي ســوريا وفي الســودان وفي اليــمن وفي كل دول العالم من المسلمين من الدعاء. 🤍


وأنت شغال بلغة JavaScript أكيد سمعت عن مصطلح الـ Asynchronous Programming واللي يعتبر حاجة مهمة لازم تكون فاهمها كويس.

البرمجة فيها نوعين أساسيين: Synchronous وAsynchronous، ولما نفهم الفرق بينهم، هيبقى أسهل نعرف ليه الـ Asynchronous مهم جدًا.

———

📌 الـ Synchronous Programming (التنفيذ المتسلسل):

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

———

📌 الـ Asynchronous Programming (التنفيذ غير المتسلسل):

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

———

📌 إزاي الكلام ده بيحصل في JavaScript؟

في JavaScript، عندنا طريقتين رئيسيتين للتعامل مع الـ asynchronous programming

🔻 الـ Callbacks
🔻 الـ Promises

(وطبعًا async/await اللي هو تحسين للـ Promises)

———

📌 الـ Callbacks

أول طريقة للتعامل مع الـ asynchronous programming كانت عن طريق الـ Callbacks. الفكرة ببساطة إنك بتمرر دالة معينة كـ "callback" للكود اللي بيتنفذ، ولما الكود ده يخلص، الدالة دي بتشتغل.

لكن الـ callbacks بتتحول بسرعة لكود معقد جدًا لما يكون عندك عمليات كتير وبتحتاج تكتب حاجات كتير جوة بعضها، وده اللي بنسميه Callback Hell.

———

📌 الحل: الـ Promises

هنا بيجي دور الـ Promises، اللي هي طريقة جديدة وأكثر تنظيمًا للتعامل مع العمليات الـ asynchronous. الـ Promise هو في الأساس "وعد" إن العملية هتخلص في المستقبل.

الـ Promise بيكون ليه 3 حالات:

🔻 حالة الـ Pending: يعني العملية لسه مخلصتش.
🔻 حالة الـ Fulfilled: يعني العملية نجحت وطلعت النتيجة.
🔻 حالة الـ Rejected: يعني العملية فشلت وفيه خطأ حصل.


لما العملية تخلص بنجاح، الـ Promise بيتحول لحالة "fulfilled"، ولو العملية فشلت بيتحول لحالة "rejected".

———

خلينا نشوف مثال عشان نفهم الكلام ده بشكل أوضح. هنفترض إننا عايزين نحاكي عملية استرجاع بيانات من الـ API.

const fetchData = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
const dataAvailable = true;

if (dataAvailable) {
resolve("Data retrieved successfully!");
} else {
reject("Error: Unable to retrieve data.");
}
}, 3000);
});
};

fetchData()
.then(result => console.log(result))
.catch(error => console.log(error));


في الكود ده، الفنكشن fetchData بترجع Promise. داخل الـ Promise، بنستخدم إما resolve لو العملية نجحت أو reject لو حصل خطأ.

باستخدام then، بنقدر نتعامل مع النتيجة لو العملية نجحت، ولو حصل خطأ، الـ catch بتساعدنا في التعامل معاه.

———

📌 الـ Async/Await

علشان نخلي الكود أبسط وأوضح، ظهر حاجة اسمها async/await اللي بتشتغل على الـ Promises بس بشكل مبسط جدًا وبتخلي الكود يبان كأنه synchronous.


نفس المثال اللي فوق نقدر نكتبه بطريقة async/await بالشكل ده:

const fetchData = async () => {
try {
const result = await new Promise((resolve, reject) => {
setTimeout(() => {
const dataAvailable = true;
if (dataAvailable) {
resolve("Data retrieved successfully!");
} else {
reject("Error: Unable to retrieve data.");
}
}, 3000);
});
console.log(result);
} catch (error) {
console.log(error);
}
};

fetchData();


الميزة هنا إننا استخدمنا await عشان نستنى النتيجة من الـ Promise وكأن العملية دي synchronous، لكن في الحقيقة الكود شغال بطريقة asynchronous.

وبدل ما نستخدم then و catch، استخدمنا try و catch علشان نتعامل مع النجاح أو الخطأ.

———

📌 ليه أستخدم الـ Promises والـ Async/Await؟

تنظيم الكود: الكود بيبقى أنضف وأبسط في الفهم مقارنة بالـ Callbacks.
الـ Error Handling أفضل: التعامل مع الأخطاء بقى أسهل باستخدام try/catch.
لما يكون عندك مشروع كبير، الـ async/await هيساعدك في إدارة الأكواد الطويلة والمعقدة بسهولة.

———

بالتوفيق يا بطل 💪🏻
👍9
سناك فرونت اند ع السريع...⚡️

لا تنسوا أهلنا في فلــسطــين وفي ســوريا وفي الســودان وفي اليــمن وفي كل دول العالم من المسلمين من الدعاء. 🤍



تحسين الأداء (Performance) عنصر مهم جدًا في نجاح أي موقع. لما الموقع يكون أسرع وأكثر استجابة، هتلاقي تجربة المستخدم أحسن وترتيب الموقع في محركات البحث أعلى. 💯

———

⚡️ Tutorial Video:
https://youtu.be/GlR0lzwDKD8
Proven Tips to Optimize Performance in Your Next.js App ⚡️

- Optimizing performance in web applications is crucial for delivering fast, smooth user experiences.

- With Next.js, a powerful React framework, you can leverage many built-in features to enhance the speed and efficiency of your app.

https://dev.to/alisamir/proven-tips-to-optimize-performance-in-your-nextjs-app-lpc
الفرق بين useMemo و useCallback في React 🔻

باختصار الفرق في إيه اللي بيتم تحسينه.


📌 الـ useMemo:

- بتحفظ نتيجة الدالة (زي قيمة أو حساب معين) عشان مش كل مرة يتم حسابه لما الصفحة يتعملها إعادة تحميل.

- مفيدة لو عندك عملية حسابية تقيلة وعايزها تتنفذ بس لما حاجات معينة تتغير.

const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);


هنا الدالة computeExpensiveValue هتشتغل بس لو a أو b اتغيروا.

———

📌 الـ useCallback:

- بتحفظ الدالة نفسها عشان مش كل مرة يتم إنشائها لما الصفحة يحصلها إعادة تحميل، وده بيساعد في منع إعادة تحميل الـ Components الفرعية اللي معتمدة على الدالة دي.

const memoizedCallback = useCallback(() => doSomething(a, b), [a, b]);


الدالة هيتعملها إعادة إنشاء بس لو a أو b اتغيروا.

———

بمعنى أبسط:

⚡️ الـ useMemo بتحفظ القيم.
⚡️ الـ useCallback بتحفظ الدوال.

———

المقال ده موضح الفرق بالتفصيل:
https://www.freecodecamp.org/news/difference-between-usememo-and-usecallback-hooks
4
الحل هو التطبيق العملي...💯

لا تنسوا أهلنا في فلــسطــين وفي ســوريا وفي الســودان وفي اليــمن وفي كل دول العالم من المسلمين من الدعاء. 🤍


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

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

———

https://www.linkedin.com/posts/dev-guide_frontend-backend-frontenddeveloper-activity-7241452113187274752-llWk
4
عايز تفهم الـ Hooks في React بشكل واضح وبسيط؟

لا تنسوا أهلنا في فلــسطــين وفي ســوريا وفي الســودان وفي اليــمن وفي كل دول العالم من المسلمين من الدعاء. 🤍


في كورس React Hooks Simplified هتتعلم كل حاجة عن الـ Hooks الأساسية اللي هتحتاجها في تطوير أي تطبيق بـ React. وهتتعلم إزاي تعمل Custom Hook خاصة بيك

https://www.linkedin.com/posts/dev-alisamir_react-reactdeveloper-reactjs-activity-7241493457658105856-Ce_4
👍2
An Interactive Guide to CSS Container Queries 🔻

- Learn how to use CSS container queries today.

https://ishadeed.com/article/css-container-query-guide
JavaScript: 5 Useful Web APIs 🔥

https://www.instagram.com/p/DABMND6iraN/
9
💡 Bye Bye Try/Catch, Meet New ECMAScript Operator 💡

Benefits of using ?= operator instead of try/catch:

Simplified Error Handling: Streamline error management by eliminating the need for try-catch blocks.

Enhanced Readability: Improve code clarity by reducing nesting and making error handling flow more intuitive.

Consistency Across APIs: Establish a uniform approach to error handling across various APIs, ensuring predictable behavior.

Improved Security: Reduce the risk of overlooking error handling, thereby enhancing the overall security of the code.
4👏2🔥1
رحلة البحث عن وظيفة كـ مهندس برمجيات 🔻

رحلة البحث عن وظيفة في مجال البرمجة مش مقتصرة فقط على إنك تدخل على أي منصة وظائف سواء LinkedIn أو Indeed أو غيرهم وتفضل تبعت الـ CV في أي وظيفة تقابلك، وفي الآخر هتكتشف إن مفيش رد خالص ولا حتى بالرفض!

https://www.linkedin.com/posts/dev-alisamir_softwareengineer-softwareengineering-softwaredeveloper-activity-7242215176932868096-96dV
1🔥1
11 steps to go from Junior to Senior Developer

1- Collaboration Tools

Software development is a social activity. Learn to use collaboration tools like Jira, Confluence, Slack, MS Teams, Zoom, etc.

2- Programming Languages

Pick and master one or two programming languages. Choose from options like Java, Python, JavaScript, C#, Go, etc.

3- API Development

Learn the ins and outs of API Development approaches such as REST, GraphQL, and gRPC.

4- Web Servers and Hosting

Know about web servers as well as cloud platforms like AWS, Azure, GCP, and Kubernetes

5- Authentication and Testing

Learn how to secure your applications with authentication techniques such as JWTs, OAuth2, etc. Also, master testing techniques like TDD, E2E Testing, and Performance Testing

6- Databases

Learn to work with relational (Postgres, MySQL, and SQLite) and non-relational databases (MongoDB, Cassandra, and Redis).

7- CI/CD

Pick tools like GitHub Actions, Jenkins, or CircleCI to learn about continuous integration and continuous delivery.

8- Data Structures and Algorithms

Master the basics of DSA with topics like Big O Notation, Sorting, Trees, and Graphs.

9- System Design

Learn System Design concepts such as Networking, Caching, CDNs, Microservices, Messaging, Load Balancing, Replication, Distributed Systems, etc.

10- Design patterns

Master the application of design patterns such as dependency injection, factory, proxy, observers, and facade.

11- AI Tools

To future-proof your career, learn to leverage AI tools like GitHub Copilot, ChatGPT, Langchain, and Prompt Engineering.
👍6
900+ Free Developer and IT Certifications 🔥

- Massive list of free certificates and badges for developers in data science, software development, and more.

https://www.classcentral.com/report/free-developer-it-certifications

بالتوفيق يا بطل 💪🏻
11
The Ultimate Software Architect Knowledge Map ⚡️

- Master a Programming Language
- Tools
- Design Principles
- Architectural Principles
- Platform Knowledge
- Data Analytics
- Networking and Security
- Supporting Skills

https://blog.bytebytego.com/p/ep128-the-ultimate-software-architect
دلوقتي تقدر تسجل في الدورة التدريبية (استكشف SwiftUI و إنشئ واجهات مستخدم تعريفية)

من تقديم:
م/ بيشوى عادل، مشرف مسار تطوير تطبيقات الهاتف المحمول بمعهد تكنولوجيا المعلومات مدرب معتمد من شركة Apple.

بيقدم لك SwiftUI نهجًا حديثًا لبناء واجهات المستخدم، وبيوفر بناء Functional Expressions تسمح لك بوصف واجهة المستخدم وسلوكها.

التسجيل مجانا على مهارة تك، منصة معهد تكنولوجيا المعلومات التعليمية:
https://bit.ly/3XsiWtZ
استراتيجيات تحسين الـ SEO 💯

تحسين الـ SEO (Search Engine Optimization) لموقعك حاجة أساسية لو عاوز تجيب ترافيك طبيعي (organic traffic) وتخلي موقعك يظهر في نتائج البحث الأولية على Google وغيره من محركات البحث.

———

https://www.linkedin.com/posts/dev-alisamir_seo-webdeveloper-webdevelopment-activity-7242941807393751040-68OJ
4👍1
الـ Event-Driven Programming ⚡️

الـ Event-Driven Programming (البرمجة القائمة على الأحداث) هي واحدة من أهم المفاهيم اللي بتستخدم بشكل واسع في البرمجة، خصوصًا في تطوير تطبيقات الويب والموبايل.

الفكرة ببساطة بتعتمد على إن الكود بتاعك مش بيشتغل بطريقة تسلسلية عادية، لكن بيستنى حدوث حدث (Event) معين عشان ينفذ حاجة معينة بناءً عليه.

———

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

لما الحدث ده يحصل، البرنامج بيقوم يشغل قطعة معينة من الكود اسمها Event Handler. الـ Event Handler ده وظيفته إنه يعالج الحدث اللي حصل ويشوف المفروض البرنامج يعمل إيه بعد كده.

———

الميزة الكبيرة في الـ Event-Driven Programming إنها بتخلي البرامج أكتر استجابة ومرونة، يعني بدل ما البرنامج يفضل مستني يخلص كل خطوة عشان يبدأ في اللي بعدها، بيقدر يتعامل مع أحداث مختلفة في نفس الوقت.

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

———

📌 استخدامات Event-Driven Programming

⚡️ تطوير واجهات المستخدم (UI): لما المستخدم يتفاعل مع الواجهة سواء بالضغط، السحب، أو الكتابة.

⚡️ تطبيقات الويب: زي الـ Single Page Applications (SPA) اللي بتعتمد بشكل كبير على الأحداث اللي بتحصل في الصفحة زي التنقل بين الصفحات بدون تحميل الصفحة كلها من الأول.

⚡️ تطبيقات الموبايل: تفاعلات المستخدم زي لمس الشاشة أو سحب الأيقونات بتكون مدارة بالكامل بالأحداث.

———

📌 إزاي بتشتغل Event-Driven Programming؟

الفكرة الأساسية إنك بتحدد الأحداث اللي مهتم بيها، وتربطها بـ Event Handlers. مثال بسيط بالـ JavaScript:

document.getElementById('myButton').addEventListener('click', function() {
alert('Button was clicked!');
});


في المثال ده، بنقول للزرار اللي الـ ID بتاعه "myButton" إننا عايزين نعمل حدث "click"، ولما يحصل، نشغل الكود اللي بيظهر رسالة للمستخدم.

———

📌 المزايا والعيوب

المزايا:

- تحسين تجربة المستخدم (User Experience) بإنك تخلي التطبيق بتاعك أكتر استجابة وسلاسة.
- إمكانية التعامل مع أكتر من حدث في وقت واحد من غير ما يحصل تأخير أو تحميل زائد.


العيوب:

- البرمجة القائمة على الأحداث ممكن تكون صعبة في التتبع والفهم في المشاريع الكبيرة، خصوصًا لو الأحداث بقت معقدة ومتداخلة مع بعضها.

———

📌 أمثلة عملية

» الـ JavaScript في المتصفحات: أشهر مثال للـ Event-Driven Programming، وبيتم استخدامه للتعامل مع كل حاجة بتحصل في صفحة الويب.

» الـ Node.js: بتستخدم الـ Event-Driven Programming بشكل كبير للتعامل مع الطلبات (Requests) اللي بتيجي للسيرفر، وده اللي بيخليها قوية جدًا في بناء التطبيقات اللي بتحتاج تعمل عمليات كتير في نفس الوقت (زي الشات أو تطبيقات الـ Real-time).

———

بالتوفيق يا بطل 💪🏻
6👍2
React 18 Design Patterns and Best Practices.pdf
5.3 MB
React 18 Design Patterns and Best Practices ⚡️

Fourth Edition (2023)

Design, build and deploy production-ready web applications with React by leveraging industry-best practices.
1👍1