Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
365 - Telegram Web
Telegram Web
في هندسة البرمجيات، وفي كثير من الأحيان أثناء عملك على مهمة برمجية ما، الأصل في العمل هو الفشل لا النجاح.

تعود على الفشل، وتعود على البحث، البحث ثم البحث، والتعلم المستمر.

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

حاول أن تتعلم من المحيطين بك، إسأل أسئلة كثيرة، وضع غرورك جانبًا.

حاول أن تتعلم من التقييمات و النصائح التي تُعطى لك.. سواءٌ كانت إيجابية أو سلبية.

هذه كلمات أدونها لأُذكر بها نفسي دائمًا، وأحاول مشاركتها لعلها تنفع شخصًا ما.
استخدام الـ ai رائع ونافع، وأي مطور برمجيات أو مهندس يقاومه فهو يسير عكس التيار. هي أدوات تساعد وتُطوّر من الإنتاجية بشكل كبير. فقط افهم ماذا تفعل، و تعلم و أنت على الطريق.. ويجب أن تكون فاهمًا للأساسيات طبعًا (لا تقع في وهم الكمال، فالتعلُّم يحتاج إلى وقت طويل،، يعني فهمك للبعض من الأساسيات نافع ايضا ان شاء الله..).

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

وهذا مقطع قصير للرائع اسامة سيفيدك في هذا السياق.

https://youtu.be/O3nZ0oPljB8?si=wC_qUNGg_j0c06b1

نفعنا الله وإياكم.
بدأت في مراجعة مهاراتي في PHP native بهدف أن أكون أكثر ثباتًا و خبرة فيخ و في استخدام Laravel حاليا.

لذلك قررت أن أشرح بعض الميزات الجديدة في PHP 8، وربما سأقوم بتسجيل مشروع صغير باستخدام النسخة 8 منه و محاولة تسجيل مشروع واقعي باستخدام سبل البحث و الاخطاء و استخدام ال ai و هكذا..

آمل أن يفيد هذا شخصًا ما.

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

اطلع على أول فيديوهين، ومرحبًا بأي أفكار، ملاحظات أو إنتقادات.

القناة فيها مساحات و Playlists أخرى ساحاول العمل عليها ان شاء الرحمن لعلها تكون شيئا نلقى الله به.

https://youtube.com/playlist?list=PLf1OfyWZ4m-ciRShE-1NwQKBJcCTsFT7R&si=ydEL6zLnjed6bcC5
هل منكم يا اصدقاء من يعرف كيفية عمل youtube shorts بطريقة بسيطة دون حاجة لعمل مونتاج و ما الى ذلك..

قررت ان لا انهمةك كثيرا في المونتاج.

و عندي افكار shorts لسببين:

- الاول في مرات فكرة بسيطة ممكن تنشر و تكون نافعة في اقل كن دقيقة

- الثاني لدفع القناة قليلا نحو ان يعرفها عدد اكبر بقليل..

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

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

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

فأسأل الله أن يكون هذا خالصًا لوجه الله.

واللهم علّمنا وانفعنا بما علّمتنا.
أنت قمت بعملية تقييم لمهاراتك، واكتشفت وجود ثغرات/ثقوب معرفية كثيرة في مجال البرمجة أو هندسة البرمجيات عموما، رغم أنك حالياً mid-level developer أو حتى senior developer لكنك تخشى من فكرة العودة لإعادة ضبط تلك الأساسيات و سد الثقوب التقنية.

الموضوع معقد قليلاً من وجهة نظري المتواضعة.

هو مزيج بين ما هو نفسي، اجتماعي، مادي، وبين ما هو تقني محض،، تقول في نفسك: "عودتي لاكتشاف أو إصلاح الأساسيات قد تجعلني أبدو ضعيفاً أمام الفريق الذي أعمل معه… أو أبدو وكأنني لا أستحق موقعي."

وتضيف؛ "ليس لدي وقت للعودة للأساسيات وضبطها، لدي مسؤوليات حالية وأحتاج إلى التركيز على عملي الآن."

دعني أشاركك بعض الحلول البسيطة و المباشرة، لعلها تكون نافعة:

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

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

