محفل Buddy
Anti-Aliasing و Rasterization یکی از مختصر ترین و بهترین توضیحاتی که میتونین درموردش بشنوید بحث باحالیه تو راستیراسیون معمولا از مفهوم barycentric استفاده میشه. Barycentric به مختصات مرکز ثقلی یه شکلی مثل مثلث یا mesh میگن. کارت گرافیک بر اساس این مختصات…
ترفند گرافیک Most Wanted 2012: جادوی Deferred Shading
اکثر بازی های نسل هفت برای نورپردازی مستقیم روی geometry هزینه سنگینی میدادن چون به ازای هر آبجکت و هر منبع نور، تمام محاسبات سایه زنی باید مستقیما روی مش سه بعدی تکرار میشد.
موتور شرکت کرایتریون با تغییر پایپ لاین به Deferred Shading گرافیک بازی رو متحول کرد:
فاز اول (G-Buffer): صحنه بدون نور رندر میشه و ویژگیهای خام هر پیکسل (رنگ Albedo، بردار Normal، عمق Depth و میزان Roughness) داخل چند لایه بافر دوبعدی ذخیره میشه.
فاز دوم (Lighting): کارت گرافیک بدون درگیر شدن با مش های سه بعدی سنگین، صدها نور داینامیک (چراغ ماشین ها، نور neon و رفلکشن خیس آسفالت) رو مستقیما روی پیکسل های این بافرها اعمال میکنه.
نتیجه؟ ده ها منبع نور و بازتاب های سنگین روی آسفالت خیس، بدون افت فریم روی سختافزار محدود اون دوران خیلی روون بالا میومد.
@Buddy_Stuff
اکثر بازی های نسل هفت برای نورپردازی مستقیم روی geometry هزینه سنگینی میدادن چون به ازای هر آبجکت و هر منبع نور، تمام محاسبات سایه زنی باید مستقیما روی مش سه بعدی تکرار میشد.
موتور شرکت کرایتریون با تغییر پایپ لاین به Deferred Shading گرافیک بازی رو متحول کرد:
فاز اول (G-Buffer): صحنه بدون نور رندر میشه و ویژگیهای خام هر پیکسل (رنگ Albedo، بردار Normal، عمق Depth و میزان Roughness) داخل چند لایه بافر دوبعدی ذخیره میشه.
فاز دوم (Lighting): کارت گرافیک بدون درگیر شدن با مش های سه بعدی سنگین، صدها نور داینامیک (چراغ ماشین ها، نور neon و رفلکشن خیس آسفالت) رو مستقیما روی پیکسل های این بافرها اعمال میکنه.
نتیجه؟ ده ها منبع نور و بازتاب های سنگین روی آسفالت خیس، بدون افت فریم روی سختافزار محدود اون دوران خیلی روون بالا میومد.
@Buddy_Stuff
❤2
بیاید از تجربه پریروزم از cursor بهتون بگم که تا به چشام نمیدیدم باور نمیکردم
تو قسمت release کردن برنامه ام تو یه سایتی مشکل داشتم. انگار CI/CD اونجوری که باید، درست بیلد نمیکرد و هاستش نمیکرد.
سورس سایت رو سیستمم بود و بنده به cursor گفتم این همچین مشکلی داره و موقع پوش کردن سورس، درست بیلد نمیشه.
1- این برادر رفت سایتمو dig کرد،آیپی رو پیدا کرد
2- از پوشه .ssh فهمید دسترسی ssh دارم و کانکت شد.
3- از کانکشن ssh به استک مدیریت کانتینر های داکرم وصل شد
4- داکر کامپوز رو باز کرد و ادیت زد.
5- redeploy کرد
6- تغیرات رو داخل داشبورد مدیریتی کانتینر هام ذخیره کرد!
7- اتوماتیک از رو سیستمم کامیت رو زد و پوش کرد و درست شد.
آره خلاصه بترسید....
تو قسمت release کردن برنامه ام تو یه سایتی مشکل داشتم. انگار CI/CD اونجوری که باید، درست بیلد نمیکرد و هاستش نمیکرد.
سورس سایت رو سیستمم بود و بنده به cursor گفتم این همچین مشکلی داره و موقع پوش کردن سورس، درست بیلد نمیشه.
1- این برادر رفت سایتمو dig کرد،آیپی رو پیدا کرد
2- از پوشه .ssh فهمید دسترسی ssh دارم و کانکت شد.
3- از کانکشن ssh به استک مدیریت کانتینر های داکرم وصل شد
4- داکر کامپوز رو باز کرد و ادیت زد.
5- redeploy کرد
6- تغیرات رو داخل داشبورد مدیریتی کانتینر هام ذخیره کرد!
7- اتوماتیک از رو سیستمم کامیت رو زد و پوش کرد و درست شد.
آره خلاصه بترسید....
🤯4❤1
محفل Buddy
بیاید از تجربه پریروزم از cursor بهتون بگم که تا به چشام نمیدیدم باور نمیکردم تو قسمت release کردن برنامه ام تو یه سایتی مشکل داشتم. انگار CI/CD اونجوری که باید، درست بیلد نمیکرد و هاستش نمیکرد. سورس سایت رو سیستمم بود و بنده به cursor گفتم این همچین مشکلی…
btw
اون پنلی که میگم توش کانتینر هامو مدیریت میکردم کاملا گارد میشد
رفت توکن api رو از روال دستورات bash history استخراج کرد
اون پنلی که میگم توش کانتینر هامو مدیریت میکردم کاملا گارد میشد
رفت توکن api رو از روال دستورات bash history استخراج کرد
🤯3
دوستان علت اینکه این چند روز پست نمیزارم اینه که دارم روی یه سرویسی کار میکنم که احتمالا به درد همه برنامه نویسا میخوره
گیمرا هم ازش نون میبرن
فقط دعا کنید که شرمندتون نشم و یه چیز خوبی دربیاد
گیمرا هم ازش نون میبرن
فقط دعا کنید که شرمندتون نشم و یه چیز خوبی دربیاد
🔥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%
ضعیف (سطح مطالبو ببریم بالا)
آقا ما وقتی به تصویر دیجیتال تو کامپیوتر نگاه میکنیم تو دوتا حوزه میتونیم بررسیش کنیم:
حوزه مکانی و حوزه فرکانسی
حوزه مکانی و حوزه فرکانسی