MHRCODE | برنامه‌نویسی با طعم توت‌فرنگی
3.45K subscribers
14 photos
1 video
111 links
آدرس ها:
گروه: @MhrCodeGP
ویرگول: virgool.io/@mhrlife
مدیوم: medium.com/@mhrlife
Download Telegram
پیاده سازی 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://t.me/MhrCodeGp

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

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

https://youtu.be/T286QJkD8fw
23👍16
اولین پروژه برای یادگیری Golang 🌐 با TCP Server، وب سرور بساز!

بهترین پروژه برای شروع یادگیری هر زبون یا تکنولوژی، پروژه‌ایه که یه سر به کلیات اون تکنولوژی بزنیم و باهاش آشنا بشیم و البته خیلی هم خلاصه و کوچیک باشه. توی این پروژه خیلی ساده با هم دیگه با استفاده از TCP Socket یک وب سرور مینویسیم که ریکوئست های HTTP رو دریافت کنه و پاسخ بده. بعدش با استفاده از Goroutine ها و بنچ مارک گیری پرفورمنسش رو بهتر میکنیم تا 12 هزار ریکوئست برثانیه ساپورت کنه.

https://www.youtube.com/watch?v=u0vrgoo2CEA
17👍1
دوره دیتابیس: تراکنش (Transaction) و ACID و درخواست‌های موازی

یکی از مفاهیم مهم #دیتابیس تراکنش‌ها یا همون Transactionها هستن. با کمک ACID بخصوص Atomicty و Isolation Level، ترنزکشن ها بهمون کمک میکنن چندین کوئری رو در قالب یک واحد به دیتابیس بدیم و به شکل موازی اجرا بشن تا در نهایت خروجی یکسان و Consistant داشته باشیم، بدون اینکه این وسط 100 هزار تومن پول یهو گم شه!

https://youtu.be/lF8pheUpa6I
🔥246👍1
قبل از مصاحبه Systems Design یاد بگیر: Eventual Consistency

فرض کنید یکی از آدمای معروف توی توییتر 10 میلیون فالوئر داشته باشه و بخواد همون که توییت زد، توییتش بره توی تایم لاین فالوئراش. اگه بخوایم این کارو همون موقع در لحظه انجام بدیم سیستممون crash میکنه یا اون آدم باید 10 دقیقه منتظر لودینگ ثبت توییت باشه! مفهوم Eventual Consistency یکی از مفاهیم مهم دنیای نرم افزار هست که توی مصاحبه های نرم افزاری زیاد در موردش سوال پرسیده میشه.

https://youtu.be/3j3g_mVGUc8
🔥244👍2
از Spotify یاد بگیریم 🔥 Idempotency در سیستم پرداخت

یه وقت‌هایی بخاطر مشکل شبکه یا درخواست ها به مقصد نمیرسن یا جوابش رو ما نمیگیریم. حالا وقتی درخواست خرید ارسال شده ولی مشکل شبکه خوردیم باید retry کنیم و دوباره درخواست بفرستیم یا تصور کنیم انجام شده؟ این مسئله توی Spotify باعث شده بود یا دوبار از حساب کاربر پول کم شه یا اصلا کم نشه. تو این ویدیو در مورد مفهوم Idempotency صحبت میکنم که کمک میکنه کیفیت APIهامون رو ببریم بالا و البته توی مصاحبه‌های Systems Design هم زیاد ازش سوال میشه.

https://youtu.be/U7A12dQgFqI
👍19🔥16
با Locust به شکل توزیع شده Load Test کنیم 🔥 تست یک پروژه

اول یک پروژه رو روی بستر همروش دیپلوی میکنیم و حالا باید مطمئن بشیم با منابعی که اختصاص دادیم چند ریکوئست برثانیه میتونه جواب بده. چطور انجام بدیم؟ ابزارهایی مثل ApacheBenchmark برای توسعه لوکال خوب هستن اما وقتی یک سیستم ابری رو میخوایم تست بگیریم نیاز به ابزاری داریم که بتونه لود تستمون رو Scale کنه! برای همین سراغ Locust Swarm میریم که به راحتی با VMهامون، بک‌اندمون رو لود تست بگیریم و با اختصاص بهتر منابع از 100 ریکوئست برثانیه برسیم به 600 ریکوئست برثانیه.

https://youtu.be/vO6jMWstggA
18🔥7
بک‌اند رو سریع تر کنیم 🔥 از 800 به ده هزار ریکوئست برثانیه

توی این ویدیو یک APIکه با گرفتن لود تست نشون داد 800 ریکوئست برثانیه رو ساپورت میکنه رو بهبود میدیم و با استفاده از Redis Search کوئری پیچیده SQL رو با پرفومنس 10 برابری، 8هزار ریکوئست برثانیه پاسخ میدیم. همچنین توی این ویدیو پیچیدگی‌های پیاده سازیش رو با هم می بینیم و سیستمی پیاده میکنیم که دیتابیس و کش رو با هم sync کنه، و در مورد خوبی ها و بدی های Caching توی پروژه های واقعی صحبت میکنیم.

https://www.youtube.com/watch?v=tLSbJdQc3mA
33👍3🔥3
سلام به همه عزیزان و کسایی که تازه وارد کانال شدن.

من دنبال کانال های فارسی برنامه نویسی توی ▶️ یوتیوب هستم که یک بررسی بکنم هم محتواشون چطور هست و یاد بگیرم ازشون هم در نهایت یک خلاصه ازشون توی یک ویدیو بذارم که بقیه هم بتونن استفاده کنن.

ممنون میشم توی تلگرام برام کانال های مورد علاقه برنامه نویسی فارسی تون توی یوتیوب رو ارسال کنید: @pp2007ws
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍5🔥1
تحلیل عملکرد بک‌اند با اندازه گیری Latency و Throughput

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

https://youtu.be/L8m9E0hSA4M
🔥255👍3
تک تاک 💻 توی دیوار فیچرهای جدید رو چطور موقع توسعه و قبل از ریلیز تست میکنیم؟

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

https://youtu.be/hBJraKdKhAE
22🔥5
برای عید میخواستم یه سر دوباره به HTMX بزنیم و نهایتا توی یکی دو روز یک بازی تلگرامی شبیه کویز او کینگز بسازیم که یکم چالش های ساده مثل scoreboard و match making داشته باشه، در کل هم ساده باشه و دو روزه تموم شه.بنظرتون لایو باشه و توی دو تا لایو 8 9 ساعته انجامش بدیم (توی یوتیوب) و در نهایت ویدیوهاش رو توی کانال بذاریم، یا مثل ویدیوهای فعلی بشکونم و مرتبط شده توی 3 4 قسمت ادیت شده بذارم؟
👍3910
قراره توی عید یک بازی تلگرامی مشابه Quiz of Kings رو با هم توی چند تا یوتیوب از صفر تا صد پیاده‌سازی کنیم.

اولین لایو فردا جمعه ساعت ۱۲ شروع میشه و اگه میخواید لایو های بعدی رو از دست ندید توی کانال @MhrCode یا گروه @MhrCodeGp عضو بشید تا قبل از هر لایو تایم دقیقش رو بذارم.

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

لایو‌ها توی کانال یوتیوب https://youtube.com/@mhr_code خواهند بود

استکی که قراره باهاش بازی رو بسازیم: Golang, HTMX, Alpinejs
👍3518🔥7