یادگیری Design Pattern یک بار برای همیشه

مواد لازم:

کمی حوصله

مقداری فکر

اندکی صبر تا انتهای مطلب

من هم مثل شما خسته شدم از این مبحث که فکر می‌کردم هیچ جا هم به کارم نمیومد. مثل محاسبات ریاضی !!

ولی قطعا همه اینها کمک می‌کنن تا مغز ما مسائل پیچیده‌تری رو حل کنه.

نمونه‌هایی که تونستم گیر بیارم:

https://github.com/kamranahmedse/design-patterns-for-humans#-simple-factory

https://github.com/nemanjarogic/DesignPatternsLibrary
توضیحاتش روان و شفاف بود (شاید من در حالت ایده‌آلی برای خواندن بودم!)

https://refactoring.guru
البته خودم نتونستم باهاش ارتباط برقرار کنم. با وجود اینکه تصاویر زیادی داشت و در ابتدا مفید به نظر می‌آمد ولی رهاش کردم چون توضیح زیاد داده بود و من هم زود می‌خواستم به جواب برسم.

https://github.com/DovAmir/awesome-design-patterns
عذر می‌خوام نگفته بودم. بنده stackام php هست ولی این لینک کلی هست و ماشاءا… به این همه ستاره و fork

https://github.com/DesignPatternsPHP/DesignPatternsPHP
خودم دیگه حوصله‌ام نکشید بیشتر از این جستجو کنم. همین‌ها رو اگر وقت کنیم بخونیم یاد گرفتیم. این هم آخریش البته شاید بهترینش

لینک مفید دیگری مخصوص لاراول که به لطف این موتور جستجو بهش رسیدم:

https://itzone.com.vn/en/article/design-patterns-in-laravel-you-need-to-know

مشتاق دیدن و شنیدن نظرات‌تون هستم

اصول برنامه نویسی در لاراول

چند تا لینک هست که قرار می‌دم بد نیست نگاهی بهش بندازید:

SOLID
DRY
KISS
Thin Controller, Fat Model
Iman Ghafouri Telegram 
Design Patterns

این لیست در حال تکمیل هست. نظری داشتید کامنت کنید.

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

مفهوم interface و abstract در php + مقاله‌ای در مورد Laravel IoC Service Container

در یکی از مصاحبه‌ها از من در مورد service container لاراول سوال کردند که به نظرم جواب خوبی ندادم و درست بعد از آن موقع code review مشاهده کردم که یکی از توسعه‌دهندگان از خاصیت bind استفاده کرده.

مطالعاتی در زمینه شروع کردم که هم جهت دسترسی سریع‌تر به منابع و هم برای استفاده دیگران لینک هایشان را در اینجا به اشتراک می‌گذارم:

Laravel IoC Container: Why we need it and How it works

Understanding the Use of Interface and Abstract Classes

Laravel’s IoC Container and Dependency Injection decoded

تحلیل کوتاهی بر نمای سایت amazon.com

یکی از سایت‌های e-commerce که برای خیلی از سایت‌های دیگر می‌تواند نمونه باشد سایت آمازون می‌باشد.

نمای desktop

نمای desktop سایت آمازون
سایت آمازون

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

این نما در حالت موبایل تغییر می‌کند. حتی با لب تاب هم نمی‌توانید حالت موبایل را تجربه نمایید:

تغییر سایز سایت آمازون
تغییر سایز سایت آمازون

پس باید این موضوع را در طراحی ها در نظر گرفت که حالت موبایل در دیباگر مرورگر به راحتی به دست نمی آید.

مگر اینکه از یه extension مثل SIMPLE MODIFY HEADERS استفاده کنید.

simple-modify-headers
simple-modify-headers

نمای موبایل

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

با استفاده از پلاگینی که پیش‌تر معرفی کردم تغییر User-Agent به مقدار زیر، می‌توان نمای تغییر موبایل در اندازه‌های گوناگون را واضح‌تر مشاهده نمود:

Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543 Safari/419.3 lk

تغییر سایز سایت آمازون در حالت موبایل
تغییر سایز سایت آمازون در حالت موبایل

