Metigator | عصام عبدالنبي @metigatorengineers Channel on Telegram

Metigator | عصام عبدالنبي

@metigatorengineers


زاوية تابعة لقناة metigator للنقاش التقني
رابط المجموعة التفاعلية
https://t.me/+drVAJG2kyPo1NDEx

Metigator | عصام عبدالنبي (Arabic)

هل تبحث عن مكان للنقاش التقني وتبادل المعلومات ذات الصلة؟ إذاً، قناة Metigator هي المكان المناسب لك! تعتبر Metigator واحدة من القنوات الرائدة في عالم التقنية، حيث توفر منصة للمهندسين والمحترفين في مجال التكنولوجيا للتواصل ومناقشة أحدث الابتكارات والتطورات في هذا المجال. بفضل عضويتك في قناة Metigator، ستحصل على فرصة للتواصل مع زملائك المهندسين، وتبادل الأفكار والمعلومات القيمة التي قد تساعدك في تطوير مهاراتك ومعرفتك التقنية. على رأس هذه القناة الرائعة يقف عصام عبدالنبي، الخبير في مجال التقنية والذي يقود فريق Metigator بإتقان واحترافية. انضم اليوم إلى قناة Metigator على تليجرام بالمستخدم @metigatorengineers، وكن جزءًا من هذه المجتمع التقني المثير للإعجاب!

Metigator | عصام عبدالنبي

21 Jan, 15:54


علاقة الـ OOP بالـ SOLID:

الـ Object-Oriented Programming (OOP) هي كتابة البرامج باستخدام (Objects) ليها بيانات (Data) وسلوكيات (Behaviors). علشان الكود يبقى منظم في الـ OOP، بنستخدم تلات مفاهيم أساسية:

الــ Encapsulation : إخفاء البيانات وتنظيم الوصول ليها.

الــ Inheritance : إعادة استخدام الكود عن طريق الوراثة من كلاس لآخر.

الـ Polymorphism : إمكانية تنفيذ نفس العملية بطرق مختلفة.

لكن المشكلة إن الـ OOP من غير ضوابط ممكن يتحول لكابوس!

- ممكن تكتب كلاس واحد بيعمل كل حاجة (Violation of SRP).

- ممكن تضيف feature جديدة فتكسر الكود القديم (Violation of OCP).

- ممكن ترث من كلاس مش مناسب فتحصل أخطاء غريبة (Violation of LSP).

- ممكن تعمل interface كبير مليان methods مش محتاجها (Violation of ISP).

ممكن تربط الكود بتاعك بـ implementation معين فتقفل على نفسك (Violation of DIP).

هنا بيجي دور SOLID Principles عشان تنظم ليك الحوارات دي:

SOLID هي مجموعة من القواعد اللي بتساعدك تكتب كود نظيف، سهل التعديل، وسهل الفهم.

كل مبدأ في SOLID بيحل مشكلة معينة في الـ OOP

هتلاقي ده وأكتر في سلسلة الــ design principles على قناة Metigator

https://www.youtube.com/playlist?list=PL4n1Qos4Tb6ThSyydEJTm7xJ3qEwE8Oyu

Metigator | عصام عبدالنبي

18 Jan, 15:44


تعليق بيفتح النفس على الصبح

Metigator | عصام عبدالنبي

17 Jan, 17:32


طلابنا الاعزاء في الاردن يقدروا الان يلتحقوا بالمجموعة
https://t.me/+APu9Gt-DXrdlNjQx

Metigator | عصام عبدالنبي

17 Jan, 15:51


أعزائي طلاب المملكة الأردنية الهاشمية،
نحن بصدد إنشاء جروب خاص بطلاب الأردن ضمن منصة Metigator لتعزيز التواصل بين الطلاب وتبادل الخبرات.
إذا كنت تتمتع بالنشاط والحيوية، ولديك الرغبة في لعب دور إيجابي كمشرف على جروب Metigator | الأردن، فلا تتردد بالتواصل معي.
نبحث عن قادة طموحين لديهم روح المبادرة لتطوير المجتمع الطلابي الأردني
https://t.me/iabdelnabi

https://t.me/MElseify

Metigator | عصام عبدالنبي

16 Jan, 18:19


تسريب من كورس الـ asp.net core
قريبًا ان شاء الله نكشف الستار⭐️

Metigator | عصام عبدالنبي

16 Jan, 13:22


لو عايز تفهم الحلول بشكل أعمق، لازم الأول تفهم السياق اللي المشكلة حصلت فيه، وده العامل المشترك في كل حلقات القناة.

في حلقة الـ Record، الرحلة بتبدأ بتوضيح مفهوم الفرق بين Value-Based Equality وReference-Based Equality. هتعرف إزاي لما بنقارن بين اتنين Struct، المقارنة بتتم بناءً على القيم اللي جوّاهم (Value-Based Equality)، ولما بنقارن بين اتنين Class، المقارنة بتتم بناءً على العناوين (Reference-Based Equality).

بعد كده، هتشوف إزاي ممكن نخلي الـ Class يتبع مبدأ Value-Based Equality عن طريق Override للـ Equals وGetHashCode، وكمان ال operators == و!=. بس دى طبعًا عملية بتاخد وقت ومملة فى نفس الوقت.

