VOL31: Top 5 Caching Strategies
أهلًا وسهلا بكم في العدد الواحد والثلاثين من النشرة الأسبوعية لاقرأ-تِك 🎉
لا تنسوا أهلنا من صالح الدعاء,اللهم إنّا استودعناك اياهم، اللهم كُن عوناً لهم، اللهم انصرهم واحفظهم. 🇵🇸
أهلًا وسهلا بكم في العدد الواحد والثلاثين من النشرة الأسبوعية لاقرأ-تِك 🚀
سواء كنت مهندس برمجيات مبتدئ أو محترف، فنشرتنا هدفها انها تثري المحتوى التقني العربي سعيا للتطوير من جودة المحتوى باللغة العربية, من خلال تقديم أحدث المستجدات والتطورات في عالم البرمجيات، بالإضافة إلى أفضل الممارسات والنصائح القيمة, ونشر أحدث المقالات وترشيحات الكتب ومحتوى ورقة وقلم اللي بينزلوا بشكل مستمر في موقع اقرأ-تِك.
في الإصدار ده الفهرس هيكون كالآتي:
Caching Strategies
CI/CD in Mobile Development Using Firebase App Distribution and Fastlane
Understanding Onion Architecture in ASP.NET CORE
Importance of Documentation For Software Engineers
Importance of Data Visual Analytics
ستجدون أيضًا في هذه النشرة:
الشراكات - Sponsorship
قناة التليجرام مجانية للجميع حتى يصلك كل مقال جديد
كيفية كتابة مقالات معنا في اقرأ-تِك: والمقالات تكون متاحة ومجانية للجميع ومحفوظة باسم الكاتب بكل تأكيد
كيفية الاشتراك في اقرأ-تِك من خلال InstaPay و VodafoneCash
Caching Strategies
الـ Caching من المفاهيم المهمة جدًا اللي منقدرش نستغنى عنها في صناعة البرمجيات، وجوكر في مواقف كتير لتحسين الـ Performance. وفيه أكتر من تكنيك بيتم الـ Caching من خلاله وده بيعتمد بنسبة كبيرة على الـ Data Access Patterns، وكل تكنيك ليه الـ Trade-offs اللي لازم تكون مُلم بيها.
Cache Hit Vs Cache Miss
قبل ما نتكلم عن الـ Caching Strategies فلازم نكون عارفين إن الـ Application لما بيلاقي الـ Data موجودة في الـ Cache فده معناه Cache Hit ولو ملقهاش فبيكون اسمه Cache Miss.
Cache Reading Strategies
الـCaching Strategies أثناء الـReading:
الـ Read Aside
الـ Read Through
Read Aside
الـ Cache Aside لو الـ Application حصله Cache Miss، فبيروح يجيب الـ Data من الـ Database وبعدين يعمل Update للـ Cache بالـ Data اللي عملها Fetch.
Read Through
الـ Read Through لو الـ Application حصله Cache Miss، الـ Cache ذات نفسه بيروح يجيب الـ Data من الـ Database ويعمل لنفسه Update بحيث الـ Data تبقى عنده.
CI/CD in Mobile Development Using Firebase App Distribution and Fastlane
الCI/CD هو اختصار لـ Continuous Integration Continuous Delivery
يعني ايه الكلام الطويل دا بقي ؟
الـ CI: دي العملية من اول ما بنعمل build للكود بتاعنا لحد ما نرفعه علي جت هاب علشان نعمله عملية test & deployment
الـ CD: هي عملية انه Devops الشخص المسؤل عن عملية ال deployment بياخد الكود دا و يرفعه علي السيرفر علشان يبقي عند العميل و يفضل متابعه علشان لو حصل مشاكل يبلغ ال developers
طيب خلينا نشوف flow اللي كان بيحصل من غير وجود CI/CD
ال developer بيخلص الكود يبلغ ال tester انه رفع الكود علي Github يدخل يشوفه و يعمله تيست بعدها يرجع يبلغه بالمشاكل او يبلغ ال devops (الشخص المسؤول أنه يرفع البروجكت على السيرفر و يتابع مع العميل ) انه البروجكت خلص و اترفع يبتدي ياخده علشان يعمله عملية deployment كل دا بيحصل بشكل manual و اللي بيزود الوقت و المجهود و ان كل شخص بيستني التاني علشان يخلص شغله و هكذا لو جينا نضيف اي تعديل او feature جديدة بعد ما رفعنا السيستم خلاص.
جت بقي CI/CD حولت عملية integration و deployment بشكل automatic عن طريق اننا بنبني pipeline فيها كل الاوامر اللي عايزنها وهى بتترفع و بتتنفذ لوحدها.
طب يعني ايه Pipeline
من اسمها كدا يعني حاجة زي انبوبة ان الكود بيمشي في flow معين ببقي محدداه ليه و بيكون الاتي
بعد ما عملنا البروجكت هنرفعه علي git hub اول ما يحصل عملية الpush دي فيه tool بتاخد الكود تعمله build و بعدها هيدخل علي tool تانية تعمله test و لو عدي من التيست خلاص بيكمل في عملية الdeployment و بيترفع علي السيرفر او علي جوجل بلاي و لو فيه مشكلة هيرجعله يقول ان فيه مشكلة عايزة تتصلح قبل عملية الdeployment و الbuild هيقف
علشان نعمل الـ pipeline دي بقي عندنا كذا tool زي :
Jenkins , github actions , gitlab , fastlane , Circle CI
دي عبارة عن ادوات عاملة integration مع جت هاب باختصار بكتب فايل عندي في البروجكت فيه الاوامر اللي انا عايزاها انه اما يعمل push علي جت هاب ياخد الكود و هكذا و الtools دي بتنفذ الpipeline و الاوامر اللي كتبتها بشكل اوتوماتيك
الصورة هنا بتوضح tools مختلفة المستخدمة في كل مرحلة هسيبلك مصادر تقدر تقرا عنها في اخر المقالة 🚀
فايدة الـ CI/CD و ليه بنستخدمها
اما اجي اعمل feature جديدة مش هتضطر اعمل build و ارفعها Manual كل مرة ، لو جيت ضفت اي تعديل هيعمله test بعدها لو فشل مش هيرفعه اصلا و يرجع يقوله عندك مشكلة حلها بدل ما بنكشتفها مع العميل في الاخر و بيزود من quality للبرودكت في الاخر و بيقلل الوقت و المجهود في عملية build , test . deployment .
طيب يا ترى إيه اللي يخليني كـ Mobile Developer أهتم بحاجة زي الـ CI/CD؟ مش دي المفروض حاجات بتاعة DevOps؟
لو فكرت شوية، هتلاقي إن كل مرة بتبني فيها الابلكيشن بتلاقي نفسك بتعمل حاجات كتير بشكل يدوي؛ تبني APK للـ Tester، تعرض Demo للعميل، أو حتى تعمل تحديث للنسخة على Google Play. كل ده بياخد منك وقت ومجهود علشان بنعمله بشكل manual ، وأحياناً بيكون عرضة للأخطاء البشرية. دلوقتي تخيل إنك تقدر تعمل كل ده ب command واحد! آه، بالضبط، كل الخطوات دي هتبقى automated. تعال نستكشف إزاي CI/CD ممكن يعمل دا .
ايه الـ Tools اللي ممكن نستخدمها
من ال tools الخاصة بـ flutter اللي بتساعدنا في الموضوع دا هما:
Firebase distribution - fastlane - github actions - Code magic
هنعرف واحدة واحدة منهم بالتفصيل و هنشوف ازاي نضيفهم في البروجكت بتاعنا 🎉
الشراكات - Sponsorship
بفضل الله أصبح متاح حاليا دعمنا من خلال الرعاة والشراكات وفعلنا الـ Sponsorship وتقدروا تشوفوا التفاصيل كاملة من هنا والـ Analytics بتاعتنا من خلال اقرأ-تِك والنشرة الأسبوعية 🚀
لا تدع شيء يفوتك!
بفضل الله قمنا بإطلاق قناة اقرأ-تِك على التليجرام مجانًا للجميع 🚀
آملين بده اننا نفتح باب تاني لتحقيق رؤيتنا نحو إثراء المحتوى التقني باللغة العربية ، ومساعدة لكل متابعينا في انهم يوصلوا لجميع أخبار اقرأ-تِك من حيث المقالات ومحتوى ورقة وقلم والنشرة الأسبوعية وكل جديد بطريقة سريعة وسهلة
مستنينكوا تنورونا , وده رابط القناة 👇
Understanding Onion Architecture in ASP.NET CORE
في عالم تطوير البرمجيات، تُعتبر المعمارية أمرًا حيويًا لتصميم أنظمة مرنة وقابلة للتطوير. واحدة من المعماريات الشائعة هي Onion Architecture، التي تهدف إلى فصل المسؤوليات وتحقيق مرونة أكبر في التعديل والتطوير.
تقوم Onion Architecture على مفهوم الطبقات، حيث يتم تنظيم الكود في عدة طبقات متداخلة، مثل شكل البصلة (Onion). كل طبقة تمثل جانبًا معينًا من التطبيق، مما يسهل فهمه وتطويره.
مكونات Onion Architecture
تتكون Onion Architecture من عدة طبقات رئيسية، كل طبقة لها مسؤوليات محددة:
1- الطبقة المركزية (Core Layer)
تحتوي على نموذج البيانات (Models) الذي يمثل الجداول في قاعدة البيانات. على سبيل المثال، إذا كنت تعمل على تطبيق لإدارة المكتبات، فقد يكون لديك نموذج يُدعى Book يحتوي على خصائص مثل Title وAuthor وISBN.
تشمل الواجهات (Interfaces) التي تحدد كيفية تفاعل الطبقات الأخرى مع الطبقة الأساسية. على سبيل المثال، يمكنك تعريف واجهة IBookRepository التي تحتوي على طرق مثل AddBook وGetBooks.
Importance of Documentation For Software Engineers
كل الـ Software Engineers شاطرين في كتابة الكود، لكن لو عايز تتطور أكتر، لازم تطور مهارات كتابة الـ Documentation عندك. علشان كده، ورقة وقلم، وخليني أحاول أقنعك ليه لازم تنمي المهارة دي (آه، الكتابة مهارة لازم تجرب وتحاول كتير علشان تتقنها).
ليه تكتب؟
الكتابة بتنظم أفكارك. لسبب ما، إحنا كبشر بنفتكر إن القراءة = معرفة. يعني لو قرأت دليل البداية لـ Javascript يبقى كده أنا فاهم. قرأت مقال عن TCP/IP يبقى كده خلاص! بس الحقيقة مش كده.
لو كان ده حقيقي، كنا كلنا عباقرة. اللي فعلاً بيثبت المعلومة هو الكتابة والتجربه. عشان كده أنا مؤمن بإنك تكتب الكود بإيدك بدل ما تنسخ كود جاهز. الكتابة بتثبّت المعلومة في دماغك.
الكتابة طريقة لتعلم حاجة جديدة لو عايز تتعلم حاجة جديدة، اكتب عنها. ودايمًا خلي الكتابة بتاعتك حقيقية، يعني كتابة فيها بحث وتفاصيل صح. الكتابة الحقيقية هتخليك تجرّب وتتعلم أكتر.
الكتابة بتساعدك تكتشف الأخطاء كام مرة طُلب منك تكتب Technical Documentation وقلت لنفسك: "ليه؟ الـ Feature دي سهلة، حافظها في دماغي والتيم كله عارفها."
ده تفكير غلط بنقع فيه كلنا ، لو كتبنا الـ Document صح، هنلاقي مشاكل كتير في التصميم "السهل" ده، زي تناقضات أو تفاصيل ناقصة أو حتى تفكير غلط بسبب الكسل.
طب ازاي نكتب أكتر وازاي نطور من كتابتنا ؟
Importance of Data Visual Analytics
كلنا عدينا بالموقف ده: بنشوف مشهد فى فيلم مليان تفاصيل والناس بتتحرك في كل مكان والإضاءة مش واضحة ولا أي حاجة ظاهرة صح! افتكرت بتحس بإيه وقتها؟ 🤯 مش قادر تركز ومتضايق صح؟ طيب تخيل ده يحصل لك وأنت بتقدم Visual Analytics بطريقة مش منظمة هسيبك انت تتخيل مديرك هيعمل أى 😅
الـ Visual Analytics أساسه إنك تفهم الناس، وتبسط البيانات، وتقدم المعلومة من غير "تشويش بصري". 🤓 العقل البشري عنده قدرات جبّارة في تحليل الصور والمعلومات، بس علشان نوصل للـ insights اللي بتفيدنا، لازم نهتم بتنسيق البيانات ونسهل عليهم الفهم، وده اللي بنسميه "التحليل البصري الفعّال".
دلوقتي تعالوا نتكلم عن الخطوات اللي هتخليك تعمل Visual Analytics محترف!
Cognitive Perception
افهم ال Cognitive Perception بتاع الناس:
الدماغ بتحب الحاجات البسيطة والواضحة. لو فضلت تدي للناس معلومات كتير وفي كل حتة، هيحصل عندهم "توهان بصري" أو ما يعرف بالـ Visual Overload. مهم إنك تركز على الأساسيات، وتخلي كل معلومة في مكانها الصح علشان أي حد يقدر يستوعبها، مهما كان المجال بتاعه. الناس بتفضل ومتعوده على المعلومات المرتبة، عشان كده لما تعرض بيانات معقدة أو حتى اماكنها مش مظبوطه، حاول تستخدم أسلوب Hierarchy، يعني أعرض الأهم ثم المهم.
Display Mechanism
اختار الـ Display Mechanism المناسب:
يعني إيه؟ يعني مش كل نوع من الرسوم البيانية (Charts) بينفع لكل موقف.
Manara Tech Salon With Microsoft
هيكون فيه Tech Salon من Manara بالتعاون مع Microsoft يوم 26 أكتوبر.
الوقت من الساعة 2 - للساعة 5 مساءًا بتوقيت القاهرة.
المكان : مكتب Microsoft في القرية الذكية
طب ايه الحاجات اللي تتوقعها من حدث زي ده ؟
Career paths in software engineering
Trends in cloud & AI
Tackling burnout & work-life balance
Intro to LLMs & Generative AI
Network with Microsoft professionals
تقدروا دلوقتي تشتركوا في اقرأ-تِك بخصم الـ 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 😍
رؤيتنا هي إثراء المحتوى التقني العربي وجعل التعلم من خلال القراءة أمتع، وذلك من خلال إثراء المحتوى التقني باللغة العربية وتشجيع المبرمجين على القراءة بلغتهم الأم والتفكير أيضًا بها.
لذلك اتحنا الفرصة أمام الجميع للمساهمة ومساعدتنا في نشر واثراء المحتوى التقني باللغة العربية, من خلال كتابة المقالات التقنية في مختلف مجالات هندسة البرمجيات.
وجب التنويه أنه لن يتم نشر كافة الأعمال التي تصل إلينا، وإنما سيتم الانتقاء منها ما يحقق هدفنا بإثراء المحتوى التقني العربي، ولذلك قد تُطلب بعض التعديلات من الكاتب قبل النشر.
لمعرفة المزيد بخصوص :
💬 المعايير العامة لكتابة ونشر المقالات
⚡️ كيفية الإرسال
🔥 التزامات اقرأ-تِك تجاه الكتاب
يمكنكم قراءة كافة التفاصيل من هنا 👇