Adel Mohammed

Adel Mohammed Software Development

تخيّل إنك فى مكتبة ضخمة مليانة كتب، ومحتاج تجد كتاب معين بسرعة. لو كنت بتدور يدويًا فى الرفوف، هياخد وقت طويل. لكن لو عن...
08/09/2025

تخيّل إنك فى مكتبة ضخمة مليانة كتب، ومحتاج تجد كتاب معين بسرعة. لو كنت بتدور يدويًا فى الرفوف، هياخد وقت طويل. لكن لو عندك شجرة منظمة زي B-Tree بتوجهك للكتاب خطوة بخطوة، بتوصلله فى ثواني! ده زي الـ Index فى قواعد البيانات. يلا نفهم!
طيب، ايه هي B-Tree؟
ال B-Tree هي بنية بيانات هرمية (Tree Structure) بتستخدمها قواعد البيانات زي MySQL وSQL Server عشان تنظم البيانات بشكل متوازن. زي شجرة كبيرة فيها طبقات (Levels) من العقد (Nodes) بتحتوي على مفاتيح (Keys) بترتب البيانات وبتسهل الوصول ليها بسرعة.
إزاي بيشتغل Index فى الذاكرة باستخدام B-Tree؟
الوصف: الـ Index زي دليل سريع بيخلّصك من الدوران فى كل البيانات عشان تجد حاجة معينة. بيتم إنشاؤه على أعمدة (مثل ID أو nameأو....) عشان يسرّع البحث، التحديث، أو الفرز، وB-Tree بتحقق ده.
المثال الواقعي: تخيّل إن كل عقدة فى B-Tree زي رف فى المكتبة، والمفاتيح هي الأرقام أو الأسماء اللي بتوجهك للكتب. B-Tree بيقلل عدد الخطوات عشان تجد البيانات.
مثال عملي: لو عندك جدول موظفين، الـ Index على عمود "EmployeeID" بيستخدم B-Tree عشان يجد موظف معين بسرعة بدل ما يدور فى كل الجدول.
طريقة عمل B-Tree:
الترتيب: العقد بتاعت B-Tree بتحتوي على مفاتيح مرتّبة (مثل 1، 10، 20)، وكل عقدة بتربط بتفرعات (Child Nodes) للبيانات الأكبر أو الأصغر.
التوازن: B-Tree بيحافظ على ارتفاع منخفض، يعني ما بياخدش أكتر من بضع خطوات عشان يوصل للبيانات (زي 3-4 خطوات فى أكبر القواعد).
السرعة: بيدعم عمليات البحث، الإدراج، والحذف بكفاءة عالية لأنه بيستخدم ال Big-O Notation وهى (O(log n)).
طيب، ايه مميزات وتحديات B-Tree؟
المميزات:
بيساعد فى البحث السريع (مثل استعلام SELECT باستخدام WHERE).
مناسب للبيانات الكبيرة لأنه متوازن.
التحديات:
بيستهلك مساحة إضافية فى الذاكرة عشان يخزن الـ Index.
التحديث (INSERT/DELETE) بياخد وقت أكتر لأن لازم يعدل الشجرة.
إمتى تستخدم Index مع B-Tree؟
استخدمه لما عندك جداول كبيرة وبتعمل عمليات بحث متكررة (زي البحث عن طلبات العملاء).
خلّي بالك: ما تضيفش Index على كل عمود، عشان هيأثر على الأداء لما تعمل تحديثات.
خلاصة الخلاصة:
ال B-Tree زي شجرة ذكية بتنظم الـ Index فى قواعد البيانات وبتسرّع عملياتك، لكن استخدامه بحكمة بيحدد نجاحك! فكر كويس هتستخدمه فين عشان تحقق أقصى استفادة.
لو عندك أسئلة أو خبرات مع B-Tree فى مشاريعك، شاركها فى التعليقات! 👇
نفسي أسمع رأيكم كـ Developers وخبراء قواعد البيانات فى 2025! 🚀