وهنا بييجي دور الـ Record كحل عملي وسريع! الـ Record بتكون Immutable وبتعمل Override للحاجات دي كلها تلقائيًا، وده بيخليها مناسبة جدًا، خصوصًا مع الـ DTOs.


بس هل الـ Struct Record Immutable by default؟
وإيه فايدة With Expression مع الـ Records؟
لو عندك إجابة، شاركنا! ولو مش عارف، الحلقة هتوضح لك كل حاجة مع تفاصيل أكتر:
شاهد الحلقة دلوقتي
متطلبات مسبقة حلقة ال Reference type vs Value type

By: Yasser

Metigator | عصام عبدالنبي

15 Jan, 18:25


الحمد لله حمدًا كثيرًا طيبًا مباركًا فيه.
اللهم أتمم نعمتك وفرجك ونصرك على إخواننا في غزة.

Metigator | عصام عبدالنبي

15 Jan, 12:31


رابط السلسله هنا

Metigator | عصام عبدالنبي

13 Jan, 22:29


ايه الفرق بين طريقة تعريف الـ properties التاليه :
 csharp
public class User
{
public required string Name { get; set; }
public string? Address { get; set; }
public string Email { get; set; }
}

Metigator | عصام عبدالنبي

11 Jan, 10:57


"من لديه القدرة على تكوين تجمعات طلابية نشطة في جامعته لتحقيق الأهداف المذكورة في الإعلان السابق تواصل مع
@MElseify
لتأسيس تجمع رسمي خاص بكم."

Metigator | عصام عبدالنبي

11 Jan, 10:17


السلام عليكم ورحمة الله وبركاته

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

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

كما نهدف إلى تذليل الصعوبات التي يواجهونها في بعض المواد الأكاديمية من خلال تنظيم بوتكامب مكثف يسعى لسد فجوات التعلم وتقديم الدعم اللازم لتعزيز قدراتهم الأكاديمية.

Metigator | عصام عبدالنبي

10 Jan, 19:55


السلام عليكم ورحمة الله وبركاته،
نبحث عن طلاب جامعيين من الأردن وفلسطين وسوريا ليكونوا نقاط اتصال بيننا وبين طلاب هندسة البرمجيات او المهتمين بالمجال
إذا كنت مهتما وممن يتميزوا بالنشاط والحيوية والقدرة على التواصل الفعّال أو تعرف شخصا مناسبا
يرجى التواصل معنا.
@iabdelnabi
@MElseify

Metigator | عصام عبدالنبي

09 Jan, 21:18


فى الصورة لما جينا نطبق ال Where على ArrayList مشتغلتش وجابلنا error
على الرغم ان Where اشتغلت عادى مع ال List
لو حد عارف الاجابة ممكن يشاركنا
ولو مش عارف هتلاقى الاجابة فى الحلقة رقم 3 من سلسلة LINQ

https://youtu.be/8jkN8XCj9Og?si=9WBKenU8VBFrpDc1

Metigator | عصام عبدالنبي

08 Jan, 15:58


السلام عليكم ورحمة الله وبركاته،

مع اقتراب إطلاق أول دورة تعليمية مدفوعه في Mastering ASP NET Core (API)،
نسعى لتقديم تجربة تعليمية مميزة تلبي تطلعاتكم.

نود استطلاع آرائكم واقتراحاتكم من خلال الإجابة على الأسئلة التالية:

1. ما المواضيع الأساسية التي ترغبون في أن تشملها الدورة؟


2. ما أبرز الصعوبات التي واجهتموها أثناء تعلم ASP NET Core (API)
من قبل، وترغبون في أن يتم التركيز عليها في هذه الدورة؟


3. هل هناك مفاهيم أو أمثلة معينة تفضلون تسليط الضوء عليها لتحقيق فهم أعمق؟



مساهمتكم ستكون عونًا لنا في تصميم دورة تلبي احتياجاتكم وتحقق أهدافكم التعليمية. شكرًا لتفاعلكم!

شاركو آرائكم خلال الرابط التالي

https://t.me/c/1720676110/12470

Metigator | عصام عبدالنبي

07 Jan, 13:45


https://www.linkedin.com/posts/iabdelnabi_issamabrabdelnabi-metigator-activity-7282391303391252481-QCT0?utm_source=share&utm_medium=member_desktop

Metigator | عصام عبدالنبي

06 Jan, 13:12


