تنظیمات دیتابیس برای تست در لاراول

اگر شما هم از اون برنامه‌نویس‌ها هستید که برای کدهاتون تست می نویسید، مطمئنا نیازمند این هستید که موقع تست از دیتای واقعی و دیتابیس واقعی استافده کنید و رفتار برنامه‌تونو در هنگام کار با دیتابیس ببنید بدون اینکه دیتابیس اصلی برنامه تون مشکلی براش پیش بیاد و دستخوش تغییرات بشه.

خب برای این کار تو لاراول باید یه سری تنظیمات انجام بدیم که خیلی راحته. اگر دایرکتوری config رو توی پروژه‌تون نگاه کنید میبینید که شامل چند تا زیر دایرکتوریه که یکیش به نام testing ـه. تو این فولدر ما تنظیماتی رو قرار میدیم که در هنگام اجرای تست‌ها به کمکمون میاد و محیط تست این تنظیمات رو در اولویت استفاده قرار میده. به طور پیشفرض یک فایل app.php و یک فایل database.php قرار داره توش.

من برای تست از دیتابیس sqlite استفاده می‌کنم. پس محتویات فایل دیتابیس رو به این شکل تغییر میدیم:

 

اگه توجه کنید میبینید که تو قسمت آدرس فایل دیتابیس نوشتیم :memory: یعنی اینکه این دیتابیس به صورت فیزیکی در جایی وجود نداره و فقط هنگام اجرای تست‌ها در حافظه ساخته میشه و پس از پایان تست دیگه اثری ازش وجود نداره.

خب این شد تنظیمات دیتابیسمون. حالا برای انجام هر تست باید دو تا متد رو توی کلاس تستتون override کنید به این صورت:

 

متد setUp در هنگام اجرای تست فراخوانی میشه و توش میایم و به وسیله کلاس Artisan دستور migrate رو اجرا می‌کنیم تا جداول دیتابیسمون ساخته بشن.

متد tearDown هم پس از پایان تست‌ها فراخوانی میشه و ما میاییم همه چیو تو دیبابیس به حالت اولش برمی‌گردونیم توسط دستور migrate:rollback.

حالا به راحتی می‌تونید تست‌هاتونو بنویسید و با دیتابیس واقعی سر و کله بزنید.

تذکر

احتمال داره در هنگام اجرای تست با خطایی با این مضمون که درایوری برای دیتابیس پیدا نشد مواجه بشید. و این به خاطر اینه که اکستنشن sqlite برای php نصب نیست. برای این کار توی اوبونتو فقط کافیه دستور زیر را توی ترمینال اجرا کنیم:

بعد از این دستور sqlite برای php5 نصب شده و فعال می‌شود.

 

آشنایی با توابع Helper جدید در لاراول ۵

با سلام. همونطور که تو پست قبلی هم اشاره کردم زمان انتشار لاراول ۵ با تاخیر همراه خواهد بود و به جای ماه نوامبر در ژانویه سال جدید میلادی منتشر خواهد شد. ولی قبل از انتشار برخی از ویژگی‌های اون برای استفاده برنامه‌نویسان منتشر شده که می‌توان به توابع Helper جدیدی که کار توسعه رو خیلی لذت‌بخش تر‌می‌کنند اشاره کرد.

توابع مربوط به مسیریابی – Routing در لاراول

روش جدید:

روش قبلی:

 

توابع مورد استفاده در کنترلر‌ها و برای بازگشت دادن یک Reposnse

روش جدید :

روش قدیمی:

نوشتن در فایل Log

روش جدید:

روش قدیمی:

دستیابی به مقادیر فایل‌های Config در لاراول

روش جدید:

 

روش قدیمی:

تاریخچه لاراول

اگر از خوانندگان وبلاگ من باشید حتما به مطالبی در مورد فریمورک لاراول و آموزش‌های این فریمورک محبوب برخوردید. تو این پست می‌خوام در مورد تاریخچه لاراول و پدیدآورنده‌ش صحبت کنم که شاید خیلی‌ها در این مورد اطلاع داشته باشند ولی خب بعضی ها هم هستند که شاید دونستن تاریخچه براشون جالب باشه.

فریمورک لاراول