تخيّل إنك بتطلب طلبية من مصنع. لو المصنع بعتلك كل القطع اللي فى الطلبية دفعة واحدة قبل ما تستخدمها (حتى لو مش محتاجها دل...
07/09/2025

تخيّل إنك بتطلب طلبية من مصنع. لو المصنع بعتلك كل القطع اللي فى الطلبية دفعة واحدة قبل ما تستخدمها (حتى لو مش محتاجها دلوقتي)، ده زي Eager Loading. لو بتعرفهم إنك عايز قطعة معينة بس ويبعتوها لما تطلبها، ده Explicit Loading. ولو خلوا القطع دي عندك ومش بيبعوها إلا لما تحتاجها فعلاً، ده Lazy Loading. يلا نفهم الفرق بالتفصيل بينهم فى EF Core!
طيب، ايه هما Eager Loading، Explicit Loading، وLazy Loading فى EF Core؟
ده ثلاث استراتيجيات بتستخدمها فى تحميل البيانات من ال Databases باستخدام EF Core. كل واحدة ليها ميزاتها ووقتها المناسب.
طيب ايه هو ال Eager Loading او (التحميل السريع)
ال Eager Loading ده بيجيب كل البيانات المرتبطة دفعة واحدة من الأول، سواء كنت محتاجها دلوقتي أو لأ، باستخدام Include.
زي لما المصنع يبعتلك كل المنتجات فى الطلبية مع بعض، حتى لو هتستخدم جزء صغير بس زى ما وضحنا فى الاول .
مثال عملي: context.Employees.Include(e => e.Project).
الخلاصة: سريع فى الاستخدام لأن كل حاجة جاهزة، لكن بيستهلك ذاكرة كبيرة.
وايه هو ال Explicit Loading او (التحميل الصريح)
ال Explicit Loading ده بقى بتحمل البيانات المرتبطة يدويًا لما تحتاجها، باستخدام Load.
زي لما تتصل بالمتجر وتقولهم "ابعتوا لى القطعة دي بس" لما تحتاجها.
مثال عملي: ()context.Entry(employee).Reference(e => e.Project).Load.
الخلاصة: دا بيعطيك تحكم أكبر، لكن لازم تكون دقيق فى طلباتك.
طيب ايه هو الLazy Loading او (التحميل المتأخر)
ال Lazy Loading ده بيؤخر تحميل البيانات المرتبطة لحد ما تستدعيها فعلاً فى، وعادةً بيحتاج تهيئة virtual properties.
زي لما المنتجات تبقى عند المتجر ويبعوها لك لما تطلبها أو تستخدمها.
مثال عملي: employee.Project بعد تهيئة Lazy Loading.
الخلاصة: يوفر ذاكرة، لكن بيأخر الأداء لو كنت محتاج البيانات كثير.
طيب، ايه الفرق بالظبط؟
تعالى أقولك الفرق فى نقاط:
التوقيت:
ال Eager Loading: بيجيب كل حاجة من الأول بـ Include.
ال Explicit Loading: بيجيب حاجة معينة لما تختارها بـ Load.
ال Lazy Loading: بيجيب حاجة لما تحتاجها فعلاً باستدعاء الـ property.
الأداء:
ال Eager Loading: سريع فى الاستخدام لأن كل حاجة جاهزة، لكن بيستهلك ذاكرة.
ال Explicit Loading: متوازن، حسب اختيارك.
ال Lazy Loading: بيوفر ذاكرة، لكن بيأخر الأداء أحيانًا.
إمتى استخدم كل نوع؟
ال Eager Loading: استخدمه لما البيانات صغيرة ومحتاجها كلها دفعة واحده.
ال Explicit Loading: استخدمه لما تحتاج تحكم دقيق فى البيانات.
ال Lazy Loading: استخدمه لما البيانات كبيرة ومحتاج تحسين الأداء.
خلاصة الخلاصة: اختيار الاستراتيجية فى EF Core بيعتمد على احتياجات المشروع وكمية البيانات. فكر كويس جدا قبل ما تعمل "تحميل لأى حاجة" لأن دا بيأثر على الأداء
لو عندك أسئلة أو تجارب، شاركها فى التعليقات! 👇
نفسي أسمع رأيكم كـ Developers ومهتمين بـ EF Core! 🚀






تخيّل إنك رايح حفلة كبيرة في مكان زي قاعة مؤتمرات. عند الباب، فيه أمن بيطلب منك تذكرة الحفلة أو( بطاقة هويتك). لما تورّي...
03/09/2025

تخيّل إنك رايح حفلة كبيرة في مكان زي قاعة مؤتمرات. عند الباب، فيه أمن بيطلب منك تذكرة الحفلة أو( بطاقة هويتك). لما تورّي التذكرة للأمن ويتأكدوا إنك فعلاً الشخص اللي مسجّل اسمه، ده اسمه Authentication (تأكيد هويتك أو أنت مين؟).

بعد ما تدخل، تلاقي إن فيه أماكن معينة في الحفلة (زي منطقة VIP) ممنوع عليك تدخلها لأن تذكرتك عادية، لكن لو معاك تذكرة VIP، يسمحولك تدخل. ده اسمه Authorization (تحديد صلاحياتك).

كده انت لسه مش فاهم بردو.

تمام؟ يلا بينا نشرح الفرق بالتفصيل!

طيب، ايه هما Authentication وAuthorization؟

الـ Authentication والـ Authorization هما زي بوابتين في أي نظام أو تطبيق بيحتاج أمان. الاتنين مهمين، لكن كل واحد ليه دور مختلف.

قولت بوابتين؟ إزاي يعني؟

تعالى أوضحلك خطوة خطوة.

الـ Authentication (المصادقة):

الـ Authentication هي العملية اللي بتتأكد إن الشخص اللي عايز يدخل النظام هو فعلاً الشخص اللي بيقول إنه مسموح له يدخل. يعني: "إنت مين؟"

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

في عالم البرمجة، الـ Authentication بتحصل لما تدخّل بيانات زي (إيميل وكلمة سر). النظام بيطابق البيانات دي مع اللي عنده، ولو صح، يديك إذن تدخل.

الخلاصة: الـ Authentication بتتأكد من هويتك.

الـ Authorization (التفويض):

الـ Authorization بتيجي بعد ما نتأكد إنك الشخص الصح. هي اللي بتقرر إنت مسموح لك تعمل إيه داخل النظام.

يعني زي لما تدخل مكان وبعد ما يتأكدوا من هويتك، يقولوا لك: "تمام، إنت تقدر تدخل القاعة دي، بس الغرفة اللي جنبها ممنوع عليك."

في البرمجة، الـ Authorization بتحدد صلاحياتك (Permissions). يعني هل إنت Admin فتقدر تعدل أو تمسح بيانات؟ ولا User عادي فممنوع تعمل حاجات زي دي؟

الخلاصة: الـ Authorization بتحدد صلاحياتك.

طيب مين بيحصل الأول؟

ال Authentication بتحصل الأول. لازم يتأكد إنك الشخص الصح قبل ما يديك أي صلاحيات.

ال Authorization بتيجي بعد الـ Authentication. لو هويتك مش صح، مش هيبقى فيه Authorization أصلاً.

الخلاصة:

الAuthentication = مين إنت؟

الAuthorization = إنت مسموح لك تعمل إيه؟

لو وصلت لحد هنا، متنساش تصلي على النبي 🕊️،

وما تنساناش من صالح دعائك! 😊









🔍 إيه هو AsNoTracking() في EF Core؟ال AsNoTracking() هي طريقة (method) في Entity Framework Core بتقول للـ DbContext إنه ...
03/09/2025

🔍 إيه هو AsNoTracking() في EF Core؟
ال AsNoTracking() هي طريقة (method) في Entity Framework Core بتقول للـ DbContext إنه ما يتتبعش تغييرات الكيانات (entities) اللي بيرجعها أثناء الاستعلام.
من المفترض ان ال EF Core بيتتبع كل الكيانات اللي بيجيبها عن طريق الـ ChangeTracker، علشان يقدر يكتشف التغييرات ويحفظها لاحقًا باستخدام ()SaveChanges.

❗️ ليه ده مهم؟
السلوك الافتراضي فى ال EFCore هو ال (Tracking) وده مهم للعمليات اللي فيها تعديل أو حذف، لكن ده بيأدى لتكلفة أداء واستهلاك للذاكرة، خصوصًا في السيناريوهات اللي بيكون الاستعلام عباره عن retrieve للداتا.

✅ ليه تستخدم AsNoTracking()؟

لما تيجي تجيب بيانات فقط للعرض (Read-only)، الـ ChangeTracker بيفعل الAsNoTracking .
وطبعا ال AsNoTracking() بيساعد في الحالات دي لأنّه:

🔹 1. تحسين الأداء
التتبع بيضيف overhead لأن EF Core لازم يدير حالات الكيانات وmetadata.

باستخدام AsNoTracking():

بنلغي overhead بتاع التتبع
الاستعلامات بتبقى أسرع
📌 مفيد جدًا أثناء عمل retrieve لداتا كثيره.

🔹 2. تقليل استهلاك الذاكرة
الكيانات المتتبعة بتتخزن في الذاكرة عن طريق ChangeTracker.
✅ مع AsNoTracking() بيتخطى التخزين ده، وده بيقلل استهلاك الذاكرة — مهم لو بتجيب آلاف السجلات.

🔹 3. مثالي للـ Read-Only scenarios

✅ ناتج استخدام AsNoTracking():

استعلامات أنظف وأسرع

استهلاك موارد أقل
(ملاحظة: تأثير AsNoTracking() يخص الاستعلام اللي بتنادي عليه — مش بيقفّل ChangeTracker على مستوى الـ DbContext بالكامل إلا لو فعلت NoTracking كإعداد افتراضي للـ Context.)

🧠إزاي الـ ChangeTracker بيشتغل؟

فى حاله تفعيل ال ChangeTracker : AsNoTracking بيخزن snapshots للكيانات، بيراقب أي تغيّر في الخصائص، ولما تعمل SaveChanges() بيركّب SQL مناسب (مثل UPDATE أو DELETE).

لما تستخدم AsNoTracking(): EF Core بيتخطى ChangeTracker على الكيانات اللي رجعت من الاستعلام — مفيش تخزين snapshot، ولا متابعة للخصائص، وبالتالي أداء وذاكرة أفضل.

📌 خلاصة:
لو بتقرأ البيانات فقط ومش هتعدلها بعد كده — استخدم AsNoTracking() للـ queries دي علشان أداء أفضل واستهلاك ذاكرة أقل.

لو وصلت لحد هنا متنساش تصلي على النبي ﷺ ❤️
ولا تنسونا من صالح دعائكم 🌸



ايه الفرق بين IEnumerable  و IQueryable ؟أولا ال IEnumerable  و IQueryable هما عبارة عن Interface   بتتعامل مع Collectio...
14/04/2025

ايه الفرق بين IEnumerable و IQueryable ؟
أولا ال IEnumerable و IQueryable هما عبارة عن Interface بتتعامل مع Collection of Data
مثل Array و List وغيرهم.
طيب دلوقتى انت قولت لى ان IEnumerable و IQueryable عباره عن Interface و بيتعاملوا
مع Collection of Data .
ايوه فعلاً قولت كده .
طيب ايه الفرق ؟
تعالى اقولك
أولاً ال IEnumerable هى عباره عن Interface زى ما قولنا بتتعامل مع Collection of Data .
ولكن بتتعامل مع ال Data دى بعد
ما بتجيبها كلها من DataBase و تحطها فى ال Memory وبعد تحميل كل ال Data فى Memory تبدأ عمليه Filtration
وهكذا تتم عملية ال Ex*****on وهذا النوع من ال Ex*****on يسمى بال Deferred Ex*****on .
تمام كده انا فهمت ال IEnumerable ولكن ايه هو ال Deferred Ex*****on ؟
الDeferred Ex*****on هو ان بيتم تنفيذ البيانات بشكل فعلى عند طلب البيانات ولكن مش بتتنفذ عند عمل عملية معينه زى Selection او Filtration أو Grouping وغيرهم ولكن بتتنفذ
عند الطلب الفعلى للبيانات .
تمام ولكن لسه مش عرفنا ايه هو IQueryable .
تعالى اقولك
الIQueryable هى عباره عن Interface وبتتعامل مع Collection of Data ولكن بتتعامل
مع ال Data بعد ما تعملها Filtration فى ال DataBase ثم تأتى بال Data بعد عملية
ال Filtration وتضعها فى Memory و هى ايضا من Ex*****on Deferred وطبعاً أنت عارف ايه هى Deferred Ex*****on .
اخر حاجه بقى امته بستخدم ال IEnumerable وامته بستخدم ال IQueryable.
استخدم ال IQueryable عند التعامل مع بيانات معقده موجوده فى ال DataBase
واستخدم ال IEnumerable عند التعامل مع بيانات غير معقده موجوده فى الذاكره.
لو وصلت لحد هنا متنساش تصلى على النبى.
ولا تنسونا بصالح دعائكم.

ايه هو الفرق بين Git و GitHub ؟ال Git هو DVCS (Distributed Version Control System) .بمعنى ان هو نظام موزع يتحكم فى الإصد...
11/04/2025

ايه هو الفرق بين Git و GitHub ؟
ال Git هو DVCS (Distributed Version Control System) .
بمعنى ان هو نظام موزع يتحكم فى الإصدارات .
يعنى ايه موزع ؟
يعنى لكل مستخدم بيعمل على المشروع بيكون ليه مستودع بيسمى Local Repository وهذا بيسمى مستودع محلى .
طيب يعنى ايه مستودع ؟
المستودع أو Repository هو المكان اللى بيتخزن فيه الملفات الخاصه بالتطبيق او المشروع .
يعنى لكل مستخدم بيعمل على التطبيق Local Repository طيب بيتواصلوا ازاى مع بعض وبيضيفوا اى تعديل ازاى على المشروع ؟
بيبقى فيه مستودع رئيسى أو ما يسمى بالمستودع البعيد Remote Repository يمكن عمله عن طريق GitHub.
طيب ايه هو GitHub ؟
ال GitHub هو عباره عن مستودع رئيسى Remote Repository نقوم بإرسال الملفات إليه.
طيب ازاى بعمل إرسال الملفات لل GitHub ؟
أنا مش بعمل إرسال الملفات مباشرة لل GitHub لابد من المرور ببعض المراحل.
وايه هى المراحل دى ؟
زى ما موجود فى الصوره
1- الWork Space هى بيئه العمل اللى بيكون فيها الملفات الخاصه بالمشروع فى هذه المرحله الملفات بتكون By Default No Tracking يعنى الملفات لم يتم عمل تتبع للتعديلات اللى بتم عليها لأن هى لسه بيتم العمل عليها و التعديل عليها .
2- الStage هى مرحله عمل تهيئه لملفات المشروع لكى يتم ارسالها لل Local Repository وهى أيضاً مرحله لعمل Tracking أو تتبع للتغيرات ونقلها من منطقه Work Space إلى Local Repository و عمل Tracking للملفات الخاصه بالمشروع .
طيب يعنى ايه Tracking ؟
هى عمليه تتبع للتعديلات اللى بتم على الملفات الخاصه بالمشروع .
3-الCommit هى المرحله التى تتم بعد عمل Stage أو مرحله التهيئه يتم عمل Commit لملفات المشروع لكى يتم ارسالها لل Local Repository .
طيب ايه هو Commit ؟
هو عمليه الإحتفاظ بنسخه من التعديلات فى Local Repository .
4- كده بقى معانا نسخه من التعديلات اللى تمت على ملفات المشروع فى Local Repository بعد ما تمت عملية Stage و Commit .
5- كده بقى يمكن نقل الملفات من المستودع المحلى Local Repository إالى المستودع البعيد Remote Repository (GitHub)

لو وصلت لحد هنا متنساش تصلى على النبى .
ولا تنسونا بصالح دعائكم .

Address

Shibin El Kom, Menoufia
Shebin Al-Kom

Website

Alerts

Be the first to know and let us send you an email when Adel Mohammed posts news and promotions. Your email address will not be used for any other purpose, and you can unsubscribe at any time.

Share

Category