<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های مهرداد سیفی</title><link>https://virgool.ir/feed/@mehrdad.seyfi</link><description>.علاقه مند به توسعه اپلیکیشن ها موبایل و سمت سرور..عاشق لاراول</description><language>fa</language><pubDate>2026-11-11 14:22:36</pubDate><image><url>https://files.virgool.ir/upload/users/30394/avatar/DsxBRm.png</url><title>مهرداد سیفی</title><link>https://virgool.ir/@mehrdad.seyfi</link></image><item><title>زندگی فریلنسری</title><link>https://virgool.ir/@mehrdad.seyfi/زندگی-فریلنسری-puy6wbwrifus</link><description>امروز بعد حدود شیش ماه تصمیم گرفتم از زندگی فریلنسری براتون بنویسم.قبل اینکه فریلنسر بشم در یک شرکت آموزشی کار میکردم..کار که چه عرض کنم مگس پرانی میکردم پروزه میگرفتم از بیرون انجام میدادم و برای مگس پرانی هایم هم پول میگرفتم ...کم کم حس کردم اخلاقن درست نیست..سو استفاده از اعتماد مدیران.. خلاصه استعفا نوشتم و به شکل کاملا عجیبی درامدم به صفر رسید در ماه...حالا هر چقدر کار کنم پول میگیرمدر کل زندگی فریلنسری به دو بخش تبدیل میشه بخش های جذاب و بخش های ازار دهنده1-بخش های جذاب:خب از میز پر خوراکی و شلوار راحتی براتون بگم تا PS4  و غذایی اماده و.... و اینکه از ترافیک و 100 البته از مترو راحت شدنم.کسی بهم دستور نمیده ..هر تایم بخوام میخوابم هر تایمی بخوام بیدار میشم.وسط هفته میرم مسافرت اخر هفته کار میکنم و.....2-بخش های ازار دهنده:چیزی به اسم حقوق نداریم...صفر... باید کار کنی باید علاوه بر کار با غولی به نام تنبلی بجنگی..جنگ بسیار سخت..مهم ترین بخشش همینه چون دشمنت اگر پیروز بشه تو رو نمیکشه و...بلکه خوابی اروم بازی های کامپیوتری و غذا ها زیاد و حس راحتی بهت میده....فک کنم جز معدود نبرد هایی که ادم دوس داره درش ببازه...صبح ها بهت میگه کارفرما کاریت نداره پروؤه دیرتر بشه پس بخواب..عصر های با ps4  بهت چشمک میزنه..هوای رو بگوووووو  اصلا میشه هوای بهار و زیبا...خلاصه امیدوارم در این جنگ نابرابر پیروز بشیدتوصیه ها:1-حتما ساعات کاری تون رو یاداشت کنید و هدف گذاری کنید2-حتما صبح زود پاشید3-حتما تفریح کنید و اخر هفته ها کلا کار تعطیل کنید4-زمان هایی به کسب کارتون و پیشرفتش فکر کنید5-از زندگی زیبا فرلنسری لذت ببرید</description><category>مهرداد سیفی</category><author>مهرداد سیفی</author><pubDate>Sun, 19 Apr 2020 06:52:40 +0430</pubDate></item><item><title>اپلیکیشن های هیبرید</title><link>https://virgool.ir/@mehrdad.seyfi/اپلیکیشن-های-هیبرید-l0ctiys00tj3</link><description>  اپلیکیشن های هیبرید اصلا چی هست؟برای توسعه اپلیکیشن ها موبایل ما دو راه داریم که به نظر من اگه بگیم سه راه بهترهاول اینکه بریم و به صورت کامل اندروید استودیو رو نصب کنی یا xcode و بشینی به زبان های جاوا و یا swift  و.. کد بزنی و….یا اینکه  به صورت html , js  کد بزنی و در اندازه مو بایل منتشر کنی….امروز میخام بدون جبهه گیری  مزایا و معایب هر کدوم رو از نظر خودم براتون بگمNative: خب این مدل توسعه مزایا و معایبش زیاده  از مزایاش میشه به سرعت خوب و امکانات زیاد کتابخانه ها انیمیشن ها و… نام برد  و البته معایبشم کم نیست اول اینکه اگه اپلییکیشن شما سرور ساید هم باشه باید سمت سرور کد زنی کنید و برای هر دو پلتفرم اندروید و ای او اس کد بزنید که کلی زمان بره و برای عیب یابی هم باید ورژن بدید و ورژن رو در مارکت ها منتشر کنید و اینکه در حال حاضر مارکت ها هم در انتشار اپ ها اذیت میکنند و هم هزار ماشالله حق کمسیون خوبی میگیرین از فروش اپ ها نمونه اش همین پاک کردن تلگرم طلایی و پاک شدن اپ های ایرانی از ای او اس ها…hybrid :این مدل توسعه خیلی شبیه به طراحی وب سایت استمعایبش میشه به کم بودن کتابخونه ها کندی.. بستگی شدید به اینترنت.و زشتی خاص و مقداری محدودیت در استفاده از منابع تلفن همراه مثل دوربین  و  موقعیت مکانی و…..و صد البته وابستگی به مرورگرهااز مزایاش هم ازادی مطلق میشه نام برد…مارکت نمیخاد…کمیسیون نمیخاد…انتشار هر لحظه..عیب یابی در لحظه ….چند روز پیش بود مطالبی میخوندم که مارکت های بزرگ مثل اپل و گوگل میترسن که با رشد این گونه اپلیکیشن ها درامد هاشون به شدت کاهش پیدا کنه…از نمونه فریم ورک ها مناسب این کار میشه به خود بوت استرپ و یاhttps://onsen.io/نام بردمنبع</description><category>مهرداد سیفی</category><author>مهرداد سیفی</author><pubDate>Sat, 08 Jun 2019 15:53:17 +0430</pubDate></item><item><title>بلایی به نام سایت های انجام پروژه برای برنامه نویسان</title><link>https://virgool.ir/@mehrdad.seyfi/بلایی-به-نام-سایت-های-انجام-پروژه-برای-برنامه-نویسان-cafg5jgvlp11</link><description>امروز میخام با یه مشکل که خودم چندوقتیه باهاش درگیریم با شما صحبت کنمچند وقت پیش رفتم دندون پزشک و برای یک ساعت کار مبلغ 500 هزار تومان ازم گرفت..خوب درسته ایشون درس خونده و تلاش کرده و حق شه ...خب گذشت تا با سایت های انجام پروژه اشنا شدملیست پروژه ها رو دیدم و باور نید اول فکر میکردم قیمت ها به تومان هولی ریال بود100 هزار تومن برای یک سایت ....خداایااامن یک لیست از درخواست های کارفرما به صورت مثال برای شما می ذارم ببنید توضیحات پروژه1. مجهز کردن تنظیمات مدیریت به ورود دو مرحله ای گوگل google aut2. وصل کردن اسکریپت درگاه خودمون داریم (به سایت که کاربر خرید میکنه نام کاربریش تمدید بشه)3. دریافت اتوماتیک فیلم و سریال ها با دادن ای دی IMDB4. اضافه کردن قسمتی در مدیریت پنل برای اضافه کردن کیفیت های سریال و فیلم ها5. آپدیت شدن اتومات روزانه 250 فیلم برتر دنیا و 100 فیلم برتر تاریخ آمریکا6. اصلاح قسمت پرفروش ترین فیلم ها و آپدیت هفتگی این قسمت7. رسپانسیو کردن قالب8. اضافه کردن بخشی در مدیریت برای مدیریت کاربران9. کانفیگ لینک های دانلود به دو صورت رایگان و سرعت بالا و وصل کردن آن به سرور دانلود10. آپدیت کردن نمره منتقدین و میانگین رای و امتیاز IMDB11. رفع مشکل کاندیدای اسکار و برندگان اسکار در پست های فیلم و گلدن گلوب12. اضافه کردن کامنت های کاربران در سایت در زیر پست ها با طراحی جدید13. اضافه کردن آپلود عکس آواتار14. وصل کردن برنامه mtn جهت گرفتن اسکرین شات های فیلم به صورت اتومات15. باگ گیری اسکریپت خیلی مهمخب هزینه پیشنهادی ایشون 500 هزار تومن بود...خداییش ما برنامه نویس ها چنان بلایی سر خودمون اوردیم که کسی دیگه بهمون رحم نمیکنههر روز باید مطالعه کنیم خودمون رو اپدیت نگه داریم که اخرش این پول ها رو بگیریمشدیم برده این سایت های انجام پروژه و کارفرماهاش...واقعا تا دیر نشده باید فکری به حال خودمون کنیم.....</description><category>مهرداد سیفی</category><author>مهرداد سیفی</author><pubDate>Sun, 14 Apr 2019 03:01:45 +0430</pubDate></item><item><title>اعتبار سنجی فرم ها در لاراول</title><link>https://virgool.ir/laravel-community/اعتبار-سنجی-فرم-ها-در-لاراول-yml2gdmcyvna</link><description> دوستان امروز می ریم سراغ اعتبار سنجی فرم ها در لاراولخب اصلا اعتبار سنجی چی هست؟اعتبار سنجیاعتبار سنجی به شکل خودمونی یعنی ورودی ها کاربر در فرم رو چک کنیم که درست باشه ...این تکه جمله درست باشه خیلی نکات داخلشه..درست بودن بستگی به مکانش داره..مثلا درست بودن یک شماره موبایل در فرم ثبت نام یعنی چی؟؟؟یعنی 11 رقم باشه...اولش 09 باشه و....درست بودن پسورد یعنی چی؟؟؟ یعنی بیشتر از 6 کلمه باشه ... حروف بزرگ و کوجک باشه داخلش و از همه مهم تر این موارد خالی ارسال نشه..اعتبار سنجی در لاراولخب بریم سراغ کد دیدن  class TestController extends Controller {&#xA;   // public function InputFromUser(Request $request){ &#xA;   $validatedData = $request-&gt;validate([ &#39;mobile&#39; =&gt; &#39;required|numeric|min:11&#39;, &#xA;                                                &#39;password&#39; =&gt; &#39;required&#39;, ]); &#xA;                                                }&#xA;                                                 } به ساختار بالا نگاه کنید در کد بالا ما نوشته ایم کهموبایللازمه حتما باید باشهعدد باشه حتماحداقل 11 رقم باشهدوستان دقت کنید تابع مواردی که بخواهید چک کنید رو باید کنار همون شروط و باید جدا کننده(( | )) جدا کنید از همبریم سراغ چند شرط مهم که خیلی کاربردی هم هستندbailاینو اولشون می ذاریم میگه اگر شرط اول مشکل داشت دیگه بقیه شرط ها رو چک نکن و خطا بدهbetween:min,maxاین شرط میگه که بین این دو عدد بود اکی نبود که خطا بدهdigits_between:min,maxاین شرط میگه که تعداد ارقام رو چک می کنمemailحتما باید ایمیل باشهimageبرای اپلود فایل عکس کاربرد داره که فقط فایل با پسوند های jpeg, png, bmp, gif, svg را قبول می کندunique:table,column,except,idColumnاین چک برای یونیک بودن کاربرد دارد به طور مثال شماره موبایل فرد تکراری است با این کار به راحتی می توان به کاربر خطا داد دیگر لازم نیس کوئری نوشت دقت کنید نام جدول و ستون لازم استلاراول برای این بخش متد های دیگری را نیز امده کرده است که شما میتوانید با توجه به نیار خودتان از انها استفاده کنید.منبع</description><category>مهرداد سیفی</category><author>مهرداد سیفی</author><pubDate>Wed, 06 Feb 2019 14:42:26 +0330</pubDate></item><item><title>ورودی از کاربر در لاراول</title><link>https://virgool.ir/laravel-community/ورودی-از-کاربر-در-لاراول-kbhf4zhvjd8v</link><description>در این بخش می خواهیم ورودی های کاربر را بررسی کنیمتمام ورودی های لاراول همه در یک شی از جنس Illuminate\Http\Requestمی باشدبه طور مثال برای استفاده کردن کردن از این شی در کنترلر های خودمان می بایست مشابه شکل عمل کنیمclass TestController extends Controller&#xA;{&#xA;    //&#xA;        public function InputFromUser(Request $request){&#xA;            //Used Request object&#xA;            }&#xA;            }حال ما با استفاده همین کلاس جلو میریم تا کم کم با تکنیک ها و اصول کار با ورودی های کاربر آشنا بشیماگر با زبان PHP آشنا باشید که اگه بخواهید لاراول بخوانید باید آشنا باشید برای گرفتم یک ورودی GET به اسم username میبایست به شکل زیر عمل می کردیم   $username=$_GET[&#39;username&#39;];ولی در لاراول کار به نحو دیگر و با استفاده از شی ریکوست انجام میشه1- درخواست Getخوب برای گرفتن ورودی Get باید از کد دستوری زیر استفاده کنیمclass TestController extends Controller&#xA;{&#xA;//&#xA;   public function InputFromUser(Request $request){&#xA;           //GET Request&#xA;                   $username=$request-&gt;get(&#34;username&#34;);&#xA;                          echo $username;&#xA;                            }&#xA;                            }با استفاده از کد بالا ما یک متغیر ورودی را با اسم username را گرفته و در متغیری به همین نام می ریزیم2-درخواست POSTمرحله بعدی برای گرفتن ورودی از کاربر با متد Post استclass TestController extends Controller&#xA;{&#xA;  //&#xA;     public function InputFromUser(Request $request){&#xA;          //GET Request&#xA;               $username=$request-&gt;get(&#34;username&#34;);&#xA;                    echo $username;&#xA;          //POST Request Method&#xA;          $password=$request-&gt;post(&#34;password&#34;);&#xA;            }&#xA;            }در تکه کد بالا ما پسورد را به متد POST از کاربر در یافت کرده ایم و می توانیم پردازش های خودمان را روی ان انجام بدهیم3- ارسال متغیر در URL پردازش آندوستان اگر یادتون باشه گفتیم که میشه در URL نیز متغیر پاس داد و روی اون کار کرد برای این کارRoute::get(&#39;user/{id}&#39;, &#39;UserController@update&#39;);در کد بالا id یک متغیر است که در URL نهان شده و همزمان کاربر ورودی نیز داده است!!به طور مثال ادرس ارسالی به شکل زیر استhttp://example.cm/user/185?username=mehrdadدر URL بالا ما یک ID با مقدار 185 و یک ورودی با با مشخصه username ارسال کرده ایمبرای پردازش این دو همزمانclass UserController extends Controller&#xA;{&#xA;public function update(Request $request, $id)&#xA;    {&#xA;           //&#xA;              }&#xA;              }4- نکات کاربردیالف- فکر کنید شما می خواهید بررسی کنید که ورودی کاربر از چه نوع است POST،GET،..برای این کار که بررسی کنیم POST هست یا نه از تکه کد زیر استفاده میکنیم$method = $request-&gt;method();&#xA;if ($request-&gt;isMethod(&#39;post&#39;)) {&#xA;   //&#xA;   }ب- شاید شما بخواهید که URL ارسالی را بررسی کیند        $url = $request-&gt;url();ج-شاید شما بخواهید که محدودیت و یا متغیر خاصی را از ورودی دریافت نماییدنکته: متد های زیر خروجی شان به صورت آرایه استهمه ورودی ها        $url = $request-&gt;all();می خواهید یک متغیر را نشان ندهید       $password = $request-&gt;except(&#39;password&#39;);در کد بالا پسورد نمایش داده نمی شود و مابقی ورودی ها دریافت خواهد شدمتد ها و توابع زیاد دیگر دارد که در صورت نیاز می توانید انها رابررسی کنیدمنبع</description><category>مهرداد سیفی</category><author>مهرداد سیفی</author><pubDate>Tue, 05 Feb 2019 11:17:17 +0330</pubDate></item><item><title>نسخه موبایل وب سایت آپ رایز</title><link>https://virgool.ir/@mehrdad.seyfi/نسخه-موبایل-وب-سایت-آپ-رایز-dr0fjjw0enym</link><description>سلام بعد از کلی بحث و بررسی با تیم مدیریت اپ رایز تصمیم گرفتیم که وب موبایل سایت رو منتشر کنیمدلیل این بررسی این بود که اپ رایز اولین سامان ه انلاین اسانسور و پله برقی هم اپلیکیشن موبایل در دو پلتفرم IOS و اندروید داشت و هم یک وب اپلیکیشن برای ثبت سفارشات از سایت...اخر هم من تسلیم دوستان شدم و با علاقه زیاد به سمت طراحی این بخش رفتم در این ابتدا وب سایت شناسایی میکنه فردی که وارد شده از موبایل استفاده میکنه یا کامپیوتر بعد از اون صفحه را با توجه به دستگاه فرد مورد نظر بهش ارایه می ده.برای این کار می بایست تک تک صفحه ها رو دوباره با ظاهری شبیه به اپلیکیشن طراحی می کردیم که خداروشکر با موفقیت نسبی رو به رو شدیمبه قول دوستان یک جور اپلیکیشن هیبرید شده الان و با یک وب ویو میشه تبدیل به اپلیکیشن کرد.در نوشتن این پروژه از فریم ورک قدرتمند لاراول استفاده کردم که خیلی کمکم کرد </description><category>مهرداد سیفی</category><author>مهرداد سیفی</author><pubDate>Sun, 03 Feb 2019 16:43:27 +0330</pubDate></item><item><title>نکات کوتاه در مورد Blade در لاراول</title><link>https://virgool.ir/@mehrdad.seyfi/نکات-کوتاه-در-مورد-blade-در-لاراول-qqarbpoizfrb</link><description> لاراول برای بخش view  که سه بخش MVC خیلی تاکید داره که از Blade استفاده کنیم..خیلی هم خوبه…بذارید یکم باهم بررسی کنیم چرا ما هم از blade  و امکاناتاش استفاده کنیم خوبهمن چندتا از خوبی های blade  رو می نویسم که خودم استفاده می کنم۱-رعایت اصول MVCاولین بار که با این دوستمون آشنا شدم با خودم گفتم ملت چه بیکار هستنا…کم کم که پروژه ها بزرگ تر شد حرفمو پس گرفتم..MVC به قول اهل دین و تقوا مستحب ه..یعنی اگر استفاده هم نکنی چیزی نمیشه ولی استفاده ازش خیلی کمک می کنه ..به نظرم زمانی به داد آدم می رسه که باگ رخ بده اون موقع راحت می ری سراغ اصل ماجرا..از مزایا دیگه شم اینه که توسعه پروژه راحت تر میشه ۴-قالب سازیبا blade  می شه مثلا فوتر و هدر و ثابت گرفت در همه صفحه ها به تغییرات مقادیر دیگه پرداختبرای این کار به کد زیر دقت کنیدبه طور مثال من یک فایل می سازم به اسم   layout.blade.phpاین فایل قالب اصلی سایت منو تشکیل می ده. &lt;html&gt;&#xA;&lt;head&gt;&#xA;&lt;title&gt;App Name &lt;/title&gt;&#xA;&lt;/head&gt;&#xA;&lt;body&gt;&#xA;&lt;div class=&#34;container&#34;&gt;&#xA;@yield(&#39;content&#39;)&#xA;&lt;/div&gt;&#xA;&lt;/body&gt;&#xA;&lt;/html&gt; به قسمت @yield(&#39;content&#39;) دقت کنید این بخش همان بخشی است که دیگر صفحه هات باید پر کنند.  @extends(&#39;layouts.app&#39;)&#xA;@section(&#39;content&#39;)&#xA;This is my body content.&#xA;@endsection الان اول فایل می گیم از کدوم قالب استفاده کن بعد هم می گیم چی جای @yield(&#39;content&#39;) بذاره۳-کمک های لاراولدر داخل Blade یکسری تکه کد ها هست که به ما خیلی کمک می کنه که کد هامون تمیز تر باشه و مقداری در View  تغییرات بدیم..درسته به مقداری اصل MVC رو مورد اذیت و آزار قرار می دهد ولی اگر نباشه خودمون اذیت می شیممن تعدادی از مهم ترین این کد ها رو به شما معرفی میکنم.۱- اول می گیم که چطور یک روت یک ویو را برگردونه Route::get(&#39;/showview&#39;, function () {&#xA;return view(&#39;child&#39;);&#xA;}); هر کس بره آدرسexample.com/showviewاون ویو رو نمایش می ده۲-نمایش و استفاده از متغیر پاس داده شده از کنترلرفکر کنید شما یک متغیر از کنترلر به ویو خودتان پاس می دهید برای نمایش اون باید از کد همانند زیر استفاده کنید(متغیر ارسالی ما slot) است &lt;div class=&#34;alert alert-danger&#34;&gt;&#xA;{{ $slot }}&#xA;&lt;/div&gt; ۳-عبارت های شرطیبرای استفاده از if در blade خودمان  @if (count($records) === 1)&#xA;I have one record!&#xA;@elseif (count($records) === 1)&#xA;I have multiple records!&#xA;@else&#xA;I don&#39;t have any records!&#xA;@endif ۴-چک کردن متغیر هاچک می کنیم متغیر تعریف شده است یا خیر  @isset($records)&#xA;// $records is defined and is not null...&#xA;@endisset&#xA;@empty($records)&#xA;// $records is &#34;empty&#34;...&#xA;@endempty ۵-استفاده از switchبرای استفاده از switch @switch($i)&#xA;@case(1)&#xA;    First case...&#xA;@break&#xA;@case(2)&#xA;    Second case...&#xA;@break&#xA;@default&#xA;    Default case...&#xA;@endswitch  علاوه بر اظهارات شرطی، Blade دستورالعمل های ساده ای برای کار با ساختار حلقه PHP فراهم می کند.هر کدام از این ها مثل php هستند  @for ($i = 0; $i &lt; 10; $i++)&#xA;    The current value is {{ $i }}&#xA;@endfor&#xA;@foreach ($users as $user)&#xA;    &lt;p&gt;This is user {{ $user-&gt;id }}&lt;/p&gt;&#xA;@endforeach&#xA;@forelse ($users as $user)&#xA;    &lt;li&gt;{{ $user-&gt;name }}&lt;/li&gt;&#xA;@empty&#xA;    &lt;p&gt;No users&lt;/p&gt;&#xA;@endforelse&#xA;@while (true)&#xA;    &lt;p&gt;I&#39;m looping forever.&lt;/p&gt;&#xA;@endwhile یکی دیگه از نکات مثبت blade متغیر حلقه و یا Loop Variable است به کد زیر دقت کنید  @foreach ($users as $user)&#xA;@foreach ($user-&gt;posts as $post)&#xA;@if ($loop-&gt;parent-&gt;first)&#xA;    This is first iteration of the parent loop.&#xA;@endif&#xA;@endforeach&#xA;@endforeach loop یک متغیر حلقه است که یکسری پراپرتی داره که الان معرفی میکنم$loop-&gt;indexشماره ایندکس حال حلقه رو میدهد$loop-&gt;iterationتکرار حلقه تا الان رو می گه$loop-&gt;remainingتعداد تکراری که مانده رو میگه$loop-&gt;countتعداد کل ارایه رو می گه$loop-&gt;firstاولین عضو رو می گه$loop-&gt;lastاخرین عضو ر میگهاین ها مهم ترین ها بودند ولی blade به همین جا ختم نمیشه و مسایلی مثل احراز هویت و.. هم داره که میشه بررسی کردمنبع</description><category>مهرداد سیفی</category><author>مهرداد سیفی</author><pubDate>Sun, 03 Feb 2019 12:03:10 +0330</pubDate></item><item><title>لاراول روتینگ (Laravel – Routing)</title><link>https://virgool.ir/@mehrdad.seyfi/لاراول-روتینگ-laravel-routing-ymwsgkw7y3z5</link><description>لاراول روتینگ (Laravel – Routing) در لاراول همه درخواست در فایل روتنیگ بررسی و به کنترلر ها و .. ارسال می شود. در این قسمت ما می خواهیم به مبحث روتینگ در لاراول بپردازیم.در لاراول ما سه دسته بندی برای روتینگ داریم.Basic RoutingRoute parametersNamed RoutesBasic Routingاین نوع روتینگ ساده ترین نوع روتینگ می باشد که به لاراول می گوید این درخواست را به کدام کنترلر پاس بدهد یا به صورت مستقیم یک ویو را نمایش بدهددر نمونه زیر یک روتینگ ساده برای نمایس ویو wellcome  را مشاهده می کنیدRoute::get (&#39;/&#39;, function () {&#xA; return view(&#39;welcome&#39;);}); در عکس زیر شما مکانیزم روتینگ را مشاهده می کنید ۱- درخواست داده می شود به آدرس (‘/’)  یعنی همان خانه و صفحه آغازی۲- فایل روتینگ تابع را اجرا میکند که اگر دقت کنید یک ویو برگشت می دهد.۳-در اخر نیز ویو خوش آمد گویی نمایش داده می شود. Route Parametersزمانی شما لازم دارید در وب اپلیکیشن ها و یا در وب سرویس های خود REST API  ها از کاربر متغیری در URL از  او دریافت کنید از روتینگ پارامتر استفاده کنیدمانندhttp://example.com/ID/891213 برای اینکار  از روتینگ پارامتر استفاده کیند Route::get(&#39;ID/{id}&#39;,function($id) {&#xA;echo &#39;ID: &#39;.$id;&#xA;}); حال اون عدد ۸۹۱۲۱۳ به عنوان پارامتر پاس داده می شود که میتوان از ان در پردازش هایمان استفاده کنیم مثل واکشی داده از دیتا بیس و..Named Routesاین کار برای دسته بندی مسیر ها استفاده می شود تا بتوان بروی دسته ها محدویدت و یا ویژگی ها را افزودRoute::get(&#39;user/profile&#39;, &#39;UserController@showProfile&#39;)-&gt;name(&#39;profile&#39;); در روت ها می توان از انواع متد های رایج در HTTP  استفاده نمود Route::get($uri, $callback);&#xA;Route::post($uri, $callback);&#xA;Route::put($uri, $callback);&#xA;Route::patch($uri, $callback);&#xA;Route::delete($uri, $callback);&#xA;Route::options($uri, $callback); ویا از دو نوع متد به شکل همزمان Route::match([&#39;get&#39;, &#39;post&#39;], &#39;/&#39;, function () {&#xA;//&#xA;});&#xA;Route::any(&#39;foo&#39;, function () {&#xA;//});</description><category>مهرداد سیفی</category><author>مهرداد سیفی</author><pubDate>Sun, 03 Feb 2019 01:05:45 +0330</pubDate></item><item><title>چرا باید از لاراول در پروژه های خود استفاده کنیم؟</title><link>https://virgool.ir/laravel-community/چرا-باید-از-لاراول-در-پروژه-های-خود-استفاده-کنیم-xhqakwrak7qt</link><description>چرا باید از لاراول در پروژه های خود استفاده کنیم؟در این قسمت می خواهیم در مورد چرایی استفاده از لاراول در پروژه هامون بگیمبذارید قبل از ورود به لاراول اول در مورد چرایی استفاده از فریم ورک ها صحبت کنیم.ما به این خاطر از فریم ورک ها استفاده می کنیم چون که یک فریم ورک مثل لاراول این اطمینان را به توسعه دهنده و همکارانش می دهد که دارن طبق قوانین کسب و کار و استاندارد ها کد می زنیم و کد های ما قابل توسعه و نگه داری هستند.این امکان رو به ما می دن که دوباره چرخ رو اختراع نکنیم..منظورم چیه از  این حرف؟؟؟فکر کنید  شما می خواهید یک ساختار برای احراز هویت و ورود کاربران درست کنید.خب کلی داستان دارین با این قسمت  از جمله بحث های امنیتی ،تغییر رمز ، فراموشی ، اعتبار سنجی در هر درخواست و…. حالا فکر کنید شما با اجرا چند دستور می توانید یک مجموعه کامل ورود و احراز هوست کاربران را داشته باشید که هر چند مدت یک بار آپدیت هم می شود اتفاقا….چه عالی!!!مزیت دیگر این بخش هم  نگه داری و توسعه پذیری  راحت و اینکه بقیه هم این فریم ورک رو بلد هستند و لازم نیس به افراد دیگر فریم ورک شخصی روتون رو توضیح بدهید.حالا میریم سراغ اینکه چرا لاراولبه نمودار زیر توجه کنید. این نمودار حجت رو بر شما و ما تمام می کند.در حال حاضر پر استفاده ترین فریم ورک php  لاراول است.لاراولهسته‌ی توسعه‌پذیر و سریعمسیردهی (routing) ساده و تمیزسیستم تایید هویت کاربری خودکار (Authentication)سیستم ACL حرفه‌ای و پیشرفتهاستفاده از مفهومی به نام Eloquent برای برقراری ارتباط بین مدل و پایگاه دادهدارای کلاس‌ها و توابع بسیار متنوعشیءگرایی بسیار حرفه‌ای و منسجمپشتیبانی همزمان از چندین بانک اطلاعاتی (SQL Server, MySQL, PostgerSQL, SQLight, Oracle)استفاده از موتور قالب Blade جهت طراحی بسیار ساده‌ی Viewرابط و ORM بسیار سادهنصب و اجرای کاملا ساده با استفاده از Composerپشتیبانی از Unit Testوجود صف‌ها (Queue) و کارها (Jobs) برای اجرای فعالیت‌های طولانیانجمن بسیار فعال جهت پاسخگویی به سوالاتمنابع آموزشی بسیار فراوانسطح امنیتی بسیار بالادلابل بالا برای استفاده از لاراول کافی است ولی لاراول دلیل بسیار زیادی برای استفاده دارد که در طول آموزش ها به انها اشاره خواهیم کرد.</description><category>مهرداد سیفی</category><author>مهرداد سیفی</author><pubDate>Sat, 02 Feb 2019 17:46:46 +0330</pubDate></item><item><title>برنامه نویسی S.O.L.I.D</title><link>https://virgool.ir/coderlife/برنامه-نویسی-solid-rcdtqpkc3gcv</link><description> Open/Closed PrincipleLiskov Substitution PrincipleInterface Segregation PrincipleDependency Inversion Principlesolid  مخفف چهار اصل بالا است که کی از اصول برنامه نویسی شی گرا می باشد.خب بریم سراغ معرفی این اصول:Single Responsibility Principleخلاصه این اصل به این معنی است که هر کلاس فقط و تنها باید یک وظیفه داشته باشد و برای وظایف دیگر باید از کلاس های دیگر استفاده کند.به طور مثال فرض کنید که ما یک کلاس Customer  داریم که وظیفه اعتبار سنجی مشتریان و درج در دیتا بیس را دارد.اگر ما در این کلاس وظیفه لاگ کردن هم قرار بدهیم این اصل را زیر پا گذاشته ایم پس یک کلاس loger  می سازیم و وظیفه لاگ کردن را به اون کلاس می سپاریمکلاس Customer بالا کارهایی را انجام می دهد که قرار نیست انجام بدهد. کلاس Customer باید اعتبارسنجی داده های مشتری را انجام بدهد، لایه دسترسی به داده های مشتری را صدا بزند، اما اگر به بلاک catch نگاه کنیم این کلاس همچنین فعالیت های LOGGING را نیز انجام می دهد. در یک جمله ساده این کلاس مسئولیت های زیادی دارد. classCustomer  {  publicvoidAdd()  {  try  {  //Databasecodegoeshere  }  catch(Exceptionex)  {System.IO.File.WriteAllText(@&#34;c:\Error.txt&#34;,ex.ToString());  }  }  } Open/Closed Principleخلاصه این است بدین معنی است که کلاس باید نسبت به تغییرات بسته باشدبه طور مثال بک کلاس خریدار داریم ..بعد ها بر اساس نوع خریدار نقره ای و یا طلایی به آن ها تخفیف می دهیم.ما اجازه نداریم در کلاس اصلی یک شرط بگذاریم و همان جا تخفیف بدهیمباید دو کلاس مشتق شده از کلاس اصلی قرار بدهیم و همانجا تخفیف بدهیمبه بلاک شرطی “IF” در متد “getDiscount” توجه کنید. classCustomer  {  privateint_CustType;  publicintCustType  {  get{return_CustType;}  set{_CustType=value;}  }  publicdoublegetDiscount(doubleTotalSales)  {  if(_CustType==1)  {  returnTotalSales-100;  }  else  {  returnTotalSales-50;  }  }  مشکل اینجاست که اگر ما بخواهیم یک نوع مشتری جدید اضافه کنیم باید یک بلاک شرطی “if” دیگر را به متد “getDiscount” اضافه کنیم، به عبارت دیگر ما نیاز داریم که کلاس Customer را ویرایش کنیم.Liskov Substitution Principleاین اصل مقداری ساده س .اگر کلاس B از C  مشتق بشود.در هر کجای کد ما فرزند را جای پدر قرار بدهیم نباید به ما پیغام خطا بدهدInterface Segregation Principleدر اینتر فیس ها برای جلوگیری از واسط چاق(متد هایی که کاربرد ندارد ولی کاربر باید پیاده سازی کند)فقط متد هایی را نوشت که واقعا کاربرد دارندDependency Inversion Principleکلاس ها نباید به شکل مستقیم بهم ارتباط داشته باشند (راه حل این مشکل می تواند تزریق وابستگی باشد)</description><category>مهرداد سیفی</category><author>مهرداد سیفی</author><pubDate>Sat, 02 Feb 2019 15:26:09 +0330</pubDate></item><item><title>Android Annotations چیست؟</title><link>https://virgool.ir/MobileLab/android-annotations-چیست-q5qoiffyqk1a</link><description> Android Annotationsیک راه حل بسیار عالی برای تمیز نویسی دراندروید استاین کتابخانه بسیاری از کارهای خسته کننده را برای ما جذاب کرده است به تکه کد زیر دقت کنید @Click({R.id.updateBookmarksButton1, R.id.updateBookmarksButton2})&#xA;void updateBookmarksClicked() {&#xA;searchAsync(search.getText().toString(), application.getUserId());&#xA;} این تکه کد جای دو عددبلاک کد set on click را می گیرد.و مزیت دیگری که داره اینه که هر کسی بعد از شما تنها با دید این تکه کد می فهمد جریان چیه…پس چرا از این کتابخانه استفاده نکنیم.. برای استفاده از کتابخانه  دوتا نکته لازم ه که رعایت کنید۱- وابستگی هایش را اضافه کنید buildscript {&#xA;repositories {&#xA;mavenCentral()&#xA;}&#xA;dependencies {&#xA;// replace with the current version of the Android plugin&#xA;classpath &#39;com.android.tools.build:gradle:2.3.0&#39;&#xA;}&#xA;}&#xA;repositories {&#xA;mavenCentral()&#xA;mavenLocal()&#xA;}&#xA;apply plugin: &#39;com.android.application&#39;&#xA;def AAVersion = &#39;XXX&#39;&#xA;dependencies {&#xA;annotationProcessor &#34;org.androidannotations:androidannotations:$AAVersion&#34;&#xA;compile &#34;org.androidannotations:androidannotations-api:$AAVersion&#34;&#xA;}&#xA;android {&#xA;compileSdkVersion 25&#xA;buildToolsVersion &#34;25.0.2&#34;&#xA;defaultConfig {&#xA;minSdkVersion 9&#xA;targetSdkVersion 25&#xA;// If you have different applicationIds for buildTypes or productFlavors uncomment this&#xA;block.&#xA;//javaCompileOptions {&#xA;// annotationProcessorOptions {&#xA;// arguments = [&#34;resourcePackageName&#34;: android.defaultConfig.applicationId]&#xA;// }&#xA;//}&#xA;}&#xA;} ۲- در هر اکتیوتی که می خواهید ازش استفاده کنید باید در منیفست اسم اکتیوتی را به این شکل عوض کنید  &lt;activity android:name=&#34;.Retrofit.ApiActivity&#34;/&gt;;را به این تغییر بدهیم به _ آخرش دقت کنید&lt;activity android:name=&#34;.Retrofit.ApiActivity_&#34;/&gt;;خب بعد از اینها میریم سراغ موارد حفظی..۱-اولین مورد1@EActivity(R.layout.translate) // Sets content view to R.layout.translateاین مورد به راحتی لایوت مورد نظر را به اکتیوتی متصل می کند.۲-وصل کردن ویو ها به اکتیوتی@ViewById // Injects R.id.textInputEditText textInput; @ViewById(R.id.myTextView) // Injects&#xA;R.id.myTextViewTextView result;اگر به مورد اول دقت کنید یک ساده سازی دیگر نیز کرده است اینکه id ویو را با نامش یکی گذاشته و نیازی نیست دوبار R.id.. فلان را بنویسد۳-استفاده از ریسورس ها مثل انیمیشنمی تونید از ریسورس ها مثل استرینگ ها عکس ها و انیمیشن ها هم با یک خط کد استفاده کنید@AnimationRes // Injects android.R.anim.fade_inAnimation fadeIn;۴-به طور مثال می توانید کلیک رو هر چیز را با یک خط کد مدیریت و ایجاد کنید@Click // When R.id.doTranslate button is clicked &#xA;void doTranslate()&#xA; {&#xA; translateInBackground(textInput.getText().toString());&#xA; }۵-اخرین موردی که بررسی می کنیم اجرا بخشی از کد در Thread اصلی و یا در background است@Background // Executed in a background threadvoid translateInBackground(String textToTranslate) {&#xA;String translatedText=callGoogleTranslate(textToTranslate);&#xA;showResult(translatedText);&#xA;} @UiThread // Executed in the ui threadvoid &#xA;showResult(String translatedText)&#xA;{result.setText(translatedText);result.startAnimation(fadeIn);}}در اخر هم کل کد یک اکتیویتی رو قرار می دم که بدونید کجا ها قرار میدیم این annotations ها رو @EActivity(R.layout.translate) // Sets content view to R.layout.translate&#xA;public class TranslateActivity extends Activity {&#xA;@ViewById // Injects R.id.textInput&#xA;EditText textInput;&#xA;@ViewById(R.id.myTextView) // Injects R.id.myTextView&#xA;TextView result;&#xA;@AnimationRes // Injects android.R.anim.fade_in&#xA;Animation fadeIn;&#xA;@Click // When R.id.doTranslate button is clicked&#xA;void doTranslate() {&#xA;translateInBackground(textInput.getText().toString());&#xA;}&#xA;@Background // Executed in a background thread&#xA;void translateInBackground(String textToTranslate) {&#xA;String translatedText = callGoogleTranslate(textToTranslate);&#xA;showResult(translatedText);&#xA;}&#xA;@UiThread // Executed in the ui thread&#xA;void showResult(String translatedText) {&#xA;result.setText(translatedText);&#xA;result.startAnimation(fadeIn);&#xA;}&#xA;}</description><category>مهرداد سیفی</category><author>مهرداد سیفی</author><pubDate>Sat, 02 Feb 2019 15:12:28 +0330</pubDate></item></channel></rss>