من أكتر الحاجات اللي بحبها في فيديوهات المهندس عصام هو الأسلوب العميق في شرح المشكلة قبل التطرق للموضوع الأساسي.
في حلقة شرح الـ Tuple، بدأ الفيديو بتقديم الـ Array Data Structure، ووضح كيف أن الـ Array تحاول تخزين البيانات بشكل Contiguous في الذاكرة، باستثناء بعض الحالات الخاصة. كما أشار إلى أن الـ Array لها حجم ثابت (Fixed Size)، وده بيسبب Limitations في سيناريوهات معينة.
بعد كده، انتقل لشرح الـ List اللي بنقدر من خلالها نغير الحجم بشكل Dynamic، ووضح أنها مبنية على الـ Array. لكن بالرغم من المزايا دي، كانت الـ List محدودة بسبب كونها Strongly Typed.
عشان كده، تم تقديم الـ ArrayList اللي بتسمح بتخزين عناصر بأنواع مختلفة (Weakly Typed). ومع ذلك، معظم هياكل البيانات دي كانت mutable، يعني تقدر تعدل القيم بداخلها و كانت بتواجه مشاكل في الأداء (Performance) بسبب عمليات الـ Boxing and Unboxing.
والرائع إن كل المقدمة دي كانت في أول خمس دقائق من الحلقة! قبل حتى ما يدخل في شرح الـ Tuple، بياخدك من البداية في سلسلة مثيرة من التفاصيل.
لو عاوز تعرف تفاصيل اكتر عن ال Tuple وال ValueTuple
Tuple:
https://youtu.be/_JofriINlVQ?si=GunZ8jpBv1v9RBua

----Prerequisite----
Reference Type Value Type:
https://www.youtube.com/watch?v=lfGh6r-T-0g

Working With NULL:
https://www.youtube.com/watch?v=6-AdjwK43hM

Metigator | عصام عبدالنبي

05 Jan, 12:57


✨️" الإهتمام بالتفاصيل هو الذي يعمل الفرق بين الشخص العادي والشخص المذهل " ✨️


👈🏻 في درس ال Stream O/I ستتعرف بشكل مفصل على stream والانواع (types ) الموجودة فيها (Back Store,Adapters,Decorater)..

✅️ ستفهم المراحل والتحولات التي يمر بها الكود الذي تكتبه حتى يتم تنفيذه على مستوى Operating Systeme  الفرق بين managed code و ummanged code ، مفهوم Dispose و using ومتى نستعملهم وعلاقة using
  ب try /cacth
وايه دور finalizer و..

💬 معلومات غزيرة وفائدة عظيمة وكأنه كورس كامل في درس واحد 😊
هنا يكمن التميز .. أن تجمع كل هذه المعلومات في درس واحد بترابط وتسلسل منطقي وشرح ذكي .

✅️ انت كمبرمج اهتمامك بالمعلومات الدقيقة وفهمها والغوص في تفاصيلها سيكون له فرق كبير في تطورك و نجاحك في المجال وليس مجرد فهم سطحي لأسماء الكلاسات وكيف استعمل
FileStream/StreamReader / StreamWriter/... 😑

مشاهدة ممتعة 😇
https://youtu.be/XG3AY2MDj7M?feature=shared

Metigator | عصام عبدالنبي

04 Jan, 12:52


اي تساؤلات أثناء دراستكم لمحتوى القناه
اكتبوه في الجروب التفاعلي وان شاء الله أصدقائكم في رحلة التعلم والمشرفين يساعدوكم للوصول لاقصى استفاده

رابط المجموعة التفاعليه

https://t.me/+drVAJG2kyPo1NDEx

Metigator | عصام عبدالنبي

03 Jan, 17:01


https://youtu.be/5HvXbBj7ES0

من الحلقات المهمه جدا في سلسلة ال ef core

تتيح لك EF-Core التعامل مع SQL Queries عند العمل مع قاعدة بيانات . استعلامات SQL مفيدة جدا جدا في هذه الحالات
• إذا كان الاستعلام الذي تريده لا يمكن التعبير عنه باستخدام LINQ.
• إذا تسبب استعلام LINQ في توليد SQL غير فعال من جهة EF.
• استعلامات SQL أن تُعيد أنواع بدون PK.

اذا كنت تريد التعمق في فهم كيفية التفاعل بين الORM ومكونات قاعدة البيانات المختلفة مثل Views و stored procedures وSQL statements و scalar-valued functions و table-valued functions

بالإضافة إلى Global Query Filter
و ترغب في الحصول على نظرة عميقة ومفصلة، أنصحك بشدة بمتابعة الدرس.

لن يكون هناك فقط فهم أعمق لهذه المفاهيم، ولكن أيضًا ستحصل على فرصة لرؤية كيف يمكن تحسين أداء استعلاماتك.
#إعادة_نشر

Metigator | عصام عبدالنبي

03 Jan, 15:08


من المفارقات الغريبة أن يستفيد المرء من مادة علمية تضيف إلى فكره وتُثري عمله، لكنه يتردد في مشاركتها مع الآخرين. لماذا لا يُسهم في نشر هذا الخير لمن قد يستفيد منه؟

وفي المقابل، نجد إصرارًا على تداول محتوى هزيل، يفتقر إلى القيمة، بل يتسبب أحيانًا في توجيه الناس نحو الضرر بدل النفع.

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

Metigator | عصام عبدالنبي

01 Jan, 13:51


السلام عليكم ورحمة الله وبركاته

وصلتني استفسارات من بعض المتابعين حول القلق من أن تكون المنصة مدفوعة.

أولًا: تسعير المنصة سيكون في متناول الجميع، بإذن الله.

ثانيًا: أي تفاعل منكم، سيحظى بتقدير خاص وستُمنح كوبونات مخصصة بناءً على مستوى التفاعل، وسيتم تحديد قيمة الخصومات بناءً على الكورسات المشمولة في العروض.

باختصار: كل مشاركة، مهما كانت بسيطة، سيكون لها مقابل بإذن الله.

