‏إظهار الرسائل ذات التسميات لارافيل. إظهار كافة الرسائل
‏إظهار الرسائل ذات التسميات لارافيل. إظهار كافة الرسائل

استخدام regex لتحويل old() إلى $model تلقائياً لتسهيل البرمجة في إطار عمل لارافيل

كنت أكتب في موقع في إطار العمل الشهير لارافيل Laravel . أعدت استخدام تصميم صفحة create.blade.php في صفحة edit.blade.php لكن أحتاج لبعض التعديلات طبعاً.

من أهم هذه التعديلات هو تحويل
old('something')
إلى
$model->something
طبعاً تستخدم المودل المناسب حسب البروجكت عندك.

لن أغيرهم كلهم بشكل يدوي طبعاً ! لذلك قررت أن استخدم regex لتحويلهم جميعاً مرةً واحدة.

خطوات استخدام regex للإستبدال السريع

أستخدم برنامج vs code الشهير. ضغطت على CMD + F لأني أستخدم ماك بوك (Mac OS) لكن إن كنت تستخدم ويندوز أو لينكس ، اضغط على Ctrl + F

البحث والاستبدال عن طريق regex في VS Code في بروجت لارافيل

سيظهر لك مربع فوق، أكتب فيه regex الخاص بإختيار وتحديد الكود من داخل الصفحة المفتوحة حالياً. هذا هو كود regular expression الخاص بالتحديد والإختيار.

old\('(\w+)'\)

ثم نتأكد من الضغط على "الإختيار من خلال الـ regular expression" وهو زر بجانب مربع الإختيار شكله به نقطة ونجمة مثل ".*". تأكد من تحديدك لهذا الخيار.

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

 
$product->$1

استبدال كلمة product بإسم المودل الذي تريد كتابته في الكود عندك.

ثم اضغط على زر استبدال الجميع ، أو استبدال.

شرح أكواد regex ببساطة

دون الدخول في تفاصيل عميقة في الـ regular expressions نوضح كيف يعمل كود التحديد والإستبدال.

في كود التحديد استخدمنا القوس وقبله شرطة مائلة لأننا نقصد تحديد قوس حرفياً ، ولا نريد معني القوس الموجود في الـ regex . 
استخدمنا حرف w مسبوق بشرطة مائلة ، ومتبوع بعلامة الزائد + لأننا نريد تحديد كل النصوص المكونة من الحروف الإنجليزية حتى الوصول لـ char غير الحروف الإنجليزية.

استخدمنا قوسين حول جرئية تحديد الحروف الإنجليزية، لكي نحتفظ بهذا النص في متغير خاص في regex لنعيد استخدام هذا النص في كود الاستبدال.

بعد ذلك ، استخدمنا في كود الاستبدال المتغير الأول وهو $1 وهو يحتوي على النص المحدد بقوسين في كود التحديد.

إن كان الشرح المكتوب غير واضح بشكل كافي ، أتمنى أن تكون الصورة أوضح لك.

شرح استخدام regex لإستبدال النصوص داخل vscode

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

طريقة ترقية npm داخل Laravel Sail

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

npm notice
npm notice New patch version of npm available! 9.6.4 -> 9.6.5
npm notice Changelog: https://github.com/npm/cli/releases/tag/v9.6.5
npm notice Run npm install -g npm@9.6.5 to update!
npm notice

لكن عندما حاولت تحديث مدير حزم نود npm بهذا الأمر، التحديث لم ينجح!

npm install -g npm@9.6.5

لأن هذا الأمر يقوم بترقية وتحديث npm المثبت على جهازك ، وليس الموجود داخل بيئة التطوير Laravel Sail لأن لارافيل سيل هي بيئة تطوير تعتمد على دوكر Docker container وهو معزول عن بيئة جهازك.

لذلك ، حاولت ترقية npm من خلال هذا الأمر الذي يحاول تحديث npm داخل docker عن طريق أمر Sail . ولكن لم ينجح الأمر.

sail npm install -g npm@9.6.5

لم ينجح الأمر. لأن الـ shell ليس صدفية جذر (ليس root shell). أي لا يمكن ترقية البرامج في الصدفية الخاصة بالمستخدم العادي. لذلك نحتاج إلى الدخول إلى صدفية المستخدم الجذر root shell .

لحسن الحظ ، نظام Laravel Sail فيه هذه الميزة . يُمكننا بكل بساطة فتح الـ root shell من خلال هذا الأمر.

