MHRCODE | برنامه‌نویسی با طعم توت‌فرنگی – Telegram
MHRCODE | برنامه‌نویسی با طعم توت‌فرنگی
3.42K subscribers
22 photos
1 video
116 links
آدرس ها:
گروه: @MhrCodeGP
ویرگول: virgool.io/@mhrlife
مدیوم: medium.com/@mhrlife
Download Telegram
قسمت ششم آموزش ردیس: سرچ جغرافیایی

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

1 - توی این ویدیو اول در مورد Geo Hash که توی اکثر تکنولوژی‌ها مثل ردیس و ElasticSearch استفاده میشه صحبت میکنیم و توضیح میدم چطور پیچیدگی زمانی از o(n) به o(logn) کاهش پیدا میکنه. یعنی برای یک میلیون دیتا، جای یک میلیون مقایسه فقط 20 مقایسه نیازه انجام بشه.

2- بعد با کامند‌های Geo Spatial آشنا میشیم و براساس لوکیشن توی ردیس سرچ انجام میدیم.

3- در آخر نشون میدم که Geo Spatialها در ردیس در اصل یک SortedSet هستن با کمک Geo Hash، و با کمکش مثال تگ‌های مرتبط در قسمت 5 رو بهبود میدیم و فقط توی مجموعه رستوران‌های نزدیک کاربر جستجو انجام میدیم.

لینک ویدیو در یوتیوب: https://youtu.be/CdyG6aRTfl8
👍18🔥95
قسمت هفتم: آشنایی با Streams‌ در Redis - جایگزین کافکا و RabbitMQ؟

حتما بگم که Kafka و RabbitMQ ابزارهای قوی‌ایی هستند که از ابتدا برای این مسئله ساخته شده اند و Streams ردیس لزوما جایگزین اونها نیست، اما در مواردی با توجه به شرایط میتونه انتخاب بهتری برای محصول باشه و اشنایی باهاش و امکانات متفاوتش خالی از لطف نیست


https://youtu.be/_IcgS_NuV-k

۱- اول در مورد Eventual Consistency صحبت میکنم با چند مثال واقعی که چرا اصلا بهش نیاز داریم؟
۲- اشنایی با کامند‌های اولیه و consumer group ها
۳- اشنایی با ack و مکانیزم مشابه DLQ برای هندل کردن Crash یا Errorها
۴- کافکا و RabbitMQ ابزار‌های قوی‌ایی هستند و در چه شرایطی بنظرم streams میتونه انتخاب بهتری باشه؟
21👍3🔥2
ردیس جایگزین Elasticsearch؟

ردیس ابزار بسیار قدرتمندی هست که معمولا فقط به عنوان کش استفاده میشه، اما ساختمان‌داده هایی که ارائه میده اونقدر قوی هست که علاوه بر کش، میشه باهاش سرچ های ترکیبی و پیچیده مثل سرچ جغرافیایی، براساس تگ، full-text و حتی Vector Search برای Embedding ها و سرچ معنایی انجام داد.

توی این ویدیو با هم با ابزار قدرتمند Redis Search آشنا میشیم.


https://youtu.be/BhUuM2W-Ou4
🔥117👍1
ردیس خیلی سریعه اما نباید فراموش کنیم توی سیستم‌های توزیع شده همیشه RTT یا Round Trip Time میتونه به شدت سرویسمون رو کند کنه

به این بهونه توی این ویدیو در مورد کامند‌های مولتی و پایپلاین صحبت میکنم و اینکه چطور میتونیم با استفاده از Lua هم منطق Atomic پیچیده داشته باشیم هم در مواردی پرفورمنس رو بهتر کنیم

▶️ https://youtu.be/m5j4YUvuUmc
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥184👍2
چرا به دیتابیس‌ها نیاز داریم؟

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

https://youtu.be/UHThAA1pi6U?si=_3UpU9ay0RH-xs1Q
30👍1🔥1
تفاوت و کاربردهای انواع مختلف دیتابیس‌ها - قسمت دوم دوره پایه‌های دیتابیس

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

https://youtu.be/tOiQs_XRdS0
11
تجربه‌ها: سوتی‌ایی که باعث شد کافه‌بازار بیاد پایین!

کار در #کافه‌بازاریکی از بهترین اتفاق‌های زندگیم بود و از اون روزها فقط خاطره خوب یادم هست و خواستم یکی از خاطرات رو براتون تعریف کنم.


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

مشاهده در یوتیوب
▶️ https://youtu.be/dsDtnp8Nbt8
Please open Telegram to view this post
VIEW IN TELEGRAM
29🔥9👍2
قسمت سوم دوره پایه‌های دیتابیس - ساخت و مدیریت جداول، عملیات‌های CRUD

توی این دوره میخوایم مباحث پایه‌ایی که برای ساخت اولین اپلیکیشنمون نیازه رو یاد بگیریم و توی این قسمت با هم یادمیگیریم چطور جدول بسازیم، اطلاعاتش رو ببینیم، عملیات‌های ساخت، ویرایش، آپدیت و حذف رو روی سطرها انجام بدیم (CRUD) و در نهایت متوجه میشیم primary key چی هست و چرا بهش نیاز داریم
https://youtu.be/f1gbbt7DMbM
15
😊 تجربه‌ها: آینده استارتاپ ها با هوش مصنوعی: ساخت نرم‌افزار تصحیح رایتینگ آیتلس با 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