Mohcin Space
256 subscribers
46 photos
13 videos
8 files
64 links
{فَأَمَّا الزَّبَدُ فَيَذْهَبُ جُفَاءً ۖ وَأَمَّا مَا يَنفَعُ النَّاسَ فَيَمْكُثُ فِي الْأَرْضِ} [الرعد: 17]

خواطر في الدين و الدنيا و هندسة البرمجيات في محاولة لإصلاح نفسي ولعلني اجعل لنفسي أثرا في إصلاح الاخرين.. على قلتهم، لعلنا نلقى الله بهذا.
Download Telegram
ما هو ملف ال Bootstrapping في تطبيقات ال PHP ولماذا هو مهم؟

عندما تبدأ في بناء تطبيق PHP عموما، تحتاج إلى وجود مكان موحد لتهيئة كل أجزاء التطبيق قبل أن تبدأ في التعامل مع ال requests القادمة من المستخدمين، يعني كنقطة إلتقاء،، هنا يأتي دور ملف الـ Bootstrapping.

ملف الـ Bootstrapping هو الملف الذي:

- يقوم بتحميل وتجهيز البيئة اللازمة للتطبيق.

- يجمع كل الإعدادات والملفات الأساسية مثل الاتصال بقاعدة البيانات، تحميل ملفات الـ Helpers، قراءة ملفات الإعدادات (Config)،، وتجهيز كل شيء يحتاجه التطبيق ليبدأ بالعمل او ال loading اذا اردنا أن نكون دقيقين.

- يتم استدعاؤه عادة مرة واحدة فقط داخل ملف الـ index.php،، والذي بدوره يعتبر نقطة الدخول (Entry Point) للتطبيق أو الموقع.

أهمية ملف Bootstrapping:

- تنظيم الكود: بدلاً من أن تضع كل التحميلات والإعدادات في كل ملف أو في ال index.php،، تجمعها كلها في مكان واحد مرتب و تستدعيها بعدُ عن طريق تحميل هذا الملف..

- سهولة الصيانة: إذا احتجت لتغيير شيء في الإعدادات أو إضافة مكتبات جديدة، لن تحتاج أن تبحث في كل السكربتات، يكفي تعديل ملف Bootstrapping.

- تهيئة البيئة: يمكنك ان تحدد من هنا إذا كنت في بيئة تطوير (development) أو بيئة إنتاج (production).

- التحكم بال requests: بعد التهيئة، يتم تمرير الطلب إلى نظام التوجيه (Routing) و غالبا يكون ملف منفصل،، وهو الذي يحدد أي كود/طلب ينفذ.

غالباً يوجد هذا الملف في المجلد الرئيسي (Root Directory) للتطبيق،، أو داخل مجلد مخصص مثل bootstrap/.

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

- المستخدم يرسل طلب.

- السيرفر (مثلاً Apache أو Nginx) يوجه الطلب إلى index.php.

- ال index.php يقوم بتحميل ملف Bootstrapping.

- ملف ال Bootstrapping يجهز كل الملفات الضرورية و يجمعها معا.

- يتم توجيه ال requests و الحصول على ال response.

مثال implementation بسيط:

// index.php
require_once 'bootstrap.php';

// prepare the request
$router = new Router();
$router->handle($_SERVER['REQUEST_URI']);

// bootstrap.php
require_once 'config/database.php';
require_once 'helpers/functions.php';
require_once 'routes/web.php';

كيف يتم ذلك في الفريموركات التي تقوم عالم ال php حاليا مثل Laravel؟

في Laravel، هناك مجلد bootstrap/ وملف app.php الذي يقوم بتحميل التطبيق وتجهيزه.
وأيضاً يتم استخدام ما يسمى بـ Service Providers لتهيئة أجزاء محددة من التطبيق بطريقة منظمة وقابلة للتوسيع.. ال service providers هلته هي نسخة متطورة و جميلة من مفهوم ال bootstrapping في ال PHP.

يعني غالبا لن تحتاج لان تهتم بهذا في حالة إشتغتلك بفرييموورك معين، لكن فهمه سيفرق في طريقة تعاملك معه و حلاوة استعماله.