أما الحالات الخاصة، سيتم النظر فيها بعناية وتقديم الدعم المناسب.

دمتم بخير ووفقكم الله لكل خير ورحلة تعلم موفقه.

Metigator | عصام عبدالنبي

31 Dec, 16:51


بلغنا الله وإياكم رمضان. ♥️

Metigator | عصام عبدالنبي

30 Dec, 16:42


📢 إجابة على السؤال المتكرر.

متى موعد الكورسات المدفوعه؟ وهتكون ايه؟

الموعد : هيكون بعد الاعلان عن المنصه بفترة قصيرة.

الكورس هيكون كامل غير مجزء
ان شاء الله.

الكورسات اللي مخطط لها بإذن الله الفترة القادمه.

1 - Asp in depth complete guide
2 - blazor in depth complete guide

Metigator | عصام عبدالنبي

30 Dec, 16:09


السلام عليكم
جروب الاسئله مفتوح لمن يحب ترك سؤال او استفسار.

وسيتم الاجابه عليه لاحقا في سلسلة اسئله وأجوبه على اليويتوب.

يمكن ترك سؤالك هنا

دمتم بخير

Metigator | عصام عبدالنبي

30 Dec, 12:45


تم انشاء سلسلة جديدة على قناة اليوتيوب للرد على استفساراتكم على جروب الاسئله

الأسئلة هنا
الإجابة في سلسلة اليوتيوب هنا

Metigator | عصام عبدالنبي

26 Dec, 19:37


السلام عليكم

مقال جديد عن الـ design patterns هنا

أسئلة على المقال هنا

دمتم بخير

Metigator | عصام عبدالنبي

25 Dec, 18:12


السلام عليكم

مقال جديد عن البرمجة غير المتزامنه هنا

أسئلة على المقال هنا

دمتم بخير

Metigator | عصام عبدالنبي

24 Dec, 17:02


السلام عليكم
اللي حابب يترك سؤاله هنا في جروب الاسئله

وان شاء الله المهندس عصام هيجاوب عليها.

تنبيه : بعد ساعة من الآن سيتم غلق باب الأسئله.

Metigator | عصام عبدالنبي

24 Dec, 14:21


كل دالة تحصل على نسخة محلية خاصة بها من المتغير في الستاك الخاص بيها عند تمرير المعامل بغض النظر ذا كان المعامل عبارة عن كلاس (نوع مرجعي) او ستركت (نوع قيمي).
بالنسبة للكلاس النسخة المخزنة في الستاك هي المرجع (البوينتر) الذي يشير إلى الكائن في الذاكرة (الهيب).
كل من المستدعي والميثود يشتركان في الوصول إلى نفس الكائن لذلك التعديلات على اعضاء الكائن تكون مرئية خارج الدالة.
بالنسبة للستركت النسخة المخزنة في الستاك هي نسخة جديدة تماما من الستركت.
هذه النسخة مستقلة تماما لذلك التعديلات داخل الدالة لا تؤثر على الستركت الاصلي في الكود المستدعي.

Metigator | عصام عبدالنبي

24 Dec, 11:36


السلام عليكم
أسئلة اليوم تم نشرها هنا
بالتوفيق

Metigator | عصام عبدالنبي

23 Dec, 18:29


اللي عجبه مشاركات المشرفين الأخيره وحابب يتابعها أول بأول
هتلاقيها هنا

Metigator | عصام عبدالنبي

23 Dec, 16:05


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

Metigator | عصام عبدالنبي

23 Dec, 14:49


الجروب التفاعلي بشكله الجديد
انضم اليه الآن
اضغط هنا

Metigator | عصام عبدالنبي

23 Dec, 10:54


لتفاصيل أكثر عن ال string methods:

١- رابط الشرح على القناه

2- Documentation

Metigator | عصام عبدالنبي

23 Dec, 10:16


By moderator : Yasser

Metigator | عصام عبدالنبي

23 Dec, 10:16


قصة "عمرو وياسر والكنز البرمجي"

في إحدى الليالي الهادئة، قرر عمرو وياسر، وهما صديقان مبرمجان، استكشاف لعبة جديدة مليئة بالتحديات البرمجية. اللعبة كانت تحوي سلسلة من الألغاز النصية (Strings) التي تحتاج لحلول باستخدام طرق C# المختلفة للتعامل مع النصوص. كان هدفهما العثور على الكنز البرمجي المخبأ في نهاية اللعبة.

المستوى الأول: اكتشاف طول النص
💡 الطريقة: Length
أول تحدٍ واجههما كان معرفة طول النص التالي:
"Welcome to the programming adventure!"

📜 الحل:
قال عمرو: "لنحسب طول النص باستخدام Length."

string text = "Welcome to the programming adventure!";
Console.WriteLine($"Text length: {text.Length}"); //output: 37



المستوى الثاني: البحث عن كلمة
💡 الطريقة: Contains
طلب منهما اللغز التالي: "ابحث عن الكلمة 'programming' في النص."

📜 الحل:
قال ياسر: "سأبحث عن الكلمة باستخدام Contains."


if (text.Contains("programming"))
{
Console.WriteLine("'programming' is found!"); //output: 'programming' is found!
}
else
{
Console.WriteLine("'programming' is not found.");
}