sail root-shell

بعد ذلك ، نقوم بإستخدام أمر ترقية npm وتحديثها لأحدث إصدار بكل سهولة من خلال هذا الأمر.

npm install -g npm@9.6.5

بعد الإنتهاء من تحديث npm نخرج من الـ root shell prompt من خلال أمر الخروج.

exit

وبذلك نكون قد انتهينا من تحديث وترقية مدير الحزم الخاص بـ NodeJS Package Manager وهو npm كما تعرف.

ترقية npm وتحديثها لأحدث إصدار داخل Laravel Sail

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

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

نصائح لتسريع أداء المواقع المبنية بإطار عمل لارافيل

الكثير من الشركات تستخدم إطار العمل لاراڤيل (Laravel) لبناء موقع الويب الخاص بالشركة. اليوم سنقوم بعمل تحسين لسرعة بي اتش بي لارافل في خطوات بسيطة.

استخدام Laravel Mix لتحسين وتصغير الملفات

لارافيل ميكس تقوم بخلط العديد من ملفات الـ CSS لينتج ملف واحد. وبذلك يحتاج الموقع لطلب ملف واحد في http request واحد فقط. مثال على طريقة استخدام ميكس.

mix.styles([ 
'public/css/vendor/normalize.css',

'public/css/styles.css', 

], 'public/css/all.css');

استخدام الحفظ المؤقت cache دائماً

الكاش في مجال البرمجة معناه استخدام المعلومات التي تم تكوينها أو انتاجها في خطوات سابقة. الكاشينج (caching) يلعب دور كبير في تحسين أداء مواقع الويب.

على سبيل المثال، يتم طلب API معين كثيراً جداً. إن استخدمنا نفس الرد على الطلب السابق بدلاً من إجراء طلب جديد للـ API . وبذلك نوفر الكثير من الوقت اللازم لإجراء الطلب، ونقلل من استهلاك قواعد البيانات وتقليل عدد مرات التواصل مع قاعدة البيانات.

إطار العمل لاراڤيل يوفر لنا أمر سهل وبسيط لعمل حفظ مؤقت للكثير من الأمور. يمكنك عمل cache من خلال هذا الأمر.

php artisan config:cache

على سبيل المثال عمل cache للمسارات routes بهذا الأمر.

 php artisan route:cache

استخدام الطوابير Queues

من هياكل البيانات الضرورية في تحسين الأداء هي الطوابير (queue). نستخدم الطابور (queue) غالباً لإرسال رسائل من المستخدم إلى الخدمة أو العكس. سنقوم بالحديث عن استخدام الكيوز (queues) في مقال منفصل إن شاء الله لأنها مهمة جداً في تحسين أداء المواقع المبنية بـ لارافيل.

تسريع إطار عمل لارافيل

تحديث لارافيل و بي إتش بي

التحديثات تقوم بعمل الكثير من التحسينات في سرعة وأداء إطار العمل لارافيل ولغة البرمجة PHP لذلك أنصحك بعمل تحديث لإطار العمل واللغة دائماً.

التصغير minification

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

تصغير HTML

تصغير HTML معناها تقليل حجم الكود وتقسيمه إلى عدّة أجزاء مما يساعد في تكوين صفحة الويب أسرع مما يجعل رد السيرفر أسرع.

تصغير CSS

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

تصغير جافاسكربت

تصغير كود جافاسكربت يساعد في تقليل وقت تنفيذ الكود على جهاز المستخدم. تصغير جافاسكربت (javascript) يتم عن طريق الكثير من العمليات أهمها إزالة الـ API calls الغير مستخدمه ، وإزالة المتغيرات الغير مستخدمه ، وإزالة الـ imports الغير مستخدمه ، .. إلخ.

مراقبة ومتابعة أداء الموقع بإستخدام أداة Scout APM (أداة مدفوعة)

أداة Scout APM هي أداة متخصصة في مراقبة تطبيقات الويب لمعرفة المشاكل والعيوب بهدف تحسين أداء مواقع الويب. هذه الأداة تدعم لغات وإطارات عمل كثيرة منها لغة PHP و لغة روبي Ruby ولغة بايثون Python ولغة إيليكسير Elixir وغيرها من لغات البرمجة.

تعدم أداة سكوت إيه بي إم إطار عمل لارافيل من إصدار 5.5 أو أحدث. تساعد أداة Scout APM في معرفة وتحديد أوامر قواعد البيانات N+1 queries وهي تعتبر مشكلة أساسية في Laravel Eloquent .

