Forwarded from Gopher Academy
📌 Span and Size Class in Go
🔹 یکی از مفاهیم کلیدی در مدیریت حافظه گو Span است.
🧩 Span
* یک Span شامل یک یا چند Page متوالی است.
* هر Span به چند شیء همسایز تقسیم میشود.
* این کار باعث میشود Go از استراتژی segregated fit allocation استفاده کند:
* تخصیص بهینه برای اندازههای مختلف
* کاهش fragmentation (تکهتکه شدن حافظه)
🔸 اطلاعات هر Span در یک ساختار به نام mspan ذخیره میشود:
* آدرس شروع اولین Page
* تعداد Pageها
* تعداد اشیاء تخصیصیافته
* و سایر متادیتا
📦 Size Class
ا * Go سایز اشیاء را در گروههایی به نام Size Class تقسیمبندی میکند.
* هر Span دقیقاً به یک Size Class تعلق دارد.
ا * Go در مجموع ۶۸ Size Class تعریف کرده است:
ا * Class 0 → برای اشیاء بزرگتر از 32KB
ا * Class 1 تا 67 → برای اشیاء کوچک و خیلی کوچک
به زبان ساده:
ا Go با تقسیم حافظه به Span و گروهبندی آنها در Size Class**، تخصیص حافظه را سریع و بهینه نگه میدارد.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🔹 یکی از مفاهیم کلیدی در مدیریت حافظه گو Span است.
🧩 Span
* یک Span شامل یک یا چند Page متوالی است.
* هر Span به چند شیء همسایز تقسیم میشود.
* این کار باعث میشود Go از استراتژی segregated fit allocation استفاده کند:
* تخصیص بهینه برای اندازههای مختلف
* کاهش fragmentation (تکهتکه شدن حافظه)
🔸 اطلاعات هر Span در یک ساختار به نام mspan ذخیره میشود:
* آدرس شروع اولین Page
* تعداد Pageها
* تعداد اشیاء تخصیصیافته
* و سایر متادیتا
📦 Size Class
ا * Go سایز اشیاء را در گروههایی به نام Size Class تقسیمبندی میکند.
* هر Span دقیقاً به یک Size Class تعلق دارد.
ا * Go در مجموع ۶۸ Size Class تعریف کرده است:
ا * Class 0 → برای اشیاء بزرگتر از 32KB
ا * Class 1 تا 67 → برای اشیاء کوچک و خیلی کوچک
به زبان ساده:
ا Go با تقسیم حافظه به Span و گروهبندی آنها در Size Class**، تخصیص حافظه را سریع و بهینه نگه میدارد.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Forwarded from Gopher Academy
📌 Two spans with different size classes
🔹 هر Span در Go به یک Size Class خاص تعلق دارد. این Size Class مشخص میکند که:
* چند Page در Span قرار بگیرد
* هر Page چند Object را در خود جای دهد
📦 مثالها (تصویر بالا):
ا 1. Size Class 38
* اندازه هر شیء: 2048B
* یک Page (۸KB) دقیقاً ۴ تا شیء 2048B را جا میدهد.
* پس کل Span = ۱ Page + ۸ Object
ا 2. Size Class 55
* اندازه هر شیء: 10880B
* هر شیء بزرگتر از یک Page است.
* Span در اینجا روی ۴ Page گسترده میشود و ۳ Object را نگه میدارد.
🧩 Tail Waste (هدررفت انتهایی)
* دلیل اینکه برای Size Class 55 از ۴ Page استفاده میشود و نه ۲ Page، کاهش هدررفت حافظه است.
* اگر ۲ Page میگرفت → هدررفت = 5504B
* اگر ۴ Page بگیرد → هدررفت = 128B
* ✅ پس با استفاده از صفحات بیشتر، fragmentation به حداقل میرسد.
به زبان ساده:
ا Go با استفاده از Span Class و محاسبهی دقیق Tail Waste**، حافظه را به شکل بهینه تخصیص میدهد و از هدررفت جلوگیری میکند.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🔹 هر Span در Go به یک Size Class خاص تعلق دارد. این Size Class مشخص میکند که:
* چند Page در Span قرار بگیرد
* هر Page چند Object را در خود جای دهد
📦 مثالها (تصویر بالا):
ا 1. Size Class 38
* اندازه هر شیء: 2048B
* یک Page (۸KB) دقیقاً ۴ تا شیء 2048B را جا میدهد.
* پس کل Span = ۱ Page + ۸ Object
ا 2. Size Class 55
* اندازه هر شیء: 10880B
* هر شیء بزرگتر از یک Page است.
* Span در اینجا روی ۴ Page گسترده میشود و ۳ Object را نگه میدارد.
🧩 Tail Waste (هدررفت انتهایی)
* دلیل اینکه برای Size Class 55 از ۴ Page استفاده میشود و نه ۲ Page، کاهش هدررفت حافظه است.
* اگر ۲ Page میگرفت → هدررفت = 5504B
* اگر ۴ Page بگیرد → هدررفت = 128B
* ✅ پس با استفاده از صفحات بیشتر، fragmentation به حداقل میرسد.
به زبان ساده:
ا Go با استفاده از Span Class و محاسبهی دقیق Tail Waste**، حافظه را به شکل بهینه تخصیص میدهد و از هدررفت جلوگیری میکند.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Forwarded from Python Hints
برای اولین باز :
شخصا این کتاب رو هنوز نخوندم (۲ فصل فقط)
با توجه به مطالب اخیر؛ سوالات زیادی برام اومده راجب معرفی منبع! و خیلی از دوستان خواستند که هرچه زودتر این اتفاق بیوفته.
این کتاب رو یکی از دوستان به من هدیه داده (که خب هنوز وقت نکردم خوندنش رو کامل کنم) توی کانال @pyrust درگیری این مدتم رو نوشتم.
اما چون خودش خونده و بسیار تعریف میکرد؛ منم توی یک مرور سریع دیدم راجب بسیاری از مفاهیم مهم به خوبی صحبت شده گفتم معرفی کنم.
برای اونهایی که واقعا نیاز دارند به این موضوعات درحال حاضر پیشنهادش میکنم. اما اگر کتابهای دیگه که معرفی شده رو نخوندید میتونید صبر کنید تا شخصا کتاب رو بخونم و بعد نظر دقیقتر بدم!
به همین دلیل این پست رو هشتگ نمیزنم که قاطی باقی کتابهای اصلی نشه!
شخصا این کتاب رو هنوز نخوندم (۲ فصل فقط)
با توجه به مطالب اخیر؛ سوالات زیادی برام اومده راجب معرفی منبع! و خیلی از دوستان خواستند که هرچه زودتر این اتفاق بیوفته.
این کتاب رو یکی از دوستان به من هدیه داده (که خب هنوز وقت نکردم خوندنش رو کامل کنم) توی کانال @pyrust درگیری این مدتم رو نوشتم.
اما چون خودش خونده و بسیار تعریف میکرد؛ منم توی یک مرور سریع دیدم راجب بسیاری از مفاهیم مهم به خوبی صحبت شده گفتم معرفی کنم.
برای اونهایی که واقعا نیاز دارند به این موضوعات درحال حاضر پیشنهادش میکنم. اما اگر کتابهای دیگه که معرفی شده رو نخوندید میتونید صبر کنید تا شخصا کتاب رو بخونم و بعد نظر دقیقتر بدم!
به همین دلیل این پست رو هشتگ نمیزنم که قاطی باقی کتابهای اصلی نشه!
Forwarded from Linuxor ?
This media is not supported in your browser
VIEW IN TELEGRAM
محسن مدحج مشغول رویا فروشی !
هشدار : در هفت روز امکان برنامه نویس شدن وجود ندارد، همچینین هوش مصنوعی نیز در صورت نداشتن دانش برنامه نویسی به شما کمک مفیدی نخواهد کرد.
اگر از رشتهها یا صنفهای غیرکامپیوتری علاقهمند به یادگیری برنامهنویسی هستید، باید این مسیر را بهعنوان یک فرآیند بلندمدت و مرحلهبهمرحله ببینید، نه یک میانبر سریع. همچنین بازار کار برنامه نویسی دارای یک اشباع و ترند شدید است و بازار کار به طور پیش فرض خوب نیست، همچنین برای ورود به بازار کار و در آوردن یک درامد معقول حتی با هوش مصنوعی و بدون نیاز به کد زدن نیاز به تسلط عمیق مبانی کامپیوتر دارید زیرا در مسیر به مشکلات و مسائلی خواهید خورد که بدون دانش مبانی کامپیوتر حل کردن آنها، مسیر را دوچندان برای شما سخت خواهد کرد.
@Linuxor
هشدار : در هفت روز امکان برنامه نویس شدن وجود ندارد، همچینین هوش مصنوعی نیز در صورت نداشتن دانش برنامه نویسی به شما کمک مفیدی نخواهد کرد.
اگر از رشتهها یا صنفهای غیرکامپیوتری علاقهمند به یادگیری برنامهنویسی هستید، باید این مسیر را بهعنوان یک فرآیند بلندمدت و مرحلهبهمرحله ببینید، نه یک میانبر سریع. همچنین بازار کار برنامه نویسی دارای یک اشباع و ترند شدید است و بازار کار به طور پیش فرض خوب نیست، همچنین برای ورود به بازار کار و در آوردن یک درامد معقول حتی با هوش مصنوعی و بدون نیاز به کد زدن نیاز به تسلط عمیق مبانی کامپیوتر دارید زیرا در مسیر به مشکلات و مسائلی خواهید خورد که بدون دانش مبانی کامپیوتر حل کردن آنها، مسیر را دوچندان برای شما سخت خواهد کرد.
@Linuxor
Forwarded from Gopher Academy
📌 Tail waste in span
🔹 هر Span ممکنه مقداری فضای استفادهنشده در انتهای خودش داشته باشه، به این فضا میگن Tail Waste.
* مثال (تصویر بالا):
* اگر Span با ۲ Page ساخته بشه → Tail Waste = 5504B
* اگر Span با ۴ Page ساخته بشه → Tail Waste = 128B
✅ پس Go برای کاهش هدررفت، از ۴ Page استفاده میکنه.
🧩 چرا فقط 67 Size Class داریم؟
برنامهی Go میتونه آبجکتهایی با سایزهای مختلف بخواد، اما Go فقط 67 Size Class برای آبجکتهای کوچک تعریف کرده.
📍 سوال: اگه ما آبجکت 300B بخوایم که دقیقاً تو جدول Size Classes نیست، چی میشه؟
* Go سایز رو Round Up میکنه به نزدیکترین Size Class بزرگتر.
* اینجا 300B → میشه 320B
🔑 نکته مهم:
اون چیزی که ما در تصویر بهعنوان "Object" میبینیم، دقیقاً آبجکت برنامه نیست، بلکه یک Size Class Object هست که توسط Runtime مدیریت میشه.
به زبان ساده:
*ا Go با Tail Waste Optimization جلوی هدررفت زیاد رو میگیره.
* با Size Class Rounding هم حافظه رو سریعتر و سادهتر مدیریت میکنه.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🔹 هر Span ممکنه مقداری فضای استفادهنشده در انتهای خودش داشته باشه، به این فضا میگن Tail Waste.
* مثال (تصویر بالا):
* اگر Span با ۲ Page ساخته بشه → Tail Waste = 5504B
* اگر Span با ۴ Page ساخته بشه → Tail Waste = 128B
✅ پس Go برای کاهش هدررفت، از ۴ Page استفاده میکنه.
🧩 چرا فقط 67 Size Class داریم؟
برنامهی Go میتونه آبجکتهایی با سایزهای مختلف بخواد، اما Go فقط 67 Size Class برای آبجکتهای کوچک تعریف کرده.
📍 سوال: اگه ما آبجکت 300B بخوایم که دقیقاً تو جدول Size Classes نیست، چی میشه؟
* Go سایز رو Round Up میکنه به نزدیکترین Size Class بزرگتر.
* اینجا 300B → میشه 320B
🔑 نکته مهم:
اون چیزی که ما در تصویر بهعنوان "Object" میبینیم، دقیقاً آبجکت برنامه نیست، بلکه یک Size Class Object هست که توسط Runtime مدیریت میشه.
به زبان ساده:
*ا Go با Tail Waste Optimization جلوی هدررفت زیاد رو میگیره.
* با Size Class Rounding هم حافظه رو سریعتر و سادهتر مدیریت میکنه.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Forwarded from a pessimistic researcher (Kc)
یعنی اگر Igor Walukiewicz بشم، Anca Muscholl میشه برام؟
Forwarded from Gopher Academy
📌User objects and size class objects
🔹 در Go، آبجکتهای واقعی برنامه (User Objects) داخل آبجکتهای مربوط به Size Class قرار میگیرن.
* سایز User Object معمولاً از Size Class Object کوچیکتره → همین اختلاف باعث Waste میشه.
* علاوه بر اون، در انتهای Span هم یه بخشی از حافظه استفادهنشده باقی میمونه (Tail Waste).
* مجموع این دو نوع هدررفت = Total Waste.
🧩 مثال (Size Class 55):
* هر Size Class Object = 10880B
* 3 تا User Object (هرکدوم 10241B) توی Span جا میگیرن.
* Waste ناشی از اختلاف سایز: 1917B
* Tail Waste: 128B
* Total Waste = 1917 + 128 = 2045B ≈ 6.24% کل Span
🔑 نتیجه:
حتی با وجود Segregated Fit Strategy که هدفش کاهش Fragmentation هست، باز هم کمی هدررفت اجتنابناپذیر وجود داره.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🔹 در Go، آبجکتهای واقعی برنامه (User Objects) داخل آبجکتهای مربوط به Size Class قرار میگیرن.
* سایز User Object معمولاً از Size Class Object کوچیکتره → همین اختلاف باعث Waste میشه.
* علاوه بر اون، در انتهای Span هم یه بخشی از حافظه استفادهنشده باقی میمونه (Tail Waste).
* مجموع این دو نوع هدررفت = Total Waste.
🧩 مثال (Size Class 55):
* هر Size Class Object = 10880B
* 3 تا User Object (هرکدوم 10241B) توی Span جا میگیرن.
* Waste ناشی از اختلاف سایز: 1917B
* Tail Waste: 128B
* Total Waste = 1917 + 128 = 2045B ≈ 6.24% کل Span
🔑 نتیجه:
حتی با وجود Segregated Fit Strategy که هدفش کاهش Fragmentation هست، باز هم کمی هدررفت اجتنابناپذیر وجود داره.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Forwarded from a pessimistic researcher (Kc)
یعنی اگر Remzi Arpaci-Dusseau بشم، Andrea Arpaci-Dusseau میشه برام؟
Google
Remzi Arpaci-Dusseau
University of Wisconsin-Madison - Cited by 17,176 - Operating Systems
Forwarded from Gopher Academy
☝️👆👆👆
دوستان عزیز، این پستی که ریپلای کردم بهروزرسانی میشه ✨
میتونید ادامهی مقالات این بخش رو همیشه از همینجا دنبال کنید و بخونید 📚
🔗 لینک کانالهامون:
https://t.iss.one/addlist/AJ7rh2IzIh02NTI0
💰 لینک حمایت مالی:
https://www.coffeete.ir/mrbardia72
🚀لینک تلگرام بوست:
https://t.iss.one/boost/gopher_academy
دوستان عزیز، این پستی که ریپلای کردم بهروزرسانی میشه ✨
میتونید ادامهی مقالات این بخش رو همیشه از همینجا دنبال کنید و بخونید 📚
🔗 لینک کانالهامون:
https://t.iss.one/addlist/AJ7rh2IzIh02NTI0
💰 لینک حمایت مالی:
https://www.coffeete.ir/mrbardia72
🚀لینک تلگرام بوست:
https://t.iss.one/boost/gopher_academy
Forwarded from a pessimistic researcher (Kc)
یعنی اگر Patrick Cousot بشم، Radhia Cousot میشه برام؟
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
نحوه ایجاد نام مستعار (میانبر) برای دستورات رایج در لینوکس
در واقع آموزش alias در لینوکس در پست زیر است:
https://learninghive.ir/alias/
در واقع آموزش alias در لینوکس در پست زیر است:
https://learninghive.ir/alias/
Forwarded from Sadra Codes
Wtf is “Vibe Coding”? Either code, or get the f out of the room. 🥸
Audio
رادیوجادی ۲۰۰ - هکرهای انانیموس و ۴چن و بقیه قصههاشون
در شماره ۲۰۰ رادیو جادی بالاخره سراغ بحث اصلی میریم: هکرهای ناشناس و فروم افسانهای ۴چن. توی این شماره براتون از تاریخ می گم و از خاطره و از مبارزه علیه کسانی که نمیخوان اینترنت، اینترنت ما باشه!
ما ناشناس هستیم، ما یک ارتش هستیم، ما نمیبخشیم، ما فراموش نمیکنیم، منتظر ما باشید!
ولی شایدم ببخشیم... اما به یک شرط!
#پادکست #رادیوجادی
https://youtu.be/C-ZK0GB1J9c
در شماره ۲۰۰ رادیو جادی بالاخره سراغ بحث اصلی میریم: هکرهای ناشناس و فروم افسانهای ۴چن. توی این شماره براتون از تاریخ می گم و از خاطره و از مبارزه علیه کسانی که نمیخوان اینترنت، اینترنت ما باشه!
ما ناشناس هستیم، ما یک ارتش هستیم، ما نمیبخشیم، ما فراموش نمیکنیم، منتظر ما باشید!
ولی شایدم ببخشیم... اما به یک شرط!
#پادکست #رادیوجادی
https://youtu.be/C-ZK0GB1J9c
Forwarded from 🎄 یک برنامه نویس تنبل (Lazy 🌱)
Forwarded from 🎄 یک برنامه نویس تنبل (Lazy 🌱)
Forwarded from دستاوردهای یادگیری عمیق(InTec)
اینو میگم که دیگه اتفاق نیوفته؛
روی کدهای
باید از
واقعا فکر نمیکردم هیجوقت لازم بشه این نکته رو بگم تا اینکه امروز دیدم یک شرکتی که درآمدش هم تو ایران کم نیست داره
قبل از اینکه با لقب سنیورتون همرو ... کنید؛ حداقل ۲ تا مطلب طراحی سیستم بخونید.
پیونشت (شما گفتید) :
روزای اول بعضی شرکتها رفته بودن سراغ
روی کدهای
LLM توی بکند و فرانت long polling جواب نیستا!باید از
SSE استفاده کنید.واقعا فکر نمیکردم هیجوقت لازم بشه این نکته رو بگم تا اینکه امروز دیدم یک شرکتی که درآمدش هم تو ایران کم نیست داره
long poll استفاده میکنه بجای SSE توی سرویسهای LLM اش.قبل از اینکه با لقب سنیورتون همرو ... کنید؛ حداقل ۲ تا مطلب طراحی سیستم بخونید.
پیونشت (شما گفتید) :
روزای اول بعضی شرکتها رفته بودن سراغ
web-socket برای سرویس دهی.Forwarded from DevTwitter | توییت برنامه نویسی
This media is not supported in your browser
VIEW IN TELEGRAM
بعد ازینکه تونستم هوش مصنوعی ollama رو با مدل gemma3 تو کامپیوتر خودم اجرا کنم ، به کمک claude کدی نوشتم که با api ای که خود ollama روی localhost میده ارتباط برقرار میکنه و اینجوری میتونم api هوش مصنوعی خودم رو رایگان داشته باشم ، اصنم سنگین نیست و منابع خیلی کمی رو مصرف میکنه
@DevTwitter | <گربهی برنامهنویس/>
@DevTwitter | <گربهی برنامهنویس/>
Forwarded from PhiloLearn | فیلولرن
YTSage یه نرمافزار خیلی ساده و مدرن برای دانلود از یوتیوبه که با PySide6 ساخته شده. باهاش میتونی ویدیو رو تو هر کیفیتی بگیری، فقط صداشو دربیاری، زیرنویسشو دانلود کنی، چسبوندن زیرنویس، ذخیره کردن تامبنیل یا توضیحات ویدیو انجام بدی. روی ویندوز، لینوکس و مک هم راحت نصب میشه و بدون دردسر بالا میاد 🤦🏻♂️😂.
🔹 شروع سریع
کافیه اینو بزنی:
🔹 روش استفاده
۱. برنامه رو اجرا کن.
۲. لینک ویدیو یا پلیلیست یوتیوب رو بنداز توش.
۳. فرمت مورد نظرت رو انتخاب کن (ویدیو یا فقط صدا).
۴. اگه حال داشتی، آپشنای اضافه مثل گرفتن زیرنویس یا حذف اسپانسر رو فعال کن.
۵. مسیر ذخیره رو مشخص کن و بزن روی دانلود.
💙 @PhiloLearn
🔹 شروع سریع
کافیه اینو بزنی:
python3 -m venv venv
source venv/bin/activate
pip install ytsage
🔹 روش استفاده
۱. برنامه رو اجرا کن.
۲. لینک ویدیو یا پلیلیست یوتیوب رو بنداز توش.
۳. فرمت مورد نظرت رو انتخاب کن (ویدیو یا فقط صدا).
۴. اگه حال داشتی، آپشنای اضافه مثل گرفتن زیرنویس یا حذف اسپانسر رو فعال کن.
۵. مسیر ذخیره رو مشخص کن و بزن روی دانلود.
💙 @PhiloLearn
Forwarded from Ninja Learn | نینجا لرن (Mohammad)
طبیعیه وقتی قهوه میخورم انگار چیت ذهن زدم؟
(چاکراهام باز میشه انگار 😂)
(چاکراهام باز میشه انگار 😂)