تاریخچه فریمورک لاراول از سال ۲۰۱۱ شروع شد. زمانی که Taylor Otwell (خالق لاراول) اولین نسخه از فریمورک لاراول را ایجاد کرد و تغییرات مهمی را در زمینه و روش کدنویسی php پایه‌ریزی کرد. اولین کاری که وی انجام داد، حل مشکلاتی بود که با رشد و بزرگ‌تر شدن فریمورک محبوب codeigniter به وجود آمده بودند و همین امر باعث کوچ بسیاری از برنامه‌نویسان codeigniter به Laravel شد.

در نسخه دوم لاراول تیلور سعی کرد تا روشهایی برای نوشتن کد تمیز و سریع‌تر در php ابداع کند و شعارش هم این بود: «خودتو از دست کد اسپاگتی خلاص کن»

نسخه سوم لاراول همراه بود با رونمایی از سایت محبوب این فریمورک به آدرس http://laravel.com که یک داکیومنتشن کامل و جامع لاراول می‌باشد. Taylor در این نسخه بیشتر روی همگام سازی لاراول با تست واحد یا Unit Testing، ارایه ابزار تحت خط-فرمان Artisan که یه چیزیه مثل bake توی فریمورک cakephp و یا oil در فریمورک FuelPHP، Database migration، رویدادها در لاراول و همچنین درایورهای بیشتر برای کار با sessionها و دیتابیس‌های مختلف تمرکز کرده بود.

همچنین بهینه‌سازی پشتیبانی bundleها که نقطه قوت لاراول محسوب می شدن و جدا کردن Eloquent ORM از هسته فریمورک و ارائه آن به صورت bundle از دیگر کارهایی بود که در این نسخه انجام شد.

بعد از نسخه ۳ که لاراول طرفداران بسیاری جمع کرده بود، Taylor در نسخه ۴ تغییرات بنیادینی رو اعمال کرد که این کار عمل مهاجرت از نسخه قبل به جدید را به شدت مشکل می‌کرد ولی تغییرات نسخه ۴ واقعاً عالی بودند و برنامه‌نویسان با روی باز از این تغییرات استقبال کردند.

لاراول ۴ از بهترین مدیر بسته‌ها برای php که composer نام داره، استفاده کرد که این کار باعث پشتیبانی لاراول از بسیاری از بسته‌های و کامپوننت‌های بینظیری می‌شد که برنامه‌نویسان سراسر جهان برای زبان php نوشته بودند و به نظرم این حرکت، یک حرکت انقلابی بود.

نسخه‌ای که الان همه از اون دارن استفاده می‌کنن نسخه ۴٫۲ این فریمورکه و نسخه بعدی که قرار بود اواسط همین ماه میلادی عرضه بشه ولی موکول شد به سال جدید میلادی، نسخه ۵ نام داره که باز هم تغییرات محسوسی در معماری Laravel ایجاد شده و همه منتظریم تا هرچه زودتر منتشر بشه.

البته این نسخه به صورت نسخه آزمایشی هم‌اکنون در GitHub قابل دسترسیه ولی من خودم دوست دارم از نسخه پایدار استفاده کنم، پس منتظر می‌مونم.

تعمیر زیرنویس‌های فارسی در گنو/لینوکس

یکی از خوبیای گنو/لینوکس اینه که هر کاری بخوای می‌تونی توش انجام بدی و برای انجامش حتما چندین راه وجود داره.

چند روز پیش می‌خواستم یه فیلم نگاه کنم و رفتم زیرنویسشو دانلود کردم که چشتون روز بد نبینه، دیدم فایلش خرچنگ‌قورباغه‌س. رفتم یکی دیگه دانلود کردم و دیدم بازم همون مشکل. پس دست به کار شدم و یه سرچ تو گوگل کردم و با دستور iconv آشنا شدم. و با یه خط دستور به راحتی فایل زیرنویسو درستش کردم. خیلی خوب بود.

بنابراین تصمیم گرفتم این دستورو یه جوری درستش کنم که دوستامم بتونن ازش استفاده کنن. این شد که دست به دامن پایتون شدم و اسکریپت زیرو نوشتم:

طرز کار:

ابتدا یه فایل خالی تو هر کجای کامپیوتر که دلتون خواست ایجاد کنید و اسمشو هرچی می‌خواین بذارین ولی با پسوند .py ذخیره‌ش کنین.( من ترجیح می‌دم تو دسکتاپم باشه و اسمشو گذاشتم subFix.py‌)

بعد توی ترمینال با دستور زیر برنامه رو اجرا کنید:

