MHRCODE | برنامه‌نویسی با طعم توت‌فرنگی – Telegram
MHRCODE | برنامه‌نویسی با طعم توت‌فرنگی
3.43K subscribers
22 photos
1 video
116 links
آدرس ها:
گروه: @MhrCodeGP
ویرگول: virgool.io/@mhrlife
مدیوم: medium.com/@mhrlife
Download Telegram
😊 تجربه‌ها: آینده استارتاپ ها با هوش مصنوعی: ساخت نرم‌افزار تصحیح رایتینگ آیتلس با Go و OpenAI

امسال فرصت این رو داشتم چند ماه فول‌تایم با‌ مدل‌های #OpenAI کار کنم و تصمیم گرفتم توی این ویدیو تجربیاتم رو باهاتون به اشتراک بذارم.


ابتدا با هم متوجه میشیم چرا #ChatGPT اتفاق مهمی هست! و چطور ازش استفاده کنیم، در مورد مسائلی که قبلا قابل حل نبودن و امروزه میشه با GPTها حلشون کرد صحبت میکنیم، یکم با پلتفرم OpenAI آشنا میشیم و پرامپ‌های اولیه مینویسیم، و در نهایت با #Golang و OpenAI یک نرم‌افزار میسازیم که رایتینگ‌های IELTS رو به شکل ساختارمند در قالب خروجی JSON تصحیح کنه و ما به شکل درخواه به کاربر نشون بدیم.

https://youtu.be/ZUFlqERXmn4
Please open Telegram to view this post
VIEW IN TELEGRAM
👍94🔥1
دنیای جذاب ایندکس‌ها در MySQL و آشنایی با نحوه پیاده‌سازی آنها

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

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

https://youtu.be/YLxSlVGUsu8
16
ℹ️بهینه‌سازی کوئری با ایندکس‌های ترکیبی و آشنایی با EXPLAIN ANALYZE - قسمت 5 دوره دیتابیس

توی این قسمت با هم می بینیم که دیتابیس تمام تلاشش رو میکنه از Index‌های تعریفی ما استفاده کنه تا کوئری بهینه بزنه، اما از یه جایی به بعد بهتره ایندکس‌هامون رو هوشمندانه تر تعریف کنیم. ایندکس‌های ترکیبی یا Composite ایندکس به ما اجازه میدن سطرهامون رو براساس چندفیلد با هم مرتب کنیم و کوئری‌ایی که 16ms طول میکشید رو به 0.5میلی‌ثانیه بهبود بدیم.

https://youtu.be/4JFmwyy4K9Q
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥5
🧑‍💻 تست نویسی رو از دانشگاه شروع کن! افزایش اعتماد به نفس و سرعت با unit test

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

توی این ویدیو با هم در مورد این صحبت میکنیم تست چیه، چطور کمکمون میکنه، و چطور اولین تستمون رو بنویسیم. حتی کسی که ترم اول دانشگاهه!

https://youtu.be/IJ5axaX6iyo
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1610
دوره آموزش Golang - مزه‌کاو! - انتخاب زبان برنامه نویسی و تکنولوژی‌ها و آماده‌سازی محیط توسعه
توی این دوره قراره با استفاده از زبون Golang و دیتابیس MySQL با هم دیگه محصولی بسازیم که کاربرها بتونن به رستوران‌های اطرافشون رای و امتیاز بدن و بقیه براساس لوکیشنشون نظرات ثبت شده روی رستوران‌های اطرافشون رو ببینن.

توی قسمت اول با هم دیگه تصمیم میگیریم چه تکنولوژی و زبونی رو انتخاب کنیم و با تخمین زدن 6 ماه آینده از over engineering می پرهیزیم. و در ادامه وقتی Golang و MySQL رو انتخاب کردیم! محیط توسعه لوکالمون رو با داکرکامپوز اماده میکنیم و به دیتابیس وصل میشیم.اگه سوالی داشتید توی گروه حتما بپرسید:
https://news.1rj.ru/str/MhrCodeGp
https://youtu.be/4yKlc2tEwWU
15🔥6👍2
دوره Go: مزه‌کاو - Repository Pattern و تست دیتابیس با SQLite