- تخصيص 30 إلى 40 دقيقة يومياً لدراسة أو إصلاح مسألة معينة سيصنع فرقاً كبيراً مع الوقت، وسيساهم في تراكم معرفتك دون أن يؤثر سلباً على مسؤولياتك الحالية.

- لا تجعل تلك الثلاثين أو الأربعين دقيقة مدة للقيام بأشياء كبيرة في ذهنك (بناء تطبيقات كبيرة و و و) .. ففي مرات قراءة مقال تقني واحد، أو مشاهدة مقطع تقني معرفي قد يكون نااافعا جدا.

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


وأخيراً، استعن بالله ولا تعجز، واصلح نيتك، فالإخلاص في طلب العلم باب لكل خير، وتذكر قول سيد الخلق في حديث صحيح: "أحبُّ الأعمالِ إلى اللَّهِ تعالى أدومُها، وإن قلَّ".

نفعنا الله وإياكم.
تجربتي مع العودة لبناء أسس صلبة للأساسيات و الخوارزميات في مجال هندسة البرمجيات (1)

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

فأسال الله التوفيق.

لاعطيكم خلفية عنما ستقراه مستقبلا،

هل انت مطور برمجبات/مواقع/تطبيقات.. دخلت المجال بحب لكنك تهت... و اردت ان تصحح المسير.

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

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

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

وفي ما يلي مقالين كنت كتبتهما منذ مدة.

#إستدراك_ما_فات_في_هندسة_البرمجيات
تجربتي مع العودة لبناء أسس صلبة للأساسيات و الخوارزميات في مجال هندسة البرمجيات. #2

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

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

- المهارات تختلف باختلاف التخصص: كونك مطورًا ذو خبرة لا يعني بالضرورة أنك تمارس الخوارزميات يوميًا، وكلنا كذلك (لأننا غالبًا نستخدم حلولًا جاهزة). إذا كان عملك يركز أكثر على أطر العمل (frameworks)، أو المكتبات (libraries)، أو قواعد البيانات سهلة الاستخدام، فقد لا تكون مهاراتك في حل الخوارزميات بنفس القوة. وهذا نفسيًا أيضًا صعب جدًا، لأنك تبدأ في استكشاف نقاط ضعفك، ومواجهة ذلك أمر مؤلم.

- التحديات الخوارزمية تتطلب تفكيرًا معينًا: مشاكل الخوارزميات تحتاج إلى نهج رياضي ومنهجي يختلف عن المهام اليومية مثل العمل مع واجهات برمجية (APIs)، أو قواعد البيانات (databases)، أو تصميم الواجهات (UIs).

- مهارات حل المشكلات قد تضعف بمرور الوقت: هذا إذا كنت قد تعلمتها في الأساس، أما إذا كانت جديدة عليك، فغالبًا ستجد نفسك ضعيفًا فيها. ستبدأ في مقارنة مهامك اليومية بهذه التحديات، وقد تعاني من متلازمة المحتال (Imposter Syndrome). ضع في اعتبارك أن هذا متوقع.

- التفكير المنطقي (Logical Thinking) مهارة كأي مهارة: إذا لم تمارس حل الخوارزميات بانتظام، فمن الطبيعي أن تجد صعوبة عند العودة إليها. الممارسة المستمرة تساعدك على استعادة هذه المهارات أو اكتسابها من جديد.

- تنوع المشكلات يتطلب أساليب مختلفة: قد تتطلب تحديات البرمجة تقنيات أو مفاهيم لم تستخدمها من قبل، مما يجعلك تفكر بطرق جديدة ويطور من مهاراتك، لكنه في البداية قد يجعلك تبدو ضعيفًا.

تذكر:

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

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

ماذا يمكنك أن تفعل عند العودة لتصحيح نقاض ضعفك ومواجهة الفشل؟

- خذ وقتك في تحليل المشكلات وتبسيطها.

- اطّلع على حلول الآخرين لتتعلم طرقًا جديدة.

- استمر في الممارسة بانتظام دون إحباط، مثل تخصيص ساعتين أسبوعيًا.

