| Erfan's Notes |
188 subscribers
81 photos
10 videos
102 links
Download Telegram
| Erfan's Notes |
Grafana + Prometheus
یکی از ابزار هایی که در طول سال های اخیر شنیده بودم، ولی به‌دلایل عدم تمایل تغییر یا استفاده از چیز جدید، ازش استفاده نمی‌کردم پروژه Prometheus بود که امروز امتحانش کردم و نتیجه استفاده ازش واقعا لذت‌بخش بود

ابزار Prometheus در واقع یک سیستم جامع جمع‌آوری آمار هست، حالا چه آماری ؟ هر آماری که فکرش رو بکنید

در واقع یک Query Language مخصوص داره برای اینکه شما بتونید بهش آمار پاس بدید، یا ازش آمار پس بگیرید، بدون اینکه وارد پیچیدگی های خاصی بشید

این ابزار به خودی خودش صرفا یه ابزار و سرویس آمارگیر هست و می‌تونید Interval هایی رو تعریف کنید که در زمان های مشخص، به تعدادی Job که تعریف می‌کنید (و خودش Exporter نام‌گذاری می‌کنه) درخواست بزنید و بگید که بهم آمار بده!

این نرم‌افزار آمار ها رو دریافت می‌کنه، ولی به خودی خودش راه خوبی برای نمایش اون آمار و اعداد و ارقام نداره، تا اینکه پای Grafana به این وسط باز می‌شه

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

صرفا کافی هست که داخل پروژه‌تون یک endpoint ایجاد کنید که Prometheus راس زمان های مشخص بهتون درخواست بزنه و آماری که می‌خواهید رو بگیرید، بعدش می‌تونید از طریق گرافانا اون آمار رو Visualize کنید، وظیفه نگه‌داری زمانی و ... اون آمار بر عهده Prometheus هست

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

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

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

⭕️ prometheus.io
⭕️ grafana.com
🔥8
اگر با ابزار curl آشنا باشید و کار کرده باشید، احتمالا ابزار جدید trurl هم براتون جالب باشه، یکی از ابزار هایی که جای خالی‌اش واقعا حس می‌شد و جدیدا توسعه داده شده و معرفی شده

ابزار trurl رو سازنده curl نوشته و در واقع بخش زیادی از کدش هم از libcurl استفاده شده و در عمل، یک ابزار همه کاره برای ساخت/تجزیه انواع مختلف URL با پروتکل های مختلف هست

در واقع مثل ابزار tr روی url هست و البته که استفاده اش صرفا به tr محدود نمی‌شه، یک ابزار قدرتمند همه کاره که می‌تونید بهش هرنوع url ای بدید و بهتون به‌شکل های مختلف parse کنه و مقادیری مثل scheme و domain و query و port و protocol و ... بده

یا می‌تونید برعکس اینکار رو انجام بدید و بهش مقادیر مختلف رو بدید تا براتون کار یک URL Builder رو انجام بده

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

مثلا برای یک IP می‌تونیم رجکس بنویسیم که 127.0.0.1 رو تشخیص بده، ولی آی‌پی بالا در واقع معادل 127.1 هست و کاملا هم ولید هست، ولی کم‌تر جایی پیدا می‌شه که آی‌پی دو بخشی رو هندل کرده باشه، این ابزار می‌تونه چنین کار هایی رو برامون آسون‌تر کنه

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

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

https://github.com/curl/trurl
🔥6
یکی از علایق من توی دنیای PHP به اکستنشن OpenSwoole هست که به‌عبارتی یک تقویت‌کننده یا SuperCharger یا انرژی‌زا برای PHP هست، ولی متاسفانه این اکستنشن توسط یک عده حرفه‌ای بی‌حوصله نوشته شده و Maintain می‌شه و راهنما و مستندات درست و حسابی نداره، حتی مستنداتش هم زود به زود منسوخ می‌شن

در اصل یک فورک از Swoole هست، که خب باز Swoole مستندات بهتری داره ولی اکثرا به زبون نقاشی خرچنگ و قورباغه‌ای هست (نمی‌دونم چینیه یا ژاپنی یا کره‌ای)

در حالت کلی، حداقل من کامیونیتی فعالی از اوپن‌سوله ندیدم و به همین دلیل تصمیم گرفتم که یک گروه براش بزنم به‌آدرس @OpenSwoole و اگر علاقه‌مند بودید بهش می‌تونید جوین بشید

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

طبق گفته خودش، از کد NumPy الگو گرفته و برای محاسبات روی آرایه های عددی گزینه خیلی خیلی سریع‌تر و با Memory Footprint کم‌تری هست