تثبيت Scout APM في تطبيق لارافيل سهل جداً. كل ما عليك هو تنفيذ هذا الأمر في التيرمينال.

composer require scoutapp/scout-apm-laravel

ثم تنفيذ الأمر scout-app وبذلك نتأكد أنه تم التثبيت بنجاح.

بعد ذلك، نقوم بإضافة هذه الثوابت لملف .env لكي تكامل scout apm مع تطبيق لارافيل الخاص بك.

# Scout settings

SCOUT_MONITOR=true

SCOUT_KEY="[AVAILABLE IN THE SCOUT UI]"

SCOUT_NAME="A FRIENDLY NAME FOR YOUR APP" 


إن كنت تريد تثبيت تطبيق لارافيل على منصة هيروكو (Heroku) من خلال إضافة هيروكو (heroku addon) ، فأنت لا تحتاج إلى إضافة SCOUT_MONITOR ولا SCOUT_KEY لأن هيروكو يقوم بإضافتهم تلقائياً.

ثم بعد ذلك تضيف ملف config/scout_amp.php بإستخدام هذا الأمر.

php artisan vendor:publish --provider=\"Scoutapm\\Laravel\\Providers\\ScoutApmServiceProvider\"

وبعد ذلك تقوم بحذف ملفات الكاش (ملفات الحفظ المؤقت) ، وتقوم بإعادة بنائها مرةً أخرى. استخدم هذه الأوامر بالترتيب.

php artisan cache:clear

php artisan route:cache

php artisan config:cache 

ويُمكنك التأكد من حالة الحفظ المؤقت (cache) من خلال هذا الأمر.

php artisan about

إن أردت أن تضيف امتداد / اضافة scoutapm PHP extension استخدم هذا الأمر.

sudo pecl install scoutapm

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

خطوات استخدام مشروع لارافيل جاهز

تنزيل مشروع جاهز من الإنترنت

عند تنزيل مشروع جاهز مكتوب في فريم ورك لارافيل من موقع github أو gitlab مثلاً. تنزيل مشروع من أى موقع خاص بإدارة السورس كود بـ git يكون كما يلي.

git clone --depth 1 --branch=master https://gitwebsite.com/xyz.git sampleProject

استخدمت depth لكي أستخدم آخر نسخة من الكود بدلاً من تنزيل كل النسخ والتعديلات على الكون منذ إنشاؤه. واستخدمت أيضاً branch لكي أحدد الفرع الذي أريده تنزيله من الكود بدلاً من تنزيل كل الأفرع. الهدف من استخدام depth و branch هو تقليل عدد الميجابايت التي أقوم بتنزيلها على الإنترنت.

ضبط بيئة العمل

استخدم هذا الأمر لإستخدام .env.example كملف .env

cp .env.example .env

عمل قاعدة بيانات وربطها بالمشروع

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

تنزيل الـ dependencies للمشروع

تكوين مجلد vendor الموجود به كل اعتمادات المشروع (dependencies). أولا قم بتحديث composer من خلال هذا الأمر.

composer update

إن كنت تستخدم مكتبة التشفير - غالباً تستخدمها - ، نفذ هذا الأمر لإنشاء مفتاح تشفير جديد.

php artisan key:generate

مسح الملفات المؤقتة

استخدم هذا الأمر لمسح الملفات المؤقتة cache لكي لا تعيقك بالبيانات القديمة للمشروع.

php artisan config:cache

تجهيز قاعدة البيانات

استخدم هذا الأمر لإنشاء جداول قاعدة البيانات.

php artisan migrate

بعد ذلك، استخدم هذا الأمر لملء قاعدة البيانات بالمعلومات الإفتراضية الموجودة في المشروع.

php artisan db:seed

والآن يُمكنك استخدام المشروع وعرضه كما تشاء عن طريق الأمر التالي.

php artisan serve

إن كنت تنصح بقراءة هذا الموضوع ؟ شاركه على مواقع التواصل الإجتماعي لتفيد زملائك المبرمجين. لمزيد من المعلومات عن البرمجة ولينكس وأندرويد وويندوز وماك وآيفون وتصميم المواقع، ابحث عن "موقع أبانوب حنا للبرمجيات" على جوجل وادخل للموقع وستجد موضوع جديد يشرح فكرة أو معلومة جميلة ومفيدة كل يوم.