مهارت‌های من

زبان برنامه نویسی PHP

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


وردپرس – Wodepress

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


لاراول – Laravel

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


اسکرپر – Scraper

یک روز داشتم با فریمورک سیمفونی کار میکردم که با یک پکیج به نام Guzzle آشنا شدم. آشنایی با این امکان باعث شده بود چند شبانه روز اصلا خواب و زندگی نداشته باشم و فقط به این فکر میکردم که کدی بنویسم که بتونه بجای انسان کار کنه. اسمش هم «ربات» گذاشتم و اولین پروژه خودم رو با این روش نوشتم، یک سایت بود که به صورت اتوماتیک هر 60 ثانیه یک مطلب رو بدون دخالت انسان منتشر میکرد. در نهایت این روش باعث جذب کاربر زیاد و درآمد خوبی برام شده بود. بعد تصمیم گرفتم کلی ربات دیگه با CURL بنویسم و شبانه روز داشتم با انواع روش های اسکرپر در زبان های PHP و Python کار میکردم. این تجربه در اسکرپر باعث شد کلی کتاب و مقاله در این زمینه بخونم و با این روش هم اسکریپت های مختلفی بنویسم و هم افزونه های وردپرس بنویسم که میتونست روی سایت و فروشگاه، مطالب و محصولات مختلفی رو بزاره و بفروشه. در حال حاضر تجربه و تسلط خوبی در زمینه اسکرپر دارم.


واسط برنامه‌نویسی نرم‌افزار کاربردی – API

بعد از آشنایی با اسکرپر، به این نتیجه رسیدم که دریافت اطلاعات از یک API میتونه بسیار سریعتر و تمیزتر از اسکرپ کردن یک صفحه وب باشه. تصمیم گرفتم کلی API رو توی Postman تست کنم و بعد با زبان PHP اونا رو آنالیز کنم و به پایگاه داده منتقل کنم. این علاقه شدید به API باعث شده بود از API در برنامه های مختلف استفاده کنم. در این مسیر با وب‌سرویس های SOAP و Rest API زیاد تمرین کردم و سعی کردم API ووکامرس و وردپرس رو هم یاد بگیرم و نهایتا رفتم به سمت نوشتن API که مجبور شدم احراز هویت با JSON Web Token یا همون JWT رو هم یاد بگیرم.


برنامه‌نویسی شیءگرا – OOP

چندسال اولی که با برنامه نویسی PHP آشنا شدم، به صورت رویه‌ای و تابعی برنامه نویسی میکردم. اما از سال 2019 تصمیم گرفتم شی‌گرایی (Object-Oriented Programming) رو جدی تر شروع کنم و سعی کنم برنامه‌های خودم رو به صورت شی‌گرا بنویسم.


مدل،نما،کنترل‌گر – MVC

وقتی شی‌گرایی رو یاد گرفتم، اولین بار بود که با مفهوم Model–View–Controller آشنا شدم و سعی میکردم فریمورک‌های مختلف رو بخونم تا این مفهوم رو بیشتر درک کنم. با گذشت زمان و ورود به حوزه لاراول، تصمیم گرفتم این مورد رو به صورت جدی شروع کنم و دارم تلاش میکنم به معماری HMVC هم تسلط خوبی پیدا کنم.


کدنویسی تمیز – Clean Code

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


اصول SOLID

در هنگام یادگیری Clean Code بود که همزمان اصول SOLID رو هم یاد گرفتم. در سال 2021 بود که در یکی از دوره های آموزشی Design Patterns ثبت نام کردم و در جلسات کلاس الگوهای طراحی بود که متوجه اهمیت بیشتر اصول SOLOD شدم. البته هنوز هم در حال یادگیری Design Patterns هستم و امیدوارم بتونم اون رو هم به زودی به لیست تخصص‌هام اضافه کنم.


کانفیگ آپاچی – Apache

از سال 2015 بود که تصمیم گرفتم با سیستم عامل مک به ادامه کار خودم ادامه بدم. بزرگترین مسئله‌ای که با این سیستم عامل داشتم، مشکلات نصب نرم افزار XAMPP بود. بالاخره یک روز بوسیله یکی دوستانم بود که با نصب آپاچی روی سیستم عامل مک آشنا شدم و همین دلیلی شد که نصب Apache و Mysql رو روی مک یاد بگیرم. همچنین باعث شد گهگاهی با NGINX و Docker هم کار کنم.


داکر – Docker

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


گیت – GIT

اوایل سال 2016 بود که دانشجوی رشته فناوری اطلاعات دانشگاه پیام نور کازرون بودم. منبع درآمد من از سایت‌های وردپرس بود و تقریبا درآمد خوبی هم داشتم. یک روز دقیقا وسط ارائه درس برنامه نویسی C بود که یه ایمیل از شرکت هاستینگ برام اومد و نوشته بود که به دلیل آتش‌سوزی در دیتاسنتر، همه اطلاعات سایت‌های ما از بین رفته و هیچ بکاپی هم ندارند. از همینجا بود که دیگه سایت‌های من نابود شده بودند و هیچ درآمدی هم نداشتم… نهایتا تصمیم گرفتم بجای تسلیم شدن، دوباره سایت‌ها رو بسازم و با روش‌های مختلف بک‌آپ گیری آشنا بدم که با گیت آشنا شدم. دیگه سعی میکردم هر وقت کدی رو مینویسم روی گیت ذخیره کنم و هر هفته از تمام سایت‌هام بک آپ بگیرم.


تورنت – Torrent

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


سیستم پرونده بین سیاره ای – IPFS

یک روز مشغول جستجو در لیست آموزش‌هایی بودم که در طول این چندسال تهیه کرده بودم، ناگهان آموزش OWAPS رو دیدم. رفتم سریع آموزش رو دیدم و با این روش داشتم امنیت یکی از سایت‌هام رو بالا میبردم که متوجه شدم یک هکر قبلا وارد سایت شده، اما فقط یک پیغام گذاشته و رفته، هیچ آسیبی به سایت نزده بود. رفتم و با کلی دردسر تونستم با اون هکر صحبت کنم و دیدم یک جوان هست که فقط اشتیاق یادگیری داره. یک لینک بهم داد که یه جورایی شبیه به معما بود واسه تست نفوذ به یک ابزار قانونی که مخصوص هکرها بود. در میانه راه با یک هش جدید آشنا شدم. اینبار این هش با تمام چیزایی که دیده بودم فرق داشت. هیچ شباهتی به md5 و sha1 و sha256 نداشت. بلکه یک الگوی منظم داشت و حدود ۳۰ شبانه روز داشتم سعی میکردم اون رو بفهمم و نهایتا موفق نشدم. اما وقتی فهمیدم چیه، با قرار دادن اون پشت یک لینک، به یک عکس گربه رسیدم. حالا داشتم یه عکس میدیدم که فرمتی نداره و فرق داره. بیشتر کنجکاو شدم و نهایتا دیدم بسیاری از سایت های بزرگ که در زمینه منابع علمی مانند کتاب‌ها و مقالات کار میکنند، از این شبکه استفاده میکنند. حالا تونسته بودم به یک چیز شبیه به بیت‌تورنت پیدا کنم که اینم یک پروتکل و شبکه همتا به همتا P2P بود. رفتم و کلی کتاب از همین شبکه در مورد خودش گرفتم و مطالعه کردم و سعی میکردم اون رو روی سرورهای مجازی اجرا کنم. IPFS یکی از بهترین منابعی بود که باعث شد مطالعه من بسیار زیاد بشه و من رو وارد یک مسیر کرد که تونستم مسیرهای پیش روی خودم رو بسیار کوتاه‌تر کنم.