MHRCODE | برنامهنویسی با طعم توتفرنگی
Open in Telegram
آدرس ها: گروه: @MhrCodeGP ویرگول: virgool.io/@mhrlife مدیوم: medium.com/@mhrlife
Show more3 403
Subscribers
No data24 hours
-27 days
-2030 days
Posts Archive
دوره آموزش Golang - مزهکاو! - انتخاب زبان برنامه نویسی و تکنولوژیها و آمادهسازی محیط توسعه
توی این دوره قراره با استفاده از زبون Golang و دیتابیس MySQL با هم دیگه محصولی بسازیم که کاربرها بتونن به رستورانهای اطرافشون رای و امتیاز بدن و بقیه براساس لوکیشنشون نظرات ثبت شده روی رستورانهای اطرافشون رو ببینن.توی قسمت اول با هم دیگه تصمیم میگیریم چه تکنولوژی و زبونی رو انتخاب کنیم و با تخمین زدن 6 ماه آینده از over engineering می پرهیزیم. و در ادامه وقتی Golang و MySQL رو انتخاب کردیم! محیط توسعه لوکالمون رو با داکرکامپوز اماده میکنیم و به دیتابیس وصل میشیم.اگه سوالی داشتید توی گروه حتما بپرسید: https://t.me/MhrCodeGp https://youtu.be/4yKlc2tEwWU
🧑💻 تست نویسی رو از دانشگاه شروع کن! افزایش اعتماد به نفس و سرعت با unit test
فرقی نداره ترم اول دانشگاه باشی یا چندین ساله برنامه نویسی میکنی، نوشتن تست میتونه بهت کمک کنه سرعت توسعت بیشتر بشه، اعتماد به نفست بره بالا و ترست از دیپلوی کردن بریزه.
توی این ویدیو با هم در مورد این صحبت میکنیم تست چیه، چطور کمکمون میکنه، و چطور اولین تستمون رو بنویسیم. حتی کسی که ترم اول دانشگاهه!
https://youtu.be/IJ5axaX6iyo
ℹ️بهینهسازی کوئری با ایندکسهای ترکیبی و آشنایی با EXPLAIN ANALYZE - قسمت 5 دوره دیتابیس
توی این قسمت با هم می بینیم که دیتابیس تمام تلاشش رو میکنه از Indexهای تعریفی ما استفاده کنه تا کوئری بهینه بزنه، اما از یه جایی به بعد بهتره ایندکسهامون رو هوشمندانه تر تعریف کنیم. ایندکسهای ترکیبی یا Composite ایندکس به ما اجازه میدن سطرهامون رو براساس چندفیلد با هم مرتب کنیم و کوئریایی که 16ms طول میکشید رو به 0.5میلیثانیه بهبود بدیم.
https://youtu.be/4JFmwyy4K9Q
دنیای جذاب ایندکسها در MySQL و آشنایی با نحوه پیادهسازی آنها
یکی از روشهایی که برای بهبود عملکرد کوئریها انجام میدیم استفاده از ایندکسها هستش، اما اونها جادو نیستن و خوبه بدونیم چطور توی دیتابیس پیادهسازی میشن تا بهینه و درست ازشون استفاده کنیم
توی این ویدیو با هم در مورد نحوه پیادهسازی ایندکسها صحبت میکنیم و میبینیم دیتابیس چطور ازش استفاده میکنه که جواب ما رو سریع تر بده، و در نهایت دست به کد میشیم و جدولمون رو بهتر میکنیم
https://youtu.be/YLxSlVGUsu8
😊 تجربهها: آینده استارتاپ ها با هوش مصنوعی: ساخت نرمافزار تصحیح رایتینگ آیتلس با Go و OpenAI
امسال فرصت این رو داشتم چند ماه فولتایم با مدلهای #OpenAI کار کنم و تصمیم گرفتم توی این ویدیو تجربیاتم رو باهاتون به اشتراک بذارم.ابتدا با هم متوجه میشیم چرا #ChatGPT اتفاق مهمی هست! و چطور ازش استفاده کنیم، در مورد مسائلی که قبلا قابل حل نبودن و امروزه میشه با GPTها حلشون کرد صحبت میکنیم، یکم با پلتفرم OpenAI آشنا میشیم و پرامپهای اولیه مینویسیم، و در نهایت با #Golang و OpenAI یک نرمافزار میسازیم که رایتینگهای IELTS رو به شکل ساختارمند در قالب خروجی JSON تصحیح کنه و ما به شکل درخواه به کاربر نشون بدیم. https://youtu.be/ZUFlqERXmn4
قسمت سوم دوره پایههای دیتابیس - ساخت و مدیریت جداول، عملیاتهای CRUD
توی این دوره میخوایم مباحث پایهایی که برای ساخت اولین اپلیکیشنمون نیازه رو یاد بگیریم و توی این قسمت با هم یادمیگیریم چطور جدول بسازیم، اطلاعاتش رو ببینیم، عملیاتهای ساخت، ویرایش، آپدیت و حذف رو روی سطرها انجام بدیم (CRUD) و در نهایت متوجه میشیم primary key چی هست و چرا بهش نیاز داریم
https://youtu.be/f1gbbt7DMbM
تجربهها: سوتیایی که باعث شد کافهبازار بیاد پایین!
کار در #کافهبازاریکی از بهترین اتفاقهای زندگیم بود و از اون روزها فقط خاطره خوب یادم هست و خواستم یکی از خاطرات رو براتون تعریف کنم.توی این ویدیو در مورد شبی صحبت میکنم که متوجه شدم بخاطر آخرین مرج ریکوئست من صفحات اصلی کافهبازار دارن میان پایین و من و تیم لیدرم با هم افتادیم دنبال پیدا کردن علت این موضوع. توی این ویدیو در مورد مانیتورینگ صحبت میکنم و چطور در کنار لاگها به ما کمک میکنند برای پیدا کردن باگها و در نهایت فرهنگ post-mortem چی هست و چطور کمک شرکت میکنه که از یک چاله دوبار گزیده نشه. مشاهده در یوتیوب ▶️ https://youtu.be/dsDtnp8Nbt8
تفاوت و کاربردهای انواع مختلف دیتابیسها - قسمت دوم دوره پایههای دیتابیس
توی قسمت قبلی به این سوال که چرا اصلا به دیتابیس نیاز داریم؟ پاسخ دادیم و حالا توی این قسمت با هم متوجه میشیم چرا انواع مختلف دیتابیس وجود داره (با نقاط ضعف و قدرتشون آشنا میشیم) و توی شرکتها چطور ازشون کنار هم استفاده میشه، در نهایت برای این دوره یکی از دیتابیسها رو انتخاب میکنیم.
https://youtu.be/tOiQs_XRdS0
چرا به دیتابیسها نیاز داریم؟
قسمت اول دوره دیتابس از ابتدا آپلود شد، توی این دوره سعی میکنم از پایه برای دانشجویی که تازه مفاهیم کدنویسی رو متوجه شده شروع کنم تا قسمتهای آخر با هم برای سرویسهایی که لود بالا هست کوئریهای بهتر بزنیم و پرفورمنس اپلیکیشن رو به شدت بهبود بدیم
https://youtu.be/UHThAA1pi6U?si=_3UpU9ay0RH-xs1Q
ردیس خیلی سریعه اما نباید فراموش کنیم توی سیستمهای توزیع شده همیشه RTT یا Round Trip Time میتونه به شدت سرویسمون رو کند کنه
به این بهونه توی این ویدیو در مورد کامندهای مولتی و پایپلاین صحبت میکنم و اینکه چطور میتونیم با استفاده از Lua هم منطق Atomic پیچیده داشته باشیم هم در مواردی پرفورمنس رو بهتر کنیم
▶️ https://youtu.be/m5j4YUvuUmc
ردیس جایگزین Elasticsearch؟
ردیس ابزار بسیار قدرتمندی هست که معمولا فقط به عنوان کش استفاده میشه، اما ساختمانداده هایی که ارائه میده اونقدر قوی هست که علاوه بر کش، میشه باهاش سرچ های ترکیبی و پیچیده مثل سرچ جغرافیایی، براساس تگ، full-text و حتی Vector Search برای Embedding ها و سرچ معنایی انجام داد.
توی این ویدیو با هم با ابزار قدرتمند Redis Search آشنا میشیم.https://youtu.be/BhUuM2W-Ou4
قسمت هفتم: آشنایی با Streams در Redis - جایگزین کافکا و RabbitMQ؟
حتما بگم که Kafka و RabbitMQ ابزارهای قویایی هستند که از ابتدا برای این مسئله ساخته شده اند و Streams ردیس لزوما جایگزین اونها نیست، اما در مواردی با توجه به شرایط میتونه انتخاب بهتری برای محصول باشه و اشنایی باهاش و امکانات متفاوتش خالی از لطف نیستhttps://youtu.be/_IcgS_NuV-k ۱- اول در مورد Eventual Consistency صحبت میکنم با چند مثال واقعی که چرا اصلا بهش نیاز داریم؟ ۲- اشنایی با کامندهای اولیه و consumer group ها ۳- اشنایی با ack و مکانیزم مشابه DLQ برای هندل کردن Crash یا Errorها ۴- کافکا و RabbitMQ ابزارهای قویایی هستند و در چه شرایطی بنظرم streams میتونه انتخاب بهتری باشه؟
قسمت ششم آموزش ردیس: سرچ جغرافیایی
تا حالا براتون سوال شده چطور توی نرمافزارهایی مثل تاکسیهای آنلاین، نقشهها، دوستیابی و ...، براساس لوکیشن بین میلیونها سطر جستجو انجام میدن و خیلی سریع به کاربر پاسخ رو نشون میدن؟
1 - توی این ویدیو اول در مورد Geo Hash که توی اکثر تکنولوژیها مثل ردیس و ElasticSearch استفاده میشه صحبت میکنیم و توضیح میدم چطور پیچیدگی زمانی از o(n) به o(logn) کاهش پیدا میکنه. یعنی برای یک میلیون دیتا، جای یک میلیون مقایسه فقط 20 مقایسه نیازه انجام بشه.
2- بعد با کامندهای Geo Spatial آشنا میشیم و براساس لوکیشن توی ردیس سرچ انجام میدیم.
3- در آخر نشون میدم که Geo Spatialها در ردیس در اصل یک SortedSet هستن با کمک Geo Hash، و با کمکش مثال تگهای مرتبط در قسمت 5 رو بهبود میدیم و فقط توی مجموعه رستورانهای نزدیک کاربر جستجو انجام میدیم.
لینک ویدیو در یوتیوب: https://youtu.be/CdyG6aRTfl8
آشنایی با Sorted Set با سه مثال جذاب
لینک ویدیو: https://youtu.be/Mw53VLCJn-k?si=4NRNbxSuEUOewooM
1- توی این ویدیو اول در مورد ساختمان داده Sorted Set در ردیس صحبت میکنیم و شباهت و تفاوتهاش رو با Set متوجه میشیم.
2- یکی از معمولترین مثالهای Sorted Set پیادهسازی لیدربورد هست که با اون با این ساختمان داده بیشتر آشنا میشیم.
3- لیستی از غذاها میسازیم و به هر غذا تگ وزن دار میزنیم. برای مثال وزن گوشت در استیک بیشتراز قرمهسبزی هستش! بعد براساس تگهای ارسالی کاربر، براش یک لیست مرتب شده براساس وزنهای غذاها میسازیم و به کاربر نشون میدیم.
4- توی قسمت چهارم در مورد Job Queue صحبت کردیم و توی این قسمت در مورد این صحبت میکنم چطور میتونیم به یک سری از درخواست ها اولویت بدیم و مثلا اگر کاربر VIP داریم، توی با اولویت بالاتر درخواستش رو انجام بدیم. همچنین یک اشاره به کامندهای Blocking هم میکنم.
🔥 ردیس یکی از قدرتمندترین ابزار دنیای وب هست و توی این دوره میخوایم تمام امکاناتش رو با مثال از دنیای واقعی یاد بگیریم
از ردیس برای یک کش ساده گرفته تا لیدربورد بازیها، سرچ براساس تگ و مختصات، ریت لیمیتر، Global Lock، هوش مصنوعی و سرچ ماتریسی، و... استفاده میشه که توی این دوره میخوایم با هم دیگه تک تک ابزارهای ردیس رو با مثال از دنیای واقعی یاد بگیریم.
ردیس امروزه تقریبا توی تمام شرکتهای بزرگ استفاده میشه و اخیرا تبدیل به علتی شده که OpenAI تونسته ChatGPT رو scale کنه.
این دوره پیش نیاز دوره اصلیمون هست که قراره اپی شبیه اسنپفود پیادهسازی کنیملینک دوره توی یوتیوب: https://youtube.com/playlist?list=PLUKW34GJxYOYyPqmZK6ilgosi2VUglOT5&si=dhgbyQlQxdBxZ_sx
⏳ پیچیدگی زمانی (قسمت دوم) و هرآنچه از Big O Notation نیاز است بدانیم
توی قسمت قبل دیدیم که پیچیدگی زمانی بخشی جداناپذیر از بکاند هست. توی این قسمت به تعاریف مربوط بهش بخصوص big o notation و قوانینی که نیازهست یاد بگیریم میپردازیم.
طبق تجربه این چندسال من توی مصاحبههایی که با شرکتهای ایرانی و خارجی داشتم همین مطالبی که گفتم توی اکثر مصاحبهها بهش اشاره میشهhttps://youtu.be/yEA5ogvQvDU?si=t3GMGh2nWKVkV6FG
⏳پیچیدگی زمانی و ساختمان داده با مثالهایی از دنیای بکاند
۱. در مرحله اول یادمیگیریم پیچیدگی زمانی چیه و چه استفادهایی داره
۲. بعد با هم چند تا مثال حل میکنیم که با کمک اون متوجه میشیم با پیچیدگی زمانی میتونیم رفتار سیستم رو پیشبینی کنیم.
۳. بعد یک مثال شبیه دنیای واقعی میزنیم (شبیه پیدا کردن فروشگاه های نزدیک لوکیشن ما) که چطور با تغییر الگوریتم و بهبود پیچیدگی زمانی، جای ۵۰ ریکوئست برثانیه، میتونیم چند دههزار ریکوئست درثانیه پشتیبانی کنیم.
https://youtu.be/B3quYTQhAhc?si=S716Nef7vuiy-6Ez
سلام دوستان
برای ادامه ویدیوها باید یک ایده رو انتخاب کنیم و همون رو پیاده سازی کنیم.
من خودم این سهتا گزینه توی ذهنم بود شما هم حتما ایدهها تون رو بگید:
۱. تویتفا: یک سری ابزار مثل پیام ناشناس و کراشیاب! برای توییتر
۲.مزهکاو: به کاربرها براساس لوکیشنشون نظرات و رستورانهای اطرافشو نشون میدیم و کاربرا هم میتونن در مورد رستورانا نظر بدن
۳.یادگاران: کاربرها میتونن خاطرات و نوشتههاشون رو ارسال کنن و بقیه میتونن نوشتهها رو بخونن
سلام به همه 👋
بخش دوم قسمت چهارم اپلود شد که توی اون در مورد موازیسازی و همروندی در Golang صحبت میکنیم. این قسمت برای من خیلی جذابه چون یه نیم نگاه میکنیم چرا Go برای اینجور کارا خیلی قدرتمنده
https://youtu.be/LsRuK6iXTDs?si=Dr24kRwC2TL_78bF
سلام به همه
قسمت چهارم آپلود شد. توی این قسمت با هم مفاهیم اولیه و سینتکس Golang رو یاد میگیریم.
https://youtu.be/xrFfbMDW97M
