المشاركات

اختبار الكود واجمالي نسبة تغطية الاختبارات - unit testing and test coverage in Arabic

صورة
  بسم الله، والصلاة والسلام على رسول الله  ا لحمد لله الذي عَلَّمَ بالقلم.. عَلَّمَ الإنسانَ ما لم يَعْلَم  والصلاةُ والسلامُ على خيرِ مُعَلِّمي الناسِ الخير محمد.. الهم علمنا ما ينفعنا وانفعنا بما علمتنا انك انت العليم الحكيم . المحتوي :ـ    unit testing  الهدف من مثال  1 مثال 2  نسبة التغطية (test coverage) ما التالي ؟  الهدف من unit testing ضمان صلاحية الكود في اتمام المهمه المقصود بها اثناء تطوير البرنامج او خلال التركيب  مثال 1 : مطلوب كتابة دالة لمعرفة هل عمر المستخدم اكبر من 18 عام ام لا  اذا كان اكبر من 18 عام تكون True واذا كان اقل من 18 عام تكون False الان وقت اختبار الدالة ( الصحيح ان تكتب الاختبار اولا ثم الكود بعد ذلك ) لكن قمنا بالعكس للتوضيح فقط نحتاج لمكتبة  test   كـ  dev_dependencies اين يكتب الاختبار ؟  في المسار الرئيسي للمشروع داخل ملف test ملحوظة : اسم ملف الاختبار يجب ان ينتهي ب   _test.dart    ليكون بالشكل التالي بداخل ملف الاختبار دالة main بدون paramters AAA  Pattern (نمط AAA) ميكروسوفت بتقترح انك تكتب الاختبار بطريقة AAA لانهاء شائعة ومفيش مانع من التنظيم 😅

ملخص الـ (Null Safety ) بالكامل في فلاتر بالامثلة ( 10 د )

صورة
بسم الله، والصلاة والسلام على رسول الله  ا لحمد لله الذي عَلَّمَ بالقلم.. عَلَّمَ الإنسانَ ما لم يَعْلَم  والصلاةُ والسلامُ على خيرِ مُعَلِّمي الناسِ الخير محمد.. الهم علمنا ما ينفعنا وانفعنا بما علمتنا انك انت العليم الحكيم . المقالة هياخد منك 10 دقايق قراءة تقريبا . الـ null safety من اهم المميزات في dart وبيحللك مشاكل كثير وبيضمنلك امان اكثر في الكود  ولما تم اضافته في dart تم اضافته الرموز الخاصه بية operators      ! , ? , ??= , ?? , *  " ! " - وقبله انت ليه محتاجه  ؟  المتغيرات في dart بقت  null able - قابل ان قيمتة تساول null non-nullable - لا يقبل ال null ابدا  وبالتالي انا لو بحاول احط قيمته حاجه من النوع الاول للنوع الثاني ال analyzer وانا بكت الكود هيظهرلي الخطا الي في الصورة  انه مش قادر يحط nullable في non nullable -  وحل المشكلة هو استخدام علامه التعجب دي " ! " ( الطريقه الخطر )  ومعناها ان انا متاكد ان ال المتغير الاول ( nullable ) قيمته حاليا مش ب null وبجبرك تحط قيمته في المتفير الي من نوع non-nullable وده من اخطر الامور الي لازم تكون متاكد منها قبل

يعني ايه api والتعامل معاها والمصطلحات ومثال بدارت للمبتدئين ( منين بيودي علي فين )

صورة
بسم الله، والصلاة والسلام على رسول الله  ا لحمد لله الذي عَلَّمَ بالقلم.. عَلَّمَ الإنسانَ ما لم يَعْلَم  والصلاةُ والسلامُ على خيرِ مُعَلِّمي الناسِ الخير محمد.. الهم علمنا ما ينفعنا وانفعنا بما علمتنا انك انت العليم الحكيم . المقصود ب client side هو جانب العميل بالجهاز الي بيستخدمها  سوا كان موقع مفتوح في متصفح او تطبيق مثبت علي الويندوز او الاندرويد او الايفون  المقصود ب server side هو السيرفير المستخدم في معالجه البيانات  سوا كان سيرفير عادي لارافل او نود او بايثون فايربيس او سترابي او اي حاجه من امثالهم - ليه محتاجين نقسم الكود علي 2 ( server - client )  ؟  اسباب مختلفة  منها مثلا :-  الحماية : لو الكود كله عند العميل ممكن يسرقة او يعدلة السرعه او الاداء : في فرق ملحوظ بين قوة جهاز العميل الي ممكن يكون جهاز متواضع موبيل بسيط او كمبيوتر مش قوي علي عكس السيرفير الي اداء ممكن يكون 100 مره اقوي من العميل وبالتالي بعض العمليات لو تمت علي جانب السيرفير هتكون اسرع بكثير  ملحوظة : ايا كان الباك اند المستخدم تقدر تعمل بيه الانواع المختلفه من الـ api والانواع المختلفه من البيانات الي هتتنقل

