Tech Stuff
1.25K subscribers
306 photos
2 videos
11 files
69 links
Download Telegram
قبلا بخش زیادی از کار برنامه‌نویسی صرفا این بود که بتونیم چیزی رو بسازیم و به مرحله اجرا برسونیم. الان با کمک AI ساختن نرم‌افزار راحتتر شده و تقریبا هرکسی می‌تونه یه خروجی قابل‌قبول تولید کنه. برای همین چیزی که اهمیت بیشتری پیدا کرده taste یا همون قدرت تشخیص کیفیت و تصمیم‌گیریه؛ اینکه بتونیم بهترین راه‌حل رو انتخاب کنیم و به هر چیزی که صرفا کار کنه راضی نشیم.

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

[مقاله]

#recent_reads

@techstuff100
👍13❤4👏1
Forwarded from TheAliBigdeli Channel
رویداد آشنایی با skill به همراه ساخت یک Skill شخصی

در زمان کد نویسی با Ai مفاهیمی مثل Skill و تاثیرش در خروجی چی هستش؟ ساختار skill ها به چه صورته؟ چطور میشه یک skill طراحی کرد؟ و از دسته سوالاتی که در زمان انتخاب و استفاده ممکنه براتون پیش بیاد رو توی این رویداد بررسی کردیم.

https://thealibigdeli.ir/r/hodrJn/

@thealibigdeli_channel
#event
❤7👏1🤣1
توی بحث rate limiting دو تا رویکرد داریم. hard rate limiting و soft rate limiting. توی hard limit وقتی تعداد درخواست‌ها از حد مجاز رد بشه، درخواست‌های اضافه رد میشن و معمولا 429 (Too Many Requests) می‌گیریم یا حتی ممکنه با هدر Retry-After به کلاینت بگیم چه زمانی دوباره درخواست بفرسته. این روش مثلا برای محدود کردن ترافیک کاربران رایگان یا محافظت از اندپوینت‌های پرهزینه جوابه.

توی soft limit حتی بعد از رد شدن از سقف تعیین شده درخواست‌ها همچنان پردازش میشن. ولی در عوض می‌تونیم این رد شدن از محدودیت رو لاگ کنیم، هشدار بدیم یا اطلاعات مربوط به سهمیه مصرف‌شده رو توی response headerها برگردونیم. این روش بیشتر برای پلن‌های پولی و مشتری‌های سازمانی مناسبه که قطع شدن ناگهانی سرویس براشون مشکل‌سازه. البته که اگه همین مصرف اضافی هم درست کنترل نشه می‌تونه هزینه یا فشار زیادی به سیستم وارد کنه.

#system_design

@techstuff100
❤10👍3🔥2👏1
دو سه سالی میشه چیزایی که می‌خونم/می‌بینم/گوش میدم رو بصورت هفتگی ثبت می‌کنم. این کار باعث میشه که بدونم مثلا نسبت به هفته‌های پیش چطور عمل کردم. همینطور وقتی که این حس «چند وقته هیچ کار خاصی انجام ندادم» اومد سراغم حداقل بدونم که واقعیه یا ساخته ذهنمه. کوشیار عظیمیان هم توی یکی از لایوهاش در موردش صحبت کرده بود.

من توی گوگل داک نوشتمشون ولی احتمالا ابزار بهتری براش وجود داشته باشه.

@techstuff100
❤23🔥4
طراحی یک 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
دور زدن فیلترهای SSRF

بعضی سرویس‌ها مثل PDF Generator یه URL از کاربر می‌گیرن و از محتوای اون یه فایل PDF یا اسکرین‌شات تولید می‌کنن. مهاجم ممکنه بجای یه سایت معمولی، آدرس‌های داخلی سرور مثل localhost یا file:/// رو هدف بگیره؛ چونکه درخواست به این URL ورودی رو خود سرور ارسال می‌کنه و نه مرورگر کاربر.

برنامه ممکنه که فقط 127.0.0.1 یا localhost رو فیلتر کرده باشه. برای دور زدن این فیلتر راه‌هایی وجود داره؛ مثل نمایش IP به شکل decimal یا hex:
- decimal: 2130706433
- octal: 0177.0.0.1
- hex: 0x7F000001

و یا استفاده از دامنه‌های شخصی که به 127.0.0.1 اشاره می‌کنن و یا ...

[مقاله]

#cyber_security #recent_reads

@techstuff100
❤1