المستوى الثالث: استبدال الكلمات
💡 الطريقة: Replace
طلب اللغز استبدال كلمة "programming" بـ "coding".

📜 الحل:
قال عمرو: "لنستخدم Replace!"
string updatedText = text.Replace("programming", "coding");
Console.WriteLine(updatedText); // output: Welcome to the coding adventure!


المستوى الرابع: تقسيم النص
💡 الطريقة: Split
في المستوى الرابع، طلب تقسيم الجملة إلى كلمات منفصلة.

📜 الحل:
قال ياسر: "يمكننا فصل الكلمات باستخدام Split."

string[] words = text.Split(' ');
foreach (string word in words)
{
Console.WriteLine(word);
}

/*
output:
Welcome
to
the
programming
adventure!
*/


المستوى الخامس: عكس النص
💡 الطريقة: Reverse
التحدي كان إعادة النص إلى الوراء.

📜 الحل:
قال عمرو: "لنستخدم Reverse لعكس الأحرف."
string reversedText = new string(text.Reverse().ToArray());
Console.WriteLine(reversedText); //output: !erutnevda gnimmargorp eht ot emocleW



المستوى السادس: إزالة الأحرف الزائدة
💡 الطريقة: Trim
واجهوا نصًا يحتوي على مسافات زائدة:
" Hidden treasure here! "

📜 الحل:
قال ياسر: "لنستخدم Trim لإزالة المسافات الزائدة."
string hint = "   Hidden treasure here!   ";
string trimmedHint = hint.Trim();
Console.WriteLine(trimmedHint); //output: Hidden treasure here!


المستوى السابع: تحويل النصوص
💡 الطريقة: ToUpper و ToLower
طلب منهم تحويل النص إلى الأحرف الكبيرة.

📜 الحل:
قال عمرو: "سأجرب ToUpper و ToLower."
Console.WriteLine(text.ToUpper()); //output: WELCOME TO THE PROGRAMMING ADVENTURE!
Console.WriteLine(text.ToLower()); //output: welcome to the programming adventure!



المستوى الثامن: التحقق من البداية والنهاية
💡 الطريقة: StartsWith و EndsWith
كان عليهم التأكد من أن النص يبدأ بـ "Welcome" وينتهي بـ "adventure!".

📜 الحل:
قال ياسر: "سأستخدم StartsWith و EndsWith للتحقق."


if (text.StartsWith("Welcome"))
Console.WriteLine("Text starts with 'Welcome'!"); // output: Text starts with 'Welcome'!
if (text.EndsWith("adventure!"))
Console.WriteLine("Text ends with 'adventure!'"); // output: Text ends with 'adventure!'



المستوى التاسع: استخراج النصوص
💡 الطريقة: Substring
طلب منهم استخراج كلمة "coding" من النص المعدل.

📜 الحل:
قال عمرو: "لنستخدم Substring لاستخراج النص."
string part = updatedText.Substring(15, 6);
Console.WriteLine(part); // output: coding


المستوى العاشر: تحديد الموقع
💡 الطريقة: IndexOf
طلب منهم تحديد موقع كلمة "adventure".

📜 الحل:
قال ياسر: "سأستخدم IndexOf."

int index = updatedText.IndexOf("adventure");
Console.WriteLine($"'adventure' starts at index: {index}"); // output :'adventure' starts at index: 22



النهاية:
بعد تجاوز جميع المستويات، اكتشف عمرو وياسر الكنز البرمجي، ووجدوا رسالة تقول:
"Congratulations! You have mastered string methods in C#. Keep coding and exploring!"

🚀 هل استمتعتم بالمغامرة البرمجية؟
يا أبطال الكود! 👨‍💻👩‍💻 بعد رحلتنا المشوقة مع عمرو وياسر لاستكشاف أسرار النصوص في C#، نريد أن نسمع رأيكم! 😍

هل أعجبتكم القصة والأسلوب؟
بتحبوا النوع ده من المنشورات اللي بيجمع بين التسلية والتعلم؟
شاركوا أفكاركم واقتراحاتكم في التعليقات، ومين عارف؟ يمكن تكونوا أبطال المغامرة البرمجية القادمة! 😎🎯

Metigator | عصام عبدالنبي

22 Dec, 16:13


أسئلة المقابلات القادمة ستكون متاحة فقط على جروب النقاشات وليس القناة الاساسيه. ان شاء الله.
إن شاء الله من اول بكرا نرجع ننشر تاني الأسئلة على الجروب التالي

https://t.me/+tb7YDnGnRCJiNjU5

Metigator | عصام عبدالنبي

22 Dec, 15:03


Great Job @Nour Ajleh

Metigator | عصام عبدالنبي

22 Dec, 14:49


لمزيد تفصيل شاهد الحلقة التاليه.

https://youtu.be/z6eBV2iPEC8?si=e-zdpmtfCogC-8xy

Metigator | عصام عبدالنبي

22 Dec, 14:47


ما هي yield؟