اللهم علمنا و إنفعنا و غيرنا بما تعلمنا.

#PHP #softwareengineering #Fundamentals #backenddevelopment
1
التفكير الزائد في مستقبل سوفتوير معين قد يقود الى ال over engineering التي تضر أكث مما تنفع.

البساطة و الوضوح حسب المتطلبات الحالية للمشروع مع تفكير في ال architecture على المدى المتوسط هو المطلوب.

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

مع الوقت ستتطور معارف الفريق و ايضا المتطلبات.. انذاك يمكن الإتيان بقليل تعمق في الأشياء.. لكن مع الحفاظ على بساطة ال implementation و سهولة فهم الكود (رغم انه يؤدي مهام معقدة).

#Softwareengineering
👍2
المهم في رحلتك كسينيور مبتدئ أو متمرس هي قابلية التعامل مع أشياء لا تعرفها اصلا.

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

#Softwareengineering
لو أنت كمبرمج عارف ماذا تريد، من أين تنطلق و الى اين تصل - في مهمة ما - فال ai يساعد كثيرا في عملية كتابة الكود و عمل Refactoring افضل منك بكثير بحكم ال data التي يستخدمها و له الوصول اليها.

لكن مرة اخرى يجب ان تكون لديك دراية قوية ومعرفة ب:

- الأساسيات في علوم الحاسوب عموما و البرمجة خصوصا،
- تكون على دراية ببعض اشهر ال design patterns،
- تكون لديك مهارة التفكير و حل المشكلات،
- ان تكون لديك مهارة ال debugging لانها مهمة جدا،
- ان تفهم لغة البرمجة/الفريمووركس التي تستخدمها بعيوبها و نقاط قوتها لكي تعرف كيف تستغل ال ai لصالحك،
- أن تحاول القراءة كثيرا في هندسة البرمجيات و ما الى ذلك.. ففهم العلم الان صار ضرورة لا اضافة.

و نسأل الله ان نوفق لما كتبناه ايضا.

#Softwareengineering #programming #AI
4
أول ما يجب ان تفكر فيه أثناء البدء في عمل ميزة جديدة في نظام ما هو هل هنالك plug-in/package/library/.. يقوم بالحاجة في وقت اقل، دون الحاجة لبناءه من البداية.. لا حاجة لإعادة بناء العجلة.

هذا يحتاج ان تحول عقليتك من coder/programmer الى software developer/engineer.

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

#Software #mindset #Softwareengineering
6
15/30 دقيقة تعلم في اليوم، سواء نظريا او تطبيقيا لمفهوم معين على مدى سنوات و بصفة متكررة و ثابتة في هندسة البرمجيات؛ يجعل منك مبرمجا افضل..

قال سيد الخلق صل الله عليه وسلم: "أحب الأعمال الى الله ادومها و ان قل".

تذكر هذا جيدا في هذا المجال.

#software #softwareengineering #contuniuelearning #learning
13
استخدم الـ AI، فمعظم الكود الذي يُدفع للإنتاج حالياً هو AI generated. لكن الكود ال:
Clean,
Reusable,
Maintainable,
Secure,
Self-commented,
يتبع بنية المشروع (Project Architecture)،
يتبع أسلوب كتابة الكود الخاص بالفريق،
يحل مشكلة محددة،
مقبول من قِبل الفريق الداخلي،
يطابق الـ UI prototype والمتطلبات الوظيفية،
سهل الصيانة،
بسيط،
قابل للتعديل بسهولة،
ومُعلّق عليه جيدًا عندما يحتاج ذلك،
...
كل ما سبق مسؤوليتك أنت كمطور/مبرمج، هذا الكود يجب أن تراجعه أنت، تعدّل عليه أنت، تفهمه أنت، تصحّحه أنت، وتقوم بعمل testing له أنت (functional و unit tests). لو فهمت هذا وعملت به، ستحسّن من جودة عملك، وتزيد من إنتاجيتك، وتطوّر من مستواك أيضًا.

*ولا تنسَ أن تتعلّم وتخصص وقتًا للتعلّم (لأنك تحتاجه سواءً بالـ AI أو من دونه).

#coding #programming #softwareEngineering #software #ai
3👍2