💬 پاول دورف موسس #تلگرام تو مصاحبه اخیرش گفته که:
✅ کدنویسی تلگرام رو برادرش انجام داده و خودش هم مدیر محصول تلگرام هس.
✅ هر امکاناتی که به تلگرام اضافه میشه، ایده شخص خودشه.
✅ صد درصد مالکیت کمپانی هم به خودش تعلق داره.
✅ کمپانی تلگرام واحد منابع انسانی و جذب نیرو نداره و کلا ۳۰ تا مهندس داره و برنامهنویسهاشو از بین مسابقاتی که برگذار میکنه انتخاب میکنه.
💙 میگه ما بهترینِ بهترینِ بهترینهارو انتخاب میکنیم.
❗️خیلی جالبه ۹۰۰ میلیون کاربر توسط ۳۰ نفر مدیریت میشه👌🏻
🔹پاول دورف با ۱۵.۵ میلیارد دلار ثروت میگه که هیچ کدوم از چیزهایی که بقیه پولدارها مثل هواپیما و کشتی و حتی خونه دارن رو من ندارم (مستأجر هست).
🔹فلسفش اینه که هرگونه دارایی، باعث میشه که سرم به اونا گرم بشه و وقتم رو بگیره و منو از هدفم دور کنه.
🔹میگه ترجیح میدم تمام وقتم رو بذارم برای بستری که به میلیونها نفر اجازه میده باهم در ارتباط باشن، تا اینکه دغدم رو بذارم برای دیزاین خونهام، جایی که فقط خودم و اطرافیانم میتونیم ازش استفاده کنیم.
🔹میگه اولویت اول تلگرام از همون ابتدا حفظ امنیت کاربرانش بوده و برای همین همیشه از سمت دولتهای مختلف تحت فشار قرار گرفته که اطلاعات کاربران رو بده.
🔹مجبور شده از کشورش روسیه بزنه بیرون و در آمریکا هم میخواستن بکشنش. در اروپا هم بهش اجازه کار و جذب نیرو نمیدادن. ۷ ساله تو اماراته و تنها دولتی بوده که اذیتش نکرده.
🔹میگه من به آزادی بیان اعتقاد دارم و درخواست دولتهارو رد میکنم. تنها فشار اساسی از طرف اپل و گوگل بوده که خیلی جاها باید بهش تن بده تا تلگرام از اپاستور و گوگلپلی حذف نشه.
🔹تلگرام با ۹۰۰ میلیون کاربر تا حالا یکبار هم برای جذب کاربر تبلیغات انجام نداده.
🔹ازش پرسید که چطوری تونستی بدون تبلیغات به چنین چیزی برسی؟ میگه چون آدمها باهوشن. محصول خوب که میبینن، سرعت و امنیت و امکاناتش رو که از نزدیک لمس میکنن دیگه بیخیالش نمیشن و تازه به هم معرفیش هم میکنن.
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
✅ کدنویسی تلگرام رو برادرش انجام داده و خودش هم مدیر محصول تلگرام هس.
✅ هر امکاناتی که به تلگرام اضافه میشه، ایده شخص خودشه.
✅ صد درصد مالکیت کمپانی هم به خودش تعلق داره.
✅ کمپانی تلگرام واحد منابع انسانی و جذب نیرو نداره و کلا ۳۰ تا مهندس داره و برنامهنویسهاشو از بین مسابقاتی که برگذار میکنه انتخاب میکنه.
💙 میگه ما بهترینِ بهترینِ بهترینهارو انتخاب میکنیم.
❗️خیلی جالبه ۹۰۰ میلیون کاربر توسط ۳۰ نفر مدیریت میشه👌🏻
🔹پاول دورف با ۱۵.۵ میلیارد دلار ثروت میگه که هیچ کدوم از چیزهایی که بقیه پولدارها مثل هواپیما و کشتی و حتی خونه دارن رو من ندارم (مستأجر هست).
🔹فلسفش اینه که هرگونه دارایی، باعث میشه که سرم به اونا گرم بشه و وقتم رو بگیره و منو از هدفم دور کنه.
🔹میگه ترجیح میدم تمام وقتم رو بذارم برای بستری که به میلیونها نفر اجازه میده باهم در ارتباط باشن، تا اینکه دغدم رو بذارم برای دیزاین خونهام، جایی که فقط خودم و اطرافیانم میتونیم ازش استفاده کنیم.
🔹میگه اولویت اول تلگرام از همون ابتدا حفظ امنیت کاربرانش بوده و برای همین همیشه از سمت دولتهای مختلف تحت فشار قرار گرفته که اطلاعات کاربران رو بده.
🔹مجبور شده از کشورش روسیه بزنه بیرون و در آمریکا هم میخواستن بکشنش. در اروپا هم بهش اجازه کار و جذب نیرو نمیدادن. ۷ ساله تو اماراته و تنها دولتی بوده که اذیتش نکرده.
🔹میگه من به آزادی بیان اعتقاد دارم و درخواست دولتهارو رد میکنم. تنها فشار اساسی از طرف اپل و گوگل بوده که خیلی جاها باید بهش تن بده تا تلگرام از اپاستور و گوگلپلی حذف نشه.
🔹تلگرام با ۹۰۰ میلیون کاربر تا حالا یکبار هم برای جذب کاربر تبلیغات انجام نداده.
🔹ازش پرسید که چطوری تونستی بدون تبلیغات به چنین چیزی برسی؟ میگه چون آدمها باهوشن. محصول خوب که میبینن، سرعت و امنیت و امکاناتش رو که از نزدیک لمس میکنن دیگه بیخیالش نمیشن و تازه به هم معرفیش هم میکنن.
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
Factors to Consider in Database Selection - by Alex Xu.pdf
4.4 MB
#bytebytego #tips #pro_guide
Factors to Consider in Database Selection
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
Factors to Consider in Database Selection
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
From 0 to Millions_ A Guide to Scaling Your App - Part 3.pdf
2.1 MB
#bytebytego #tips #pro_guide
From 0 to Millions A Guide to Scaling Your App
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
From 0 to Millions A Guide to Scaling Your App
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
How Discord Serves 15-Million Users on One Server.pdf
3.7 MB
#bytebytego #tips #pro_guide
How Discord Serves 15-Million Users on One Server
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
How Discord Serves 15-Million Users on One Server
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
سوال مصاحبه: مزایای استفاده از BFF را بیان کنید.
۱. Diverse Frontend Needs: یک اپلیکیشن موبایل، یک برنامه وب، و یک تلویزیون هوشمند نیازمندی های متفاوتی دارند.
۲. Performance Optimization: دستگاه های موبایل ممکن است در شبکه های کندتری باشند و قدرت پردازش کمتری داشته باشند. BFF به ما اجازه میدهد که داده را برای هر دستگاه بهینه کنیم و برنامه responsive باشد.
۳. Simplified Frontend Logic: با BFF فرانت اند ها نیاز ندارند که با مایکروسرویس های مختلف صحبت کنند بلکه یک بک اندی دارند که داده ها را برایشان aggregate و پردازش می کند.
۴. Enhanced User Experience: با در نظر گرفتن نیاز و توانایی های هر دستگاه BFF مطمئن میشود که هر کاربر بهترین تجربه را صرف نظر از دستگاهش دارد.
۵. Easier Maintenance and Upgrades: چون هر بک اند فرانت اند خاص خودش را دارد انجام تغییرات ساده تر میشود. می توانیم بک اند موبایل را آپدیت کنیم بدون اینکه بک اند وب را تغییر دهیم.
۶. Security: به ما امکان میدهد که برای هر کلاینت الزامات امنیتی خاص خودش را داشته باشیم. مثلا ممکن است authentication در اپ mobile با وب فرق کند.
۷. Agility: تیم ها می توانند به طور مستقل روی BFF خود کار کنند، و پروسه توسعه سریعتر شود.
۸. Scalability: چون هر فرانت اند، بک اند خودش را دارد، راحت تر میتوان قسمت هایی از سیستم را مستقل از بقیه قسمت ها Scale کرد.
۹. Consistency: می تواند به ارائه یک API سازگار کمک کند. وقتی مایکروسرویس های مختلف تغییر میکنند ما یک لایه stable در جلو آنها داریم که consistent است.
۱۰. Version Control: اپلیکیشن های فرانت قدیمی ممکن است به ورژن های قدیمی تر بک اند نیاز داشته باشند. BFF این امکان را به ما میدهد که هر فرانت اند ورژن مورد نیاز بک اند خود را دریافت کند.
۱۱. Cross Functional Teams: این الگو به ما کمک میکند تا تیم هایی داشته باشیم که قابلیت های end-to-end توسعه دهند. یعنی وقتی یک functionality نیاز است از فرانت تا بک اند آن را یک تیم خاص توسعه دهد که همکاری و سرعت تحویل بالا میرود.
۱۲. Facilitates A/B Testing: به AB تستینگ کمک می کند. چون میتوانیم یک فیچر جدید را در یک فرانت اند خاص تست کنیم بدون اینکه سایر بک اند ها را تغییر دهیم.
۱۳. Localization and Internationalization: ممکن است برای مناطق مختلف فرانت اند های مختلفی داشته باشیم در این صورت میتوانیم بک اند را خاص فیچر های آن منطقه سفارشی کنیم.
۱۴. Handling Legacy Systems: در حین گذر از مونولیت به مایکروسرویس BFF مانند پلی بین فرانت اند های جدید برای تعامل با سیستم های legacy عمل میکند.
۱۵. Reduces Bandwidth Usage: اگر فقط داده هایی که برای دستگاه موبایل نیاز است را به آن بفرستیم پهنای باند کمتری مصرف میشود.
۱۶. Error Handling and Resilience: وقتی خطایی وجود دارد ممکن است بخواهیم در Web app و موبایل به نحو متفاوتی آن را مدیریت کنیم.
17. Feature Flagging: می توانیم یه سری فیچر ها را فقط در یک سری از فرانت اند ها داشته باشیم.
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
۱. Diverse Frontend Needs: یک اپلیکیشن موبایل، یک برنامه وب، و یک تلویزیون هوشمند نیازمندی های متفاوتی دارند.
۲. Performance Optimization: دستگاه های موبایل ممکن است در شبکه های کندتری باشند و قدرت پردازش کمتری داشته باشند. BFF به ما اجازه میدهد که داده را برای هر دستگاه بهینه کنیم و برنامه responsive باشد.
۳. Simplified Frontend Logic: با BFF فرانت اند ها نیاز ندارند که با مایکروسرویس های مختلف صحبت کنند بلکه یک بک اندی دارند که داده ها را برایشان aggregate و پردازش می کند.
۴. Enhanced User Experience: با در نظر گرفتن نیاز و توانایی های هر دستگاه BFF مطمئن میشود که هر کاربر بهترین تجربه را صرف نظر از دستگاهش دارد.
۵. Easier Maintenance and Upgrades: چون هر بک اند فرانت اند خاص خودش را دارد انجام تغییرات ساده تر میشود. می توانیم بک اند موبایل را آپدیت کنیم بدون اینکه بک اند وب را تغییر دهیم.
۶. Security: به ما امکان میدهد که برای هر کلاینت الزامات امنیتی خاص خودش را داشته باشیم. مثلا ممکن است authentication در اپ mobile با وب فرق کند.
۷. Agility: تیم ها می توانند به طور مستقل روی BFF خود کار کنند، و پروسه توسعه سریعتر شود.
۸. Scalability: چون هر فرانت اند، بک اند خودش را دارد، راحت تر میتوان قسمت هایی از سیستم را مستقل از بقیه قسمت ها Scale کرد.
۹. Consistency: می تواند به ارائه یک API سازگار کمک کند. وقتی مایکروسرویس های مختلف تغییر میکنند ما یک لایه stable در جلو آنها داریم که consistent است.
۱۰. Version Control: اپلیکیشن های فرانت قدیمی ممکن است به ورژن های قدیمی تر بک اند نیاز داشته باشند. BFF این امکان را به ما میدهد که هر فرانت اند ورژن مورد نیاز بک اند خود را دریافت کند.
۱۱. Cross Functional Teams: این الگو به ما کمک میکند تا تیم هایی داشته باشیم که قابلیت های end-to-end توسعه دهند. یعنی وقتی یک functionality نیاز است از فرانت تا بک اند آن را یک تیم خاص توسعه دهد که همکاری و سرعت تحویل بالا میرود.
۱۲. Facilitates A/B Testing: به AB تستینگ کمک می کند. چون میتوانیم یک فیچر جدید را در یک فرانت اند خاص تست کنیم بدون اینکه سایر بک اند ها را تغییر دهیم.
۱۳. Localization and Internationalization: ممکن است برای مناطق مختلف فرانت اند های مختلفی داشته باشیم در این صورت میتوانیم بک اند را خاص فیچر های آن منطقه سفارشی کنیم.
۱۴. Handling Legacy Systems: در حین گذر از مونولیت به مایکروسرویس BFF مانند پلی بین فرانت اند های جدید برای تعامل با سیستم های legacy عمل میکند.
۱۵. Reduces Bandwidth Usage: اگر فقط داده هایی که برای دستگاه موبایل نیاز است را به آن بفرستیم پهنای باند کمتری مصرف میشود.
۱۶. Error Handling and Resilience: وقتی خطایی وجود دارد ممکن است بخواهیم در Web app و موبایل به نحو متفاوتی آن را مدیریت کنیم.
17. Feature Flagging: می توانیم یه سری فیچر ها را فقط در یک سری از فرانت اند ها داشته باشیم.
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
How do We Design for High Availability_.pdf
2 MB
#bytebytego #tips #pro_guide
How do We Design for High Availability
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
How do We Design for High Availability
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
❤2🎉1🍾1
How to avoid crawling duplicate URLs at Google scale.pdf
638.8 KB
#bytebytego #tips #pro_guide
How to avoid crawling duplicate URLs at Google scale
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
How to avoid crawling duplicate URLs at Google scale
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
🍾4
پاول دورف: اپل با حذف تلگرام از اپ استور، گل بهخودی زد
https://www.zoomit.ir/software-application/419979-telegram-ceo-remove-app-store-china-apple/
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
https://www.zoomit.ir/software-application/419979-telegram-ceo-remove-app-store-china-apple/
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
🍾8
Forwarded from Gopher Academy (Bardia.go)
🐧 نشست ۱۵ ام جامعه لینوکسی شیراز
🟢 موضوع ارائه : معرفی زبان GO
🐦 ارائه دهنده : محسن بخشنده
🐧 رزومه ارائه دهنده : Golang Backend Develope, DevOps enginee, Cloud Computing
🗓تاریخ : چهارشنبه ۵ ام اردیبهشت ماه
⏰ساعت : ۱۶:۰۰ الی ۱۸:۰۰
📍مکان: بلوار مدرس، بلوار آزادگان، کارخانه نوآوری شیراز طبقه دوم انتهای سالن اتاق آموزشی
حامی برگزاری : کارخانه نوآوری شیراز 🍀
حضور برای عموم رایگان میباشد
⭕️ با توجه به محدودیت های ظرفیت برای شرکت کنندگان و مدل رایگان بودن این رویداد، جهت حفظ ارزش آفرینی عدم حضور شما بعد از ثبتنام به منزله اضافه شدن نام شما به لیست شرکت کنندگان بد قول جامعه های فعال ما خواهد شد و در صورت تکرار مجدد، از حضور در رویدادهای رایگان جامعه لینوکسی شیراز به صورت رایگان محدود خواهید شد.
جهت ثبت نام روی لینک زیر کلیک کنید👇🏻
https://shirazlinuxcommunity.ir/event-15
📍Location
OSM : OpenStreetMap
GoogleMap : GoogleMap
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
🟢 موضوع ارائه : معرفی زبان GO
🐦 ارائه دهنده : محسن بخشنده
🐧 رزومه ارائه دهنده : Golang Backend Develope, DevOps enginee, Cloud Computing
🗓تاریخ : چهارشنبه ۵ ام اردیبهشت ماه
⏰ساعت : ۱۶:۰۰ الی ۱۸:۰۰
📍مکان: بلوار مدرس، بلوار آزادگان، کارخانه نوآوری شیراز طبقه دوم انتهای سالن اتاق آموزشی
حامی برگزاری : کارخانه نوآوری شیراز 🍀
حضور برای عموم رایگان میباشد
⭕️ با توجه به محدودیت های ظرفیت برای شرکت کنندگان و مدل رایگان بودن این رویداد، جهت حفظ ارزش آفرینی عدم حضور شما بعد از ثبتنام به منزله اضافه شدن نام شما به لیست شرکت کنندگان بد قول جامعه های فعال ما خواهد شد و در صورت تکرار مجدد، از حضور در رویدادهای رایگان جامعه لینوکسی شیراز به صورت رایگان محدود خواهید شد.
جهت ثبت نام روی لینک زیر کلیک کنید👇🏻
https://shirazlinuxcommunity.ir/event-15
📍Location
OSM : OpenStreetMap
GoogleMap : GoogleMap
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
OpenStreetMap
Way: 502915795
OpenStreetMap is a map of the world, created by people like you and free to use under an open license.
اگر برای محیط توسعه localhost نیاز به HTTPS داشتیدو برای TLS certificateو امضای آن استفاده از mkcert یا local-ssl-proxy یا ... حتی خود openssl براتون سخته
استفاده از anchor lcl یک راه کار ساده است
https://github.com/anchordotdev/cli
#DevTwitter
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
استفاده از anchor lcl یک راه کار ساده است
https://github.com/anchordotdev/cli
#DevTwitter
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
GitHub
GitHub - anchordotdev/cli
Contribute to anchordotdev/cli development by creating an account on GitHub.
در کرنل لینوکس NUMA چیست؟ به زبان ساده
فرض کنید کامپیوتر شما یه خونه آپارتمانیه. توی این خونه چندتا اتاق (گره) هست که هر کدوم تخت خواب (پردازنده) و کمد (حافظه) دارن.
تو معماری معمولی، همه تختها و کمدها توی یه اتاق بزرگ هستن. این میتونه برای کسایی که توی همون اتاق زندگی میکنن (برنامههایی که به حافظه و پردازش زیادی نیاز دارن) خوب باشه، ولی میتونه برای کسایی که توی اتاقهای دیگه زندگی میکنن (برنامههایی که به حافظه و پردازش کمتری نیاز دارن) مشکلساز باشه.
با توجه با این NUMA مثل اینه که یه سری از تختها و کمدها رو به اتاقهای دیگه ببریم. این کار به کسایی که توی همون اتاق زندگی میکنن کمک میکنه که سریعتر به تختها و کمدهاشون دسترسی داشته باشن، بدون اینکه منتظر بمونن بقیه که توی اتاقهای دیگه هستن ازشون استفاده کنن.
مثلا فرض کنید یه برنامه پایگاه داده دارین که به حافظه و پردازش زیادی نیاز داره. تو یه سیستم NUMA میتونین این برنامه رو طوری تنظیم کنین که توی یه گره اجرا بشه که حافظه و پردازندههای بیشتری داره. این کار به برنامه کمک میکنه که سریعتر به اطلاعات و قدرت پردازشی که نیاز داره دسترسی پیدا کنه، و میتونه عملکردش رو خیلی بهتر کنه.
در کل NUMA میتونه سرعت کار رو با کم کردن زمان دسترسی به حافظه، مخصوصاً برای برنامههایی که به حافظه زیاد نیاز دارن، بهتر کنه.
DevTwitter | <Linuxor/>
➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
فرض کنید کامپیوتر شما یه خونه آپارتمانیه. توی این خونه چندتا اتاق (گره) هست که هر کدوم تخت خواب (پردازنده) و کمد (حافظه) دارن.
تو معماری معمولی، همه تختها و کمدها توی یه اتاق بزرگ هستن. این میتونه برای کسایی که توی همون اتاق زندگی میکنن (برنامههایی که به حافظه و پردازش زیادی نیاز دارن) خوب باشه، ولی میتونه برای کسایی که توی اتاقهای دیگه زندگی میکنن (برنامههایی که به حافظه و پردازش کمتری نیاز دارن) مشکلساز باشه.
با توجه با این NUMA مثل اینه که یه سری از تختها و کمدها رو به اتاقهای دیگه ببریم. این کار به کسایی که توی همون اتاق زندگی میکنن کمک میکنه که سریعتر به تختها و کمدهاشون دسترسی داشته باشن، بدون اینکه منتظر بمونن بقیه که توی اتاقهای دیگه هستن ازشون استفاده کنن.
مثلا فرض کنید یه برنامه پایگاه داده دارین که به حافظه و پردازش زیادی نیاز داره. تو یه سیستم NUMA میتونین این برنامه رو طوری تنظیم کنین که توی یه گره اجرا بشه که حافظه و پردازندههای بیشتری داره. این کار به برنامه کمک میکنه که سریعتر به اطلاعات و قدرت پردازشی که نیاز داره دسترسی پیدا کنه، و میتونه عملکردش رو خیلی بهتر کنه.
در کل NUMA میتونه سرعت کار رو با کم کردن زمان دسترسی به حافظه، مخصوصاً برای برنامههایی که به حافظه زیاد نیاز دارن، بهتر کنه.
DevTwitter | <Linuxor/>
➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
❤6 4 3
How to Choose a Message Queue_ - ByteByteGo Newsletter.pdf
2.6 MB
#bytebytego #tips #pro_guide
How to Choose a Message Queue
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
How to Choose a Message Queue
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers