کوه صبر هم باشی کم میاری در مقابل این حجم از درد
ای هدهد صبا به سبا میفرستمت
بنگر که از کجا به کجا میفرستمت
حیف است طایری چو تو در خاکدان غم
زین جا به آشیان وفا میفرستمت
در راه عشق مرحله قرب و بعد نیست
میبینمت عیان و دعا میفرستمت
هر صبح و شام قافلهای از دعای خیر
در صحبت شمال و صبا میفرستمت
تا لشکر غمت نکند ملک دل خراب
جان عزیز خود به نوا میفرستمت
ای غایب از نظر که شدی همنشین دل
میگویمت دعا و ثنا میفرستمت
در روی خود تفرج صنع خدای کن
کآیینهٔ خدای نما میفرستمت
تا مطربان ز شوق منت آگهی دهند
قول و غزل به ساز و نوا میفرستمت
ساقی بیا که هاتف غیبم به مژده گفت
با درد صبر کن که دوا میفرستمت
حافظ سرود مجلس ما ذکر خیر توست
بشتاب هان که اسب و قبا میفرستمت
@gocasts
ای هدهد صبا به سبا میفرستمت
بنگر که از کجا به کجا میفرستمت
حیف است طایری چو تو در خاکدان غم
زین جا به آشیان وفا میفرستمت
در راه عشق مرحله قرب و بعد نیست
میبینمت عیان و دعا میفرستمت
هر صبح و شام قافلهای از دعای خیر
در صحبت شمال و صبا میفرستمت
تا لشکر غمت نکند ملک دل خراب
جان عزیز خود به نوا میفرستمت
ای غایب از نظر که شدی همنشین دل
میگویمت دعا و ثنا میفرستمت
در روی خود تفرج صنع خدای کن
کآیینهٔ خدای نما میفرستمت
تا مطربان ز شوق منت آگهی دهند
قول و غزل به ساز و نوا میفرستمت
ساقی بیا که هاتف غیبم به مژده گفت
با درد صبر کن که دوا میفرستمت
حافظ سرود مجلس ما ذکر خیر توست
بشتاب هان که اسب و قبا میفرستمت
@gocasts
❤82👍10
Go Casts 🚀
تو اینستاگرام هم مجدد فعال شدیم دوست داشتید میتونید دنبال کنید https://instagram.com/gocasts.ir
چند روز پیش در مورد اعداد اعشاری و مشکلات دیتابیس در اینستاگرام صحبت کردیم، این مقاله به تازگی منتشر شده در همین مورد خوبه که بخونید
Working with Money in Postgres
https://www.crunchydata.com/blog/working-with-money-in-postgres
استوری های قبلی در هایلایت دیتابیس در اینستاگرام ذخیره شده
https://instagram.com/gocasts.ir
@gocasts.ir
Working with Money in Postgres
https://www.crunchydata.com/blog/working-with-money-in-postgres
استوری های قبلی در هایلایت دیتابیس در اینستاگرام ذخیره شده
https://instagram.com/gocasts.ir
@gocasts.ir
Crunchy Data
Working with Money in Postgres | Crunchy Data Blog
Elizabeth has a primer for working with money in Postgres including what data type to choose, storing currency, and some sample functions.
👍8
احتمالا Kent Beck رو بشناسید یا کتاب هاشو در حوزه مهندسی نرم افزار خونده باشید.
پیشنهاد میکنم مقالاتش رو دنبال کنید.
این یکی از تازه ترین مقالاتشه
To Design or Not To Design?
https://tidyfirst.substack.com/p/to-design-or-not-to-design
@gocasts
پیشنهاد میکنم مقالاتش رو دنبال کنید.
این یکی از تازه ترین مقالاتشه
To Design or Not To Design?
https://tidyfirst.substack.com/p/to-design-or-not-to-design
@gocasts
Software Design: Tidy First?
To Design or Not To Design?
A Third Good Question
🔥5❤2
موقعیت کارآموزی مهندسی نرم افزار (گولنگ)
شرکتی واقع در شرق تهران در حوزه تلکام فعالیت میکنه که به دنبال یک کارآموز در موقعیت مهندسی نرم افزار (گولنگ) هست.
مدت کارآموزی از یک تا سه ماه هست و فرصت استخدام بعد از پایان کارآموزی هم وجود داره.
کار بصورت حضوری هست و ۲ ساعت شناوری داره.
اگه تمایل دارید اقدام کنید رزومه های خودتون رو به این ایمیل ارسال کنید.
itsMohammadHeidari@gmail.com
@gocasts
شرکتی واقع در شرق تهران در حوزه تلکام فعالیت میکنه که به دنبال یک کارآموز در موقعیت مهندسی نرم افزار (گولنگ) هست.
مدت کارآموزی از یک تا سه ماه هست و فرصت استخدام بعد از پایان کارآموزی هم وجود داره.
کار بصورت حضوری هست و ۲ ساعت شناوری داره.
اگه تمایل دارید اقدام کنید رزومه های خودتون رو به این ایمیل ارسال کنید.
itsMohammadHeidari@gmail.com
@gocasts
👍13🔥1
تو قلب هر سیستمی یه تعداد حیاتی job و cronjob وجود داره، خوبه که تو طراحی سیستم تون سعی کنید بگونه ای پیش برید که ترجیحا از داشتن job بپرهیزید، چرا؟ چون داشتن job به این معنیه که شما کاری که میتونی در زمان رخداد event انجام بشه رو به زمان دیگری موکول کنی و اون زمان دیگه سیستم باید در یک بازه زمانی کوتاه، یه تعداد زیادی job رو انجام بده که خب مسائل scalability میتونه چالش برانگیز بشه.
البته طبیعتا یه سری مسائل هست که حین انجام رخداد قابل انجام نیست و شما باید در یک زمان معینی در آینده اون کار مشخص رو انجام بدی، به همین دلیل داشتن cronjob تقریبا اجتناب ناپذیره.
نکته ای که باید بهش توجه کنید اینه که cronjob ها میتونن کارهای حیاتی سیستم رو انجام بدن و قلب سیستم باشن، پس وقتی cronjob مینویسید خیلی به کدی که مینویسید دقت کنید.
این مقاله جدید تیم مهندسی slack هم جالبه، بخونید.
Executing Cron Scripts Reliably At Scale
https://slack.engineering/executing-cron-noscripts-reliably-at-scale
@gocasts
البته طبیعتا یه سری مسائل هست که حین انجام رخداد قابل انجام نیست و شما باید در یک زمان معینی در آینده اون کار مشخص رو انجام بدی، به همین دلیل داشتن cronjob تقریبا اجتناب ناپذیره.
نکته ای که باید بهش توجه کنید اینه که cronjob ها میتونن کارهای حیاتی سیستم رو انجام بدن و قلب سیستم باشن، پس وقتی cronjob مینویسید خیلی به کدی که مینویسید دقت کنید.
این مقاله جدید تیم مهندسی slack هم جالبه، بخونید.
Executing Cron Scripts Reliably At Scale
https://slack.engineering/executing-cron-noscripts-reliably-at-scale
@gocasts
slack.engineering
Executing Cron Scripts Reliably At Scale
Cron noscripts are responsible for critical Slack functionality. They ensure reminders execute on time, email notifications are sent, and databases are cleaned up, among other things. Over the years, both the number of cron noscripts and the amount of data these…
👍21❤9
تو دنیای cloud وقتی با containerها سر و کله میزنید، لازمه که دانش خوبی از container networking داشته باشید
یکی از بهترین سری مقالاتی که در این مورد هست رو بهتون معرفی میکنم، با دقت مطالعه کنید.
Mastering Container Networking
Learning Series
https://iximiuz.com/en/series/mastering-container-networking/
@gocasts
#container #network
یکی از بهترین سری مقالاتی که در این مورد هست رو بهتون معرفی میکنم، با دقت مطالعه کنید.
Mastering Container Networking
Learning Series
https://iximiuz.com/en/series/mastering-container-networking/
@gocasts
#container #network
👍26❤6🔥2
سلام دوستان
موقعیت شغلی بکند و گولنگ
نام شرکت: اوزون (زیر مجموعه گروه صنعتی گلرنگ)
نوع حضور : هیبرید
موقعیت شرکت: خیابان وزرا
عنوان شغلی: میدلول یا سنیور گولنگ
حداقل سابقه کار: ۲ سال
خیلی بهتر هست اگر
تجربه کار با rabbitMQ یا kafka
تجربه کار با elasticsearch
تجربه کار با redis
را داشته باشند
https://www.linkedin.com/posts/ozonesocial_cv-developer-aepaewaeaaewaeu-activity-7119217862568722433-LpCK?utm_source=share&utm_medium=member_desktop
@gocasts
موقعیت شغلی بکند و گولنگ
نام شرکت: اوزون (زیر مجموعه گروه صنعتی گلرنگ)
نوع حضور : هیبرید
موقعیت شرکت: خیابان وزرا
عنوان شغلی: میدلول یا سنیور گولنگ
حداقل سابقه کار: ۲ سال
خیلی بهتر هست اگر
تجربه کار با rabbitMQ یا kafka
تجربه کار با elasticsearch
تجربه کار با redis
را داشته باشند
https://www.linkedin.com/posts/ozonesocial_cv-developer-aepaewaeaaewaeu-activity-7119217862568722433-LpCK?utm_source=share&utm_medium=member_desktop
@gocasts
Linkedin
Join Our Zone as a Go Developer Extraordinaire! | Ozone Social | 12 comments
Join Our Zone as a Go Developer Extraordinaire!
If you are a Go developer with a passion for harnessing the language's unique paradigms, idioms, and syntax to create groundbreaking solutions, please send your #CV for us.
*Requirements:
- Proficiency in…
If you are a Go developer with a passion for harnessing the language's unique paradigms, idioms, and syntax to create groundbreaking solutions, please send your #CV for us.
*Requirements:
- Proficiency in…
👍14
سلام، وقت بخیر
اگه حداقل یک سال سابقه کار حرفه ای با react-native رو دارید و تمایل دارید به صورت تمام وقت و هیبرید (دورکاری، با یک یا دو روز حضور) همکاری کنید، لطفا فرم زیر رو پر کنید.
آگهی جذب برنامه نویس react native برای اقتصاد آنلاین
https://survey.porsline.ir/s/6GBwCX3r
@gocasts
اگه حداقل یک سال سابقه کار حرفه ای با react-native رو دارید و تمایل دارید به صورت تمام وقت و هیبرید (دورکاری، با یک یا دو روز حضور) همکاری کنید، لطفا فرم زیر رو پر کنید.
آگهی جذب برنامه نویس react native برای اقتصاد آنلاین
https://survey.porsline.ir/s/6GBwCX3r
@gocasts
👍3🔥2
دیتابیس PostgreSQL قابلیت Full-Text search داره که خیلی وقت ها میتونه نیازمندی هارو پوشش بده و لازم نباشه سرویسی مثل elasticsearch رو بصورت مجزا استفاده کرد. چون نگهداری و مدیریت هر سرویس جدید هم هزینه نیروی انسانی داره و هم هزینه زمانی و انتقال دانش و کسب تجربه و غیره.
این مقاله قابلیت های دیتابیس PostgreSQL برای Full-Text search رو بیان میکنه
Create an advanced search engine with PostgreSQL
https://xata.io/blog/postgres-full-text-search-engine
@gocasts
#database #postgres
این مقاله قابلیت های دیتابیس PostgreSQL برای Full-Text search رو بیان میکنه
Create an advanced search engine with PostgreSQL
https://xata.io/blog/postgres-full-text-search-engine
@gocasts
#database #postgres
👍35❤7🔥4
Go Casts 🚀
Voice message
تیمسازی - نقاشی روز
برای بچه های دوره یک ماهی میشه که الحمدلله تیمسازی رو شروع کردیم و تصمیم گرفتیم یه open-source customer data platform رو مثل segment.com ان شاءالله طراحی و پیاده سازی کنیم.
این طراحی اولیه ای هست که برای معماری سیستم بهش رسیدیم، قطعا این معماری اولیه کلی مشکل و نقص داره که باید کم کم بهتر بشه ان شاءالله.
ممنون از علیرضا جان بابت تر و تمیز کردن معماری
https://news.1rj.ru/str/ar_mokhtari
لینک توضیحات ویدیویی دوره
https://news.1rj.ru/str/gocasts/297
لینک سرفصل های دوره
https://gocasts.ir/downloads/GoCasts-Bootcamp-Syllabus-v1.0.0-14020314.pdf
لینک جزئیات و خرید دوره ویدیویی
https://gocasts.ir/gocasts-bootcamp-140110
@gocasts
برای بچه های دوره یک ماهی میشه که الحمدلله تیمسازی رو شروع کردیم و تصمیم گرفتیم یه open-source customer data platform رو مثل segment.com ان شاءالله طراحی و پیاده سازی کنیم.
این طراحی اولیه ای هست که برای معماری سیستم بهش رسیدیم، قطعا این معماری اولیه کلی مشکل و نقص داره که باید کم کم بهتر بشه ان شاءالله.
ممنون از علیرضا جان بابت تر و تمیز کردن معماری
https://news.1rj.ru/str/ar_mokhtari
لینک توضیحات ویدیویی دوره
https://news.1rj.ru/str/gocasts/297
لینک سرفصل های دوره
https://gocasts.ir/downloads/GoCasts-Bootcamp-Syllabus-v1.0.0-14020314.pdf
لینک جزئیات و خرید دوره ویدیویی
https://gocasts.ir/gocasts-bootcamp-140110
@gocasts
❤12👍4🔥4
Go Casts 🚀
سلام به همه دوستان احتمالا دیگه کسی نباشه که به نحوی با نوشتن به زبان فارسی سر و کله بزنه و با فونت بینظیر وزیر آشنا نباشه. سال هاست که از این فونت استفاده میکنم و بعد از اضافه شدنش به فونت های گوگل، تقریبا هر جا که بخوام فارسی بنویسم از فونت وزیر استفاده…
خدا رحمتش کنه، ان شاءالله روحش قرین رحمت الهی باشه، صابر کاری کرد که در زندگی دیجیتال روزمره همه ما تاثیر گذاشت و تقریبا اپلیکیشنی نیست که وقتی میخوام فارسی تایپ کنم داخلش دنبال فونت وزیر نگردم. صابر همیشه تو یاد ما میمونه تا ابد 🖤 💔
https://www.linkedin.com/feed/update/urn:li:share:7131581329975984129/
https://www.linkedin.com/feed/update/urn:li:share:7131581329975984129/
Linkedin
Sign Up | LinkedIn
500 million+ members | Manage your professional identity. Build and engage with your professional network. Access knowledge, insights and opportunities.
❤52
#php #devops
سلام به همه دوستان، مخصوصا دوستان خفن php developer و devops
یکی از دوستان من یه اپلیکیشن داره که با php توسعه داده شده، من dockerizeش کردم براش، ولی خیلی عملکرد نسخه dockerize شده روی vps با ۱۶ گیگ رم بدتر از نسخه ای هست که روی یه هاست cpanel هست.
حالا از دوستان خفن php و devops در مورد performance این اپلیکیشن php اگه میتونید راهنمایی کنید که چرا عملکرد اپلیکیشن روی مثلا یه هاست با CPanel خیلی بهتر از عملکرد همون اپلیکیشن روی vps با nginx بصورت dockerize شده هست؟
اینطوری بگم که برای تست لود با ۱۰ هزار درخواست تفاوت عملکرد مثلا روی cpanel عدد ۱۸۰ rps رو داره ولی روی vps که ۱۶ گیگ هم رم داره و ۸ هسته cpu داره حدود 40 rps هست؟
چه چیزایی میتونه کمک کنه عملکرد php در نسخه dockerize شده رو بهینه کرد؟
اینم مشخصاتیه که ممکنه کمک کنه
php: 7.4.33
OPCache: enabled
composer install --optimize-autoloader --no-dev
دو لایه nginx وجود داره که یکی ش gateway هست و صرفا proxy میکنه و یکی ش nginx داخل container خود php هست که nginx و fpm اونجا هستند، ولی واقعیتش فکر نمیکنم مشکل nginxها باشن چون تفاوت عملکرد خیلی زیاده، حدسم اینه یه چیزی در مورد خود تنظیمات fpm یا php یا docker باید انجام بشه، نمیدونم..
شما ایده ای ندارید؟
سلام به همه دوستان، مخصوصا دوستان خفن php developer و devops
یکی از دوستان من یه اپلیکیشن داره که با php توسعه داده شده، من dockerizeش کردم براش، ولی خیلی عملکرد نسخه dockerize شده روی vps با ۱۶ گیگ رم بدتر از نسخه ای هست که روی یه هاست cpanel هست.
حالا از دوستان خفن php و devops در مورد performance این اپلیکیشن php اگه میتونید راهنمایی کنید که چرا عملکرد اپلیکیشن روی مثلا یه هاست با CPanel خیلی بهتر از عملکرد همون اپلیکیشن روی vps با nginx بصورت dockerize شده هست؟
اینطوری بگم که برای تست لود با ۱۰ هزار درخواست تفاوت عملکرد مثلا روی cpanel عدد ۱۸۰ rps رو داره ولی روی vps که ۱۶ گیگ هم رم داره و ۸ هسته cpu داره حدود 40 rps هست؟
چه چیزایی میتونه کمک کنه عملکرد php در نسخه dockerize شده رو بهینه کرد؟
اینم مشخصاتیه که ممکنه کمک کنه
php: 7.4.33
OPCache: enabled
composer install --optimize-autoloader --no-dev
دو لایه nginx وجود داره که یکی ش gateway هست و صرفا proxy میکنه و یکی ش nginx داخل container خود php هست که nginx و fpm اونجا هستند، ولی واقعیتش فکر نمیکنم مشکل nginxها باشن چون تفاوت عملکرد خیلی زیاده، حدسم اینه یه چیزی در مورد خود تنظیمات fpm یا php یا docker باید انجام بشه، نمیدونم..
شما ایده ای ندارید؟
🔥5👍3❤1
برنامه هایی که با گولنگ نوشته میشن یکی از شایع ترین خطاهایی که در runtime و روی production باهاش مواجه میشن خطای panic از جنس nil pointer هست. که میتونه منجر به از کار افتادن برنامه هم بشه، هر چند راه هایی وجود داره که شما بتونید panic رو recover کنید، اما اصولا جواب بهتر اینه که سعی کنید قسمت هایی از کد که باعث ایجاد این دسته از panic ها میشن رو شناسایی کنید و مشکل رو از ریشه حل کنید.
شرکت Uber اخیر مقاله ای منتشر کرده که در این مورد توضیحات خوبی رو ارائه داده، دوست داشتید مطالعه کنید.
NilAway: Practical Nil Panic Detection for Go
یه پروژه open-source هم در همین رابطه منشتر کرده که من روی یکی از پروژه هام اجراش کردم و کلی statement پیدا کرد که این مشکل رو داره احتمالا.
خودش هشدار داده که پروژه در دست توسعه ست و ممکنه خطای false positive داشته باشید، ولی بد نیست به پروسه ci اضافه بشه یا حداقل لوکال چک کنید.
نصب و اجراشم ساده ست.
@gocasts
#golang
panic: runtime error: invalid memory address or nil pointer dereference
شرکت Uber اخیر مقاله ای منتشر کرده که در این مورد توضیحات خوبی رو ارائه داده، دوست داشتید مطالعه کنید.
NilAway: Practical Nil Panic Detection for Go
یه پروژه open-source هم در همین رابطه منشتر کرده که من روی یکی از پروژه هام اجراش کردم و کلی statement پیدا کرد که این مشکل رو داره احتمالا.
خودش هشدار داده که پروژه در دست توسعه ست و ممکنه خطای false positive داشته باشید، ولی بد نیست به پروسه ci اضافه بشه یا حداقل لوکال چک کنید.
نصب و اجراشم ساده ست.
go install go.uber.org/nilaway/cmd/nilaway@latest
nilaway ./...
@gocasts
#golang
👍40🔥6
اگه با conventional commit آشنایی ندارید پیشنهاد میکنم لینک زیر رو باز کنید.
https://www.conventionalcommits.org/en/v1.0.0-beta.2
به شما کمک میکنه commit message هایی که میزنید دارای ساختار مشخص باشه و همچنین بتونید از طریق این ساختار بصورت خودکار changelog بسازید و versioning رو خودکار انجام بدید و لازم نباشه هر بار دستی tag مربوط به version رو بزنید.
تو تیمسازی conventional commit رو به عنوان یه github action اضافه کردیم که ساختار Pull request noscriptها بهتر بشه.
این issueی هست که ثبت کردیم
https://github.com/ormushq/ormus/issues/7
و اینم pull requestی که بچه های تیمسازی زحمت کشیدن زدند.
https://github.com/ormushq/ormus/pull/10/files
تو تیمسازی قراره ان شاءالله اکثر کارهارو بچه ها انجام بدن و من بشینم بیرون گود و لذت ببرم. 🔥
ماشاءالله محمدحسین جان 🚀
https://www.linkedin.com/in/hossein-hajiha-75375a206/
@gocasts
#تیمسازی
https://www.conventionalcommits.org/en/v1.0.0-beta.2
به شما کمک میکنه commit message هایی که میزنید دارای ساختار مشخص باشه و همچنین بتونید از طریق این ساختار بصورت خودکار changelog بسازید و versioning رو خودکار انجام بدید و لازم نباشه هر بار دستی tag مربوط به version رو بزنید.
تو تیمسازی conventional commit رو به عنوان یه github action اضافه کردیم که ساختار Pull request noscriptها بهتر بشه.
این issueی هست که ثبت کردیم
https://github.com/ormushq/ormus/issues/7
و اینم pull requestی که بچه های تیمسازی زحمت کشیدن زدند.
https://github.com/ormushq/ormus/pull/10/files
تو تیمسازی قراره ان شاءالله اکثر کارهارو بچه ها انجام بدن و من بشینم بیرون گود و لذت ببرم. 🔥
ماشاءالله محمدحسین جان 🚀
https://www.linkedin.com/in/hossein-hajiha-75375a206/
@gocasts
#تیمسازی
👍19🔥2❤1
Go Casts 🚀
توضیحات معرفی دوره سلام دوستان، پیشنهاد میکنم این ویدیو رو در مورد جزئیات دوره مشاهده کنید. لینک جزئیات سرفصلهای دوره آموزشی و ثبتنام در دوره https://gocasts.ir/gocasts-bootcamp-140110?utm_source=telegram&utm_medium=message @gocasts
امروز تو جلسه تیمسازی با بچه های بوتکمپ در مورد نحوه ساخت writekey صحبت کردیم و نیازمندی هایی که داریم.
شما writekey رو یه unique id در نظر بگیرید.
سرویس segment که نمونه خارجی معروف و محبوب cdp هست یه پکیجی رو توسعه داده به اسم ksuid برای همین کار.
https://github.com/segmentio/ksuid
قبلا در مورد مشکلات uuid صحبت کردیم، که بخاطر مرتب نبودنشون خیلی مناسب نیستن برای استفاده کردن به عنوان id و primary key اینجا میتونید بخونید در موردشون
https://news.1rj.ru/str/gocasts/132
https://news.1rj.ru/str/gocasts/212
دیدن این ویدیو هم خالی از لطف نیست
How Shopify’s engineering improved database writes by 50% with ULID
https://www.youtube.com/watch?v=f53-Iw_5ucA
اینم یه پکیج گولنگی هست که میتونید استفاده کنید
https://github.com/oklog/ulid
اینم یه تصویری که راه حل های جایگزین رو نشون داده
https://miro.medium.com/v2/resize:fit:720/format:webp/1*Uk_poUK8O-l0ctfgecueFQ.png
@gocasts
#تیمسازی
شما writekey رو یه unique id در نظر بگیرید.
سرویس segment که نمونه خارجی معروف و محبوب cdp هست یه پکیجی رو توسعه داده به اسم ksuid برای همین کار.
https://github.com/segmentio/ksuid
قبلا در مورد مشکلات uuid صحبت کردیم، که بخاطر مرتب نبودنشون خیلی مناسب نیستن برای استفاده کردن به عنوان id و primary key اینجا میتونید بخونید در موردشون
https://news.1rj.ru/str/gocasts/132
https://news.1rj.ru/str/gocasts/212
دیدن این ویدیو هم خالی از لطف نیست
How Shopify’s engineering improved database writes by 50% with ULID
https://www.youtube.com/watch?v=f53-Iw_5ucA
اینم یه پکیج گولنگی هست که میتونید استفاده کنید
https://github.com/oklog/ulid
اینم یه تصویری که راه حل های جایگزین رو نشون داده
https://miro.medium.com/v2/resize:fit:720/format:webp/1*Uk_poUK8O-l0ctfgecueFQ.png
@gocasts
#تیمسازی
GitHub
GitHub - segmentio/ksuid: K-Sortable Globally Unique IDs
K-Sortable Globally Unique IDs. Contribute to segmentio/ksuid development by creating an account on GitHub.
🔥12👍3
سلام دوستان
یه سری توضیحات در مورد تیمسازی میدم خدمتتون.
توجه کنید که جلسات تیمسازی هم ضبط میشه، یعنی الان به جز ۲۷ جلسه آموزشی، ۱۰ جلسه تیمسازی یک و ۲ جلسه تیمسازی دو هم در اسپات پلیر در دسترس هست.
تو این جلسات در مورد چالش های فنی و غیر فنی پروژه های تیمسازی صحبت میکنیم.
تو تیمسازی بچه ها کد میزنن و بصورت جدی روی پروژه های واقعی کار میکنن که میتونه هم تجربه کاری شون رو بهتر کنه هم کلی چالش فنی و غیرفنی رو باهاش مواجه میشن.
جلسات تیمسازی هفتگی هست و اونجا به ریویو کد و تقسیم بندی کارها و انتقال دانش میپردازیم و همچنین خارج از جلسه تیمسازی کد بچه ها ریویو میشه.
اینم فیدبک عرفان جان با بیش از ۴ سال سابقه برنامه نویسی نسبت به دوره
لینکدین عرفان جان
https://www.linkedin.com/in/erfan-taghinia-547284163
لینک توضیحات ویدیویی دوره
https://news.1rj.ru/str/gocasts/297
لینک سرفصل های دوره
https://gocasts.ir/downloads/GoCasts-Bootcamp-Syllabus-v1.0.0-14020314.pdf
لینک جزئیات و خرید دوره ویدیویی
https://gocasts.ir/gocasts-bootcamp-140110
@gocasts
یه سری توضیحات در مورد تیمسازی میدم خدمتتون.
توجه کنید که جلسات تیمسازی هم ضبط میشه، یعنی الان به جز ۲۷ جلسه آموزشی، ۱۰ جلسه تیمسازی یک و ۲ جلسه تیمسازی دو هم در اسپات پلیر در دسترس هست.
تو این جلسات در مورد چالش های فنی و غیر فنی پروژه های تیمسازی صحبت میکنیم.
تو تیمسازی بچه ها کد میزنن و بصورت جدی روی پروژه های واقعی کار میکنن که میتونه هم تجربه کاری شون رو بهتر کنه هم کلی چالش فنی و غیرفنی رو باهاش مواجه میشن.
جلسات تیمسازی هفتگی هست و اونجا به ریویو کد و تقسیم بندی کارها و انتقال دانش میپردازیم و همچنین خارج از جلسه تیمسازی کد بچه ها ریویو میشه.
اینم فیدبک عرفان جان با بیش از ۴ سال سابقه برنامه نویسی نسبت به دوره
لینکدین عرفان جان
https://www.linkedin.com/in/erfan-taghinia-547284163
لینک توضیحات ویدیویی دوره
https://news.1rj.ru/str/gocasts/297
لینک سرفصل های دوره
https://gocasts.ir/downloads/GoCasts-Bootcamp-Syllabus-v1.0.0-14020314.pdf
لینک جزئیات و خرید دوره ویدیویی
https://gocasts.ir/gocasts-bootcamp-140110
@gocasts
👍10🔥6❤2
خیلی اوقات ناچار هستیم از راه های نامتمرکز برای ساخت شناسه استفاده کنیم. این مقاله شما رو با راهکارهای مختلف تولید شناسه بصورت نامتمرکز آشنا میکنه
7 Famous Approaches to Generate Distributed ID with Comparison Table
https://medium.com/bytebytego-system-design-alliance/7-famous-approaches-to-generate-distributed-id-with-comparison-table-af89afe4601f
@gocasts
7 Famous Approaches to Generate Distributed ID with Comparison Table
https://medium.com/bytebytego-system-design-alliance/7-famous-approaches-to-generate-distributed-id-with-comparison-table-af89afe4601f
@gocasts
Medium
7 Famous Approaches to Generate Distributed ID with Comparison Table
Nowadays, many small and large systems require unique global identifiers; it is an essential task in distributed computing with growing…
👍8
Go Casts 🚀
خیلی اوقات ناچار هستیم از راه های نامتمرکز برای ساخت شناسه استفاده کنیم. این مقاله شما رو با راهکارهای مختلف تولید شناسه بصورت نامتمرکز آشنا میکنه 7 Famous Approaches to Generate Distributed ID with Comparison Table https://medium.com/bytebytego-system-design…
بسی لذت بردم از خوندن این مقاله
درس بزرگش استفاده از راه حال های خیلی ساده حتی برای scale خیلی بزرگی مثل pinterest هست
یکی از نکات جالب این مقاله استفاده از دیتابیس های master بود و از slave فقط برای بکاپ استفاده میکردن، همه read و writeهای production روی master هست و دیگه مشکلی بابت lagهای slave که میتونه خیلی bug-prone باشه ندارن.
جالبه که در انتخاب دیتابیس maturity دیتابیس رو اولویت قرار دادن و دیتابیس MySQL رو به MongoDB و Cassandra ترجیح دادن با اینکه راه حل های مدرن تر قابلیت auto-scaling دارن. حقیقتا به شخصه هم MySQL رو دوست دارم، هم ساده ست و هم mature و هم کلی ابزار خوب مثل ProxySQL براش هست.
https://proxysql.com
برای shard کردن روی هر سرور EC2 یه سرویس MySQL بالا آوردن و هر سرویس MySQL در حالت master-master روی هاست بکاپ replicate میشه، این مستر بکاپ فقط برای وقتی هست که مستر اصلی fail بشه. روی پروداکشن همه read و writeها توسط master اصلی انجام میشه و این کار رو pinterest خیلی توصیه میکنه چون ساده میشه همه چیز.
هر نسخه از سرویس MySQL میتونه شامل چندین database باشه که اسم دیتابیس ها unique هست در سرتاسر ناوگان (کلاسترهای) MySQL. یه تصمیم دیگه ای هم که گرفتن اینه که وقتی داده ای در یک shard ذخیره میشه دیگه هیچ وقت به shard دیگه ای منتقل نمیشه. ولی برای افزایش ظرفیت یک shard میشه کل اون shard رو به یک ماشین دیگه منتقل کرد.
دغدغه دیگه شون هم طبیعتا ساخت uuid بوده
نحوه ساختن UUIDشون خیلی جالبه، اینطوریه که سه بخش داره، بخش اول میشه شناسه shard بخش دوم میشه شناسه جدول، مثلا جدول pin ها شناسه ش ۱ هست و بخش سوم هم میشه شناسه عددی id رکورد در جدول pins که یه auto-increment integer هست.
یکی از کارهای جالب دیگه شون اینه که جدول دیتابیس شون کلا یه فیلد blob داره که یه فیلد TEXT هست که داده های serializeشده json رو ذخیره میکنن. علتش هم اینه که میگن اضافه کردن ستون به دیتابیس توسط دستور alter table خیلی هزینه بر هست ولی اضافه کردن فیلد به json نه. سمت اپلیکیشن ها هم سعی میکنن برای فیلدهای جدید تعریف شده default value در نظر بگیرن که اگه داده قدیمی jsonی اون فیلدهارو نداشت مشکلی پیش نیاد.
برای edit کردن یک رکورد دیتابیس هم از select for update استفاده میکنن که read lock بگیرن روی اون record دیتابیس.
http://dev.mysql.com/doc/refman/5.7/en/innodb-locking-reads.html
Sharding Pinterest: How we scaled our MySQL fleet
https://medium.com/pinterest-engineering/sharding-pinterest-how-we-scaled-our-mysql-fleet-3f341e96ca6f
@gocasts
درس بزرگش استفاده از راه حال های خیلی ساده حتی برای scale خیلی بزرگی مثل pinterest هست
یکی از نکات جالب این مقاله استفاده از دیتابیس های master بود و از slave فقط برای بکاپ استفاده میکردن، همه read و writeهای production روی master هست و دیگه مشکلی بابت lagهای slave که میتونه خیلی bug-prone باشه ندارن.
جالبه که در انتخاب دیتابیس maturity دیتابیس رو اولویت قرار دادن و دیتابیس MySQL رو به MongoDB و Cassandra ترجیح دادن با اینکه راه حل های مدرن تر قابلیت auto-scaling دارن. حقیقتا به شخصه هم MySQL رو دوست دارم، هم ساده ست و هم mature و هم کلی ابزار خوب مثل ProxySQL براش هست.
https://proxysql.com
برای shard کردن روی هر سرور EC2 یه سرویس MySQL بالا آوردن و هر سرویس MySQL در حالت master-master روی هاست بکاپ replicate میشه، این مستر بکاپ فقط برای وقتی هست که مستر اصلی fail بشه. روی پروداکشن همه read و writeها توسط master اصلی انجام میشه و این کار رو pinterest خیلی توصیه میکنه چون ساده میشه همه چیز.
هر نسخه از سرویس MySQL میتونه شامل چندین database باشه که اسم دیتابیس ها unique هست در سرتاسر ناوگان (کلاسترهای) MySQL. یه تصمیم دیگه ای هم که گرفتن اینه که وقتی داده ای در یک shard ذخیره میشه دیگه هیچ وقت به shard دیگه ای منتقل نمیشه. ولی برای افزایش ظرفیت یک shard میشه کل اون shard رو به یک ماشین دیگه منتقل کرد.
دغدغه دیگه شون هم طبیعتا ساخت uuid بوده
نحوه ساختن UUIDشون خیلی جالبه، اینطوریه که سه بخش داره، بخش اول میشه شناسه shard بخش دوم میشه شناسه جدول، مثلا جدول pin ها شناسه ش ۱ هست و بخش سوم هم میشه شناسه عددی id رکورد در جدول pins که یه auto-increment integer هست.
یکی از کارهای جالب دیگه شون اینه که جدول دیتابیس شون کلا یه فیلد blob داره که یه فیلد TEXT هست که داده های serializeشده json رو ذخیره میکنن. علتش هم اینه که میگن اضافه کردن ستون به دیتابیس توسط دستور alter table خیلی هزینه بر هست ولی اضافه کردن فیلد به json نه. سمت اپلیکیشن ها هم سعی میکنن برای فیلدهای جدید تعریف شده default value در نظر بگیرن که اگه داده قدیمی jsonی اون فیلدهارو نداشت مشکلی پیش نیاد.
برای edit کردن یک رکورد دیتابیس هم از select for update استفاده میکنن که read lock بگیرن روی اون record دیتابیس.
http://dev.mysql.com/doc/refman/5.7/en/innodb-locking-reads.html
> BEGIN
> SELECT blob FROM db03429.pins WHERE local_id=7075733 FOR UPDATE
[Modify the json blob]
> UPDATE db03429.pins SET blob=’<modified blob>’ WHERE local_id=7075733
> COMMIT
Sharding Pinterest: How we scaled our MySQL fleet
https://medium.com/pinterest-engineering/sharding-pinterest-how-we-scaled-our-mysql-fleet-3f341e96ca6f
@gocasts
ProxySQL
Scale 100K+ connections
across thousands of servers
In the dynamic landscape of modern database management, optimizing performance and efficiently handling database traffic are paramount concerns for businesses of all sizes. Enter ProxySQL, a
across thousands of servers
In the dynamic landscape of modern database management, optimizing performance and efficiently handling database traffic are paramount concerns for businesses of all sizes. Enter ProxySQL, a
🔥28👍9❤2
نمونه فیلم دوره
فیلمی که اینجا preview شده توسط تلگرام از تیمسازی هست نه دوره، لینک های نمونه دوره رو که پایین تر گذاشتم باز کنید
برخی از دوستان خواسته بودن که نمونه فیلم هایی از دوره ارائه بدم.
ارائه فیلم نمونه از یه دوره ۲۷ جلسه ای خیلی کار سختیه
اما من سعی کردم چند نمونه بذارم.
سعی کردم خوب و بد رو بذارم چون قصد ندارم کسی رو با نمایش دادن فقط قسمت های صرفا خوب به اشتباه بندازم.
نمونه فیلم های دوره
مثلا نمونه اول از نظر کیفیت نور تصویر خودم خوب نیست (فکر کنم از ۲۷ جلسه ۲ جلسه ش این شکلیه)
https://gocasts.ir/downloads/1_gameapp_mysql_docker_sample.mkv
از سه جلسه solution design سعی کردم بخش هاییش رو بذارم
https://gocasts.ir/downloads/2_gameapp_solution_design_player_selection_sample.mkv
نمونه ای از پیاده سازی روی کد رو گذاشتم
https://gocasts.ir/downloads/2_gameapp_grpc_2_sample.mkv
نمونه ای هم از آموزش های مقدماتی (اینجا pointer رو توضیح دادم که جلوترش کد هم زدم ولی تو فیلم نیست)
https://gocasts.ir/downloads/session_3_6_pointer_1_sample.mkv
نمونه فیلم های تیمسازی
دقت کنید تیمسازی الان در حال انجامه و ربطی به دوره نداره و خیلی از جلساتش رو تو ماشین یا هرجا که بتونم برگزار میکنم که بچه ها بتونن کارشون رو پیش ببرن..
یه جلسه solution design داشتیم در تیمسازی این بخش هاییشه
https://gocasts.ir/downloads/teamsazi_session_5_14020822_sample.mkv
ریویوی کد رو معمولا داریم تو جلسات تیمسازی
https://gocasts.ir/downloads/teamsazi_session_10_14020912_sample.mkv
اینم باز ریویو کد در تیمسازی
https://gocasts.ir/downloads/teamsazi_session_11_14020919_sample.mp4
لینک جزییات و خرید دوره
https://gocasts.ir/gocasts-bootcamp-140110
@gocasts
فیلمی که اینجا preview شده توسط تلگرام از تیمسازی هست نه دوره، لینک های نمونه دوره رو که پایین تر گذاشتم باز کنید
برخی از دوستان خواسته بودن که نمونه فیلم هایی از دوره ارائه بدم.
ارائه فیلم نمونه از یه دوره ۲۷ جلسه ای خیلی کار سختیه
اما من سعی کردم چند نمونه بذارم.
سعی کردم خوب و بد رو بذارم چون قصد ندارم کسی رو با نمایش دادن فقط قسمت های صرفا خوب به اشتباه بندازم.
نمونه فیلم های دوره
مثلا نمونه اول از نظر کیفیت نور تصویر خودم خوب نیست (فکر کنم از ۲۷ جلسه ۲ جلسه ش این شکلیه)
https://gocasts.ir/downloads/1_gameapp_mysql_docker_sample.mkv
از سه جلسه solution design سعی کردم بخش هاییش رو بذارم
https://gocasts.ir/downloads/2_gameapp_solution_design_player_selection_sample.mkv
نمونه ای از پیاده سازی روی کد رو گذاشتم
https://gocasts.ir/downloads/2_gameapp_grpc_2_sample.mkv
نمونه ای هم از آموزش های مقدماتی (اینجا pointer رو توضیح دادم که جلوترش کد هم زدم ولی تو فیلم نیست)
https://gocasts.ir/downloads/session_3_6_pointer_1_sample.mkv
نمونه فیلم های تیمسازی
دقت کنید تیمسازی الان در حال انجامه و ربطی به دوره نداره و خیلی از جلساتش رو تو ماشین یا هرجا که بتونم برگزار میکنم که بچه ها بتونن کارشون رو پیش ببرن..
یه جلسه solution design داشتیم در تیمسازی این بخش هاییشه
https://gocasts.ir/downloads/teamsazi_session_5_14020822_sample.mkv
ریویوی کد رو معمولا داریم تو جلسات تیمسازی
https://gocasts.ir/downloads/teamsazi_session_10_14020912_sample.mkv
اینم باز ریویو کد در تیمسازی
https://gocasts.ir/downloads/teamsazi_session_11_14020919_sample.mp4
لینک جزییات و خرید دوره
https://gocasts.ir/gocasts-bootcamp-140110
@gocasts
👍16❤7🔥2