فرایند استخدام و داستان‌های آن

استخدام، فرایندی که اکثر شرکت‌ها به دنبال ساخت فرمولی برای مهار کردن آن هستند. در این سری آموزشی سعی دارم با داستان‌های استخدامی، چالش‌های مختلفی که ممکن است با آن برخورد نمایید را مرور کنیم تا بتوانیم به راهکارهای هوشمند و سریع و در عین حال مفید دست پیدا کنیم.

نه کسی بهم پول می‌ده این متن‌ها رو بنویسم، نه حتی کسی تشویقم می‌کنه! بلکه شاید بدتر چوب لای چرخم هم بکنن. تا الان که ۳۵ سال از خدا عمر گرفتم، شاید بالای ۳۰۰ جا برای مصاحبه کاری مراجعه کردم و آخرش هم گرفتار همین فرایند استخدام شدم. شغلم شد، کمک به شرکت‌های دیگه برای استخدام.

پیش خودم گفتم اگر کسی تازه کار باشه یا با سیستم‌های مدرن آشنا نباشه، شاید بتونم کمکی کنم و در این زمینه راهنمایی باشم. برای همین در وبلاگ شخصیم شروع به نوشتن کردم (قبلا در پست آزمون استخدامی بخش خصوصی از معضلات اینگونه آزمون‌ها صحبت کردم):

شروع داستان

شنبه: امروز ۱۰۰۰ تا رزومه برام فرستادن و ازم خواستن تا پایان هفته رسیدگی کنم و ۲۰ نفر از بین اونها برای مصاحبه انتخاب کنم!

نمی‌خوام حق کسی رو ضایع کنم، از طرفی بررسی این ۱۰۰۰ رزومه در یک هفته کار بسیار دشوار و نشدنی هست!

چی کار می‌شه کرد؟

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

بذارید صادق باشم، برای ادامه این داستان پر چالش مجبور شدم واقعا جستجوهایی انجام بدم و به سایت‌های زیر رسیدم که البته به دلیل اینکه نمی‌خوام عامل ارتقاء هیچ کدوم باشم به صورت لینک نمی‌ذارمشون:
iran.hr
workable.com
irantalent.com
hire.camp
jobinja.ir
jobvision.com
payvast.com
tamasco.ir

و عباراتی که جستجو کردم:
تامین منابع انسانی هوشمند، تامین منابع انسانی فوری، جذب نیروی فوری در فرایند استخدام، تسریع فرایند استخدام، آسان سازی فرایند استخدام، هوشمندسازی فرایند استخدام، اتوماسیون فرایند استخدام

فقط یک سایت من رو مجذوب کرد که در لیست بالا نیاوردم! چون بهش تعصب خاصی دارم، و اون سایت خودمون، مدیریت هوشمند پروسه استخدام با آدیلار، هست.

خب برای امروز کافیه….

در نوشته‌های آتی سعی می‌کنم داستان رو ببرم به سمتی که یه سفر شگفت انگیز در آدیلار با هم داشته باشیم. منتظر نظراتتون هستم…

ساخت swap با فایل در لینوکس

شاید شما هم به این مشکل خورده باشید که برای بعضی کاربردها یا نرم‌افزارها به فضای swap در لینوکس نیاز داشه باشید.

برای خودم و شما دستورات زیر رو گذاشتم تا به عنوان منبعی داشته باشیم:

sudo fallocate -l 1G /swapfile
یا

sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

و در /etc/fstab خط زیر رو اضافه کنید، اگر می‌خواهید همیشه هنگام بالا آمدن سیستم با این swap کار کنید:

/swapfile swap swap defaults 0 0

منبع: https://linuxize.com/post/create-a-linux-swap-file

نوشتن پکیج لاراول – قسمت دوم

نوشتن پکیج لاراول – قسمت اول

بهترین راه مطالعه مستندات خود لاراول در مورد توسعه پکیج هست. من خودم با یه جستجوی کوچک شروع کردم از اینجا

پیشنهاد می‌کنم مطالعه‌ش کنید و شاید این پکیج هم به درد بخوره

و حتما در تمام دوره‌های آموزشی لاراول این لینک مفید خواهد بود

