بایگانی برچسب: s

منابع یادگیری فریمورک لاراول

نوشته‌شده در توسط .
منابع یادگیری لاراول

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

داکیومنت های خود سایت لاراول

سایت خود لاراول بهترین جا هست که ازش یاد بگیرید. البته میتونید بعنوان مرجع داشته باشیدش و ازش استفاده کنید : https://laravel.com/docs/5.5 و میتونید هر جور که دوست دارید یه نسخه آفلاین ازش تهیه کنید و استفاده کنید ازش

ویدئو های آموزشی لاراکستس

سایت لاراکستس توسط یکی از توسعه دهنده های لاراول به نام جفری وی مدیریت میشه و کورس های آموزشیش بی نظیر هست در مقایسه با ویدئو هایی که برخی از دوستان وطنی ارائه میدن و… آدرس سایت : http://laracasts.com

سایت لاراول نیوز

اکه میخواید از روند تغییرات و اخبار لاراول با خیر باشید سایت لاراول نیوز رو دنبال کنید : https://laravel-news.com

سایت لاراول تریکس

این سایتم کلی تریک لاراولی داره و میتونه به دردتون بخوره، فقط من نمیدونم چرا ایرانیها بیشتر از همه استفاده میکنن از این سایت(الکساش روی ایران ست شده) : http://laravel-tricks.com

سابتهای ایرانی از جمله سایت git.ir هم کلی ویدئو گذاشتن که میتونید دانلودشون کنید اگه به حلال و حروم اعتقاد ندارید 🙂

و کلی منبع دیگه که میتونید با سرچ برسید بهشون

ساختن توابع Helper در لاراول

نوشته‌شده در توسط .

هلپر در لاراول به توابعی گفته میشن که همه جای پروژه بهشون دسترسی داریم بدون اینکه هر بار لودشون کنیم.

لاراول کلی هلپر خوب بصورت آماده داره که خیلی از کارهارو براتون آسون میکنه، مثل کار با آرایه ها، فایل ها، رشته ها، روت ها و یکی از پر کاربرترینشون هم همین dd  خودمون :). شما میتونید هلپر های خودتون رو بصورت دستی هم تعریف کنید و با کمپوزر بصورت خودکار لودشون کنید.

نحوه ساختن فایل Helper در لاراول

همونطور که گفتم هلپر ها تابع هستند پس باید داخل یه فایل نوشته بشن. لاراول هیچ دایرکتوری خاصی برای helper ها در نظر نگرفته و شما میتونید بصورت دلخواه براش جا در نظر بگیرید. من مثلا داخل app/Http/Helpers  رو برای این کار در نظر میگیرم و داخلش فایل main.php  رو قرار میدم.

لود خودکار فایل ها در لاراول با کمپوزر

یکی از کاربردهای باحال کمپوزر جدا از مدیریت نیازمندی ها، همین autoload هست که به شما این امکان رو میده که در ران تایم فایل های دلخواهتون رو توی کدتون لود کنید بدون اینکه اون بالا بنویسید require_once any.php . در پروژه لاراولتون یه فایل دارید به اسم composer.json ، توی این فایل یه key به اسم autoload وجود داره و داخلش میتونید مشخص کنید که چه فایل هایی به autoload اضافه بشن. یه مثال واستون میزنم که کاملا بدونید چی به چیه :

به کمپوزر گفتم که فایل main.php  رو بذار توی autoload. حالا باید به کامپوزر بگیم که فایل های autoload رو از اول بسازه، برای این کار توی روت پروژه این کامند رو اجرا کنید :

حالا main.php  و فانکشن هایی که داخلش تعریف میکنید همیشه در دسترس خواهند بود.

تعریف توابع helper در لاراول

توابع هلپر مثل بقیه توابع هستند فقط باید حواسمون باشه که تابع دیگه ای رو رونوشت نکنیم :

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

 

موفق باشید 🙂

یک ربات ساده تلگرام با لاراول

نوشته‌شده در توسط .

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

تصور غلط در مورد ربات تلگرام

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

ساخت یک ربات خام در تلگرام

عملیات ساخت ربات تلگرام خودش از طریق یه ربات انجام میشه، بات فادر اسم رباتی هست که این کار رو انجام میده و برای دیدن اون میتونید به این آیدی مراجعه کنید : @BotFather، نحوه ساخت ربات با botfather خیلی مشخصه و نیازی به توضیح نیست. بعد از ساخت ربات یه توکن به ربات تعلق میگیره و از این به بعد این توکن بعنوان شناسه ربات شما استفاده میشه. توکن شما یه چیزی شبیه  ۱۲۳۴۵۶:ABC-DEF1234ghIkl-zyx57W2v1u123ew11 هست که توی این نوشته به اختصار از  <token>  برای نشون دادنش استفاده میکنیم.