- لا تعتمد على الذكاء الاصطناعي (AI) كأول حل وأنت في مرحلة الاستدراك، فالأهم أن تكتب الكود الأولي بنفسك قبل أن تستشير.

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

#إستدراك_ما_فات_في_هندسة_البرمجيات
تجربتي مع العودة لبناء أسس صلبة للأساسيات و الخوارزميات في مجال هندسة البرمجيات. #3

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

لنفترض أنك تخطيت مرحلة الخوف النفسي هذه (رغم أنني متأكد جدًا أن هذا الأمر لا يمكن تجاوزه في أسابيع أو أشهر… لكن لا بد من الاستمرار، لا مجال للتوقف).

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

لكن أرجوك، لا تقم بهذا التقييم فقط بناءً على طريقة كتابتك للكود (فكلنا بدون استثناء نقوم بعمل copy-paste لأكواد الآخرين، ولا نفهم كل الأكواد المكتوبة، وأحيانًا نجعل الأشياء تعمل دون فهم شامل لكل الجوانب… هذا ليس كلامًا للسخرية، بل هو وصف واقعي). وإن بحثت عن مقابلات لروّاد في Software Engineering سيقولون لك نفس الشيء؛ تعلم أن تفهم ما تقوم به، وتعلم الأساسيات جيدًا. وهذا بالضبط ما نحاول دفعك إليه في هذه السلسلة، إن شاء الله.

أيضا، لا تقييم نفسك من خلال مكانك المهني الحالي. 

السؤال الآن كيف أقوم بهذا التقييم؟

كيف قمتُ بتقييم نفسي كمطوّر برمجيات ومهندس برمجيات عمومًا؟

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

- مهاراتك في frontend تصل لمستوى senior
- مهاراتك في backend تصل لمستوى mid-senior
- اهتمامك بالتعلم المستمر، ورغبتك في العودة لإصلاح الأساسيات، أمر جيّد ونافع على المدى المتوسط والبعيد
- لا تزال بحاجة لفهم أعمق لل SDLC
- توجد knowledge gaps كثيرة، خصوصًا في الأساسيات. 
- التفكير ادكنطقي يحتاج تطوير كثير. 
- التفكير الإستباقي ايضا يحتاج تطويرا
- مهارات التواصل تحتاج تطويرا ايضا
.... 

وبناءً على هذا، طرحت على نفسي سؤالًا: "ماذا أريد أن أكون في السنوات القادمة – بإذن الله – في هذا المجال الذي أحبه؟" (رغم أن "الحب" لا يكفي وحده… وسنعود لهذه النقطة لاحقًا). فوجدت الإجابة، وبدأت في بناء خطة للتعلم والتطور بناءً عليها.

وفي المقال المقبل، سنفترض أننا نريد أن نصبح Backend Engineer أو Software Engineer، وسنبني طريقة لرسم خطة واضحة أولًا. وعلى كل من يقرأ هذه السلسلة أن يقوم بعمل adaptation حسب ما يريد أن يكونه. 


بارك الله لنا ولكم، وعلّمنا ما ينفعنا. وإذا وجدت أن هذه السلسلة نافعة، شاركها لعلها تصل لمن يهتم… ولا تنسونا من دعواتكم. 

و مرحبا بأي ملاحظات، تشجيعات، تحسينات او انتقادات. 

#إستدراك_ما_فات_في_هندسة_البرمجيات
جربتي مع العودة لبناء أسس صلبة للأساسيات و الخوارزميات في مجال هندسة البرمجيات. #4

خلاصة المقال السابق من السلسلة؛ كان حول تقييم نفسك تقنيًا بصدق، وافتراض أنك تريد أن تصبح مهندس برمجيات متمكن... القادم من الأفكار والخطوات هو عن تجربة شخصية مستمرة، وتعلّم مستمر، وأسئلة واستشارات ممن أثق في علمهم... بعض الأفكار والخطوات أنا في وسطها أو في بدايتها. (سيقول قائل: أيُعقل أن تنصحنا بها وأنت لم تتعدَّها بعد!؟ سؤال في محله، لكن ما لا يُدرك كله لا يُترك جله، ونحاول أن نترك أثرًا طيبًا في كل شيء بدا لنا أنه يقدّم إضافة أو يُظهر ضوءًا في آخر النفق لشخص آخر).