https://github.com/phpsci/phpsci-carray
🔥4
شاید براتون جالب باشه، کتابخونه‌ای وجود داره که بهتون اجازه میده با سینتکس CSS برای تلگرام، ربات بنویسید

https://github.com/Bannerets/css-telegram-bot-api
🔥6
اگه از آرچ‌لینوکس یا توزیع های مبتنی بر آرچ استفاده می‌کنید یا به هر دلیل دیگه‌ای پکیج‌منیجرتون Pacman هست، توصیه می‌کنم که Cache اش رو هر از گاهی پاک کنید

پکیج منیجر پک‌من به‌صورت دیفالت هر پکیجی که نصب/آپدیت می‌کنید رو داخل Cache اش نگه می‌داره و بعد از یک‌سال استفاده و پاک نکردن کش می‌تونید به وضعیتی که توی عکس فرستادم دچار بشید و براتون 60GB کش ایجاد کنه

برای اطلاع از حجم کش می‌تونید از دستور زیر استفاده کنید:
du -sh /var/cache/pacman/pkg/

و برای پاک کردن کش:
sudo rm -rf /var/cache/pacman/pkg/*

و البته که این روش دستی هست و اگر دنبال روش اتوماتیک هستید می‌تونید یک Pacman Hook بنویسید که اینکار رو براتون انجام بده، اگه هم که از دستور rm نمی‌خواهید استفاده کنید می‌تونید از ابزار paccache برای پاک کردن استفاده کنید
🔥8
اگه داخل پروژه های وبی که می‌زنید و داخل موبایل تست می‌کنید، نیاز به کنسول دارید، توصیه می‌کنم از eruda استفاده کنید

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

اگه دیوایس‌تون اندرویدی باشه، می‌تونید از Chrome Dev Tools استفاده کنید که راه‌اندازی‌اش دردسر داره و اگر هم که iOS باشید کلا هیچ راهی ندارید معمولا

برای رفع این مشکل می‌تونید از پکیج Eruda استفاده کنید که با لود کردن کتابخونه‌اش در پروژه‌تون، خیلی راحت و بی‌دردسر بهتون یک Console می‌ده که محیط کاملا مشابه به کنسول اصلی مرورگرها رو داره و می‌تونید به لاگ و ارورها و درخواست‌ها و کلی چیز های دیگه دسترسی داشته باشید

سمپل آنلاین پروژه:
https://eruda.liriliri.io/

نحوه استفاده از پروژه هم ساده هست و کافیه این دو خط رو به تگ head تون اضافه کنید:
<script src="//cdn.jsdelivr.net/npm/eruda"></script>
<script>eruda.init();</script>

لینک گیت‌هاب پروژه:
https://github.com/liriliri/eruda
🔥7
زبان TACT یک زبان جدیدی هست که توسط TON یا به عبارتی The Open Network جدید و Telegram Open Network قدیم توسعه داده شده

تیم توسعه‌اش ارتباط مستقیمی با تلگرام نداره ولی در نهایت بی‌ربط به تلگرام نیست و TON قرار بود در انحصار تلگرام باشه و به‌دلیل محدودیت های اپل از انحصار تلگرام در اومد

در کل، زبان TACT برام جالب بود، که برای TON اومدند و زبانی اختصاصی با کامپایلر و ... نوشتند صرفا برای اینکه Smart Contract بنویسید بر بستر TON

https://tact-lang.org/
🔥8
اگه با گنو/لینوکس کار کرده باشید یا با سرورها سر و کار داشته باشید، قطعا به اهمیت یک ادیتور CLI خوب پی بردید، چون واقعا بدون یک ادیتور معقول، آدم پیر می‌شه تا بتونه یک فایل رو ویرایش کنه یا بنویسه

گزینه های مرسومی که آدم‌ها سمتش میرن معمولا nano برای مبتدی‌ها هست و vi یا vim برای حرفه‌ای‌ها و گیک‌ها، ولی در نهایت من خودم شخصا نه به محیط vim تونستم عادت کنم در طول سالیان و نه به محیط nano، تا اینکه بالاخره امروز ادیتور cli مورد علاقه‌ام رو پید کردم

اسم این ادیتور، میکرو یا Micro هست و واقعا کم‌حجم و سریع و دم‌دست و زیبا و هرچیز خوب دیگه‌ای که فکر رو بکنید، هست

محیطی که توی تصویر بالا می‌بینید در واقع داخل ترمینال هست و بهتون قابلیت Split کردن پنجره رو می‌ده بدون نیاز به tmux و ...، بهتون شورتکات های معقولی میده و یک command bar قدرتمند هم در اختیارتون قرار میده، با کلی تم و ... خوشگل

اگه از nano یا vim مهاجرت می‌کنید به میکرو، یه‌مقداری اوایل کار عادت کردن به شورتکات‌ها سخته، ولی در نهایت به امتحانش می‌ارزه، اگر شد سعی می‌کنم یک آموزش درمورد خودش و کاربردش و شورتکات‌هاش ضبط کنم

micro-editor.github.io
🔥9
💠 دوره آموزش برنامه‌نویسی ربات تلگرام

دوره‌ای که در اون از پایه شروع می‌کنیم به توضیح مفاهیم مربوط به ربات و نحوه توسعه ربات‌های تلگرامی

قسمت‌ها به صورت تدریجی منتشر می‌شن

⭕️ پست توضیحات کامل دوره رو می‌تونید اینجا بخونید

🔰 پلی‌لیست دوره در یوتیوب رو هم می‌تونید اینجا ببینید
🔥9
💠 قسمت صفر - معرفی دوره

در این قسمت به معرفی دوره پرداختیم و توضیح دادیم که در طول دوره چه مباحثی رو پوشش دادیم و روال دوره به چه صورتی هست

⭕️ مشاهده ویدیو

💎 @ErfanMola
🔥8
💠 قسمت اول - انواع ربات‌های تلگرامی

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

⭕️ مشاهده ویدیو

💎 @ErfanMola
🔥11
💠 قسمت دوم - بررسی ساختار تلگرام

در این قسمت نگاهی به ساختار سرورها و دیتاسنتر های تلگرام انداختیم و ساختار اون‌ها رو تشریح کردیم تا درک بهتری برای انتخاب محیط داشته باشیم

⭕️ مشاهده ویدیو

💎 @ErfanMola
🔥5
یکی از مباحثی که احتمالا به‌عنوان یک PHP کار در سال های اخیر شنیدید، اضافه شدن قابلیت JIT از نسخه 8.0 به PHP بوده، قابلیتی که احتمالا صرفا اسمش رو شنیدید و در عمل ازش استفاده نکردید

تصویر بالا شماتیک JIT رو در PHP نشون می‌ده و قابلیت JIT به‌عنوان یک افزودنی به اکستنشن OPCache فعال و استفاده می‌شه و باعث می‌شه که کد شما به‌جای اینکه توسط Zend VM هر بار اجرا بشه، یک‌بار به بایت‌کد ماشین کامپایل بشه به صورت AoT یا Ahead Of Time

اگه از قبل OPCache رو فعال نداشتید، فعال کردن OPCache و JIT می‌تونه زندگی‌تون رو تغییر بده، ولی اگر همچنان مثل من از قبل OPCache رو فعال داشتید، باز هم JIT می‌تونه پرفرمنس‌تون رو بهتر کنه، من با فعال کردن JIT در یک برنامه OpenSwoole ای از 32K req/s به 38k req/s رسیدم
🔥9
💠 قسمت سوم - انتخاب سرور ربات و معیار های سرور مناسب

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

⭕️ مشاهده ویدیو

💎 @ErfanMola
🔥8
💠 قسمت چهارم - توضیح و نصب Bot API Server لوکال

در این قسمت به توضیح و معرفی Bot API Server لوکال پرداختیم و مزیت‌ها و معایب اون رو شرح دادیم و فرآیند نصب اون روی سرور رو هم توضیح دادیم

⭕️ مشاهده ویدیو

💎 @ErfanMola
🔥9
💠 قسمت پنجم - بررسی Method های تلگرام و نحوه استفاده از آن‌ها

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

⭕️ مشاهده ویدیو

💎 @ErfanMola
🔥6
💠 قسمت ششم - راه‌اندازی محیط توسعه آنلاین با استفاده از FTP

در این قسمت با نصب و راه‌اندازی VSFTPD روی سرور و همچنین افزونه SFTP در VSCode، محیط توسعه ربات لوکال‌مون رو به محیط سرور آنلاین متصل کردیم تا توسعه راحت‌تری داشته باشیم

⭕️ مشاهده ویدیو

💎 @ErfanMola
🔥6
💠 قسمت هفتم - نوشتن اولین ربات با زبان های PHP و Python و JavaScript

در این قسمت اولین ربات تلگرامی‌مون رو با استفاده از زبان برنامه‌نویسی PHP نوشتیم، در واقع کدی نوشتیم که با استفاده از اون می‌تونستیم به سرور تلگرام درخواست بفرستیم و این مثال رو با PHP شروع کردیم و در ادامه مسیر کدی که نوشته بودیم رو به معادل های پایتون و جاوااسکریپتی‌شون هم تبدیل کردیم

⭕️ مشاهده ویدیو

💎 @ErfanMola
🔥5