{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "مدونة الطبراني - مقالات عن البرمجة",
  "home_page_url": "https://eltabarani.com/",
  "feed_url": "https://eltabarani.com/feed.json",
  "description": "أنا أحمد الطبراني، مهندس برمجيات متخصص في الـ Backend، أحب دائمًا أن أُشارك معرفتي المتواضعة مع الآخرين. ستجد هنا بعض المقالات التي كتبتها عن أشياء مختلفة في عالم البرمجة",
  "icon": "https://eltabarani.com/images/favicon.png",
  "authors": [
    {
      "name": "أحمد الطبراني",
      "url": "https://eltabarani.com/about",
      "avatar": "https://eltabarani.com/images/me.jpg"
    }
  ],
  "language": "ar",
  "items": [
    {
      "id": "https://eltabarani.com/articles/arrays-and-loops",
      "url": "https://eltabarani.com/articles/arrays-and-loops",
      "title": "حل مسائل برمجية باستخدام الأراي والـ Loops",
      "summary": "الأراي كما شرحناها سابقًا هي نوع من أنواع هياكل البيانات التي تستخدم لتخزين مجموعة من القيم والبيانات المرتبطة ببعضها تحت مسمى واحد والأراي تعد من أهم الأمور التي ستستخدمها في مسيرتك البرمجية وستساعدك في حل العديد من المشكلات والمسائل البرمجية على سبيل المثال معك أراي تحتوي عن مجموعة من الأرقام، أريدك أن: ايجاد أكبر عنصر في الأراي ايجاد أصغر عنصر في الأراي حساب مجموع عناصر الأراي البحث في الأراي عن عنصر معين طباعة عناصر الأراي المتكررة ترتيب عناصر الأراي بشكل تصاعدي أو تنازلي ... إلخ ولكل هذه ال...",
      "date_published": "2024-08-25T00:00:00.000Z",
      "date_modified": "2025-06-28T18:51:53.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "arrays",
        "loops",
        "problems",
        "foreach",
        "طباعة عناصر الأراي",
        "طباعة عناصر الأراي بشكل عكسي",
        "طباعة عناصر الأراي بشرط معين",
        "ايجاد اكبر عنصر في الاراي",
        "ايجاد اصغر عنصر في الاراي",
        "حساب مجموع عناصر الاراي",
        "البحث عن عنصر معين في الاراي"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/arrays",
      "url": "https://eltabarani.com/articles/arrays",
      "title": "المصفوفات في البرمجة وطرق التعامل معها",
      "summary": "انتظر لحظة هل توجد مصفوفات في البرمجة؟ نعم توجد مصفوفات في البرمجة وهي تعتبر من أهم المفاهيم في البرمجة وتسمى وهي عبارة عن مجموعة من العناصر التي يمكن تخزينها في متغير واحد لكن عندما نطلق لفظ مصفوفة قد يأتي للبعض أنها تقبل أرقامًا فقط لكن في البرمجة يمكن تخزين أي نوع من البيانات في المصفوفة سواء كانت نصوصًا أو أرقامًا أو رموزًا أو حروفًا... الخ المصفوفة تعني وهذا هو الاسم الشائع لها لذا ستجدني أثناء الشرح أكتب أراي وأعني بها مصفوفة الأراي هي أول سنتعلمها وهي من أهم هياكل البيانات في البرمجة وأكث...",
      "date_published": "2024-08-21T00:00:00.000Z",
      "date_modified": "2025-06-20T12:40:18.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "المصفوفات في البرمجة",
        "الأراي في البرمجة",
        "arrays",
        "1D arrays",
        "2D arrays",
        "3D arrays",
        "كيفية إنشاء أراي في البرمجة",
        "كيفية إنشاء مصفوفة في البرمجة",
        "فائدة إنشاء الأراي",
        "فائدة إنشاء المصفوفة",
        "كيفية تخزين القيم في الأراي",
        "كيفية تخزين القيم في المصفوفة",
        "إنشاء أراي واسناد لها القيم في نفس الوقت",
        "إنشاء مصفوفة واسناد لها القيم في نفس الوقت",
        "اسناد قيم متنوعة في الأراي",
        "اسناد قيم متنوعة في المصفوفة",
        "الخروج من حدود الأراي",
        "الخروج من حدود المصفوفة",
        "الـ string ما هو إلا أراي من الـ char",
        "الـ string ما هو إلا مصفوفة من الـ char",
        "الأراي ثنائية الأبعاد",
        "المصفوفة ثنائية الأبعاد",
        "ماذا عن الأراي ثلاثية الأبعاد وأكثر ؟",
        "ماذا عن المصفوفة ثلاثية الأبعاد وأكثر ؟"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/enum",
      "url": "https://eltabarani.com/articles/enum",
      "title": "أهمية الـ Enum وفوائده في تنظيم البيانات",
      "summary": "في هذه المقالة سنتعرف على الـ وما هي الفائدة منه وكيفية استخدامه في البرمجة والـ هو اختصار لـ وهو أداة تقدمها لك لغات البرمجة لكي تستطيع تعريف مجموعة من القيم الثابتة تحت مسمى واحد بمعنى تخيل أنك لديك أنواع مختلفة من الرتب الخاصة بكل موظف لديك، مثل المدير والموظف والمتدرب والمتطوع يمكنك تخيلها على أنها تصانيف للموظفين بالتالي نحتاج شيء يمثل لنا هذه التصانيف بشكل مقروء وسهل فمثلًا يمكننا أن نقول أننا سنرمز للمدير بالرقم وللموظف بالرقم وهكذا هذا حل جيد ومقبول، هذا يعني أننا حين نرى الرقم نعرف أنه ...",
      "date_published": "2024-08-30T00:00:00.000Z",
      "date_modified": "2025-06-20T12:40:18.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "enum",
        "ما هو الـ Enum",
        "كيفية تعريف الـ Enum",
        "كيفية تعريف متغير من الـ Enum",
        "كيفية تخزين البيانات في متغير من الـ Enum",
        "ما فائدة الـ Enum",
        "كيف يحمينا الـ Enum من الأخطاء",
        "حل مسألة عن طريق الـ Enum"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/functions",
      "url": "https://eltabarani.com/articles/functions",
      "title": "الدوال في البرمجة وأهميتها في تنظيم الكود",
      "summary": "الآن وصلنا للجزء الأهم في البرمجة وهي الدوال ! الدالة وتسمى بالإنجليزية أو تعتبر من أهم المفاهيم في البرمجة وهي تساعدنا في تنظيم البرنامج وتقسيمه إلى أجزاء صغيرة لتسهيل الفهم والتعديل وإعادة استخدام الكود والدالة يمكنك تخيلها كما لو كانت مصنع صغير يستقبل بعض البيانات ويقوم بإنتاج ناتج معين وهذا الناتج يمكن استخدامه في أي مكان في البرنامج <div class=\"niceshape\" </div فمثلًا نريد عمل برنامج بسيط يقوم بجمع عددين، الطريقة الأولى التي قد تتبادر إلى ذهنك هي كتابة الكود في المكان الذي تريد استخدامه فيه...",
      "date_published": "2024-08-28T00:00:00.000Z",
      "date_modified": "2025-12-13T01:45:05.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "الدوال",
        "ما هي الدوال",
        "Functions",
        "Methods",
        "Parameters",
        "معاملات الدوال",
        "الدوال في البرمجة",
        "إنشاء الدوال في البرمجة",
        "استخدام الدوال في البرمجة",
        "فائدة الدوال في البرمجة",
        "أهمية الدوال في البرمجة",
        "دوال تستقبل بيانات",
        "دوال ترجع بيانات",
        "قيم افتراضية لبيانات الدالة",
        "دوال جاهزة في لغات البرمجة"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/if-condition",
      "url": "https://eltabarani.com/articles/if-condition",
      "title": "قاعدة if في البرمجة ! والتحكم في مسار الكود",
      "summary": "حسنًا، في هذا الدرس سنتعرف على قاعدة وهي ببساطة أداة تستخدم لتحديد مسار البرنامج بناءً على شرط معين وتستخدم بشكل دائم في البرمجة وهذا بسبب أنك تستطيع توجيه البرنامج للقيام بأمور معينة بناءً على شروط معينة إذا كان الشخص لديه الصلاحيات المعينة نفذ هذا الجزء من الكود وإلا نفذ جزء آخر إذا كان المبلغ أكبر من ثمن السلعة فقم بشراء السلعة وإلا أرفض عملية الشراء إذا حاول الشخص تسجيل الدخول بشكل خاطئ أكثر من مرات فقم بحظره مؤقتًا ... وغيرها من الأمور التي تحتاج لتحكم في مسار البرنامج والكثير من القرارات ا...",
      "date_published": "2024-08-17T00:00:00.000Z",
      "date_modified": "2026-01-18T22:41:10.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "قاعدة if",
        "أداء الشرط",
        "التحكم في البرمجة",
        "كيف نكتب الشرط if في البرمجة",
        "كتابة أكثر من شرط if في البرمجة",
        "ما معنى else في البرمجة",
        "ما معنى else if في البرمجة",
        "if condition",
        "Ternary Operator"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/loops",
      "url": "https://eltabarani.com/articles/loops",
      "title": "Loops لتكرار الأكواد في البرمجة وأنواعها",
      "summary": "سؤال سريع لو قلت لك أن تكتب برنامجًا يطبع الأرقام من إلى ، كيف ستقوم بذلك؟ الطريقة الأولى التي قد تتبادر إلى ذهنك هي كتابة الأرقام يدويًا: حسنًا جيد ماذا عن من 1 إلى 10؟ حسنًا ... ماذا عن من إلى ؟ أو انتظر لنجرب من إلى ، ما رأيك؟ الأمر يبدو مملًا ومكررًا وأيضًا يحتاج إلى وقت طويل للكتابة لا تعتقد أن هناك شخص عاقل سيقوم بكتابة الأرقام من إلى بهذه الطريقة أو من إلى أكيد أصحاب ومخترعو لغات البرمجة قدموا لنا وسيلة تساعدنا في تكرار كود ما أو مجموعة من الأكواد والأوامر وبالفعل يوجد وسائل كثيرة لتكرار ...",
      "date_published": "2024-08-25T00:00:00.000Z",
      "date_modified": "2025-06-20T12:40:18.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "أنواع الـ Loops",
        "تكرار الأكواد في البرمجة",
        "الحلقات التكرارية في البرمجة",
        "الـ while loop",
        "أمثلة على الـ while loop",
        "الـ do-while loop",
        "أمثلة على الـ do-while loop",
        "الـ for loop",
        "أمثلة على الـ for loop",
        "ملحوظات مهمة عن الـ for loop",
        "continue و break",
        "continue",
        "break",
        "الـ loops المتداخلة",
        "Nested Loops"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/operations",
      "url": "https://eltabarani.com/articles/operations",
      "title": "العمليات الحسابية والمنطقية في البرمجة",
      "summary": "في أي لغة برمجة ستجدها تقدم لك امكانيات لتقوم بعمليات حسابية متنوعة سواء جمع وطرح وضرب وغيرها من العمليات المختلفة وهنا أنواع متنوعة من العمليات التي يمكنك أن تقوم بها ومن ضمنها عمليات حسابية على مستوى الأرقام مثل الجمع و الطرح و الضرب و القسمة و باقي القسمة وهي العمليات البسيطة والتي نعرفها مثل و و عمليات حسابية على مستوى القيم المنطقية والتي تشمل: مثل المقارنات مثل أكبر من و أصغر من و يساوي و لا يساوي وهي عمليات المقارنة الاعتيادية مثل و و سنشرح كل شيء بالتفصيل لاحقًا عمليات بالبوابات المنطقية...",
      "date_published": "2024-08-13T00:00:00.000Z",
      "date_modified": "2025-07-26T10:41:58.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "العمليات الحسابية في البرمجة",
        "الجمع والطرح والضرب والقسمة في البرمجة",
        "مقارنات الأعداد في البرمجة",
        "تطبيقات عملية في البرمجة على الحسابات",
        "البوابات المنطقية في البرمجة",
        "شرح الـ AND والـ OR والـ NOT والـ XOR",
        "عمليات البوابات المنطقية في البرمجة",
        "العمليات الحسابية على مستوى الأرقام الثنائية في البرمجة",
        "عمليات البوابات المنطقية على الأرقام الثنائية",
        "عمليات المقارنات في البرمجة",
        "ما الفرق بين x++ و ++x",
        "ما معنى x++",
        "ما معنى ++x",
        "ما الفرق بين x-- و --x",
        "ما معنى x--",
        "ما معنى --x",
        "ما معنى +=",
        "ما معنى -=",
        "ما معنى *=",
        "ما معنى /=",
        "ما معنى %="
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/struct",
      "url": "https://eltabarani.com/articles/struct",
      "title": "تجميع البيانات باستخدام Struct في البرمجة",
      "summary": "شارفنا على الانتهاء من هذه السلسلة الجميلة عن أساسيات البرمجة واليوم سيكون معنا موضوع مهم جدًا وهو كيفية تجميع البيانات تحت مظلة واحدة وهو مهم جدا لأنه سيمهد لنا الطريق للحديث عن الـ وهو موضوع مهم جدًا في عالم البرمجة وعالم كامل بحد ذاته المهم نحن سنتحدث عن الـ وهو نوع من البيانات يمكنك تعريفه بنفسك وتجميع البيانات تحته وفي لغات أخرى يسمى مثل في الـ والـ لنبدأ بالشرح ومعنا أول سؤال إذا كنت تريد بيانات مستخدم مثلًا ماذا ستفعل ؟ ستقول لي أنا سأقوم بتعريف متغيرات لكل بيانات المستخدم وليكن هكذا هذا ...",
      "date_published": "2024-08-30T00:00:00.000Z",
      "date_modified": "2025-06-20T12:40:18.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "struct",
        "object",
        "ما هو الـ Struct",
        "كيفية تعريف الـ Struct",
        "كيفية تعريف متغير من الـ Struct",
        "كيفية تخزين البيانات في متغير من الـ Struct",
        "أراي من الـ Struct",
        "حل مسألة عن طريق الـ Struct",
        "بداية الطريق لعالم الـ OOP"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/switch",
      "url": "https://eltabarani.com/articles/switch",
      "title": "أمر الـ Switch في البرمجة بديل عن if else ؟",
      "summary": "في هذه المقالة سنتعرف على أمر وهي أداة تُستخدم لرؤية قيمة معينة وتحديد مسار البرنامج بناءً على هذه القيمة فمثلًا لديك متغير ما وهذا المتغير قد يتخذ قيمًا معينة محددة وأنت تعلمها مسبقًا وبناءً على كل قيمة أنت تريد اتخاذ وتنفيذ بعض الأشياء فمثلًا متغير يمثل اللغة التي يتحدث بها الشخص، يمكنك استخدام لتحديد اللغة وطباعة رسالة معينة بناءً على لغة الشخص قد تجد بعض الأشخاص يقولون أنه يمكن استخدام بدلًا من وهذا صحيح لكن يكون أكثر تنظيمًا وسهولة في القراءة في حال كانت القيم محدودة فالـ تتعامل مع القيم ال...",
      "date_published": "2024-08-19T00:00:00.000Z",
      "date_modified": "2025-06-20T12:40:18.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هو الـ switch",
        "كيف نكتب الـ switch في البرمجة",
        "متى نفضل استخدام switch بدلًا من if else",
        "ما الفرق بين switch و match",
        "ما الفرق بين switch و if else",
        "switch case"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/try-catch",
      "url": "https://eltabarani.com/articles/try-catch",
      "title": "التعامل مع الأخطاء باستخدام try-catch",
      "summary": "عند كتابة أي كود قد تحدث بعض المشاكل غير المتوقعة أو أخطاء نحن نتوقع حدوثها لكن نريد أن نتفاداها هذه الأخطاء متنوعة جدًا لذلك يجب علينا أن نكون مستعدين للتعامل معها ونريد وسيلة تساعدنا على التعامل مع هذه الأخطاء بشكل أنيق ومنظم ولا تُزعج المستخدمين الآن لنفترض أننا قمنا بكتابة كود بسيط جدًا يقوم بقسمة رقمين هنا كود بسيط يقوم بأخذ بيانات من المستخدم ثم يقوم بقسمة الرقم الأول على الرقم الثاني ثم يقوم بطباعة الناتج هل ترى أي مشكلة في هذا الكود؟ بديهيًا ستقول لي لا، لكن هناك مشكلة كبيرة في هذا الكود...",
      "date_published": "2024-08-30T00:00:00.000Z",
      "date_modified": "2025-06-16T03:38:12.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "try-catch",
        "error-handling",
        "exceptions",
        "التعامل مع الأخطاء في البرمجة",
        "الأخطاء في البرمجة",
        "كيفية استخدام الـ try-catch",
        "شرح الـ try-catch",
        "شرح الـ Exception",
        "شرح الـ throw",
        "التعامل مع الـ Exception",
        "التعامل مع أكثر من نوع من الـ Exception"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/variables",
      "url": "https://eltabarani.com/articles/variables",
      "title": "ما هي المتغيرات وأنواع البيانات في البرمجة",
      "summary": "لعل أهم شيء ستجده في البرمجة هو تخزين البيانات والتعامل معها سواء كانت هذه البيانات رقمية أو نصية أو غيرها لذا كل لغة توفر لك طريقة لتخزين تلك البيانات المختلفة والتعامل معها عن طريق أنك تنشئ متغيرات والمتغيرات هي رموز أو مسميات تخزن قيمة ما مثل ما كنا نفعله في الرياضيات عندما نقول هنا قمنا بتخزين القيمة في المتغير نفس المفهوم تمامًا في البرمجة نقوم بتعريف متغير ونعطيه قيمة معينة مثل ما هي المتغيرات ؟ المتغيرات هي مجرد مسميات نستخدمها ونعرفها لنعطي لها قيم مثل ما نفعل في الرياضيات عندما نقول أن ...",
      "date_published": "2024-08-09T00:00:00.000Z",
      "date_modified": "2025-07-26T10:41:58.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "المتغيرات",
        "أنواع البيانات",
        "تعريف المتغيرات",
        "تعريف أنواع البيانات",
        "مفهوم المتغيرات",
        "مفهوم أنواع البيانات",
        "تخزين البيانات",
        "ذاكرة الجهاز",
        "الأعداد الصحيحة في البرمجة",
        "الأعداد الكسرية في البرمجة",
        "الحروف في البرمجة",
        "النصوص في البرمجة",
        "القيم المنطقية في البرمجة"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/what-is-programming",
      "url": "https://eltabarani.com/articles/what-is-programming",
      "title": "ما هي البرمجة ومجالاتها في عالم التكنولوجيا",
      "summary": "سنبدأ سلسلة جديدة لكن هذه السلسلة مميزة جدًا لأنها ستركز عن أساسيات البرمجة والتي تعد بداية دخولك إلى عالم البرمجة الممتع والجميل أولًا أحتاج لترسيخ بعض النقاط الأساسية التي ستكون معنا طول السلسلة: أحتاج منك أن تكون شخصًا يحب التعلم والبحث والتجربة لأن هذه هي طبيعة حياة المبرمجين إن علقت في مشكلة أو استصعبت شيئًا فحاول أن تبذل بعض المجهود فيه ثم حاول أن تبحث بنفسك عن الحل وتجرب ثم ليكون أخر ما تفعله هو سؤال شخص ما بعد ما تكون قد بحثت وجربت بنفسك لا تعتمد علي مصدر واحد ابدا، بل نوع في مصادرك وابح...",
      "date_published": "2024-08-09T00:00:00.000Z",
      "date_modified": "2025-06-23T12:13:36.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هي البرمجة",
        "تعلم البرمجة",
        "مفهوم البرمجة",
        "مقدمة في البرمجة",
        "ماذا تعني البرمجة",
        "ما قبل البرمجة",
        "مجالات البرمجة",
        "تخصصات البرمجة",
        "ما هي البرمجة مجالاتها"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/abstraction",
      "url": "https://eltabarani.com/articles/abstraction",
      "title": "مفهوم الـ Abstraction في إخفاء التفاصيل",
      "summary": "اليوم سنشرح ثالث مفهوم من مفاهيم الـ وهو الـ يمكننا إعطاء تعريف بسيط له ونقول أن الـ هو مفهوم يركز على التعامل مع الأشياء دون الاهتمام بالتفاصيل التي تحيط بهذا الشيء سنتكلم عن كيف تم توظيف هذا المفهوم في عالم الـ أصل المشكلة تخيل معي أن لدينا كلاس بسيط يدعى يمثل الموظفين به اسم الموظف وراتبته واسم الشركة التي يعمل بها ولدينا بسيط ودالة تدعى وتخيل معي أن الدالة هذه تجعل الموظف يقوم بشيء ما في عمله الآن عندما نقوم بعمل لهذا الكلاس للموظف يدعى أحمد و آخر لموظف يدعى محمد وآخر لمحمود وكل واحد يعمل في...",
      "date_published": "2023-03-17T00:00:00.000Z",
      "date_modified": "2025-07-08T23:44:32.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "أحد مبادئ الـ OOP",
        "ما هو مفهوم الـ Abstraction",
        "التجريد في الكلاسات",
        "مفهوم التجريد في عالم الـ OOP",
        "إنشاء Object من كلاس به Abstract Member",
        "ما هو الـ Abstract Class",
        "عدم استطاعتنا وراثة أكثر من Abstract Class واحد",
        "ما هو الـ Interface",
        "الفرق بين الـ Interface والـ Abstract Class",
        "استخدام الـ Interface بشكل عملي",
        "استخدام الـ Abstract Class مع الـ Interface",
        "استخدام أكثر من Interface في كلاس واحد"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/classes-and-objects-idea",
      "url": "https://eltabarani.com/articles/classes-and-objects-idea",
      "title": "مفهوم الـ Class والـ Object في الـ OOP",
      "summary": "سنبدأ سلسلة أو دورة صغيرة مكونة من مقالات نتحدث عن أهم المفاهيم في عالم الـ وسنبدأ بأول مقالة بالحديث عن الـ الكلاسات هي بداية أو مدخل للـ وهي اختصار للـ وتعني البرمجة الشيئية أو برمجة كائنية التوجه أحب أن تكون هذه المقالة مقدمة لبعض أساسيات الكلاسات : سنطبق مفاهيم الـ باستخدام لغة ، لكن لن نتطرق لتفاصيل اللغة أو مميزات اللغة أو أي زيادة تقدمها اللغة في الـ ، كل ما سنركز عليه هو المفهوم العام للـ الثابت في عالم الـ وليست الأمور المستحدثة الخاصة بلغة معينة ما هو الـ OOP الـ كمفهوم فهو يسمح لك بتص...",
      "date_published": "2022-09-02T00:00:00.000Z",
      "date_modified": "2026-02-18T23:12:22.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هو الـ OOP",
        "البرمجة الشيئية",
        "البرمجة الكائنية",
        "برمجة كائنية التوجه",
        "ما هو الكلاسات",
        "ما هو الـ class",
        "ما هو الـ object",
        "كيف نستخدم الكلاس",
        "إنشاء الـ Constructor",
        "دوال ومتغيرات داخل الكلاسات",
        "استدعاء الدوال والمتغيرات عن طريق الـ object",
        "ما هي الـ Access Modifiers",
        "ما هي الدوال والمتغيرات الـ Static"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/inheritance",
      "url": "https://eltabarani.com/articles/inheritance",
      "title": "الـ Inheritance ووراثة الكلاسات في البرمجة",
      "summary": "نبدأ المقالة الثالثة في سلسلتنا عن الـ سنتحدث عن أحد اهم مفاهيم الـ وهو الـ الوراثة حسنًا لدينا هنا كلاس بسيط يمثل بيانات الطلاب لدينا متغيرات مثل الاسم والعمر ودوال و لإسناد قيمهم، وهذه الدوال كما تعلمنا في مقالة الفهم الصحيح لمفهوم الـ Encapsulation تفيدنا لأنها تعمل كوسيط يمكننا وضع شروط وقيود قبل اسناد القيم على أي حال أنشأنا اسمه واستعملنا الـ لاعطاء قيم للاسم والعمر، ثم استخدما دالة لطباعة بيانات الطالب أين المشكلة ؟ كل شيء يبدو جيدًا، لكن أين المشكلة ؟ حسنًا هنا لدينا كلاس واحد فقط، دعونا...",
      "date_published": "2023-01-21T00:00:00.000Z",
      "date_modified": "2026-02-18T23:12:22.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "أحد مبادئ الـ OOP",
        "مفهوم الـ Inheritance",
        "وراثة الكلاسات",
        "كلاس يرث كلاس آخر",
        "كيف نقوم بعملية الوراثة تلك",
        "ما هي الـ Access Modifiers",
        "مفهوم الـ Overriding",
        "تطبيق عملي على الـ Overriding",
        "ما هو الـ super ؟",
        "ماذا يحدث للـ Constructor في الوراثة",
        "الأشكال المختلفة للـ Inheritance",
        "ما هو الـ Single Inheritance",
        "ما هو الـ Multilevel Inheritance",
        "ما هو الـ Hierarchical Inheritance",
        "ما هو الـ Multiple Inheritance",
        "مناقشة مشاكل الـ Multiple Inheritance",
        "تشابه أسماء الدوال أو المتغيرات في الكلاسات",
        "التعامل مع مشكلة تشابه أسماء الدوال بالـ Overriding",
        "التعامل مع أكثر من Constructor في آن واحد",
        "مشكلة شكل الألماسة في الكلاسات",
        "ما هي Diamond Problem",
        "كيف تعاملت اللغات القديمة مع مشاكل الـ Multiple Inheritance",
        "هل الـ Multiple Inheritance له فائدة من الأساس",
        "محاولة اللغات الحديثة لاستبدال مفهوم الـ Multiple Inheritance بالـ Interface",
        "ما هو الـ Hybrid Inheritance"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/misunderstanding-encapsulation",
      "url": "https://eltabarani.com/articles/misunderstanding-encapsulation",
      "title": "الفهم الصحيح لمفهوم الـ Encapsulation",
      "summary": "في هذه المقالة من سلسلتنا الصغير عن الـ أحببت أن أوضح مفهوم الـ لأنني لاحظت أن كثير ممن درس الـ لا يفهمون حقيقته أو لديهم نظرة سطحية أو ناقصة عنه فعلى سبيل المثال عندما تدرس الـ فيجب أن تمر على اول مبدأ من مبادئ الـ وهو الـ عندما تسمع للشرح الخاص به ستجد أنه يقول لك الـ هو تحويل المتغيرات المهمة إلى ثم تقوم بعمل دوال وسيطة مثل و لكي تعدل عليها فقط! ثم ينتهي الشرح عند هذه النقطة! هنا تكمن المشكلة لأن الشخص الذي يشرح يقول تلك هذا المعلومة فقط بأنها هي مفهوم الـ حسنًا لنستمع لهذه المحادثة الصغيرة: ...",
      "date_published": "2022-09-02T00:00:00.000Z",
      "date_modified": "2025-12-13T01:45:05.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "أحد مبادئ الـ OOP",
        "ما هو الـ Encapsulation",
        "تجميع  البيانات لي كبسولة واحدة",
        "ما هو مفهوم الـ Encapsulation داخل الـ OOP",
        "أساس المشكلة ولماذا نحتاج للـ Encapsulation",
        "مبادئ الـ Encapsulation",
        "تجميع البيانات المرتبطة ببعضها تحت سقف واحد",
        "تطبيق مفهوم الـ Abstraction",
        "حماية البيانات من أي تلاعب",
        "فكرة الـ Setter والـ Getter",
        "دوال وسيطة بينك وبين البيانات",
        "خلاصة الـ Encapsulation وأهم النقاط",
        "إخفاء البيانات Data Hiding"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/oop-applications",
      "url": "https://eltabarani.com/articles/oop-applications",
      "title": "تطبيقات وأمثلة عملية للـ OOP",
      "summary": "هذه المقالة تعد تطبيقات عملية على سلسلة الـ التي قمنا بشرح أساسياتها لأنني لاحظت أنه برغم من أن الشخص قد يكون فهم مبادئ الـ بشكل جيد، إلا أنه قد يجد صعوبة في تطبيقها أو يفكر في كيف يبني مشروع بها لذلك سنقوم بعمل بعض التطبيقات العملية للـ عن طريق عرض بعض الأمثلة والمشاكل وكيفية حلها بالـ سأبدأ بمثال بسيط ثم نتدرج فيه بالأفكار لتغطية معظم الأفكار والمباديء التي تعلمناها المثال سيكون عمل برنامج بسيط يمثل مدونة، حيث يمكن للمستخدم إضافة مقالات جديدة وعرضها وسنقوم بتطبيق الـ في هذا المثال طبعًا عندما ...",
      "date_published": "2025-01-25T00:00:00.000Z",
      "date_modified": "2025-12-13T01:45:05.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "OOP",
        "تطبيقات على الـ OOP",
        "أمثلة عملية للـ OOP",
        "مثال عملي للـ OOP",
        "تطبيق مباديء الـ OOP",
        "تطبيق مشروع بالـ OOP",
        "أفكار متنوعة للـ OOP",
        "Encapsulation",
        "Abstraction",
        "Inheritance",
        "Polymorphism"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/polymorphism",
      "url": "https://eltabarani.com/articles/polymorphism",
      "title": "مفهوم الـ Polymorphism في تعدد الأشكال",
      "summary": "يسعدني أننا وصلنا لآخر مقالة من سلسلتنا الصغيرة عن أهم مفاهيم الـ سنشرح في هذه المقالة عن مفهوم الـ وهو مفهوم بسيط لكن استخداماته وتطبيقاته ستراها في كل شيء ستجد أنه حين تتعمق في المشاريع الكبيرة وتبدأ في تعلم واستخدام الـ ستجد أنك تتعامل مع الـ بكثرة في حقيقة الأمر نحن تعاملنا وشرحنا القليل عن الـ عندما كنا نشرح المفاهيم السابقة هذا بسبب أنك ستجد أن المفاهيم الأربعة الخاصة بالـ متقاربة جدًا وتتداخل مع بعضها البعض وهذا الأساس أن تفهم هذه المفاهيم وتحاول أن توظفها مع بعضها لتخدم الفكرة والمشروع ا...",
      "date_published": "2023-05-27T00:00:00.000Z",
      "date_modified": "2025-12-13T01:45:05.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "أحد مبادئ الـ OOP",
        "تعريف الـ Polymorphism",
        "أنواع الـ Polymorphism",
        "ما هو الـ Compiler-Time Polymorphism",
        "ما هو مفهوم الـ Function Overloading",
        "ما هو مفهوم الـ Operator Overloading",
        "ما هو الـ Runtime Polymorphism",
        "ما هو مفهوم الـ Function Overriding",
        "ما هو مفهوم الـ Dynamic dispatch",
        "كيف نستخدم الـ Dynamic dispatch",
        "كيف نستخدم الـ Polymorphism بشكل عملي",
        "ما فائدة الـ Dynamic dispatch",
        "استخدام الـ abstract class والـ interface",
        "ما هو الـ Virtual Function"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/dynamic-array",
      "url": "https://eltabarani.com/articles/dynamic-array",
      "title": "شرح وبناء الـ Dynamic Array من الصفر",
      "summary": "اليوم سنبدأ سلسلة جديدة وهي عن هياكل البيانات سأحاول في هذه السلسلة أن أجعلك تفهم هذه الهياكل وتستطيع استخدامها بشكل عملي ومفيد وليس فقط نظريات وتعريفات عامة هذه السلسلة قد تكون طويلة وستتضمن عدة مقالات قبل أن نبدأ أريدك أن تعرف أن هذه الهياكل أو الـ سهلة وليس بها أي صعوبة كما تظن وتعلمها سهل وبسيط لكن المعضلة التي يواجهها الكثيرون هي أنهم لا يعرفون متى وكيف يتم استخدامها لذا أحب أن أوضح بعض النقاط الهامة ولما تحتاج إلى تعلم الـ 1. ما هي الـ ؟ الـ هي هياكل تستخدم لتخزين وتنظيم البيانات بشكل منظم...",
      "date_published": "2024-10-30T00:00:00.000Z",
      "date_modified": "2026-01-17T12:17:12.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هي الـ Dynamic Array",
        "ما هي الـ Static Array",
        "كيفية بناء الـ Dynamic Array",
        "كيفية تغيير حجم الأراي",
        "كيفية إضافة عنصر للأراي",
        "كيفية حذف عنصر من الأراي",
        "الفرق بين الـ Dynamic Array والـ Static Array",
        "أولًا نظرة على الـ Static Array",
        "عيوب الـ Static Array",
        "إضافة عنصر للـ Dynamic Array",
        "زيادة حجم الـ Dynamic Array",
        "حذف عنصر من نهاية الـ Dynamic Array",
        "تقليل حجم الـ Dynamic Array",
        "احضار عنصر من الـ Dynamic Array",
        "تعديل قيمة عنصر في الـ Dynamic Array",
        "إضافة عنصر في أي مكان في الـ Dynamic Array",
        "حذف عنصر من أي مكان في الـ Dynamic Array",
        "عيوب الدالتين insertAt و deleteAt",
        "Array",
        "Data Structure",
        "Dynamic Array",
        "Static Array"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/graph",
      "url": "https://eltabarani.com/articles/graph",
      "title": "مقدمة دخولك لعالم الجراف | Graph Theory",
      "summary": "سنبدأ اليوم في شرح واحد من أهم المواضيع في عالم البرمجة وهو الجراف ، وهو يعد أهم وأكبر هياكل البيانات في عالم البرمجة، وهو يستخدم في العديد من المجالات مثل الشبكات والألعاب والذكاء الصناعي والتعلم الآلي والعديد من المجالات الأخرى هذه المقالة ستكون أكبر من مجرد مقدمة بل ستكون مفصلة قليلًا وستشمل عدة مواضيع منها مقدمة عن الجراف ثم تعريف لشكله وأهم المصطلحات التي تحوم حوله ثم سنتعرف على كيفية بناء الجراف والبحث فيه وأهم الخوارزميات المتعلقة به ومنها الـ والـ وسنعطي بعض الأمثلة العملية على كيفية است...",
      "date_published": "2024-12-14T00:00:00.000Z",
      "date_modified": "2026-01-18T22:41:10.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هو الجراف",
        "ما معنى Node و Edge",
        "أنواع الجراف",
        "كيفية بناء الجراف",
        "Adjacency Matrix",
        "Adjacency List",
        "البحث في الجراف",
        "أهم الخوارزميات المتعلقة بالجراف",
        "الجراف في البرمجة",
        "خوارزمية الـ BFS",
        "خوارزمية الـ DFS",
        "إيجاد أقصر مسار بين نقطتين"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/hash-table",
      "url": "https://eltabarani.com/articles/hash-table",
      "title": "الـ Hash Table وسرعته في البحث عن البيانات",
      "summary": "في عالم هياكل البيانات، لدينا شيء يدعى الـ وهو يعد من أهم الـ من حيث البحث لأنه كما يقال فأنه يستطيع سريع جدا في البحث بمعدل لكن هل فعلًا هو سريع في البحث ؟ سأجيب عن هذا السؤال بسؤال ... لما لا نقوم ببناءه ونرى بأنفسنا ؟ أولًا عندما نبدأ ببناء الـ يجب أن نعرف ما هى الـ لأن الـ يعتمد على دالة مهمة تدعى وهي ببساطة تقوم بتحويل قيم معينة إلى قيم رقمية محصورة في مجال معين وسنفهم هذا بالتفصيل تاليًا لكن قبل أن أبدأ علي أن أتأكد أنك تعرف الـ أو ما يسمى بـ أو الـ وهو باقي قسمة العدد في حالة أنك لا تعرقه...",
      "date_published": "2025-01-16T00:00:00.000Z",
      "date_modified": "2025-12-13T01:45:05.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هو الـ Hash Table",
        "ما هي الـ Hash Function",
        "ما فائدة الـ Hash Function",
        "ماذا لو كان القيمة المراد تحويلها نص",
        "ما هو الـ Hash Table",
        "ما هي الـ Time Complexity للـ Hash Table",
        "هل يمكننا تحسين الـ Hash Table",
        "هل يوجد Hash Function مثالية",
        "بناء كلاس الـ Hash Table",
        "مثال بسيط لاستخدام الـ Hash Table كـ Cache"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/linkedlist",
      "url": "https://eltabarani.com/articles/linkedlist",
      "title": "LinkedList كبديل مرن وقوي للـ Array",
      "summary": "حسنًا وصلنا لثاني مقالة من سلسلة هياكل البيانات هذه المقالة قد تعد أهم مقالة والأساس لما هو قادم سنتحدث عن الـ وسنتطرق للحديث عن أخواتها وأعني بأخواتها الـ والـ في مقالات أخرى وكذلك مع الـ والـ سنتحدث عنها في مقالات أخرى أيضًا قبل أن نبدأ أريدك أن تعرف أن هذه الهياكل أو الـ سهلة وليس بها أي صعوبة كما تظن وتعلمها سهل وبسيط لكن المعضلة التي يواجهها الكثيرون هي أنهم لا يعرفون متى وكيف يتم استخدامها وهذا ما سنحاول توضيحه في هذه السلسلة إن شاء الله وأهم شيء عليك أن تعرفه هي أن معظم الـ تعتمد على الـ ...",
      "date_published": "2024-10-30T00:00:00.000Z",
      "date_modified": "2025-12-13T01:45:05.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هي الـ LinkedList",
        "كيفية بناء الـ LinkedList",
        "الفرق بين الـ LinkedList والـ Array",
        "الـ Node في الـ LinkedList",
        "فوائد الـ LinkedList",
        "إضافة Node جديدة إلى الـ LinkedList",
        "إضافة Node جديدة في بداية الـ LinkedList",
        "إحضار Node من الـ LinkedList عن طريق الـ Index",
        "إحضار Node من الـ LinkedList عن طريق القيمة",
        "إزالة Node من الـ LinkedList من البداية",
        "إزالة Node من الـ LinkedList من النهاية",
        "فكرة الـ Doubly LinkedList",
        "LinkedList",
        "Array",
        "Data Structure",
        "Node",
        "Singly LinkedList",
        "Doubly LinkedList",
        "Circular LinkedList"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/maze",
      "url": "https://eltabarani.com/articles/maze",
      "title": "بناء وحل الـ  Maze بخوارزميات DFS والـ BFS",
      "summary": "بعد أن شرحنا الـ والـ والـ والـ والـ اليوم سنتحدث عن تطبيق عملي ومثير للاهتمام وهو حل الـ أو المتاهة الـ هو مشكلة كلاسيكية في علوم الحاسوب وله تطبيقات عملية كثيرة مثل الألعاب والروبوتات والذكاء الاصطناعي وحل الـ يتطلب استخدام مفاهيم هياكل البيانات والخوارزميات التي تعلمناها سابقًا مثل الـ وخصوصًا خوارزمية الـ و لكن السؤال ... كيف يمكننا حل المتاهة برمجيًا ؟ سأجيب عن هذا السؤال بسؤال آخر ... هل تعرف كيف تحل المتاهة بنفسك ؟ عندما تكون في متاهة حقيقية، ما الذي تفعله ؟ تبدأ من نقطة البداية وتستكشف ا...",
      "date_published": "2025-06-05T00:00:00.000Z",
      "date_modified": "2025-12-13T01:45:05.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هو الـ Maze",
        "تمثيل الـ Maze كـ Graph",
        "خوارزمية الـ DFS",
        "حل الـ Maze",
        "Maze Solver",
        "Graph Traversal",
        "Depth First Search",
        "Breadth First Search",
        "Backtracking"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/queue",
      "url": "https://eltabarani.com/articles/queue",
      "title": "الـ Queue وكيفية بناءه بالـ LinkedList",
      "summary": "لقد شرحنا سابقًا الـ وشرحنا الـ وكيفية بنائها عن طريق الـ الآن سنقوم بشرح الـ وهو مشابه لشقيقه للـ مع فارق بسيط وكما قلت لك في الـ أنك إذا فهمت الـ وكيفية بنائها فإنك ستكون قادرًا على بناء الـ بسهولة وبساطة وهنا الأمر نفسه مع الـ فإذا فهمت الـ وكيفية بنائها فإنك ستكون قادرًا على بناء الـ بسهولة وبساطة لكن هناك فارق بسيط بين الـ والـ فالـ يعمل بطريقة أي أما الـ فهو يعمل بطريقة أي أي ما يدخل أولًا يخرج أولًا مثل فكرة طابور العيش بالطبع كما في الـ ستجد طبعًا ستجد بعض الأشخاص يقومون ببناء الـ عن طري...",
      "date_published": "2024-10-30T00:00:00.000Z",
      "date_modified": "2025-12-13T01:45:05.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هو الـ Queue",
        "مفهوم الـ Queue",
        "بناء الـ Queue",
        "اضافة Node الى الـ Queue",
        "ازالة Node من الـ Queue",
        "عرض آخر عنصر في الـ Queue",
        "فوائد الـ Queue",
        "Queue",
        "LinkedList",
        "Data Structure",
        "Node"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/stack",
      "url": "https://eltabarani.com/articles/stack",
      "title": "الـ Stack وكيفية بناءه بالـ LinkedList",
      "summary": "حسنًا بعد ما انتهينا من فهم الـ وكيفية بناءه سنقوم الآن ببناء الـ عن طريق الـ وصدقني سيكون الأمر سهلًا جدًا وكأنك تقوم بتنفيذ الـ والـ على الـ لكن مع تغير بعض الأسماء والتعديل على بعض الأمور ليتناسب مع مفهوم الـ طبعًا ستجد بعض الأشخاص يقومون ببناء الـ عن طريق الـ أو الـ بطرق معينة وهي طرق صحيحة ولكن نحن هنا سنقوم ببناء الـ عن طريق الـ لنبدأ بالشرح ما هو الـ Stack ؟ كيف نبني ما لا نعرفه ؟ لذا سنبدأ بتعريف الـ ومن ثم سنقوم ببناءه مع العلم أنني قمت بشرح بعض التفاصيل عن الـ في مقالة ما هي دالة الـ R...",
      "date_published": "2024-10-30T00:00:00.000Z",
      "date_modified": "2026-02-18T23:12:22.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هو الـ Stack",
        "مفهوم الـ Stack",
        "بناء الـ Stack",
        "اضافة Node الى الـ Stack",
        "ازالة Node من الـ Stack",
        "عرض آخر عنصر في الـ Stack",
        "فوائد الـ Stack",
        "Stack",
        "LinkedList",
        "Data Structure",
        "Node"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/builder-pattern",
      "url": "https://eltabarani.com/articles/builder-pattern",
      "title": "الـ Builder Pattern عامل البناء الشهير",
      "summary": "اليوم سيكون يومًا ممتعًا لبناء بعض الأمور الكبيرة والمعقدة بطريقة سهلة وبسيطة بإستخدام الـ في هذه المقال البسيطة سنتعرف على أحد الـ وهو عامل البناء الشهير والمحبوب الـ الـ ينتمي إلى عائلة الـ المسؤولة عن عملية إنشاء الـ بطريقة مرنة وبسيطة ومنظمة والـ يعد من أشهر الطرق لإنشاء الـ المعقدة التي تحتوي على العديد من الخصائص والمتغيرات لكن قبل أن نبدأ في شرح الـ دعونا نتعرف على المشكلة التي يحلها الـ ما المشكلة التي يحلها الـ Builder Pattern ؟ حسنًا لنتخيل أن لدينا كلاس يدعى وهذا الكلاس يهتم بتسجيل ال...",
      "date_published": "2025-03-09T00:00:00.000Z",
      "date_modified": "2025-12-13T01:45:05.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "شرح الـ Builder Pattern",
        "ما هو الـ Builder Pattern",
        "أهمية الـ Builder Pattern",
        "استخدام الـ Builder Pattern",
        "ما المشكلة التي يحلها الـ Builder Pattern",
        "Builder Pattern",
        "Design Patterns",
        "Software Development",
        "Object-Oriented Programming",
        "Creational Design Patterns",
        "بعض التحسينات على الـ Builder Pattern",
        "كيفية اجبار الأخرين على استخدام الـ Builder Pattern فقط",
        "استخدام دالة static بدلا من الـ constructor في الـ Builder Pattern",
        "تطبيق الـ Chaining Interfaces لتعين القيم الإجبارية في دوال",
        "ما هو الـ Fluent Builder"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/strategy-pattern",
      "url": "https://eltabarani.com/articles/strategy-pattern",
      "title": "Strategy Pattern خبير الاستراتيجيات الذكي",
      "summary": "اليوم سنتعلم كيف نصمم نظامًا ذكيًا يتكيف مع التغييرات بسهولة وسلاسة دون الحاجة لتعديل الكود الأساسي بشكل متكرر وسنفعل ذلك باستخدام الـ وهو أحد الـ وهو يندرج تحت عائلة الـ والـ بشكل عام تهتم بكيفية تفاعل الكلاسات مع بعضها البعض وكيفية تبادل البيانات بينها بشكل سلس والـ هوأحد تلك الطرق التي تساعدنا على تحقيق ذلك في هذا المقال، سنستعرض كيف يمكننا استخدام الـ لجعل تطبيقاتنا أكثر مرونة وقابلية للتوسع والـ يساعدنا على الاختيار والتبديل السلس بين الخوارزميات سواء كانت في الدوال أو الكلاسات المختلفة في ...",
      "date_published": "2025-06-02T00:00:00.000Z",
      "date_modified": "2025-12-13T01:45:05.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "Strategy Pattern",
        "Design Patterns",
        "Behavioral Patterns",
        "Object-Oriented Programming",
        "المشكلة التي يحلها الـ Strategy Pattern",
        "ما هو الـ Strategy Pattern",
        "التطبيق العملي للـ Strategy Pattern",
        "إنشاء الـ Strategy Interface",
        "إنشاء الـ Concrete Strategies",
        "إنشاء الـ Context",
        "استخدام الـ Strategy Pattern",
        "شكل آخر للـ Context",
        "فوائد الـ Strategy Pattern",
        "تطبيق مبدأ Single Responsibility Principle",
        "تطبيق مبدأ Open/Closed Principle",
        "سهولة التبديل بين الاستراتيجيات"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/api-concept",
      "url": "https://eltabarani.com/articles/api-concept",
      "title": "مفهوم الـ API وأهميته في ربط بين التطبيقات",
      "summary": "اهلا بكم جميعًا، سأحاول هنا ان أقوم بشرح مفهوم الـ وكيفية استخدامه سيكون هناك درس منفصل لكيفية عمل وبرمجة الـ إن شاء الله سنستخدم لغة للتطبيق العملي لا اكثر، لكن كل ما سنشرحه هنا من أمور ومفاهيم يمكنكم عمله في أي لغة اخرى ما هو الـ API ؟ الـ اختصار لـ أي وهي تعمل كوسيط لتبادل البيانات ما بين مصدر ما يمتلك البيانات ومستخدم، عميل، مبرمج، او شركة .... يريد الحصول على تلك البيانات فعلى سبيل المثال ان كان لدينا مصدر لديه قاعدة بيانات فإن هذا المصدر سيسمح للمطورين او أي عميل بالوصول لبعض تلك البيانات ...",
      "date_published": "2021-11-30T00:00:00.000Z",
      "date_modified": "2025-12-13T01:45:05.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هو الـ API",
        "ما هو الـ JSON",
        "ما فائدة الـ API",
        "واجهة برمجة التطبيقات",
        "وسيط بين الباك والفرونت",
        "تبادل البيانات بين الـ Server والـ Client",
        "كيفية استخدام الـ API",
        "كيفية استخدام الـ JSON",
        "مثال عملي للاستخدام الـ API",
        "مثال عملي للاستخدام الـ JSON",
        "التعامل مع الـ API"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/build-restful-api",
      "url": "https://eltabarani.com/articles/build-restful-api",
      "title": "بناء RESTful API متوافق مع المبادئ",
      "summary": "في مقالة كيفية التعامل مع أي RESTful API وفهم مكوناته قمنا باعطاء نبذة شاملة لكيفية التعامل مع من وجه نظر الـ أما في هذه المقالة سأقوم بشرح كيف تقوم أن كـ محترم ببناء محترم وكيف يمكنه ان يصمم يقوم باتباع قواعد ومبادئ الـ على قد المستطاع ستجد العديد من العوامل المشتركة بين المقالتين وقد تجد اننا نعيد شرح بعض الاجزاء ذاتها لكن بتفاصيل وزاوية أخرى هذا بالطبع لانهما يتحدثان عن الـ لكن من زاويتين مختلفتين، زاوية الـ في المقالة السابقة وكيفية تعامله مع الـ وزاوية الـ في هذه المقالة في إنشاءه للـ تذكر ...",
      "date_published": "2024-03-20T00:00:00.000Z",
      "date_modified": "2026-02-10T17:25:54.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هو الـ RESTful API",
        "ما هي مبادئ الـ RESTful API",
        "تمثيل وإرسال البيانات على هيئة JSON",
        "كيف نختار الـ Methods / Actions الصحيح في التعبير عن معناه",
        "ما الفرق بين PATCH و PUT",
        "إرسال Status Code يناسب الحدث أو النتيجة",
        "توحيد مسميات الـ Endpoints",
        "الـ Endpoints يجب أن تعبر عن أسماء وليس أفعال",
        "تسمية الــ Resources المتداخلة",
        "وضع أو عدم وضع / في نهاية الـ Endpoint",
        "وضع اصدار للـ API الخاص بك",
        "API Versioning",
        "Idempotent Methods",
        "توحيد شكل الـ Response",
        "التعامل مع الأخطاء بشكل صحيح",
        "Error Handling",
        "تتبع الأخطاء في مكان واحد",
        "Monitoring",
        "ما الفرق بين Stateless و Stateful",
        "في الـ Restful API يفضل استخدام الـ Stateless",
        "أضف Pagination لتسهل تصفح البيانات وتقليل حجمها",
        "أضف معلومات الـ Pagination في الـ Response",
        "تنوع الـ Query Parameters",
        "تخزين البيانات التي عليها طلب مستمر بشكل مؤقت",
        "Caching"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/handle-with-api",
      "url": "https://eltabarani.com/articles/handle-with-api",
      "title": "التعامل مع أي RESTful API وفهم مكوناته",
      "summary": "في مقالة مفهوم الـ API وأهميته في ربط بين التطبيقات قمنا بإعطاء نبذة عن ما هو الـ واعطينا مثال لكيفية التعامل معها هنا سأحاول ان ادخل في تفاصيل أخرى في التعامل مع الـ في المثال الخاص بمقالة مفهوم الـ API استخدما الـ لإحضار بعض البيانات هل هذا ما يفعله الـ فقط ؟ بالطبع لا، الـ كما قلنا هو الوسيط بينك وبين مصدر البيانات او الـ بشكل عام في الحياة الواقعية او في مجال العمل وليكن مجال الويب سيكون الـ الوسيط بين الـ والـ الـ هو المسؤول عن الـ المسؤول عن تخزين البيانات ويصمم الـ يستخدم هذا الـ ليقوم بإ...",
      "date_published": "2022-01-01T00:00:00.000Z",
      "date_modified": "2025-12-13T01:45:05.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "كيف نتعامل مع الـ API",
        "التعامل مع الـ API",
        "ما هو الـ API",
        "ما هي الـ methods",
        "ما وظيفة الـ API",
        "ما وظيفة GET",
        "ما وظيفة POST",
        "ما وظيفة PUT",
        "ما وظيفة PATCH",
        "ما وظيفة DELETE",
        "ما الفرق بين PUT و PATCH",
        "كيف نرسل البيانات من خلال الـ API",
        "ما هي الـ Status Codes",
        "ما هي رموز الحالة في الـ API",
        "أهم رموز الحالة في الـ GET",
        "أهم رموز الحالة في الـ POST",
        "أهم رموز الحالة في الـ PUT",
        "أهم رموز الحالة في الـ PATCH",
        "أهم رموز الحالة في الـ DELETE",
        "ما هي الـ Query Parameters",
        "كيف نقوم بعمل Query على الـ API",
        "عمل Query بأكثر من شرط",
        "عمل Query لترتيب البيانات",
        "عمل Query لوضع حد أقصى للبيانات الراجعة",
        "كيف نقوم بعمل Pagination على الـ API",
        "ما هي الـ Headers",
        "كيف نقوم بإرسال Headers مع الـ API",
        "كيف نقوم بإرسال Token مع الـ API",
        "كيف نقوم بإرسال الـ API Key مع الـ API",
        "كيف نقوم بإرسال الـ Content-Type مع الـ API"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/http-status-codes",
      "url": "https://eltabarani.com/articles/http-status-codes",
      "title": "دليل شامل لـ HTTP Status Codes",
      "summary": "تخيل أنك تتصل بصديقك وتطلب منه شيئًا ما، بعد انتهاء المكالمة سيخبرك بنتيجة طلبك هل نجح في تنفيذه ؟ أم فشل ؟ وإن فشل، لماذا ؟ هذا بالضبط ما تفعله الـ هي أرقام يرسلها الـ للـ لتوضيح نتيجة الطلب الذي قام به فعندما ترسل طلبًا للـ سواء لإحضار بيانات أو إنشاء مستخدم جديد أو حذف مقالة الـ لن يرد عليك ببيانات فقط، بل سيرفق معها رقم يوضح حالة الطلب هل كل شيء تمام ؟ أم هناك مشكلة ؟ وما نوع هذه المشكلة ؟ لماذا نحتاج الـ Status Codes ؟ تخيل معي السيناريو التالي: أنت كـ تريد إحضار بيانات مستخدم معين، فترسل ط...",
      "date_published": "2025-12-13T00:00:00.000Z",
      "date_modified": "2026-01-23T12:59:58.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هي الـ HTTP Status Codes",
        "أنواع الـ Status Codes",
        "رموز النجاح 2xx",
        "رموز إعادة التوجيه 3xx",
        "رموز أخطاء من الـ Frontend 4xx",
        "رموز أخطاء من الـ Backend 5xx",
        "Server Errors",
        "Client Errors",
        "أمثلة على استخدام Status Codes",
        "أفضل الممارسات في استخدام Status Codes",
        "أهمية Status Codes في RESTful API",
        "الفرق بين 200 و 201 و 204",
        "الفرق بين 400 و 401 و 403 و 404",
        "الفرق بين 401 و 403",
        "متى أستخدم 500 و 502 و 503",
        "كيفية اختيار Status Code المناسب"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/async-await",
      "url": "https://eltabarani.com/articles/async-await",
      "title": "الـ async-await كبديل متطور للـ Promise ؟",
      "summary": "سنتكلم في هذه المقالة عن الـ وهو طريقة جديدة للتعامل مع الاكواد التي قد تستغرق وقتًا طويلًا ويعد الطريقة الأكثر شيوعًا حاليًا لبساطتها وسهولتها قبل أن نكمل عليك أولًا ان تقرأ المقالات السابقة التي تكلمنا فيها عن الـ Promise في الجافاسكريبت وإدارة العمليات والـ جحيم الـ Callback وكيفية تجنبه هذه المقالة سنتكلم عن مفاهيم مهمة في عالم البرمجة لان مفهوم الـ أو الدالة الغير متزامنة هو مفهوم مهم جدًا وشائع في عالم البرمجة لذا سأحاول أن اعطيه حقه هنا لكن أولًا ما هي الـ async/await ؟ هذه مجرد ستجدها في...",
      "date_published": "2022-11-16T00:00:00.000Z",
      "date_modified": "2026-02-18T23:12:22.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هي الـ async/await",
        "ما هي الـ Synchronous",
        "عملية متزامنة",
        "مشكلة الـ Synchronous",
        "ما هي الـ Asynchronous",
        "عملية غير متزامنة",
        "دعم الـ Promise لمفهوم الـ Asynchronous",
        "استخدام async/await بدلًا من الـ Promise",
        "استخدام الـ try-catch",
        "مقارنة بين كل من Callback, Promise, Async/Await"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/callback",
      "url": "https://eltabarani.com/articles/callback",
      "title": "جحيم الـ Callback وكيفية تجنبه",
      "summary": "سنشرح في هذا الدرس مفهوم الـ في والأمور التي تدور حوله ومشاكله ما هي دالة الـ callback ؟ أولًا يجب أن نعرف أن دالة الـ هي دالة تقوم باستقبال دالة أخرى كـ ثم يتم استدعاءها في أي مكان داخل الدالة الأمر ليس بأن تستدعي الدالة داخل الـ ، بل أن ترسل الدالة بذاتها كـ لدالة أخرى، ما الفرق ؟ النظرة الخاطئة عن الـ callback حسنا انتبه في المثال التالي هنا لدينا دالة تدعى تقوم بإرجاع مجموع الرقمين ودالة تدعى تقوم باستقبال قيمة وتطبعها عندما تستقبل دالة دالة كهذا هل هذا يسمى ؟ الاجابة بكل بساطة لا لان دالة ل...",
      "date_published": "2022-10-15T00:00:00.000Z",
      "date_modified": "2026-02-10T17:25:54.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هي دالة الـ callback",
        "النظرة الخاطئة عن الـ callback",
        "المفهوم الصحيح لدالة الـ callback",
        "أمثلة على الـ callback",
        "إنشاء الدالة داخل الـ argument ؟",
        "مثال لدالة built-in تستخدم callback",
        "محاكاة عمل setTimeout",
        "Callback Hell",
        "الوعي بمشكلة الـ callback hell",
        "كيف نحل مشكلة الـ callback hell",
        "الشكل الشائع للـ callback hell"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/promise-all",
      "url": "https://eltabarani.com/articles/promise-all",
      "title": "كيفية التعامل مع عدة Promise في آن واحد",
      "summary": "شرحنا في مقالة سابقة عن الـ وكيف نتعامل معها وكنا نشرح كيف نتعامل مع واحد فقط كل مرة لكن احيانا سنحتاج لنتعامل مع أكثر من في آن واحد لذا سنركز في هذه المقالة البسيطة في شرح كيفية التعامل مع أكثر من في آن واحد بطرق مختلفة سواء كـ أو أو سأقوم فقط بشرح كل الطرق الممكنة التي تستطيع من خلالها التعامل مع أكثر من في آن واحد لن اتعمق كثيرًا في هذه الطرق، بل فقط سأعرضها عليك وكيف تستخدمها بشكل مبسط انصحك بقراءة هذه المقالة شرح Sequential و Concurrency و Parallelism لتستوعب الفروق بينهم بشكل أفضل حين نتكل...",
      "date_published": "2023-05-20T00:00:00.000Z",
      "date_modified": "2025-12-13T01:45:05.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هو الـ Promise",
        "استخدام الـ Promise",
        "كيف نتعامل مع أكثر من Promise",
        "مثال عن استخدام أكثر من Promise",
        "جلب البيانات بشكل Sequential",
        "استخدام Promise.then",
        "استخدام Promise.all",
        "استخدام Promise.allSettled إذا حدث أي مشكلة في أحد الـ Promise",
        "استخدام Promise.race",
        "استخدام for await of"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/promise",
      "url": "https://eltabarani.com/articles/promise",
      "title": "Promise في الجافاسكريبت وإدارة العمليات",
      "summary": "في هذه المقالة سنتحدث عن الـ لما هي موجودة وما فائدتها وكيف نتعامل معها وكيف ننشيء خاص بنا ما هو الـ Promise هو يحتوي على دوال وخصائص متنوعة يتعامل مع البيانات التي تستغرق وقتًا المعنى الحرفي له هو وعد أي انه يعدك بالحصول على نتيجة أحيانًا يكون هناك عمليات تحتاج لوقت لكي تنتهي فمثلًا جلب بيانات من أو قراءة ملف فهذه عمليات قد تستغرق وقتًا فالـ هنا يستطيع تولي هذه الأمور وعندما ينتهي من تنفيذ العملية سيخبرك الـ أنه انتهى الوعي بالمشكلة تذكر أنك هنا أنت لا تعرف ولن تستطيع أن تعرف الوقت الذي ستنتهي ...",
      "date_published": "2022-11-08T00:00:00.000Z",
      "date_modified": "2026-02-18T23:12:22.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هو الـ Promise",
        "استخدام الـ Promise",
        "حالات الـ Promise",
        "مثال عن استخدام الـ Promise",
        "التعامل مع الـ reject والـ catch",
        "مشكلة الـ callback hell مع الـ promise",
        "حل مشكلة الـ callback hell في الـ promise",
        "Promises chaining",
        "الـ catch في الـ promises chaining",
        "ما هي الـ Promise.resolve والـ Promise.reject",
        "مثال على استخدام Promise.resolve",
        "مثال على استخدام Promise.reject",
        "ما هي الـ finally في الـ promise",
        "تحويل callback إلى promise",
        "مثال عملي باستخدام دالة fetch",
        "ما هو الـ Response object",
        "تحويل الـ JSON إلى Javascript Object"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/git-advanced",
      "url": "https://eltabarani.com/articles/git-advanced",
      "title": "تكملة أوامر الـ Git والتحكم بالـ HEAD",
      "summary": "في المقالة السابقة تعلمنا أساسيات الـ وأهم الأوامر الأساسية مثل و و و وغيرها ويمكنكم قراءتها من هنا أساسيات الـ Git لتتبع التغييرات في المشاريع في هذه المقالة سنتعمق أكثر في أوامر أكثر تقدمًا تساعدنا على التحكم الكامل في تاريخ المشروع والتنقل بين الـ المختلفة سنتعلم كيف نتراجع عن معين، وكيف نستخدم الـ للسفر عبر الزمن بين نسخ المشروع المختلفة وكيف نحفظ التعديلات مؤقتًا في الـ لنستخدمها لاحقًا git revert commithash نستخدم عندما نريد التراجع عن معين وما يقوم به أنه ينشيء جديد يعكس ويتراجع عن التعدي...",
      "date_published": "2024-04-22T00:00:00.000Z",
      "date_modified": "2026-02-08T00:39:44.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هو أمر git revert commit-hash",
        "ما هو أمر git reflog",
        "ما هو الـ HEAD في الـ Git",
        "كيف نحرك الـ HEAD بين الـ commits",
        "ما هو أمر git reset commit-hash",
        "ما هو أمر git reset --soft commit-hash",
        "ما هو أمر git reset --mixed commit-hash",
        "ما هو أمر git reset --hard commit-hash",
        "جدول لتلخيص الفروق بين soft و mixed و hard في git reset",
        "ما هو أمر git checkout commit-hash",
        "استعادة ملف من commit معين",
        "نقل الـ HEAD إلى commit محدد (detached HEAD)",
        "ما هو الـ Stash",
        "أهم أوامر الـ Stash",
        "ما هو أمر git stash",
        "ما هو أمر git stash list",
        "ما هو أمر git stash pop",
        "ما هو أمر git stash apply stash-id",
        "ما هو أمر git stash drop stash-id"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/git-basics",
      "url": "https://eltabarani.com/articles/git-basics",
      "title": "أساسيات الـ Git لتتبع التغييرات في المشاريع",
      "summary": "اليوم لدينا مقالة دسمة إلى حد ما، سأتكلم في هذه المقالة عن الـ وكيف يعمل وكيف نستفيد منه ونستخدمه وما أهم الأوامر الخاصة به وكيف يفيدنا في تنظيم مشاريعنا وتنظيم طريق العمل ضمن فريق في هذه المقالة سأركز على الـ في بيئة عمل أي على جهازك الشخصي وسأشرح الأساسيات التي تحتاجها لكي تبدأ في استخدامه ثم في مقالة أخرى سنتكلم عن أوامر أكثر مثل و و وغيرها ويمكنكم قراءتها من هنا تكملة أوامر الـ Git والتحكم بالـ HEAD ثم في مقالة أخرى سنتكلم عن مفهوم الـ ويمكنكم قراءتها من هنا Git Branches آلة السفر عبر الأبعا...",
      "date_published": "2024-04-22T00:00:00.000Z",
      "date_modified": "2026-02-18T23:12:22.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هو الـ Git",
        "كيف يتعامل الـ Git مع مشروعك",
        "ما هو الـ Working Directory",
        "ما هو الـ Working Tree",
        "ما هو الـ Local Repository",
        "ما هو الـ Upstream Repository",
        "ما هو الـ Staging Area",
        "ما هو الـ Stash",
        "كيف يتعامل Git مع ملفات المشروع ؟",
        "ما هي الـ Untracked Files",
        "ما هي الـ Tracked Files",
        "ما هي الـ Modified Files",
        "ما هي الـ Staged Files",
        "أهم أوامر الـ Git",
        "ما هو أمر git init",
        "ما هو أمر git status",
        "كيف اتتبع التغيرات التي حصلت في ملفاي  بالـ Git",
        "ما هو أمر git add file-name",
        "نقل ملف إلى مرحلة الـ Staging",
        "ما هو أمر git commit -m nice-message",
        "نقل ملف من مرحلة الـ Staging إلى الـ Local Repository",
        "كتابة رسالة في الـ commit",
        "ما هو أمر git restore file-name",
        "ما هو أمر git restore --staged file-name",
        "استرجاع ملف من مرحلة الـ Staging",
        "ما هو أمر git rm file-name",
        "ما هو أمر git rm --cached file-name",
        "ما هو أمر git log",
        "رؤية تاريخ تغيرات المشروع في الـ Git"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/git-with-branches",
      "url": "https://eltabarani.com/articles/git-with-branches",
      "title": "Git Branches آلة السفر عبر الأبعاد",
      "summary": "أظن أننا في المقالة السابقة أساسيات الـ Git لتتبع التغييرات في المشاريع تحدثنا كثيرًا عن الـ و لكن لا نفهم حقيقتهم بشكل جيد، لذا تاليًا سنتعمق في هذا العالم لذا يمكنني أن أقول أننا الآن وصلنا لأهم المزايا التي يقدمها الـ وهي فكرة الـ لقد ذكرنا سابقًا أن ينشيء سلسلة من الـ وهي النسخ التي تسجل في الـ وهي ما نراه عندما ننفذ فكل ما هو إلا أي نسخة من المشروع بها التعديلات التي حصلت في هذا الـ دعونا نستخدم ونرى حالة المشروع التي لدينا من المقالة السابقة <div class=\"niceshape\" </div ستلاحظ شيء مهم وهو ...",
      "date_published": "2024-04-25T00:00:00.000Z",
      "date_modified": "2026-02-01T22:37:55.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هو الـ branch في الـ Git",
        "ما هو الـ HEAD في الـ Git",
        "مفهوم الـ branch في الـ Git",
        "كيفية إنشاء branch جديد",
        "ما هي الفروع في الـ Git",
        "ما هو أمر git branch",
        "ما هو أمر git switch branch-name",
        "عمل commit في فرع جديد",
        "ما هو أمر git merge",
        "ما هي مشكلة الـ Merge Conflict",
        "مثال تطبيقي على مشكلة الـ Merge Conflict",
        "ما هو أمر git rebase branch-name",
        "حل الـ merge conflict أثناء عملية الـ rebase"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/git-with-remote-repository",
      "url": "https://eltabarani.com/articles/git-with-remote-repository",
      "title": "التعامل مع Remote Repository وموقع GitHub",
      "summary": "نستكمل شرحنا عن الـ وخصوصًا الجزء الخاص بتعامله مع أي في المقالات السابقة تكلمنا عن الـ بشكل عام وأهم أوامره ومميزاته وكنا نطبق كل شيء بشكل أي على جهازك الشخصي دون أي اتصال خارجي بأي شكل من الأشكال يمكنكم قراءة المقالة الخاصة بالأساسيات من هنا أساسيات الـ Git لتتبع التغييرات في المشاريع والمقالة الخاصة بمفهوم الـ من هنا Git Branches آلة السفر عبر الأبعاد وفي هذه المقالة سنتعامل مع الـ ونرى الأوامر الجديدة والمميزات التي يقدمها الـ لتساعدنا على ربط الـ الخاص بنا مع أي أوأكثر بكل سلاسة وكيف نسحب و...",
      "date_published": "2024-04-27T00:00:00.000Z",
      "date_modified": "2026-02-01T22:37:55.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هو الـ Repository",
        "ما هو الـ Local Repository",
        "ما هو الـ Remote Repository",
        "ما الفرق بين الـ Remote Repository والـ Local Repository",
        "ما الفرق بين الـ GitHub والـ Git",
        "أهم أوامر الـ Git في التعامل مع الـ Remote Repository",
        "ما هو أمر git clone",
        "ما هو الـ origin",
        "ما هو أمر git remote",
        "ما هو أمر git remote add remote-name remote-url",
        "ما هو أمر git fetch remote-name branch-name",
        "ما هو أمر git pull remote-name branch-name",
        "ما هو أمر git push remote-name branch-name",
        "نصيحة قبل أن ترفع شيء على الـ Remote Repository",
        "إنشاء branch على الـ Local Repository ورفعه إلى الـ Remote Repository"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/create-database-and-table-in-sql",
      "url": "https://eltabarani.com/articles/create-database-and-table-in-sql",
      "title": "إنشاء قاعدة بيانات وجداول في الـ SQL",
      "summary": "في هذه المقالة، سنتناول أمر الـ في وهو أحد الأوامر الأساسية التي ستحتاجها لإنشاء قواعد البيانات والجداول بمعنى أن لديك أمر لإنشاء قاعدة بيانات ونفس الأمر لإنشاء جدول داخل قاعدة البيانات ما هي قاعدة البيانات ؟ قبل أن نكمل، كيف ستنشيء شيء لا تعرف ما هو ؟ الـ أو قاعدة البيانات وهو كما يوحي الاسم هو مكان لتخزين البيانات بشكل عام وهو يتكون من مجموعة من الجداول بالتالي لنفترض أننا نقوم بعمل تطبيق لمدرسة فهنا سنحتاج إلى قاعدة بيانات لتلك المدرسة وبالتالي سنقوم بإنشاء قاعدة بيانات باسم أو أي اسم آخر تفض...",
      "date_published": "2025-06-13T00:00:00.000Z",
      "date_modified": "2026-01-08T01:35:47.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "CREATE DATABASE",
        "CREATE TABLE",
        "إنشاء قاعدة بيانات",
        "إنشاء جداول SQL",
        "كيفية إنشاء قاعدة بيانات",
        "Database Management System",
        "RDBMS",
        "إنشاء قواعد البيانات",
        "أمر CREATE في SQL",
        "شرح CREATE",
        "تعلم CREATE",
        "إنشاء الجداول",
        "Structured Query Language",
        "SQL Basics",
        "SQL Commands",
        "SQL Syntax",
        "SQL Tutorial",
        "SQL for Beginners",
        "SQL Learning",
        "SQL للمبتدئين",
        "أساسيات SQL",
        "أوامر SQL",
        "Data Types",
        "أنواع البيانات في SQL",
        "VARCHAR",
        "INT",
        "PRIMARY KEY",
        "AUTO_INCREMENT",
        "DROP DATABASE",
        "ALTER TABLE",
        "SHOW DATABASES",
        "USE DATABASE",
        "تصميم قواعد البيانات",
        "هيكل الجداول",
        "SQL Tutorial",
        "USE Database",
        "DROP Database",
        "SHOW TABLES",
        "DESCRIBE Table",
        "ALTER Table",
        "Data Types",
        "VARCHAR",
        "INT",
        "BOOLEAN"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/delete-data-from-sql-tables",
      "url": "https://eltabarani.com/articles/delete-data-from-sql-tables",
      "title": "حذف البيانات باستخدام DELETE في الـ SQL",
      "summary": "لقد تعلمنا في المقالات السابقة الأوامر الأساسية للتعامل مع قواعد البيانات مثل و و والآن تبقى لنا تعلم كيفية حذف البيانات من الجداول باستخدام أمر لنكمل معًا الأوامر الأساسية في الـ الخاصة بالـ وهى كما ذكرنا سابقاً: لإنشاء الجداول لإضافة البيانات لقراءة البيانات لتعديل البيانات لحذف البيانات وبعض الأوامر الأخرى التي ستتعرف عليها لاحقًا الشيء المهم الآن أننا في هذه المقالة سنتعلم كيفية حذف البيانات من الجداول باستخدام أمر وهذا الأمر من أخطر الأوامر في الـ لأنه يمكن أن يمحو بيانات مهمة نهائيًا دون إ...",
      "date_published": "2025-07-18T00:00:00.000Z",
      "date_modified": "2025-12-06T22:07:27.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "DELETE Statement",
        "حذف البيانات SQL",
        "أمر DELETE",
        "شرح DELETE",
        "تعلم DELETE",
        "كيفية حذف البيانات",
        "حذف البيانات",
        "DELETE WHERE",
        "حذف صفوف متعددة",
        "DELETE Safety",
        "SQL للمبتدئين",
        "أساسيات SQL",
        "Database Operations",
        "SQL Commands",
        "Data Deletion",
        "SQL Tutorial",
        "WHERE Clause",
        "TRUNCATE vs DELETE",
        "DROP vs DELETE",
        "Hard Delete",
        "Soft Delete",
        "ما هو الـ Soft Delete",
        "كيفية تنفيذ الـ Soft Delete",
        "ما هو الـ Hard Delete",
        "ما الفرق بين Hard Delete و Soft Delete"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/group-by-and-aggregation-functions",
      "url": "https://eltabarani.com/articles/group-by-and-aggregation-functions",
      "title": "تجميع البيانات باستخدام GROUP BY",
      "summary": "لقد تعلمنا في المقالات السابقة الأوامر الأربعة الأساسية وهى كيفية إضافة البيانات باستخدام أمر وكيفية قراءتها باستخدام أمر وكيفية تعديلها بأمر وحذفها عن طريق أمر معظم تركيزنا سيتمحور على أمر مع أمر يدعى وبعض الدوال المهمة والمشهورة التى ستساعدنا في تحليل البيانات حسناً، تخيل معي أنك تدير نظام إدارة طلاب وتريد معرفة عدد الطلاب في كل مستوى أو تخيل أنك تدير متجر إلكتروني وتريد معرفة إجمالي المبيعات لكل شهر أو تريد معرفة متوسط أعمار الموظفين في كل قسم لاحظ أنني قلت في كل مستوى، لكل شهر، في كل قسم بمع...",
      "date_published": "2025-11-07T00:00:00.000Z",
      "date_modified": "2026-01-05T22:13:57.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "GROUP BY",
        "Aggregation Functions",
        "COUNT Function",
        "SUM Function",
        "AVG Function",
        "MAX Function",
        "MIN Function",
        "تجميع البيانات SQL",
        "دوال التجميع",
        "شرح GROUP BY",
        "تعلم GROUP BY",
        "SQL للمبتدئين",
        "أساسيات SQL",
        "Database Operations",
        "SQL Commands",
        "Data Analysis",
        "SQL Tutorial",
        "HAVING Clause",
        "Statistical Functions"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/insert-data-into-sql-tables",
      "url": "https://eltabarani.com/articles/insert-data-into-sql-tables",
      "title": "إضافة بيانات في الجداول باستخدام INSERT",
      "summary": "بعد أن تعلمنا في المقالات السابقة كيفية إنشاء قواعد البيانات والجداول باستخدام أمر الـ وتعرفنا على على بعض الأوامر الأخرى وتعرفنا على الشروط والقيود المختلفة التي يمكننا وضعها على الجداول باستخدام والآن وصلنا للأجزاء الممتعة في عالم الـ وهى كيفية إضافة بيانات الفعلية إلى الجداول الذي أنشأناها في هذه المقالة سنتعلم كيفية استخدام أمر لإضافة بيانات إلى الجداول تجهيز الجدول لإضافة البيانات قبل أن نبدأ في إضافة البيانات، يجب أن يكون لدينا جدول جاهز لاستقبال هذه البيانات وهذا ما تعلمناه في المقالات ال...",
      "date_published": "2025-06-20T00:00:00.000Z",
      "date_modified": "2025-12-06T22:07:27.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "INSERT INTO",
        "إضافة بيانات SQL",
        "كيفية إضافة بيانات",
        "أمر INSERT",
        "شرح INSERT",
        "تعلم INSERT",
        "إدراج البيانات",
        "إضافة صفوف جديدة",
        "VALUES في SQL",
        "إضافة بيانات متعددة",
        "Multiple Rows Insert",
        "INSERT بالعربي",
        "SQL للمبتدئين",
        "أساسيات SQL",
        "Database Operations",
        "SQL Basics",
        "SQL for Beginners",
        "SQL Commands",
        "Data Entry",
        "SQL Tutorial",
        "Auto Increment",
        "Default Values",
        "NOT NULL",
        "UNIQUE Constraint",
        "Database Management",
        "AUTO_INCREMENT",
        "Multiple Rows Insert",
        "SELECT",
        "SQL Syntax",
        "Database Operations",
        "Table Data",
        "SQL Validation",
        "Add Records"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/select-data-from-sql-tables",
      "url": "https://eltabarani.com/articles/select-data-from-sql-tables",
      "title": "قراءة البيانات من الجداول باستخدام SELECT",
      "summary": "الآن حان الوقت لنتعلم أهم وأكثر الأوامر استخدامًا في الـ SQL وهو أمر الـ وهو كأمر بسيط لكن قوي جدًا في نفس الوقت هذا الأمر هو ما ستستخدمه 90% من الوقت في تعاملك مع قواعد البيانات لأن معظم العمليات التي ستقوم بها ستكون قراءة البيانات من الجداول ووظيفتك تكون كيف تكتب سريعة وتؤدي الغرض المطلوب منها لأنك قد تكتب تقوم بقراءة بيانات من جدول كبير جدًا، وقد تستغرق وقتًا طويلًا ثم يأتي شخص آخر يحقق لك نفس المطلوب لكن بـ أفضل وأسرع لذلك من المهم جدًا أن تتعلم كيف تكتب فعالة وسريعة باستخدام أمر الـ في هذه ...",
      "date_published": "2025-06-27T00:00:00.000Z",
      "date_modified": "2026-01-05T22:13:57.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "SELECT Statement",
        "قراءة البيانات SQL",
        "أمر SELECT",
        "شرح SELECT",
        "تعلم SELECT",
        "كيفية قراءة البيانات",
        "استعلام SQL",
        "SQL Query",
        "WHERE Clause",
        "ORDER BY",
        "LIMIT",
        "SQL للمبتدئين",
        "أساسيات SQL",
        "Database Query",
        "Data Retrieval",
        "SQL Commands",
        "SQL Tutorial",
        "استرجاع البيانات",
        "فلترة البيانات",
        "ترتيب البيانات"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/sql-common-table-expressions",
      "url": "https://eltabarani.com/articles/sql-common-table-expressions",
      "title": "شرح الـ Common Table Expressions في الـ SQL",
      "summary": "في المقالة السابقة تحدثنا عن الـ وكيف يمكننا وضع داخل أخرى وهذا كان مفيدًا جدًا لحل المشاكل المعقدة التي تحتاج إلى أكثر من خطوة لكن عندما تصبح الـ معقدة أو متداخلة بشكل كبير، يصبح الـ صعب القراءة والفهم تخيل معي أن لديك داخل داخل أخرى الـ سيصبح مثل متاهة يصعب فهمها وصيانتها مثلاً تخيل أننا نريد معرفة أسماء الطلاب في المستوى الذي لديه أعلى متوسط درجات الـ باستخدام ستكون بهذا الشكل: هل يمكنك بمجرد النظر إلى هذه الـ أن تفهمها وتتتبعها بسهولة؟ حسنًا سأمهلك بعض الوقت لتفكر فيها ... أظن أنك بحاجة إلى ...",
      "date_published": "2026-01-08T00:00:00.000Z",
      "date_modified": "2026-01-08T17:28:24.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "SQL CTE",
        "Common Table Expressions",
        "WITH Clause",
        "SQL Subquery",
        "Recursive CTE",
        "SQL Learning",
        "تعلم SQL",
        "شرح CTE",
        "SQL للمبتدئين",
        "أساسيات SQL",
        "Database Operations",
        "SQL Commands",
        "SQL Tutorial",
        "Query Organization",
        "مقارنة CTE و Subquery"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/sql-constraints",
      "url": "https://eltabarani.com/articles/sql-constraints",
      "title": "ما هى أنواع الـ SQL Constraints المختلفة",
      "summary": "في المقالة السابقة تعلمنا كيفية إنشاء قواعد البيانات والجداول باستخدام أمر ولاحظنا أثناء إنشاء الجداول أننا استخدمنا بعض الكلمات مثل و و هذه الكلمات تسمى في الـ وهي قواعد وشروط نضعها على الجداول والأعمدة لضمان سلامة البيانات في هذه المقالة سنتعلم كل شيء عن هذه القيود وكيفية استخدامها ما هي قيود الـ SQL ؟ الـ هي قواعد وشروط نطبقها على البيانات في الجداول الغرض منها هو التأكد من صحة البيانات وسلامتها وهى كما يوحي اسمها قيود على البيانات تخيل معي أنك تقوم بإنشاء تطبيق لإدارة حسابات المستخدمين هنا س...",
      "date_published": "2025-06-14T00:00:00.000Z",
      "date_modified": "2025-12-13T01:45:05.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "SQL Constraints",
        "قيود SQL",
        "PRIMARY KEY",
        "FOREIGN KEY",
        "NOT NULL",
        "UNIQUE",
        "CHECK Constraint",
        "DEFAULT Value",
        "شرح Constraints",
        "قيود قواعد البيانات",
        "سلامة البيانات",
        "Data Integrity",
        "Table Constraints",
        "Column Constraints",
        "كيفية استخدام Constraints",
        "أمثلة على Constraints",
        "تعلم SQL Constraints",
        "SQL للمبتدئين",
        "Database Rules",
        "قواعد قواعد البيانات",
        "Auto Increment",
        "Foreign Key Relationship",
        "Referential Integrity",
        "SQL Tutorial",
        "Database Design",
        "AUTO_INCREMENT",
        "Composite Primary Key",
        "Database Relationships",
        "Data Validation"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/sql-joins-connecting-tables",
      "url": "https://eltabarani.com/articles/sql-joins-connecting-tables",
      "title": "ربط الجداول في الـ SQL باستخدام JOIN",
      "summary": "الآن وصلنا إلى واحدة من أهم وأقوى ميزات الـ وهي ربط الجداول باستخدام في قواعد البيانات الحقيقية، لن تجد جميع البيانات في جدول واحد بل نقسم البيانات على عدة جداول مختلفة، وكل جدول يحتوي على نوع معين من البيانات فتخيل معي أنه لدينا نظام إدارة طلاب: جدول للطلاب يحتوي على معلومات الطلاب جدول للمحاضرين يحتوي على معلومات المحاضرين جدول للدورات يحتوي على الدورات المتاحة هنا لاحظ أن كل ما تعلمناه حتى الآن عن الـ كان على جدول واحد فقط الآن لدينا عدة جداول ونريد ربطها معًا للحصول على معلومات شاملة فمثلًا ...",
      "date_published": "2025-12-07T00:00:00.000Z",
      "date_modified": "2026-01-05T22:13:57.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "SQL JOIN",
        "ربط الجداول",
        "INNER JOIN",
        "LEFT JOIN",
        "RIGHT JOIN",
        "FULL OUTER JOIN",
        "Relational Database",
        "SQL Learning",
        "Database Relations",
        "شرح JOIN",
        "تعلم JOIN",
        "SQL للمبتدئين",
        "أساسيات SQL",
        "Database Operations",
        "SQL Commands",
        "SQL Tutorial"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/sql-subqueries",
      "url": "https://eltabarani.com/articles/sql-subqueries",
      "title": "شرح وتطبيق على الـ Subquery في الـ SQL",
      "summary": "في هذه المقالة سنتحدث عن أحد مميزات الـ القوية جدًا وهي الـ وهى القدرة على وضع داخل أخرى لكي نحصل على نتائج معقدة وتعتمد على نتائح من أخرى ذكرنا في مقالة سابقة سؤال وهو إيجاد اسم الطالب صاحب أعلى درجة الحل كان بسيط فقط باستخدام و الاجابة كانت: <div class=\"niceshape\" </div لكن لنغير السؤال قليلاً هذه المرة ونقول نريد جميع أسماء الطلاب الذين حصلوا على أعلى درجة وهو لنتخيل أن هناك أكثر من طالب حصل على نفس الدرجة مثلاً وكانت هذه أعلى درجة الـ السابقة لن تعمل هنا لأنها تُرجع صفًا واحدًا فقط بسبب استخ...",
      "date_published": "2026-01-06T00:00:00.000Z",
      "date_modified": "2026-01-08T01:35:47.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "SQL Subquery",
        "Nested Query",
        "Subquery",
        "Query داخل Query",
        "شرح Subquery",
        "تعلم Subquery",
        "SQL للمبتدئين",
        "أساسيات SQL",
        "Database Operations",
        "SQL Commands",
        "SQL Tutorial",
        "Scalar Subquery",
        "Correlated Subquery",
        "EXISTS",
        "IN Operator",
        "ANY و ALL"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/update-data-in-sql-tables",
      "url": "https://eltabarani.com/articles/update-data-in-sql-tables",
      "title": "تعديل البيانات في الجداول باستخدام UPDATE",
      "summary": "لقد تعلمنا كيفية إضافة البيانات إلى الجداول باستخدام أمر وتعلمنا كيفية قراءتها باستخدام أمر والآن في هذه المقالة سنتعلم كيفية تعديل البيانات الموجودة في الجداول باستخدام أمر وهذا الأمر بالطبع من الأوامر الأساسية في الـ لأنه في الحياة الواقعية، البيانات لا تبقى ثابتة دائمًا بل تتغير باستمرار فعلى سبيل المثال جدول الطلاب الذي كنا نشرح من خلاله في المقالات السابقة هل تتخيل أن بيانات الطلاب ستبقى كما هي طوال الوقت ؟ بل ستجد أن الطلاب يغيرون أرقام هواتفهم، يحدثون عناوينهم، ينتقلون من مستوى دراسي لآخر...",
      "date_published": "2025-07-04T00:00:00.000Z",
      "date_modified": "2025-12-06T22:07:27.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "UPDATE Statement",
        "تعديل البيانات SQL",
        "أمر UPDATE",
        "شرح UPDATE",
        "تعلم UPDATE",
        "كيفية تعديل البيانات",
        "تعديل البيانات",
        "UPDATE WHERE",
        "SET في SQL",
        "تعديل صفوف متعددة",
        "UPDATE Safety",
        "SQL للمبتدئين",
        "أساسيات SQL",
        "Database Operations",
        "SQL Commands",
        "Data Modification",
        "SQL Tutorial",
        "WHERE Clause",
        "Database Constraints",
        "Data Integrity",
        "DML"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/what-is-sql",
      "url": "https://eltabarani.com/articles/what-is-sql",
      "title": "لغة SQL وأهميتها في إدارة قواعد البيانات",
      "summary": "أظننا سنبدأ رحلة جديدة وسلسلة جديدة عن الـ عندما تبدأ الحديث عن قواعد البيانات، فإن أول ما يتبادر إلى الذهن هى لغة الـ تقريبًا كل تطبيق أو موقع ويب تستخدمه يوميًا يعتمد على قواعد البيانات وهذا بديهي لأن الـ هي اللغة التي تسمح لنا بالتعامل مع هذه البيانات بطريقة منظمة سواء بتخزين البيانات، وكيفية تخزينها والشروط التي يجب أن تتوفر فيها وتوفر لنا وسيلة للاستعلام عن البيانات واسترجاعها وهو ما نسميه بالـ وتسمح لنا بإجراء عمليات على البيانات مثل الإضافة والتحديث والحذف وأيضًا ربط أكثر من جدول معًا في ...",
      "date_published": "2025-06-12T00:00:00.000Z",
      "date_modified": "2025-12-06T22:07:27.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هي SQL",
        "تعلم SQL",
        "SQL للمبتدئين",
        "لغة SQL",
        "قواعد البيانات",
        "Structured Query Language",
        "MySQL",
        "PostgreSQL",
        "SQLite",
        "أساسيات SQL",
        "تعلم قواعد البيانات",
        "شرح SQL",
        "مقدمة عن SQL",
        "أهمية SQL",
        "استخدامات SQL",
        "SQL Database",
        "RDBMS",
        "Database Management",
        "SQL Commands",
        "SQL Tutorial",
        "كيف أتعلم SQL",
        "أفضل طريقة لتعلم SQL"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/database-migration",
      "url": "https://eltabarani.com/articles/database-migration",
      "title": "شرح الـ Database Migration لإدارة التغييرات",
      "summary": "اليوم سنتحدث عن مفهوم الـ في الـ وكيفية استخدامها بشكل صحيح سأكتفي بشرح الفكرة العامة للـ وكيفية استخدامها ولن أدخل في تفاصيل تقنية كثيرة لأن الهدف من هذا المقال هو توضيح الفكرة العامة للـ وفائدتها وكيفية استخدامها لا أكثر تخيل معي أنك تعمل وحدك في تطوير مشروعك الخاص وقمت ببناء قاعدة بيانات ومع مرور الوقت أثناء تطويرك للمشروع تقوم بإضافة أو تعديل أو حذف حقول أو عناصر جديدة في الجداول أو تقوم بحذف جداول بأكملها أو إضافة علاقات جديدة بين الجداول وهكذا وتستمر في هذه العمليات طوال فترة تطويرك للمشرو...",
      "date_published": "2024-10-04T00:00:00.000Z",
      "date_modified": "2025-12-19T14:51:48.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هي الـ Migration",
        "كيفية تنفيذ الـ Migration",
        "كيفية استخدام الـ Migration",
        "تنفيذ الـ Migration مع الفريق",
        "بعض الملحوظات التي عليك الانتباه لها عند استخدام الـ Migration",
        "database",
        "migration",
        "database-migration",
        "Database Migration",
        "ما هي Migration",
        "شرح Migration",
        "تعلم Migration",
        "إدارة قواعد البيانات",
        "Database Schema",
        "Version Control",
        "تطوير قواعد البيانات",
        "Database Changes",
        "Team Development",
        "Schema Changes",
        "SQL Scripts",
        "Database Management",
        "Laravel Migration",
        "Migration Scripts",
        "Rollback Migration",
        "Schema Evolution",
        "Database Versioning",
        "Development Workflow"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/database-normalization-part-one",
      "url": "https://eltabarani.com/articles/database-normalization-part-one",
      "title": "تطبيق الـ Database Normalization بشكل عملي",
      "summary": "في عالم قواعد البيانات، أحد أهم المفاهيم التي يجب على كل مطور أو محلل بيانات أن يتقنها هو مفهوم وأحيانًا يكون أول شيء تتعلمه بمعنى أنك يمكنك دراسة الـ قبل أن تتعلم أي شيء عن الـ أو الـ لأن الـ يهتم بكيفية تصميم وتنظيم البيانات بشكل صحيح في قاعدة البيانات إذا كنت تعرف بعض المفاهيم الأساسية الخاصة بالـ والـ وبعض الأمور الأخرى فهذا جيد لكن إذا لم تكن تعرفهاوأنت جديد في عالم قواعد البيانات فلا تقلق، سأحاول جعل الشرح خاليًا من الأمور العملية لأن الـ بطبيعة الحال ليس مرتبط بـ أو بـ بل هو مفهوم وفلسفة ...",
      "date_published": "2026-01-02T00:00:00.000Z",
      "date_modified": "2026-02-01T22:37:55.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "Database Normalization",
        "تطبيع قواعد البيانات",
        "الشكل العادي الأول",
        "الشكل العادي الثاني",
        "الشكل العادي الثالث",
        "First Normal Form",
        "Second Normal Form",
        "Third Normal Form",
        "1NF",
        "2NF",
        "3NF",
        "Data Redundancy",
        "Database Design",
        "تصميم قواعد البيانات",
        "SQL Normalization",
        "Functional Dependency",
        "Database Optimization",
        "Primary Key",
        "Foreign Key",
        "Partial Dependency",
        "Transitive Dependency",
        "Database Performance",
        "Data Integrity",
        "Database Structure",
        "تحسين قواعد البيانات",
        "Database Best Practices",
        "SQL Database",
        "Database Relationships",
        "Table Design",
        "Entity Relationship",
        "Database Theory",
        "Data Anomalies",
        "Insertion Anomaly",
        "Update Anomaly",
        "Deletion Anomaly"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/database-normalization-part-two",
      "url": "https://eltabarani.com/articles/database-normalization-part-two",
      "title": "استكمال مستويات الـ Database Normalization",
      "summary": "في المقالة السابقة تطبيق الـ Database Normalization بشكل عملي تعرفنا على مفهوم الـ والصيغ الأساسية الثلاثة و و وقلنا أن الوصول إلى الـ يكون كافيًا جدًا في معظم الحالات العملية لتصميم قاعدة بيانات منظمة وعملية لكن هناك حالات خاصة ونادرة قد تحتاج فيها إلى صيغ متقدمة أخرى في هذه المقالة سنشرح الصيغ المتقدمة وهى و و صيغة بويسكود BoyceCodd Normal Form الـ أو اختصارًا نقول وهي صيغة متقدمة من الـ وأحيانًا يطلق عليها الصيغة والهدف من الـ هو التعامل مع بعض الحالات الخاصة التي قد لا تغطيها الـ بشكل كامل ب...",
      "date_published": "2026-01-03T00:00:00.000Z",
      "date_modified": "2026-02-01T22:37:55.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "Database Normalization",
        "تطبيع قواعد البيانات",
        "BCNF",
        "Boyce-Codd Normal Form",
        "Fourth Normal Form",
        "Fifth Normal Form",
        "4NF",
        "5NF",
        "Multi-valued Dependency",
        "Join Dependency",
        "Data Redundancy",
        "Database Design",
        "تصميم قواعد البيانات",
        "SQL Normalization",
        "Functional Dependency",
        "Database Optimization",
        "Primary Key",
        "Foreign Key",
        "Super Key",
        "Determinant",
        "Database Performance",
        "Data Integrity",
        "Database Structure",
        "تحسين قواعد البيانات",
        "Database Best Practices",
        "SQL Database",
        "Database Relationships",
        "Table Design",
        "Entity Relationship",
        "Database Theory",
        "Data Anomalies",
        "Pivot Tables",
        "بويس-كود"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/n-plus-one-problem",
      "url": "https://eltabarani.com/articles/n-plus-one-problem",
      "title": "مشكلة N+1 وحلها باستخدام Eager Loading",
      "summary": "اليوم سنتحدث عن مشكلة شائعة في قواعد البيانات تعرف بمشكلة الـ وسنعرف ما هي وكيفية حلها باستخدام تقنيات مثل الـ سأستخدم و كمثال عملي لتوضيح هذه المشكلة وكيفية التعامل معها ولكن بالطبع يمكنك تنفيذ نفس الحلول باقي اللغات وليس فقط ولا تقلق فأنا في كل مرة اقوم بكتابة كود عملي كمثال في سأتبعه بشرح المشكلة والحل بمنظور الـ لتعرف وتفهم ماذا يحدث خلف الكواليس وكيف تكون شكل كل تنفذ ويمكنك تطبيق الحل بلغة التى تريدها طالما فهمت وعرفت المشكلة والحل من منظر الـ مشكلة الـ قد تؤثر بشكل كبير على أداء تطبيقك ووق...",
      "date_published": "2025-08-30T00:00:00.000Z",
      "date_modified": "2026-01-08T01:35:47.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "مشكلة N+1",
        "N+1 Problem",
        "Laravel Eager Loading",
        "تحسين قواعد البيانات",
        "Database Performance",
        "Laravel ORM",
        "Eloquent ORM",
        "Database Optimization",
        "مشكلة N+1 في Laravel",
        "حل مشكلة N+1",
        "Eager Loading Laravel",
        "Lazy Loading vs Eager Loading",
        "Database Queries",
        "SQL Performance",
        "Laravel Performance",
        "تحسين الاستعلامات",
        "Database Relations",
        "Laravel Relations",
        "One to Many",
        "Many to Many",
        "Belongs To",
        "تحسين الأداء",
        "Database Best Practices",
        "Laravel Best Practices",
        "ORM Performance",
        "Query Optimization",
        "Database Efficiency"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/sql-injection",
      "url": "https://eltabarani.com/articles/sql-injection",
      "title": "كيف تحمي نفسك من ثغرة الـ SQL Injection",
      "summary": "اليوم سنتحدث عن ثغرة مشهورة وهي الـ سنشرح فكرة الثغرة وخطورتها مع أمثلة باستخدام ثم امثلة باستخدام و في لأنك قد تكون معرض لهذه الثغرة حتى وإن لم تكن تستخدم بشكل مباشر لأنك حتى تستخدم أو بطريقة خاطئة تجعلك تقع في هذه الثغرة وسنرى كيف يتم استغلال هذه الثغرة وكيف نحمي أنفسنا منها هذه الثغرة موجودة منذ زمن طويل وتعد من أخطر الثغرات الأمنية وأكثرها شيوعًا في تطبيقات الويب التي تتعامل مع قواعد البيانات وسبب انتشارها هو الجهل بالثغرة نفسها وكيف تحدث وكيف يتم استغلالها وكيف نحمي أنفسنا منها ما هى الـ SQ...",
      "date_published": "2026-02-02T00:00:00.000Z",
      "date_modified": "2026-02-01T22:37:55.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "SQL Injection",
        "ثغرة SQL Injection",
        "Laravel Security",
        "Database Security",
        "Prepared Statements",
        "Eloquent ORM",
        "حماية قواعد البيانات",
        "أمان التطبيقات",
        "Laravel ORM",
        "Parameterized Queries",
        "Web Security",
        "هجمات قواعد البيانات",
        "SQL Injection Prevention",
        "Database Attacks",
        "Laravel Best Practices"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/acid-atomicity",
      "url": "https://eltabarani.com/articles/acid-atomicity",
      "title": "مبدأ الـ Atomicity",
      "summary": "هذا المبدأ يضمن لك أن الـ بأكملها يجب أن تنفذ كوحدة واحدة بمعنى أنه إما تنفذها كلها أو أن لا تنفذ شيئا منها أي لو كانت الـ تحتوي على من الـ فمبدأ الـ يقول لك يا تنفذ كل الـ التي بداخل الـ أي تنفذ الـ كلها أو لا تنفذ أي واحدة منهم يا أما الـ كلها تنجح أو يا أما كلها تفشل بالتالي لو حصل أي مشكلة في الـ ولو خطأ بسيط في أي فإن الـ كلها ستفشل وتتم إلغاؤها ويتم التراجع عن كل ما تم تنفيذه وهو ما يسمى بـ أي التراجع عن العمليات وكأن شيئًا لم يحدث ولو كل الـ تم تنفيذها بنجاح ففي هذه الحالة فقط سيتم تطبيق ...",
      "date_published": "2025-02-14T00:00:00.000Z",
      "date_modified": "2026-01-08T01:35:47.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "مبدأ الـ Atomicity",
        "مبادئ الـ ACID",
        "Database Transactions",
        "Laravel ORM",
        "ROLLBACK",
        "COMMIT",
        "Database",
        "SQL"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/acid-consistency",
      "url": "https://eltabarani.com/articles/acid-consistency",
      "title": "مبدأ الـ Consistency",
      "summary": "مبدأ الـ هو المبدأ الذي يضمن لك أن الـ بعد تنفيذها ستجعل البيانات في الـ متناسقة أي البيانات ستحفظ بشكل صحيح وسليم داخل الـ ولن يقوم الـ بافسادها أو التلاعب بها في الحقيقة مبدأ الـ يعني الكثير من الأشياء منها أن الـ يجب أن تحترم القواعد والقيود التي تم وضعها على الـ بمعنى أن أي سواء كان أو أو قيمة أو أي قيد آخر يجب أن تحترمه الـ ولا تخالفه أنواع التناسق مبدأ الـ أيضًا يعني أنه لا يجب أن يكون هناك أي تعارض بين البيانات فمثلًا لنتخيل أن هناك شخص يدعى ولديه رقم وقام هذا الشخص بشراء منتج يدعى ولديه ...",
      "date_published": "2025-02-14T00:00:00.000Z",
      "date_modified": "2026-01-08T01:35:47.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "مبدأ الـ Consistency",
        "مبادئ الـ ACID",
        "Database Transactions",
        "Database Constraints",
        "Foreign Key",
        "Primary Key",
        "Data Integrity",
        "Laravel"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/acid-durability",
      "url": "https://eltabarani.com/articles/acid-durability",
      "title": "مبدأ الـ Durability",
      "summary": "حسنًا لقد وصلنا لأخر مبدأ في الـ وهو مبدأ الـ لا تقلق لن أطيل عليك سيكون خفيفًا ونظريًا مثل مبدأ الـ لأن مبدأ الـ غالبًا ما يكون موجه للأشخاص الذين يقومون بتطوير الـ مثل أو أو وكيف يحققون هذا المبدأ في قواعدهم لكن يمكنك تحقيقه بنفسك عن طريق توفير نوع من الـ لقاعدة البيانات الخاصة بك أو تصميم الـ بشكل جيد وجعل كل تكون وسريعة وأداءها عالي لتقليل فرص حدوث مشاكل متعلقة بالبطيء أو ثقيلة تسبب أو كما ذكرنا سابقًا مبدأ هو آخر مبدأ من مبادئ الـ ، وهو يضمن أن جميع العمليات التي تمت داخل لن تُفقد حتى في حا...",
      "date_published": "2025-02-14T00:00:00.000Z",
      "date_modified": "2026-01-08T01:35:47.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "مبدأ الـ Durability",
        "مبادئ الـ ACID",
        "Database Transactions",
        "Write-Ahead Logging",
        "WAL",
        "Database Backup",
        "Database Recovery",
        "Data Persistence"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/acid-isolation-locks",
      "url": "https://eltabarani.com/articles/acid-isolation-locks",
      "title": "مبدأ الـ Isolation - أنواع الـ Locks",
      "summary": "في مبدأ الـ Isolation مستويات العزل من شرح مبدأ الـ تعرفنا على مستويات العزل المختلفة والمشاكل الشائعة مثل الـ والـ والـ والـ في هذا الجزء سنتعمق في موضوع الـ وأنواعه وكيفية تطبيقه عمليًا الـ Lock وأنواعها دعونا نتكلم قليلًا عن الـ وما هي أنواعها الـ وهو كما يوحي الاسم يقوم بقفل أو تجميد أو تأمين البيانات التي تقوم بقراءتها ويمنع أي أو أخرى من التعديل عليها بالتالي لنفترض أن الـ الأولى تقوم بعمل تقرير عن نقاط اللاعبين في جدول الـ هنا ستقوم الـ بقفل جدول الـ ومنع أي أخرى من التعديل أو الحذف أو ال...",
      "date_published": "2025-02-14T00:00:00.000Z",
      "date_modified": "2026-01-08T01:35:47.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "مبدأ الـ Isolation",
        "مبادئ الـ ACID",
        "Database Transactions",
        "Database Locking",
        "Optimistic Lock",
        "Pessimistic Lock",
        "Exclusive Lock",
        "Shared Lock",
        "Laravel"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/acid-isolation",
      "url": "https://eltabarani.com/articles/acid-isolation",
      "title": "مبدأ الـ Isolation - مستويات العزل",
      "summary": "مبدأ الـ يضمن أن كل تعمل بشكل منعزل عن باقي الـ الأخرى بمعنى أن كل لا تتداخل مع الأخرى ولا تؤثر عليها ولا تتأثر بها فمثلًا إذا كان هناك تقوم بقراءة البيانات في هذه اللحظة وهناك أخرى تقوم بتعديل البيانات في نفس الوقت فيجب على الـ الأولى أن تقرأ البيانات كما هي في اللحظة التي قرأتها حتى لو قامت الـ الثانية بتعديلها فإن الـ الأولى لن ترى هذه التعديلات حتى تنتهي من القراءة قررت تقسيم مبدأ الـ إلى جزئين الجزء الأول سنتحدث فيه عن مستويات العزل المختلفة والجزء الثاني سنتحدث فيه عن أنواع الـ التي تستخدم...",
      "date_published": "2025-02-14T00:00:00.000Z",
      "date_modified": "2026-01-08T01:35:47.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "مبدأ الـ Isolation",
        "مبادئ الـ ACID",
        "Database Transactions",
        "Isolation Levels",
        "Dirty Read",
        "Phantom Read",
        "Non-Repeatable Read",
        "Lost Update",
        "Laravel"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/acid-principles",
      "url": "https://eltabarani.com/articles/acid-principles",
      "title": "مبادئ الـ ACID في إدارة الـ Transactions",
      "summary": "هذه المقالة تعتبر مقدمة لأهم مبادئ قواعد البيانات وهي مبادئ الـ الأربعة والتي تعتبر من أهم المبادئ التي يجب على كل مطور أن يعرفها ويفهمها جيدًا وهي كالتالي: مبدأ الـ Atomicity مبدأ الـ Consistency مبدأ الـ Isolation مستويات العزل مبدأ الـ Durability وهذه المبادئ هي التي تقوم عليها فكرة الـ وهي تساعدنا على تنفيذ العمليات بشكل آمن ومضمون ودقيق لكن ما هي الـ ؟ كيف يمكننا أن نشرح ونتعلم مبادئ شئ نحن نجهله من الأساس لذا قبل أن نبدأ في شرح كل مبدأ على حدة سنتعرف على ما هي الـ أولًا هذه السلسلة كانت في...",
      "date_published": "2025-02-14T00:00:00.000Z",
      "date_modified": "2026-02-01T22:37:55.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "مبادئ الـ ACID",
        "مبادئ الـ Database",
        "مبادئ الـ Transactions",
        "ما هي الـ Transactions",
        "مبدأ الـ Atomicity",
        "تطبيق بسيط لفائدة الـ Atomicity",
        "مثال آخر لفائدة الـ Atomicity",
        "مبدأ الـ Consistency",
        "تطبيق بسيط لفائدة الـ Consistency",
        "مبدأ الـ Isolation",
        "مستويات العزل الخاصة بالـ Isolation",
        "بعض المفاهيم بجانب الـ Isolation",
        "Dirty Read",
        "Phantom Read",
        "Non-Repeatable Read",
        "Repeatable Read",
        "Lost Update",
        "الـ Lock وأنواعها",
        "الـ Optimistic Lock",
        "تطبيق بسيط على الـ Optimistic Lock",
        "الـ Pessimistic Lock",
        "Exclusive Lock",
        "Shared Lock",
        "مراجعة على أهم النقاط في مبدأ الـ Isolation",
        "مبدأ الـ Durability",
        "كيف يعمل مبدأ Durability",
        "Write-Ahead Logging",
        "Asynchronous Snapshots",
        "Append Only Files",
        "Database",
        "Transactions",
        "ACID",
        "SQL",
        "Laravel",
        "ORM",
        "Laravel ORM",
        "Database Transactions",
        "Atomicity",
        "Consistency",
        "Isolation",
        "Durability",
        "Database Concurrency",
        "Database Locking",
        "Transaction Management",
        "Data Integrity",
        "Database Performance",
        "Database Security"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/docker-bind-mounts",
      "url": "https://eltabarani.com/articles/docker-bind-mounts",
      "title": "مشاركة الملفات مع Docker باستخدام Bind Mounts",
      "summary": "في المقالة السابقة تعرفنا على مشكلة فقدان البيانات عند حذف الـ وتعلمنا كيف نستخدم الـ لحفظ البيانات بشكل دائم خارج الـ في هذه المقالة سنتعرف على طريقة أخرى لحفظ البيانات وهي الـ هى مثلها مثل الـ لكن تختلف في طريقة الربط وإدارة البيانات، حيث أن الـ تتيح لك ربط مجلد معين من جهازك مباشرة بمجلد داخل الـ أما الـ فيقوم الـ بإنشاء مساحة تخزين خاصة به مستقلة ويقوم الـ بإدارتها بنفسه ما هو الـ Bind Mount ؟ الـ ببساطة هو أنك تربط مجلد معين من جهازك بمجلد داخل الـ أي تغيير في أحدهما ينعكس مباشرة على الآخر ...",
      "date_published": "2026-03-02T00:00:00.000Z",
      "date_modified": "2026-03-02T19:40:25.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "docker",
        "bind-mounts",
        "volumes",
        "containers",
        "storage",
        "devops",
        "docker volumes",
        "docker bind mounts",
        "bind mounts vs volumes",
        "ما هو الـ Bind Mount",
        "حذف الـ Images و Containers و Volumes السابقة",
        "تجهيز المشروع والـ Dockerfile",
        "استخدام Bind Mount مع تطبيقنا",
        "متى نستخدم Bind Mounts"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/docker-image-and-container",
      "url": "https://eltabarani.com/articles/docker-image-and-container",
      "title": "التعامل مع الـ Docker Image والـ Container",
      "summary": "حسنًا، في المقالة السابقة تعرفنا على ما هو الـ وما المشاكل التي يحلها وتعرفنا على المفاهيم الأساسية مثل الـ والـ والـ والـ في هذه المقالة سنبدأ بالجانب العملي ونتعلم كيف نتعامل مع الـ بشكل فعلي سنبدأ بتثبيت الـ ثم نتعرف على أوامر التعامل مع الـ والـ مع أمثلة عملية بسيطة خطوة بخطوة تثبيت الـ Docker أول خطوة هي تثبيت الـ على جهازك يمكنك الذهاب إلى الموقع الرسمي للـ واتباع التعليمات الخاصة بنظام التشغيل الخاص بك https://docs.docker.com/getdocker/ ستجد تعليمات تثبيت الـ على و و اتبع الخطوات الموجودة...",
      "date_published": "2026-02-18T00:00:00.000Z",
      "date_modified": "2026-02-17T22:01:15.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "docker",
        "containers",
        "image",
        "docker-cli",
        "nginx",
        "alpine",
        "devops",
        "containerization",
        "تثبيت الـ Docker",
        "التأكد من تثبيت الـ Docker",
        "ما هو الـ Docker Image",
        "ما هو الـ Docker Container",
        "أوامر الـ Docker Image",
        "docker image pull",
        "docker image list",
        "docker image remove",
        "أوامر الـ Docker Container",
        "docker container run",
        "docker container list",
        "docker container remove",
        "تسمية الـ Container",
        "تشغيل Shell داخل الـ Container",
        "docker container start",
        "docker container exec",
        "docker container stop",
        "ملخص الأوامر الـ Docker الأساسية"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/docker-networks",
      "url": "https://eltabarani.com/articles/docker-networks",
      "title": "مقدمة عن الـ Docker Networks",
      "summary": "في المقالات السابقة تعرفنا على الكثير من المفاهيم الأساسية في عالم الـ مثل كيفية إنشاء وإنشاءها، وكيفية التعامل مع الـ ، وكيفية إدارة الـ وغيرها من المفاهيم المهمة الآن حان الوقت لنتعرف على مفهوم مهم جدًا في عالم الـ وهو الـ وهو المفهوم الذي يتيح لنا التحكم في كيفية تواصل الـ مع بعضها البعض ومع العالم الخارجي لماذا نحتاج الـ Docker Networks ؟ تخيل معي أنك تقوم ببناء تطبيق ويب متكامل التطبيق يتكون من عدة أجزاء: يعمل على أو أو أي لغة أخرى مثل أو مثل أو مثل كل جزء من هذه الأجزاء سيعمل داخل منفصل لك...",
      "date_published": "2026-03-09T00:00:00.000Z",
      "date_modified": "2026-03-09T19:29:58.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "docker",
        "networks",
        "containers",
        "devops",
        "bridge",
        "networking",
        "containerization",
        "لماذا نحتاج الـ Docker Networks",
        "أنواع الـ Docker Networks",
        "Bridge Driver",
        "Host Driver",
        "Null Driver",
        "User Defined Networks",
        "إنشاء Container للـ MySQL",
        "تجهيز Server الـ Node.js في Docker",
        "بناء الـ Image الخاصة بـ Server الـ Node.js",
        "محاولة إنشاء الـ Container بدون Network",
        "استخدام الـ Bridge Network الافتراضية",
        "أوامر الـ Docker Networks",
        "إنشاء User Defined Network"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/docker-nginx-example",
      "url": "https://eltabarani.com/articles/docker-nginx-example",
      "title": "تشغيل Nginx داخل Docker",
      "summary": "في المقالة السابقة تعرفنا على أساسيات التعامل مع الـ وتعلمنا كيفية تحميل الـ وإنشاء الـ والتعامل معها استخدمنا كمثال بسيط للتعرف على الأوامر الأساسية في هذه المقالة سنشرح على مثال عملي باستخدام بمعنى أننا سنقوم بتشغيل داخل ونتعرف أمور جديدة متعلقة بالتعامل مع الـ وسنتعرف على مفهوم الـ الذي يسمح لنا بربط من جهازنا بـ داخل الـ ما هو الـ Nginx ؟ عندما تدخل إلى الموقع الرسمي لـ ستجده يصف نفسه كالتالي: nginx (\"engine x\") is an HTTP web server, reverse proxy, content cache, load balancer, TCP/UDP prox...",
      "date_published": "2026-02-21T00:00:00.000Z",
      "date_modified": "2026-02-21T13:10:20.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "docker",
        "containers",
        "nginx",
        "port-mapping",
        "devops",
        "web-server",
        "ما هو الـ Nginx",
        "تحميل الـ Nginx Image",
        "docker image inspect",
        "تشغيل الـ Nginx Container",
        "ربط الـ Nginx بـ Port على جهازك",
        "تشغيل الـ Container في الخلفية",
        "docker container logs",
        "الدخول داخل الـ Container",
        "تعديل محتوى داخل الـ Nginx",
        "الخروج من الـ Nginx"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/docker-volumes",
      "url": "https://eltabarani.com/articles/docker-volumes",
      "title": "حفظ البيانات في Docker باستخدام Volumes",
      "summary": "في المقالات السابقة تعرفنا على الـ وكيفية إنشاء وإنشاءها لكن هناك مشكلة مهمة لم نتطرق لها بعد: ماذا يحدث للبيانات عند حذف الـ ؟ الإجابة البسيطة هي أن كل شيء داخل الـ يختفي عند حذفه وهذا بديهي جدًا لأن الـ مصمم ليكون معزولًا كما كلنا فأي شيء داخل الـ هو مؤقت ويختفي عند حذفه هذه قد تكون ميزة وتوفر لنا مبدأ الـ و و و وكل هذه المعاني الرنانة التي يتغنى بها الأشخاص لكن في نفس الوقت، هذه قد تعد مشكلة خاصة مع قواعد البيانات أو أي تطبيق يحتاج لحفظ بيانات بشكل دائم فعلى سبيل المثال، إذا كان لدينا تطبيق و...",
      "date_published": "2026-03-02T00:00:00.000Z",
      "date_modified": "2026-03-02T19:40:25.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "docker",
        "volumes",
        "containers",
        "storage",
        "devops",
        "docker volumes",
        "docker bind mounts",
        "anonymous volumes",
        "حذف كل الـ Image و الـ Container الغير مستخدمة",
        "تجهيز المشروع والـ Dockerfile",
        "تجربة تخزين البيانات داخل الـ Container",
        "Docker Volumes",
        "إنشاء Volume",
        "ربط Container بالـ Volume",
        "إنشاء Volume تلقائيًا",
        "حذف Volumes",
        "تعريف Volume على مستوى الـ Image",
        "الـ Anonymous Volumes",
        "ملحوظات حول الـ Anonymous Volumes"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/nodejs-dockerfile-example",
      "url": "https://eltabarani.com/articles/nodejs-dockerfile-example",
      "title": "إنشاء Dockerfile لتطبيق Node.js",
      "summary": "في المقالة السابقة تعرفنا على الـ وتعلمنا كيف نبني خاصة بنا ليستضيف موقع باستخدام وكيفية إنشاء من هذه الـ في هذه المقالة سنقوم أيضًا بإنشاء ولكن هذه المرة ليستضيف تطبيق لأن هناك مميزات كثيرة للـ لم تتطرق لها في المثال السابق لكن مع مثال الـ سنتمكن من شرح هذه الميزات بكل بساطة سننشئ تطبيق بسيط باستخدام ثم نكتب لبناء تقوم بتجهيز بيئة لتشغيل هذا التطبيق داخل وسنتعرف على أوامر جديدة في الـ مثل و و و إنشاء تطبيق Node.js بسيط أولًا لننشئ مجلد جديد لمشروعنا <div class=\"niceshape\" </div الآن لننشئ ملف ل...",
      "date_published": "2026-02-27T00:00:00.000Z",
      "date_modified": "2026-02-27T13:55:27.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "docker",
        "dockerfile",
        "nodejs",
        "express",
        "containers",
        "devops",
        "إنشاء تطبيق Node.js بسيط",
        "كتابة الـ Dockerfile",
        "بناء الـ Image وتشغيل الـ Container",
        "الدخول داخل الـ Container",
        "وضع ملفات التطبيق في مجلد معين داخل الـ Container",
        "إنشاء ملف .dockerignore",
        "جعل Docker يستخدم الـ cache بشكل أفضل",
        "مفهوم الـ Layers",
        "تخصيص إصدار الـ Image باستخدام Tag",
        "تمرير متغيرات environment إلى الـ Container",
        "توضيح الـ PORT الإفتراضي في الـ Dockerfile",
        "رؤية معلومات الـ Image",
        "الفرق بين CMD و ENTRYPOINT"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/nodejs-mysql-docker-example",
      "url": "https://eltabarani.com/articles/nodejs-mysql-docker-example",
      "title": "ربط تطبيق Node.js بـ MySQL باستخدام Docker",
      "summary": "في المقالات السابقة تعرفنا على الـ والـ وكيفية حفظ البيانات بشكل دائم خارج الـ وتعلمنا كيف أن حذف الـ لا يعني بالضرورة فقدان البيانات إذا كنا نستخدم الآن حان الوقت لنطبق ما تعلمناه في مثال عملي حقيقي في هذه المقالة سنقوم بتشغيل قاعدة بيانات داخل ثم سنبني تطبيق بسيط يتصل بقاعدة البيانات هذه ويقوم بتخزين واسترجاع البيانات منها وسنستخدم لحفظ بيانات قاعدة البيانات بشكل دائم حتى لو حذفنا الـ الجميل في هذا المثال أنك لن تحتاج لتثبيت على جهازك الشخصي الـ سيتكفل بتشغيلها داخل وأنت تتعامل معها كأنها مثبت...",
      "date_published": "2026-03-06T00:00:00.000Z",
      "date_modified": "2026-03-05T22:48:16.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "docker",
        "mysql",
        "nodejs",
        "express",
        "volumes",
        "containers",
        "database",
        "devops",
        "تحميل وتجهيز الـ MySQL Image",
        "إنشاء الـ Container وربطه بالـ Volume",
        "التحقق من أن MySQL يعمل داخل الـ Container",
        "إنشاء تطبيق Node.js يتصل بقاعدة البيانات MySQL داخل الـ Container",
        "تشغيل Server الـ Node.js وربطه بقاعدة البيانات MySQL داخل الـ Container",
        "التحقق من البيانات من داخل الـ MySQL مباشرة داخل الـ Container",
        "التأكد من وجود البيانات حتى بعد حذف الـ Container",
        "ماذا لو لم نستخدم Volume"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/what-is-docker-compose",
      "url": "https://eltabarani.com/articles/what-is-docker-compose",
      "title": "مقدمة عن Docker Compose",
      "summary": "في هذه المرحلة أتوقع أن لديك فكرة جيدة عن كيفية تشغيل تطبيق بسيط باستخدام ، وتعرفت عن الـ وكيفية ربطها، وعن الـ وكيفية التواصل بين الـ لكن ألم تلحظ أننا كنا نقوم بكتابة أوامر كثيرة ووطويلة بمجرد تشغيل مشروع مع قاعدة بيانات الهدف كان إنشاء للـ و لقاعدة البيانات وربطهما معًا في واحدة، وربط الـ الخاص مع الـ ، وتمرير مع كل ، وعمل للـ لكي نتمكن من الوصول له من المتصفح وكل مرة نريد تشغيل المشروع علينا تكرار هذه الأوامر، مما يجعل الأمر مرهقًا جدًا، خصوصًا إذا كان المشروع يحتوي على أكثر من خدمة مثل و و ...",
      "date_published": "2026-03-09T00:00:00.000Z",
      "date_modified": "2026-03-09T19:29:58.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "docker",
        "compose",
        "orchestration",
        "devops",
        "yaml",
        "networking",
        "volumes",
        "environment-variables",
        "ما هو Docker Compose",
        "ملف docker-compose.yml",
        "مثال بسيط لملف docker-compose.yml",
        "تشغيل الـ Container باستخدام Docker Compose",
        "إيقاف الـ Container عن طريق Docker Compose",
        "تذكر مشروع Node.js و MySQL لتحويلهم إلى Docker Compose",
        "إنشاء MySQL Service في Docker Compose",
        "إنشاء Node.js Service في Docker Compose",
        "الـ depends_on",
        "الملف النهائي لـ docker-compose.yml",
        "docker compose up --build",
        "docker compose ps",
        "docker compose ps",
        "docker compose stop",
        "docker compose start"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/what-is-docker",
      "url": "https://eltabarani.com/articles/what-is-docker",
      "title": "مقدمة عن الـ Docker",
      "summary": "لنبدأ رحلة جديدة في المحيط ونرسي سفينتنا المليئة بالحاويات في ميناء مدونة الطبراني الجميلة حسنًا لنبدأ سلسلة جديدة من المقالات عن الـ ، الأداة التي غيرت العالم وسهلت عمليات التطوير بشتى أنواعها في هذه السلسلة سنبدأ من الأساسيات، نشرح ما هو الـ ، وكيف كان العالم قبل وجوده، وما المشاكل التي يحلها، ثم ننتقل إلى شرح عملي لكيفية استخدامه في مشاريعنا اليومية، مع أمثلة عملية بسيطة ومفهومة للجميع بالطبع هذه المقالة ستكون مقدمة تعريفية عن الـ لذا لنبدأ بأول سؤال لدينا وهو كيف كان العالم قبل وجود الـ ؟ ال...",
      "date_published": "2026-02-15T00:00:00.000Z",
      "date_modified": "2026-02-15T08:31:32.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "docker",
        "containers",
        "devops",
        "introduction",
        "basics",
        "image",
        "containerization",
        "virtualization",
        "deployment",
        "العالم قبل الـ Docker",
        "مفهوم الـ Virtual Machine",
        "مفهوم الـ Containerization",
        "تلخيص للمشاكل قبل وجود الـ Docker",
        "ما هو الـ Docker",
        "الفرق بين الـ Docker والـ Virtual Machine",
        "المفاهيم الأساسية في الـ Docker",
        "Docker Image",
        "Docker Container",
        "Dockerfile",
        "Docker Hub",
        "كيف يحل الـ Docker المشاكل التي ذكرناها"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/your-first-dockerfile",
      "url": "https://eltabarani.com/articles/your-first-dockerfile",
      "title": "إنشاء Docker Image باستخدام Dockerfile",
      "summary": "في المقالات السابقة تعرفنا على الـ وكيفية التعامل مع الـ والـ وتعلمنا كيف نحمل جاهزة من الـ ونشغلها على جهازنا مثل و وغيرها من الـ الجاهزة لكن السؤال الآن هو ماذا لو أردنا إنشاء خاصة بنا تناسب احتياجات تطبيقنا ؟ هنا يأتي دور الـ الذي يتيح لنا بناء مخصصة تحتوي على كل ما يحتاجه تطبيقنا وقد تستخدم هذه الـ على المستوى الشخصي أو في الشركات أو يمكنك نشرها على الـ ليستخدمها الآخرون معظم الحالات تكون بالطبع إنشاء خاص بنا لبناء تناسب تطبيقنا على مستوى الشخصي أو في المشاريع التي نعمل عليها في هذه المقالة ...",
      "date_published": "2026-02-24T00:00:00.000Z",
      "date_modified": "2026-02-24T19:07:37.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "docker",
        "dockerfile",
        "containers",
        "devops",
        "image",
        "build",
        "containerization",
        "ما هو الـ Dockerfile",
        "إنشاء أول Dockerfile",
        "بناء الـ Docker Image",
        "تشغيل الـ Container من الـ Image"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/binary-logic-gate-operations",
      "url": "https://eltabarani.com/articles/binary-logic-gate-operations",
      "title": "العمليات الحسابية على البوابات المنطقية",
      "summary": "عندما نتكلم عن البوابات المنطقية فنحن نتحدث عن مجموعة من الرموز والعمليات تستخدم للتعامل مع الأرقام الثانية مثل و ، وهذه العمليات تعتبر من العمليات الأساسية في علم الحاسوب وتستخدم بكثرة في تصميم الدوائر الإلكترونية والبرمجة البوابات المنطقية الأساسية هناك العديد من البوابات المنطقية لكن نحن سنركز في هذا الشرح على البوابات الأساسية وهي و و و : تستخدم للتحقق من صحة شرطين معًا وتعطيك إذا كان الشرطين صحيحين وتعطيك إذا كان أحدهما خطأ : تستخدم للتحقق من صحة شرطين معًا وتعطيك إذا كان أحد الشرطين صحيح و...",
      "date_published": "2024-08-13T00:00:00.000Z",
      "date_modified": "2025-07-08T23:44:32.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "البوابات المنطقية",
        "البوابات المنطقية الثنائية",
        "البوابات المنطقية الأساسية",
        "ما هي الأرقام الثنائية",
        "عمليات البوابات المنطقية على الأرقام الثنائية",
        "عملية الـ AND &",
        "عملية الـ OR |",
        "عملية الـ XOR ^",
        "عملية الـ NOT ~",
        "كيف تفرق اللغات من أن العدد سالب أم موجب",
        "حيلة عن الـ NOT"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/model-context-protocol",
      "url": "https://eltabarani.com/articles/model-context-protocol",
      "title": "الـ MCP لتوحيد تعامل الـ Agent مع التطبيقات",
      "summary": "سنتحدث اليوم عن موضوع جديد في عالم الذكاء الاصطناعي وهو الـ أو الـ وهو وسيلة لاعطاء قدرات وافاق جديدة للذكاء الاصطناعي للتعامل مع الأشياء المختلفة بطريقة موحدة لكن قبل أن نغوص في تفاصيل الـ ، دعني أشرح لك كيف كان العالم قبل وجود الـ وما الأمور التي كان يعاني منها المبرمجون والمطورون لأن بالطبع لا شيء يأتي من فراغ، وكل شيء له سببه التى جعلت المطورين يفكرون في حل معين معضلة الذكاء الاصطناعي الـ مهما بلغت قدرته ستجده يخطئ في تفاصيل بسيطة مثل المثال المشهور عندما تسأله كم حرف في كلمة ؟ ستجده يقول لك...",
      "date_published": "2025-09-18T00:00:00.000Z",
      "date_modified": "2025-12-13T01:45:05.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "MCP",
        "ما هو MCP",
        "Model Context Protocol",
        "الذكاء الاصطناعي",
        "AI Agent",
        "تطوير أدوات الذكاء الاصطناعي",
        "ربط AI بالتطبيقات",
        "مشكلة الاحتمالات في الذكاء الاصطناعي",
        "GitHub Copilot",
        "Claude Code",
        "VS Code",
        "ChatGPT",
        "أدوات المطورين",
        "إنشاء آلة حاسبة للذكاء الاصطناعي ليستخدمها كأداة",
        "أساس فكرة الـ MCP",
        "ما هو الـ Model Context Protocol",
        "إنشاء MCP خاص بنا",
        "مكتبات MCP الجاهزة",
        "استخدام MCP في تطوير التطبيقات",
        "توحيد معايير تطوير أدوات الذكاء الاصطناعي",
        "ربط الذكاء الاصطناعي بالتطبيقات والخدمات",
        "تحسين أداء الذكاء الاصطناعي في التطبيقات"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/number-systems",
      "url": "https://eltabarani.com/articles/number-systems",
      "title": "أنظمة الأرقام في البرمجة وطرق التحويل بينها",
      "summary": "نحن البشر نعتمد على النظام العشري في حياتنا اليومية وهي الأرقام المحصورة بين و أما في عالم البرمجة فهناك أنظمة أخرى للأرقام تعتمد على الأرقام المحدودة والتي تختلف من نظام لآخر مثل النظام الثنائي وهو الذي يعتمد على الرقمين و فقط وهذا هو النظام الذي يستخدمه الجهاز ويفهمها لأن الجهاز لا شيء سوى دوائر كهربائية تعمل بالتيار الكهربائي والتيار الكهربائي يمر أو لا يمر لذا بناءً على هذا الأمر تم تطوير النظام الثنائي ليكون اللغة التي يفهمها الجهاز بحيث أن الرقم يعني أن التيار لن يمر والرقم يعني أن التيار ...",
      "date_published": "2024-11-21T00:00:00.000Z",
      "date_modified": "2025-12-13T01:45:05.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "كيف نحن نفهم الأرقام العشرية",
        "تحويل الأرقام الثنائية إلى صحيحة",
        "تحويل الأرقام الصحيحة إلى ثنائية",
        "ماذا عن الأنظمة الأخرى",
        "الأنظمة الأساسية في البرمجة",
        "تحويل الأرقام من النظام الـ Hexadecimal إلى النظام الـ Binary",
        "تحويل الأرقام من النظام الـ Binary إلى النظام الـ Hexadecimal"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/recursion",
      "url": "https://eltabarani.com/articles/recursion",
      "title": "ما هي دالة الـ Recursion التي تستدعي نفسها",
      "summary": "سنتحدث اليوم عن موضوع مهم في عالم البرمجة وهو الـ او الـ وسنتحدث بشكل محدد عن الـ وهى دالة تستدعي نفسها سنستخدم لغة للتطبيق العملي لا اكثر، لكن كل ما سنشرحه هنا ينطبق على جميع اللغات مفهوم الـ Stack قبل ان ندخل في الـ دعنا نتعرف عن مفهوم الـ وكيف يتعامل مع الدوال بشكل عام الـ هو يشبه الوعاء مفتوح من الاعلى ومغلق من الاسفل ويتم وضع فيه الاشياء فوق بعضها ويتعامل بطريقة الـ أي بمعنى جرب احضار ثلاث كتب ورقم تلك الكتب الثلاثة من الى جرب ان تضع الكتب الثلاثة فوق بعضها ابتداءًا من رقم الى رقم ستلاحظ ان...",
      "date_published": "2019-12-11T00:00:00.000Z",
      "date_modified": "2025-12-13T01:45:05.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هو الـ Stack",
        "مفهوم الـ Stack",
        "ما يدخل أخرًا يخرج أولًا",
        "مفهوم الـ LIFO",
        "Last In Last Out",
        "ما هي الـ Recursion Function",
        "دالة تستدعي نفسها",
        "الاستدعاء الذاتي",
        "تجنب مشكلة Stack Overflow",
        "مفهوم الـ Backtracking",
        "مثال تطبيقي على الـ Backtracking",
        "مثال مضرب العدد",
        "مثال فيبوناتشي",
        "fibonacci"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/solid",
      "url": "https://eltabarani.com/articles/solid",
      "title": "مبادئ الـ SOLID لكتابة كود قوي وصلب كالحديد",
      "summary": "هذه ستكون مقالة بسيطة سنشرح فيها مبادئ الـ التي تساعدنا على كتابة الكود بشكل منظم وسلس وبالطبع أنا سأفترض أنك تعرف وتفهم مبادئ الـ لأننا سنطبق الـ على الـ الـ هي مبادئ أساسية تهدف لجعل الكود سهل التعديل عليه على قدر المستطاع وكل مبدأ يركز على فكرة معينة تساعد على جعل الكود أكثر قابلية لتغير وتعديل وسهل القراءة وكل تلك الأمور التي يتغنى بها الجميع الـ مجرد أفكار فقط لا أكثر تتعرف عليها وتحاول توظيفها وليس تطبيقات ثابتة تتعلمها مثل الـ يمكنك أن نقول أن الـ هي أفكار ومبادئ والـ هي تطبيقات حقيقية لح...",
      "date_published": "2024-05-17T00:00:00.000Z",
      "date_modified": "2026-02-18T23:12:22.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هي الـ SOLID",
        "مبادئ الـ SOLID",
        "تطبيقات عملية بالـ OOP",
        "مبدأ الـ Single Responsibility",
        "مبدأ الـ Open/Closed",
        "مبدأ الـ Liskov Substitution",
        "مبدأ الـ Interface Segregation",
        "مبدأ الـ Dependency Inversion",
        "أمثلة عملية للـ SOLID",
        "أهمية الـ SOLID",
        "ما فائدة الـ SOLID"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/unit-test-in-nestjs-using-jest",
      "url": "https://eltabarani.com/articles/unit-test-in-nestjs-using-jest",
      "title": "عمل Unit Tests في NestJS باستخدام Jest",
      "summary": "أحببت في هذا المقالة أن اشرح موضوع الـ في وكيفية عملها بشكل مبسط وسهل ستجد العديد من المقالات والفيديوهات على الانترنت تشرح لك ما هو الـ وما هو الـ لكنني أردت عمل مقالة تشرح تجربتي لعمل الـ في بشكل خاص لكن مع ذلك سأراعي الأشخاص الذي يريدون قراءه المقالة لفهم الـ في مثال عملي حقيقي بالطبع سأتطرق لشرح ما هو الـ وما هو الـ وما هو مفهوم الـ وما فائدته، لذا لا تقلق لكني لن اتعمق كثيرًا لانني أريد أن أركز على كيفية عمل الـ في ما هو الـ unittest ؟ الـ هي اختبار شيء واحد فقط بشكل مستقل عن باقي الأشياء ا...",
      "date_published": "2023-09-08T00:00:00.000Z",
      "date_modified": "2025-06-16T03:38:12.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هو الـ unit-test",
        "ما فائدة الـ unit-test",
        "استخدام الـ jest لعمل الـ unit-test",
        "تطبيق الـ unit-test في nestjs",
        "ما هو الـ mocking",
        "ما فائدة الـ mocking",
        "كيفية عمل mocking لتزييف الدوال",
        "عمل mocking لتزييف الدوال",
        "كفية عمل الـ unit-test",
        "كيفية اختبار الدوال"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/active-mailhog-alternatives",
      "url": "https://eltabarani.com/articles/active-mailhog-alternatives",
      "title": "البدائل النشطة لـ MailHog و Mailtrap",
      "summary": "المقدمة في مقالة سابقة وهى أداة MailHog بديل مجاني لـ Mailtrap تحدثنا فيها عن أداة التي تستخدم لاختبار البريد الإلكتروني على جهازك بدون الحاجة لاستخدام خدمات خارجية مثل وشرحنا كيفية تثبيتها واستخدامها مع مشروع كمثال عملي لاختبار البريد الإلكتروني على وكانت أداة رائعة بالفعل وساعدت الكثيرين في حل مشاكلهم لكن بعد ذلك، تبين أن مشروع توقف التطوير فيه منذ أغسطس وبه العديد من المشاكل التي لم ولن تحل على الأرجح لذا تمت كتابة هذه المقالة للحديث عن البدائل النشطة لـ البدائل النشطة لـ MailHog الخبر الجيد ...",
      "date_published": "2025-10-07T00:00:00.000Z",
      "date_modified": "2026-01-12T17:53:55.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "Mailpit",
        "MailHog Alternative",
        "Local Email Testing",
        "SMTP Testing",
        "Laravel Email",
        "Email Development",
        "Mail Debugging",
        "Local Development",
        "Email Simulation",
        "Development Tools",
        "Open Source",
        "بدائل MailHog النشطة",
        "بدائل Mailtrap المجانية",
        "أفضل بديل لـ MailHog",
        "أفضل بديل لـ Mailtrap",
        "Mailpit vs MailHog",
        "قائمة بدائل MailHog",
        "قائمة بدائل Mailtrap",
        "MailHog توقف التطوير",
        "أدوات اختبار البريد الإلكتروني",
        "اختبار البريد الإلكتروني على localhost",
        "Mailtrap بديل مجاني",
        "mailtrap alternative"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/backend-frontend-partnership",
      "url": "https://eltabarani.com/articles/backend-frontend-partnership",
      "title": "سر عداء الـ Backend والـ Frontend !",
      "summary": "في عالم البرمجة، هناك علاقة غريبة بين مطوري الـ ومطوري الـ أحيانًا تشعر وكأنهما في معسكرين منفصلين، كل منهما يعمل بشكل مستقل دون أن يكون هناك تواصل حقيقي بينهما وكل منهما يعتقد أن الآخر هو السبب في المشاكل التي تواجه المشروع وكلايهما يظن أنه أهم شخص في الفريق وتجد من يقول أن الـ هو أساس كل شيء، ومنهم من يقول أن الـ أهم شيء في المشروع حتى وإن كانت الشركة بها مطور واحد ومطور واحد فقط، تجد بينهما صدامات ومشاكل في التواصل وتجد هذا يحمل فأسه الحادة أينما ذهب والآخر يسن سيفه ويجهز للمعركة فما سر هذا ا...",
      "date_published": "2025-10-12T00:00:00.000Z",
      "date_modified": "2025-12-13T01:45:05.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "العلاقة بين Backend و Frontend",
        "التعاون بين المطورين",
        "كيفية تحسين التواصل في فريق التطوير",
        "معايير الـ API",
        "OpenAPI Contract",
        "User Story والتخطيط المشترك",
        "حل مشاكل التواصل في البرمجة",
        "Standards في تطوير الـ Backend",
        "تجربتي مع فرق التطوير",
        "نصائح للمطورين المبتدئين",
        "Backend vs Frontend",
        "Backend and Frontend partnership",
        "عداء الـ Backend والـ Frontend",
        "سر عداء الـ Backend والـ Frontend",
        "كيف يتفاهم الـ Backend مع الـ Frontend",
        "هل الـ Backend والـ Frontend أعداء"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/focus-on-the-basics",
      "url": "https://eltabarani.com/articles/focus-on-the-basics",
      "title": "التركيز على الأساسيات طريق النجاح",
      "summary": "بدأت رحلتي في عالم الـ بتعلم و ، وكنت دائمًا أحرص على فهم الأساسيات والمفاهيم الخاصة بعالم الـ والبرمجة بشكل عام لأن هذا هو المهم والحمد لله بعد التخرج عملت لمدة سنة تقريبًا بالـ و كنت أظن في البداية أنني سأظل أستخدم بشكل أساسي ودائم في مجالي حتى أنني كنت ابتعد عن باقي اللغات مثل , , وغيرها وكنت متمسك جدًا بـ و لكن الفرق الوحيد أنني كنت أهتم دائمًا بالأساسيات والمفاهيم الخاصة بالمجال بدايتي مع PHP Laravel في البداية، كانت لدي بعض المخاوف والخلافات مع لغة لم أكن أفضلها كثيرًا عندما كنت أبحث عن عم...",
      "date_published": "2024-06-04T00:00:00.000Z",
      "date_modified": "2025-07-08T23:44:32.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ركز على أساسيات البرمجة",
        "تعلم مفاهيم البرمجة",
        "بدايتي مع PHP Laravel",
        "كيف تبدأ في عالم البرمجة",
        "من أين أبدا تعلم البرمجة",
        "تعلم البرمجة",
        "نصائح لتحسين مهارات البرمجة",
        "مكن نفسك في الأساسيات",
        "تدرب على حل المشكلات بشكل روتيني",
        "تجميعات لمسائل وخريطة الطريق",
        "تعلم الخوارزميات وهياكل البيانات",
        "تعلم الـ OOP وأخواتها",
        "اختيار المجال المناسب",
        "نصائح تعلمتها متأخرًا",
        "لا تسأل قبل أن تبحث",
        "الاعتماد الدائم على الاخرين في كل صغيرة خطأ",
        "افهم ما تعلمته",
        "اقرا المقالات !"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/mailhog-alternative-to-mailtrap",
      "url": "https://eltabarani.com/articles/mailhog-alternative-to-mailtrap",
      "title": "أداة MailHog بديل مجاني لـ Mailtrap",
      "summary": "اليوم سنتحدث عن أداة وجدتها أحببت أن اشاركها معكم وهي ووجدتها مفيدة لذا فضلت أن أكتب مقالة عنها لتعريف الآخرين عنها أنت كمطور بشكل عام سواء كنت تستخدم أو أو غيرهما أظنك صادفت خدمة الشهيرة وهى خدمة سحابية توفر وهمي لاختبار الرسائل الإلكترونية غالبًا نستخدمها فقط في بيئة الـ و لرؤية شكل الرسائل الإلكترونية التي يتم إرسالها لكنني مؤخرًا واجهت مشكلة وهى أن يأتي مع قيود: 100 رسالة فقط شهرياً في النسخة المجانية عندما تنتهي من الـ رسالة، تضطر للانتظار حتى الشهر القادم أو الدفع للترقية يوجد على عدد الرس...",
      "date_published": "2025-08-09T00:00:00.000Z",
      "date_modified": "2026-02-10T17:25:54.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "MailHog",
        "Laravel Mail Testing",
        "Mailtrap Alternative",
        "Local Email Testing",
        "SMTP Testing",
        "Laravel Email",
        "Email Development",
        "Mail Debugging",
        "Local Development",
        "PHP Mail Testing",
        "Email Simulation",
        "Development Tools",
        "Laravel SMTP",
        "Email Configuration",
        "Testing Environment",
        "الحل هو MailHog كبديل يعمل على الـ localhost",
        "مثال تطبيقي شامل في Laravel عن MailHog",
        "تثبيت وتشغيل MailHog خطوة بخطوة",
        "ربط مشروع Laravel للعمل مع MailHog",
        "اختبار إرسال رسالة إلى MailHog",
        "تجهيز مشروع Laravel بسيط"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/my-way-to-problem-solving",
      "url": "https://eltabarani.com/articles/my-way-to-problem-solving",
      "title": "طريقي في تعلم حل المسائل البرمجية",
      "summary": "هذه كانت مجرد عمل شخصي لي لتجميع المعلومات والمواقع والفيديوهات التي استفدت منها شخصيا أثناء رحلتي في عالم حل المسائل البرمجية هذه كانت تجميعة خاصة بي أنا شخصيًا اثناء رحلتي لحل المسائل البرمجية منذ أن كنت في الكلية وأحببت أن اشاركها معكم لا اقول انه مسار بل هي مجرد تجميعة وملاحظات شخصية كما قلت وأنت لست مرغمًا على اتباعها بحذافيرها بالطبع اتمنى ان تزيد عليها وتجد مصادر أخرى وان تعتمد على هذه التجميعة كمصدر ثانوي لك (مصدر من مصادرك الأخرى للتعلم) ان وجدت مصدر او فيديو او مقالة جيدة ارجوا ان تشار...",
      "date_published": "2022-01-03T00:00:00.000Z",
      "date_modified": "2025-12-13T01:45:05.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "مسار  تعلم حل المسائل",
        "تعلم اساسيات البرمجة",
        "تعلم الخوارزميات",
        "تعلم هياكل البيانات",
        "اساسيات الـ C++",
        "أساسيات البرمجة",
        "مواقع مفيدة لتعلم حل المسائل",
        "تعلم الـ Complexity",
        "تعلم الـ Big O",
        "حل مسائل الـ Competitive Programming",
        "تعلم الـ Competitive Programming",
        "تعلم الـ Problem Solving"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/401vs403",
      "url": "https://eltabarani.com/articles/401vs403",
      "title": "الفرق بين الـ 401 و 403 في الـ RESTful API",
      "summary": "سنشرح نبذة سريعة عن الفرق بين و سنفترض في البداية أننا لدينا ثلاث أشخاص هل يستطيع الشخص الأول دخول الشركة ؟ لا، لأنه ليس موظفًا في الشركة ولا يمد بالشركة بصلة لذا حصلنا على أي لا تملك أي صلاحيات في الشركة هل يستطيع الشخص الثاني دخول الشركة ؟ نعم، لأنه موظف في الشركة لذا يملك صلاحيات دخولها لكن، هل يملك هذا الموظف كل أنواع الصلاحيات ؟ بمعنى هل يستطيع حذف جميع بيانات الشركة على سبيل المثال ؟ لا، برغم من أنه موظف في الشركة إلا أنه لا يملك كل الصلاحيات فـ تأتي بمعنى محظور! كل موظف لديه رتبة أور دور ...",
      "date_published": "2022-12-09T00:00:00.000Z",
      "date_modified": "2025-06-16T03:38:12.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما معنى 401",
        "ما معنى 403",
        "ما الفرق بين 401 و 403",
        "ماذا تعني Unauthorized",
        "ماذا تعني Forbidden",
        "ما الفرق بين 401 و 403"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/jonas-nodejs-course-security-issue",
      "url": "https://eltabarani.com/articles/jonas-nodejs-course-security-issue",
      "title": "مشكلة أمنية في دورة Jonas للـ Node.js",
      "summary": "في دورة جوناس لتعلم برمجة ، اكتشفت مشكلة في الحماية، وبالتحديد في الكلاس المسمى وعندما تحدثت مع بعض الأشخاص، لاحظت أن بعضهم واجه نفس المشكلة ولم ينتبهوا لها، بالرغم من أنها قد تعد مشكلة كبيرة لذلك، أردت أن أنبه إلى هذه المشكلة من خلال هذه المقالة توضيح المشكلة في كلاس لدينا دالة تسمى والتي تقوم بتحديد الحقول التي نريدها ان ترجع من قاعدة البيانات وشكل الـ كان بسيط بهذا الشكل ، هكذا كان سيرجع لنا اسم ودولة جميع المستخدمين لكن عندما تحدد كلمة السر في الـ بهذا الشكل ، سيقوم بإرجاع كلمة السر لجميع ال...",
      "date_published": "2023-08-25T00:00:00.000Z",
      "date_modified": "2025-12-13T01:45:05.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "مشكلة أمنية",
        "دورة جوناس",
        "مشكلة في دورة جوناس",
        "حل مشكلة في دورة جوناس",
        "دورة جوناس Nodejs"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/middleware",
      "url": "https://eltabarani.com/articles/middleware",
      "title": "فائدة الـ Middleware في عالم الـ Backend",
      "summary": "تخيل أنك تريد شراء شيء ما من أمازون لنفترض أنه كيلو طماطم على سبيل المثال فقررت شرائه بالفعل، فأرسلت طلب الشراء للموقع عندما يصل طلبك إلى الـ الخاص بالشركة، هل سيتم تنفيذ طلبك فورًا دون أي قيود ؟ أو شروط أو أي تحقق لهويتك أو إجراءات أمنية؟ بالطبع لا إذا ما الذي سيحدث ؟ هناك إجراءات سيتم اتخاذها منها: هل أنت مسجل في الموقع أم لا هل لديك الصلاحية لشراء كيلو طماطم ام لا هل لديك ما يكفي من المال أم لا وهكذا ... كل عملية هنا تسمى لأنها تنفذ في منتصف الطريق قبل أن يصل طلبك لوجهته الأساسية ويتم تنفيذه ...",
      "date_published": "2023-03-05T00:00:00.000Z",
      "date_modified": "2026-01-18T22:41:10.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هو الـ Middleware",
        "الـ Middleware في الـ backend",
        "ما فائدة الـ Middleware",
        "استخدامات الـ Middleware",
        "استخدام الـ Middleware في حماية البيانات",
        "استخدام الـ Middleware في تعديل البيانات",
        "ملخص فوائد الـ Middleware",
        "أمثلة على الـ Middleware"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/sequential-concurrency-parallelism",
      "url": "https://eltabarani.com/articles/sequential-concurrency-parallelism",
      "title": "شرح Sequential و Concurrency و Parallelism",
      "summary": "سنشرح بشكل مبسط الفروق بين هذه المفاهيم الثلاثة , , : الأكواد التي سأعرضها مجرد أكواد تخيلية من أجل الشرح لا أكثر المهم هنا أن الفكرة العامة تصل بشكل واضح Sequential لنفترض أولًا أننا لدينا عمليات مختلفة وكل عملية تستغرق ثانية واحد فقط ونريده أن ينفذ هذه العمليات ولنفترض أننا لدينا الـ سينفذ العمليات بالتسلسل، واحدة تلو الأخرى بالترتيب وكل عملية يجب أن تنتظر العملية السابقة لكي تبدأ العمليات كلها استغرقت ثواني، لأنها نُفذت بالتسلسل والـ يستطيع تنفيذ شيء واحد فقط في كل مرة وكل عملية انتظرت التي ق...",
      "date_published": "2022-12-12T00:00:00.000Z",
      "date_modified": "2025-06-16T03:38:12.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هو الـ Sequential",
        "ما هو الـ Concurrency",
        "ما هو الـ Parallelism",
        "ما الفرق بين Sequential, Concurrency, Parallelism",
        "ما هو الـ Thread",
        "ما هو الـ CPU",
        "ما هو الـ TASK",
        "ما هو الـ Multiply Threads"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/what-is-jwt",
      "url": "https://eltabarani.com/articles/what-is-jwt",
      "title": "ما هو الـ JWT وكيف يحمي التطبيقات ؟",
      "summary": "أولًا الـ هو اختصار لـ والـ كما نعرف هو الشكل المتعارف عليه في تخزين البيانات والـ يمكنك أن تتخيله كبطاقة تعرفية مشفرة فببساطة الـ يستطيع تشفير الـ لـ الآن لنفترض أنه لدينا بيانات المستخدم ونريد عمل له نظرة أولية عن الـ JWT الـ سيحتاج منك بعض لأشياء لكي ينشيء الـ منها البيانات التي تريد تشفيرها بالطبع والـ ، هي جملة تبتكرها لتكون لكلمة سر تستخدم في التشفير لتزيد من قوة التشفير ويتحسن أن نعطيه تاريخ انتهاء صلاحية هذا الـ لضمان حماية المستخدم بشكل افضل، عن طريق انه يجدد الـ كل فترة شكل الـ سيكون ه...",
      "date_published": "2022-12-18T00:00:00.000Z",
      "date_modified": "2025-06-20T12:40:18.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هو الـ JWT",
        "ما هو الـ Json Web Token",
        "كيف يتم إنشاء الـ token",
        "مكونات الـ token",
        "ما هو الـ header في الـ token",
        "ما هو الـ payload في الـ token",
        "ما هو الـ signature في الـ token",
        "استعمال الـ token",
        "متى نقوم بإنشاء الـ token",
        "أين نستخدم الـ token",
        "ما علاقة الـ token بتغير كلمة السر"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/articles/why-o(1000000)-is-o(1)",
      "url": "https://eltabarani.com/articles/why-o(1000000)-is-o(1)",
      "title": "لماذا O(1000000) يساوي O(1) في التحليل",
      "summary": "ما الهدف الأساسي للـ ؟ وعن ماذا تعبر تحديدًا ؟ لماذا عندما نجد تلف لفة نقول ؟ وعندما نجد نفس الـ تلف لفة نقول ؟ سنجاوب على السؤال بمثال بسيط يوضح الفكرة الأساسية من الـ تبسيط الفكرة لنفترض انك انضمت لشركة ناسا والحمد لله، وأخبروك أنهم يريدون منك أن تقوم بعمل بعض العمليات على الكواكب في مجموعتنا الشمسية فناسا طلبت منك أن تطبع اسامي الكواكب فقط نحن نعرف أن عدد الكواكب في مجموعتنا الشمسية وهو عدد ثابت لن يتغير هنا قمنا بعمل فورة جميلة تلف على الكواكب حيث أن يمثل للكوكب رقم كما ترى فتحت فقط طبعنا ال...",
      "date_published": "2022-12-29T00:00:00.000Z",
      "date_modified": "2025-06-16T03:38:12.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "tags": [
        "ما هي الـ BigO",
        "كيف نحسب الـ BigO",
        "ما هو الـ BigO في البرمجة",
        "لماذا O(1) تساوي O(1000000)",
        "ما معنى O(1)",
        "ما معنى O(n)"
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/carousels/status-codes",
      "url": "https://eltabarani.com/carousels/status-codes",
      "title": "ما أهم أنواع الـ Status Codes ؟!",
      "summary": "لما علي معرفة هذه الرموز، وإلى ماذا ترمز ؟ وما الغرض من وجودها في عالم تطوير الـ API والتطبيقات الويب ؟ دليل شامل لفهم أهم رموز الحالة",
      "date_published": "2024-03-27T00:00:00.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/carousels/unit-test",
      "url": "https://eltabarani.com/carousels/unit-test",
      "title": "هل الـ Unit Test فعلًا مهم؟!",
      "summary": "ولماذا نختبر دوال وأمور نحن كتبناها ؟ ومتأكدون تمامًا منها ومما تفعله ! تعلم أهمية الاختبارات في ضمان جودة الكود وتجنب الأخطاء المستقبلية",
      "date_published": "2024-03-31T00:00:00.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/carousels/abstract-class-vs-interface",
      "url": "https://eltabarani.com/carousels/abstract-class-vs-interface",
      "title": "الفرق بين الـ Abstract Class والـ Interface",
      "summary": "هل يمكننا أن نستغني عن أحدهما ونفضل الآخر ؟ دليل شامل لفهم الفروقات العملية والنظرية بينهما ومتى نستخدم كل منهما في مشاريعنا البرمجية",
      "date_published": "2024-04-03T00:00:00.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/carousels/dynamic-dispatch",
      "url": "https://eltabarani.com/carousels/dynamic-dispatch",
      "title": "ما علاقة Dynamic Dispatch بـ Polymorphism ؟",
      "summary": "ما معنى Dynamic Dispatch من الأساس ؟ وكيف نستخدمه بشكل عملي لجعل الكود اكثر مرونة وسلاسة ؟ شرح مفصل لهذا المفهوم المهم في البرمجة",
      "date_published": "2024-04-06T00:00:00.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/carousels/git-basics",
      "url": "https://eltabarani.com/carousels/git-basics",
      "title": "تعلم أساسيات Git وأهم الأوامر",
      "summary": "ما فائدة الـ Git وكيف نتعامل معه بسلاسة ونفهم بنيته التحتية وما أهم أوامره ؟ دليل شامل من أجل إتقان أساسيات إدارة التغييرات في المشاريع البرمجية",
      "date_published": "2024-04-22T00:00:00.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/carousels/git-head-branches",
      "url": "https://eltabarani.com/carousels/git-head-branches",
      "title": "استخدم Git لكي تسافر عبر الزمن والأبعاد",
      "summary": "ما فائدة الـ HEAD ؟ وما مفهوم الـ Branch في الـ Git ؟ هل فعلًا الـ Git جهاز للسفر عبر الزمن والأبعاد ؟ تعلم كيفية التنقل بين التغييرات والفروع في مشروعك",
      "date_published": "2024-04-25T00:00:00.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "language": "ar"
    },
    {
      "id": "https://eltabarani.com/carousels/git-remote",
      "url": "https://eltabarani.com/carousels/git-remote",
      "title": "تعامل Git مع Remote Repository",
      "summary": "سنتعلم كيف يتعامل الـ Git مع الـ Remote Repository وإجابة السؤال الأزلي ما الفرق بين الـ GitHub والـ Git ؟ دليل شامل للعمل الجماعي",
      "date_published": "2024-04-27T00:00:00.000Z",
      "authors": [
        {
          "name": "أحمد الطبراني",
          "url": "https://eltabarani.com/about"
        }
      ],
      "language": "ar"
    }
  ]
}