بعد التقييم، ستجد عديد الثقوب المعرفية (technical gaps) --أُركّز على المصطلحات التقنية بالإنجليزية لأنها أكثر تعبيرًا في المجال، والتعريب في مرات كثيرة غير دقيق، وأيضًا لتعلق في ذهنك لأنك غالبًا ستحتاجها في عملك--

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

- أساسيات علوم الحاسوب: وتتمثل في كيفية عمل الحاسوب عمومًا، كيف يُخزّن البيانات، أنواع الـ data، وهكذا... يمكنك أن تجد عديد الدورات المجانية على اليوتيوب أو تقرأ مقالات مطولة، المهم أن تجد ما يُنشّط ذاكرتك في هذا السياق وتفهم الأساسيات بشكل أوسع.

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

- أساسيات ال data structure و ال algorithms: كتاب Grokking algorithm رائع ويفتح العين على كثير من المفاهيم المهمّة في البرمجة مثل: Arrays، Linked Lists، Big O notation... الكتاب مدفوع لمن يستطيع، ولمن لا يستطيع توجد فيديوهات لشرحه على اليوتيوب.   الكتاب مكتوب بـ Python لكنني أُطبّق عليه بـ PHP.

- أساسيات البرمجة: التي تعرف فيها قليلاً أو كثيرًا: PHP، JS أو Python… أعد تعلم الأساسيات: variables declaration, loops, if statements, OOP, functional programming.

- تعزيز المعارف وإسكانها الدماغ: استخدمت وما زلت أستخدم FreeCodeCamp لـ Data Structures with JavaScript، و UI Development، و Responsive UI Development، وغيرها.. جيد و دون الحاجة لعمل local set-up لأي شيء.

- تعزيز المعارف في ال backend engineering: حاليًا أستخدم دورة حسين ناصر fundamentals of backend engineering على يوديمي، رائعة جدًا.

- تعزيز المعارف بأساسيات ال Databases: أيضًا دورة حسين ناصر على يوديمي مفيدة جدًا.

- التعمق في فهم و إستعمال إطار العمل Laravel: يمكنك اختيار أي إطار عمل تفضّله ويتبع لغة البرمجة التي تستخدمها و تحاول ان تتعمق فيه.

- القراءة حول Unix, DevOps, Unit Testing, E2E Testing, Software Engineering وجميع مراحل تطوير التطبيقات.

- تعزيز المعارف في اللغة الإنجليزية.

كل هذه الأشياء صالحة للتعلم بالتوازي، لا يهم ما الذي يسبق بصفة صارمة.. شيئًا فشيئًا سترى أن فهمك وتعقّلك زاد بإذن الله.

مرة أخرى،، إنه طريق طويل... قليل دائم خير من كثير منقطع وتذكّر،، ولو 30 دقيقة يوميًا.

في المقال القادم باذن الله ساشارك خطة لكيفية جمع كل هذا بصيغة تطبيقية.

اللهم علّمنا وانفعنا بما علمتنا.

والسلام عليكم

#إستدراك_ما_فات_في_هندسة_البرمجيات
صدق المسير في هذه الحياة

الوصول غير مرتبط بسرعة المسير..
والمسارات ليست كلها مستوية ومتشابهة عند الكل..
والإنسان مكلّف بوسعه..
والنطّ عن بعض المراحل يُبطئ الوصول..
لا يمكن أن تجري 10 كيلومترات دون أن تجري الكيلومتر الواحد والاثنين وهلمّ جرا..
يمكنك أن تجري العشر كيلومترات، لكنك ستجد خسائر عديدة بعدها.. وستتجاوزها.. وتعود لتتدرّب من الكيلومتر الأول لو أردت الاستمرار صدقًا..
قليل دائم خير من كثير منقطع..
والرزق من عند المنّان فلا تحمل همّه..
فاسعَ، وحافظ على ما يعينك على القرب من الله، من بدن، وعقل، وصحة، وسعي، و و و.. واجعل الله أولًا في حياتك (بقدر الاستطاعة، فنحن بشر في النهاية)..

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

