دوستان علت اینکه این چند روز پست نمیزارم اینه که دارم روی یه سرویسی کار میکنم که احتمالا به درد همه برنامه نویسا میخوره
گیمرا هم ازش نون میبرن
فقط دعا کنید که شرمندتون نشم و یه چیز خوبی دربیاد
گیمرا هم ازش نون میبرن
فقط دعا کنید که شرمندتون نشم و یه چیز خوبی دربیاد
🔥5
Cache Coherency و False Sharing
مفاهیم پرفورمنس در سیستم های Multithreaded
تو پردازنده های مدرن، هر هسته برای دسترسی سریع تر به داده ها از L1/L2 Cache اختصاصی خودش استفاده میکنه. برای این که مطمئن بشن مقدار یک متغیر تو کش همه هسته ها همگامه، از پروتکل هایی مثل MESI استفاده میشه. نکته اینجاست که پردازنده متغیرهارو تک تک کش نمیکنه، بلکه کل یک بلوک حافظه (معمولا 64 bit) تحت عنوان Cache Line رو جابه جا میکنه.
False Sharing
زمانی اتفاق می افته که دو ترد مجزا روی دو هسته مختلف، با متغیرهای کاملا متفاوتی کار میکنن اما این متغیرها به صورت تصادفی تو یک Cache Line مشترک در حافظه قرار بگیرن. هر بار که هسته A متغیر خودش رو مینویسه، کل لاین کش رو invalidate میکنه و هسته B مجبور میشه کل خط رو دوباره لود کنه. نتیجه؟ افت وحشتناک پرفورمنس به خاطر Cache Thrashing، بدون این که حتی یک Race Condition واقعی داشته باشید.
حلش معمولا با Data Alignment و Padding انجام میشه (مثل تابع alignas(64) در C++)
@Buddy_R
مفاهیم پرفورمنس در سیستم های Multithreaded
تو پردازنده های مدرن، هر هسته برای دسترسی سریع تر به داده ها از L1/L2 Cache اختصاصی خودش استفاده میکنه. برای این که مطمئن بشن مقدار یک متغیر تو کش همه هسته ها همگامه، از پروتکل هایی مثل MESI استفاده میشه. نکته اینجاست که پردازنده متغیرهارو تک تک کش نمیکنه، بلکه کل یک بلوک حافظه (معمولا 64 bit) تحت عنوان Cache Line رو جابه جا میکنه.
False Sharing
زمانی اتفاق می افته که دو ترد مجزا روی دو هسته مختلف، با متغیرهای کاملا متفاوتی کار میکنن اما این متغیرها به صورت تصادفی تو یک Cache Line مشترک در حافظه قرار بگیرن. هر بار که هسته A متغیر خودش رو مینویسه، کل لاین کش رو invalidate میکنه و هسته B مجبور میشه کل خط رو دوباره لود کنه. نتیجه؟ افت وحشتناک پرفورمنس به خاطر Cache Thrashing، بدون این که حتی یک Race Condition واقعی داشته باشید.
حلش معمولا با Data Alignment و Padding انجام میشه (مثل تابع alignas(64) در C++)
@Buddy_R
❤1
Скачать видео из YouTube Pinterest
💜 @MegaSaverBot
سیم پیچ های گرادیان (Gradient Coils)، پشت پرده صداهای عجیب دستگاه MRI
اگه تا حالا تجربه اسکن MRI داشته باشید، احتمالا متوجه صداهای عجیب و ریتم های متغیرش شدید. برعکس تصور خیلیا، این صداها ناشی از حرکت چرخشی یک قطعه مکانیکی نیست، بلکه بخاطر همین سیم پیچ های گرادیان است که عکسشو گذاشتم.
نیروی لورنتس و تبدیل دستگاه به بلندگوی غول پیکر:
هدف اصلی سیم پیچ های گرادیان، ایجاد تغییرات خطی و لحظه ای در میدان مغناطیسی برای کدگذاری مکانی (Spatial Encoding) است تا دستگاه بفهمه سیگنال هر پروتون دقیقا از کجای بدن میاد.
وقتی پالس های الکتریکی سنگین در کسری از ثانیه از این سیم پیچ ها عبور میکنن، حضور میدان مغناطیسی اصلی دستگاه باعث ایجاد نیروی لورنتس شدید میشه. این نیروها هزاران بار در ثانیه به یساختار سیم پیچ ضربه مکانیکی میزنن و نوسان حاصل دقیقا مثل دیافراگم یک بلندگو عمل میکنه.
چرا صدای هر سیکونس فرق داره؟
الگوی صدا کاملا وابسته به پارامترهای نرم افزاری و پروتکل اسکنره:
Diffusion (EPI): به خاطر سوییچ فوق العاده سریع قطبیت گرادیان ها در چند میلی ثانیه، صدایی با فرکانس بالا مثل دریل یا وزوز تولید میکنه.
اسکن های سه بعدی (مثل T1 MPRAGE یا TOF) به دلیل درگیر شدن همزمان گرادیان ها روی هر سه محور، الگوهای صوتی پیچیده و چندلایه میسازن.
زمان بندی پالس ها (TR و TE): ریتم تکرار و فرکانس تق تق ها مستقیما وابسته به بازه های زمانی تعریف شده در پروتکل (مثلا زمان لازم برای خواندن اکو یا پالس های معکوس ساز در FLAIR) است.
اگه تا حالا تجربه اسکن MRI داشته باشید، احتمالا متوجه صداهای عجیب و ریتم های متغیرش شدید. برعکس تصور خیلیا، این صداها ناشی از حرکت چرخشی یک قطعه مکانیکی نیست، بلکه بخاطر همین سیم پیچ های گرادیان است که عکسشو گذاشتم.
نیروی لورنتس و تبدیل دستگاه به بلندگوی غول پیکر:
هدف اصلی سیم پیچ های گرادیان، ایجاد تغییرات خطی و لحظه ای در میدان مغناطیسی برای کدگذاری مکانی (Spatial Encoding) است تا دستگاه بفهمه سیگنال هر پروتون دقیقا از کجای بدن میاد.
وقتی پالس های الکتریکی سنگین در کسری از ثانیه از این سیم پیچ ها عبور میکنن، حضور میدان مغناطیسی اصلی دستگاه باعث ایجاد نیروی لورنتس شدید میشه. این نیروها هزاران بار در ثانیه به یساختار سیم پیچ ضربه مکانیکی میزنن و نوسان حاصل دقیقا مثل دیافراگم یک بلندگو عمل میکنه.
چرا صدای هر سیکونس فرق داره؟
الگوی صدا کاملا وابسته به پارامترهای نرم افزاری و پروتکل اسکنره:
Diffusion (EPI): به خاطر سوییچ فوق العاده سریع قطبیت گرادیان ها در چند میلی ثانیه، صدایی با فرکانس بالا مثل دریل یا وزوز تولید میکنه.
اسکن های سه بعدی (مثل T1 MPRAGE یا TOF) به دلیل درگیر شدن همزمان گرادیان ها روی هر سه محور، الگوهای صوتی پیچیده و چندلایه میسازن.
زمان بندی پالس ها (TR و TE): ریتم تکرار و فرکانس تق تق ها مستقیما وابسته به بازه های زمانی تعریف شده در پروتکل (مثلا زمان لازم برای خواندن اکو یا پالس های معکوس ساز در FLAIR) است.
محفل Buddy
Photo
خیلی انگار رنگشون برعکسه مگه نه؟
تصاویر T1 و T2 رو دارید میبینید
T1 بیشتر برای بررسی آناتومی استفاده میشه
T2 برای بررسی پاتولوژی
تصاویر T1 و T2 رو دارید میبینید
T1 بیشتر برای بررسی آناتومی استفاده میشه
T2 برای بررسی پاتولوژی
حالا مسئله اینجاست
با هوش مصنوعی اگر دیتای تشخیص قطعی داشته باشید میتونید بیماری های مرتبط با مغز رو از تصویر T1 و T2 و دیتای بالینی با هوش مصنوعی تشخیص بدید
شو خوش
با هوش مصنوعی اگر دیتای تشخیص قطعی داشته باشید میتونید بیماری های مرتبط با مغز رو از تصویر T1 و T2 و دیتای بالینی با هوش مصنوعی تشخیص بدید
شو خوش
❤3
امشب قبل خواب میخوام از تجربه امروزم بگم که تن و بدنمو لرزوند
صبح داشتم برای عروسی فامیلمون تو ذهنم برنامه میچیدم و با بچه ها جمع شده بودیم درمورد ci/cd صحبت میکردیم
منم سه شنبه یه devlog از پروژم به کارفرما نشون دادم
شما تصور کنید من تو این فکر بودم کدوم خیاط ببرم شلوارمو درست کنن و ... که یهو از کار بهم زنگ زدن:
«آقا، ما الان تو جلسه با فلان شرکت هستیم و سایت این دکمه هاش کار نمیکنه. جلسمون تا یک ساعت بعد تموم میشه هرچی زودتر درستش کنید»🤬 🤬 🤬 منظورت چیه. من خودم هنوز کدمو نخوندم🦍
موقعیت منم جایی ام که آنتن نمیده، لپتاپم نیست و نمیدونستم کارفرما قراره سرخود اینو ببره یه شرکت برای مذاکره
هیچی دیگه، تو گوشی با هزار بدبختی وصل شدم به cursor، وصلش کردم به گیتمون، و تغیراتو از اونجا انجام دادم و push کردم و سرور تغیراتو دیپلوی کرد.
نه تست کردم و نه چیزی فقط دست به دعا (داروین) شدم که کار کنه.....
حالا من زل زدم به این لاگ داکر مگه دپلوی میشه بیشرف.....
=> exporting layers
و تمام. اینجا ۱۰ دقیقه برای من به اندازه ۱ ساعت گذشت
مانیتورینگ، CI/CD و محیط production رو جدی بگیرید و از همه مهم تر، تا وقتی کنترل کامل تو روند اینا ندارید به هیچ عنوان جلوی کارفرما فلکس نکنید مثل بنده بگا میرید. گاها همکارا ناخواسته آدمو تو هچل میندازن
صبح داشتم برای عروسی فامیلمون تو ذهنم برنامه میچیدم و با بچه ها جمع شده بودیم درمورد ci/cd صحبت میکردیم
منم سه شنبه یه devlog از پروژم به کارفرما نشون دادم
شما تصور کنید من تو این فکر بودم کدوم خیاط ببرم شلوارمو درست کنن و ... که یهو از کار بهم زنگ زدن:
«آقا، ما الان تو جلسه با فلان شرکت هستیم و سایت این دکمه هاش کار نمیکنه. جلسمون تا یک ساعت بعد تموم میشه هرچی زودتر درستش کنید»
موقعیت منم جایی ام که آنتن نمیده، لپتاپم نیست و نمیدونستم کارفرما قراره سرخود اینو ببره یه شرکت برای مذاکره
هیچی دیگه، تو گوشی با هزار بدبختی وصل شدم به cursor، وصلش کردم به گیتمون، و تغیراتو از اونجا انجام دادم و push کردم و سرور تغیراتو دیپلوی کرد.
نه تست کردم و نه چیزی فقط دست به دعا (داروین) شدم که کار کنه.....
حالا من زل زدم به این لاگ داکر مگه دپلوی میشه بیشرف.....
=> exporting layers
و تمام. اینجا ۱۰ دقیقه برای من به اندازه ۱ ساعت گذشت
مانیتورینگ، CI/CD و محیط production رو جدی بگیرید و از همه مهم تر، تا وقتی کنترل کامل تو روند اینا ندارید به هیچ عنوان جلوی کارفرما فلکس نکنید مثل بنده بگا میرید. گاها همکارا ناخواسته آدمو تو هچل میندازن
Please open Telegram to view this post
VIEW IN TELEGRAM
این پروژه به کارم اومد
نیاز به یه محیط بیلد برای macos داشتم که این پروژه رو استفاده کردم
با استفاده از یه کامند داکر، macos بالا بیارید
همینقدر ساده
Github Repo
نیاز به یه محیط بیلد برای macos داشتم که این پروژه رو استفاده کردم
با استفاده از یه کامند داکر، macos بالا بیارید
همینقدر ساده
Github Repo
GitHub
GitHub - sickcodes/Docker-OSX: Run macOS VM in a Docker! Run near native OSX-KVM in Docker! X11 Forwarding! CI/CD for OS X Security…
Run macOS VM in a Docker! Run near native OSX-KVM in Docker! X11 Forwarding! CI/CD for OS X Security Research! Docker mac Containers. - sickcodes/Docker-OSX
محفل Buddy
نصف شبی یکی از فوبیاهاتونو برطرف کنم
اولا اگر ندیدید این صفحه مرتبط با Grub ه
Grub یه بوت لودره که بصورت پیشفرض همراه توزیع های مختلف لینوکسی نصب میشه
بوتلودر چیه؟ اینجا بخونید
لینوکس یوزر های عزیز
این صحنه ناشاهکار وقتی اتفاق میفته که شما با gparted یا ابزار مشابه، میگیرید پارتیشنتون رو ریسایز میکنید. پیش میاد که Grub سکتور های ماژول هاشو تو این پروسه گم میکنه و سیستم بوت نمیشه.
یه بار این روال رو برید و یکبار برای همیشه یادش بگیرید که بکارتون میاد.
۱- دستور ls رو میزنید و لیست دیسک هارو میبینید
۲- باید با همون دستور ls و دنبالش پارتیشن تارگتتون و دایرکتوری رو بزنید تا بوتلودر رو پیدا کنید. مثال:
ls (hd0,gpt2)/boot/grub
هر پارتیشنی که ارور نداد و لیست فایل هاش رو دیدید، پارتیشن اصلی شماست
۳- با دستور set میتونید environment variable ست کنید که به دوتاش نیاز داریم
اولا root
دوما prefix
روت اینجا یعنی پارتیشنی که قراره کرنل لینوکسمون به عنوان root بشناستش
Prefix برای این ست میکنیم که گراب موقعی که میخواد ماژولی رو لود کنه، پیشوند رو قبل آدرس ماژول بزاره
مثال ها:
set root=(hd0,gpt2)
یا مثلا
set prefix=(hd0,gpt2)/boot/grub
۴ـ خب خب.... حالا insmod normal و normal میزنید و برمیگردید به محیط بوت لودرتون..... و اینطوری شما یکی از مشکلات تیپیکالی که واسه dualboot user ها به وجود میاد رو میتونید هندل کنید.
بعدا پروسه اون یکی مشکلات رو هم میزارم ولی این استارت خوبیه
@Buddy_Stuff
Grub یه بوت لودره که بصورت پیشفرض همراه توزیع های مختلف لینوکسی نصب میشه
بوتلودر چیه؟ اینجا بخونید
لینوکس یوزر های عزیز
این صحنه ناشاهکار وقتی اتفاق میفته که شما با gparted یا ابزار مشابه، میگیرید پارتیشنتون رو ریسایز میکنید. پیش میاد که Grub سکتور های ماژول هاشو تو این پروسه گم میکنه و سیستم بوت نمیشه.
یه بار این روال رو برید و یکبار برای همیشه یادش بگیرید که بکارتون میاد.
۱- دستور ls رو میزنید و لیست دیسک هارو میبینید
۲- باید با همون دستور ls و دنبالش پارتیشن تارگتتون و دایرکتوری رو بزنید تا بوتلودر رو پیدا کنید. مثال:
ls (hd0,gpt2)/boot/grub
هر پارتیشنی که ارور نداد و لیست فایل هاش رو دیدید، پارتیشن اصلی شماست
۳- با دستور set میتونید environment variable ست کنید که به دوتاش نیاز داریم
اولا root
دوما prefix
روت اینجا یعنی پارتیشنی که قراره کرنل لینوکسمون به عنوان root بشناستش
Prefix برای این ست میکنیم که گراب موقعی که میخواد ماژولی رو لود کنه، پیشوند رو قبل آدرس ماژول بزاره
مثال ها:
set root=(hd0,gpt2)
یا مثلا
set prefix=(hd0,gpt2)/boot/grub
۴ـ خب خب.... حالا insmod normal و normal میزنید و برمیگردید به محیط بوت لودرتون..... و اینطوری شما یکی از مشکلات تیپیکالی که واسه dualboot user ها به وجود میاد رو میتونید هندل کنید.
بعدا پروسه اون یکی مشکلات رو هم میزارم ولی این استارت خوبیه
@Buddy_Stuff
سطح مباحث کانال چطوره
Anonymous Poll
10%
قوی (سطح مطالبو بیاریم پایین)
66%
خوبه (دست نزنیم)
34%
ضعیف (سطح مطالبو ببریم بالا)
آقا ما وقتی به تصویر دیجیتال تو کامپیوتر نگاه میکنیم تو دوتا حوزه میتونیم بررسیش کنیم:
حوزه مکانی و حوزه فرکانسی
حوزه مکانی و حوزه فرکانسی
حوزه مکانی رو همه دیدن و باهاش کار کردن
تعدادی پیکسل و رنگ داریم که اینارو میان دستکاری میکنن
مثلا رنگشو بالا پایین میکنن
تعدادی پیکسل و رنگ داریم که اینارو میان دستکاری میکنن
مثلا رنگشو بالا پایین میکنن
ولی حوزه فرکانسی رو کمتر کسی دیده یا متوجه کارکردش شده
بعضی ادیت عکسا هستن که شما نمیتونید از تغییر پیکسل ها انجامشون بدید
مثلا بلور بزنید یا sharpening کنید
اگر هم بشه نمیصرفه اینو پیکسل به پیکسل انجام بدید
بعضی ادیت عکسا هستن که شما نمیتونید از تغییر پیکسل ها انجامشون بدید
مثلا بلور بزنید یا sharpening کنید
اگر هم بشه نمیصرفه اینو پیکسل به پیکسل انجام بدید
این دختر خانم رو مثال بگیرید
عکس های پایینی درواقع همون عکس های بالایی هستن که با تبدیل فوریه به حوزه فرکانس بردیمشون
اینجا شما کوچک ترین تغییر تو حوزه فرکانسی انجام بدید کل عکس عوض میشه.
در طیف تبدیل فوریه، فرکانس های پایین (نواحی یکنواخت و میانگین روشنایی) در مرکز تصویر متمرکز شده و روشن ترن، در حالی که فرکانس های بالا (مانند لبه ها، بافت ها و جزئیات ریز) به سمت حاشیه ها میره و کمرنگ تر (تیره تر) دیده میشن
عکس های پایینی درواقع همون عکس های بالایی هستن که با تبدیل فوریه به حوزه فرکانس بردیمشون
اینجا شما کوچک ترین تغییر تو حوزه فرکانسی انجام بدید کل عکس عوض میشه.
در طیف تبدیل فوریه، فرکانس های پایین (نواحی یکنواخت و میانگین روشنایی) در مرکز تصویر متمرکز شده و روشن ترن، در حالی که فرکانس های بالا (مانند لبه ها، بافت ها و جزئیات ریز) به سمت حاشیه ها میره و کمرنگ تر (تیره تر) دیده میشن
❤1
در واقع به بیانی دیگه حوزه فرکانسی عکس ها، امضای اون عکس ها هستن
روال کار اینه که عکس هارو با تبدیل فوریه FFT میبرن تو حوزه فرکانس
با فیلتر های مختلفی مثل فیلتر بالاگذر یا پایین گذر بعضی ویژگی های تصویر رو بولد میکنن یا کمرنگ میکنن
بعد با تبدیل برعکس فوریه، تصویر رو با فیلتر اعمال شده برمیگردونن
روال کار اینه که عکس هارو با تبدیل فوریه FFT میبرن تو حوزه فرکانس
با فیلتر های مختلفی مثل فیلتر بالاگذر یا پایین گذر بعضی ویژگی های تصویر رو بولد میکنن یا کمرنگ میکنن
بعد با تبدیل برعکس فوریه، تصویر رو با فیلتر اعمال شده برمیگردونن