في لغة C#، الكلمة المفتاحية yield تستخدم لإنشاء ما يسمى بـ "المجموعات التي يتم تعدادها" (Enumerables). هذه المجموعات لا يتم تحميل جميع عناصرها في الذاكرة دفعة واحدة، بل يتم توليد عنصر واحد في كل مرة يتم استدعاء المجموعة. هذا يوفر كفاءة في الذاكرة وخاصة عند التعامل مع مجموعات كبيرة من البيانات.

متى تستخدم yield؟

* عند وجود مجموعة كبيرة من البيانات: لتجنب تحميل كل البيانات في الذاكرة دفعة واحدة.
* عند الحاجة إلى توليد عناصر بشكل تدريجي: مثلاً، عند توليد سلسلة من الأرقام أو الحروف.
* عند العمل مع مصادر بيانات غير محدودة: مثل قراءة ملف كبير أو قاعدة بيانات.

أنواع yield:

* yield return: تستخدم لإرجاع قيمة واحدة في كل مرة يتم استدعاء المجموعة.
* yield break: تستخدم لإنهاء عملية التعداد.

مثال بسيط:

public static IEnumerable<int> GenerateNumbers()
{
for (int i = 0; i < 10; i++)
{
yield return i;
}
}


في هذا المثال، الدالة GenerateNumbers لا تقوم بإرجاع قائمة كاملة من الأرقام من 0 إلى 9، بل تقوم بتوليد رقم واحد في كل مرة يتم استدعائها.

كيف يتم استخدامها؟

foreach (int number in GenerateNumbers())
{
Console.WriteLine(number);
}


عند تنفيذ هذا الكود، سيتم طباعة الأرقام من 0 إلى 9، ولكن الدالة GenerateNumbers لن يتم تنفيذها بالكامل إلا عند الانتهاء من الحلقية foreach.

مزايا استخدام yield:

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

خلاصة:

الكلمة المفتاحية yield هي أداة قوية في C# تتيح لك إنشاء مجموعات يتم تعدادها بشكل كسول. هذا يوفر العديد من المزايا، خاصة عند التعامل مع كميات كبيرة من البيانات.

Metigator | عصام عبدالنبي

22 Dec, 11:46


الجروب الخاص بقناة التليجرام للمناقشات والتواصل والاستفسار أثناء رحلة تعلمك
https://t.me/+tb7YDnGnRCJiNjU5

Metigator | عصام عبدالنبي

21 Dec, 17:29


📢 إعلان هام: مطلوب مشرفين لجروب القناة على تيليجرام ومستقبلا على المنصة.

نبحث عن أدمن جديد لجروب القناة على تيليجرام بشرط:

أن يكون قد أكمل سلسلة C# بالكامل.
يتمتع بالنشاط على الجروب ويحرص على مساعدة الأعضاء والإجابة عن أسئلتهم.

المزايا:
🎁 حساب مجاني على المنصة.
🎫 أولوية في الحصول على كوبونات الخصم والدورات الحصرية.


لمن يجد في نفسه الكفاءة ويرغب بالمساهمة، يرجى التواصل معي عبر الخاص. 🌟
@iabdelnabi

Metigator | عصام عبدالنبي

21 Dec, 17:18


سلسلة الدوت نت الكاملة على القناة جاهزة تتابعها بثقة تامة.
كل ما تم شرحه مُصمم ليؤهلك للعمل في كبرى الشركات.
بالنسبة لـ ASP.NET، سيتم توفير المحتوى على المنصة الخاصة قريبًا.
تنبيه للأعضاء الكرام: من فضلكم، لا تجيبوا إلا إذا كنتم واثقين من الإجابة.

Metigator | عصام عبدالنبي

28 Nov, 21:26


🔆 تسريبات من الحلقة القادمه


ازاي تستخدم(.Problem solving techniques ) مختلفه في حل المشكلة.

المهندس كان اتكلم عليها في منشور على الفيس اللي حابب يعرف سبب الحلقة القادمه

الرابط :

https://www.facebook.com/share/p/M6h9VKZAHYiUa6s4/

أدمن : محمد الصيفي

Metigator | عصام عبدالنبي

28 Nov, 14:21


https://www.facebook.com/share/p/vBkSTKA5eqFsg6Jm/

Metigator | عصام عبدالنبي

27 Nov, 15:05


https://www.facebook.com/share/7Sv7L5i6xeN1DNDh/

Metigator | عصام عبدالنبي

26 Nov, 19:38


فضلا ممكن تعليقاتكم تكون عند صاحب المنشور حتى يستفيد الجميع.

Metigator | عصام عبدالنبي

26 Nov, 19:28


هل واجهتكم مشكلة مع سلسلة الlinq.،
مثل صاحب البوست؟

ده رابط البوست،
https://www.facebook.com/share/p/xhaGC5Xt58sWDrZa/

اللي حابب ينصحه كيف يدرس السلسلة بشكل جيد. وتجربته معاها

Metigator | عصام عبدالنبي

26 Nov, 06:23


الحمد لله تم استعادة حساب الفيسبوك القديم اللي تم اختراقه بعد 8 اشهر.

Metigator | عصام عبدالنبي

18 Nov, 17:58


