Forwarded from IRCF | اینترنت آزاد برای همه
سرویس استاتوس آروان دیروز بهدلیل مشکلی که برای کلودفلر پیش اومده بود، از دسترس خارج شد.
مدیرعامل آروان در پاسخ به این موضوع گفته سرویس استاتوس کلودفلر روی AWS و آروان روی کلودفلر هست؛ چون لازمه وقتی سرویس خودت اختلال داره بقیه بتونن از این اختلال مطلع بشن.
🔍 ircf.space
@ircfspace
مدیرعامل آروان در پاسخ به این موضوع گفته سرویس استاتوس کلودفلر روی AWS و آروان روی کلودفلر هست؛ چون لازمه وقتی سرویس خودت اختلال داره بقیه بتونن از این اختلال مطلع بشن.
🔍 ircf.space
@ircfspace
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
آکادمی آموزشی کندوی دانش
افزایش سرعت copy/paste - آکادمی آموزشی کندوی دانش
در لینوکس، سرعت انتقال فایلها به عوامل مختلفی مانند اندازه فایل، نوع دیسک (HDD یا SSD) و اندازه بافر خواندن/نوشتن بستگی دارد. یکی از سادهترین روشها برای
Forwarded from Mr Python | مستر پایتون (حسین)
🟣 اسمبلی x86 - قسمت 21 :تست بیت ها با دستورالعمل TEST
در این ویدیو به بررسی دستورالعمل TEST و نحوه استفاده از آن برای تست کردن یک بیت خاص در یک عدد خواهیم پرداخت .
همچنین به عنوان تمرین عملی برنامه ای برای تشخیص زوج یا فرد بودن یک عدد دلخواه با استفاده از دستورالعمل TEST پیاده خواهیم کرد .
Aparat : https://www.aparat.com/v/zee6oc3
Youtube : https://youtu.be/trVeaeD2b4Y
🆔 : @MrPythonBlog | BOOST
در این ویدیو به بررسی دستورالعمل TEST و نحوه استفاده از آن برای تست کردن یک بیت خاص در یک عدد خواهیم پرداخت .
همچنین به عنوان تمرین عملی برنامه ای برای تشخیص زوج یا فرد بودن یک عدد دلخواه با استفاده از دستورالعمل TEST پیاده خواهیم کرد .
Aparat : https://www.aparat.com/v/zee6oc3
Youtube : https://youtu.be/trVeaeD2b4Y
🆔 : @MrPythonBlog | BOOST
Forwarded from IRCF | اینترنت آزاد برای همه
برنامه متنباز و رایگان PyWarp که برای ویندوز، لینوکس و مکاواس عرضه شده، در تازهترین آپدیتش تغییراتی داده که پروتکل مسک مجددا روی اینترنتهایی که Masque رو مسدود کردن قابل استفاده بشه.
خودم تست کردم و جوابگو بود؛ البته ممکنه برای اتصال نیاز باشه چندین مرتبه تلاش کنین.
👉 github.com/saeedmasoudie/pywarp/releases/latest
🔍 ircf.space
@ircfspace
خودم تست کردم و جوابگو بود؛ البته ممکنه برای اتصال نیاز باشه چندین مرتبه تلاش کنین.
👉 github.com/saeedmasoudie/pywarp/releases/latest
🔍 ircf.space
@ircfspace
Forwarded from Go Casts 🚀
نکتهای که تجربهاش رو توی سیستمهای high-scale دیدم، اینه که بسیاری از این تصمیمات فقط یکبار نیستن — بلکه evolutionary هستن.
مثلاً شروع با monolith منطقیترین انتخاب برای یک سیستم جدید با domain uncertainty بالا هست، اما همون معماری با رشد traffic و team size ممکنه به bottleneck تبدیل بشه. در اون مرحله migration به microservices دیگه یک انتخاب نیست، بلکه یک forced trade-off بین developer productivity، operational complexity و scalability هست.
یا مثلاً انتخاب database: با 10K QPS شاید PostgreSQL با read replica کافی باشه، ولی با 100K+ QPS باید راجع به sharding، caching layer و eventual consistency فکر کنی. همین decision دوباره وابسته میشه به اینکه consistency requirements چقدر سختگیرانهان.
به نظرم شاید یه اصل مهم دیگه هم مثل "it depends" اینه که بدونیم چه موقع باید یک تصمیم رو revisit کنیم. این یعنی داشتن observability و metrics که نشون بدن کِی architectural constraints ما به actual bottleneck تبدیل شدن.
در تایید این پست خوب دوست عزیزم محمد نصر
https://www.linkedin.com/posts/mohammadne_%D8%AF%D8%B1-%D8%B3%D8%A7%D9%84%D9%87%D8%A7%DB%8C%DB%8C-%DA%A9%D9%87-%D8%B1%D9%88%DB%8C-software-architecture-activity-7396796883618217985-GquG?utm_source=share&utm_medium=member_desktop&rcm=ACoAABKaeq4BumiQ-WRCbtW6ppzE1JdD1EBnCUQ
پی نوشت: عذرخواهی میکنم واقعا سخته فارسی کنی کلمات رو و همون معنی رو بده. من خودم انگلیسی م چندان تعریفی نداره و خدای نکرده برداشت بدی نشه. ولی واقعا سخته بعضی جاها. نگم سخته بهتره بگم سریعتره که اینطوری نوشته بشه 🙂. بازم معذرت
@gocasts
مثلاً شروع با monolith منطقیترین انتخاب برای یک سیستم جدید با domain uncertainty بالا هست، اما همون معماری با رشد traffic و team size ممکنه به bottleneck تبدیل بشه. در اون مرحله migration به microservices دیگه یک انتخاب نیست، بلکه یک forced trade-off بین developer productivity، operational complexity و scalability هست.
یا مثلاً انتخاب database: با 10K QPS شاید PostgreSQL با read replica کافی باشه، ولی با 100K+ QPS باید راجع به sharding، caching layer و eventual consistency فکر کنی. همین decision دوباره وابسته میشه به اینکه consistency requirements چقدر سختگیرانهان.
به نظرم شاید یه اصل مهم دیگه هم مثل "it depends" اینه که بدونیم چه موقع باید یک تصمیم رو revisit کنیم. این یعنی داشتن observability و metrics که نشون بدن کِی architectural constraints ما به actual bottleneck تبدیل شدن.
در تایید این پست خوب دوست عزیزم محمد نصر
https://www.linkedin.com/posts/mohammadne_%D8%AF%D8%B1-%D8%B3%D8%A7%D9%84%D9%87%D8%A7%DB%8C%DB%8C-%DA%A9%D9%87-%D8%B1%D9%88%DB%8C-software-architecture-activity-7396796883618217985-GquG?utm_source=share&utm_medium=member_desktop&rcm=ACoAABKaeq4BumiQ-WRCbtW6ppzE1JdD1EBnCUQ
پی نوشت: عذرخواهی میکنم واقعا سخته فارسی کنی کلمات رو و همون معنی رو بده. من خودم انگلیسی م چندان تعریفی نداره و خدای نکرده برداشت بدی نشه. ولی واقعا سخته بعضی جاها. نگم سخته بهتره بگم سریعتره که اینطوری نوشته بشه 🙂. بازم معذرت
@gocasts
Linkedin
در سالهایی که روی Software Architecture و Distributed System Design کار کردهام، بیشترین سوءتفاهمی که دیدهام این است که تصور…
در سالهایی که روی Software Architecture و Distributed System Design کار کردهام، بیشترین سوءتفاهمی که دیدهام این است که تصور میشود برای هر پروژه یک «نسخهی واحد» وجود دارد؛ از انتخاب معماری گرفته تا انتخاب زیرساخت.
اما واقعیت این است که در مهندسی نرمافزار،…
اما واقعیت این است که در مهندسی نرمافزار،…
Forwarded from DevTwitter | توییت برنامه نویسی
This media is not supported in your browser
VIEW IN TELEGRAM
خب جمینای ۳ هم منتشر شد!
نسخه اولیهاش تا اینجای کار خیلی جذاب به نظر میرسه.
تمرکز جمینای ۳ اینه که برای اولین بار مولتیمدل واقعی ارائه بده. علاوه بر این، ادعا میکنه بین همه مدلها بهترین توانایی تحلیل عمیق رو داره.
نکته مهم دیگه اینه که هدف اصلی این نسخه، بهبود استفاده از امکانات جمینای و ترکیب آن با ساخت اجنتها برای اتوماتیک کردن فرآیندهاست.
در کل از ۱۰ معرفی جالب اخیر در حوزه AI، هفتتاش متعلق به گوگل بوده و واقعا کارهای بزرگی انجام داده. امیدوارم بهش حسابی.
@DevTwitter | <Farokh/>
نسخه اولیهاش تا اینجای کار خیلی جذاب به نظر میرسه.
تمرکز جمینای ۳ اینه که برای اولین بار مولتیمدل واقعی ارائه بده. علاوه بر این، ادعا میکنه بین همه مدلها بهترین توانایی تحلیل عمیق رو داره.
نکته مهم دیگه اینه که هدف اصلی این نسخه، بهبود استفاده از امکانات جمینای و ترکیب آن با ساخت اجنتها برای اتوماتیک کردن فرآیندهاست.
در کل از ۱۰ معرفی جالب اخیر در حوزه AI، هفتتاش متعلق به گوگل بوده و واقعا کارهای بزرگی انجام داده. امیدوارم بهش حسابی.
@DevTwitter | <Farokh/>
Forwarded from Gopher Academy
این تصویر بهصورت دقیق نحوهی ادغام خلاصهها (summary merging) در مدیریت حافظهی Go را نشان میدهد.
ایدهی اصلی:
در Go برای مدیریت صفحات آزاد از ساختاری به نام Summary استفاده میکند که سه مقدار دارد:
start → تعداد صفحات آزاد در ابتدای محدوده
end → تعداد صفحات آزاد در انتهای محدوده
max → بیشترین دنبالهی صفحات آزاد در هر نقطه از محدوده
هر Summary معمولاً ۵۱۲ صفحه را پوشش میدهد. وقتی دو محدودهی متوالی (مثل S1 و S2) کنار هم قرار میگیرند، Go میتواند آنها را با هم ادغام کند تا یک summary بزرگتر بسازد.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
ایدهی اصلی:
در Go برای مدیریت صفحات آزاد از ساختاری به نام Summary استفاده میکند که سه مقدار دارد:
start → تعداد صفحات آزاد در ابتدای محدوده
end → تعداد صفحات آزاد در انتهای محدوده
max → بیشترین دنبالهی صفحات آزاد در هر نقطه از محدوده
هر Summary معمولاً ۵۱۲ صفحه را پوشش میدهد. وقتی دو محدودهی متوالی (مثل S1 و S2) کنار هم قرار میگیرند، Go میتواند آنها را با هم ادغام کند تا یک summary بزرگتر بسازد.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Forwarded from Gopher Academy
وقتی این دو کنار هم قرار میگیرند، Go مقدارهای جدید را به شکل زیر محاسبه میکند:
start = S1.start = 3
(از آنجایی که ناحیه پایینتر از S1 شروع میشود)
end = S2.end = 2
(زیرا انتهای کل محدوده با S2 تمام میشود)
max = max(S1.max, S2.max, S1.end + S2.start)
= max(10, 8, 7 + 5)
= max(10, 8, 12)
با ادغام S1 و S2، خلاصهی جدید محدودهی ۱۰۲۴ صفحهای برابر است با:
start = 3, max = 12, end = 2
مزیت این روش:
Go با استفاده از این ساختار سلسلهمراتبی از summaryها میتواند بدون نیاز به اسکن کامل بیتمپها، در چند سطح (arena → chunk → bitmap) سریعاً پیدا کند کجا فضای خالی کافی برای تخصیص span جدید وجود دارد — در نتیجه تخصیص حافظه بسیار سریعتر و مقیاسپذیرتر انجام میشود.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
start = S1.start = 3
(از آنجایی که ناحیه پایینتر از S1 شروع میشود)
end = S2.end = 2
(زیرا انتهای کل محدوده با S2 تمام میشود)
max = max(S1.max, S2.max, S1.end + S2.start)
= max(10, 8, 7 + 5)
= max(10, 8, 12)
با ادغام S1 و S2، خلاصهی جدید محدودهی ۱۰۲۴ صفحهای برابر است با:
start = 3, max = 12, end = 2
مزیت این روش:
Go با استفاده از این ساختار سلسلهمراتبی از summaryها میتواند بدون نیاز به اسکن کامل بیتمپها، در چند سطح (arena → chunk → bitmap) سریعاً پیدا کند کجا فضای خالی کافی برای تخصیص span جدید وجود دارد — در نتیجه تخصیص حافظه بسیار سریعتر و مقیاسپذیرتر انجام میشود.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Forwarded from Gopher Academy
این تصویر بهخوبی ساختار سلسلهمراتبی (Hierarchical Summary Structure) در مدیریت حافظهی Go را نشان میدهد — یکی از بخشهای کلیدی طراحی allocator مدرن Go.
🧠 ایدهی اصلی:
برای اینکه Go بتواند خیلی سریع تشخیص دهد کجا فضای خالی کافی برای تخصیص وجود دارد**، از یک ساختار درختی چندسطحی استفاده میکند.
این ساختار درواقع یک **Radix Tree جهانی از *summaryها* است.
🏗 نحوهی کار:
* Level 4 (پایینترین سطح)
شامل بیتمپهای واقعی از صفحات (هر بیت = یک صفحه 8KB).
در تصویر با رنگ سبز نشان داده شده و مقدار
* Level 3 و بالاتر:
هر سطح بالاتر از ترکیب دو یا چند خلاصهی سطح پایینتر تشکیل میشود.
هر جعبهی آبی، یک Summary است که نشان میدهد در زیرمجموعهی خود چند صفحه آزاد بهصورت پیوسته وجود دارد.
برای هر سطح، سه مقدار (
* Level 0 (بالای درخت):
این سطح تنها یک نود دارد که کل فضای مجازی تخصیصپذیر Go را پوشش میدهد.
این نود به allocator اجازه میدهد خیلی سریع بفهمد آیا در کل heap جایی وجود دارد که مثلاً 100 صفحهی خالی پشتسرهم داشته باشد یا نه.
⚙️ مزایا:
1. 🔍 جستجوی سریع:
ا Allocator دیگر لازم نیست کل heap را اسکن کند — فقط در درخت پایین میرود تا بخشهای مناسب را بیابد.
2. 🔄 بهروزرسانی بلادرنگ:
وقتی صفحهای تخصیص یا آزاد میشود، فقط summary همان بخش و مسیرش تا بالا بهروزرسانی میشود (O(log n) پیچیدگی).
3. 🧩 مقیاسپذیری بالا:
چون هر سطح میتواند بهصورت محلی بهروزرسانی شود، چندین goroutine میتوانند بهصورت همزمان در بخشهای مختلف heap کار کنند بدون قفلگذاری سراسری.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🧠 ایدهی اصلی:
برای اینکه Go بتواند خیلی سریع تشخیص دهد کجا فضای خالی کافی برای تخصیص وجود دارد**، از یک ساختار درختی چندسطحی استفاده میکند.
این ساختار درواقع یک **Radix Tree جهانی از *summaryها* است.
🏗 نحوهی کار:
* Level 4 (پایینترین سطح)
شامل بیتمپهای واقعی از صفحات (هر بیت = یک صفحه 8KB).
در تصویر با رنگ سبز نشان داده شده و مقدار
1011...0010 وضعیت صفحات را مشخص میکند (۰ = آزاد، ۱ = اشغال).* Level 3 و بالاتر:
هر سطح بالاتر از ترکیب دو یا چند خلاصهی سطح پایینتر تشکیل میشود.
هر جعبهی آبی، یک Summary است که نشان میدهد در زیرمجموعهی خود چند صفحه آزاد بهصورت پیوسته وجود دارد.
برای هر سطح، سه مقدار (
start, max, end) بر اساس ادغام سطوح پایینتر محاسبه میشوند (مثل مثال S1 و S2 که قبلاً دیدی).* Level 0 (بالای درخت):
این سطح تنها یک نود دارد که کل فضای مجازی تخصیصپذیر Go را پوشش میدهد.
این نود به allocator اجازه میدهد خیلی سریع بفهمد آیا در کل heap جایی وجود دارد که مثلاً 100 صفحهی خالی پشتسرهم داشته باشد یا نه.
⚙️ مزایا:
1. 🔍 جستجوی سریع:
ا Allocator دیگر لازم نیست کل heap را اسکن کند — فقط در درخت پایین میرود تا بخشهای مناسب را بیابد.
2. 🔄 بهروزرسانی بلادرنگ:
وقتی صفحهای تخصیص یا آزاد میشود، فقط summary همان بخش و مسیرش تا بالا بهروزرسانی میشود (O(log n) پیچیدگی).
3. 🧩 مقیاسپذیری بالا:
چون هر سطح میتواند بهصورت محلی بهروزرسانی شود، چندین goroutine میتوانند بهصورت همزمان در بخشهای مختلف heap کار کنند بدون قفلگذاری سراسری.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Forwarded from Gopher Academy
📌 Memory Allocation in Go
❌این پست اپدیت میشود ❌
🔹 در این پست به بررسی جزئیات مدیریت حافظه در زبان Go میپردازیم.
درک درست از ساختار حافظه به شما کمک میکند عملکرد برنامههایتان را بهتر بهینه کنید و رفتار Garbage Collector را بهتر بفهمید.
🔵 Introduction
🔴 https://news.1rj.ru/str/gopher_academy/4231
➖➖➖➖➖➖➖➖
🔵 Go’s View of Virtual Memory
🔴 https://news.1rj.ru/str/gopher_academy/4232
➖➖➖➖➖➖➖➖
🔵 Arena and Page
🔴 https://news.1rj.ru/str/gopher_academy/4233
➖➖➖➖➖➖➖➖
🔵 Span and Size Class
🔴https://news.1rj.ru/str/gopher_academy/4260
🟡Two spans with different size classes
🟢https://news.1rj.ru/str/gopher_academy/4261
🟡Tail waste in span
🟢https://news.1rj.ru/str/gopher_academy/4262
🟡User objects and size class objects
🟢https://news.1rj.ru/str/gopher_academy/4263
➖➖➖➖➖➖➖➖
🔵Span Class
🔴 https://news.1rj.ru/str/gopher_academy/4283
➖➖➖➖➖➖➖➖
🔵Span Set
🔴https://news.1rj.ru/str/gopher_academy/4284
➖➖➖➖➖➖➖➖
🔵 Heap Bits and Malloc Header
🔴https://news.1rj.ru/str/gopher_academy/4285
🟡Heap bits in a span
🟢https://news.1rj.ru/str/gopher_academy/4286
🟡Malloc header in objects
🟢https://news.1rj.ru/str/gopher_academy/4287
➖➖➖➖➖➖➖➖
🔵 Heap Management
🔴https://news.1rj.ru/str/gopher_academy/4304
➖➖➖➖➖➖➖➖
🔵 Span Allocation: mheap.alloc
🔴https://news.1rj.ru/str/gopher_academy/4305
➖➖➖➖➖➖➖➖
🔵 Tracking Free Pages
🔴 https://news.1rj.ru/str/gopher_academy/4306
➖➖➖➖➖➖➖➖
🔵 Visualization of a bitmap summary
🔴https://news.1rj.ru/str/gopher_academy/4307
➖➖➖➖➖➖➖➖
🔵 Merging summaries of two contiguous memory chunks
🔴 https://news.1rj.ru/str/gopher_academy/4416
➖➖➖➖➖➖➖➖
🔵 Radix tree of summaries for the entire address space
🔴https://news.1rj.ru/str/gopher_academy/4451
➖➖➖➖➖➖➖➖
🔵 A deeper look into the summary radix tree
🔴https://news.1rj.ru/str/gopher_academy/4453
➖➖➖➖➖➖➖➖
🔵 Finding Free Pages: pageAlloc.find
🔴
➖➖➖➖➖➖➖➖
🔵 Growing the Heap: mheap.grow
🔴
➖➖➖➖➖➖➖➖
🔵 Setting up a Span: mheap.haveSpan
🔴
➖➖➖➖➖➖➖➖
🔵 Caching Free Pages: mheap.allocToCache
🔴
➖➖➖➖➖➖➖➖
🔵 Logic for finding free pages for span allocation
🔴
➖➖➖➖➖➖➖➖
🔵 Caching Span Objects: mheap.allocMSpanLocked
🔴
➖➖➖➖➖➖➖➖
🔵Central Span Manager: mcentral
🔴
➖➖➖➖➖➖➖➖
🔵Processor’s Memory Allocator: mcache
🔴
➖➖➖➖➖➖➖➖
🔵 Heap Allocation
🔴
➖➖➖➖➖➖➖➖
🔵Tiny Objects: mallocgcTiny
🔴
➖➖➖➖➖➖➖➖
🔵 Small Objects: mallocgcSmall*
🔴
➖➖➖➖➖➖➖➖
🔵 Large Objects: mallocgcLarge
🔴
➖➖➖➖➖➖➖➖
🔵Stack Management
🔴
➖➖➖➖➖➖➖➖
🔵Allocating Stack: stackalloc
🔴
➖➖➖➖➖➖➖➖
🔵 Stack Growth: morestack
🔴
➖➖➖➖➖➖➖➖
🔵Reusing Stack: stackfree
🔴
➖➖➖➖➖➖➖➖
🔵 Stack or Heap?
🔴
➖➖➖➖➖➖➖➖
🔵 Case Studies
🔴
➖➖➖➖➖➖➖➖
👑 @gopher_academy
❌این پست اپدیت میشود ❌
🔹 در این پست به بررسی جزئیات مدیریت حافظه در زبان Go میپردازیم.
درک درست از ساختار حافظه به شما کمک میکند عملکرد برنامههایتان را بهتر بهینه کنید و رفتار Garbage Collector را بهتر بفهمید.
🔵 Introduction
🔴 https://news.1rj.ru/str/gopher_academy/4231
➖➖➖➖➖➖➖➖
🔵 Go’s View of Virtual Memory
🔴 https://news.1rj.ru/str/gopher_academy/4232
➖➖➖➖➖➖➖➖
🔵 Arena and Page
🔴 https://news.1rj.ru/str/gopher_academy/4233
➖➖➖➖➖➖➖➖
🔵 Span and Size Class
🔴https://news.1rj.ru/str/gopher_academy/4260
🟡Two spans with different size classes
🟢https://news.1rj.ru/str/gopher_academy/4261
🟡Tail waste in span
🟢https://news.1rj.ru/str/gopher_academy/4262
🟡User objects and size class objects
🟢https://news.1rj.ru/str/gopher_academy/4263
➖➖➖➖➖➖➖➖
🔵Span Class
🔴 https://news.1rj.ru/str/gopher_academy/4283
➖➖➖➖➖➖➖➖
🔵Span Set
🔴https://news.1rj.ru/str/gopher_academy/4284
➖➖➖➖➖➖➖➖
🔵 Heap Bits and Malloc Header
🔴https://news.1rj.ru/str/gopher_academy/4285
🟡Heap bits in a span
🟢https://news.1rj.ru/str/gopher_academy/4286
🟡Malloc header in objects
🟢https://news.1rj.ru/str/gopher_academy/4287
➖➖➖➖➖➖➖➖
🔵 Heap Management
🔴https://news.1rj.ru/str/gopher_academy/4304
➖➖➖➖➖➖➖➖
🔵 Span Allocation: mheap.alloc
🔴https://news.1rj.ru/str/gopher_academy/4305
➖➖➖➖➖➖➖➖
🔵 Tracking Free Pages
🔴 https://news.1rj.ru/str/gopher_academy/4306
➖➖➖➖➖➖➖➖
🔵 Visualization of a bitmap summary
🔴https://news.1rj.ru/str/gopher_academy/4307
➖➖➖➖➖➖➖➖
🔵 Merging summaries of two contiguous memory chunks
🔴 https://news.1rj.ru/str/gopher_academy/4416
➖➖➖➖➖➖➖➖
🔵 Radix tree of summaries for the entire address space
🔴https://news.1rj.ru/str/gopher_academy/4451
➖➖➖➖➖➖➖➖
🔵 A deeper look into the summary radix tree
🔴https://news.1rj.ru/str/gopher_academy/4453
➖➖➖➖➖➖➖➖
🔵 Finding Free Pages: pageAlloc.find
🔴
➖➖➖➖➖➖➖➖
🔵 Growing the Heap: mheap.grow
🔴
➖➖➖➖➖➖➖➖
🔵 Setting up a Span: mheap.haveSpan
🔴
➖➖➖➖➖➖➖➖
🔵 Caching Free Pages: mheap.allocToCache
🔴
➖➖➖➖➖➖➖➖
🔵 Logic for finding free pages for span allocation
🔴
➖➖➖➖➖➖➖➖
🔵 Caching Span Objects: mheap.allocMSpanLocked
🔴
➖➖➖➖➖➖➖➖
🔵Central Span Manager: mcentral
🔴
➖➖➖➖➖➖➖➖
🔵Processor’s Memory Allocator: mcache
🔴
➖➖➖➖➖➖➖➖
🔵 Heap Allocation
🔴
➖➖➖➖➖➖➖➖
🔵Tiny Objects: mallocgcTiny
🔴
➖➖➖➖➖➖➖➖
🔵 Small Objects: mallocgcSmall*
🔴
➖➖➖➖➖➖➖➖
🔵 Large Objects: mallocgcLarge
🔴
➖➖➖➖➖➖➖➖
🔵Stack Management
🔴
➖➖➖➖➖➖➖➖
🔵Allocating Stack: stackalloc
🔴
➖➖➖➖➖➖➖➖
🔵 Stack Growth: morestack
🔴
➖➖➖➖➖➖➖➖
🔵Reusing Stack: stackfree
🔴
➖➖➖➖➖➖➖➖
🔵 Stack or Heap?
🔴
➖➖➖➖➖➖➖➖
🔵 Case Studies
🔴
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Telegram
Gopher Academy
🔹 Introduction – Memory Allocation in Go
مدیریت حافظه بخش حیاتی هر زبان برنامهنویسی است و Go هم از این قاعده مستثنی نیست. سرعت و کارایی برنامههای Go به شدت وابسته به نحوه تخصیص و مدیریت حافظه است.
هرچند Go با APIهای سادهای مثل new(T), &T{} و make پیچیدگیها…
مدیریت حافظه بخش حیاتی هر زبان برنامهنویسی است و Go هم از این قاعده مستثنی نیست. سرعت و کارایی برنامههای Go به شدت وابسته به نحوه تخصیص و مدیریت حافظه است.
هرچند Go با APIهای سادهای مثل new(T), &T{} و make پیچیدگیها…
Forwarded from DevTwitter | توییت برنامه نویسی
This media is not supported in your browser
VIEW IN TELEGRAM
واقعا الان با این ابزارهای vibe coding و این مدلهای LLM هر چیزی به ذهن آدم میرسه میتونه بسازه و امتحان کنه. نه لزوما برای پروداکشن برای استفاده شخصی و یا برای بازی.
یکی از این ابزارها google ai studio هست. از درست کردن اپ برای یادگیریِ مثلا یک مفهوم ریاضی یا فیزیک گرفته، یا اَپ هایی که بچه ها بازی کنند. این اَپ که زیر ۲ دقیقه با پسرم درست کردیم، داستان تولید میکنه، با تصویر و داستان را با صدا میخونه. ویدیو صدا داره.
یا مثلا داشتیم چند روز پیش چند نفره monopoly بازی میکردیم. ولی track/دنبال کردن اینکه نوبت کیه و انداختن تاس ها گاهی قاطی میشه. تو ۵ دقیقه یک اَپ که کاملا لوکال کار میکنه و همه بازیکن ها را track میکنه با گرافیک قشنگ و animation و تاس ۳بعدی نوشتیم.
نتیجه اخلاقی: تا میتونید از این ابزارها استفاده کنید. هر چیزی به ذهنتون میاد یا دوست دارد یاد بگیرید میتونید یک جورایی تبدیلش کنید به یک آپ و بسازیدشون و استفاده کنید.
@DevTwitter | <Mehdi Allahyari/>
یکی از این ابزارها google ai studio هست. از درست کردن اپ برای یادگیریِ مثلا یک مفهوم ریاضی یا فیزیک گرفته، یا اَپ هایی که بچه ها بازی کنند. این اَپ که زیر ۲ دقیقه با پسرم درست کردیم، داستان تولید میکنه، با تصویر و داستان را با صدا میخونه. ویدیو صدا داره.
یا مثلا داشتیم چند روز پیش چند نفره monopoly بازی میکردیم. ولی track/دنبال کردن اینکه نوبت کیه و انداختن تاس ها گاهی قاطی میشه. تو ۵ دقیقه یک اَپ که کاملا لوکال کار میکنه و همه بازیکن ها را track میکنه با گرافیک قشنگ و animation و تاس ۳بعدی نوشتیم.
نتیجه اخلاقی: تا میتونید از این ابزارها استفاده کنید. هر چیزی به ذهنتون میاد یا دوست دارد یاد بگیرید میتونید یک جورایی تبدیلش کنید به یک آپ و بسازیدشون و استفاده کنید.
@DevTwitter | <Mehdi Allahyari/>
Forwarded from RandRng
مثل اینکه امروز، روز مرد هست.
این روز رو به (زن و مرد، دختر و پسر) همهی اونهایی که از سال ۵۰ به بعد توی ایران به دنیا اومدند و با ننگ ۵۷ و ج.ا زندگی کردند تبریک میگم!
توی این سالها، همین که زندگی کنی هم مردونگی میخواد بخصوص اگر این زندگی با شرافت باشه.
به امید آینده بهتر، حداقل برای نسل بعدی 🌹
این روز رو به (زن و مرد، دختر و پسر) همهی اونهایی که از سال ۵۰ به بعد توی ایران به دنیا اومدند و با ننگ ۵۷ و ج.ا زندگی کردند تبریک میگم!
توی این سالها، همین که زندگی کنی هم مردونگی میخواد بخصوص اگر این زندگی با شرافت باشه.
به امید آینده بهتر، حداقل برای نسل بعدی 🌹
Forwarded from DevTwitter | توییت برنامه نویسی
گوگل به کد ادیتور جدید به اسم Antigravity داده
یه vscode با کمک Gemini 3 Pro
یه جوریه انگار نسخهی preview باشه
https://antigravity.google/
* رو لینوکس که 403 میگرفتم و به سختی نصبش کردم.
@DevTwitter | <Milad Niroee/>
یه vscode با کمک Gemini 3 Pro
یه جوریه انگار نسخهی preview باشه
https://antigravity.google/
* رو لینوکس که 403 میگرفتم و به سختی نصبش کردم.
@DevTwitter | <Milad Niroee/>
Marde Tanha
Farhad Mehrad
مرد تنها
خواننده: فرهاد مهراد
سال انتشار : ۱۳۴۹
ترانه و آهنگ : شهیار قنبری
تنظیم: اسفندیار منفردزاده
برای خودم
@PytensMusic
خواننده: فرهاد مهراد
سال انتشار : ۱۳۴۹
ترانه و آهنگ : شهیار قنبری
تنظیم: اسفندیار منفردزاده
برای خودم
@PytensMusic
Forwarded from OpenPCB
طبق گفته FFmpeg پچ جدید باعث شده یه تابع مهم تو پردازش ویدیو ۳.۴۶ برابر سریعتر بشه. ماجرا اینه که یکی از کانتریبیوترها به اسم mkver اومده تابع add_8x8basis_sse3 رو که قبلاً با C نوشته شده بود رو کاملا با اسمبلی x86 بازنویسی کرده و خروجی هم شده همین جهش سرعت جدی.
دلیلش اینه که کامپایلرهای GCC و Clang وقتی با فلگ O3 کد رو کامپایل میکنند، معمولاً یه سری حلقه هایی که اصلاً قرار نیست زیاد اجرا بشن رو باز میکنن و کد رو حجیمتر میکنن. اینجا هم اون فانکشن رو از ۱۷۶ بایت رسونده به ۱۴۰۶ بایت! تو این مدل پردازشها، چون دستورهای خاص و عجیبغریبی مثل pmulhrsw وجود داره، کامپایلر همیشه انتخابهای درستی نمیکنه. دولوپرهای FFmpeg هم میگن: «باشه، خودمون درستش میکنیم.» نکته مهم اینه که لزوماً کد C مشکل نداره! این رفتار کامپایلر تو مرحله بهینهسازیه که گاهی خودش دردسر درست میکنه.
این اولینبار نیست FFmpeg از اسمبلی برای گرفتن نهایت قدرت سختافزار استفاده میکنه واین همون بحث معروف چند وقت پیشه که چرا پلیر dav1d که چندتا آدم معمولی ساختنش، بعضی جاها از libgav1 گوگل بهتره. جواب همون همیشگیه: وقتی دقیق میدونی چی میخوای و خودت دستی کد اسمبلی رو مینویسی، خروجی معمولاً از نسخهی تولیدشده توسط کامپایلر بهتره.
یه سوال هم که همیشه مطرح میشه اینه که «چرا این مشکلات رو به سازندههای کامپایلر گزارش نمیکنن؟» گزارش میدن، ولی تا نسخه جدید کامپایلر بیاد مدتها طول میکشه. یعنی عملاً بهترین کار اینه که خودشون همزمان دست به آچار باشن و مشکل رو دور بزنن.
برای همین پروژههایی مثل FFmpeg اینقدر ارزشمندن. از یه طرف همیشه تو بهینهترین حالت ممکنه، از یه طرف دیگه همین مواردی که پیدا میکنن عملاً به کل کامیونیتی C و کامپایلرها سود میرسونه و باعث میشه ابزارهایی که همه استفاده میکنن، کمکم بهتر بشن.
📺Source
📡openpcb
دلیلش اینه که کامپایلرهای GCC و Clang وقتی با فلگ O3 کد رو کامپایل میکنند، معمولاً یه سری حلقه هایی که اصلاً قرار نیست زیاد اجرا بشن رو باز میکنن و کد رو حجیمتر میکنن. اینجا هم اون فانکشن رو از ۱۷۶ بایت رسونده به ۱۴۰۶ بایت! تو این مدل پردازشها، چون دستورهای خاص و عجیبغریبی مثل pmulhrsw وجود داره، کامپایلر همیشه انتخابهای درستی نمیکنه. دولوپرهای FFmpeg هم میگن: «باشه، خودمون درستش میکنیم.» نکته مهم اینه که لزوماً کد C مشکل نداره! این رفتار کامپایلر تو مرحله بهینهسازیه که گاهی خودش دردسر درست میکنه.
این اولینبار نیست FFmpeg از اسمبلی برای گرفتن نهایت قدرت سختافزار استفاده میکنه واین همون بحث معروف چند وقت پیشه که چرا پلیر dav1d که چندتا آدم معمولی ساختنش، بعضی جاها از libgav1 گوگل بهتره. جواب همون همیشگیه: وقتی دقیق میدونی چی میخوای و خودت دستی کد اسمبلی رو مینویسی، خروجی معمولاً از نسخهی تولیدشده توسط کامپایلر بهتره.
یه سوال هم که همیشه مطرح میشه اینه که «چرا این مشکلات رو به سازندههای کامپایلر گزارش نمیکنن؟» گزارش میدن، ولی تا نسخه جدید کامپایلر بیاد مدتها طول میکشه. یعنی عملاً بهترین کار اینه که خودشون همزمان دست به آچار باشن و مشکل رو دور بزنن.
برای همین پروژههایی مثل FFmpeg اینقدر ارزشمندن. از یه طرف همیشه تو بهینهترین حالت ممکنه، از یه طرف دیگه همین مواردی که پیدا میکنن عملاً به کل کامیونیتی C و کامپایلرها سود میرسونه و باعث میشه ابزارهایی که همه استفاده میکنن، کمکم بهتر بشن.
📺Source
📡openpcb
Forwarded from یک برنامه نویس تنبل (Lazy 🌱)
🔶 خلاصه قطعی کلودفلر در ۱۸ نوامبر ۲۰۲۵
قطعی از ساعت ۱۱:۲۰ UTC شروع شد و تا ۱۴:۳۰ ادامه داشت. تمام سرویس ها تا ساعت ۱۷:۰۶ به حالت عادی برگشتند. این بدترین قطعی کلودفلر از سال ۲۰۱۹ بود.
علت اصلی:
تغییر در مجوز های یک پایگاه داده باعث شد فایل پیکربندی سیستم Bot Management دو برابر شود و از حد مجاز عبور کند. این فایل بزرگتر به تمام سرور های شبکه ارسال شد و نرم افزار مسیر یابی ترافیک را مختل کرد.
جزئیات فنی:
- یک کوئری ClickHouse که هر ۵ دقیقه اجرا میشد، به دلیل تغییر در مجوز های دسترسی، ردیف های تکراری تولید کرد
- تعداد "فیچر ها" در فایل از حدود ۶۰ به بیش از ۲۰۰ افزایش یافت
- محدودیت حافظه سیستم Bot Management روی ۲۰۰ فیچر تنظیم شده بود
- نرمافزار با خطا مواجه شد و کد خطای 5xx برگرداند
سرویسهای آسیبدیده:
- سرویس CDN و سرویسهای امنیتی اصلی
- سرویس Turnstile و Workers KV
- بخش Dashboard (مشکل ورود کاربران)
- بخش Access (خطاهای احراز هویت)
- بخش Email Security (کاهش دقت تشخیص اسپم)
تیم ابتدا گمان کرد حمله DDoS است، اما بعداً منبع مشکل را شناسایی کردند. با متوقف کردن تولید فایل خراب و بازگرداندن نسخه قدیمی، ترافیک اصلی تا ساعت ۱۴:۳۰ برقرار شد.
کلودفلر برای جلوگیری از تکرار چنین قطعی ها, برنامه هایی برای تقویت سیستم ها، بررسی فایل های پیکر بندی، و بهبود مدیریت خطا ها در دست اجراست.
#خبر
@TheRaymondDev
قطعی از ساعت ۱۱:۲۰ UTC شروع شد و تا ۱۴:۳۰ ادامه داشت. تمام سرویس ها تا ساعت ۱۷:۰۶ به حالت عادی برگشتند. این بدترین قطعی کلودفلر از سال ۲۰۱۹ بود.
علت اصلی:
تغییر در مجوز های یک پایگاه داده باعث شد فایل پیکربندی سیستم Bot Management دو برابر شود و از حد مجاز عبور کند. این فایل بزرگتر به تمام سرور های شبکه ارسال شد و نرم افزار مسیر یابی ترافیک را مختل کرد.
جزئیات فنی:
- یک کوئری ClickHouse که هر ۵ دقیقه اجرا میشد، به دلیل تغییر در مجوز های دسترسی، ردیف های تکراری تولید کرد
- تعداد "فیچر ها" در فایل از حدود ۶۰ به بیش از ۲۰۰ افزایش یافت
- محدودیت حافظه سیستم Bot Management روی ۲۰۰ فیچر تنظیم شده بود
- نرمافزار با خطا مواجه شد و کد خطای 5xx برگرداند
سرویسهای آسیبدیده:
- سرویس CDN و سرویسهای امنیتی اصلی
- سرویس Turnstile و Workers KV
- بخش Dashboard (مشکل ورود کاربران)
- بخش Access (خطاهای احراز هویت)
- بخش Email Security (کاهش دقت تشخیص اسپم)
تیم ابتدا گمان کرد حمله DDoS است، اما بعداً منبع مشکل را شناسایی کردند. با متوقف کردن تولید فایل خراب و بازگرداندن نسخه قدیمی، ترافیک اصلی تا ساعت ۱۴:۳۰ برقرار شد.
کلودفلر برای جلوگیری از تکرار چنین قطعی ها, برنامه هایی برای تقویت سیستم ها، بررسی فایل های پیکر بندی، و بهبود مدیریت خطا ها در دست اجراست.
#خبر
@TheRaymondDev
The Cloudflare Blog
Cloudflare outage on November 18, 2025
Cloudflare suffered a service outage on November 18, 2025. The outage was triggered by a bug in generation logic for a Bot Management feature file causing many Cloudflare services to be affected.
Forwarded from Linuxor ?
علت قطعی بزرگ اینترنت دیروز :
کلادفلر یه سیستم ضد رباته، هر چند دقیقه یه فایل feature میسازه که به مدلهای ضدرباتش به صورت به روز بگه چه چیزی رفتار آدمه و چه چیزی رباته. اگه این کارو نکنه ربات ها مدل های ضد رباتش رو گول میزنن، این فایل معمولاً اندازهی ثابتی داره، حالا یه مشکل باعث شده بود این فایله بزرگ تر از حد معمول بشه.
کُدِ مسیریاب اصلی (proxy) برای سرعت، حافظه رو از قبل تخصیص میداد و انتظار داشت تعداد ویژگیها کمتر از حد مشخص (مثلاً 200) باشن. وقتی فایل خیلی بزرگ شد، این محدودیت پر شد و برنامشون کرش کرد.
مشکل بدتر شد چون فایل خراب هر 5 دقیقه به همهی سرورها فرستاده میشد؛ بعضی سرورها گاهی فایل درست و گاهی فایل خراب میگرفتن، پس سیستم گاهی بازیابی میشد و دوباره سقوط میکرد و کلادفلر هم برگاش ریخته بود که چرا این اتفاق افتاده و فکر میکرد اتک خورده.
@Linuxor
کلادفلر یه سیستم ضد رباته، هر چند دقیقه یه فایل feature میسازه که به مدلهای ضدرباتش به صورت به روز بگه چه چیزی رفتار آدمه و چه چیزی رباته. اگه این کارو نکنه ربات ها مدل های ضد رباتش رو گول میزنن، این فایل معمولاً اندازهی ثابتی داره، حالا یه مشکل باعث شده بود این فایله بزرگ تر از حد معمول بشه.
کُدِ مسیریاب اصلی (proxy) برای سرعت، حافظه رو از قبل تخصیص میداد و انتظار داشت تعداد ویژگیها کمتر از حد مشخص (مثلاً 200) باشن. وقتی فایل خیلی بزرگ شد، این محدودیت پر شد و برنامشون کرش کرد.
مشکل بدتر شد چون فایل خراب هر 5 دقیقه به همهی سرورها فرستاده میشد؛ بعضی سرورها گاهی فایل درست و گاهی فایل خراب میگرفتن، پس سیستم گاهی بازیابی میشد و دوباره سقوط میکرد و کلادفلر هم برگاش ریخته بود که چرا این اتفاق افتاده و فکر میکرد اتک خورده.
@Linuxor
Forwarded from DevTwitter | توییت برنامه نویسی
سلام ، امیدوارم که حالتون خوب باشه
برای رفع نیاز خودم یک داشبورد نوشتم برای مرورگر های کروم و ادج
تصمیم گرفتم منتشرش کنم ، اگر شما هم به کارتون میاد میتونید دانلود و نصب کنید.
دانلود از گیت هاب :
https://github.com/ehsanerfani98/bookina
@DevTwitter | <Ehsan Bavaghar/>
برای رفع نیاز خودم یک داشبورد نوشتم برای مرورگر های کروم و ادج
تصمیم گرفتم منتشرش کنم ، اگر شما هم به کارتون میاد میتونید دانلود و نصب کنید.
دانلود از گیت هاب :
https://github.com/ehsanerfani98/bookina
@DevTwitter | <Ehsan Bavaghar/>