Tech Stuff
1.25K subscribers
306 photos
2 videos
11 files
68 links
Download Telegram
طراحی یک Unique ID Generator در سیستم‌های توزیع‌شده

این پست ۴ روش برای طراحی چنین سیستمی رو بررسی می‌کنه:
- multi-master replication
- UUID
- ticket server
- Twitter snowflake

#system_design #system_design_interview_volume_1

@techstuff100
❤10🔥1👏1
مفهومی وجود داره به اسم Chaos Engineering یا مهندسی آشوب. توش سعی می‌کنیم خرابی‌هایی رو که ممکنه توی دنیای واقعی اتفاق بیفتن، به‌صورت کنترل‌شده توی سیستم شبیه‌سازی کنیم. مثلا یکی از سرویس‌ها رو از دسترس خارج کنیم یا تاخیر شبکه رو بالا ببریم و ببینیم بقیه سیستم چه واکنشی نشون میده.

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

اینجا در موردش بیشتر بخونین.

#system_design

@techstuff100
👍8❤4👏1
توی backtracking جواب رو مرحله به مرحله می‌سازیم. الگوریتم هر وقت تشخیص بده که اون جواب جزئی نمی‌تونه منجر به یه جواب معتبر بشه، ازش backtrack می‌کنه. باهاش معمولا مسائل ترکیبیاتی مثل جایگشت‌ها (permutation) و ترکیب‌ها و پازل‌هایی مثل سودوکو رو حل می‌کنیم.

مسئله Letter Combinations of a Phone Number لیتکد رو هم می‌تونین برای تمرین backtracking حل کنین.

#algorithm

@techstuff100
❤4🤔1
اگه یه مهارت باشه که لازمه به خودمون اضافه کنیم تا ریسک شغلی مون کمتر بشه مهارت بررسی و investigate کردن proactive محصول برای بهبودشه. یعنی صبر نکنیم تا یکی بهمون بگه چی بسازیم و خودمون دنبال مشکل ها و فرصت های بهبود محصول بگردیم.

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

برای اینکه یاد بگیریم چطور این کارو بکنیم خوندن این مطالب میتونه مفید باشه

1. The Product-Minded Software Engineer - Gergely Orosz
https://blog.pragmaticengineer.com/the-product-minded-engineer/

2. Product Discovery - Marty Cagan
https://www.svpg.com/product-discovery/

3. Continuous Discovery Habits - Teresa Torres
https://www.producttalk.org/continuous-discovery-habits/



@gocasts
❤9👏2👍1
حمله Password Spraying

این حمله نوعی از حمله brute force هست که در اون مهاجم یه پسورد یکسان رو روی تعداد زیادی اکانت تست می‌کنه. اثرگذاری این حمله هم به این برمی‌گرده که بعضی از کاربران از پسورد‌های ساده مثل "12345678" و یا "password" استفاده می‌کنن.

نحوه انجامش هم اینطوریه که مهاجم اول یه لیست از نام کاربری‌ها مثل کارکنان یه شرکت و همینطور یه لیست از پسورد‌های رایج یا پیشفرض بدست میاره. بعد هر پسورد رو با تعداد زیادی از نام کاربری‌ها تست می‌کنه و بعد سراغ پسورد بعدی میره. معمولا بین تلاش‌ها هم فاصله می‌ذاره تا احتمال شناسایی حمله یا قفل شدن اکانت‌ها کمتر بشه.

تفاوتش هم با brute force معمولی اینه که توی brute force معمولا پسورد‌های احتمالی مختلف روی یه اکانت تست میشن؛ ولی توی password spraying تعداد محدودی پسورد رایج و ساده روی تعداد زیادی اکانت تست میشن. برای همینه که وقتی که حمله انجام میشه، کلی کاربر بصورت یکجا هدف قرار می‌گیرن.

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

#cyber_security

@techstuff100
❤8👍2👏1
چند روزی هست دارم کتاب Dive Into Design Patterns از Alexander Shvets رو می‌خونم. بعد Grokking Algorithms می‌خواستم یه کتاب دیگه رو شروع کنم؛ ولی چون چند بار توی ایونت‌های مهندس بیگدلی بهش اشاره شده بود گفتم ترتیب مطالعه‌م رو عوض کنم و اول اینو شروع کنم.

#Dive_Into_Design_Patterns

@techstuff100
❤10👍1👏1
استراتژی‌های دیپلوی

توی این ویدئو درباره چند روش رایج دیپلوی در نرم‌افزار صحبت کردم؛ اینکه مزایا و معایب هرکدوم چی هست و چطور کار می‌کنن. مواردی که درباره‌شون صحبت کردم:
- دیپلوی Big Bang
- دیپلوی Rolling Update
- دیپلوی Blue-Green
- دیپلوی Canary

ویدئوی یوتوب:
https://www.youtube.com/watch?v=w4ZehzZIDsc&list=PLG_umovC7z2I&index=1&pp=iAQBsAgC

#system_design

@techstuff100
❤11🔥2