نحوه ی اهراز هویت ربات توسط تلگرام

همه درخواست های شما به آدرس زیر ارسال خواهد شد :

که  METHOD_NAME  نام متدی هست که قراره در هر درخواست ازش استفاده کنید.

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

  1. دریافت آپدیت ها با ارسال لحظه ای درخواست از طرف شما
  2. تنظیم وب هوک برای دریافت آپدیت بدون ارسال درخواست لحظه ای

در روش اول شما به صورت بروت فورس هر چند لحظه یکبار درخواست ارسال میکنید و پیام های جدیدی ک اومدن رو دریافت میکنید ولی در روش دوم یه وب هوک تنظیم میکنید و هرلحظه که پیامی به ربات اومد اون هوک در اسکریپت شما اجرا میشه و اینجوری دیگ خیلی خوش بحالتونه. چون درخواست ها همون لحظه به دستتون میرسن ولی یه خوبی که روش اول داره اینه که نیازی به داشتن ssl روی هاست نیست ولی روش دوم ssl میخواد.

درخواست  getUpdates ربات تلگرام

در این روش شما offset و limit رو میدید و آپدیت های مورد نظر رو دریافت میکنید. توجه کنید که offset بر اساس آیدی پیام ارسال میشه نه چیز دیگری.

تنظیم  setWebhook برای ربات تلگرام

برای این کار شما باید آدرسی که میخواید هوک روی اون fire بشه رو میفرستید و تلگرام به محض دریافت پیام جدید درخواست رو به این آدرس ارسال میکنه. برای ارسال درخواست هاتون میتونید از افزونه postman برای کروم استفاده کنید که کارتون رو راحتتر میکنه. توجه داشت باشید که برای این کار شما حتما باید گواهینامه ssl داشته باشید و آدرس بصورت https ارسال بشه.

استفاده از پکیج irazasyed/telegram-bot-sdk

اگه توی لاراول دارید کار میکنید میتونید از irazasyed/telegram-bot-sdk استفاده کنید. این پکیج کارتون رو خیلی راحتتر میکنه… بعد از نصب این پکیج میتونید برای تست اون از طریق زیر عمل کنید

ابتدا توی فایل  .env  توکنی که برای ربات دریافت کردید رو بصورت زیر وارد کنید

و توی کدتون هم یچیزی مثل این رو بنویسید

در صورتی که اطلاعات ربات رو دریافت کردید ینی ربات شما درست ایجاد شده است. تنها کاری که الان باید بکنید اینه که یه route رو از csrf protection در بیارید و اون روت رو بعنوان url برای هوکتون در نظر بگیرید و درخواست ها رو هندل بکنید.

 

ساخت custom notification channel در لاراول

نوشته‌شده در توسط .

لاراول برای ارسال نوتیفیکیشن درایور های متنوعی داره که برای کاراتون میتونید ازش استفاده کنید… ولی بعضی وقتا پیش میاد که نیاز دارید چنل خودتون رو داشته باشید، برای این کار باید کانال ارسال خودتون رو بنویسید که خیلی راحته

مثلا در مسیر app  یک فولدر با عنوان channels  بسازید و توش یه کلاس php با اسم دلخواهتون ایجاد کنید. من اسمشو میذارم SmsChannel .

در قسمت do your action عملیاتی که برای ارسال نوتیفیکیشنتون(!) رو که میتونه متنوع باشه رو انجام بدید… مثلا اگه میخواید با استفاده از یه سرویس دهنده خاص اس ام اس ارسال کنید میتونید کلاسهای اون رو ایمپورت کنید و اس ام اس رو ارسال کنید.

مثلا برای ارسال پیامک بصورت زیر عمل کنید :

که آرایه message  از متد های کلاس های نوتیفیکیشن ها ارسال میشه…

برای ارسال نوتیفیکیشن در متد via  در کلاس نوتیفیکیشن  \App\Channels\SmsChannel::class  رو برگردونید… یه چیزی مثل این :

که میتونید از $notifiable  استفاده کنید و ببینید که اس ام اس واسه کاربر ارسال بشه یا نه… مثلا اعتبار کاربریش اجازه ارسال رو میده یا نه.

و متد زیر رو برای ارسال پیام در کلاس مربوط به نوتیفیکیشن بنویسید :

 

ذخیره کردن شکلک ها در MySQL

نوشته‌شده در توسط .

اخیرا که ملت همه ریختن تو شبکه اجتماعی و با شکلک – ایموجی – ها و… سروکار دارن ما هم باید بتونیم کارشون رو راه بندازیم 🙂

کانکشن پیشفرض MySQL لاراول به صورت پیشفرض از کاراکتر ست utf8 استفاده میکنه که نمیتونه شکلک ها رو ذخیره کنه و معمولا با این خطا مواجه میشیم :

برای حل این مشکل کانکشن mysql  در  config/database.php  رو به صورت زیر اصلاح کنید :

