Go Casts 🚀 – Telegram
Go Casts 🚀
7.67K subscribers
279 photos
20 videos
13 files
497 links
VP of Eng Zarinpal | Ex Snapp! Senior SE
فوق لیسانس هوش مصنوعی از دانشگاه تهران

اشتراک محتوا در مورد مهندسی نرم افزار، هوش مصنوعی، گولنگ
https://gocasts.ir

پروفایل
https://www.linkedin.com/in/gohossein

ارتباط
@lifography

Ai for Software
@aicasts_ir
Download Telegram
گزارش نظرسنجی JetBrains برای سال ۲۰۲۴ منتشر شده که نتایج جالبی داره.

زبان Go و Rust دو تا زبانی هست که بیشترین adoption را داشتند.

همچنین گولنگ بیشتر از هر زبان دیگه ای برای توسعه web service و cloud service داره استفاده میشه.

گولنگ در لیست زبان های top-paid دوم هست بعد از scala.

گزارش کامل رو اینجا میتونید بخونید
https://www.jetbrains.com/lp/devecosystem-2024/


@gocasts
👍202
اگه میخوای بیشتر در مورد انواع ایندکس های دیتابیس بدونی پیشنهاد میکنم این سری آموزش ویدیویی از PlanetScale رو ببین.

دیدن ش دید عمیق تری بهت میده که بهتر از ایندکس ها استفاده کنی.

لیست موضوعاتی که پوشش داده
Introduction to indexes
B+ trees
Primary keys
Secondary keys
Primary key data types
Where to add indexes
Index selectivity
Prefix indexes
Composite indexes
Covering indexes
Functional indexes
Indexing JSON columns
Indexing for wildcard searches
Fulltext indexes
Invisible indexes
Duplicate indexes
Foreign keys

https://planetscale.com/learn/courses/mysql-for-developers/indexes/introduction-to-indexes

How do Database Indexes Work?
https://planetscale.com/blog/how-do-database-indexes-work


@gocasts
👍22
Go Casts 🚀
اگه میخوای بیشتر در مورد انواع ایندکس های دیتابیس بدونی پیشنهاد میکنم این سری آموزش ویدیویی از PlanetScale رو ببین. دیدن ش دید عمیق تری بهت میده که بهتر از ایندکس ها استفاده کنی. لیست موضوعاتی که پوشش داده Introduction to indexes B+ trees Primary keys Secondary…
ولادت شاه مردان، امیرالمومنین، علی علیه السلام به همه دوستان مبارک

تخفیف روز پدر رو میتونید استفاده کنید تو سایت که نسبت به تخفیف فعلی ۵۰ درصد، ۶۰۰ هزار تومان بیشتر بهتون تخفیف میده

PEDAR

خرید از سایت
https://gocasts.ir

لینک توضیحات
https://news.1rj.ru/str/gocasts/572

روز پدر و مرد بر شما مبارک، ان شاءالله همیشه خوب و خوش و سلامت باشید، سایه تون مستدام باشه بالا سر خانواده تون
دمتون گرم، یا علی ❤️


@gocasts
94😁11👍2🔥1
Go Casts 🚀
اگه میخوای بیشتر در مورد انواع ایندکس های دیتابیس بدونی پیشنهاد میکنم این سری آموزش ویدیویی از PlanetScale رو ببین. دیدن ش دید عمیق تری بهت میده که بهتر از ایندکس ها استفاده کنی. لیست موضوعاتی که پوشش داده Introduction to indexes B+ trees Primary keys Secondary…
تو دیتابیس ها یه مفهومی وجود داره به اسم clustered index که در مقابلش non clustered index قرار میگیره

خب این clustered index یعنی چی؟ یعنی اینکه ترتیبی که داده ها در ایندکس قرار میگیرن، همون ترتیبی هست که داده ها در فایل و دیسک ذخیره میشن.

بنابراین هر جدول دیتابیس فقط میتونه یه clustered index داشته باشه که معمولا primary key هست.

کجا ها clustered index مهمه؟ جاهایی که شما range query یا sequential scan داری مهم میشه

چرا مهم میشه؟ چون دیتابیس با تعداد io کمتر رکوردهارو از فایل و دیسک fetch میکنه

حالا قرار دادن یه guid مثل uuid به عنوان primary key چه بلایی سر clustered index میاره؟ عملا رکوردهایی که در ایندکس دارن مرتب میشن میتونن تو فایل های مختلفی از دیسک scatter بشن و هزینه fetch کردن شون در کوئری های range رو بالا ببره.

یه سری دیتابیس ها یه سری بهبود برای این قضیه دارن، مثلا یه implicit primary key خودشون در نظر میگیرن که incremental integer هست و اون رو clustered index در نظر میگیرن.

Be careful with GUID as clustered index
https://blog.novanet.no/careful-with-guid-as-clustered-index/


@gocasts
👍402
هفته نامه Golang Nugget رو اگه دوست داشتید دنبال کنید.
منابع خوبی رو معرفی میکنه
این یه نمونه ش هست

https://golangnugget.com/p/go-concurrency-upgrade-strategies-memory-management-january-6-2024

این خبرنامه رو آقا لیام عزیز مدیریت میکنه
https://x.com/liammanesh


@gocasts
👍84
ویکی postgresql یه لیستی از anti-patternهارو لیست کرده و در موردشون توضیح داده، خوبه که لیست رو ببینید، احتمالش زیاده همین الان، در لحظه چند تا از این anti-patternهارو در حال استفاده باشید که بهتره جایگزین کنید.
مثلا NOT IN یا BETWEEN شاید استفاده ش کم نباشه تو کوئری ها.

https://wiki.postgresql.org/wiki/Don%27t_Do_This


@gocasts
👍23🔥1
آفر از هف هشتاد 🔥 (فیدبک در تصویر)

دوستمون از هف هشتاد آفر گرفته و در نهایت هم در یه شرکت دیگه استخدام شد (آفر یه شرکت دیگه رو بصورت دورکاری قبول کرد)

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


خرید از سایت با تخفیف ۵۰ درصد
https://gocasts.ir

همه چیز در مورد دوره و تیمسازی در این پست توضیح داده شده
https://news.1rj.ru/str/gocasts/434

تو این پست هم میتونید فیدبک های دوره و تیمسازی و استخدام بچه هارو بخونید
https://news.1rj.ru/str/gocasts/441

دوستانی که در خرید دوره تردید دارند میتونن برای مشاوره کوتاه تلفنی، فرم زیر رو پر کنند که باهاشون تماس بگیرم
https://survey.porsline.ir/s/ATeQL4b4

@gocasts
🔥25👍3
🖥 وبینار چطور طراحی سیستم خوبی باشیم؟

⌛️ یکشنبه 7 بهمن ساعت 19

سلام دوستان با صهیب جان، قراره در مورد طراحی سیستم با هم صحبت کنیم، اگه دوست داشتید شرکت کنید، لطفا فرم زیر رو پر کنید
https://survey.porsline.ir/s/sMLIZIRg

📌کانال تلگرامی Go Casts :
@gocasts

📌کانال ارتقای شغلی و کاریابی برنامه نویسی:
@webinar_farsi
🔥25👍6👏1
Go Casts 🚀
🖥 وبینار چطور طراحی سیستم خوبی باشیم؟ ⌛️ یکشنبه 7 بهمن ساعت 19 سلام دوستان با صهیب جان، قراره در مورد طراحی سیستم با هم صحبت کنیم، اگه دوست داشتید شرکت کنید، لطفا فرم زیر رو پر کنید https://survey.porsline.ir/s/sMLIZIRg 📌کانال تلگرامی Go Casts : @gocasts…
استخدام در شیپور - برنامه نویس گولنگ 🔥
یکی دیگه از بچه های دوره رو به دوستان عزیز در شیپور معرفی کردیم و الحمدلله استخدام شد، قطعا تجربه، تخصص و تلاش خودش مهم ترین فاکتور این استخدام بوده.

یکی از هدف های مهم Go Casts کامل کردن زنجیره آموزش، شبکه سازی و استخدام هست. که علاوه بر آموزش تلاش می کنیم به لطف شرکت های فعال زنجیره شناسایی، معرفی و استخدام افراد مستعد رو کامل کنیم.

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

وبینار فردا رو بیش از ۵۰۰ نفر ثبت نام کردن، احتمالا باید یه جایی stream کنیم جلسه رو. اگه پلتفرم بدون فیلتر خوب برای stream کردن میشناسید معرفی کنید لطفا.

