عید آمد و عید آمد

adb3bbbc37a5e9087cbf481c82fa2b77

همینطوری داشتم از وبلاگم رد می‌شدم، گفتم سال که تموم شده و سال نو تو راهه، منم که تا اینجا اومدم، پس دست به کیبرد بشم و یه چیزی بنویسم.
اول از اینجا شروع کنیم که سال جدید قبلی داره تموم میشه و سال جدید بعدی تو راهه و طبیعتا خیلی‌ها سعی می‌کنن تو این روزا کاراشونو تموم کنن، یه استراحتی بکنن و با برنامه‌های جدید، سال نو رو شروع کنن (البته بعد از تعطیلات). خب منم از این مهم مستثنی نیستم و قطعن یه برنامه ‌ریزی‌هایی تو ذهنم کردم و سعی میکنم تو سال جدید بهشون عمل کنم.
یکی از کارهایی که دوست دارم انجام بدم، خوندن کتاب‌های بیشتر نسبت به سال گذشته‌س. راستش زیاد کتاب و نویسنده نمی‌شناسم. تو اکثر کتاب‌فروشی‌ها هم که میری به غیر از عناوینی با مضامین جن، طب سنتی، حافظ، قورباغه و امثالهم چیز به درد بخوری پیدا نمیشه البته لازم به ذکره که م.مؤدب‌پور هم کتاباش زیاده. ولی من به ژانرهای تاریخی بیشتر علاقه دارم البته از نوع غیرسانسوریش.
یکی دیگه از کارایی که حس می‌کنم باید انجام بدم، کار روی پروژه‌هایی که ایده‌ش به ذهنم خطور می‌کنه و یا مشارکت بیشتر توی پروژه‌های اوپن‌سورس مخصوصا رو گیت‌هابه.
فعلا چیز دیگه‌ای در نظر ندارم و در آخر لازم می‌بینم از تمام دست‌اندرکارانی که منو را تو سال گذشته یاری کردند، تشکر ویژه به عمل بیارم و آرزوی موفقیت روزافزون براشون داشته باشم.

هرچه پیش آید خوش آید. سال جدیدتون پیشاپیش، قشنگ.

اندر احوالات

با سلام.
خیلی وقته از نوشته قبلیم می گذره و خب خودمم دوست دارم بیشتر بنویسم ولی موضوعی مدنظرم نبوده که بنویسم در موردش. تو این مدتی که نبودم اتفاقات زیادی رخ داده که لیست وار بهش اشاره می‌کنم:

– تشکیل گروه کاربران لاراول تهران موسوم به لاراتاکز
– انحلال شرکتمون 🙁
– انتشار نسخه پنجم لاراول
– استخدام شدن توی یه شرکت جدید

حدود ۲ ماه پیش بود که با دوستان لاراول‌کار تصمیم گرفتیم جلسات هفتگی تشکیل بدیم تو حوزه برنامه‌نویسی PHP و مخصوصا فریمورک لاراول که بحمدلله با آمادگی دوستان، تشکیل این جلسات کلید خورد. اولین جلسه رو توی کافه وصال برگزار کردیم و حدود ۱۰-۱۲ نفری بودیم توی اولین جلسه.

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

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

بالاخره انتظارها برای انتشار نسخه پایدار لاراول ۵ سررسید و این مهم تو هفته پیش اتفاق افتاد و خب مثل تغییر از نسخه ۳ به ۴، این نسخه هم تغییرات بنیادینی رو دربرداشته که جای صحبت درموردش بسیاره و ان شاءالله در پست‌های آینده به اونها اشاره می ‌کنم و یا دوستان دیگه درباره‌ش صحبت می‌کنن.

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

meetup-5

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

خوش باشد.

ساخت تصاویر بند انگشتی به وسیله لاراول

سلام

