درود.
اینجا قراره خیلی راحت و بدون تشریفات خاصی، چیز هایی که یاد میگیرم، چالش های برنامهنویسی، پروژهها و کار هایی که انجام میدم و حتی روزمرگیهام رو بنویسم. ی فضای دور از کانال آموزشیِ کلاسیک یا رسانه خبری، اسمش رو میذارم باغچهی دیجیتال (
قرار نیست همه چیز "خشک" و "فنی" باشه، همونقدر که از کدنویسی و پروژههام و.. میگم، ممکنه از چیزهایی بنویسم که صرفاً سلیقه، اعتقاد شخصی و یا حتی تعصبات من باشه.
خوش اومدین به باغچه دیجیتالی من.
➖➖➖➖➖➖➖➖➖
📚• #FReading@Melfex | مطالب خواندنی
👤• #FromFarshad@Melfex | پینوشت
⌨️• #DevEdu@Melfex | محتوای تخصصی توسعه
اینجا قراره خیلی راحت و بدون تشریفات خاصی، چیز هایی که یاد میگیرم، چالش های برنامهنویسی، پروژهها و کار هایی که انجام میدم و حتی روزمرگیهام رو بنویسم. ی فضای دور از کانال آموزشیِ کلاسیک یا رسانه خبری، اسمش رو میذارم باغچهی دیجیتال (
DIGITAL GARDEN ) XD. قرار نیست همه چیز "خشک" و "فنی" باشه، همونقدر که از کدنویسی و پروژههام و.. میگم، ممکنه از چیزهایی بنویسم که صرفاً سلیقه، اعتقاد شخصی و یا حتی تعصبات من باشه.
خوش اومدین به باغچه دیجیتالی من.
➖➖➖➖➖➖➖➖➖
📚• #FReading@Melfex | مطالب خواندنی
👤• #FromFarshad@Melfex | پینوشت
⌨️• #DevEdu@Melfex | محتوای تخصصی توسعه
50⚡22🤡6❤4💘3👍2🥰2🍌2💋2💔1
مدتیه دارم روی زیرساخت و سر فصلهای ی دوره و پروژه جدید کار میکنم که فکر کنم جاش خیلی خالیه و حس میشه : « دوره جامع و
تفاوت این دوره با آموزش و دورههای مشابه، توی "عمیق" بودنشه. قرار نیست در نهایت فقط چندتا متد رو کال کنیم. برنامه و ساختار دوره بصورت زیر هست:
١ فاز
٢ فاز
٣ پروژه نهایی و
در حال حاضر دارم روی نهایی کردن تجهیزات ضبط و ستاپ میکروفن و هویت بصری دوره کار میکنم تا خروجی کار، هم از نظر محتوا و هم از نظر کیفیت فنی، در تراز استاندارد های مطلوب باشه. از نظرم تجربه فان و پر از مورد جالب و جدید قراره باشه، خصوصا از این نظر که قراره تبدیل به اولین تجربهام بشه :).
Edit 02/03:
پن؛ نه دلودماغ و نه شرایطش هست، به امید روز های بهتر.. :).
MASTERCLASS ساخت بات تلگرامی ».تفاوت این دوره با آموزش و دورههای مشابه، توی "عمیق" بودنشه. قرار نیست در نهایت فقط چندتا متد رو کال کنیم. برنامه و ساختار دوره بصورت زیر هست:
١ فاز
STRUCTURAL مستقل از زبان؛ بصورت خیلی دقیق و ریز پروتکل تلگرام رو کالبد شکافی و درک عمیق از API تلگرام، مدیریت آپدیتها، تفاوت عملیاتی پولینگ و وبهوک و کار با متدهای خام ایجاد میکنیم و در نهایت قصد دارم اول بفهمیم "چرا" و "چطور" ی بات واحد کار میکنه، قبل از اینکه "چطور" کدش رو بنویسیم.٢ فاز
DEEP DIVE روی AIOGRAM 3.X؛ بعد از رسیدن به ی درک معقول از مفاهیم اولیه، شیفت میکنیم روی یکی از قدرتمند ترین فریمورک پایتونی یعنی آیوگرام، ازROUTERوMIDDLEWAREهای پیشرفته گرفته تا مدیریتSTATEها وFSMتوی مقایس بالا. البته سعی بر اینه که جوری مانور بدیم که مفاهیم ارائه شده صرفا فقط صرف آیوگرام رو پوشش نده و در نهایت بتونیم با درک جامع ایجاد شده، با تمامی فریمورک های موجود تا حد خیلی خوبی ارتباط برقرار کنیم.
٣ پروژه نهایی و
REAL-WORLD APP؛در نهایت و ته ماجرا ی بات کامل کد نویسی و به صورت کامل دیپلوی میکنیم.
در حال حاضر دارم روی نهایی کردن تجهیزات ضبط و ستاپ میکروفن و هویت بصری دوره کار میکنم تا خروجی کار، هم از نظر محتوا و هم از نظر کیفیت فنی، در تراز استاندارد های مطلوب باشه. از نظرم تجربه فان و پر از مورد جالب و جدید قراره باشه، خصوصا از این نظر که قراره تبدیل به اولین تجربهام بشه :).
Edit 02/03:
پن؛ نه دلودماغ و نه شرایطش هست، به امید روز های بهتر.. :).
1🔥9🍓3🤡1💋1💘1
سی و اندی روز هست که فیلترنت غالبِ غالبِ غالب هست.
اولش یکم دست و پا زدم؛ متدهای رایگان، کانفیگهای پولی، تونلهای موقت و..، به هر حال چند ساعت وصل شدم به اینترنت بینالملل. ولی بعدش؟! دیگه حتی رغبتی به اتصال محدود و لگدار هم نداشتم.
خواستم بگم چقدر سریع عادت میکنیم و بر میگردیم به غارنشینی دیجیتال :)
👤• #FromFarshad@Melfex
اولش یکم دست و پا زدم؛ متدهای رایگان، کانفیگهای پولی، تونلهای موقت و..، به هر حال چند ساعت وصل شدم به اینترنت بینالملل. ولی بعدش؟! دیگه حتی رغبتی به اتصال محدود و لگدار هم نداشتم.
خواستم بگم چقدر سریع عادت میکنیم و بر میگردیم به غارنشینی دیجیتال :)
👤• #FromFarshad@Melfex
💔9
این چند وقت که اینترنت حسابی قفل بوده و هست ی جورایی اجبارا رفتم توی فاز "
از اونجایی ترک عادت موجب مرض هست اما تصمیم گرفتم بهجای اینکه مثل همیشه چندتا کار رو همزمان پیش ببرم، روی فلاتر و الپیک فوکوس کنم. فلاتر رو خیلی جدی و حرفهای تر دارم دنبال میکنم و الپیک رو هم استارتش رو زدم، این وسط برای امرار معاش و صد البته سرگرمی چندتا پروژه بات ( بازو :)) ) بله هم گرفتم و انجام دادم.
قطع اینترنت یجورایی نعمت شد و مجبورم کرد عمیقتر شم و خلاصه این دوره آفلاین بودن برام تبدیل شد به ی دوره "باغچه دیجیتالی" واقعی. بدون سر و صدا، بدون اسکرول سوشالمدیا ها، فقط یادگیری و کار عمیق.
👤• #FromFarshad@Melfex
DEEP WORK". از اونجایی ترک عادت موجب مرض هست اما تصمیم گرفتم بهجای اینکه مثل همیشه چندتا کار رو همزمان پیش ببرم، روی فلاتر و الپیک فوکوس کنم. فلاتر رو خیلی جدی و حرفهای تر دارم دنبال میکنم و الپیک رو هم استارتش رو زدم، این وسط برای امرار معاش و صد البته سرگرمی چندتا پروژه بات ( بازو :)) ) بله هم گرفتم و انجام دادم.
قطع اینترنت یجورایی نعمت شد و مجبورم کرد عمیقتر شم و خلاصه این دوره آفلاین بودن برام تبدیل شد به ی دوره "باغچه دیجیتالی" واقعی. بدون سر و صدا، بدون اسکرول سوشالمدیا ها، فقط یادگیری و کار عمیق.
👤• #FromFarshad@Melfex
🔥5❤1💋1💘1
اگه توسعهدهنده بات تلگرامی هستید، توی شرایط فعلی پروژه
بعد از دانلود پروژه، کافیه:
• توی ویندوز فایل
• توی لینوکس
ران کنید. سپس توی سورسکدتون بیس یو آر ال پیشفرض تلگرام رو به
📦 github.com/laraXgram/Simula
⌨• #DevEdu@Melfex
Simula یکی از کاملترین راهحلها برای شبیهسازی لوکال Telegram Bot API هست. میتونید بدون نیاز به اینترنت، کل روند توسعه و تست بات رو روی لوکال هاست خودتون انجام بدید.بعد از دانلود پروژه، کافیه:
• توی ویندوز فایل
run-web.bat• توی لینوکس
run-web.shران کنید. سپس توی سورسکدتون بیس یو آر ال پیشفرض تلگرام رو به
http://127.0.0.1:8081 تغییر و توکن بات رو 123456:TESTTOKEN ست کنید.📦 github.com/laraXgram/Simula
⌨• #DevEdu@Melfex
⚡6❤1🔥1
اگه شما هم مثل من کمالگرایی زیادی توی یادگیری دارید، این جمله رو به خاطر بسپارید؛
خطر تلنبار کردن سطحی دانش خیلی زیاد هست، چون:
• اعتماد بهنفس کاذب میده
• هیچکدوم از مهارتها به حد حرفهای نمیرسه
• باعث فرسودگی و نهایتا رها کردن میشه
من چیکار میکنم؟! از قانون ٨٠/٢٠ استفاده میکنم:
• ٨٠ درصد یادگیری رو صرف ی مهارت اصلي میکنم
• ٢٠ درصد باقی مونده رو واسه آشنایی علوم/ابزار مکمل
👤• #FromFarshad@Melfex
عمق رو نباید فدای گستردگی کرد!
خطر تلنبار کردن سطحی دانش خیلی زیاد هست، چون:
• اعتماد بهنفس کاذب میده
• هیچکدوم از مهارتها به حد حرفهای نمیرسه
• باعث فرسودگی و نهایتا رها کردن میشه
من چیکار میکنم؟! از قانون ٨٠/٢٠ استفاده میکنم:
• ٨٠ درصد یادگیری رو صرف ی مهارت اصلي میکنم
• ٢٠ درصد باقی مونده رو واسه آشنایی علوم/ابزار مکمل
👤• #FromFarshad@Melfex
🔥4👏2❤🔥1💘1
به پيشنهاد یکی از دوستان، شروع کردم به خوندن کتاب "عادت های اتمی". کتاب خیلی خوبی به نظر میرسه و تصمیم گرفتم از این به بعد هر کتابی رو که میخونم، جملات و پاراگرافهای مهم از نظر خودم رو هم اینجا کوت کنم.
از این پس میتونید با هشتگ هر کتاب، این پاراگرافها رو دنبال کنید.
📚• #FReads@Melfex
از این پس میتونید با هشتگ هر کتاب، این پاراگرافها رو دنبال کنید.
📚• #FReads@Melfex
❤3👍1
• معجزه ۱٪ بهتر شدن؛
• عادتها، بهره مرکب خودسازی؛
• زمان، متحد تو یا دشمن تو؛
📚• #FReading@Melfex | #عادت_های_اتمی
اگر بتوانی هر روز فقط ۱٪ بهتر شوی، در پایان سال ۳۷ برابر بهتر خواهی شد. انتخاب ۱٪ بهتر یا ۱٪ بدتر در لحظه بیاهمیت به نظر میرسد، اما در طول یک عمر، همین انتخابهای کوچک تعیین میکنند که چه کسی هستی و چه کسی میتوانستی باشی.
• عادتها، بهره مرکب خودسازی؛
عادتها بهره مرکب خودسازی هستند. همانطور که پول با بهره مرکب چند برابر میشود، تأثیر عادتهای تو نیز با تکرارشان چندبرابر میشود. یک عادت اتمی، یک عادت کوچک است که بخشی از یک سیستم بزرگتر است. همانطور که اتمها بلوکهای سازنده مولکولها هستند، عادتهای اتمی هم بلوکهای سازنده نتایج شگفتانگیزند.
• زمان، متحد تو یا دشمن تو؛
زمان، فاصله بین موفقیت و شکست را چند برابر میکند. هر چیزی به زمان بدی، همین را برایت چند برابر پس میدهد. عادتهای خوب، زمان را متحد تو میکنند. عادتهای بد، زمان را دشمن تو.
📚• #FReading@Melfex | #عادت_های_اتمی
❤3🔥1
اگه این روزها اندروید استدیو و بلید
1⃣• برای فلاتر میرور ست کنید؛
Pub Host:
Fluuter Storage:
2⃣• کشهای موجود اندروید رو دیلیت و از نو بگیرید؛
3⃣• محتویات دایرکتوری
- ی پوشه
- فایل داخل کامنت رو داخل فولدر پیست کنید.
4⃣• ی پروژه جدید فلاتری ایجاد کنید و وارد دایرکتوری
- فایل
- توی لاین آخر،
5⃣• داخل دایرکتوری فعلی (
و تمام! از حالا به بعد میتونید بدون دردسر بیلد کنید، برای پروژههای بعدی هم فقط نیاز هست مرحله ۴ رو تکرار کنید.
⌨• #DevEdu@Melfex
Gradle و میرورهاش دهن شما رو هم آسفالت کرده، کافیه مراحل زیر رو یکبار طی کنید تا نجات پیدا کنید.1⃣• برای فلاتر میرور ست کنید؛
Pub Host:
https://dart.devneeds.irFluuter Storage:
https://flutter.devneeds.ir2⃣• کشهای موجود اندروید رو دیلیت و از نو بگیرید؛
flutter precache --force --android3⃣• محتویات دایرکتوری
gradle. رو دیلیت کنید؛- ی پوشه
init.d بسازید.- فایل داخل کامنت رو داخل فولدر پیست کنید.
4⃣• ی پروژه جدید فلاتری ایجاد کنید و وارد دایرکتوری
android/gradle/wrapper بشید؛- فایل
gradle-wrapper.properties رو باز کنید.- توی لاین آخر،
services.gradle.org رو به maven.myket.ir/gradle تغییر بدید.5⃣• داخل دایرکتوری فعلی (
gradle ) ی ترمینال باز کنید و دستورات زیر رو وارد کنید؛flutter clean
flutter pub get
./gradlew.bat assembleDebug
و تمام! از حالا به بعد میتونید بدون دردسر بیلد کنید، برای پروژههای بعدی هم فقط نیاز هست مرحله ۴ رو تکرار کنید.
⌨• #DevEdu@Melfex
❤4
اگه شما هم از سنگین شدن، اکانت اجباری، لودینگهای رو مخ و مودی بودن ابزارهایی مثل
• کاملاً آفلاین کار میکنه. هیچ کلاد، اکانت یا سینک اجباری نداره و تمام دیتای پروژه روی سیستم خودت میمونه.
• گیتفرندلی واقعی؛ درخواستها رو به جای یه فایل جیسون بزرگ یا دیتابیس داخلی، با فرمت متنی ساده
• افزونهها و قابلیتهای
📦 github.com/usebruno/bruno
⌨• #DevEdu@Melfex
Postman یا Insomnia خسته شدید، وقتشه سیستم تست اِیپیآیتون رو به Bruno مهاجرت بدید. برونو ی ابزار تست API کاملاً اوپنسورس و سبکه که چند ویژگی متمایزش واقعاً نجاتدهندهست:• کاملاً آفلاین کار میکنه. هیچ کلاد، اکانت یا سینک اجباری نداره و تمام دیتای پروژه روی سیستم خودت میمونه.
• گیتفرندلی واقعی؛ درخواستها رو به جای یه فایل جیسون بزرگ یا دیتابیس داخلی، با فرمت متنی ساده
bru. ذخیره میکنه. این یعنی میتونی پوشه کالکشن رو مستقیم کنار سورسکد پروژه بذاری و با گیت خیلی تمیز کامیت و مرج کنی.• افزونهها و قابلیتهای
Environment کاملاً رایگان هست و بر خلاف خیلی از ابزارها، ویژگیهای تیمورک رو پشت Paywall قایم نکرده.📦 github.com/usebruno/bruno
⌨• #DevEdu@Melfex
👍3🆒1
تو به بلندای اهدافت پرواز نمیکنی؛ تو به سطح هویت/سیستمت سقوط میکنی.
مشکل از اراده نیست، مشکل از سیستمهاست. هر کاری که امروز انجام میدیم، ی رأی به سمت کسی هست که میخوایم بشیم. هر بار که ورزش میکنیم، داریم به خودمون ثابت میکنیم «من یه آدم فعال هستم».
از امروز به جای «دوست دارم کتاب بخونم» بگو «من کتابخونم». چون وقتی هویت عوض بشه، رفتارها برای همیشه قفل میشن.
📚• #FReading@Melfex | #عادت_های_اتمی
⚡3👏1💋1
چند ساعت پیش یکی از بچهها سورسکد بات تلگرامیش رو ارسال کرد که دیباگ و بررسیش کنم. چالشی که داشت، یکی از همون به اصطلاح باگهای خاموش توی سطح پروداکشن بود؛ با وجود اینکه سمت کلاینت فقط یکبار ریکوئست ارسال شده بود و هیچ لوپ اضافهای هم داخل کد وجود نداشت، اما پراسس و تراکنشهای باتش چندین بار تکرار میشدن.
بررسی لاجیک و سینتکس پایتون هیچ ایراد و باگی رو نشون نمیداد و ریشه مشکل بر میگشت به ضعف توی درک استراکچرال پروتکل تلگرام و غفلت از ریکوئستهای تکراری داخل وبهوکها.
سناریو از این قراره که وقتی بات شما زیر ترافیکخودمم امشب این اصطلاح رو یاد گرفتم، LOL ) نباشن، این ریکوئستهای تکراری وارد بیزینسلاجیک میشه و همون فاجعهی پراسس مجدد رخ میده.
برای فیکس کردن این کثیف کاری توسعهدهندهی قبلی، دست بردن توی هندلرهای اصلی بدترین انتخاب ممکن بود، درعوض، با استفاده از پترنهای استاندارد، این چالش رو توی لایهی بیس حل کردم؛ بهجای استیتهای متزلزل، از آپدیت آیدی توی ردیس استفاده کردم و با ی میدلور عملیات چک کردن آپدیت آیدی رو انجام دادم که اگه آپدیت تکراری باشه، میدلور پروسه رو همونجا دراپ و صرفا ی ریسپانس فیک به تلگرام برگردونه تا استریم ارسال مجدد متوقف بشه.
همونطور که قبلا توی سرفصلهای دوره پیش رو اشاره کردم؛ توسعه بات صرفا کال کردن ی متد نیست، درک عمیق رفتار پروتکلها و هندل کردن اصولی همیناصلا هم تبلیغی واسه دوره نیست 😆 ).
⌨• #DevEdu@Melfex | #TelegramBot
بررسی لاجیک و سینتکس پایتون هیچ ایراد و باگی رو نشون نمیداد و ریشه مشکل بر میگشت به ضعف توی درک استراکچرال پروتکل تلگرام و غفلت از ریکوئستهای تکراری داخل وبهوکها.
سناریو از این قراره که وقتی بات شما زیر ترافیک
Heavy لود قرار میگیره، یا سرور تلگرام به هر دلیلی ( مثل نتورک تایماوت یا کندی کوئری دیتابیس و.. ) ریسپانس 200 رو در زمان مقرر دریافت نمیکنه، مکانیزم Retry تلگرام فعال و همون آپدیت رو مجدد سمت سرور شما ارسال میکنه. اگه ساختار هندلرهای شما Idempotent ( یعنی مقاوم در برابر ریکوئستهای تکراری نباشه، برای فیکس کردن این کثیف کاری توسعهدهندهی قبلی، دست بردن توی هندلرهای اصلی بدترین انتخاب ممکن بود، درعوض، با استفاده از پترنهای استاندارد، این چالش رو توی لایهی بیس حل کردم؛ بهجای استیتهای متزلزل، از آپدیت آیدی توی ردیس استفاده کردم و با ی میدلور عملیات چک کردن آپدیت آیدی رو انجام دادم که اگه آپدیت تکراری باشه، میدلور پروسه رو همونجا دراپ و صرفا ی ریسپانس فیک به تلگرام برگردونه تا استریم ارسال مجدد متوقف بشه.
همونطور که قبلا توی سرفصلهای دوره پیش رو اشاره کردم؛ توسعه بات صرفا کال کردن ی متد نیست، درک عمیق رفتار پروتکلها و هندل کردن اصولی همین
Edge کیسها هست که مرز ها رو مشخص میکنه ( ⌨• #DevEdu@Melfex | #TelegramBot
🔥6👏2❤🔥1🍓1
اگه شما هم از اون دسته توسعهدهندگان هستید که برای هندل کردن چندتا تسک همزمان توی لینوکس، ترمینالتون پر از تبهای باز و درهمریخته میشه، یا از حفظ کردن شورتکاتهای عجیبوغریب و کانفیگهای بیپایانِ تیماکس خسته شدید، وقتشه سوییچ کنید روی
زلیج یه ترمینال مالتیپلکسرِ مدرنه که با زبان راست نوشته شده و اومده تا همون کاری که تیماکس میکرد رو بدون دردسر و کانفیگهای اولیه براتون انجام بده. چندتا ویژگی خفنش که باعث شد سوئیچ کنم:
• اوت-آف-د-باکس کار میکنه؛ برخلاف ابزارهای قدیمی که باید ساعتها وقت بذارید و فایل کانفیگ براشون بنویسید تا تازه قابل استفاده بشن، زلیج از همون ثانیه اول یه
• پنلهای شناور و تبهای هوشمند؛ خیلی راحت میتونید محیط ترمینالتون رو به هر شکلی که میخواید تقسیمبندی کنید، اون هم با چیدمان کاملاً ریسپانسیو.
• پرفورمنس بالا؛ به لطف راست به شدت سبکه و حتی زیر سنگینترین لودها و پروسههای سیستم هم کم نمیاره و کرش نمیکنه.
📦 github.com/zellij-org/zellij
⌨• #DevEdu@Melfex
Zellij.زلیج یه ترمینال مالتیپلکسرِ مدرنه که با زبان راست نوشته شده و اومده تا همون کاری که تیماکس میکرد رو بدون دردسر و کانفیگهای اولیه براتون انجام بده. چندتا ویژگی خفنش که باعث شد سوئیچ کنم:
• اوت-آف-د-باکس کار میکنه؛ برخلاف ابزارهای قدیمی که باید ساعتها وقت بذارید و فایل کانفیگ براشون بنویسید تا تازه قابل استفاده بشن، زلیج از همون ثانیه اول یه
UI کاربردی و منوی راهنمای کلیدها رو پایین صفحه بهتون میده.• پنلهای شناور و تبهای هوشمند؛ خیلی راحت میتونید محیط ترمینالتون رو به هر شکلی که میخواید تقسیمبندی کنید، اون هم با چیدمان کاملاً ریسپانسیو.
• پرفورمنس بالا؛ به لطف راست به شدت سبکه و حتی زیر سنگینترین لودها و پروسههای سیستم هم کم نمیاره و کرش نمیکنه.
📦 github.com/zellij-org/zellij
⌨• #DevEdu@Melfex
❤2👏1🎄1🦄1
خیلی وقتها به اسم بالا بردنِ بهرهوری، روزها وقتمون رو صرف پیدا کردن بهترین تم ادیتور، کانفیگ کردن دقیق
• محیط کارت باید "به اندازه کافی خوب" باشه، نه بینقص.
• اگه کانفیگ کردنِ یه ابزار بیشتر از ارزشی که تو طول هفته برات خلق میکنه زمان میبره، درجا رهاش کن.
• یه محیط ساده و خستهکننده که توش روزی هزار خط کد بزنی، شرف داره به یه سیستم به شدت شخصیسازی شده که فقط به دردِ اسکرینشات گرفتن و
از ابزارها برای خلق کردن استفاده کنید، نه اینکه خود ابزارها بشن پروژه اصلیتون.
👤• #FromFarshad@Melfex
Zsh، یا شخصیسازی ریزبهریز محیط دسکتاپ میکنیم. ذهن ما این کارها رو به عنوان "کار مفید" ثبت میکنه، در صورتی که در واقعیت داریم از انجام دیپوورک و کد زدن واقعی فرار میکنیم. یادمون باشه؛ وسواس روی ابزارها، توهمِ پیشرفت میده. • محیط کارت باید "به اندازه کافی خوب" باشه، نه بینقص.
• اگه کانفیگ کردنِ یه ابزار بیشتر از ارزشی که تو طول هفته برات خلق میکنه زمان میبره، درجا رهاش کن.
• یه محیط ساده و خستهکننده که توش روزی هزار خط کد بزنی، شرف داره به یه سیستم به شدت شخصیسازی شده که فقط به دردِ اسکرینشات گرفتن و
Neofetch میخوره!از ابزارها برای خلق کردن استفاده کنید، نه اینکه خود ابزارها بشن پروژه اصلیتون.
👤• #FromFarshad@Melfex
👏3❤🔥1💋1🦄1
اگه شما هم موقع توسعه فرانتاَند یا مینیآپهای تلگرام، از ستاپ کردن سرورهای فیک، نوشتن ماکهای طولانی توی کد یا قطعی اینترنت و بالا نیومدن اِیپِیآیهای تست خسته شدید، وقتشه با
ماکون یک ابزار فوقالعاده سبک، اوپنسورس و کاملاً آفلاین برای شبیهسازی اِیپِیآیهای
• راهاندازی در چند ثانیه: بدون نیاز به ساخت اکانت، کلاد یا کثیفکاریهای مرسوم؛ خیلی راحت میتونید چندتا روتِ فیک با ریسپانسهای جیسون دلخواه بسازید و به عنوان لوکالهاست به فرانت یا ابزار تستون متصلش کنید.
• شبیهسازی محیط واقعی: میتونید برای روتها شرط بذارید؛ مثلاً اگه فلان هدر توی ریکوئست بود ریسپانس ۲۰۰ برگرده و اگه نبود ارور ۴۰۱ یا ۴۰۳ برگردونده بشه. حتی میتونید روی روتها دِلِی داینامیک ست کنید تا رفتار نتورک تو شرایط واقعی و اینترنت ضعیف رو تست کنید.
• محیط کاملاً گیتفرندلی: تمام محیطها و روتهایی که میسازید توی یک فایل جیسون ساده ذخیره میشن.
📦 github.com/mockoon/mockoon
⌨• #DevEdu@Melfex
Mockoon آشنا بشید.ماکون یک ابزار فوقالعاده سبک، اوپنسورس و کاملاً آفلاین برای شبیهسازی اِیپِیآیهای
REST هست که پروسه توسعه و تست رو به شدت سریع میکنه:• راهاندازی در چند ثانیه: بدون نیاز به ساخت اکانت، کلاد یا کثیفکاریهای مرسوم؛ خیلی راحت میتونید چندتا روتِ فیک با ریسپانسهای جیسون دلخواه بسازید و به عنوان لوکالهاست به فرانت یا ابزار تستون متصلش کنید.
• شبیهسازی محیط واقعی: میتونید برای روتها شرط بذارید؛ مثلاً اگه فلان هدر توی ریکوئست بود ریسپانس ۲۰۰ برگرده و اگه نبود ارور ۴۰۱ یا ۴۰۳ برگردونده بشه. حتی میتونید روی روتها دِلِی داینامیک ست کنید تا رفتار نتورک تو شرایط واقعی و اینترنت ضعیف رو تست کنید.
• محیط کاملاً گیتفرندلی: تمام محیطها و روتهایی که میسازید توی یک فایل جیسون ساده ذخیره میشن.
📦 github.com/mockoon/mockoon
⌨• #DevEdu@Melfex
❤🔥4⚡1💅1
امروز سعی داشتم ی سیستم واسه دیلیت کردن مسیجها با ی دیلی مشخص پیاده سازی کنم. چیزی که توی وهله اول به فکرم رسید، استفاده ترکیبی از
پایتون ماژولی تحت عنوان
وقتی ی تسک جدید به این صف اضافه میکنیم، نیازی به سورت کل لیست با هزینهی پردازشی زیاد نیست، بلکه عنصر جدید با پیچیدگی زمانی فوقالعاده پایین داخل جای درست خودش مینشینه.
استفاده عملی از این ماژول رو میتونید توی آخرین کامیت این ریپو ببینید 👀؛
📦 github.com/Melfex/telegram-msg-bridge/blob/main/util/scheduler.py
⌨• #DevEdu@Melfex | #TelegramBot
asyncio.sleep و asyncio.create_task بود، ولی خب خیلی مشکل داشت، واسه همین با چندتا سرچ به ماژول heapq رسیدم.پایتون ماژولی تحت عنوان
heapq داره که ساختمان دادهی Min-Heap رو پیاده سازی میکنه. به زبون ساده، داخل ی آرایهی Min-Heap، سیستم این تضمین رو میده که کوچیکترین عنصر ( توی معماری مد نظر من، نزدیکترین تایم برای حذف کردن پیام ) همیشه داخل ایندکس صفر وجود داره. وقتی ی تسک جدید به این صف اضافه میکنیم، نیازی به سورت کل لیست با هزینهی پردازشی زیاد نیست، بلکه عنصر جدید با پیچیدگی زمانی فوقالعاده پایین داخل جای درست خودش مینشینه.
استفاده عملی از این ماژول رو میتونید توی آخرین کامیت این ریپو ببینید 👀؛
📦 github.com/Melfex/telegram-msg-bridge/blob/main/util/scheduler.py
⌨• #DevEdu@Melfex | #TelegramBot
⚡2🔥1💘1
شاید یکی از بزرگترین تلههایی که ما برنامهنویسها توش میافتیم، سندروم « Shiny Object Syndrome » باشه.
روال کار اینجوریه: داری روی ی پروژه با پایتون کار میکنی، یهو ی مقاله میخونی که "
تکنولوژیها و ابزارهای جدید فقط "ابزار" هستن، نه هدف نهایی. ارزش واقعی تو بازار کار و مهندسی نرمافزار، توانایی "حل مسئله" و "تمام کردنِ" پروژههاست، نه دونستن سینتکس ده تا زبان مختلف.
پیشنهاد همون قانون ٨٠/٢٠ هست؛ ی زبان یا فریمورک رو به عنوان چکش اصلیت انتخاب کن و انقدر باهاش میخ بکوب تا استادش بشی. بقیه چیزها رو فقط در حد نیاز و برای رفع کنجکاوی بخون.
البته این به معنی نادیده گرفتن تکنولوژیهای جدید نیست. ابزارهای موفق معمولاً برای حل ی مشکل مشخص به وجود میان، نه اینکه قراره جایگزین همهچیز بشن.
👤• #FromFarshad@Melfex
روال کار اینجوریه: داری روی ی پروژه با پایتون کار میکنی، یهو ی مقاله میخونی که "
Rust آینده رو تسخیر میکنه!". پروژه رو نصفه ول میکنی و میری سراغ سینتکس راست. هفته بعد ی ویدیو میبینی درباره قابلیتهای جدید Next.js، دوباره شیفت میکنی سمت فرانتاند. نتیجه؟! دهها پروژه نصفهکاره، ی گیتهاب پر از ریپوهای Hello World و دانشی که مثل ی اقیانوس به عمق یک سانتیمتره. تکنولوژیها و ابزارهای جدید فقط "ابزار" هستن، نه هدف نهایی. ارزش واقعی تو بازار کار و مهندسی نرمافزار، توانایی "حل مسئله" و "تمام کردنِ" پروژههاست، نه دونستن سینتکس ده تا زبان مختلف.
پیشنهاد همون قانون ٨٠/٢٠ هست؛ ی زبان یا فریمورک رو به عنوان چکش اصلیت انتخاب کن و انقدر باهاش میخ بکوب تا استادش بشی. بقیه چیزها رو فقط در حد نیاز و برای رفع کنجکاوی بخون.
البته این به معنی نادیده گرفتن تکنولوژیهای جدید نیست. ابزارهای موفق معمولاً برای حل ی مشکل مشخص به وجود میان، نه اینکه قراره جایگزین همهچیز بشن.
👤• #FromFarshad@Melfex
❤3🔥2💘2👍1
اگه شما هم از کندی
• دیتای تو، روی سیستم تو؛ ابسیدین کاملاً آفلاینه. هیچ کلاد یا دیتابیس قفلشدهای در کار نیست. کل نوتهای شما صرفاً ی سری فایل متنی ساده با فرمت
• گیتفرندلی تا مغز استخون؛ چون فایلها متنی هستن، خیلی راحت میتونید پوشه نوتهاتون رو با
• گراف ویو؛ ابسیدین بهتون اجازه میده نوتهاتون رو به هم لینک بدید و در نهایت ی گراف بصری خفن از ارتباط ایدهها و چیزهایی که یاد گرفتید بهتون میده.
📦 obsidian.md
⌨• #DevEdu@Melfex
Notion، آنلاین بودن اجباریش، یا پخش و پلا شدن نوتهاتون تو اپهای مختلف خسته شدید، ابسیدین دقیقاً همون چیزیه که بهش نیاز دارید:• دیتای تو، روی سیستم تو؛ ابسیدین کاملاً آفلاینه. هیچ کلاد یا دیتابیس قفلشدهای در کار نیست. کل نوتهای شما صرفاً ی سری فایل متنی ساده با فرمت
md. هستن که روی هارد خودتون ذخیره میشن.• گیتفرندلی تا مغز استخون؛ چون فایلها متنی هستن، خیلی راحت میتونید پوشه نوتهاتون رو با
Git مدیریت کنید، کامیت بزنید و روی گیتهاب پرایوتتون پوش کنید.• گراف ویو؛ ابسیدین بهتون اجازه میده نوتهاتون رو به هم لینک بدید و در نهایت ی گراف بصری خفن از ارتباط ایدهها و چیزهایی که یاد گرفتید بهتون میده.
📦 obsidian.md
⌨• #DevEdu@Melfex
❤2👍2🍓2❤🔥1
SAMAN
یه چیزشم هست برای مدیریت نکردن پیام ها در دقیقه و ثانیس
همین الانم جفت رباتام این مشکل دارن
طرف میاد اینترنت خاموش میکنه بعدش کلی میزنه رو لینکا
اینترنت که روشن میکنه کلی قسمت میخواد براش بره اما به محدودیت پیام در ثانیه میخوره تا چند دقیقه قفل میشه
حالا همینو اگه با یه یوزربات بزنن که دیگه رسماً خاموشی مطلق 🫠🫠🫠🫠
همین الانم جفت رباتام این مشکل دارن
طرف میاد اینترنت خاموش میکنه بعدش کلی میزنه رو لینکا
اینترنت که روشن میکنه کلی قسمت میخواد براش بره اما به محدودیت پیام در ثانیه میخوره تا چند دقیقه قفل میشه
حالا همینو اگه با یه یوزربات بزنن که دیگه رسماً خاموشی مطلق 🫠🫠🫠🫠
امروز یکی از بچهها یه چالش بهشدت آشنا رو مطرح کرد.
از لحاظ معماری و پروتکل تلگرام دقیقا چه اتفاقی داره میافته؟! وقتی کاربر آفلاینه و روی باتنها یا لینکها پشت سر هم کلیک میکنه، کلاینت تلگرام معمولاً این ریکوئستها رو تا زمان برقراری اتصال نگه میداره. به محض وصل شدن اینترنت، این ریکوئستها بهصورت
اگه سیستم شما هیچ شیلدی برای این سناریو نداشته باشه، بات سعی میکنه به همهی این ریکوئستها پاسخ بده و بوم! خیلی سریع به
برای فیکس کردن اصولی این چالش، راهحل توی پیادهسازی یه
من دقیقاً برای هندل کردن همین
سناریوی این میدلور به این شکله که فرکانس پیامهای هر کاربر رو داخل یه
سورسکد این میدلور و استراکچرش رو میتونید از ریپوی زیر بخونید 👀؛
📦 github.com/Melfex/telegram-msg-bridge/blob/main/middleware/throttling.py
⌨• #DevEdu@Melfex | #TelegramBot
از لحاظ معماری و پروتکل تلگرام دقیقا چه اتفاقی داره میافته؟! وقتی کاربر آفلاینه و روی باتنها یا لینکها پشت سر هم کلیک میکنه، کلاینت تلگرام معمولاً این ریکوئستها رو تا زمان برقراری اتصال نگه میداره. به محض وصل شدن اینترنت، این ریکوئستها بهصورت
Burst پشت سر هم ارسال میشن و سرور تلگرام هم اونها رو با سرعت زیاد، از طریق وبهوک یا پولینگ، به سمت بات شما هدایت میکنه.اگه سیستم شما هیچ شیلدی برای این سناریو نداشته باشه، بات سعی میکنه به همهی این ریکوئستها پاسخ بده و بوم! خیلی سریع به
Rate Limit تلگرام برخورد میکنید و ارور معروف FloodWait ظاهر میشه. نتیجه؟! بخشی از ارسال پیامهای بات برای مدتی متوقف یا کند میشن و تجربهی کاربری بههم میریزه. حالا به قولا اگه پای یه یوزربات هم وسط باشه که عمدا این سناریو رو تکرار کنه، فشار واردشده روی سرور و بیزینسلاجیک میتونه واقعا دردسرساز بشه.برای فیکس کردن اصولی این چالش، راهحل توی پیادهسازی یه
Rate Limiter توی لایهی ورودی خلاصه میشه. ما نباید اجازه بدیم ریکوئستهای اسپم اصلا رنگِ بیزینسلاجیک، دیتابیس یا APIهای پروژه رو ببینن. خیلیها سریع میرن سراغ ردیس، ولی برای پروژهها و باتهایی که معماری Single-Node دارن، درگیر شدن با Network I/O و ردیس همیشه انتخاب بهینهای نیست و میتونه فقط یه Overhead اضافه باشه.من دقیقاً برای هندل کردن همین
Edge Case، توی لایهی بیس پروژهی Telegram-MSG-Bridge یه میدلور آنتیاسپم نوشتم که فعلاً برای Message پیادهسازی شده، اما بهراحتی میشه CallbackQuery رو هم بهش اضافه کرد. این میدلور بجای ردیس از ماژول فوقسریع cachebox و TTLCache استفاده میکنه. ( با تشکر از علی بابت این ماژول محشرش 🤍 )سناریوی این میدلور به این شکله که فرکانس پیامهای هر کاربر رو داخل یه
Window ( بازهی زمانی مشخص ) مانیتور میکنه. اگه کاربر از Threshold ( آستانهی مجاز ) عبور کنه، برای مدت مشخصی بلاک میشه. نکتهی کلفت و پرفورمنسی داستان دقیقا اینجاست؛ ریکوئستهای رگباری و پشتسرهم بعدی همونجا داخل میدلور بهصورت سایلنتدراپ حذف میشن ( فقط با یه "return None" ساده، توی کسری از میلیثانیه ) و اصلا به هنلدرهای اصلی بات، بیزینسلاجیک یا دیتابیس نمیرسن. در نتیجه هم فشار روی سرور کم میشه، هم از برخورد غیرضروری با Rate Limit تلگرام تا حد زیادی جلوگیری میکنید.سورسکد این میدلور و استراکچرش رو میتونید از ریپوی زیر بخونید 👀؛
📦 github.com/Melfex/telegram-msg-bridge/blob/main/middleware/throttling.py
⌨• #DevEdu@Melfex | #TelegramBot
🔥5👏1 1 1
کمال گرای مضطرب.pdf
25.5 MB
خیلی وقتها به اسم «ارائه بهترین کیفیت»، روزها و هفتهها وقتمون رو صرف این میکنیم که همهچیز بینقص باشه؛ از ویدیوهای تولید محتوا گرفته تا ریزترین جزئیات پروژهها و کارهای روزمره. ذهن ما این وسواس رو به عنوان «استاندارد بالا» توجیه میکنه، در صورتی که در واقعیت فقط داریم از شروع کردن فرار میکنیم و به شدت درگیر اهمالکاری میشیم.
این کتاب دقیقا دست میذاره روی همون نقطه کوری که باعث میشه کارها رو به تعویق بندازیم؛ جایی که ترس از کامل نبودن، ما رو فلج میکنه.
اگه شما هم درگیر تلهی کمالگرایی هستید، ایدههای زیادی تو سرتونه اما موقع اجرا متوقف میشید و مدام کارها رو عقب میندازید، خوندنش رو به شدت تجویز میکنم.
📚• #FReads@Melfex | #کمالگرای_مضطرب
©• @soufi_learn
این کتاب دقیقا دست میذاره روی همون نقطه کوری که باعث میشه کارها رو به تعویق بندازیم؛ جایی که ترس از کامل نبودن، ما رو فلج میکنه.
اگه شما هم درگیر تلهی کمالگرایی هستید، ایدههای زیادی تو سرتونه اما موقع اجرا متوقف میشید و مدام کارها رو عقب میندازید، خوندنش رو به شدت تجویز میکنم.
📚• #FReads@Melfex | #کمالگرای_مضطرب
©• @soufi_learn
❤🔥3🔥1