وقت داشتید و دوست داشتید وبینار رو شرکت کنید، تو بخش هایی از وبینار در مورد نقش تیمسازی در بهبود مهارت طراحی سیستم صحبت میشه.


خرید از سایت با تخفیف ۵۰ درصد
https://gocasts.ir

همه چیز در مورد دوره و تیمسازی در این پست توضیح داده شده
https://news.1rj.ru/str/gocasts/434

تو این پست هم میتونید فیدبک های دوره و تیمسازی و استخدام بچه هارو بخونید
https://news.1rj.ru/str/gocasts/441

دوستانی که در خرید دوره تردید دارند میتونن برای مشاوره کوتاه تلفنی، فرم زیر رو پر کنند که باهاشون تماس بگیرم
https://survey.porsline.ir/s/ATeQL4b4

@gocasts
🔥144👍3
یکی از دغدغه های مهمی که مهندسین نرم افزار دارن اینه که چطور میتونن مهارت خودشون رو در طراحی سیستم تقویت کنن، تو این ویدیو سعی کردم در این رابطه توضیحاتی رو ارائه بدم.

لینک ویدیو در یوتیوب
https://youtu.be/cwK773TtDJQ

با تشکر از صهیب کیانی بابت میزبانی جلسه

با کد تخفیف SOHEIB میتونید با ۵۰۰ هزار تومان تخفیف بیشتر دوره + تیمسازی گولنگ و بکند Go Casts رو از سایت خریداری کنید.
https://gocasts.ir


@gocasts
🔥28👍6
Go Casts 🚀
یکی از دغدغه های مهمی که مهندسین نرم افزار دارن اینه که چطور میتونن مهارت خودشون رو در طراحی سیستم تقویت کنن، تو این ویدیو سعی کردم در این رابطه توضیحاتی رو ارائه بدم. لینک ویدیو در یوتیوب https://youtu.be/cwK773TtDJQ با تشکر از صهیب کیانی بابت میزبانی جلسه…
how-to-be-good-software-architecture.pdf
4.8 MB
فایل ارائه محتوای «چطور طراح سیستم خوبی باشیم»


سلام دوستان، عید مبعث پیامبر مهربانی مبارک باشه 🌹🌺

اگه حوصله نداشتید ویدیو رو ببینید شاید مطالعه همین فایل هم یه سری نکات رو بتونه منتقل کنه


@gocasts
55👍14👏2
Go Casts 🚀
مصاحبه هایی که انجام میدید یه برگ برنده دارید که دست خودتونه، اونم تجربیات شماست، سعی کنید به قدری تجربیات فنی تون رو خوب بیان کنید، که مصاحبه کننده قبل از پرسش هر سوالی قانع بشه که شما به اندازه کافی خوب هستید، معمولا تجربیات شما رو قبل از سوالات دیگه ای…
مصاحبه رو لطفا با آرایش تهاجمی شروع کنید دوستان، این از نظر من خیلی خیلی مهمه! اگه دفاعی کار کنید احتمالا هم soft skill تون رو درست بروز نمیدید و هم hard skill رو.

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

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

پست قبلی در همین رابطه رو هم اینجا میتونید بخونید
https://news.1rj.ru/str/gocasts/547

@gocasts
👍414🔥2
سلام دوستان، اگه تمایل داشتید رویداد اسپارک رو شرکت کنید، ارائه هاش جالب به نظر میاد.

https://news.1rj.ru/str/ce_spark/104

این یه سری از ارائه هاشونه
https://news.1rj.ru/str/ce_spark/112
https://news.1rj.ru/str/ce_spark/111
https://news.1rj.ru/str/ce_spark/108

کد تخفیف ۳۰ درصدی GoCasts رو هم میتونید استفاده کنید.

هزینه ای نداره و فکر میکنم واقعا ارزش شرکت داره، هم مجازی میشه شرکت کرد هم حضوری.

این پستی که گذاشتم تبلیغ یا افیلیت نیست بچه ها
دمتون گرم

@gocasts
👍7🔥4
Go Casts 🚀
استخدام در شیپور - برنامه نویس گولنگ 🔥 یکی دیگه از بچه های دوره رو به دوستان عزیز در شیپور معرفی کردیم و الحمدلله استخدام شد، قطعا تجربه، تخصص و تلاش خودش مهم ترین فاکتور این استخدام بوده. یکی از هدف های مهم Go Casts کامل کردن زنجیره آموزش، شبکه سازی و استخدام…
تخفیف ویژه اعیاد شعبانیه 🌺🌹