اگه سوالی داشتین در خدمتم. ضمنا انجام همین عملیات با دستور iconv به شکل زیره:

 

داکیومنت همه زبان‌ها و کتابخونه‌ها را یه جا داشته باشید!

همونطوری که از عنوان پست معموله می‌خوام یه ابزارو معرفی کنم که اومده برای راحتی من و شما، داکیومنت‌ و راهنمای زبان‌های برنامه‌نویسی و کتابخونه‌های معروف رو یه جا جمع کرده تا توی وقتمون صرفه‌جویی داشته باشیم و به راحتی هر چه تمام‌تر به چیزی که مدنظرمونه برسیم.

devdocs.io

این ابزار فوق‌العاده DevDocs نام داره. وب‌اپلیکیشن بسیار کاربردی و مفیدی که روزبه‌روز داره کامل‌تر میشه و چیزای بیشتری بهش داره اضافه می‌شه. الان که دارم این پستو می‌نویسم، ۴۸ تا زبان و کتابخونه و فریمورک رو پشتیبانی می کنه که همشونم پراستفاده و معروفن. برای نمونه مثلن داکیومنت زبان‌های C, C++, JavaScript, PHP, Ruby, Python, go و  فریمورک‌های Laravel, AngularJs, BackboneJs, EmberJs, Django, jQuery, Yii و  ابزارهای دیگه مثل NodeJs, nginx, momentJs, lo-dash, Underscore, CSS, HTML, DOM و بسیاری دیگه از ابزارها که روزانه ازشون توی کدنویسی و توسعه استفاده می‌کنیم رو شامل میشه.

شما می تونید داکیومنت‌هایی رو که لارم دارین از لیست انتخاب کنید تا همیشه در دسترستون باشند حتی وقتی آفلاین هستید!. بهتره از سخن کم کنیم و بریم یه سری به DevDocs بزنیم.

به راحتی آب خوردن Regular Expression بنویسید!

اگر برنامه نویس بوده باشید بارها پیش اومده که بخواهید از Regular Expression استفاده کنید و همونطور که میدونید این عبارات باقاعده فهمشون و نوشتنشون خیلی سخته و باید خیلی تو کارتون وارد باشید که بخواهید از حفظ اونها را بنویسید.

Regular expression

یک برنامه‌نویس خوش‌فکر و خوش‌سلیقه اومده یک کتابخونه به نام VerbalExpressions به زبان‌های مختلف نوشته که کار نوشتن عبارات باقاعده را خیلی آسون‌تر و قابل فهم‌تر کرده. شما با استفاده از این کتابخونه میتوانید با استفاده از توابع و دستورات قابل فهم برای انسان، عبارات با قاعده تولید کرده و تو اپلیکیشن‌هاتون ازش استفاده کنید. این پروژه توی گیت‌هاب قرارداره و شما میتونید با توجه به زبان برنامه‌نویسی که استفاده می‌کنید، کتابخونه مخصوصتونو دانلود کرده و استفاده کنید.

بیاییم به چند تا مثال از این کتابخونه خوشمزه بپردازیم:

اولین کاری که شما باید بکنید اینه که فایل مربوط به کتابخونه رو تو پروژه‌تون صدا بزنید. ما برای این مطلب از کتابخونه جاوااسکریپت VerbalExpressions استفاده می‌کنیم. برای این کار کافیه به وسیله خط زیر کتابخونه رو تو پروژه‌تون صدا بزنید:

سپس کد توی کدمون خودکتابخونه رو صدا زده و ازش یه شی می‌سازیم:

حالا میخواهیم یک عبارت باقاعده بنویسیم که کار اعتبارسنجی URL وب‌سایت را انجام بده، به صورت معمولی باید یه همچین عبارت باقاعده‌ایو بنویسیم:

ولی با استفاده از VerbalExpressions به این صورت عمل میکنیم:

همونطور که تو کد بالا هم میبینید، این کتابخونه و توابعش به زبان طبیعی انسان بسیار نزدیکه و از اینرو کاملا قابل فهم می‎باشد.

حالا یه مثال دیگه که این یکی در مورد Replace کردن یک متن به وسیله regula expression هست:

برای دانلود کتابخونه VerbalExpressions به زبانهای javaScript , PHP, Python, C#,Java, c++, Objective-c , Ruby بهمحل پروژه بر روی گیت‌هاب مراجعه کنید.

مستندات VerbalExpressions