و دیتابیس رو ریست کنید. حواستون باشه که از دیتاتون قبلش بکاپ بگیرید…

خطای migrate لاراول ۵٫۴

نوشته‌شده در توسط .

همونطور که میدونید لاراول ۵٫۴ مدتیه که منتشر شده. توی این نسخه، لاراول توی کاراکتر ست پیشفرضش یسری تغییری داده و کاراکتر ست فعلی اون  utf8mb4 هست که قابلیت پشتیبانی از ایموجی ها رو هم داره.  خطایی که هنگام اجرای php artisan migrate  توی MySQL  زیر  ۵٫۷٫۷ باهاش مواجه مشید یه چیزی مثل خطای زیر هست :

برای حل این مشکل توی فایل  AppServiceProvider.php  طول پشفرض رشته رو تغییر بدید…

الان دیگه نباید مشکلی وجود داشته باشه… موفق باشید

 

لاراول ۵٫۴ با قابلیت جدید Automatic Facade

نوشته‌شده در توسط .

حتما با فساد ها در لاراول آشنا هستید… با قابلیت جدید لاراول در نسخه ۵٫۴ شما میتونید توی هوا از یه کلاس شبیه یه فساد استفاده کنید… یه کلاس مثل کلاس زیر تعریف کنید :

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

به کجا داریم میریم ما؟؟؟ :دی

مشکل migrate در لاراول ۵

نوشته‌شده در توسط .

اگه بعد از  php artisan migrate  کردن اررور زیر رو میگیرید :

توی فایل  app\database.php  مقدار  localhost  رو به  ۱۲۷٫۰٫۰٫۱  تغییر بدید… معمولا توی ابونتو همچین مشکلی هست …

nodejs در مقابل php

نوشته‌شده در توسط .

اخیرا مجبور شدم روی یک پروژه چت آنلاین کار کنم که یک موتور چت داره و یک سری ریکوئست رو میگیره و جواب مناسب رو میده…  با php و فریمورک لاراول (♥) و وب سرور آپاچی شروع کردم  برای هرچه بهینه تر شدن موتور از روش comet استفاده کردم که یک درخواست رو تا دریافت درخواست بعدی به تاخیر میندازه و خلاصه به روشی خلاقانه باعث پایین اومدن حجم درخواست ها به سرور و در عین حال real time شدن کامل برنامه میشه. واضحه که با این حجم read و write که توی همچین سیستمی وجود داره، mysql گزینه مناسبی برای مدیریت داده ها نیست و بخاطر همین از همون اول از mongodb بعنوان یک سیستم مدیریت پایگاه داده noSQL استفاده کردم…

تا اینجا یه موتور چت (chat engine) با لاراول و مانگو دارم… برای تست ، ۲۰ کاربر با سشن های مختلف روش فعال کردم که هر کدوم دارن چت میکنن و بیشتره تایم رو هم گوش میکنن و منتظر دریافت پیام طرف مقابلن… با ۲۰ تا کاربر با اینکه منابع نسبتا بالایی از سرور استفاده میشد ولی سرعت جواب ها قابل قبول بود… وقتی تعداد کلاینت های سیستم پایین هست بالطبع تعداد درخواست هایی که برای سیستم میاد هم پایین خواهد بود و مشکلی پیش نمیاد… اما وقتی تعداد کلاینت ها رو ۱۰۰ برابر کردم… بووووم… سیستم ترکید☺

اینجا بود که به ضعیف بودن php و یه وب سرور مثل آپاچی ایمان آوردم… یه چرخی تو اینترنت زدم و مقاله هایی رو خوندم که دقیقا حرف الان من رو تایید میکردن… کم کم با پدیده ای به نام nodejs آشنا شدم… syntax و داکیومنت خوبش باعث شد که سمتش برم و موتور چت رو ببرم روی node…

گرچه تحقبق روی پروژه انقد طولانی شد که شرکت، پروژه رو شکست خورده تلقی کرد و رفتم روی پروژه ی بعدی… ولی به شما پیشنهاد میکنم اشتباه من رو تکرار نکنید و اگه سیستم مشابهی رو برای کارتون نیاز دارید به node بعنوان یک گزینه خوب نگاه کنید… یه مقایسه قشنگه node و php رو هم توی این لینک ببینید. موفق باشید 🙂

 

حل مشکل Warning: putenv() has been… در laravel

نوشته‌شده در توسط .

Warning: putenv() has been disabled for security reasons in /home/yoursite/public_html/vendor/vlucas/phpdotenv/src/Dotenv.php on line 86

اگه ورژن php هاستتون زیر ۵٫۶ باشه این پیام نمایش داده میشه… برای حل این مشکل از قسمت select php version هاستتون اقدام کنید و یا با پشتیبانی هاستتون تماس بگیرید