دعم اكثر من لغة للتطبيق - localization in flutter

صورة
  المقاله علي 3 مستويات البداية المتوسط المتقدم   - البداية دعم اكثر من لغه للتطبيق(localization) امر ضروري  (accessibility) ومفيش خلاف علي كدا , في فلاتر الطرق للهدف ده مختلفه بالختلاف المصدر للكلمات او المكتبة المستخدمه ولكن النتجية واحده تقريبا ,, انت تقدر تنفذ الموضوع بنفسك بدون مكاتب تماما لكن الافضل تسخدم مكتبة للجزء ده .  - ليه نستخدم مكتبة للموضوع ده  علشان توفر علي نفسك الوقت والمجهود بدل ماتكرر الكود في كل مشروع وتهتم انت بالكود ده وتضيف عليه جديد و testing وكدا فانك تختار مكتبه تحللك المشكله دي هتوفر عليك وقت ومجهود الجزء ده . متخترعش العجله من الاول ! - ايه المكاتب المتاحه   منهم "easy_localization"   و getx و localize_and_translate  وكل مكتبه ليها شرحها وتقدر تستخدمها بسهوله  - مكتبة "امم" - Nations    الدوكمنتيشن  الكلام انهارده علي المكتبة دي بس علشان اوضح الي فيها وتفرق ايه عن المكاتب الثانية . مبدائيا هي جزء من اطار Queen  - لكن تقدر تشتغل بيها مستقله تماما عنه .  استخدام المكتبة والمميزات 1- المكتبة زيها زي المكاتب الي فوق بتضيف الكلمات لـلتطبيق وت

اختبار شكل ونوع البيانات الي راجعه من الــ `API` باستخدام فلاتر 💙 مع مكتبة المخطوطه `blueprint` 👑

صورة
بسم الله، والصلاة والسلام على رسول الله  الحمد لله الذي عَلَّمَ بالقلم.. عَلَّمَ الإنسانَ ما لم يَعْلَم والصلاةُ والسلامُ على خيرِ مُعَلِّمي الناسِ الخير محمد.. أما بعد.. في البداية اسالكم الدعاء لاخونا احمد جمال عبد الملك رحمه الله وان يجعل صبره في ميزان حسناتة في المقاله دي هتكلم عن ال  - المتطلبات علشان تفهم المكتبة وتقدر تستخدمها  - ليه المكتبه اتعملت - ازاي المكتبة حلت المشكلة  - ازاي تستخدم المكتبة بالامثلة - ختام توكلنا علي الله  محتاج ايه علشان تفهم المكتبة ؟ 0 - تكون فاهم يعني ايه `Null` وزاي تحل مشاكل باستخدام ال `Null Safety`  مصدر لبداية التعلم 1- تكون فاهم يعني ايه واجهه برمجيه `API`  وتقدر تستخدمها مع دارت  مصدر لبداية التعلم 2- تكون فاهم يعني ايه `JSON` وازاي بنحوله لـ dart class   او ما يطلق عليه `Model`  مصدر لبداية التعلم 3- تكون فاهم اختبار الوحدات `unit testing`  مصدر لبداية التعلم ليه المكتبة اتعملت ؟ كثير من الاوقات او معظم الاوقات مبيبقاش في دليل `documentation` لاستخدام الـ `api` نظرا لان اطر العمل المستخدمه مش كلها بتدعم كدا  -  هنا بتكلم علي open api او swagge

تصحيح شكل الكود "linting" والتطبيق مع دارت "dart" 💡

صورة
المحتوي : يعني ايه linting الفائده من استخدامه المكتبات الي هتساعدك في الموضوع لو حابب تعرف الموضوع من المصدر الرسمي :  Customizing static analysis يعني ايه linting لغه يعني " الفحص " والمقصود هنا فحص الكود الي انت كتبته علشان يخليك تكتب الكود باحسن طريقه بالاضافه انه ممكن ينبهك لبعض المشاكل في الكود  من بعض الاستخدامات مثلا  هنا مثلا التنبية ده هيظهر بعد استخدام مكتبة من مكتبات ال linting والهدف منه انه بيقولك انت دلوقتي عندك متغير final يعني لازم ياخد قيمة وانت ادتلو قيمتة ولما اخد القيمه عرف منها نوع المتغير ايه بما اني اديتو String ففهم ان المتغير ده من نوع String وهيفضل دايما ثابت انو من نوع String وقيمته ahmed فاستخدامك لكلمه String في الكود ملهوش لازمه نهائي هنا فالاحسن تشيلها !  ده ابسط مثال لموضوع ال linting ! الفائده من استخدامه  تقيل من احتمالية وجود اخطاء في الكود  كود افضل واسهل في القرائة المحافظة علي المعايير القياسية في الكود (  code style guideline  ) شكل الكود كانو من شخص واحد ( الكل بيكتب بنفس المعايير ومحافظ علي نفس الشكل (style) ودول علي سبيل المثال  lint