Forwarded from Mohcin
السلام عليكم،
نظرة عامة عن ال Unit Testing باللغة العربية.
المعدات بسيطة و الاعداد و التقديم كان هذا الصباح بسرعة، فتقبلوا منا و لعله ينفع ولو قليلا.
و الحمد لله.
https://www.youtube.com/watch?v=VlfnKO9oczw
نظرة عامة عن ال Unit Testing باللغة العربية.
المعدات بسيطة و الاعداد و التقديم كان هذا الصباح بسرعة، فتقبلوا منا و لعله ينفع ولو قليلا.
و الحمد لله.
https://www.youtube.com/watch?v=VlfnKO9oczw
YouTube
Unit Testing & PHPUnit Overview In Arabic
نظرة عامة عن ال Unit Testing باللغة العربية.
- قناتي على تيليغرام: https://t.me/+3E4bPMi88BRlZGJk
- صوتياتي على ساوندكلاود:
https://on.soundcloud.com/umBdN
أسال الله التعلم والتعليم و الصدق.
#softwareengineer #software #testing #phpunit #php
- قناتي على تيليغرام: https://t.me/+3E4bPMi88BRlZGJk
- صوتياتي على ساوندكلاود:
https://on.soundcloud.com/umBdN
أسال الله التعلم والتعليم و الصدق.
#softwareengineer #software #testing #phpunit #php
Forwarded from Mohcin
القيام بطلبات سحب جيدة.
في دوري كمطور برامجيات،اثناء قيامي بطلبات السحب pull requests تعلمت عديد الأشياء (من أخطائي) التي تجعل طلب السحب الخاص بك فعالا وجيدا. فيما يلي بعض الخطوات لتوفير طلب سحب منظم بشكل جيد والذي يسهل عملية المراجعة:
1. قم بتقسيم المهام الكبيرة: إذا كنت تتعامل مع مهمة كبيرة تتطلب تغييرات واسعة النطاق عبر ملفات متعددة، ففكر في طلب تقسيمها إلى تذاكر أصغر وأكثر قابلية للإدارة، هذا يعزز عملية مراجعة أكثر تركيزا وكفاءة.
2. اشرح التغييرات والدوافع: عند إجراء تعديلات، سواء على الوظائف أو الفئات أو الخصائص، قم دائمًا بتضمين وصف واضح لما قمت بتغييره وسبب إجراء تلك التعديلات. إن فهم الأساس المنطقي وراء تغييراتك يساعد المراجعين على تقديم feedback ذات معنى أكبر، و يجعلكم تكسبون وقتا كبيرا ستخسرونه في التعليقات اذا لم يكن طلبك للسحب مفهوم أو ما يعرف بال (changes loop).
3. تبرير قيامك بإعادة البناء refactoring: إذا قمت بإجراء إعادة بناء التعليمات البرمجية، فتأكد من إبلاغك بضرورة هذه التغييرات. اشرح سبب الحاجة إلى إعادة الهيكلة وكيف ستفيد ال codebase من حيث قابلية الصيانة أو الأداء أو الجوانب الأخرى ذات الصلة.
4. تعديلات واجهة المستخدم/تجربة المستخدم: عندما تقوم بتغيير عناصر واجهة المستخدم (UI) أو تجربة المستخدم (UX)، قدم شرحًا تفصيليًا للأسباب الكامنة وراء هذه التعديلات. بالإضافة إلى ذلك، قم بإرفاق لقطات شاشة قبل وبعد لتوضيح التغييرات وتأثيرها بشكل مرئي، اذا استطعت ان ترفق فيديو للتغيرات يكون أفضل.
5. توضيح تغييرات قاعدة البيانات: إذا قمت بإجراء تعديلات على DB migration، فمن الضروري توضيح سبب هذه التغييرات. تأكد من الإشارة إلى ما إذا كانت هناك علاقات مع tables ذات صلة أو هناك تعديلات مطلوبة في مكان آخر، ربما في واجهة برمجة التطبيقات (API).
6. قم بكتابة الاختبارات: قبل إرسال طلب السحب، اكتب اختبارات الوحدة unit tests أو الاختبارات الشاملة e2e tests. تأكد من أن هذه الاختبارات تمر بشكل صحيح محليًا أولا.
7. قم بالإبلاغ عن أي تأخير محتمل: إذا كان طلب السحب الخاص بك يتطلب مزيدًا من الوقت للاكتمال أو إذا واجهت تأخيرات غير متوقعة، فقم بإبلاغ فريقك أو مدير المشروع بذلك لإدارة التوقعات بشكل فعال.
باتباع هذه الخطوات، ستحسن جودة طلبات السحب الخاصة بك، و ستسهل من فهمك للطلبات التغيرات اذا وجدت، هذا من وجهة نظري المتواضعة، مرحبا بآرائكم.
والله ولي التوفيق.
#pull_requests
#software_development
#software_engineering_concepts
في دوري كمطور برامجيات،اثناء قيامي بطلبات السحب pull requests تعلمت عديد الأشياء (من أخطائي) التي تجعل طلب السحب الخاص بك فعالا وجيدا. فيما يلي بعض الخطوات لتوفير طلب سحب منظم بشكل جيد والذي يسهل عملية المراجعة:
1. قم بتقسيم المهام الكبيرة: إذا كنت تتعامل مع مهمة كبيرة تتطلب تغييرات واسعة النطاق عبر ملفات متعددة، ففكر في طلب تقسيمها إلى تذاكر أصغر وأكثر قابلية للإدارة، هذا يعزز عملية مراجعة أكثر تركيزا وكفاءة.
2. اشرح التغييرات والدوافع: عند إجراء تعديلات، سواء على الوظائف أو الفئات أو الخصائص، قم دائمًا بتضمين وصف واضح لما قمت بتغييره وسبب إجراء تلك التعديلات. إن فهم الأساس المنطقي وراء تغييراتك يساعد المراجعين على تقديم feedback ذات معنى أكبر، و يجعلكم تكسبون وقتا كبيرا ستخسرونه في التعليقات اذا لم يكن طلبك للسحب مفهوم أو ما يعرف بال (changes loop).
3. تبرير قيامك بإعادة البناء refactoring: إذا قمت بإجراء إعادة بناء التعليمات البرمجية، فتأكد من إبلاغك بضرورة هذه التغييرات. اشرح سبب الحاجة إلى إعادة الهيكلة وكيف ستفيد ال codebase من حيث قابلية الصيانة أو الأداء أو الجوانب الأخرى ذات الصلة.
4. تعديلات واجهة المستخدم/تجربة المستخدم: عندما تقوم بتغيير عناصر واجهة المستخدم (UI) أو تجربة المستخدم (UX)، قدم شرحًا تفصيليًا للأسباب الكامنة وراء هذه التعديلات. بالإضافة إلى ذلك، قم بإرفاق لقطات شاشة قبل وبعد لتوضيح التغييرات وتأثيرها بشكل مرئي، اذا استطعت ان ترفق فيديو للتغيرات يكون أفضل.
5. توضيح تغييرات قاعدة البيانات: إذا قمت بإجراء تعديلات على DB migration، فمن الضروري توضيح سبب هذه التغييرات. تأكد من الإشارة إلى ما إذا كانت هناك علاقات مع tables ذات صلة أو هناك تعديلات مطلوبة في مكان آخر، ربما في واجهة برمجة التطبيقات (API).
6. قم بكتابة الاختبارات: قبل إرسال طلب السحب، اكتب اختبارات الوحدة unit tests أو الاختبارات الشاملة e2e tests. تأكد من أن هذه الاختبارات تمر بشكل صحيح محليًا أولا.
7. قم بالإبلاغ عن أي تأخير محتمل: إذا كان طلب السحب الخاص بك يتطلب مزيدًا من الوقت للاكتمال أو إذا واجهت تأخيرات غير متوقعة، فقم بإبلاغ فريقك أو مدير المشروع بذلك لإدارة التوقعات بشكل فعال.
باتباع هذه الخطوات، ستحسن جودة طلبات السحب الخاصة بك، و ستسهل من فهمك للطلبات التغيرات اذا وجدت، هذا من وجهة نظري المتواضعة، مرحبا بآرائكم.
والله ولي التوفيق.
#pull_requests
#software_development
#software_engineering_concepts
👍2
عندما تقوم بعمل declaration لمتغير من نوع string، فإن هذا الـ string هو في النهاية array of characters بالنسبة للكمبيوتر.
لذلك يحتاج الكمبيوتر إلى معرفة أين يبدأ وأين ينتهي هذا الـ array، ليتمكن من تخزينه بالطريقة الصحيحة وبشكل متتالي في الذاكرة.
في لغة البرمجة C، التي تعتبر lower-level language، أي أنها لغة أقرب إلى machine code مقارنةً بـ user code، يتم استخدام قيمة خاصة تُسمى NUL character في نهاية كل array. هذه القيمة الفارغة تُعطي الكمبيوتر إشارة على أن عدد ال characters في هذا الـ array قد انتهى.
على سبيل المثال:
string name = "mohcin";
يتم تخزين هذا المتغير بهذا الشكل في الذاكرة:
['m', 'o', 'h', 'c', 'i', 'n', '\0']
===»» لماذا؟ لأن بدون الـ NUL character، سيستمر الكمبيوتر في القراءة من الذاكرة دون توقف مما يؤدي إلى سلوك غير محدد وغير معروف، وربما يؤدي إلى crash للبرنامج المكتوب.
- هذا ضروري في اللغات ذات المستوى المنخفض (lower-level languages) لتجنب القراءة المستمرة للذاكرة والنتائج غير المتوقعة.
- أما في لغات البرمجة ذات المستوى الأعلى (higher-level languages)، فلا تحتاج إلى NUL character، لأن هذه اللغات تقوم بحساب طول الـ string او ال array تلقائيًا نيابة عنك.
#fundamental #software #computer #basics
لذلك يحتاج الكمبيوتر إلى معرفة أين يبدأ وأين ينتهي هذا الـ array، ليتمكن من تخزينه بالطريقة الصحيحة وبشكل متتالي في الذاكرة.
في لغة البرمجة C، التي تعتبر lower-level language، أي أنها لغة أقرب إلى machine code مقارنةً بـ user code، يتم استخدام قيمة خاصة تُسمى NUL character في نهاية كل array. هذه القيمة الفارغة تُعطي الكمبيوتر إشارة على أن عدد ال characters في هذا الـ array قد انتهى.
على سبيل المثال:
string name = "mohcin";
يتم تخزين هذا المتغير بهذا الشكل في الذاكرة:
['m', 'o', 'h', 'c', 'i', 'n', '\0']
===»» لماذا؟ لأن بدون الـ NUL character، سيستمر الكمبيوتر في القراءة من الذاكرة دون توقف مما يؤدي إلى سلوك غير محدد وغير معروف، وربما يؤدي إلى crash للبرنامج المكتوب.
- هذا ضروري في اللغات ذات المستوى المنخفض (lower-level languages) لتجنب القراءة المستمرة للذاكرة والنتائج غير المتوقعة.
- أما في لغات البرمجة ذات المستوى الأعلى (higher-level languages)، فلا تحتاج إلى NUL character، لأن هذه اللغات تقوم بحساب طول الـ string او ال array تلقائيًا نيابة عنك.
#fundamental #software #computer #basics
❤2🤝1
من بين الأشياء التي ربما عطلتني في ميسرتي في هندسة البرمجية شيئا ما -رغم انني لا اهتم بهذا التأخر، و لا اقارن نفسي باحد، رغم انني و صلت لهذا بمجهود جبااار جدااا.. بعض فضل الله علي- هي إتباع tutorials معينة لتعلم شيء جديد في البرمجة.. هذا جعلني فقط هاضما للذاك الدرس/الدورة التعليمي(ة).. لا متعاملا مع المشاكل ومحاولا حلها..
- قم باختيار موضوع معين لبناء تطبيق بسيط حوله، باستخدام تقنيات تريد تعلمها او تريد الغوص فيها اكثر.
- حاول ان تتعلم فيها بدون اتباع دورة معينة (يمكنك البدأ بالبحث عبر الانترنيت..)
- حاول البحث و الغوص في مئات المشكلات التي ستواجهك خلال رحلة ايام التعلم هاته.
- قم بالإنتهاء من بناء التطبيق البسيط بقدر ما تستطيع.
في نهاية كل هذا تأكد انك لن تكون نفس الشخص الذي بدأت مسار لغة البرمجة تلك او tool معينة.. ستكون افضل.
#software #تعلم_مستمر #تعلم #learning #problem_solving
- قم باختيار موضوع معين لبناء تطبيق بسيط حوله، باستخدام تقنيات تريد تعلمها او تريد الغوص فيها اكثر.
- حاول ان تتعلم فيها بدون اتباع دورة معينة (يمكنك البدأ بالبحث عبر الانترنيت..)
- حاول البحث و الغوص في مئات المشكلات التي ستواجهك خلال رحلة ايام التعلم هاته.
- قم بالإنتهاء من بناء التطبيق البسيط بقدر ما تستطيع.
في نهاية كل هذا تأكد انك لن تكون نفس الشخص الذي بدأت مسار لغة البرمجة تلك او tool معينة.. ستكون افضل.
#software #تعلم_مستمر #تعلم #learning #problem_solving
❤3👌1
ال refactoring تعني قطعا ان تقوم بعمل تحسينات على كود شغال سابقا.
أيضا:
- اعادة هيكلة كود ما تعني ان طريقة كتابة الكود سيتم تحسينها، لكن دون تغيير الوظيفة التي يؤديها.
- تعني ايضا انك يجب ان تقوم بالتحسين سطرا سطرا،، فلو طلب منك دفع الكود الذي انت شغال عليه -سطرا سطرا- يجب ان تقوم بدفعه للإنتاج و يجب ان يؤدي الوظيفة التي كان يقوم بها من قبل حتى و لو لم تكتمل عملية اعادة الهيكلة.
- و يمكن بدأ تتمة اعادة الهيكلة في مهمة اخرى..
اللهم علمنا و انفعنا بما علمتنا.
#softwaredevelopment #software_engineering_concepts #refactoring #coding
أيضا:
- اعادة هيكلة كود ما تعني ان طريقة كتابة الكود سيتم تحسينها، لكن دون تغيير الوظيفة التي يؤديها.
- تعني ايضا انك يجب ان تقوم بالتحسين سطرا سطرا،، فلو طلب منك دفع الكود الذي انت شغال عليه -سطرا سطرا- يجب ان تقوم بدفعه للإنتاج و يجب ان يؤدي الوظيفة التي كان يقوم بها من قبل حتى و لو لم تكتمل عملية اعادة الهيكلة.
- و يمكن بدأ تتمة اعادة الهيكلة في مهمة اخرى..
اللهم علمنا و انفعنا بما علمتنا.
#softwaredevelopment #software_engineering_concepts #refactoring #coding
❤5
أول ما يجب ان تفكر فيه أثناء البدء في عمل ميزة جديدة في نظام ما هو هل هنالك plug-in/package/library/.. يقوم بالحاجة في وقت اقل، دون الحاجة لبناءه من البداية.. لا حاجة لإعادة بناء العجلة.
هذا يحتاج ان تحول عقليتك من coder/programmer الى software developer/engineer.
هنا ستبدأ بالنمو، و التفكير في المشاريع على انها منتجات و البرمجة هي وسيلة لتحقيقها لا العكس.
#Software #mindset #Softwareengineering
هذا يحتاج ان تحول عقليتك من coder/programmer الى software developer/engineer.
هنا ستبدأ بالنمو، و التفكير في المشاريع على انها منتجات و البرمجة هي وسيلة لتحقيقها لا العكس.
#Software #mindset #Softwareengineering
❤6
15/30 دقيقة تعلم في اليوم، سواء نظريا او تطبيقيا لمفهوم معين على مدى سنوات و بصفة متكررة و ثابتة في هندسة البرمجيات؛ يجعل منك مبرمجا افضل..
قال سيد الخلق صل الله عليه وسلم: "أحب الأعمال الى الله ادومها و ان قل".
تذكر هذا جيدا في هذا المجال.
#software #softwareengineering #contuniuelearning #learning
قال سيد الخلق صل الله عليه وسلم: "أحب الأعمال الى الله ادومها و ان قل".
تذكر هذا جيدا في هذا المجال.
#software #softwareengineering #contuniuelearning #learning
❤13
Mohcin Space
https://www.linkedin.com/posts/%C5%BEiga-benko-a68673151_yesterday-i-watched-ai-fail-in-front-of-15000-activity-7349582970887782400-RtGt?utm_source=share&utm_medium=member_android&rcm=ACoAAA6PPwIBAQxRqfCnsX6egpCWC4PgEE1omkI
يُساعد الذكاء الاصطناعي حقًا من الناحية التقنية (لقد ساعدني شخصيًا) على التفكير بوضوح أكبر (دون عناء التفكير في ال implementation) والبدء في بناء الأشياء دون عناء البحث عن syntax اللغة وما إلى ذلك.. و هذا ربح كبير لانك لن تتذكر جميع ميزات و عيوب اللغة التي تشتغل بها ولن تتذكر جميع ال built-in funtions الخاصة بها.
ال ai صراحة جعلني أكثر إنتاجية، خاصةً عندما يتعلق الأمر بكتابة الكود. ولكنه جعلني أدرك أيضًا مدى صعوبة معرفة الأشياء بعمق.. ومدى اهمية هذه المعرفة العميقة للاشياء.. لاستخدام الذكاء الاصطناعي بفعالية.
ما زلنا بحاجة إلى فهم متين و عميق لأساسيات الأشياء/التقنيات. فحتى مع الذكاء الاصطناعي، مثلا؛ فمع ال ai لا تزال تظهر فجواتي تقنية (حتى في الاستفادة منه). لذا، فإن معرفة الأشياء على المستوى الأساسي لا تزال ضرورية للغاية، (لكن الذكاء الاصطناعي يساعد في التعلم أيضًا، و بسرعة أكبر ).
تنطبق هذه الشكوك/الفجوات التقنية أيضًا على مستوى الشركات.. يساعدنا الذكاء الاصطناعي كشركة أيضًا بلا شك. لكن ما زلنا بحاجة إلى التفكير على المدى الطويل، والأتمتة الذكية، وتعلم كيفية استخدامه كأداة، والتواصل بشكل أفضل بناءً عليه، وسرعةة تنفيذ البرمجيات بشكل أكثر فعالية.
ال ai يتيح سرعة الانتاج، و دقته - اذا كنت فاهما و متمكنا مما تريد بنائه - يساعد ايضا حتى في حالة عدم تمكنك من موضوع معين، فهمو فرصة لاكتشافه و تعلمه بسرعة باستخدم هذه "tools" فهو في الاول و الاخير اداة لا غير.
كلام اقوله لنفسي اولا: انت المهندس و المبرمج اولا لا ال ai،. استخدمه، استفذ منه، تعلمه باستخدامه، و لا تخف.. لا اداة تستتبدل الانسان خصوصا في هندسة البرمجيات.. فهي ليست كود فقط.
و تذكر، ان الله هو مقسم الأرزاق.. اللهم ارزقنا و علمنا و استر عنا.
#AI #software #development #learning
ال ai صراحة جعلني أكثر إنتاجية، خاصةً عندما يتعلق الأمر بكتابة الكود. ولكنه جعلني أدرك أيضًا مدى صعوبة معرفة الأشياء بعمق.. ومدى اهمية هذه المعرفة العميقة للاشياء.. لاستخدام الذكاء الاصطناعي بفعالية.
ما زلنا بحاجة إلى فهم متين و عميق لأساسيات الأشياء/التقنيات. فحتى مع الذكاء الاصطناعي، مثلا؛ فمع ال ai لا تزال تظهر فجواتي تقنية (حتى في الاستفادة منه). لذا، فإن معرفة الأشياء على المستوى الأساسي لا تزال ضرورية للغاية، (لكن الذكاء الاصطناعي يساعد في التعلم أيضًا، و بسرعة أكبر ).
تنطبق هذه الشكوك/الفجوات التقنية أيضًا على مستوى الشركات.. يساعدنا الذكاء الاصطناعي كشركة أيضًا بلا شك. لكن ما زلنا بحاجة إلى التفكير على المدى الطويل، والأتمتة الذكية، وتعلم كيفية استخدامه كأداة، والتواصل بشكل أفضل بناءً عليه، وسرعةة تنفيذ البرمجيات بشكل أكثر فعالية.
ال ai يتيح سرعة الانتاج، و دقته - اذا كنت فاهما و متمكنا مما تريد بنائه - يساعد ايضا حتى في حالة عدم تمكنك من موضوع معين، فهمو فرصة لاكتشافه و تعلمه بسرعة باستخدم هذه "tools" فهو في الاول و الاخير اداة لا غير.
كلام اقوله لنفسي اولا: انت المهندس و المبرمج اولا لا ال ai،. استخدمه، استفذ منه، تعلمه باستخدامه، و لا تخف.. لا اداة تستتبدل الانسان خصوصا في هندسة البرمجيات.. فهي ليست كود فقط.
و تذكر، ان الله هو مقسم الأرزاق.. اللهم ارزقنا و علمنا و استر عنا.
#AI #software #development #learning
❤5
استخدم الـ AI، فمعظم الكود الذي يُدفع للإنتاج حالياً هو AI generated. لكن الكود ال:
Clean,
Reusable,
Maintainable,
Secure,
Self-commented,
يتبع بنية المشروع (Project Architecture)،
يتبع أسلوب كتابة الكود الخاص بالفريق،
يحل مشكلة محددة،
مقبول من قِبل الفريق الداخلي،
يطابق الـ UI prototype والمتطلبات الوظيفية،
سهل الصيانة،
بسيط،
قابل للتعديل بسهولة،
ومُعلّق عليه جيدًا عندما يحتاج ذلك،
...
كل ما سبق مسؤوليتك أنت كمطور/مبرمج، هذا الكود يجب أن تراجعه أنت، تعدّل عليه أنت، تفهمه أنت، تصحّحه أنت، وتقوم بعمل testing له أنت (functional و unit tests). لو فهمت هذا وعملت به، ستحسّن من جودة عملك، وتزيد من إنتاجيتك، وتطوّر من مستواك أيضًا.
*ولا تنسَ أن تتعلّم وتخصص وقتًا للتعلّم (لأنك تحتاجه سواءً بالـ AI أو من دونه).
#coding #programming #softwareEngineering #software #ai
Clean,
Reusable,
Maintainable,
Secure,
Self-commented,
يتبع بنية المشروع (Project Architecture)،
يتبع أسلوب كتابة الكود الخاص بالفريق،
يحل مشكلة محددة،
مقبول من قِبل الفريق الداخلي،
يطابق الـ UI prototype والمتطلبات الوظيفية،
سهل الصيانة،
بسيط،
قابل للتعديل بسهولة،
ومُعلّق عليه جيدًا عندما يحتاج ذلك،
...
كل ما سبق مسؤوليتك أنت كمطور/مبرمج، هذا الكود يجب أن تراجعه أنت، تعدّل عليه أنت، تفهمه أنت، تصحّحه أنت، وتقوم بعمل testing له أنت (functional و unit tests). لو فهمت هذا وعملت به، ستحسّن من جودة عملك، وتزيد من إنتاجيتك، وتطوّر من مستواك أيضًا.
*ولا تنسَ أن تتعلّم وتخصص وقتًا للتعلّم (لأنك تحتاجه سواءً بالـ AI أو من دونه).
#coding #programming #softwareEngineering #software #ai
❤3👍2