تو آشپزی ایرانی شما میتونی اول پیاز رو تف بدی و بعد تصمیم بگیری چه غذایی رو بپزی.
تو دنیای کامپیوتر هم میتونی اول پایتون رو یاد بگیری و بعد تصمیم بگیری تو کدوم حوزه فعالیت کنی.
#fun #twitt - Reza Jafari
@CleverDevs - @CleverDevsGp
تو دنیای کامپیوتر هم میتونی اول پایتون رو یاد بگیری و بعد تصمیم بگیری تو کدوم حوزه فعالیت کنی.
#fun #twitt - Reza Jafari
@CleverDevs - @CleverDevsGp
👍86🤣50👎23😁9🤯2
Forwarded from Arsham's Tech Mastery (Arsham)
تا حالا شده به یه مشکلی بخورید، ولی هیچ سر نخی از مشکل ندارید، بنابراین اصلا نمیدونید راجع به چی باید سرچ کنید؟ یا هر چی سرچ میکنید به نتیجه نمیرسید. (مثلا یه بار سر مموری لیک تو نود جی اس اینجوری شدم، و نمیدونستم حتی مشکلی که خوردم اسمش مموری لیک هست، مدعیان سینیوریتی هم که... باید براشون میخوندم ای به فدای چشم تو این چه نگاه کردن است!)
یا مثلا یه چیزی رو ندونید، اما ندونید چی باید سرچ کنید که یادش بگیرید؟ مثلا تو مکالمه همکارات بشنوی "p99 اش چنده؟" قبلنا که یادمه گوگل نتایج قابل قبولی برای این نمیداد، ولی ساده است، میگمش بعدا. (کلیت سوالم رو دریابید فارق از مثال)
یه حالت بدتر هم وجود داره، که مشکل خوردن، اما اصلا نمیدونن مشکل خوردن! (مثلا چندتا گوروتین اون گوشه نشستن نون و پنیرشونو میخورن به کسی هم کار ندارن (dangling goroutines))
یا میدونن مشکل خوردن اما بهش بی توجهی میکنن مثلا سرور هفته ای یه بار کرش میکنه، ری استارت میکنن و درست میشه و روز از نو روزی از نو! Availability هم که... کشک! 😂
قسمت سختش وقتیه که میخواید یه سیستم جدید دیزاین کنید،
- نمیدونید از کجا شروع کنید
- نمیدونید چه تصمیمی درست یا غلط، چون پارامتر های مقایسه اش رو نمیدونید
- یا جوانب مختلفش رو بدونید که هست اما نتونید ببینید
اگه این نشونه هارو دارید، راهکارتون پیش دستی تو مطالعه و یادگیریه.
یعنی اگه تا الان با سرچ و تو موقعیت یاد میگرفتید، از این به بعد سعی کنید یه روتینی هم از بدون موقعیت یاد گرفتن داشته باشید.
مثلا خود من الان دارم راجع به کریپتوگرافی میخونم در حالی که تو کارم یا پروژه ای بهش نیاز نداشتم، فعلا صرف علاقه است، ولی وقتی که اسکیلش رو به دست بیارم، میتونم برای موقعیت هایی که این نیازمندی رو دارن شایستگی خودمو نشون بدم.
یا تو همین موقعیتی که هستم نواقصی رو خواهم دید که قبلا نمیدیدم (مطمئنم این اتفاقا میوفته چون چندین بار تجربش کردم)
همه ما برنامه نویسا کم و بیش این دوره رو تجربه کردیم که نه بر حسب نیاز بلکه برای آینده مطالعه کنیم (قبل اولین کارمون مثلا)، اما گاهی بعد اینکه دیگه به کار میرسیم انقدر غرق کار میشیم که یادمون میره این مسیر طولانی تر از این حرفاست و کلی موقعیت برا پیشرفت هست. (بعضیا هم میدونن موقعیت هست ولی تصمیمشون بر لذت بردن و... در تایم های شخصیه، اونم مورد احترامه)
یا مثلا یه چیزی رو ندونید، اما ندونید چی باید سرچ کنید که یادش بگیرید؟ مثلا تو مکالمه همکارات بشنوی "p99 اش چنده؟" قبلنا که یادمه گوگل نتایج قابل قبولی برای این نمیداد، ولی ساده است، میگمش بعدا. (کلیت سوالم رو دریابید فارق از مثال)
یه حالت بدتر هم وجود داره، که مشکل خوردن، اما اصلا نمیدونن مشکل خوردن! (مثلا چندتا گوروتین اون گوشه نشستن نون و پنیرشونو میخورن به کسی هم کار ندارن (dangling goroutines))
یا میدونن مشکل خوردن اما بهش بی توجهی میکنن مثلا سرور هفته ای یه بار کرش میکنه، ری استارت میکنن و درست میشه و روز از نو روزی از نو! Availability هم که... کشک! 😂
قسمت سختش وقتیه که میخواید یه سیستم جدید دیزاین کنید،
- نمیدونید از کجا شروع کنید
- نمیدونید چه تصمیمی درست یا غلط، چون پارامتر های مقایسه اش رو نمیدونید
- یا جوانب مختلفش رو بدونید که هست اما نتونید ببینید
اگه این نشونه هارو دارید، راهکارتون پیش دستی تو مطالعه و یادگیریه.
یعنی اگه تا الان با سرچ و تو موقعیت یاد میگرفتید، از این به بعد سعی کنید یه روتینی هم از بدون موقعیت یاد گرفتن داشته باشید.
مثلا خود من الان دارم راجع به کریپتوگرافی میخونم در حالی که تو کارم یا پروژه ای بهش نیاز نداشتم، فعلا صرف علاقه است، ولی وقتی که اسکیلش رو به دست بیارم، میتونم برای موقعیت هایی که این نیازمندی رو دارن شایستگی خودمو نشون بدم.
یا تو همین موقعیتی که هستم نواقصی رو خواهم دید که قبلا نمیدیدم (مطمئنم این اتفاقا میوفته چون چندین بار تجربش کردم)
همه ما برنامه نویسا کم و بیش این دوره رو تجربه کردیم که نه بر حسب نیاز بلکه برای آینده مطالعه کنیم (قبل اولین کارمون مثلا)، اما گاهی بعد اینکه دیگه به کار میرسیم انقدر غرق کار میشیم که یادمون میره این مسیر طولانی تر از این حرفاست و کلی موقعیت برا پیشرفت هست. (بعضیا هم میدونن موقعیت هست ولی تصمیمشون بر لذت بردن و... در تایم های شخصیه، اونم مورد احترامه)
👍54⚡5👌4
کره شمالی اگه توزیع بود :
پ.ن : یه دستور اشتباه بزنی به جاش sudo rm -rf / رو ران میکنه
#fun
@CleverDevs - @CleverDevsGp
پ.ن : یه دستور اشتباه بزنی به جاش sudo rm -rf / رو ران میکنه
#fun
@CleverDevs - @CleverDevsGp
🤣85👍3😁3
TechTube 𝕏 تک توب
مسنجر دیسکورد بعد از چند ماه از فیلتر شدن، حالا ظاهرا طی ساعات گذشته رفع فیلتر شده و سایت و اپ موبایل اون بدون نیاز به فیلترشکن کار میکنه ولی نسخه ویندوز اون کماکان بدون فیلترشکن بالا نمیاد. 📍 @TechTube
مثل اینکه دیسکورد رفع فیلتر شده
تست کنید ببینید اوکیه براتون؟
پ.ن وقتشه سرور چنل رو بالا بیاریم 😁
#News #Discord
@CleverDevs - @CleverDevsGp
تست کنید ببینید اوکیه براتون؟
پ.ن وقتشه سرور چنل رو بالا بیاریم 😁
#News #Discord
@CleverDevs - @CleverDevsGp
👍36👎15🔥5🤣2❤1⚡1🤯1
اسم زبون راست (Rust) رو اکثرتون شنیدید اما اگه از راست خوشتون نمیاد میتونید از زبون چپ (Chap) استفاده کنید
چپ یه پروژه فان هستش که توسط علی قهرمانی توسعه یافته با وجود فان بودنش پروژه خوبیه که میتونید تستش کنید
برای نصب و خوندن داکیومنتش میتونید به گیت هاب سر بزنید
https://github.com/ali77gh/Chap
همچنین میتونید بدون نصب کردن و آنلاین امتحانش کنید
https://ali77gh.github.io/ChapApp/
پ.ن خود زبون چپ هم با راست نوشته شده 😂
#Chap #Rust
@CleverDevs - @CleverDevsGp
چپ یه پروژه فان هستش که توسط علی قهرمانی توسعه یافته با وجود فان بودنش پروژه خوبیه که میتونید تستش کنید
برای نصب و خوندن داکیومنتش میتونید به گیت هاب سر بزنید
https://github.com/ali77gh/Chap
همچنین میتونید بدون نصب کردن و آنلاین امتحانش کنید
https://ali77gh.github.io/ChapApp/
پ.ن خود زبون چپ هم با راست نوشته شده 😂
#Chap #Rust
@CleverDevs - @CleverDevsGp
🤣87👍5👎4🔥3😁1
مخابرات اینطوریه که سرعت اینترنت افتضاحه زنگ میزنی پشتیبانی گردن نمیگیرن میگن سرعتتون عالیه
بعد قطع میکنی یهو سرعت اینترنت میره بالا😂
#fun
@CleverDevs - @CleverDevsGp
بعد قطع میکنی یهو سرعت اینترنت میره بالا😂
#fun
@CleverDevs - @CleverDevsGp
🤣128👍23👌4
Object Relational Mapping یا به اختصار ORM چیه؟ و به چه دردی میخوره؟
اگه بکند کار باشید احتمال زیاد با یه ORM کار کردید یا حداقل اسمشو شنیدید توی این پست یکم دقیق تر بررسی میکنیم که ORM چه کاربردی داره . در واقع ORM ها ابزار هایی هستن که کمک میکنن برنامه نویس های شی گرا راحت تر با دیتابیس ارتباط برقرار کنن
مثلا اگه شما بخواید یه سری اطلاعات رو از جدول users بگیرید باید یه همچین کوئری sql ای بنویسید :
اما کمک ORM ها میتونید با یه همچین چیزی کارو در بیارید
ORM یک لایه بین برنامه نویس و دیتابیس ایجاد میکنه و در نهایت متد های مورد استفاده شمارو به SQL ترجمه میکنه و کوئری میزنه به دیتابیس ORM های مختلفی هم برای زبون ها و فریمورک های مختلف وجود داره مثل Eloquent برای لاراول یا ORM فریمورک جنگو و...
ORM های مختلف میتونن متد های مختلفی هم داشته باشن ولی در نهایت هدفشون یکیه و یه کاری انجام میدن
استفاده از ORM ها یه سری مزایاا و یه سری معایب داره
مزایایی مثل
همینطور معایبی مثل
پ.ن درسته کار با ORM نیاز به دانش چندانی از SQL نویسی نداره اما به این معنی نیست که SQL بلد نباشید و فقط از ORM استفاده کنید
#ORM
@CleverDevs - @CleverDevsGp
اگه بکند کار باشید احتمال زیاد با یه ORM کار کردید یا حداقل اسمشو شنیدید توی این پست یکم دقیق تر بررسی میکنیم که ORM چه کاربردی داره . در واقع ORM ها ابزار هایی هستن که کمک میکنن برنامه نویس های شی گرا راحت تر با دیتابیس ارتباط برقرار کنن
مثلا اگه شما بخواید یه سری اطلاعات رو از جدول users بگیرید باید یه همچین کوئری sql ای بنویسید :
"SELECT id, name, email, country, phone_number FROM users WHERE id = 20"
اما کمک ORM ها میتونید با یه همچین چیزی کارو در بیارید
users.GetById(20)
ORM یک لایه بین برنامه نویس و دیتابیس ایجاد میکنه و در نهایت متد های مورد استفاده شمارو به SQL ترجمه میکنه و کوئری میزنه به دیتابیس ORM های مختلفی هم برای زبون ها و فریمورک های مختلف وجود داره مثل Eloquent برای لاراول یا ORM فریمورک جنگو و...
ORM های مختلف میتونن متد های مختلفی هم داشته باشن ولی در نهایت هدفشون یکیه و یه کاری انجام میدن
استفاده از ORM ها یه سری مزایاا و یه سری معایب داره
مزایایی مثل
سرعت توسعه بالاتر
افزایش امنیت در اکثر اوقات
کمتر سرو کله زدن با SQL و ...
همینطور معایبی مثل
سرعت کمتر ORM نسبت به SQL
کارایی پایین ORM در کوئری های پیچیده و...
پ.ن درسته کار با ORM نیاز به دانش چندانی از SQL نویسی نداره اما به این معنی نیست که SQL بلد نباشید و فقط از ORM استفاده کنید
#ORM
@CleverDevs - @CleverDevsGp
👍32🔥12🆒4
💢 اخبار روز تکنولوژی (خلاصه و مفید)
• 🤖 همکاری BMW با ربات فیگور •
• 🍎 تصمیم نهایی مدیرعامل اپل •
• 🦷 اولین جراحی دندانپزشکی با ربات •
• 👽 رقابت انسان با هوش مصنوعی •
اگه موافق هستید این نوع پستها رو ادامه بدیم با ری اکشن و شِیر کردن حمایت کنید.❤️
#QuickDailyNews
@CleverDevs | @CleverDevsGP
• 🤖 همکاری BMW با ربات فیگور •
ربات فیگور ۰۱ متصل به هوش مصنوعی که چندی پیش معرفی کرده بودیم همراهی خود را با BMW اعلام کرد؛ همچنین تریلر ورژن جدید و پیشرفته ترش رو نشر داد و انتظار میره تا پایان سال ویدیو معرفی کاملش رو ببینیم.
• 🍎 تصمیم نهایی مدیرعامل اپل •
تیم کوک مدیرعامل اپل اعلام کرد؛ تا پایان سال میلادی جاری ChatGPT با سیستم عامل iOS18 و سایر نسخه های سیستم عامل اپل یکپارچه میشود.
• 🦷 اولین جراحی دندانپزشکی با ربات •
شرکت دندانپزشکی رباتیک Perceptive اعلام کرد برای اولین بار از ربات با هوش مصنوعی تمامخودکار استفاده کرده است؛ این ربات تقریباً میتواند عملهای خاصی، مانند تعویض تاج دندان را هشت برابر سریعتر از دندانپزشک معمولی انجام دهد.
• 👽 رقابت انسان با هوش مصنوعی •
ایلان ماسک بهتازگی در مصاحبه جدیدی با Lex Fridman درباره مزیتهای تراشههای نورالینک صحبت کرده است. ایلان ماسک میگوید ایمپلنتهای مغزی نورالینک بهترین راه برای انسان خواهد بود تا هم با هوش مصنوعی پیشرفته یکپارچه شود هم در آینده با آن رقابت کند.
#QuickDailyNews
@CleverDevs | @CleverDevsGP
👍70❤46🔥3👎1
یکی از بچه ها تجربه چالش های مختلفی که اکثر تازه کار های لینوکسی بهشون بر میخورن رو توی بلاگش گذاشته و راه حل هایی براشون نوشته اگه شما هم تازه اومدید سمت لینوکس پیشنهاد میکنم بخونید میتونه کمکتون کنه
https://exinem.ir/2024/08/04/linux-daily-challenges/
#GNU #Linux
@CleverDevs - @CleverDevsGp
https://exinem.ir/2024/08/04/linux-daily-challenges/
#GNU #Linux
@CleverDevs - @CleverDevsGp
❤23🔥6👍4
CleverDevs
همون طور که بعضیاتون میدونین برای Height: auto; ترنزیشن اعمال نمیشه، که توی ساخت منو و اوتوکامپلت سرچ و .. استفاده میشه از این ترفند میتونین استفاده کنین. #trick - Source @CleverDevs @CleverDevsGp
calc-size()
قبلا توی این پست یه راه حل برای اعمال ترنزیشن روی
height: auto;
گفته بودم، ولی بالاخره بعد مدتها مثل اینکه کارمون آسون شده.
یه تابع جدید به اسم calc-size اومده که اگه تو ورودی بهش auto رو بدیم، میاد مقدار auto رو مشخص میکنه و بهمون برمیگردونه.
یعنی جای همه اینکارا کافیه فقط
.box {
height: 200px;
overflow: hidden;
transition: 300ms
}
.box.active {
height: calc-size(auto);
}اینکارو بکنیم، البته فعلا وضعیت ساپورت مرورگرش خوب نیست. (اصلا خوب نیست)
@CleverDevs - @CleverDevsGp
👍17👌4
یکی از برنامه نویسای ایرانی اومده موتور بازی سازی خودشو ساخته و مراحلش رو توی یوتوب توضیح داده
بنظرم کار خفنی بود و ارزش دیدن داره
https://www.youtube.com/watch?v=u1sz5jymhfI
#Game
@CleverDevs - @CleverDevsGp
بنظرم کار خفنی بود و ارزش دیدن داره
https://www.youtube.com/watch?v=u1sz5jymhfI
#Game
@CleverDevs - @CleverDevsGp
🔥46👍9💯6
اگر فکر کردین درآمدتون وابسته به سانسور و عدم دسترسی بقیه به اطلاعات و سرکوب آزادی و … هست، دوباره به کاری که دارین میکنین فکر کنین!
© Jadi
#youtube
@CleverDevs - @CleverDevsGp
© Jadi
#youtube
@CleverDevs - @CleverDevsGp
👍185❤8🔥7👎4👌1
توی این پست میخوام یه فیچر باحال لاراول به اسم macro رو معرفی کنم
ممکنه بخواید برای یکی از کلاس های خود لاراول متدی اضافه کنید طبیعتا رفتن و اضافه کردنشش به سورس کد خود لاراول کار منطقی ای نیست تو این موقعیت میتونید از macro ها استفاده کنید
در واقع کلاس های لاراول یه متد macro دارن که دوتا آرگیومنت میگیره اولی اسم متدی که میخوایم اضافه کنیم و دومی یه تابع که بدنه متد رو تشکیل میده
حالا چطور ماکرو هارو تعریف کنیم و ازشون استفاده کنیم ؟ برای اینکار میتونید ماکرو رو توی بوت AppServiceProvider تعریف کنید یا نه برای اینکه پروژتون تمیز تر باشه یه پروایدر مخصوص برای ماکرو ها بسازید
برای مثال ما میخوایم یه متد even برای کلاس Collection بسازیم تا بیاد اعضای زوج کالکشن رو برگردونه برای اینکار توی متود boot میاییم و ماکرو رو به این صورت تعریف میکنیم :
حالا هرجا بخوایم میتویم کلاس Collection رو use کنیم و از متد even استفاده کنیم :
برای درک بهتر میتونید این مقاله از دیتی رو هم بخونید
https://ditty.ir/posts/laravel-macro/J6dqn
#Laravel #php
@CleverDevs - @CleverDevsGp
ممکنه بخواید برای یکی از کلاس های خود لاراول متدی اضافه کنید طبیعتا رفتن و اضافه کردنشش به سورس کد خود لاراول کار منطقی ای نیست تو این موقعیت میتونید از macro ها استفاده کنید
در واقع کلاس های لاراول یه متد macro دارن که دوتا آرگیومنت میگیره اولی اسم متدی که میخوایم اضافه کنیم و دومی یه تابع که بدنه متد رو تشکیل میده
حالا چطور ماکرو هارو تعریف کنیم و ازشون استفاده کنیم ؟ برای اینکار میتونید ماکرو رو توی بوت AppServiceProvider تعریف کنید یا نه برای اینکه پروژتون تمیز تر باشه یه پروایدر مخصوص برای ماکرو ها بسازید
برای مثال ما میخوایم یه متد even برای کلاس Collection بسازیم تا بیاد اعضای زوج کالکشن رو برگردونه برای اینکار توی متود boot میاییم و ماکرو رو به این صورت تعریف میکنیم :
use Illuminate\Support\Collection;
public function boot()
{
Collection::macro('even', function () {
return $this->filter(function ($value) {
return $value % 2 === 0;
});
});
}
حالا هرجا بخوایم میتویم کلاس Collection رو use کنیم و از متد even استفاده کنیم :
php
$numbers = collect([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
$evenNumbers = $numbers->even();
// $evenNumbers will now contain [2, 4, 6, 8, 10]
برای درک بهتر میتونید این مقاله از دیتی رو هم بخونید
https://ditty.ir/posts/laravel-macro/J6dqn
#Laravel #php
@CleverDevs - @CleverDevsGp
👍17🔥4❤3⚡3
یکی از بچه های چنل یه پادکستی به اسم ازشنبه شروع کرده که توش در باره برنامه نویسی و تکنولوژی حرف میزنه اگه علاقهمند بودید میتونید از یوتوب یا ساندکلاد گوش کنید
یوتوب - ساندکلاد
@CleverDevs - @CleverDevsGp
یوتوب - ساندکلاد
@CleverDevs - @CleverDevsGp
👍25🔥4⚡2
Forwarded from Sudoer (Morteza Bashsiz)
درود دوستان
من برگشتم :دی
یه پروژه ای رو از ماه مارچ سال ۲۰۲۳ شروع کردم برای دور زدن فیلترینگ که بشه ریکوستهای وب رو توی یک ریکوست فیک قایم کرد و رد کرد توی اینترنت
که الان به جای خوبی رسیده و نیازمند همراهی عزیزانی هست که دست به کد با زبان سی++ هستند و با کتابخانه boost آشنایی دارند
من حدود یک سال و نیم هست که روی این پروژه به صورت پارهوقت دارم کار میکنم و برای اینکه بتونم بهتر پیادهسازیش کنم ۲ تا کتاب و کلی منابع خوندم تا دانشم بره بالاتر
۱. این کتاب از اسکات مایرز
۲. این کتاب دیگر از اسکات مایرز
۳. داکیومنت خود بوست
هنوز به صورت کامل آماده استفاده نیست و دو مشکل اساسی داره که سعی میکنم برطرفش کنم و اون هم مموری منیجمنت بهتر و ایزوله کردن تردهاست
سعی میکنم در آینده یه ویدیو بسازم و توش توضیح بدم که چطوری کار میکنه
خلاصه اینکه اگه خودتون میتونید مشارکت کنید یا اینکه کسی رو میشناسید که بتونه مشارکت کنه خوشحال میشم پروژه رو بهش معرفی کنید تا بتونه مشارکت کنه
سپاس فراوان از همراهی همه شما
https://github.com/MortezaBashsiz/nipovpn
من برگشتم :دی
یه پروژه ای رو از ماه مارچ سال ۲۰۲۳ شروع کردم برای دور زدن فیلترینگ که بشه ریکوستهای وب رو توی یک ریکوست فیک قایم کرد و رد کرد توی اینترنت
که الان به جای خوبی رسیده و نیازمند همراهی عزیزانی هست که دست به کد با زبان سی++ هستند و با کتابخانه boost آشنایی دارند
من حدود یک سال و نیم هست که روی این پروژه به صورت پارهوقت دارم کار میکنم و برای اینکه بتونم بهتر پیادهسازیش کنم ۲ تا کتاب و کلی منابع خوندم تا دانشم بره بالاتر
۱. این کتاب از اسکات مایرز
۲. این کتاب دیگر از اسکات مایرز
۳. داکیومنت خود بوست
هنوز به صورت کامل آماده استفاده نیست و دو مشکل اساسی داره که سعی میکنم برطرفش کنم و اون هم مموری منیجمنت بهتر و ایزوله کردن تردهاست
سعی میکنم در آینده یه ویدیو بسازم و توش توضیح بدم که چطوری کار میکنه
خلاصه اینکه اگه خودتون میتونید مشارکت کنید یا اینکه کسی رو میشناسید که بتونه مشارکت کنه خوشحال میشم پروژه رو بهش معرفی کنید تا بتونه مشارکت کنه
سپاس فراوان از همراهی همه شما
https://github.com/MortezaBashsiz/nipovpn
GitHub
GitHub - MortezaBashsiz/nipovpn: Powerfull http proxy
Powerfull http proxy. Contribute to MortezaBashsiz/nipovpn development by creating an account on GitHub.
👍37❤12🔥5
یکی از آسیب پذیری های خطرناک دنیای نرم افزار Race Condition هست . اما race condition چیه و چطور اتفاق میفته ؟
این آسیب پذیری زمانی رخ میده که دوتا عمل توی نرم افزار هم زمان رخ بدن اما برای اینکه نرم افزار درست کار کنه این دوتا عمل باید در زمان مناسب و به نوبت رخ بدن. یعنی اینکه این دوتا عمل جفتشون با یه قسمتی از رم کار دارن و همزمان شدنشون باعث این میشه که تاثیر بزارن رو هم که گاها تاثیرات بدی رو کل سیستم داره و هکر ها هم از این موضوع سوء استفاده میکنن
این مشکل که توی برنامه های مولتی ترد رخ میده اینطوریه که یه ترد از برنامه داره مثلا یه قسمتی از یه دیتای حساس رو میخونه و درحالی که هنوز میخونه و تمومش نکرده یه ترد دیگه از برنامه میاد اون دیتا رو آپدیت میکنه و عوضش میکنه
بزارید یه مثال بزنم تا این مسئله بهتر جا بیوفته . فک کنید با یه سیستم بانکی طرفید وقتی میخواید پولی به شخصی انتقال بدید سیستم اول میاد چک میکنه که شما تو حسابتون موجودی دارید یا نه اگه موجودی داشتید اول x مقدار پول به حساب طرف مقابل انتقال میده و بعد x مقدار از حساب شما کسر میکنه حالا فکر کنید اینجا یه race condition اتفاق بیوفته و دوتا درخواست انتقال با فاصله خیلی کم ثبت بشه اولی بیاد چک کنه ببینه موجودی دارید بعد پول رو به حساب طرف مقابل اضافه کنه و تا اون لحظه ای که پول از حساب شما کم میشه درخواست دوم هم بیاد و مرحله چک کردن موجودی رو رد کنه اینطوری شما پولی بیشتر از موجودیتون انتقال دادید
یکی از استفاده های معروف از این آسیب پذیری برمیگرده به سال 2015 که ایگر هوماکف ، متخصص امنیتی که تونست هرچند بار که میخواد حساب استارباکسش رو شارژ کنه بدون اینکه هزینشو پرداخت کنه (میتونید داستانش رو از اینجا بخونید)
یا همین چند وقت پیش که یه باگی تو openssh به وجود اومده بود و از همین آسیب پذیری استفاده میکرد
اگه میخواید بیشتر دربارش بخونید میتونید یه نگاهی به این مقاله ها بندازید
sokanacademy - techtarget - virgool
#security
@CleverDevs - @CleverDevsGp
این آسیب پذیری زمانی رخ میده که دوتا عمل توی نرم افزار هم زمان رخ بدن اما برای اینکه نرم افزار درست کار کنه این دوتا عمل باید در زمان مناسب و به نوبت رخ بدن. یعنی اینکه این دوتا عمل جفتشون با یه قسمتی از رم کار دارن و همزمان شدنشون باعث این میشه که تاثیر بزارن رو هم که گاها تاثیرات بدی رو کل سیستم داره و هکر ها هم از این موضوع سوء استفاده میکنن
این مشکل که توی برنامه های مولتی ترد رخ میده اینطوریه که یه ترد از برنامه داره مثلا یه قسمتی از یه دیتای حساس رو میخونه و درحالی که هنوز میخونه و تمومش نکرده یه ترد دیگه از برنامه میاد اون دیتا رو آپدیت میکنه و عوضش میکنه
بزارید یه مثال بزنم تا این مسئله بهتر جا بیوفته . فک کنید با یه سیستم بانکی طرفید وقتی میخواید پولی به شخصی انتقال بدید سیستم اول میاد چک میکنه که شما تو حسابتون موجودی دارید یا نه اگه موجودی داشتید اول x مقدار پول به حساب طرف مقابل انتقال میده و بعد x مقدار از حساب شما کسر میکنه حالا فکر کنید اینجا یه race condition اتفاق بیوفته و دوتا درخواست انتقال با فاصله خیلی کم ثبت بشه اولی بیاد چک کنه ببینه موجودی دارید بعد پول رو به حساب طرف مقابل اضافه کنه و تا اون لحظه ای که پول از حساب شما کم میشه درخواست دوم هم بیاد و مرحله چک کردن موجودی رو رد کنه اینطوری شما پولی بیشتر از موجودیتون انتقال دادید
یکی از استفاده های معروف از این آسیب پذیری برمیگرده به سال 2015 که ایگر هوماکف ، متخصص امنیتی که تونست هرچند بار که میخواد حساب استارباکسش رو شارژ کنه بدون اینکه هزینشو پرداخت کنه (میتونید داستانش رو از اینجا بخونید)
یا همین چند وقت پیش که یه باگی تو openssh به وجود اومده بود و از همین آسیب پذیری استفاده میکرد
اگه میخواید بیشتر دربارش بخونید میتونید یه نگاهی به این مقاله ها بندازید
sokanacademy - techtarget - virgool
#security
@CleverDevs - @CleverDevsGp
🔥26👍14⚡3