خب برای کسایی که حوصله خوندن لینک‌های فوق رو ندارن یا زبان‌شون ضعیفه یه راه میان‌بری هست که در ادامه توضیح می‌دم: ادامه خواندن “نوشتن پکیج لاراول – قسمت دوم”

آیین انجام کار

بری پتیس (Bre Petis) این بیانیه را در وبلاگش نوشت:

  1. سه حالت بودن وجود دارد: نداشتن، اقدام و اتمام کار.
  2. بپذیرید هر چیزی مثل یک پیش‌نویس است. کمک می‌کند آن را به انجام برسانید.
  3. هیچ مرحله ویرایشی وجود ندارد.
  4. تظاهر به اینکه می‌دانید چه کاری انجام می‌دهید تقریبا شبیه این است که واقعا می‌دانید چه کاری انجام می‌دهید، پس بپذیرید که می‌دانید چه کاری انجام می‌دهید، حتی اگر نمی‌دانید و کارتان را انجام بدهید.
  5. احمال کار نباشید. اگر بیشتر از یک هفته برای اجرای یک ایده صبر می‌کنید، رهایش کنید.
  6. منظور از انجام شدن، تمام کردن نیست. بلکه انجام دادن کارهای دیگر است.
  7. به محض اینکه انجامش دادید، می‌توانید کنارش بگذارید.
  8. به کمال‌گرایی بخندید. خسته‌کننده است و مانع انجام کارتان می‌شود.
  9. افرادی که دست‌هایشان کثیف نیست در اشتباه‌اند. انجام کار درست‌تان می‌کند.
  10. شکست نیز انجام کار به حساب می‌آید پس اشتباه کنید.
  11. خراب کردن نوع متفاوتی از انجام دادن کار است.
  12. اگر ایده‌ای دارید و در اینترنت منتشرش می‌کنید، شبیه یک کار انجام شده به حساب می‌آید.
  13. انجام دادن یک کار، محرک‌ کارهای بیشتر است.

برگرفته از کتاب مهره‌ی حیاتی اثر ست گادین ترجمه علیرضا خاکساران

نوشتن پکیج لاراول – قسمت اول

داشتم صحبت‌های ایمان غفوری رو تو یوتیوب می‌دیدم که اینجا خونم به جوش اومد! نوشتن پکیج لاراول !

واقعا برام زور داشت رضا امیری ۸۲ ای بتونه پکیج بنویس و من هنوز درگیر تصمیم برای نوشتن یا ننوشتن یک پکیج باشم!

البته نه اینکه نوشتن پکیج لاراول تاثیری در سنیور شدن یا پیشرفت کاری یا رزومه کاری داشته باشه. تنها قدمی مثبت در راه یادگیری لاراول و برنامه‌نویسی با php هست. یادمه یک مدیر هلدینگی می‌گفت هر کاری می‌خوای بکنی بکن فقط تا آخرش برو جلو حتی اگر جیگرکی زدی!

برای همین دست به کار شدم و لیستی از مشهوترین و بهترین پکیج‌هایی که می‌شناختم رو روی پروژه جدید لاراول ۸ نصب کردم و در اینجا در اختیار شما نیز قرار دادم.

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

laravel/ui  بستری مناسب برای احراز هویت با فرانت‌های مختلف در لاراول

laravel/livewire  بستری برای دوری از پیچیدگی‌های فرانت و بستری آجاکس یا ای جکس برای بکندی ها

ادامه خواندن “نوشتن پکیج لاراول – قسمت اول”

یک روز مفید با هرس کردن درختان انگور

هرس درخت انگور

امروز می‌خوام در حد کفایت، هرس کردن درختان انگور رو که خودم هم تازه یاد گرفتم، آموزش بدم.

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

تصویری که در بالا می‌بینید، یک درخت هرس نشده انگور هست. این درخت به صورت لم داده شده به خاک کاشته شده و البته روش‌های دیگر کاشت درختان انگور هم وجود داره ولی من اسم این روش رو، خاکی می‌ذارم. ادامه خواندن “یک روز مفید با هرس کردن درختان انگور”