اذهب إلى المحتوى

لوحة المتصدرين

  1. Ail Ahmed

    Ail Ahmed

    الأعضاء


    • نقاط

      7

    • المساهمات

      1220


  2. محمد عاطف17

    محمد عاطف17

    الأعضاء


    • نقاط

      3

    • المساهمات

      3187


  3. عبد الوهاب بومعراف

    • نقاط

      2

    • المساهمات

      789


  4. Yo Ho Ho Ho

    Yo Ho Ho Ho

    الأعضاء


    • نقاط

      2

    • المساهمات

      4


المحتوى الأكثر حصولًا على سمعة جيدة

المحتوى الأعلى تقييمًا في 09/14/24 في كل الموقع

  1. هل التعديل علي نوع متغير من int ل str باستخدام داله str() لا يسجل التعديل في الذاكره؟
    2 نقاط
  2. السلام عليكم ده الكود heart['cholesterol'] = heart['cholesterol'].replace(0,np.nan) heart['cholesterol'].isnull().sum() knn_imputer = KNNImputer(n_neighbors=5) heart = pd.DataFrame(knn_imputer.fit_transform(heart),columns=heart.columns) heart['cholesterol'].isnull().sum() وده قاعد البيانات المستخدم السوال ها بعد كتبت الكود ده هل البيانات الجديد اتحفظت في الملف قاعد البيانات والا اي ؟ heart.db
    2 نقاط
  3. احتاج مساعدتكم لأني مشتت جدًا كان هدفي ان اتخصص ك Back end dev بلغة Python/Django ولكن سمعت ان فرص العمل لمطورين Back end المبتدئين قليلة لذلك توجهت الى Full-stack بلغة JS/Node.js هل تنصحوني ان استمر في هذا المجال ام انه سيكون صعبًا علي تعلم كلا من Front end و Back end ولهذا اعود لبايثون ؟
    2 نقاط
  4. السلام عليكم ده كود بلغه بايثون لحفظ بيانات المستخدمين from sys import exit from time import sleep class User: def __init__(self , first_name , last_name , email , password , status="inactive"): self.first_name = first_name self.last_name = last_name self.email = email self.password = password self.status = status def dasipy(self): print(f"Frist name: {self.first_name}") print(f"Last name: {self.last_name}") print(f"Email: {self.email}") print(f"Password: {self.password}") print(f"Status: {self.status}\n") print("_" * 20) def username(): first_name = input("First_name: ") last_name = input("last_name: ") email = input("Email: ") password = input("password: ") return User(first_name , last_name , email , password) user = [] while True: print("Welcome to user managment\n") print("Choose an action\n") print("1. Add new user") print("2. Display all users") print("3.Exit\n") choose = input("Enter you choice: ") if choose == '1': user.append(username()) print("User abbed successfully!\n") sleep(2) if choose == '2': if user: for i in user: i.dasipy() sleep(2) else: print("Not Found User!") sleep(2) elif choose == '3': print("Exiting...") exit(0) else: print("No choose 1 or 2 or 3!") عاوز افهم هو ليه البيانات مش بتحفظ في المتغير user يعني لو اقفلت البرنامج وشغلتو تاني وبختار رقم 2 عشان يعرض البيانات الاكانت مخزنه فا اليانات مش موجود ليه؟ وازي البيانات اتخزينت اصل في المتغير ده user
    2 نقاط
  5. يعد إطار عمل لارافيل Laravel واحدًا من أهم أطر عمل PHP وأكثرها شهرة وقوة، فقد تمكن لارافيل من إثبات جدارته واحتلال مواقع متصدرة بين نظم تطوير تطبيقات الويب لما يتمتع به من ميزات أبرزها توفير الكثير من الوظائف البرمجية الجاهزة التي تجعل تطوير الويب أسهل وأسرع، واهتمامه الخاص بأمن مواقع الويب وحمايتها من الثغرات الأمنية. فإذا كنت تتساءل ما هو لارافيل Laravel وما فوائد استخدامه، وترغب في التعرف على أبرز مميزاته وعيوبه، واكتشاف أفضل المصادر العربية التي تمكنك من تعلم لارافيل واستخدامه في إنشاء مواقع وتطبيقات ويب بميزات متقدمة فهذا المقال لك. ما هو لارافيل Laravel لارافيل Laravel هو إطار عمل مفتوح المصدر مبني على لغة PHP يستخدم لتطوير تطبيقات الويب، طوره تايلور أوتويل Taylor Otwell عام 2011 ليمكّن المطورين من إنشاء تطبيقات ويب متكاملة الميزات بسهولة وسرعة من خلال توفير أكثر المهام والوظائف الشائعة التي يحتاجونها في مشاريع الويب. وإطار العمل Framework هو باختصار بيئة توفر مجموعة من الوظائف والأدوات الجاهزة المكتوبة مسبقًا والتي يستخدمها المبرمجون والمطورون لتسهل عليه عملهم في التطوير وتمكنهم من أداء المطلوب باستخدام أقل قدر من التعليمات البرمجية، وللمزيد من المعلومات أنصح بالاطلاع على مقال تعرف على مفهوم إطار العمل Framework وأهميته في البرمجة لقد عزز إطار العمل لارافيل من قوة لغة PHP وساهم في استمراريتها وديمومتها، حيث أنه وفر للمبرمجين طريقة أكثر كفاءة في التعامل معها وبسّط كتابة تعليماتها المعقدة نوعًا ما وجعل تطوير تطبيقات الويب باستخدامها أسرع وأسهل. إصدارات لارافيل Laravel قبل إصدار لارافيل 9 كان فريق لارافيل يوفر إصدارًا رئيسيًا كل ستة أشهر بمعدل نسختين رئيسيتين سنويًا لتخفيف أعباء الصيانة، لكن تقرر بعد ذلك توفير الإصدارات الجديدة بشكل سنوي. يتطور لارافيل Laravel بسرعة فائقة مع مرور الوقت ويضيف تحسينات وميزات ووظائف جديدة تواكب اتجاهات السوق المتغيرة باستمرار أو يغير بعض الوظائف أو يلغيها لذلك من الضروري معرفة الإصدار الذي تستخدمه في تطوير مشاريعك. وإليك قائمة بأهم إصدارات لارافيل laravel وتاريخ صدورها: أطلق الإصدار الأول لارافيل 1.0 في 9 يونيو/حزيران 2011 توالت بعدها الإصدارات لغاية لارافيل 8 الذي تم إطلاقه في 8 سبتمبر/أيلول 2020 وهو الإصدار العشرين من Laravel ولم تعد كافة هذه الإصدارات تتلقى تحديثات أمنية لذا يفضل أن تتم ترقية التطبيقات المبنية بأحدها لإصدار أحدث لمنع الثغرات الأمنية والوصول إلى الميزات الجديدة. صدر لارافيل 9 بتاريخ 8 فبراير 2022 ويتطلب هذا الإصدار نسخة PHP 8.0 كحد أدنى. صدر لارافيل 10 بتاريخ 7 فبراير 2023 وتضمن العديد من الميزات الجديدة التي تعزز أداء تطبيقات الويب وأمانها ووظائفها ويتطلب هذا الإصدار نسخة 8.1 من لغة PHP كحد أدنى. ومن المتوقع أن يصدر لارافيل 11 في الربع الأول من عام 2024، وللمزيد من التفاصيل يمكنك مطالعة الصفحة التالية لكافة إصدارات لارافيل، والجدير بالذكر أن لارافيل قد أثبت كفاءته لأكثر من عقد من الزمن وتمكن من فرض نفسه كأحد أكثر أطر PHP شيوعًا وتفضيلًا من قبل مطوري الويب بفضل طريقة تنظيمه الأنيقة وميزاته القوية. أهمية إطار لارافيل في سوق العمل يعد لارافيل أحد أشهر أطر عمل PHP وأكثرها استخدامًا ويملك مجتمعًا كبيرًا من المطورين الذين يوفرون الكثير من المكتبات والحزم الجاهزة والمتاحة للاستخدام بسهولة. كما يعد لارافيل أحد المهارات المطلوبة بشدة في سوق العمل، ويبحث الكثير من أرباب العمل عن مطورين محترفين في استخدام إطار العمل لارافيل لتطوير تطبيقاتهم ومواقعهم الإلكترونية ولا عجب في ذلك فهو واحد من أسرع أطر عمل PHP نموًا وأكثرها غنىً بالميزات. وتستخدم العديد من المواقع الكبرى لارافيل في تطوير تطبيقاتها الخاصة،فبحسب موقع builtwith الذي يحدد التقنيات المستخدمة في إنشاء المواقع هناك 1,175,772 موقع ويب مبني باستخدام إطار عمل Laravel ولك أن تتخيل مدى شعبيته. كما يلبي لارافيل كافة متطلبات العمل لكونه يعتمد على لغة PHP العريقة التي تعد واحدة من أقوى لغات البرمجة من جانب الخادم والتي تستخدم في تطوير ملايين المواقع الإلكترونية من بينها مواقع شهيرة مثل فيسبوك وويكيبيديا. فإذا كنت مهتمًا بمجال تطوير الويب فتعلم إطار عمل لارافيل Laravel يوفر لك الكثير من الفرص المميزة في مجال تطوير تطبيقات الويب ويمكنك من إنشاء كافة أنواع التطبيقات والمواقع الإلكترونية سواء المواقع البسيطة للشركات الناشئة منها أو المواقع المتقدمة كمواقع التجارة الإلكترونية بسرعة واحترافية. ويتنافس إطار عمل لارافيل مع أطر عمل تطوير الويب الأخرى في سوق العمل مثل جانغو Django المبني باستخدام لغة البرمجة بايثون Python والتي تعتبر أسرع من لغة PHP وأكثر شعبية منها، وإطار عمل إكسبريس Express المبني باستخدام لغة جافا سكريبت أحد أكثر لغات البرمجة شهرة واستخدامًا بين أوساط المطورين، وإطار عمل ريلز Rails المبني باستخدام لغة البرمجة روبي Ruby المحببة للمبتدئين، تقدم معظم أطر العمل ميزات متشابهة وكي تتمكن من اختيار إطار العمل الأنسب لك عليك أن تأخذ عدة أمور بعين الاعتبار مثل لغة البرمجة التي تفضل تعلمها وطبيعة المشاريع التي تعمل عليها، ولمزيد من التفاصيل حول أشهر أطر عمل تطوير الويب أنصح بمطالعة مقال مقارنة بين Django و Laravel و Rails. مميزات لارافيل Laravel لاشك أن لارافيل Laravel ليس إطار العمل الوحيد المتاح اليوم بل هو واحد من بين عشرات أطر عمل تطوير الويب، وقد تتساءل لماذا أستخدم لارافيل دونًا عن غيره؟ وما الذي يميزه عن غيره من أطر عمل تطوير الويب؟ في الواقع نجد تحيز من قبل المبرمجين لاختيار لارافيل دون غيره نظرًا لما يتمتع به من ميزات، وإليك قائمة بأهم 10 مميزات لإطار لارافيل: سهولة التعلم والاستخدام. تسريع وقت التطوير. التوثيق الجيد. غني بالميزات وقابل للتوسيع. يهتم بأمان التطبيقات. يحسن أداء التطبيقات. يدعم تعدد اللغات. يسهل تصحيح أخطاء التطبيقات وصيانتها. يوفر نظام لتهجير البيانات Migration. يوفر نظام التوجيه Routing. لنناقش كل خاصية من هذه الخواص بمزيد من التفصيل ونكتشف أهميتها في تطوير الويب. 1. سهولة التعلم والاستخدام يتميز لارافيل بكود سهل التعلم والاستخدام، لكنه بالطبع يشترط امتلاك معرفة مسبقة بأساسيات PHP ومبادئ البرمجة كائنية التوجه OOP إلى جانب وجود معرفة جيدة حول HTML وأحد أنظمة إدارة قواعد البيانات مثل MySQL أو PostgreSQL بعدها سيكون تعلم لارافيل أمرًا في غاية البساطة. 2. تسريع وقت التطوير يتضمن لارافيل Laravel العديد من الوظائف التي تسهل على المطور تنفيذ المهام الشائعة مثل عمليات المصادقة authentication، والتوجيه routing، وتهجير قواعد البيانات migrating، والتخزين المؤقت cach، فكل هذه الوظائف مضمنة ومدمجة في نظام لارافيل وجاهزة لتستخدمها بكل سهولة. كما يتضمن واجهة سطر أوامر مدمجة تسمى آرتيزان Artisan توفر مجموعة من الأوامر المفيدة في بناء تطبيقات الويب، وبالجمع بين أوامر آرتيزان والوظائف المضمنة تصبح عملية تطوير تطبيقات الويب أسرع بكثير. 3. التوثيق الجيد يحتوي لارافيل Laravel على توثيق مميز عبر الإنترنت يساعد المطورين والمبرمجين في تعلم كل ما يحتاجونه والعثور على إجابات لكافة تساؤلاتهم حول التعامل مع هذا الإطار، كما تتوفر معلومات هائلة متاحة من مجتمع مطوري لارافيل. المشكلة الوحيدة التي توجد في هذه المصادر هو أنها متاحة باللغة الإنجليزية وشرحها جامد إلى حد ما، وفي فقرة تعلم لارافيل سأطلعك على مصادر عربية جيدة تساعدك في تعلم لارافيل. 4. غني بالميزات وقابل للتوسيع يعد لارافيل نظامًا قويًا وغنيًا بالكثير من الميزات المضمنة ويوفر مجموعة متنوعة من المكتبات المضمنة التي تساعدك على بناء تطبيقات متقدمة تعالج ملايين الطلبات بفضل دعمه للتخزين المؤقت السريع والتخزين الموزع، كما يوفر لارافيل منصات سحابية خفية الخوادم Serverless مثل Laravel Forge و Vapor تمكنك من نشر التطبيقات وتشغيلها دون الحاجة إلى إدارة الخوادم وهي منصات قابلة للتوسيع التلقائي بكل سهولة. أضف إلى ذلك يوفر مطوروا لارافيل الكثير من الحزم الخارجية لأي وظيفة أو ميزة تحتاجها، على سبيل المثال يمكنك باستخدام مكتبة Socialite تضمين ميزة تسجيل الدخول إلى موقعك باستخدام حسابات شبكات التواصل الاجتماعي على فيسبوك أو تويتر أو لينكدإن أو جيتهب أو جوجل بكل سهولة. 5. يهتم بأمان التطبيقات يمكنك لارافيل من تطوير مواقع وتطبيقات آمنة بفضل العديد من ميزات الأمان المدمجة مثل نظام المصادقة أو الاستيثاق المدمج authentication system ونظام المصادقة authorization والتحقق من صحة البيانات data validation وتشفير البيانات والتحقق من البريد الإلكتروني وإعادة تعيين كلمة المرور، كما يسهل عليك تكوين ميزات الأمان المتقدمة التي تحمي تطبيقاتك من الاختراق وتضمن أمان بيانات عملائك. 6. يحسن أداء التطبيقات يوفر لارافيل عدة طرق لتحسين سرعة التطبيقات وتحسين أدائها مثل دعم التخزين المؤقت لموقعك الإلكتروني على الخادم، كما أنه يسهل تنفيذ تقنيات أخرى لتحسين السرعة مثل تقليل استخدام الذاكرة وفهرسة قاعدة البيانات. فإذا كانت سرعة الموقع أولوية لديك فإن لارافيل خيارك الأنسب. 7. يدعم تعدد اللغات فمن خلال ميزة التوطين localization يمكنك لارافيل من إنشاء تطبيقات متعددة اللغات واسترداد السلاسل النصية بلغات مختلفة، وهو يدعم عدة لغات من بينها اللغة العربية. 8. يسهل تصحيح أخطاء التطبيقات وصيانتها يحتوي لارافيل على ميزات تختبر كل جزء من موقع الويب الخاص بك للبحث عن أي أخطاء ويعرض لك رسائل واضحة ومفصلة تبين كافة الأخطاء التي تحدث في موقعك ويسهل عليك تصحيحها، كما أنه يسهل صيانة التطبيقات بفضل ميزات الكود النظيف واعتماد مبادئ البرمجة كائنية التوجه OOP ومعمارية MVC التي تنظم الكود وتمكن أي مطور من متابعة العمل على مشروع سابق وتطويره وإضافة الميزات المطلوبة له. 9.يوفر نظام تهجير البيانات Migration يوفر لارافيل ميزة تهجير البيانات Migration التي توفر آليات لإنشاء وتعديل جداول قاعدة البيانات كما يوفر آلية شبيهة بنظام التحكم في الإصدارات لقاعدة البيانات الخاصة بك تتعقب كيفية تعديل قاعدة البيانات مع الوقت وتسمح لكافة أعضاء فريق التطوير بتعديل قاعدة بيانات المشروع ومشاركته فيما بينهم وتسهل حذف قاعدة البيانات وإعادة إنشائها عند الضرورة. وللمزيد من التفاصيل حول هذه الميزة يمكنك مطالعة مقال تهجير قواعد البيانات في لارافيل 5 10. يوفر نظام التوجيه Routing يوفر لارافيل نظام توجيه Routing قوي لمعالجة وإدارة مسارات تطبيق الويب ويُمكِّنك من الانتقال من مكان لآخر في تطبيقك وتبادل المعلومات بينها بسهولة، كما يمكّنك من استخدام أسماء بسيطة ترتبط بأجزاء مختلفة من تطبيقك بدلاً من الأسماء الطويلة والمربكة، ستجد كافة المسارات الخاصة بالتطبيق في الملف web.php ضمن المجلد routes لمشروعك وللمزيد من التفاصيل يمكنك الاطلاع على توثيق التوجيه Routing في لارافيل. عيوب لارافيل Laravel لا تخلو أي تقنية مهما كانت متقدمة من بعض العيوب ومن بينها لارافيل، فهو يملك بعض جوانب النقص وإليك قائمة بأبرز عيوب لارافيل: يعتبر إطار عمل لارافيل بطيئًا نسبيًا عند مقارنته ببعض أطر تطوير الويب الأخرى. رغم كونه آمنًا بشكل كبير إلا أنه لا يزال مهددًا باستهدافه بالثغرات الأمنية بسبب اعتماده على PHP التي وسمت بكثرة الثغرات الأمنية فيها تحديدًا في الإصدارات القديمة منها. تكلفته عالية فالمواقع المطورة بإطار لارافيل قد تكون أغلى نسبيًا من المواقع المطورة بغيرها من تقنيات الويب كأنظمة إدارة المحتوى أو أطر العمل الأخرى وهذا رغم كونه عامل قوة لك كمطور لكنه قد يجعل بعض العملاء يفضلون الخيارات الأرخص. وجود تحديثات متكررة قد يجعلك تواجه صعوبات في تعلم الجديد في كل إصدار وتعديل شيفرة تطبيقاتك المطورة بإصدارات قديمة لذا يجب أن تكون لديك رغبة مستمرة في التعلم كي تتلاءم مع كل إصدار جديد. كانت هذه قائمة بأبرز عيوب أو سلبيات لارافيل Laravel، وبموازنة السلبيات والإيجابيات يمكن أن تقرر فيما إذا كان إطار لارافيل سيلبي احتياجاتك أم لا. تنظيم الكود في لارافيل Laravel يتميز إطار لارافيل Laravel بكود منظم وسهل الصيانة يحافظ على تنظيم مشاريعك البرمجة من خلال استخدامه معمارية MVC وهي اختصار لثلاث كلمات هي: النموذج Model الذي يعني بيانات التطبيق فهو يتفاعل مباشرة مع قاعدة البيانات الخاصة بك ويسترد المعلومات منها. العرض View الذي يعني واجهة التطبيق فهو يعرض الصفحات التي يتفاعل معها المستخدم مباشرة. المتحكم Controller وهو صلة الوصل بين العرض والنموذج فهو يستقبل طلبات المستخدمين ويسترد البيانات المطلوبة من النموذج ويعالجها ويرسلها إلى صفحات العرض. وباستخدام هذا الأسلوب التنظيمي يستطيع لارافيل فصل كود التطبيق إلى ثلاث مجموعات لكل منها وظيفة محددة وهي الواجهة الخلفية والواجهة الأمامية ووحدة التحكم للربط بين الواجهتين وهذه الميزة تجعل من لارافيل أفضل إطار عمل PHP لتطبيقات الويب. بالإضافة إلى ذلك يستخدم لارافيل المسارات routes لتعيين عناوين URL الخاصة بإجراءات متحكم معين، فعندما يقوم المستخدم بإدخال عنوان URL خاص بالتطبيق يعين المسار المرتبط بهذا العنوان عنوان URL للمتحكم المسؤول عن استرداد البيانات المطلوبة من قاعدة البيانات أو النموذج ويمررها إلى صفحات العرض النهائية. كيف أتعلم لارافيل Laravel؟ بعد أن تعرفنا على إطار عمل لارافيل وأهم مميزاته واستخداماته، سنوضح لك في هذه الفقرة طريقة تعلم لارافيل وأهم الخطوات التي عليك اتباعها كي تحترفه. قبل أن تبدأ بتعلم لارافيل يجب أن تكون على دراية بأساسيات تطوير الويب والمفاهيم الأساسية في HTML و CSS. يجب أن تتعلم أساسيات البرمجة بلغة PHP وتتمكن من كتابة برامج PHP بسيطة وتعرف كذلك مبادئ البرمجة كائنية التوجه OOP. تعلم المكونات الأساسية لإطار عمل لارافيل ومعمارية MVC ومفاهيم النماذج وصفحات العرض والمتحكمات من خلال مصادر التعلم التي تفضلها سواء كانت مواقع الإنترنت أو الكتب أو الدورات التعليمية واحرص على تحديد خطة للتعلم والتزم بها كي تحقق أهدافك. طور مشاريع تطبق فيها ما تعلمته، فالتطبيق العملي طريقة رائعة لتعلم المفاهيم التي تعلمتها، ابدأ بمشروع بسيط ثم انتقل إلى مشاريع أكثر تقدمًا فهذا يساعدك على إنشاء معرض أعمال يعزز مسيرتك المهنية. لا تتوقف عن التعلم واطلع على كل جديد في مجال تطوير الويب عمومًا وإطار لارافيل على وجه الخصوص، فالتقنيات تتطور بسرعة والتعلم المستمر يساعدك على التكيف مع أي تطور جديد والبقاء في الصدارة. مصادر تعلم لارافيل Laravel إذا كنت تبحث عن مصدر عربي موثوق لتعلم لارافيل من الصفر للاحتراف بشهادة معتمدة تعزز فرصتك في سوق العمل ستجد في أكاديمية حسوب دورة تطوير تطبيقات الويب باستخدام لغة PHP وهي دورة تدريبية عالية الجودة تضم مسارات متعددة ولا تتطلب منك أي معرفة مسبقة وتعلمك كل ما يخص لغة PHP وإطار عملها لارافيل وتدمج بين الشرح النظري والتطبيق العملي، فمن خلالها ستتعلم تطوير العديد من تطبيقات الويب المتكاملة وتبني من خلالها معرض أعمال قوي، كما ستتمكن من خلال هذه الدورة من التواصل مع مدربين أكفاء وطرح أي سؤال أو مشكلة تواجهك عند تطبيق مشروعك البرمجي. كما ستجد في أكاديمية حسوب الكثير من مصادر التعلم المجانية مثل المقالات والدروس المتنوعة حول PHP وحول إطار عمل لارافيل Laravel، وبالإضافة لكل ما سبق فقد ترجمت موسوعة حسوب توثيق لارافيل الأجنبي إلى اللغة العربية ويمكنك من خلاله أن تتعرف على كل ما يخص هذا الإطار بتسلسل منظم وواضح. تنصيب لارافيل Laravel كي تتمكن من التعامل مع مشاريع لارافيل في حاسوبك المحلي عليك اتباع مجموعة من الخطوات وهي كالتالي: أول خطوة قبل البدء بتثبيت لارافيل Laravel على جهازك المحلي هي تحويل حاسوبك إلى خادم ويب محلي كي يتمكن من تشغيل PHP و نظام إدارة قواعد البيانات مثل MySQL أو PostgreSQL، يمكنك القيام بذلك باستخدام XAMPP المتوافق مع كافة أنظمة التشغيل. عليك كذلك تثبيت أي محرر أكواد أو بيئة تطوير متكاملة IDE ترغب بها لتحرير أكواد مشروعك مثل PhpStorm أو Visual Studio Code أو أي محرر آخر تتآلف معه. بعدها عليك تثبيت مدير الحزم كومبوزر Composer لتحميل إطار لارافيل من خلاله، وهو ضروري لتحديد المكتبات التي يحتاجها مشروعك بكل سهولة وإدارتها بالنيابة عنك. وللمزيد يمكنك مطالعة مقال ما هو Composer ولماذا يجب على كل مطور PHP استخدامه. الآن يمكنك تثبيت لارافيل على جهازك، وأبسط طريقة لتحميل لارافيل هي تشغيل محرر الأوامر في نظامك والانتقال للمسار الذي تريد إنشاء مشروع لارافيل الخاص بك فيه ثم كتابة الأمر التالي، هنا أنشأنا مشروع لارافيل باسم example-app composer create-project laravel/laravel example-app لتشغيل المشروع انتقل إلى مجلد مشروعك وهو في حالتنا D:\example-app ونفذ الأمر التالي: D:\cd example-app D:\example-app>php artisan serve هذا الأمر سيشغل تطبيق لارافيل على خادم تطوير PHP وينتج عن تنفيذه عرض رابط المشروع بالشكل التالي http://127.0.0.1:8000، كل ما عليك هو نسخ هذا الرابط ولصقه في المستعرض لتظهر لك الصفحة الرئيسية لموقع لارافيل الخاص بك كما هو موضح في الصورة التالية. ولإيقاف تشغيل خادم التطوير من خلال سطر الأوامر اضغط على مفتاحي Ctrl+C في لوحة المفاتيح. ولمزيد من المعلومات حول تثبيت لارافيل يمكنك مطالعة مقال تثبيت وإعداد لارافيل Laravel على دوكر كومبوز Docker Compose ومقال تثبيت Laravel 5 وإعداده على Windows وUbuntu. أخيرًا أنصحك أن تفتح مشروع في محرر الشيفرات الذي اخترته وتتعرف على بنية المجلدات في Laravel وتفهم دورها في المشروع ومساهمتها في نموذج MVC المستخدم في إطار العمل لارافيل. هذا كل شيء! أنت جاهز الآن لتبدأ رحلتك في اكتشاف لارافيل والبدء بتعلمه. الخلاصة اكتشفنا في مقال اليوم ما هو إطار عمل لارافيل Laravel وأهميته في سوق العمل، وتعرفنا على أهم المميزات التي يقدمها في مجال تطوير مواقع وتطبيقات الويب، كما تعرفنا على كيفية تنصيب لارافيل وبدء التعامل معه وأهم مصادر تعلمه. وسواء كنت مطورًا مبتدئًا أو خبيرًا في برمجة تطبيقات الويب فإن لارافيل Laravel خيار مناسب لك تمامًا فهو يوفر لك بيئة تطوير سهلة وقوية ويقدم لك الكثير من الميزات والوظائف المبرمجة مسبقًا التي تمكنك من بناء تطبيقات ويب احترافية وعالية الجودة بسرعة وسهولة. لا تتردد وابدأ من اليوم بتعلم لارافيل وإن اعترضك أي سؤال حوله شاركنا إياه في قسم التعليقات أسفل المقال. اقرأ أيضًا دليل مطوّري PHP للبدء في بناء تطبيقات Laravel - الجزء الأوّل دليل مطوّري PHP للبدء في بناء تطبيقات Laravel - الجزء الثاني رفع الملفّات وإدارتها في تطبيقات Laravel تجريد إعداد قواعد البيانات في لارافيل باستعمال عملية التهجير Migration والبذر Seeder لارافيل للمبتدئين-الجزء الأول: البدء في إنشاء مدونة بسيطة
    1 نقطة
  6. السلام عليكم ورحمة الله وبركاته كيف ادرس هذا الكورس "تطوير التطبيقات باستخدام جافاسكربت " بطريقة صحيحة تضمن التدرج بالمفاهيم
    1 نقطة
  7. السلام عليكم يعطيكن العافية لو سمحتوا هل الوردبريس WordPress و woocommerce الهن علاقة بال php ? فيني اتعلمهن بالأول بعدين أرجع لل php ?
    1 نقطة
  8. هناك دالة astype لتحويل نوع البيانات لعمود معين إلى int heart['column_name'] = heart['column_name'].astype(int) column_name هو اسم العمود الذي تريد تحويله في إطار البيانات. أو إنشاء قاعدة بيانات جديدة وتحديد نوع البيانات لكل جدول، مثلاً لإنشاء جدول باسم بنوع Float في Sqlite نكتب: cursor.execute(""" CREATE TABLE heart ( cholesterol REAL, ); """) REAL يساوي Float في Sqlite.
    1 نقطة
  9. تمام, بس فيه مكشله حصلت وهي الارقم كلها الموحود في قاعد البيانات ده كلها من نوع float فا ازي احل المشكله ده ؟ ما كنش كده كان فيه int وهل كده هيحصل مشكله في النموذج ؟
    1 نقطة
  10. تحتاج إلى حفظ البيانات المعدلة في قاعدة البيانات باستخدام مكتبة sqlite3 أو SQLAlchemy حيث بعد التعديل تضيف هذا السطر: heart.to_sql('cholesterol', conn, if_exists='replace', index=False) و تأكد من استبدال cholesterol باسم الجدول الصحيح في قاعدة البيانات، و الوسيط if_exists='replace' ستستبدل الجدول القديم بالبيانات الجديدة، أما إذا كنت تريد إضافة البيانات بدون استبدال الجدول، يمكنك استخدام if_exists='append'.
    1 نقطة
  11. وعليكم السلام ورحمة الله وبركاته . لا لم يتم الحفظ بالطبع في قاعدة البيانات حيث الكود لا يقوم بأى تعديل أو حفظ في قاعدة البيانات . حيث يقوم الكود فقط باستبدال القيم الفارغة (null) في عمود "cholesterol" من DataFrame وبما أن الكود يقوم فقط بتعديل وحفظ البيانات في الذاكرة المؤقته ولا يوجد أى كود أخر لحفظ تلك العديلات في قاعدة البيانات فإذا التعديلات ستظل فقط في الذاكرة المؤقته وقاعدة البيانات ستظل كما هي.
    1 نقطة
  12. تمام , جدا الف شكرااا لحضرتك جداا
    1 نقطة
  13. كما وضحنا لك فإن أى متغير أو بيانات يتم حفظها في البرنامج نفسه سواء متغير أو شئ فإنه يتم حفظها في الذاكرة المؤقته (RAM) وليس على القرص الصلب (Hard Disk) لديك على الجهاز ولهذا بمجرد إغلاق الحاسوب أو حتى إغلاق البرنامج يتم حذف البيانات من الذاكرة المؤقته وبالتالى فقدان أى بيانات كانت بداخل تلك المتغيرات . وكما أخبرتك لم تصمم البرامج لحفظ المتغيرات على الحاسوب . حيث بمجرد تشغيل البرنامج وإنشاء متغير تقوم اللغة التى تم كتابة الكود بها ومثلا هنا بايثون بحفظ مكان في الذاكرة المؤقته و تعين هذا المتغير بقيمة فارغة حتى تقوم بحفظ البيانات فيه فتقوم بحفظ البيانات في المكان الخاص بهذا المتغير في الذاكرة المؤقته . وحين يتم إغلاق البرنامج تقوم اللغة بالتخلى عن تلك الأماكن في الذاكرة المؤقته ويتم حذف تلك البيانات . ولهذا فلحفظ البيانات يجب إستخدام قواعد البيانات أو ملفات لحفظها مثل ملفات JSON أو CSV أو حتى TEXT . ولكن لا يتم الإعتماد على المتغيرات فلن يتم حفظ البيانات بها وبمجرد إغلاق البرنامج أو إغلاق الحاسوب سيتم فقدها نهائيا.
    1 نقطة
  14. تمام جدا جدا اوالا شكرااا جدا جداا لحضرتك وعلي المعلومات القيمه ده والله بس مش ده متغير من نوع List ومن العروف ان ال List نوع من انوع هياكل البيانات وي هياكل البيانات ده عبار عن طريقه لحفظ البيانات صح كده والا انا فعم غلط وبعدين انا بعمل List عادي بحفظ فيه البيانات زي الكود ده كده name = ['ali','ahmed','abdullh'] هو مش انا كده خزنت البيانات ده في المتغير الاسم name واقدر استخدمهم في اي وقت سواي اقفلت البرنامج او الا ؟ والا اي انا فهم كده صح والا اي
    1 نقطة
  15. وعليكم السلام ورحمة الله وبركاته. عند تشغيل البرنامج فإن المتغيرات والبيانات التى يتم حفظها بداخل تلك المتغيرات يقوم البرنامج بحفظها في الذاكرة المؤقته في الجهاز لديك وبمجرد إغلاق البرنامج يتم مسح كافة تلك البيانات من الذاكرة المؤقته . حيث لم يتم تصميم البرامج لحفظ البيانات بتلك الطريقة . ولذلك لحفظ البيانات لديك ينبغى إستخدام قواعد البيانات لحفظها أو يمكنك حفظها في ملف لديك على الجهاز إن كان الأمر بسيط كما لديك هنا حيث يمكنك إستخدام ملف وليدعى مثلا users.txt وبداخله تقوم بحفظ البيانات . حيث حينما تريد حفظ البيانات تقوم بفتح الملف من خلال الدالة open وتقوم بالكتابة على الملف بإستخدام الدالة write هكذا مثلا : from sys import exit from time import sleep import os class User: def __init__(self, first_name, last_name, email, password, status="inactive"): self.first_name = first_name self.last_name = last_name self.email = email self.password = password self.status = status def display(self): print(f"First name: {self.first_name}") print(f"Last name: {self.last_name}") print(f"Email: {self.email}") print(f"Password: {self.password}") print(f"Status: {self.status}\n") print("_" * 20) def to_string(self): return f"{self.first_name},{self.last_name},{self.email},{self.password},{self.status}\n" def load_users(filename): users = [] if os.path.exists(filename): with open(filename, 'r') as file: lines = file.readlines() for line in lines: if line.strip(): first_name, last_name, email, password, status = line.strip().split(',') users.append(User(first_name, last_name, email, password, status)) return users def save_users(users, filename): with open(filename, 'w') as file: for user in users: file.write(user.to_string()) def create_user(): first_name = input("First name: ") last_name = input("Last name: ") email = input("Email: ") password = input("Password: ") return User(first_name, last_name, email, password) filename = 'users.txt' users = load_users(filename) while True: print("Welcome to user management\n") print("Choose an action\n") print("1. Add new user") print("2. Display all users") print("3. Exit\n") choice = input("Enter your choice: ") if choice == '1': users.append(create_user()) save_users(users, filename) print("User added successfully!\n") sleep(2) elif choice == '2': if users: for user in users: user.display() sleep(2) else: print("No users found!") sleep(2) elif choice == '3': print("Exiting...") exit(0) else: print("Invalid choice! Please select 1, 2, or 3.") حيث قمنا بحفظ البيانات في ملف يدعى users.txt ونقوم بقراءة تلك البيانات منه إذا أردنا ذلك . وبهذا حتى لو تم إغلاق البرنامج فستجد أن الملف users.txt يحتوى على البيانات ولهذا لن يتم فقد البيانات.
    1 نقطة
  16. السبب الأساسي أن البيانات لا يتم حفظها في المتغير user بعد إغلاق البرنامج: أن المتغيرات في البرامج (مثل المتغير user في هذه الحالة) يتم تخزينها في الذاكرة المؤقتة (RAM) أثناء تشغيل البرنامج. بمجرد إيقاف البرنامج، يتم تحرير الذاكرة المؤقتة وبالتالي تفقد جميع البيانات التي كانت موجودة في المتغيرات. عندما تقوم بإعادة تشغيل البرنامج، يبدأ من الصفر ويعود المتغير user فارغًا. اذا كنت تريد حفظ بيانات ال user فيمكنك استخدام ملف لحفظ البيانات مثل ال json او csv. او يمكنك استخاد قواعد البيانات. و اضف الى الكود عملية استرجاع البيانات. واليك مثال عن طريق ال json: import json from sys import exit from time import sleep class User: def __init__(self, first_name, last_name, email, password, status="inactive"): self.first_name = first_name self.last_name = last_name self.email = email self.password = password self.status = status def display(self): print(f"First name: {self.first_name}") print(f"Last name: {self.last_name}") print(f"Email: {self.email}") print(f"Password: {self.password}") print(f"Status: {self.status}\n") print("_" * 20) def to_dict(self): return { "first_name": self.first_name, "last_name": self.last_name, "email": self.email, "password": self.password, "status": self.status } @classmethod def from_dict(cls, data): return cls(data["first_name"], data["last_name"], data["email"], data["password"], data["status"]) def username(): first_name = input("First_name: ") last_name = input("last_name: ") email = input("Email: ") password = input("password: ") return User(first_name, last_name, email, password) def save_users(users): with open('users.json', 'w') as file: json_data = [user.to_dict() for user in users] json.dump(json_data, file) def load_users(): try: with open('users.json', 'r') as file: json_data = json.load(file) return [User.from_dict(user_data) for user_data in json_data] except FileNotFoundError: return [] users = load_users() while True: print("Welcome to user management\n") print("Choose an action\n") print("1. Add new user") print("2. Display all users") print("3. Exit\n") choice = input("Enter your choice: ") if choice == '1': new_user = username() users.append(new_user) save_users(users) print("User added successfully!\n") sleep(2) elif choice == '2': if users: for user in users: user.display() sleep(2) else: print("No users found!") sleep(2) elif choice == '3': print("Exiting...") exit(0) else: print("Invalid choice! Please choose 1, 2, or 3.") و لاحظ فى الكود: @classmethod تستخدم لتعريف "طريقة" (method) تابعة للفئة (class method). و على عكس الدوال العادية (التي تستخدم self للوصول إلى خصائص الكائن)، الدالة التي توصف بـ @classmethod تأخذ دائمًا المعامل الأول كـ cls، والذي يمثل الفئة نفسها (class) وليس الكائن.
    1 نقطة
  17. وعليكم السلام ورحمة الله وبركاته. لغة C++ تعتبر إضافة وتطوير على لغة C، حيث كانت متشابهة معها بشكل كبير ولكن أضيفت إليها ميزة أساسية هي البرمجة الكائنية التوجه ومع مرور الوقت، C++ تطورت بشكل كبير وتوسعت لتصبح أكثر تعقيدًا من C. لكن، أحد الأسباب التي تجعل C++ مهمة حتى اليوم هو مرونتها الكبيرة. فهي توفر كل هذه الميزات المتقدمة، ولكن في نفس الوقت تتيح للمبرمج الرجوع إلى الأساسيات واستخدامها بأسلوب مشابه جدًا لـ C. يمكنك استخدام C++ للتفاعل مباشرة مع مستوى النظام والعمل مع الذاكرة بشكل منخفض المستوى كما في C، مما يعطيها ميزة القدرة على التحكم الكامل بالموارد عند الحاجة. ويفضل الإطلاع على المصادر التالية
    1 نقطة
  18. إن وجودك على رأس الفريق أمر مجزٍ، لكنه كأي عمل مهم محفوف بالتحديات، وكجزء منها إجراء حوارات مع موظفيك. فهل لديك القدرة على خوض نقاشات صعبة؟ سواءً كان النقاش عن ضعف الأداء أو خلافات ضمن الفريق أو مشاكل شخصية، تابع قراءة هذا المقال لتتعرف على طريقة الخوض في نقاشات صعبة مع أعضاء فريقك. ما الذي عليك فعله وما الذي لا ينبغي فعله عند خوض نقاشات صعبة لا تبدأ حوارًا دون أن تفكر فيه أولًا. لا تجعل احترافية العمل تطغى على الجانب الإنساني. لا تصل الاجتماع وقد جهزت قائمةً بالمتطلبات أو مواعيد نهائية للآخرين. لا تطرق بيدك على جانبك من طاولة الحوار. فكرّ بما ستقوله وكيف ستقوله. تمتع بالليونة وعبر بانفتاح عما تشعر به. كن جزءًا من الحل واتخذ بعض القرارات. تحقق عند نهاية الحوار أنك على نفس الضفة التي يقف عليها فريقك. حضر لنقاش منتج إن كنت تعرف جيدًا أنك مقبل على نقاش جاد وبناء مع موظفيك فخذ وقتًا كافيًا في التخطيط لما ستقوله. ابدأ بوضع مواعيد لقاءات فردية وثبت النقاط التي ستتحدث فيها ضمن جدول اللقاء كي يتضح للطرفين ما يناقشانه. استخدم جدول لقاء مشترك مع الموظفين لكي يتمكنوا من إضافة نقاط تخصهم للحديث بشأنها. احرص أن تصل إلى الاجتماع مستعدًا، وامنح موظفيك وقتًا ليستعدوا بدورهم. دوّن النقاط المفتاحية التي تريد معالجتها وتدرّب على طريقة تقديمها، وحاول البحث عن شخص موثوق كي تتمرن أمامه قبل خوض النقاش (لكن انتبه إلى طبيعة المعلومات التي تشاركها معه)، إذ من السهل أن نسترسل في الحديث وننسى التفكير في وقعه على الآخرين. ضع نفسك مكانهم: تصور نفسك لبرهة أنك في الطرف المقابل، ثم فكر بثلاث أو أربع أحاسيس قد تنتاب الشخص الذي تخاطبه، الخيبة؟ الإحباط؟ الغيرة؟ الإحراج؟ وتذكر أنك لا تعرف كيف يفكر أو بماذا يشعر، ثم ادخل بعدها إلى الاجتماع سعيًا لفهم الموضوع. ثلاثة نصائح عند خوض نقاشات صعبة إليك ثلاثة نصائح مهمة لتتبعها عند خوض النقاشات الصعبة. 1. ركز على الوقائع لا على العواطف كجزء من الخطة عليك أن تعزل الوقائع المتعلقة بالقضية عن مشاعرك اتجاهها. وهذا الأمر يساعد على بقاء الحوار مركزًا ومضبوطًا. قد تحضر معك أيضًا بعض الملاحظات التي تساعدك في الإجابة على نقاط مثل: ما الذي طرأ حتى اضطررنا إلى هذا الحوار؟ ما هو تأثيره؟ ما الذي ينبغي تغييره أو ضبطه؟ ما الذي سيحدث إن لم نتصرف؟ عندما تعرف الأجوبة على هذه الأسئلة ستتجنب الكلام الافتراضي أو الانجراف بعيدًا عن الموضوع. وهكذا ستتكلم في النقاط المهمة دون أن تصل إلى جدال عقيم حول شيء موضوعي. لا تتجاهل أحاسيسك: من الطبيعي أن تطغى العواطف في حالات التوتر أو وجود مسألة هامة على المحك، لكن عندما تتفهم الحقائق التي بين يديك فستسهل عليك السيطرة على مشاعرك وتبقي الحوار في المسار الصحيح. 2. كوِّن جوًا من الصراحة عندما يدخل أحد الطرفين أو كلاهما في النقاش مع تحفظات أو سلوك سلبي، فسيعيق ذلك الوصول إلى نتيجة إيجابية. لهذا عليك أن تبدأ الحوار بنية إيجابية، سواءً لحل نزاع أو لفهم الموضوع أو لإنشاء خطة عمل. يمكنك أن محاولة طرح أسئلة توجيهية في اللقاءات الفردية مع أعضاء فريقك لتعطيهم الفرصة في التعبير عن أنفسهم. من الجيد أيضًا تعزيز ثقافة الصراحة والإنفتاح مع موظفيك باستمرار، إذ تتيح اللقاءات الفردية المتكررة مع أفراد الفريق التواصل مع القواعد ومناقشة الأمور الأكثر أهمية. 3. حاول أن يكون الحل جماعيا لا بدّ في نهاية أي حوار صعب أن تؤسس أرضيةً مشتركةً مع موظفيك لتوضيح التوقعات قبل المتابعة. قد تكون التصرفات اللازمة محضرةً مسبقًا في بعض الأحيان، فإن لم تكن جاهزة، فيُفضَّل مناقشة الإمكانيات المتاحة مع فريقك والاتفاق على ما هو منطقي ومجدٍ منها. بتعبير آخر، لا تُظهر أية دلالات على معرفتك المسبقة بالخيار الصحيح، أو أنّ هذا الخيار سيأتي من تلقاء ذاته ضمن تقرير المدير. من أفضل الطرق التي تجعل منك مثالًا للقيادة هي ظهورك كمدير يجعل نفسه جزءًا من الحل. وعندما يرى موظفوك أنك تنجز تغييرات ملموسة فسيتّبعونك. اطرح أي فكرة تخطر في بالك وكن منفتحًا على آراء موظفيك ومستعدًا لتحمل مسؤولية بعض القرارات التي عليك اتخاذها. متابعة تنفيذ نتائج الحوارات الصعبة لا فائدة من وضع نقاط للعمل إن لم نتابع تنفيذها؟ فالمتابعة الدقيقة لها أهمية خاصة في التأكد من حل المشكلة. لهذا عليك أن تضع موضوعًا للحوار الشخصي لتتأكد من أنّ هذا الحديث سيقود إلى النتيجة المطلوبة. بعيدًا عن متابعة الأمور العملية، احرص على متابعة الأمر على المستوى الشخصي أيضًا، فقد يكون الحديث في مواضيع حساسة أو مثيرة للجدل مزعجًا أو محرجًا، ومن المفيد أن تلتقي بموظفيك مجددًا بعد أن تهدأ الأمور. الأسئلة التي قد تطرحها عند متابعة نتائج الحوار: هل نبلي حسنًا في تنفيذ النقاط التي اتخذناها آخر مرة؟ هل يتبادر أي شيء إلى ذهنك فيما يتعلق بآخر لقاء شخصي؟ هل تتبادر إلى ذهنك أية أفكار أو أسئلة حول آخر نقاش؟ ما هو شعورك منذ آخر لقاء بيننا؟ أمثلة من الواقع عن حوارات صعبة نطبق في هذه الأمثلة أفضل ما يمكن تطبيقه في حالات مأخوذة من سيناريوهات حقيقية. حل النزاعات بين الزملاء "لقد استشعرت بعض التوتر في جلسة عصف الدماغ التي عقدها الفريق وأشعر بفضول لأسمع وجهة نظرك حول الموضوع. من الطبيعي أننا لا نرى بعضنا دائمًا وجهًا لوجهٍ، لكن الاحترام قيمة لا تفاوض عليها. لذلك أريد أن أتاكد من إنهاء أية احتكاكات قبل أن تؤثر سلبًا على تعاوننا". التعامل مع سلوك صعب "لاحظت أنك لا تقدم دائمًا حلًا بديلًا عندما تعارض أفكار الآخرين. لا بأس ألا تملك أجوبة، لكنك تبدو وكأنك تُخرس الآخرين. أردت طرح هذا الموضوع معك لأني أعرف أنك مهتم بنجاح الفريق ككل. هل بإمكاننا جعل هذه الحوارات أكثر فائدة؟". مخاطبة موظف ضعيف الأداء "لم تستطع تحقيق الأهداف الموكلة إليك مؤخرًا، وأرغب في التأكد من توفر كل ما تحتاجه لإنجازها. هل توجد أية نقاط تحتاج إلى مراجعتها سويًا؟ هل تعتقد أنك تحتاج إلى جلسات تدريبية؟ لنطلع على المهام الموكلة إليك كي نتأكد من قدرتك على تحديد أولوية المهام الأكثر تأثيرًا". التخلي عن أحد أعضاء الفريق ليس من السهل إطلاقًا عندما تدير فريقًا التخلي عن أحد أعضاءه. ولمواجهة حالة كهذه قد تتصرف على النحو التالي: "يؤسفني أن أقول بأننا سنستغني عن خدماتك في الفريق لأن [اذكر السبب]. أشكرك على كل ما قدمته خلال [اذكر الفترة التي قضاها في هذه الوظيفة] ونقدّر كثيرًا العمل الذي قدمته لفريقك وللشركة". مناقشة موظف في أمر شخصي "أخبرني إن كنت لا ترغب في مناقشة الأمر، لكنني لاحظت بأنك تبدو محبطًا هذه الأيام. هل تشعر بأنك توازن بين حياتك الخاصة وعملك؟ هل هناك شيء ما ينبغي أن أعرفه أو بإمكاني مساعدتك به؟ تأكد أنني بجانبك دائمًا كمدير وكصديق". إنّ مناقشة مواضيع صعبة في العمل أمر مرهق لأي مدير، وكلما كنت مرتاحًا أكثر، كانت نتائج هذه النقاشات أكثر نجاحًا. إن استطعت أن تبقى منفتحًا وأن تعالج الحوارات الشخصية المحرجة بشيء من الفضول، فستضع موظفيك على طريق النجاح كفريق بكل تأكيد. ترجمة -وبتصرف- للمقال Having difficult conversations a manager’s guide to tough talks لصاحبته Nora St-Aubin. اقرأ أيضًا دليل مختصر لتحسين المحادثات الثنائية مع الموظفين في شركتك الاجتماعات الفردية: دليلك الشامل لإجراء محادثات فعالة الدليل الشامل للمديرين حول كيفية إعطاء الملاحظات للموظفين نزاعات الفرق: أربع طرق لحل الخلاف الذي يدمر فريقك
    1 نقطة
  19. تعدّ أنظمة إدارة قواعد البيانات Relational database management system أو اختصارًا DMBS برامج حاسوبية تسمح للمستخدمين بالتفاعل مع قاعدة البيانات وتتيح لهم إمكانية التحكّم بالوصول إلى قاعدة البيانات وكتابة البيانات فيها وتنفيذ الاستعلامات Queries التي تستخلص البيانات أو تعدلها وإنجاز أي مهمّة أخرى ذات صلة بإدارة قواعد البيانات. وبالتالي كي تتمكن من إنجاز أي من هذه المهام، يجب أن تمتلك أنظمة DMBS نموذجًا أساسيًا يُعرّف كيفية تنظيم البيانات. وإحدى منهجيات تنظيم البيانات التي لاقت استخدامًا واسعًا في برمجيات قواعد البيانات منذ ابتكارها في أواخر ستينيات القرن الماضي هي النموذج العلاقيّ أو العلائقي Relational، لدرجة أنّه وحتى وقت كتابة هذا المقال فإنّ أربعة من بين أكثر خمسة أنظمة لإدارة قواعد البيانات شيوعًا هي من النمط العلاقيّ. يوضّح هذا المقال المفاهيمي النظري تاريخ النموذج العلاقيّ وكيفية تنظيم البيانات في قواعد البيانات العلاقيَّة وكيفية استخدامها في تطبيقاتنا المختلفة. تاريخ النموذج العلاقي قواعد البيانات عبارة عن مجموعات من المعلومات أو البيانات المُنظّمة منطقيًا. إذ تُعدّ أي مجموعة من البيانات كقاعدة بيانات، بغض النظر عن كيفية أو مكان تخزينها. فحتى درج الملفات المُتضمّنة لمعلومات الرواتب يُعدّ قاعدة بيانات، كذلك الأمر بالنسبة لأي مجموعة مُكدّسة من البيانات مثل نماذج المرضى في مستشفى، أو معلومات مجموعة من عملاء شركة موزعة عبر عدّة مواقع. فقبل أن تغدو عملية تخزين وإدارة البيانات باستخدام الحواسيب شائعة، كانت قواعد البيانات المادية كهذه في الأمثلة السابقة هي الوحيدة المتاحة للحكومات والمنظمات التجارية التي كانت بحاجة لتخزين المعلومات. وفي منتصف القرن العشرين تقريبًا، شهدت علوم الحاسوب تطورات كبيرة أفضت إلى ظهور أجهزة ذات قدرة معالجة أعلى وسعات تخزين محلية وخارجية أكبر. جعلت هذه التطورات علماء الحاسوب يُدركون القدرات الهائلة لهذه الأجهزة في تخزين وإدارة كميات أكبر من البيانات. ولكن لم تكن هناك حينها نظريات مُحدّدة حول كيفية تنظيم البيانات في الحواسيب بطرق منطقية ذات معنى فقد كان من السهل تخزين البيانات عشوائيًا على جهاز ما، لكن تصميم أنظمة قواعد البيانات سيتيح إمكانية إضافة واسترجاع وترتيب وإدارة هذه البيانات بطرق عملية وثابتة هو تحدٍ أكبر. فقد أسفرت الحاجة إلى وجود نظام منطقي لتخزين وتنظيم البيانات إلى ظهور العديد من الاقتراحات حول كيفية استخدام الحواسيب في إدارة البيانات. ولعلّ أحد النماذج الأولية لقواعد البيانات كان النموذج الهرمي، حيث تنظم البيانات وفق هذا النموذج ضمن هيكلية أو بنية شبيهة بالشجرة بأسلوب مماثل لأنظمة الملفات. ويوضّح المثال التالي الشكل الذي قد يبدو عليه جزء من مخطط قاعدة بيانات هرمية تستخدم لتصنيف الحيوانات: لقد طُبِّق النموذج الهرمي على نحوٍ واسع في أنظمة إدارة قواعد البيانات الأولية، لكنه أظهر بالمقابل بعض الصعوبات من حيث المرونة. ففي هذا النموذج يمكن للسجل الواحد امتلاك عدّة أبناء Children، لكن لا يمكنه أن يتبع سوى لأب Parent واحد ضمن الهيكلية الهرمية، الأمر الذي يجعل قواعد البيانات الهرمية قادرة على التعبير فقط عن علاقات من نوع "واحد-إلى-واحد (one-to-one)" و"واحد-إلى-عديد (one-to-many)" ولا يسمح بالتعبير عن العلاقات من نوع "عديد-إلى-عديد (many-to-many)"، وهذا القصور قد يفضي إلى حدوث مشاكل لدى التعامل مع نقاط بيانات تتبع لأكثر من أب. إلى أن ابتكر عالم الحاسوب إدجار فرانك كود Edgar F. Codd والذي كان يعمل في شركة IBM النموذج العلاقيّ لإدارة قواعد البيانات وذلك في أواخر ستينيات القرن الماضي. إذ سمح نموذج Codd العلاقيّ هذا بربط السجل الواحد بأكثر من جدول، ما سمح بإمكانية التعبير عن العلاقات من نوع "عديد-إلى-عديد" بين نقاط البيانات ممكنة، بالإضافة إلى إمكانية التعبير عن العلاقات من نوع "واحد-إلى-عديد". الأمر الذي أتاح المزيد من المرونة مقارنةً بالنماذج الموجودة حينها لتصميم هياكل قواعد البيانات وأثبت قدرة أنظمة إدارة قواعد البيانات العِلاقيَّة (RDBMSs) على تلبية مجموعة أوسع بكثير من احتياجات الأعمال. كما اقترح العالم كود Codd لغة لإدارة البيانات العلاقيَّة عُرِفت باسم ألفا (Alpha)، والتي أثّرت في تطوير لغات قواعد البيانات اللاحقة. فقد أنشأ اثنان من زملائه في IBM وهما دونالد تشامبرلين Donald Chamberlin وريمون بويس Raymond Boyce لغة مستوحاة من لغة ألفا، أطلقا عليها اسم SEQUEL اختصارًا لعبارة Structured English Query Language (لغة الاستعلام الهيكلية بالإنجليزية)، ولكن بسبب وجود علامة تجارية موجودة مسبقًا بنفس الاسم، اختصروا اسم لغتهم إلى SQL والتي يُشار إليها على نحوٍ أكثر رسمية باسم لغة الاستعلام الهيكلية Structured Query Language. كانت قواعد البيانات العلاقيَّة الأولية بطيئة للغاية وغير عملية بسبب قيود العتاد، واحتاجت بعض الوقت حتى تنتشر، ولكن ومع حلول منتصف الثمانينات، طُبّق نموذج Codd العِلاقيّ في العديد من المنتجات التجارية لإدارة قواعد البيانات، سواء من قبل شركة IBM أو منافسيها. إذ قام هؤلاء المُصنعّون أيضًا باتباع خطى IBM من خلال تطوير وتنفيذ لهجاتهم الخاصة من لغة SQL. وبحلول عام 1987، صادق كل من المعهد الوطني الأمريكي للمعايير American National Standards Institute والمنظمة الدولية للمعايير International Organization for Standardization على معايير لغة SQL ونشروها، ما جعل منها اللغة المعترف بها لإدارة أنظمة قواعد البيانات العلاقيَّة. ولعلّ انتشار استخدام النموذج العلاقيّ في مجموعة متنوعة من المجالات جعل منه النموذج المعياري لإدارة البيانات. وحتى مع ظهور العديد من قواعد البيانات غير العلاقية NoSQL في السنوات الأخيرة، تبقى قواعد البيانات العلاقية هي السائدة لتخزين وتنظيم البيانات. كيف تنظم قواعد البيانات العلاقية البيانات الآن وبعد حصولك على فهمٍ عام لتاريخ النموذج العلاقيّ، لنلقِ نظرة أعمق على كيفية تنظيم البيانات وفق هذا النموذج. لعلّ أهم عناصر النموذج العلاقيّ هي العلاقات Relations، والتي تُعرف لدى المستخدمين وفي أنظمة إدارة قواعد البيانات العِلاقيَّة المعاصرة بمسمى الجداول Tabels. فالعلاقة هي مجموعة من الصفوف أو السجلات في جدول، ويشترك كل صف بمجموعة من السمات أو الأعمدة (الحقول): العمود هو أصغر هيكل تنظيمي في قاعدة البيانات العلاقيَّة، وهو يُمثّل الخصائص المختلفة التي تُعرّف السجلات ضمن الجدول. ولذا، تُعرف هذه الخصائص رسميًا باسم السمات. يمكن فهم كل صف على أنّه نسخة فريدة تًمثّل نوع ما من الأشخاص أو الكائنات أو الأحداث أو الروابط المحفوظة في الجدول. وقد تُمثّل هذه النسخ موظفي شركة أو مبيعات شركة تجارية عبر الإنترنت أو نتائج اختبارات مخبرية. على سبيل المثال، في جدول يحتوي على سجلات المدرسين في مدرسة ما، قد تتضمن الصفوف سمات مثل: الاسم name والمقررات الدراسية subjects وتاريخ بدء العمل start_date، وما إلى ذلك. ولدى إنشاء الأعمدة، يتعيّن عليك تحديد نمط البيانات الخاص بكل عمود، وهو ما يُحدّد القيم التي يمكن استقبالها فيه. وعادةً ما تُقدّم أنظمة إدارة قواعد البيانات العِلاقيَّة أنماطًا فريدة خاصة بها من البيانات والتي قد لا تكون متوافقة مباشرةً مع مثيلاتها في الأنظمة الأخرى. ومن أنماط البيانات شائعة الاستخدام كل من التواريخ، والسلاسل النصية، والأعداد الصحيحة، والقيم المنطقية. يتضمّن كل جدول في النموذج العِلاقيّ عمودًا واحدًا على الأقل يُستخدم لتمييز كل سجل على نحوٍ فريد، ويُعرف باسم المفتاح الأساسي Primary Key. وهو عمود مهم جدًا، إذ لا يحتاج المستخدمون لمعرفة مكان تخزين بياناتهم فيزيائيًا داخل الجهاز. وبدلاً من ذلك، يتولى نظام إدارة قواعد البيانات متابعة وتعقّب كل سجل واسترجاعه حسب الطلب. وبالتالي، لا يوجد ترتيب منطقي مُحدّد للسجلات، ويتمتّع المستخدمون بالحرية في استرجاع بياناتهم بالترتيب الذي يرغبون به أو باستخدام عوامل التصفية التي يختارونها. فبفرض كان لديك جدولين وتود ربطهما ببعضهما البعض، فإحدى الطرق لإنجاز ذلك هي باستخدام المفتاح الخارجي Foreign key، وهو نسخة من المفتاح الأساسي لجدول (يُعرف بالجدول "الأب") تُدرج في عمود داخل جدول آخر (يُعرف بالجدول "الابن"). يُظهر المثال التالي العلاقة بين جدولين، الأول يُستخدم لتسجيل المعلومات حول الموظفين في شركة، والثاني لتتبع مبيعات الشركة. وفي هذا المثال، يُستخدم المفتاح الأساسي لجدول الموظفين EMPLOYEES كمفتاح أجنبي لجدول المبيعات SALES: فإذا حاولت إضافة سجل إلى الجدول الابن وكانت القيمة المُدخلة في عمود المفتاح الأجنبي غير موجودة في المفتاح الأساسي للجدول الأب، فإن تعليمة الإدراج ستكون غير صالحة، وهذا يساعد في الحفاظ على صحّة مستوى العلاقة بين الجدولين (أو نزاهة العلاقة إن صح التعبير)، وبهذا ستكون السجلات في الجدولين مرتبطة على النحو الصحيح دائمًا. لقد ساعدت عناصر النموذج العلاقيّ الهيكلية في الحفاظ على تنظيم البيانات أثناء تخزينها، ولكن تخزين البيانات لن يكون مفيدًا إلا إذا كان من الممكن استرجاعها. ولاسترجاع البيانات من RDBMS، يُمكنك إنشاء ما يُسمّى بالاستعلام query وهو عبارة عن طلب منظّم لمجموعة من المعلومات. وتستخدم معظم قواعد البيانات العِلاقيَّة لغة SQL لإدارة البيانات والاستعلام عنها كما أشرنا سابقًا. إذ تتيح لغة SQL إمكانية تصفية نتائج الاستعلام ومعالجتها باستخدام مجموعة من البنى clauses، والجمل الشرطية predicates التي تقيم كصحيح TRUE أو خاطئ FALSE أو غير معروف، والتعبيرات expressions، ما يمنحك التحكم الدقيق في البيانات التي ستظهر ضمن نتائج الاستعلام. مزايا وقيود قواعد البيانات العلاقية لنفكّر في بعض مزايا وعيوب قواعد البيانات العلاقيَّة بأخذ هيكلها التنظيمي الأساسي في الحسبان. إنّ لغة SQL وقواعد البيانات التي تستخدمها في أيامنا هذه تختلف عما قدمه العالم كود Codd في نموذجه العلاقيّ الأول في عدة نواحٍ. فعلى سبيل المثال، يملي نموذج كود Codd بأنّ كل سجل في الجدول يجب أن يكون فريدًا. في حين تسمح العديد من قواعد البيانات العلاقيَّة المعاصرة بوجود سجلات مكررة. وهناك بالمقابل من يرى أن قواعد البيانات التي تستخدم لغة SQL ولا تتبع جميع مواصفات نموذج Codd لا يمكن عدها قواعد بيانات علاقيَّة حقيقية. ولكن وفي الواقع، أي نظام يستخدم SQL ويتبع نموذج Codd إلى حد معين يعدّ عادةً نظامًا لإدارة قواعد بيانات علاقيَّة. ورغم شهرة قواعد البيانات العِلاقيَّة التي ازدادت بسرعة، إلا أنّ بعض أوجه القصور المتعلقة في النموذج العِلاقيّ بدأت بالظهور مع تزايد قيمة البيانات وتوجه الشركات لتخزين كميات أكبر منها. ومن هذه التحديات والمعوقات، صعوبة توسيع قاعدة البيانات العلاقيَّة أفقيًا. والمقصود بالتوسع الأفقي أو الخارجي عملية إضافة المزيد من الأجهزة إلى نظام حالي لتوزيع الحمولة واستيعاب حركة مرور أكبر وتحقيق معالجة أسرع. وغالبًا ما تُقارن هذه العملية بالتوسع العمودي، الذي يتضمن تحسين مواصفات الخادم الحالي من خلال توسيع ذاكرة الوصول العشوائي RAM أو وحدة المعالجة المركزية CPU. والسبب وراء صعوبة توسيع قاعدة البيانات العلاقيَّة أفقيًا يعود إلى أنّ النموذج العلاقيّ مصمم لضمان الاتساق أو انسجام البيانات consistency، ما يعني أنّه عند استعلام العملاء ضمن قاعدة البيانات نفسها سيحصلون دائمًا على البيانات نفسها. فإذا قمت بتوسيع قاعدة البيانات العلاقيَّة أفقيًا عبر عدة أجهزة، سيصبح من الصعب ضمان هذا الاتساق، إذ قد يقوم العملاء بكتابة البيانات على عقدة معينة أو (جهاز) دون الباقي، وقد يكون هناك تأخير بين لحظة الكتابة الأولية والوقت الذي تُحدّث فيه العقد الأخرى لتعكس هذه التغييرات، ما يؤدي إلى عدم اتساق بينها. لقد واجهت أنظمة إدارة قواعد البيانات العلاقيَّة بعض التحديات، من بينها أن النموذج العلاقيّ قد صُمّم خصيصًا للتعامل مع البيانات المهيكلة structured data، أي البيانات التي تتوافق مع نمط بيانات مُحدد مسبقًا أو على الأقل تلك المُنظمّة على نحوٍ مُحدد. لكن مع انتشار الحواسيب الشخصية وظهور الإنترنت في أوائل التسعينات، أصبحت البيانات غير المهيكلة unstructured data، كالرسائل الإلكترونية والصور والفيديوهات أكثر شيوعًا. لا يعني كل ذلك أن قواعد البيانات العلاقيَّة باتت غير مفيدة. بل على العكس تمامًا، فالنموذج العلاقيّ ما زال هو الإطار السائد لإدارة البيانات منذ أكثر من 40 عامًا. وتدلّ شهرتها واستمراريتها على أنّ قواعد البيانات العلاقيَّة تقنية ناضجة، وهذا بحد ذاته من أبرز مزاياها. هناك العديد من التطبيقات التي صُممت للعمل مع النموذج العِلاقيّ، بالإضافة إلى وجود العديد من مدراء قواعد البيانات المحترفين الخبراء في مجال قواعد البيانات العلاقيَّة. كما تتوفر مجموعة واسعة من الموارد المطبوعة والإلكترونية متاحة لكل من يرغب في بدء التعامل مع قواعد البيانات العِلاقيَّة. ومن مميزات قواعد البيانات العلاقيَّة دعم معظمها لمجموعة من التعاملات transactions التي تضمن سلامة البيانات وتكاملها. والمعاملة transaction هي مجموعة من أوامر SQL التي تُنفذ وفق تسلسل معيّن كوحدة عمل مُنفصلة. إذ تعتمد المعاملات على مبدأ الكل أو لا شيء، بمعنى أنّ كل أمر في المعاملة يجب أن يكون صحيحًا، وإلا ستُلغى المعاملة بالكامل وبهذا نضمن صحّة البيانات ودقتها (نزاهة البيانات) عند التعديل على عدة سجلات أو جداول في الوقت نفسه. وأخيرًا، تعدّ قواعد البيانات العلاقيَّة مرنة للغاية. فقد استُخدمت في تطوير مجموعة واسعة من التطبيقات المختلفة، وتستمر في العمل بكفاءة حتى مع كميات ضخمة من البيانات. كما تعدّ لغة SQL قوية جدًا، إذ تتيح لك إمكانية إضافة وتعديل البيانات على نحوٍ فوري، بالإضافة إلى تغيير هيكلية تخطيط قواعد البيانات والجداول دون التأثير على البيانات الموجودة. الخلاصة تعرفنا في مقال اليوم على قواعد البيانات العلاقيَّة التي لا تزال وسيلة أساسية لإدارة وتخزين البيانات بعد أكثر من خمسين عامًا على وضع التصور الأولي لها، وذلك بفضل مرونتها وتصميمها الذي يضمن صحة البيانات ودقتها. وحتى مع ظهور قواعد البيانات غير العِلاقيَّة NoSQL في السنوات الأخيرة، لا زال فهم النموذج العلاقيّ ومعرفة كيفية التعامل مع أنظمة إدارة قواعد البيانات العلاقيَّة أمر أساسي لأي شخص يرغب في بناء التطبيقات المُعتمدة على قوة البيانات. وللتعرّف على المزيد حول بعض من أنظمة إدارة قواعد البيانات العِلاقيَّة الأشهر، وقواعد البيانات عمومًا، ننصحكم بالرجوع إلى قسم قواعد البيانات من أكاديمية حسوب. ترجمة -وبتصرف- للمقال Understanding Relational Databases لصاحبه Mark Drake. اقرأ أيضًا مدخل إلى تصميم قواعد البيانات تعرف على مكونات قاعدة البيانات نموذج الكيان والعلاقة ER لتمثيل البيانات وتخزينها في قاعدة البيانات ما هي محركات قواعد البيانات؟ أنواع قواعد البيانات وأهم مميزاتها واستخداماتها
    1 نقطة
×
×
  • أضف...