VOL34: Top 30 ASP.NET Core Libraries for Building Applications
أهلًا وسهلا بكم في العدد الرابع والثلاثين من النشرة الأسبوعية لاقرأ-تِك 🎉
لا تنسوا أهلنا من صالح الدعاء,اللهم إنّا استودعناك اياهم، اللهم كُن عوناً لهم، اللهم انصرهم واحفظهم. 🇵🇸
أهلًا وسهلا بكم في العدد الرابع والثلاثين من النشرة الأسبوعية لاقرأ-تِك 🚀
سواء كنت مهندس برمجيات مبتدئ أو محترف، فنشرتنا هدفها انها تثري المحتوى التقني العربي سعيا للتطوير من جودة المحتوى باللغة العربية, من خلال تقديم أحدث المستجدات والتطورات في عالم البرمجيات، بالإضافة إلى أفضل الممارسات والنصائح القيمة, ونشر أحدث المقالات وترشيحات الكتب ومحتوى ورقة وقلم اللي بينزلوا بشكل مستمر في موقع اقرأ-تِك.
في الإصدار ده الفهرس هيكون كالآتي:
Top 30 ASP.NET Core Libraries for Building Applications
Level Up Your CI/CD - Fastlane Magic & GitHub Actions
Software Versioning
SOLID Principles 101 - Building Maintainable Software
Browser's Journey from DOM & CSSOM Building Render Tree
ستجدون أيضًا في هذه النشرة:
الشراكات - Sponsorship
قناة التليجرام مجانية للجميع حتى يصلك كل مقال جديد
كيفية كتابة مقالات معنا في اقرأ-تِك: والمقالات تكون متاحة ومجانية للجميع ومحفوظة باسم الكاتب بكل تأكيد
كيفية الاشتراك في اقرأ-تِك من خلال InstaPay و VodafoneCash
Top 30 ASP.NET Core Libraries for Building Applications
لو بتشتغل على مشروع باستخدام ASP.NET أو بتفكر تبدأ فيه، هتحتاج مجموعة من الأدوات اللي هتساعدك تبني التطبيق بشكل أسرع وأفضل. من أهم الحاجات اللي بتسهل الشغل هي استخدام المكتبات والتقنيات اللي بتعالج المشاكل المعقدة وتبسط الكود. في المقال دا هتكلم عن أهم المكتبات .
1- ORM (Object-Relational Mapping)
EF Core: دي مكتبة بتسهل عليك التعامل مع قواعد البيانات من خلال تحويل الكود المكتوب بـ C# إلى SQL. يعني بدل ما تكتب استعلامات SQL معقدة، المكتبة دي بتساعدك تشتغل بالكود العادي اللي بيتحول لـ SQL تلقائياً.
Dapper: مكتبة خفيفة وسريعة مقارنةً بـ EF Core، لكنها بتحتاج منك تكتب استعلامات SQL بنفسك. بتكون مثالية في السيناريوهات اللي الأداء فيها مهم جداً.
2- DI (Dependency Injection)
Autofac و Scrutor: أدوات بتساعدك في فصل مكونات الكود وإدارة الاعتمادية بينهم. بتسهل عملية استدعاء الكائنات والخدمات بشكل مباشر وبتجعل الكود قابل للاختبار بشكل أسهل وأوضح.
3- API Toolkit
SignalR: بيساعدك في بناء تطبيقات بتشتغل في الوقت الحقيقي (real-time) زي تطبيقات الشات أو الإشعارات المباشرة. بيخلي المستخدمين يشوفوا التحديثات لحظيًا.
FluentValidation: دي مكتبة قوية بتساعدك في التحقق من البيانات المدخلة قبل ما يتم إرسالها للتطبيق. لو في خطأ في البيانات، بترجع رسالة للمستخدم توضح المشكلة قبل تنفيذ أي عمليات.
MediatR: أداة بتنظم التواصل بين مكونات الكود من خلال وسيط بين الكائنات. بتركز على مبدأ فصل المسؤوليات، وبتساعد في تحسين ترتيب وهيكلة الكود.
YARP: مكتبة متخصصة في إدارة طلبات الـ API بين الخدمات المختلفة (Microservices). بتسهل عليك إعادة توجيه الطلبات وتكوين بوابة واحدة للوصول لكل الخدمات.
Level Up Your CI/CD - Fastlane Magic & GitHub Actions
بعد ما اتعلمنا استخدام Fastlane وFirebase مع Flutter احنا لسة نقدر نوصل لمرحلة اعلي في الAutomation و توفر وقتك وتريح نفسك من المهام المتكررة فيهم اكتر تخيل! 🤯
مع وجود GitHub Actions بمجرد ما تضيف كود جديد، بيبدأ يشتغل من وراك: يبني التطبيق، يختبره، ويتأكد إن كل حاجة تمام. ولو فيه أي مشكلة بيقولك عليها و مش بيطلع النسخة الجديدة الا اما تحلها .
في المقال ده هنتعرف اكتر ازاي نستخدم GitHub Actions علشان نخلي شغلنا Automated اكتر 🚀
هنتكلم النهاردة عن:
📌 ايه هو GitHub Actions
📌 مميزاته ايه
📌 نظرة عامة على GitHub Actions
📌 ايه هو GitHub Market Place
📌 إعداد GitHub Actions للـ Flutter
📌 هنكتب اول workflow
📌 في الختام
المرة اللي فاتت اتكلمنا عن اهمية الـ CI/CD وعرفنا قد ايه هو بيوفر وقت و مجهود في عملية Deployment و Monitoring.
النهاردة بقي هنتعرف علي Tools من ضمن Tools اللي بتساعد في عملية CI/CD و بتوفر وقت اكتر علينا في عملية Build & Test بعد ما بنضيف او بنعدل حاجة جديدة .
ايه هو GitHub Actions
هي عبارة عن CI/CD Platform وفرتها GitHub بتخلي عملية الـ build , test , deploy تكون automated بطريقة اسهل بمجرد ما بتوصل للريبو بتاعك ... طب ازاي برضو ؟
المرة اللي فاتت بعد ما ربطنا ب fastlane كنا بنضطر نكتب command علشان نعمل build و نطلع نسخة جديدة في GitHub Actions بقي تقدر تعمل build بمجرد ما تعمل push او merge او pull request حتي ، و بيبدأ ينفذ شوية اوامر عن طريق workflow بنكتبه ولو كل حاجة تمام، يرفع الإصدار الجديد على Firebase أو حتى يرفعه على Google Play.
لو عايز تعرف أكتر، دا الـ documentation الرسمي بتاعه :
طب ايه هي مميزات الـ GitHub Actions
تاريخ محفوظ من الـ releases: من غير ما تكتب أوامر، بيبقى عندك سجل كامل لكل الـ releases المختلفة اللي عملتها. وإمكانية عمل release على أكتر من بيئة: سواء ويب، موبايل، أو ديسكتوب، وكمان لأنظمة زي Android وiOS.
الكاشينج (Caching): دي ميزة بتخليك تقدر تخزن الـ dependencies اللي بتستخدمها، وده بيساعد إن وقت الـ build يكون أسرع ويقلل استهلاك الـ resources.
تخزين الـ GitHub Action Logs: بيحتفظ بالـ logs، وده بيخلي الوصول ليها سهل ومشاركتها مع التيم بتاعك أسهل.
الأمان (Security): بيحمي أي بيانات حساسة زي الـ configurations أو الـ tokens، وبيخليها أكثر أمان، بحيث محدش يقدر يوصل ليها أو يشوف قيمتها. كمان بيعمل (code scanning)، و(secret scanning)، ومراجعة للـ dependencies عشان يتأكد إن مفيش مشاكل.
تقليل وقت الـ merge: بيساعدك تطلع البرودكت أسرع، وتختصر وقت كبير في عمليات الدمج بين الكود.
سهولة البدء: GitHub Actions بييجي جاهز مع GitHub، يعني مش هتحتاج تدور على خدمات خارجية أو تربطها، كل اللي عليك تبدأ تكتب الـ workflows بتاعتك.
طيب قبل ما نبتدي نعمل workflow للابلكيشن بتاعنا خلونا نشوف بشكل مختصر ازاي GitHub Actions بيشتغل.
Software Versioning
كمبرمج رايق خلصت مشروعك وهيطلع للنور أخيرًا, ودي هتكون أول نسخة منه بس بدل ما تكتب جمبه version 1 هتلاقيك كتبت"Version 1.0.0" طيب ليه كل البرامج بتكتب نسخها كدا ودا معناه إيه ليا كمبرمج, دا اللي هنعرفه النهارده!
ال Semantic Versioning أو "إصدار نسخ البرمجيات" هو ببساطة نظام تسمية لإصدارات البرامج, نظام التسمية دا مهم في كل أنواع البرمجيات سواء البرنامج دا تطبيق موبايل أو Web App API أو Library أو لغة برمجة أو حتى نظام تشغيل كامل زي IOS أو Windows
أهمية الـ Semantic Versioning
كمستخدم: بيعرفك إيه هي طبيعة التغيرات والاختلافات بين النسخ وبعضها
كمبرمج مهم بالنسبة لك في أمرين:
امتي تغير اسم نسخة البرنامج بتاعك وعلى أي أساس؟
إدارة ال Dependencies واللي يبان سهل بس كل لما برنامجك هيكبر وتزيد ال Dependencies كل لما فهمك وحُسن استخدامك لل Semantic Versioning هيريحك من مشاكل كتير ممكن تكسرأجزاء من برنامجك أو توقف شغله بالكامل.
الشراكات - Sponsorship
بفضل الله أصبح متاح حاليا دعمنا من خلال الرعاة والشراكات وفعلنا الـ Sponsorship وتقدروا تشوفوا التفاصيل كاملة من هنا والـ Analytics بتاعتنا من خلال اقرأ-تِك والنشرة الأسبوعية 🚀
لا تدع شيء يفوتك!
بفضل الله قمنا بإطلاق قناة اقرأ-تِك على التليجرام مجانًا للجميع 🚀
آملين بده اننا نفتح باب تاني لتحقيق رؤيتنا نحو إثراء المحتوى التقني باللغة العربية ، ومساعدة لكل متابعينا في انهم يوصلوا لجميع أخبار اقرأ-تِك من حيث المقالات ومحتوى ورقة وقلم والنشرة الأسبوعية وكل جديد بطريقة سريعة وسهلة
مستنينكوا تنورونا , وده رابط القناة 👇
SOLID Principles 101 - Building Maintainable Software
الـ SOLID Principles عبارة عن مجموعة من القواعد البسيطة بتساعد المبرمجين على كتابة كود نظيف ومنظم وسهل الفهم والتعديل. تخيل كأنك بتبني بيت، لازم يكون كل جزء فيه له وظيفة واضحة ومكان محدد عشان البيت يبقى قوي ومستقر.
نفس الكلام في البرمجة، الكود لازم يكون منظّم عشان يسهل تطويره وصيانته!
ليه المبادئ دي مهمة؟
كود نظيف ومنظم: بيسهل فهمه وتعديله
صيانة أسهل: لو فيه أي مشكلة، هتلاقيها بسرعة وتصلحها
توسعة أسرع: تقدر تضيف ميزات جديدة بسهولة
تعاون أفضل بين المبرمجين: كل واحد هيفهم شغله كويس
كفاءة أعلى: الكود هيشتغل بشكل أسرع وأكثر استقرارًا
باختصار هي أدوات أساسية للمبرمج المحترف عشان يقدر يبني سوفت وير مرن و سهل التعديل عليه في المستقبل!
Browser's Journey from DOM & CSSOM Building Render Tree
لو سألت نفسك إزاي المتصفح بيقدر يعرض صفحة ويب كاملة قدامك بعد ما تضغط على لينك؟ الموضوع دا بيعدي بكذا خطوة مهمة، وكل خطوة ليها شغل مختلف وبتأثر بشكل مباشر على سرعة تحميل الصفحة وتجربة المستخدم.
في الجزء اللي فات، اتكلمنا عن بناء شجرة الـ DOM وشجرة الـ CSSOM من الـ HTML والـ CSS اللي جايين من السيرفر. المهم هنا إن الشجرتين دول هما objects مستقلين، واحدة بتوصف المحتوى (DOM)، والتانية بتوصف قواعد التصميم (CSSOM). السؤال بقى: إزاي ندمج الاتنين مع بعض عشان المتصفح يرسم العناصر على الشاشة؟ 🤔
رحلة المتصفح من الـ DOM والـ CSSOM لحد الـ Render Tree
1- إنشاء الـ Render Tree
يبدأ المتصفح من شجرة DOM ويقوم بمسحها من أعلى لأسفل لكل عنصر مرئي وركز علي مرئي في الـ DOM، المتصفح بيدور عن القواعد المطابقة له في الـ CSSOM و بينشئ node في الـ Render Tree تجمع بين معلومات المحتوى من الـ DOM وقواعد التنسيق من الـ CSSOM
استبعاد العناصر غير المرئية:
العناصر التي لها خاصية display: none
مش بتتضاف للـ Render Tree.
العناصر مثل <script>
و <head>
برضو مش بتظهر في الـ Render Tree لأنها مبتأثرش على العرض المرئي.
بعض العناصر مثل أرقام القوائم أو بعض الـ pseudo-elements (مثل ::before و::after) ممكن تتضاف إلى الـ Render Tree رغم عدم وجودها في الـ DOM
2- حساب الأبعاد وتحديد المواضع (Layout)
لكل عنصر في الـ Render Tree، المتصفح بيحسب أبعاده وموقعه وفقًا للـ Box Model (margin, border, padding, content) موضع كل عنصر بالنسبة للعناصر الأخرى بيتم تحديده باستخدام ( Flow Layout) مثل:
الـ Normal Flow
الـ Float
الـ Absolute Positioning
3- التعامل مع الطبقات (Layers)
بعض العناصر ممكن تشكل طبقات منفصلة (Layers)، مثل:
العناصر ذات الخاصية position: fixed
العناصر التي تستخدم will-change أو transform
الــ Layers دي بيتم رسمها بشكل منفصل لتحسين الأداء أثناء الرسم (Painting)
4- الرسم (Painting)
بعد إنشاء الـ Render Tree، يقوم المتصفح برسم البكسلات على الشاشة بناءً على الأبعاد والمواضع المحسوبة. يتم رسم كل عنصر حسب خصائصه النهائية (الألوان، الخلفيات، الحواف... إلخ)
تقدروا دلوقتي تشتركوا في اقرأ-تِك بخصم الـ 20% وتنضموا لمجتمع مهتم بالقراءة في هندسة البرمجيات بـ 50 جنيه بس 🎉
وتستمتعوا بحرية كاملة في قراءة المقالات في مواضيع مختلفة بجودة عالية زي:
Data Structure & Algorithms , System Design , Distributed Systems , Micro-Services, Clean Code, Refactoring, Databases , Web Development, DevOps وغيرهم كتير باللغة العربية!
بالاضافة لمحتوى ورقة وقلم اللي بنشرح فيه مفاهيم برمجية بطريقة سهلة وباستعمال صور توضيحية 🚀
ولو فيه مشاكل في الدفع الأونلاين فمتاح دلوقتي الاشتراك من خلال InstaPay و VodafoneCash 💪
تقدروا تتواصلوا معانا من خلال الـ WhatsApp Business أو من خلال الرسايل على مواقع التواصل الاجتماعي أو من خلال البريد الالكتروني contact@eqraatech.com 😍
رؤيتنا هي إثراء المحتوى التقني العربي وجعل التعلم من خلال القراءة أمتع، وذلك من خلال إثراء المحتوى التقني باللغة العربية وتشجيع المبرمجين على القراءة بلغتهم الأم والتفكير أيضًا بها.
لذلك اتحنا الفرصة أمام الجميع للمساهمة ومساعدتنا في نشر واثراء المحتوى التقني باللغة العربية, من خلال كتابة المقالات التقنية في مختلف مجالات هندسة البرمجيات.
وجب التنويه أنه لن يتم نشر كافة الأعمال التي تصل إلينا، وإنما سيتم الانتقاء منها ما يحقق هدفنا بإثراء المحتوى التقني العربي، ولذلك قد تُطلب بعض التعديلات من الكاتب قبل النشر.
لمعرفة المزيد بخصوص :
💬 المعايير العامة لكتابة ونشر المقالات
⚡️ كيفية الإرسال
🔥 التزامات اقرأ-تِك تجاه الكتاب
يمكنكم قراءة كافة التفاصيل من هنا 👇