سلام دوستان
ولادت امام حسین علیه السلام و اعیاد شعبانیه مبارک


خرید از سایت با تخفیف ۵۰ درصد + ۸۰۰ هزار تومان با کد تخفیف ویژه اعیاد شعبانیه
HOSSEIN

خرید از سایت
https://gocasts.ir

همه چیز در مورد دوره و تیمسازی در این پست توضیح داده شده
https://news.1rj.ru/str/gocasts/434

تو این پست هم میتونید فیدبک های دوره و تیمسازی و استخدام بچه هارو بخونید
https://news.1rj.ru/str/gocasts/441

دوستانی که در خرید دوره تردید دارند میتونن برای مشاوره کوتاه تلفنی، فرم زیر رو پر کنند که باهاشون تماس بگیرم
https://survey.porsline.ir/s/ATeQL4b4

@gocasts
35👍5
Go Casts 🚀
الگوی queue-based load leveling چه مزیت هایی به سرویس ما میتونه بده؟ https://youtu.be/RT91S6-jfXk خرید دوره با تخفیف ۵۰ درصد + ۸۰۰ هزار تومان با کد تخفیف ویژه اعیاد شعبانیه HOSSEIN خرید از سایت https://gocasts.ir
اینقدر از هوش مصنوعی نترسید، کسی از آینده خبر نداره و سرعت تحولات هوش مصنوعی هم اینقدر زیاده که نمیشه خیلی تحلیل درستی ازش داشت. اما چیزی که دست من و شماست اینه که در لحظه مسیری که برامون مشخصه رو پیش بریم و کاری که از دستمون بر میاد رو خوب انجام بدیم.
فکر میکنم ابزارهای هوش مصنوعی کم کم به بلوغ میرسن و جزیی از کار روزمره ما میشن، همونطور که دیتابیس و چیزای دیگه شدن، پس بهتره این ابزارها و نحوه کارکردشون رو کم کم یاد بگیریم.
در لحظه هم هوش مصنوعی بیشتر از اون که جای مارو بگیره یه ابزار کمکی خیلی قوی برای کار و یادگیری هست. در آینده هم احتمالا هوش مصنوعی بیشتر از اینکه شغل حذف کنه، شغل جدید ایجاد میکنه و احتمالا برنامه نویس ها شرایط مناسب تری برای تطبیق پذیری با شغل های جدید و کسب شغل جدید دارن، پس با جدیت راه خودتون رو جلو برید، ان شاءالله با توکل به خدا بهترین نتیجه رو میگیرد.

@gocasts
👍588
بهتره برنامه گولنگی که مینویسید بتونه از panicهای احتمالای recover کنه خودش رو، چون اگه recover نشه برنامه crash میکنه و باعث میشه کل functionalityهای سرویس (برنامه) بره رو هوا. البته اگه مثلا روی kuber باشید یا با docker-compose باشه یا حتی daemon باشه میتونید restart کنید بصورت خودکار برنامه رو، اما خب اگه اون تیکه از برنامه که داره panic میکنه در hot path باشه خیلی زود مجدد مشکل بوجود میاد.

یه نکته مهمی که در مورد goroutineها وجود داره اینه که اگه شما روی goroutine اصلی (parent) مکانیزم recover در نظر بگیرید تاثیری روی goroutine ساخته شده child نداره و اگه child به هر دلیلی panic کنه ریکاور نمیشه.

خب حالا سوال پیش میاد که ما باید روی هر goroutineی که در برنامه میسازیم یا همون اصطلاحا spawn میشه مکانیزم recover در نظر بگیریم؟
جواب واضحی براش ندارم ولی چند تا نکته دارم که فکر میکنم کمک کنه.
یکی اینکه روی پروسه های long-runningتون حتما panic recover بذارید، مثلا اگه http server دارید معمولا خودشون یه recover middleware دارن فریمورک ها که میشه فعالش کرد.
اگه مثلا یه goroutine دارید که broker consumer هست خوبه که panic recover داشته باشه.
اگه جایی استفاده پیچیده از channelها دارید که confidence ندارید روی فهم communicationشون، چون روی close شدن panic میکنه بهتره recover داشته باشید.