توی این قسمت از دوره آموزش #Golang با Repository Pattern آشنا میشیم، یکم با Interfaceهای Golang ور میریم و در نهایت زیرساخت لایه دیتابیس رو آماده میکنیم و با کمک دیتابیس in-memory SQLite کدهایی که زدیم رو تست میکنیم. توی این قسمت با هم یه نیم نگاه به دردسرایی که با Golang داریم هم میندازیم و آخر ویدیو رو حتما از دست ندید.

https://youtu.be/_F93eTx0k-Q?si=0fj_iCsNTH9hbUdP
🔥173👍2
پرفورمنس بالا و راحتی با GORM - بهبود عملکرد و مقایسه با راه‌حل های مشابه

توی زبون‌های استاتیک مثل #Golang کار با #دیتابیس میتونه سخت باشه. اما راه‌حل های خفنی مثل SQLX و SQLC و Gorm و .. هستند که میتونیم ازشون استفاده کنیم و به هدفی که میخوایم برسیم. این تعدد ابزار میتونه یکم انتخاب رو برامون سخت کنه و توی این ویدیو اول این ابزارها رو مقایسه کردم که هر کدوم چه مشکلی رو حل میکنن و چرا برای دوره مزه‌کاو Gorm رو انتخاب کردیم.
در ادامه با هم یکم Gorm رو یاد میگیریم و در اخر با چند تا روش پرفورمنس #Gorm رو به شدت بهتر میکنیم.

https://youtu.be/sUxpHdR86dM
🔥154
⚡️اپلیکیشن Real-Time بدون وب سوکت با Long Polling - از تلگرام یاد بگیریم

وقتی از اپلیکیشن Real-Time صحبت میکنیم اولین چیزی که همه به ذهنشون میاد #وب_سوکت هستش و منطقا میتونه انتخاب خوبی باشه اما #long_polling هم تکنیک خوبی هستش که اکثر نیازهای معمول ما رو برطرف میکنه، تا اونجایی که تلگرام برای پیاده‌سازی APIهای ربات هاش از این تکنیک استفاده کرده.

به شکل خلاصه، کانکشن HTTPرو باز نگه میداریم تا وقتی که notification جدیدی یا update جدیدی برای کاربرمون داشته باشیم، بدین شکل با استفاده از HTTP/1 هم میتونیم قابلیت Real-time بودن رو برای اپلیکیشنمون پیاده سازی کنیم.


توی این ویدیو با هم اول روش های مرسوم رو با هم مرور میکنیم و می بینیم چطور long-polling بخش زیادی از مشکلات Short-polling رو رفع میکنه و در نهایت با هم با کمک ردیس در Go اون رو پیاده سازی میکنیم.

لینک گروه:
https://news.1rj.ru/str/MhrCodeGp

https://youtu.be/Qmh7M6qx3H8
Please open Telegram to view this post
VIEW IN TELEGRAM
👍177🔥7
دوره دیتابیس: ایندکس و جستجوی جغرافیایی در MySQL

توی دوره مزه‌کاو میخوایم نظرات رستوران‌های اطرافمون رو براساس لوکیشن پیدا کنیم و چون نمیخوایم بابت زیرساخت هزینه زیادی بدیم انتخابمون این بود تا حد ممکن از MySQL و ابزارهاش استفاده کنیم.

توی این قسمت از دوره آموزش می بینیم سرچ جغرافیایی چیه و MySQL چه ابزارهایی بهمون داده، چطور میتونیم کوئری‌های جغرافیایی رو از 500میلی‌ثانیه برسونیم کمتر از 10میلی‌ثانیه و در نهایت برناممون برای آینده چیه اگر سرویسمون بزرگتر شد.

https://youtu.be/lRh10HQ7y8U
🔥156👍2
مقایسه سرعت زبون های برنامه نویسی #بک_اند کدوم زبون انتخاب کنیم؟