اگر طراح وب بوده باشید قطعا با این مشکل دست به گریبان بوده‌اید که حجم تصاویری که می‌خواهید در صفحه وبتان استفاده کنید بسیار زیاد است و این به خودی خود باعث کندی بارگذاری صفحه وب همچنین کاهش بازدید وب سایتتان خواهد بود. خب برای این کار چندین راه حل وجود دارد، ساده‌ترین راه حل و البته مشکل‌ترینشون اینه که تمام عکس‌ها را به سایزهای مختلف Resize کنیم. البته این مورد تو سایت‌ها با محتوای استاتیک به صرفه تره ولی فرض کنید یه وبسایت با حداقل ۵ پست در روز و با حداقل ۲ تصویر برای هر پست. خب این از حوصله طراح‌وب خارجه که این همه حجم تصاویرو روزانه بخواد resize کنه.

یه راه حل دیگه اینه که بیاییم به صورت اتوماتیک تصاویرمونو به وسیله اسکریپت resize کنیم. که این خودش نیازمند برنامه‌نویسی و محاسباته(هر چند اندک). با زبان PHP به راحتی میتونیم این مهم رو پیاده سازی کنیم.

کاری که تو این مطلب می‌خوام به شرحش بپردازم نوشتن تابعی برای resize کردن تصاویر در لحظه به وسیله فریمورک محبوب لاراول و پکیج دوست‌داشتنی intervention/image ـه. خب شروع کنیم به کار:

نصب پکیج intervention/image:

خب نیازمندی‌های این پکیج به این ترتیبه:

  • php >= 5.3
  • Fileinfo extension
  • GD lib >= 2.0 یا Imagic PHP extension >= 6.5.7

ابتدا نام پکیج و نسخه مورد نیازمونو در فایل composer.json در قسمت require اضافه می‌کنیم:

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

بعد از اون فایل config/app.php را باز کرده و خطوط زیر را به ترتیب در آرایه‌های providers  و aliases  اضافه می‌کنیم:

و

ایجاد کنترلر کار با تصاویر و متد‌ تغییر سایز تصاویر:

 کد زیر دربردارنده کنترلر و متد ایجاد تصاویر بندانگشتی با سایز‌های دلخواهه که توضیحات به صورت کامنت در کد قرار داره:

 

تعریف  Route برای دسترسی به متد:

برای دسترسی به متدمون و فراخونی اون از هر جای اپلیکیشن نیازمند تعریف یک مسیر یا Route هستیم. برای اینکار فایل routes.php را باز کرده و مسیر جدیدی تعریف می‌کنیم:

 ایجاد تصاویر بندانگشتی:

در مرحله آخر می‌رسیم به استفاده از اسکریپتمون. برای این کار فرض کنیم ما تصویری داریم با این آدرس: http://site.com/images/image1.png که دارای سایز ۱۳۶۰x768ـه و ما میخواهیم تصویری با پهنای ۲۰۰ بسازیم و میخواهیم که ارتفاع تصویر هم به نسبت پهنا تغییر کنه. پس فقط کافیه آدرس زیر رو تو هر جای اپلیکیشن( چه کنترلرها و چه داخل کدهای html) صدا بزنیم:

که در صورت عدم وجود تصویر اصلی، تصویری با رنگ خاکستری روشن و به سایز ۲۰۰x200 ایجاد میشه و در صورت وجود تصویر اصلی، تصویری بندانگشتی به سایز ۲۰۰x113 پیکسل ایجاد میشه. در صورتی که بخواهیم با  ارتفاع دلخواه خودمون تصویر ساخته بشه کافیه پارامتر h را به تابع route بدیم.

راهنمایی:

برای نصب اکستنشن در php کافیه در اوبونتو دستور زیر رو بزنیم:

 

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

فقط یادتون باشه که بعد از اینکار باید apache را restart یا  reload کنید، اونم با این دستور:

موفق باشید.

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

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

خب برای این کار تو لاراول باید یه سری تنظیمات انجام بدیم که خیلی راحته. اگر دایرکتوری 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 قابل دسترسیه ولی من خودم دوست دارم از نسخه پایدار استفاده کنم، پس منتظر می‌مونم.