السلام عليكم،
تنويه سريع. اي رسائل على الخاص او العام بنحاول نرد عليها في أقرب فرصه عند اتاحة الوقت.
كل شخص له حياته فاكيد مفيش حد متوفر ٢٤ ساعه كل يوم.
ومع ذلك الرد بيكون سريع اذا امكن الاجابة السريعه او تدوين السؤال اذا كان يحتاج لوقت والاجابه عليه في وقت مناسب.

بعض المتابعين يشتكي من حده مني في الرد عليهم.
فكما يصل إلينا رسائل جيدة غرضها التعلم والنفع.

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

ودمتم طيبين.
أدمن : محمد الصيفي

Metigator | عصام عبدالنبي

13 Nov, 15:27


انتظرو قريبًا الاعلان عن أقوى كورس بلازور كامل.
سواء كنت جونيور أو سنيور.
هيأهلك لسوق العمل مباشرة وانت فاهم جدا كل. تفاصيله.

Metigator | عصام عبدالنبي

12 Nov, 19:07


https://youtu.be/CQvM5oMitm4
هل تريد فهم العمق الحقيقي للتعامل مع الوقت في .NET؟

التاريخ والوقت مش مجرد ارقام بسيطة تمثل يوم وساعة! التحديات اللي بتواجه المبرمجين في التعامل مع فروق التوقيت، التوقيت الصيفي والشتوي وتحويل المناطق الزمنية اكتر مما تتخيل. 😱

امتى تختار بين DateTime و DateTimeOffset؟
كيف تتعامل مع UTC و Local Time بدون مشاكل؟

💡 للمبرمج الجونيور: الحلقة دي هتساعدك تكتب كود احترافي وتفهم التحديات اللي ممكن تقع فيها.
💡 للمبرمج السينيور: استعد لمناقشة أعمق وأكتر احترافية لتصميم أنظمة مرنة ومستدامة.

ما تنسونيش من صالح الدعاء!

Metigator | عصام عبدالنبي

12 Oct, 15:47


https://www.facebook.com/share/e5MmhbR9AHyeE5z9/

Metigator | عصام عبدالنبي

09 Oct, 19:19


السلام عليكم
حلقة جديدة ومهمة جدا جدا جدا
https://youtu.be/lj7uFsiLr58

Metigator | عصام عبدالنبي

04 Oct, 11:39


معقول هالحكي؟؟!!

Metigator | عصام عبدالنبي

03 Oct, 16:15


حلقة جديدة ومثيرة! 🎬

تعبت من الكود المتشابك والمليء بالتكرار؟ عاوز تعمل حلول انيقة وقابلة للتوسيع والصيانة؟

📌 في الحلقة الجديدة، سأعرض لك 4 نسخ مختلفة من كود" إنهاء خدمة موظف" بشكل برمجي. سنبدأ بالنسخة الاولية، ونتقدم تدريجيا حتى نصل إلى الحل النهائي الذي يتميز بالوضوح، القوة، وسهولة الصيانة. كل نسخة تقدم فكرة جديدة لتحسين الكود، سواء كنت جونيور أو سينيور، ح تتعلم حاجة جديدة!!

🔥 ليه لازم تشوف الحلقة؟

ستتعلم كيف تحول كود معقد إلى كود بسيط وقابل للفهم.
ستفهم أهمية المبادئ البرمجية مثل Single Responsibility وEncapsulation.

رح تشوف كيف يمكن كتابة كود افضل واللي بالتالي يجنبك المشاكل على المدى الطويل.

لا تفوت هذه الحلقة إذا كنت تسعى لتحسين مهاراتك البرمجية وكتابة كود أكثر احترافية. سواء كنت في بداية مسيرتك أو في قمة خبرتك، هذه الحلقة لك! 👨‍💻👩‍💻

🚀 استعد علشان تكون مبرمجا افضل، حلقة مليئة بالتحسينات والنصائح العملية!

الحلقة نازلة premiere انتظروهت في خلال ساعتين

رابط الحلقة: https://youtu.be/gZ-eT1u6hCg

لا تنسوني من صالح دعاكم.

Metigator | عصام عبدالنبي

28 Sep, 12:43


عشان تتأكد انك متحكم في معلومة بشكل كويس، لازم فعلا تكون قادر تجاوب على 3 اسئلة أساسية:

(إيه) | What: السؤال ده بسيط، بيعرفك ايه هي المعلومة او المفهوم. لو قدرت تشرحه ببساطة وسلاسة، يبقى دي خطوة اولى إنك فاهمه كويس.

(إزاي) | How: ده بيوضح ازاي تقدر تطبق او تستخدم المعلومة في السيناريوهات العملية. هنا بتيجي خبرتك العملية اللي بتخليك تتعامل مع المفهوم بشكل فعلي.

(ليه) | Why: هنا بقى بيبان عمق فهمك. تبدأ بالاجابة بشكل سطحي، زي مثلا "ليه بنستخدم حاجة معينة؟!" لكن العمق بيظهر لما تقدر تشرح الاسباب وراء الاستخدام ده بمستويات متدرجة، كل ما تنزل في الشرح كل ما توضح أكتر انك متمكن ومتمرس.

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

💡 مثلا كلمني عن الانترفيس (Interface) في لغة #C؟

(إيه) | What:
الإنترفيس في C# هو عقد بيحدد الدوال والخصائص اللي الكلاس لازم ينفذها.