چرا APIها کند میشن؟ باتل نک یعنی چی؟ چی میتونه کمک کنه پرفورمنس سرویسمون بهتر شه؟ نقش OS Thread ها چیه؟ کانکارنسی یعنی چی؟ فرق Async با Thread چیه؟ پرفورمنس Development Server با Gunicorn در Django چه فرقی داره؟چرا توی Golang مثل Javanoscript از Async/Await استفاده نمیکنیم؟


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

https://youtu.be/TvWF1d1jLtY
🔥219
MHRCODE | برنامه‌نویسی با طعم توت‌فرنگی
مقایسه سرعت زبون های برنامه نویسی #بک_اند کدوم زبون انتخاب کنیم؟ چرا APIها کند میشن؟ باتل نک یعنی چی؟ چی میتونه کمک کنه پرفورمنس سرویسمون بهتر شه؟ نقش OS Thread ها چیه؟ کانکارنسی یعنی چی؟ فرق Async با Thread چیه؟ پرفورمنس Development Server با Gunicorn…
اگه کسی مشابه این تست رو با زبون هایی مثل Rust و C# و Java تونست بزنه یا ایده ایی داشت کدهای ذکر شده رو بهتر کنه لطفا توی گروه بگه یا داکرفایلشو برام ارسال کنه خیلی جذاب میشه یکم گسترده ترش کنیم.
داکرفایل باید اینطور باشه که یک environment بگیره که آدرس سرور تست (که ۲۰ms طول میکشه( رو بگیره. همچنین یک enviroment دیگه برای مشخص کردن پورت سروری که میخواد روش بیاره بالا


هدف این نیست بگیم زبون x خوبه زبون y بده. میخوایم عمق دانشمون رو نسبت به زبون‌های بک اند بیشتر کنیم و از تجربه هم استفاده کنیم.
🔥22
پیاده سازی Unit Test و Integration Test در #گولنگ

فرق Unit Test و Integration تست چیه؟ چطور توی Go از هم جداشون کنیم؟ چطور دیتابیسمون رو با کمک داکر تست کنیم؟ ماک چیه و چطور اجزای مختلف کد رو از هم جدا کنیم؟ توی این ویدیو با هم مکانیزم Signup یک وبسایت رو پیاده میکنیم، متوجه میشیم Unit Test و Integration تست چی هستن و برای Signup پیاده سازیش میکنیم.

https://youtu.be/Y4MiLDHSs9s?si=ACVjm4Infsyr7Cn5
12👍2
روی گیت مزه‌کاو یک کامیت رفتم که مطابق ساختار ویدیوی قبلیه Integration Test امون باشه. توی ویدیو قبلی خواستم فقط از Gorm و In-Memory SQLite استفاده کنیم برای تستامون ولی حس میکنم بهتره همون اصولی ببریم جلورو و صرفا چون میخواستم دوره ساده‌تر باشه ازین چیزای بدرد بخور برای آینده ساده گذر نکنیم.
https://github.com/mhrlife/mazekav
توی ویدیوی بعدی تغییراتی که دادم رو توضیح میدم که گیج کننده نباشه، اما خلاصه بگم توی repository یک پکیج جدا ساختیم برای integration تست که تستای دیتابیس و migration رو به شکل parallel روی یک MySQL سرور که با داکر میاره بالا تست میکنه.
👍12
دوره Go: مزه کاو - مدل رستوران‌ها با فیلد مکانی و تست مایگریشن
توی قسمت سوم دوره آموزشی گولنگ (مزه کاو) مدل رستوران‌ها و ریپازیتوری مدیریت اونها توی دیتابیس و پیدا کردن رستوران‌های اطراف رو پیاده سازی میکنیم. چون از Gorm استفاده میکنیم با چند تا روش نیازه هم دیتاتایپمون رو به شکلی که میخوایم با فیلد جغرافیایی و ایندکس جغرافیایی تعریف کنیم، هم مقادیر Encode شده‌ی جغرافیایی رو Parse کنیم و در نهایت جستجوی جغرافیایی رو توی Repository رستوران ها پیاده سازی کنیم. چون تمام این مراحل خیلی نیازمند این هست دیتابیس کوئری و کانفیگ ما رو قبول کنه در کنارش با Integration Test چک میکنیم هم مقادیر و مدل هامون درست کار میکنن هم ایندکس‌های درستی ساخته شدن.
https://youtu.be/ejo64JSxkx0
13👍2👎1
آمادگی برای مصاحبه Software Engineer در دو هفته

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

چرا نیاز نیست سراغ هکررنک و لیت کد بریم؟ برای مصاحبه HR چه چیزایی رو بخونیم؟ اگر یک مرحله رو خراب کنیم چی میشه؟ اگه تجربه کار روی سیستم‌های بزرگ رو ندارید نگران مصاحبه systems design نباشید. و کلی سوال دیگه که بهشون جواب میدیم.


https://youtu.be/vNwxPlgDrGM
36👎1
مقیاس پذیری (Scalability) کلید رشد پایدار 📈 مفهومی که باید بدانیم!

کلمه #مقیاس_پذیری یا #scalability توی دنیای کامپیوتر و محصول زیاد استفاده میشه و احتمالا scale up و scale out رو هم شنیده باشید. توی این ویدیو در مورد این مفاهیم صحبت میکنیم که مفاهیمیه که روزمره ازشون استفاده میکنیم که نگران رشد محصول نباشیم و همچنین توی مصاحبه‌های نرم افزاری و Software Engineer خیلی بهشون پرداخته میشه و خیلی خوبه باهاشون آشنا باشیم و بتونیم با تحلیل سیستم از مقیاس پذیری در آینده خیالمون راحت باشه.

https://youtu.be/OVnRbL_ltRU
🔥12👎1
پرفورمنس جادویی بک اند با یک روش ساده که دیسکورد را نجات داد!

به جای بازکردن 500 کانکشن دیتابیس، با یک کانکشن دیتابیس، از 2هزار ریکوئست برثانیه رسیدیم به 12هزار ریکوئست برثانیه و میانگین از 800میلی‌ثانیه اومد 50میلی‌ثانیه. همچنین upper99 از 3ثانیه شد 100میلی‌ثانیه. از دور بنظر نشدنی و جادو میاد اما توی این ویدیو با هم یادمیگیریم چطور با دسته‌کردن درخواست‌های SELECT میتونیم به چنین عددایی برسیم.

https://youtu.be/_taaEnkSOEo
39👍6🔥3
دل و روده مموری کدت رو بریز بیرون! رفع Memory Leak با PProf

مموری لیک یا #memory_leak میتونه تبدیل به یک مشکل بزرگ بشه اگه از همون اول جلوش رو نگیریم. OOMKilledهای پشت سر هم و Restartهای زیاد باعث مشکلات زیادی میشه. توی این ویدیو با خیلی ساده فرق Heap و Stack رو متوجه میشیم، و یک سناریو که مشکل Memory Leak داره رو با استفاده از ابزار PProf در Golang، که تمام در و روده نرم افزارمون رو برامون میریزه بیرون، حل میکنیم.
لینک گروه:
https://news.1rj.ru/str/MhrCodeGp

https://youtu.be/B0U0oTbd3Ps
👍192
محافظت از APIها با Rate Limiter 🔥 جلوی هزینه‌های آینده رو بگیر

ریت لیمیتر یا #RateLimiter یکی از مهم ترین بخش های یک API #بک_اند هستش که اگه مراقبش نباشید میتونه هم هزینه مالی زیادی، هم منابع زیادی و هم آبروی محصولمون رو ببره! ابزارهای زیادی هستن برای این موضوع ولی یک بار برای همیشه خواستم توی این ویدیو الگوریتم های معمول مورد استفاده رو توضیح بدم و در نهایت الگوریتم GCRA که خیلی کم در موردش حرف زده میشه رو کامل توضیح میدم که خودمون بتونیم از پایه یک Rate Limiter با Redis و Lua بیاریم بالا.

https://youtu.be/T286QJkD8fw
23👍16