وتذكّر هذه الأحاديث، أو علّقها في مكان تراه دائمًا:

نصيحة سلمان الفارسي لأخيه أبي الدرداء عندما زاره فوجده قد انقطع للعبادة حتى أهمل حق زوجته وحق نفسه. فقال "إنَّ لِرَبِّكَ عَلَيْكَ حَقًّا، ولِنَفْسِكَ عَلَيْكَ حَقًّا، ولأَهْلِكَ عَلَيْكَ حَقًّا، فَأَعْطِ كُلَّ ذِي حَقٍّ حَقَّهُ".

"احب الأعمال الى الله ادومها و إن قل".

المؤمن القوي خيرٌ وأحبُّ إلى الله من المؤمن الضَّعيف، وفي كلٍّ خيرٌ، ثم يقول ﷺ: احرص على ما ينفعُك، واستعنْ بالله، ولا تعجز، وإن أصابَك شيءٌ فلا تقل: لو أني فعلتُ لكان كذا وكذا، ولكن قل: قدر الله، وما شاء فعل؛ فإنَّ لو تفتح عمل الشيطان".

اللهم إنا نسالك الصدق.

#خاطرة
مجرد تغيير بسيط في إعدادات الاتصال بقاعدة البيانات يمكنه تحسين أداء تطبيقك بشكل كبير في التطبيقات المبنية على ال PHP؟

PDO::ATTR_PERSISTENT => true

تعني أن PHP تستخدم persistent connections.

ما هي persistent connection؟

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

يعني:

Open-->operate-->close

في الاتصال المستمر (persistent connection): ال PHP تحتفظ بالاتصال مفتوح حتى بعد انتهاء السكريبت. وعند الحاجة، تعيد استخدام نفس الاتصال بدلاً من فتح اتصال جديد.

أهمية او مبتغى إستخدامها: بدون persistent connection يتم فتح وغلق الاتصال في كل مرة وهذا يستهلك وقت وموارد أكثر.. Cpu...

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

ملاحظة مهمة:

إستخدام هذه الميزة في التطبيقات فقط يحافظ على الاتصال بقاعدة البيانات و لا يخزن معلومات ال query التي تتصل بقاعدة البيانات.

يمكنك أيضا استخدام هذه الميزة في الفريمووركس المبنية على ال php ايضا.


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

اللهم علمنا و انفعنا بما علمتنا.

#PHP #backendengineering
ما هو ملف ال 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
Mohcin Space
https://www.linkedin.com/posts/mohcin-bounouara-31697b69_%D9%81%D9%8A-%D9%88%D9%82%D8%AA-%D9%85%D8%A7-%D9%85%D9%86-%D9%85%D8%B3%D9%8A%D8%B1%D8%AA%D9%83-%D8%A7%D9%84%D9%85%D9%87%D9%86%D9%8A%D8%A9-%D9%83%D9%85%D8%A8%D8%B1%D9%85%D8%AC-%D8%A3%D9%88-%D9%85%D8%B7%D9%88%D8%B1…
لمن لا يريد ان يقرأه علي لينكد ان

====================

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

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

فيما بعد، اكتشفت أن الخبراء أعطوا لما وصفته فوق اسم FOMO أو Fear of Missing Out، أي بالترجمة الحرفية "الخوف من فوات الشيء أو الأشياء" أو "الخوف من البقاء خلف الركب" إن صح التعبير.

عموماً، أحدثك انطلاقًا من تجارب شخصية لكي لا تعتقد أنها تنظير فقط، والقادم من النصائح هو خطوات عملية أخذتها منذ مدة ليست بالقصيرة، وأحمد الله أنني بدأت ألمس تأثيرها في نفسي وفي معارفي، ولازلت مستمرًا في كثير منها لأنني أيضا في بداية الطريق فقط أحاول أن أشارك ما رأيت أنه يؤثر إيجابا في عقليتك و معارفك كمطور برمجيات. 