در مورد goroutineهایی که lifetime کوتاهی دارن مثلا قراره یه sms ارسال کنه یا یه http request بزنه لازم نیست تنظیم بشه احتمالا. ولی بهتره یه سری اصول رو کلا رعایت کنید که از panic پرهیز بشه، مثلا تا جایی که میشه و لازم نیست از pointer استفاده نکنید…

این مقاله کوتاه یه تیکه کد آماده کرده که panic رو راحت تر ریکاور کنید در توابع مختلف
Recover panics in all Goroutines you start
https://dev.ribic.ba/recover-panics-goroutines/

نکته آخری هم که دارم اینه که استفاده از panic recover نباید به عنوان یه practice عمومی همه جا استفاده بشه، وجود panic احتمالی نشانه ای برای وجود باگ در پیاده سازی ست که بهتره ریشه موضوع و مشکل پیدا بشه و حل بشه، داشتن ریکاور صرفا برای اینه که تا زمان پیدا کردن مشکل سیستم بصورت reliable کارش رو ادامه بده.

تو تابع panic recover بهتره به اندازه کافی لاگ و متریک خوب بذارید که زودتر مشکل رو پیدا کنید.

@gocasts
👍3010🔥3
سازنده Redis که چند وقتی میشه مجدد به تیم Redis برگشته، در بلاگ شخصی ش یه پست گذاشته و یه سری practice های رایج رو مورد انتقاد قرار داده و میگه که ما با این کارها داریم دنیای نرم افزار رو خراب میکنیم.

مثلا اشاره داره به اینکه وقتی به جوونترا توصیه میکنیم don't invent the wheel و چرخ رو از اول نساز، یعنی بهشون اجازه نمیدیم که بفهمن ابزارها چطوری کار میکنن و این خوب نیست

با اینکه میگیم کد نباید کامنت داشته باشه خوب نیست

یا اینکه دغدغه مون شده سرعت تولید نرم افزار به جای طراحی درست نرم افزار

خلاصه دل پری دارن ایشون :)

We are destroying software
https://antirez.com/news/145

@gocasts
👍7911
تو جلسات code review به چه چیزایی گیر بدیم؟

اینی که میگم صرفا تجربه شخصی من هست و لزوما همه نکاتش درست نیست و همه جا جواب نده!

من سعی میکنم فضای ذهنی تیم رو برای code review به گونه ای آماده کنم که به صورت incremental نحوه ریویو کد تغییر کنه.
مثلا تو جلسه اول یا جلسات اولیه خوبه که به جزیی ترین نکات کد گیر داده بشه و کلا merge requestها کوچیک باشن که بشه سختگیرانه تر ریویو کرد.

هر چقدر که جلسات کد ریویو جلوتر میره سعی میکنم بیشتر روی ساختار کد از نظر معماری و نکات طراحی و چالش های پیاده سازی خاص سخت گیری کنم و دیگه به جزییات کدهای تیپیکال کمتر توجه کنم. چرا؟ چون انتظار دارم بصورت تدریجی هر چقدر که جلو میریم افراد تیم با باید و نبایدهای ریویو بیشتر آشنا شده باشن و نکات معمولی رو رعایت کنن.
استفاده از ابزارهای lint در ci هم میتونه کمک کنه که یه سری سختگیری های ریویو توسط ci انجام بشه و تمرکز reviewer روی همون چالش های اصلی کد باقی بمونه.
همچنین داشتن unit test و end to end test هم میتونه کمک کنه که از نظر لاجیک بیزینسی و functionality صحت سنجی خودکاری در سطح ci رخ بده و در جلسه ریویو کمتر لازم باشه به این نکات توجه بشه.

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

داشتن جلسات solution design و ساختار کد یکپارچه هم کمک میکنه چالش های ریویو کد کمتر بشه چون یکنواختی کد خودش یعنی رعایت کردن اصول مد نظر تیم توسط برنامه نویس.

کلا ریویو کردن کد به عوامل خیلی متنوعی بستگی داره و از جنس بیزینس و کد گرفته تا معماری و ساختار تیم و خیلی چیزای دیگه میتونن تاثیر بذارن روی نحوه برگزاریش و نمیشه یه سری practice خاص رو روی همه پروژه ها اعمال کرد.

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

@gocasts
👍426