(إزاي) | How:
▫️ public class CreditCard : IPaymentMethod { /* implementation */ }
▫️ public interface IPaymentMethod : ITransaction

(ليه) | Why

بيسمحلك تطبق أكتر من انترفيس في نفس الكلاس، وبيحل مشكلة التوريث من كلاس واحد.
بيفصل الكود عن بعضه عن طريق تحديد السلوكيات من غير ما يحدد التنفيذ. (Abstraction/Decoupling)
بيسهل اختبار الوحدة (unit testing) عن طريق السماح باستخدام الكائنات الوهمية (mocks).
بيعزز (loose coupling) عشان تصمم نظام مرن (Flexible).
بيدعم حقن التبعيات (Dependency Injection) لتحسين قابلية التوسع (Extensibility)
بيحسن صيانة الكود عن طريق تشجيع التصميم القائم على الوحدات (Modules).
بيطبق مبدأ تقسيم الانترفيس (ISP) من مبادئ SOLID.
بيسهل تبديل التنفيذات المختلفة في وقت التشغيل Runtime polymorphism.
بيساعدك على تجميع السلوكيات المختلفة بشكل مغلق عن التفاصيل الداخلية Encapsulation.
تقدر تعيد استخدام الكود بتاعك Reusability بسهولة في مشاريع مختلفة او في أقسام مختلفة من المشروع بدون تكرار.
بيحدد عقد بين الكلاس اللي بيطبقه واي كود خارجي يتعامل معاهContract-Based Design وده يعرف ايه السلوكيات اللي لازم تكون موجودة، وده بيزود الثقة في النظام.
بتخلي كل كلاس يركز في حاجة معينة Separation of Concerns وده بيبسط عملية تطوير الكود وصيانته.
بيسهل التكامل ما بين الأنظمة المختلفة Interoperability

في القناة عندي تقريبا تم شرح النقاط اللي فوق باستفاضة!

Metigator | عصام عبدالنبي

25 Sep, 12:12


https://www.facebook.com/share/sCV2rJKMd6bmxQ8k/

Metigator | عصام عبدالنبي

19 Sep, 18:18


https://www.youtube.com/watch?v=4gvOhVekrGI

حلقة لو ركزت فيها، 50 دقيقة كفيلة تنقلك لمستوى اخر

Metigator | عصام عبدالنبي

16 Sep, 13:20


سؤال : هل ال if / else حاجة وحشه؟

الاجابة هتلاقيها هنا :
https://www.facebook.com/share/Xk5EaEVw54y8JAv4/?mibextid=oFDknk

Metigator | عصام عبدالنبي

13 Sep, 12:50


https://www.facebook.com/metigator/posts/122179159580232022

Metigator | عصام عبدالنبي

12 Sep, 15:58


رابط الحلقة: https://youtu.be/jeDZwJxHkDE

Metigator | عصام عبدالنبي

09 Sep, 18:37


انتو دايما بتقولوا "خليك بسيط" واتبع KISS و "ما تضيف إلا اللي تحتاجه" زي مبدأ YAGNI وبنفس الوقت بتقولوا
"لا تتسرع" و "ما تعمل حلول سريعة راح تدفع ثمنها مستقبلا".
طيب كيف المفروض الواحد يتصرف؟ هل أمشي وراء الحلول البسيطة وأخاطر بديون تقنية لاحقا؟ ولا أشتغل على الحل المثالي من البداية وأكسر مبدأ KISS؟
أنا ضايع بين الالتزام بالبساطة أو تقديم حلول أكثر تعقيدا الآن لتجنب المشاكل المستقبلية. كيف المفروض أحافظ على التوازن؟ وهل فعلا في حل وسط بين هذي المبادئ ولا بنضحك على أنفسنا؟

حلقة جديدة

لا تنسوني من صالح دعاكم
https://youtu.be/IO07N1D7K9M?si=osqhuIpaEnAKc47O

Metigator | عصام عبدالنبي

08 Sep, 20:00


Live stream scheduled for

Metigator | عصام عبدالنبي

08 Sep, 07:31


السلام عليكم ورحمة الله وبركاته.
رجاءًا من يتواصل خاص ولديه استفسار أو سؤال، تكون رسالته مكتوبة والسؤال مباشر.
ولا ترسلو رسائل صوتيه لتسهيل الرد عليكم.
ودمتم بخير. 🤍

أدمن : محمد الصيفي

Metigator | عصام عبدالنبي

07 Sep, 21:54


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

أدمن : محمد الصيفي

Metigator | عصام عبدالنبي

07 Sep, 21:52


Live stream finished (1 hour)

Metigator | عصام عبدالنبي

07 Sep, 20:00


Live stream started

Metigator | عصام عبدالنبي

07 Sep, 20:00


Live stream scheduled for

Metigator | عصام عبدالنبي

07 Sep, 19:55


السلام عليكم ورحمة الله وبركاته
ان شاء الله على الساعه 11 بتوقيت القاهرة والاردن
بعد تقريبا 6 دقايق بيكون في لايف على التليجرام مع المهندس عصام دردشه سريعه وردا على الاسئله اذا حد عنده سؤال.

أدمن : محمد الصيفي