- أهم شيء، لا تخجل من أنك وقعت في كل هذا، الأمر طبيعي، وهنالك دومًا مجال للاستدراك،، فالعِبرة بمن صدق لا بمن سبق.

- لا تشتت تركيزك بين لغات البرمجة وأطر العمل الكثيرة، اختر لغة برمجة واحدة (وأضف إليها الجافاسكريبت لأنها أساسية)، تعمق في أساسياتها وحاول أن تطبقها قدر الإمكان في العمل أو في مشاريع تعلمية.

- بعدها، اختر إطار عمل مبنيًا على هذه اللغة وابدأ تعلمه والتطبيق عليه.

- تعلم الأساسيات في ال SQL سيغير كثيرًا في فهمك للأمور.

- لا تقارن نفسك بالآخرين، لكن تعلّم منهم،، وضع من هم أفضل منك هدفًا معرفيًا لك.

- ساعد من مكانك داخل المكان الذي تعمل فيه، وكن جادًا ونزيهًا، فهذا سيساعدك على العمل على مشاريع أكبر وذات قيمة مع الوقت.

- إبحث عن مكان عمل يلاؤم مبادئك و أهدافك. 

- تعلّم طلب المساعدة، ولا تخجل من هذا.

- اهتم بنفسك وجسدك، فهما أدواتك للتطور.

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

- استخدم ال ai في التعلم وطرح الحالات المختلفة، فهو mentor مجاني الآن.


أتمنى أن تكون هذه النصائح نافعة بإذن الله.
هندسة البرمجيات مجال يحتاج إلى سنوات من الممارسة والتعلّم (وتصحيح المسارات)، وأفضل ما يمكنك أن تقوم به بشكل قليل ويومي هو أن تحاول أن تصير أفضل من نُسخك القديمة، بتعلّمك أو تطبيقك لمفهوم واحد نظريًا وتطبيقيًا في أسبوع واحد مثلًا، فهذا على المدى البعيد سيُشكّل لديك معرفة متراكمة ضخمة.

وطبعًا، إن استطعت أن تشارك ما تتعلمه أو تُعلّمه لأشخاص آخرين بقدر فهمك، فهذا رائع، فستزيد من فهمك للأمور وتنفع غيرك في نفس الوقت.

اللهم إنا نسألك التوفيق.
هذه الصفحة من القرآن الكريم تلخص الدنيا كاملة.

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

فاللهم سترا و مغفرة و سعيا اليك بكل ذنوبنا و هفواتنا يا الله.
أحد أكثر الأمور التي كنت أُعاني منها في مجال تطوير البرمجيات هو محاولة حفظ المعلومات، سواء كانت syntaxes، مفاهيم تقنية أو غيرها... لم أكن أحب الحفظ لأنه كان يجعلني أشعر وكأنني أستعد لإجتياز إمتحان ما فقط، لا أكثر، و هذا لا يتناسب قطعا مع هذا المجال.

لكن عندما غيرت هذه العقلية وبدأت أركز على الفهم الحقيقي بدلًا من الحفظ، وخصصت وقتًا للتعمق في مفهوم معين قبل الانتقال إلى مفهوم آخر، بدأت ألاحظ أنني أتذكر الأمور والمفاهيم بشكل طبيعي، حتى دون أن أبذل جهدًا متعمدًا لحفظها.

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

لكن التركيز على مفهوم/تقنية معين(ة)، وبناء مشاريع صغيرة باستخدامه(ا) ، يساعد على ترسيخ المعلومات بطريقة فعالة جدا. هذا النوع من "الحفظ الحقيقي" أفضل بكثير من محاولة حفظ الأشياء بشكل سطحي دون تطبيق عملي أو فهم عميق،، خاصة في مجال البرمجة.
في مجال تطوير البرمجيات كل شخص منا لديه أمور لا يعرفها أو يفهمها وربما - يعمل بها- رغم ذلك، وهذا أمر طبيعي.

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

اللهم علمنا ما ينفعنا.
2025/07/07 18:15:25
Back to Top
HTML Embed Code: