Forwarded from Meitix
چرا کافکا سریعه؟
یکی از حقههای اصلیش بهش میگن zero copy. معمولا وقتی یه برنامه بخواد دادهای رو از دیسک بفرسته رو شبکه، چند بار بیخود کپی میشه بین بافرهای مختلف: یه بار از دیسک به حافظه، یه بار از حافظه به فضای کاربر، یه بار از اونجا به بافر سوکت، بعد تازه میره بیرون. یعنی انگار یه بسته رو هی از یه دست به یه دست دیگه میدی تا آخر برسه دست پستچی.
کافکا میگه نه، این همه کار برای چیه؟ از یه ترفند کرنل لینوکس به اسم sendfile استفاده کرد. اون باعث میشه داده مستقیم از دیسک بره توی سوکت شبکه، بدون اینکه وسط راه تو حافظهی برنامه کپی بشه. اینجوری CPU کمتر درگیر میشه، حافظه کمتر مصرف میشه، و کل جریان سریعتر تموم میشه.
و اینکه برعکس بیشتر سیستمها که دادهها رو اینور و اونور دیسک پخش میکنن، کافکا فقط پشتسرهم مینویسه، مثل ضبطصوتی که رو یه نوار داره جلو میره. این خیلی مهمه چون دیسک وقتی قراره بپره از یه نقطه به نقطهی دیگه، کلی زمان تلف میکنه. اما وقتی فقط داره پشتسرهم مینویسه، سرعتش میره بالا، حتی نزدیک سرعت رم.
یکی از حقههای اصلیش بهش میگن zero copy. معمولا وقتی یه برنامه بخواد دادهای رو از دیسک بفرسته رو شبکه، چند بار بیخود کپی میشه بین بافرهای مختلف: یه بار از دیسک به حافظه، یه بار از حافظه به فضای کاربر، یه بار از اونجا به بافر سوکت، بعد تازه میره بیرون. یعنی انگار یه بسته رو هی از یه دست به یه دست دیگه میدی تا آخر برسه دست پستچی.
کافکا میگه نه، این همه کار برای چیه؟ از یه ترفند کرنل لینوکس به اسم sendfile استفاده کرد. اون باعث میشه داده مستقیم از دیسک بره توی سوکت شبکه، بدون اینکه وسط راه تو حافظهی برنامه کپی بشه. اینجوری CPU کمتر درگیر میشه، حافظه کمتر مصرف میشه، و کل جریان سریعتر تموم میشه.
و اینکه برعکس بیشتر سیستمها که دادهها رو اینور و اونور دیسک پخش میکنن، کافکا فقط پشتسرهم مینویسه، مثل ضبطصوتی که رو یه نوار داره جلو میره. این خیلی مهمه چون دیسک وقتی قراره بپره از یه نقطه به نقطهی دیگه، کلی زمان تلف میکنه. اما وقتی فقط داره پشتسرهم مینویسه، سرعتش میره بالا، حتی نزدیک سرعت رم.
Forwarded from Meitix
از طرفی کافکا درخواست هارو دونه دونه نمیزنه میزاره batch میزنه
Forwarded from Meitix
کافکا پیاماش رو بصورت json یا text نمیفزستهروی پروتکل خودش میفرسته
Forwarded from Meitix
یه زمانی Kafka برای کارای مدیریتی خودش یه قیم داشت به اسم ZooKeeper
یعنی هر وقت میخواست بدونه کدوم broker الان زندهست، leader کدوم پارتیشنه، یا کِی باید failover کنه، باید میرفت سراغ اون. یعنی قدرت تصمیم گیری با زوکیپر بود
باید دو تا سیستم جدا بالا میآوردی، هماهنگی بینشون زمان میبردتا اینکه Kafka گفت:
«اگه قراره distributed باشم، پس بذار مغزم هم مال خودم باشه 😅.»
و اینجوری KRaft اومد — یعنی Kafka Raft.
اKafka خودش یه گروه از نودها داره که با الگوریتم Raft بین خودشون تصمیم میگیرن.
مثلاً کی leader باشه، متادیتا کجا ذخیره شه، یا اگه یکی مرد، کِی جاش پر بشه.
همهی این تصمیمها تو خود Kafka گرفته میشن، سریعتر و با یه منطق یکپارچه.
عملا الان فقط یه cluster داری، نه دو تا.
راهاندازیش راحتتر شده، failoverها سریعترن، و consistencyاش هم تمیزتره.
یعنی هر وقت میخواست بدونه کدوم broker الان زندهست، leader کدوم پارتیشنه، یا کِی باید failover کنه، باید میرفت سراغ اون. یعنی قدرت تصمیم گیری با زوکیپر بود
باید دو تا سیستم جدا بالا میآوردی، هماهنگی بینشون زمان میبردتا اینکه Kafka گفت:
«اگه قراره distributed باشم، پس بذار مغزم هم مال خودم باشه 😅.»
و اینجوری KRaft اومد — یعنی Kafka Raft.
اKafka خودش یه گروه از نودها داره که با الگوریتم Raft بین خودشون تصمیم میگیرن.
مثلاً کی leader باشه، متادیتا کجا ذخیره شه، یا اگه یکی مرد، کِی جاش پر بشه.
همهی این تصمیمها تو خود Kafka گرفته میشن، سریعتر و با یه منطق یکپارچه.
عملا الان فقط یه cluster داری، نه دو تا.
راهاندازیش راحتتر شده، failoverها سریعترن، و consistencyاش هم تمیزتره.
Forwarded from Byteforge / بایــت فورج 🛸
Forwarded from LinNews (Benyamin)
ZLUDA 5 با کامپایلر آفلاین برای کارتگرافیکهای غیر NVIDIA منتشر شد.
"zoc،" به عنوان کامپایلر آفلاین، فایل NVIDIA PTX را بهعنوان ورودی دریافت میکند و بازنمایی متوسط LLVM (IR) و RDNA Assembly را خروجی میدهد. RDNA Assembly توسط کامپایلر ROCm تولید میشود. ZLUDA در یادگیریماشین درحال پیشرفت است و در LLama.cpp عملکرد مناسبی را ارائه میدهد. علاوه بر این، توسعه دهندگان روی kernel caching و بهبودهای متعدد عملکرد نیز کار کردهاند.
منبع خبر
به ما بپیوندید :
@LinNews | @LinAcademy
"zoc،" به عنوان کامپایلر آفلاین، فایل NVIDIA PTX را بهعنوان ورودی دریافت میکند و بازنمایی متوسط LLVM (IR) و RDNA Assembly را خروجی میدهد. RDNA Assembly توسط کامپایلر ROCm تولید میشود. ZLUDA در یادگیریماشین درحال پیشرفت است و در LLama.cpp عملکرد مناسبی را ارائه میدهد. علاوه بر این، توسعه دهندگان روی kernel caching و بهبودهای متعدد عملکرد نیز کار کردهاند.
منبع خبر
به ما بپیوندید :
@LinNews | @LinAcademy
Forwarded from SoniaCircuit (Sonia Fatholahi)
نکته جالب اینجاست خودمم یه مدتی فرانت میزدم
mp_friendlyfire 1
mp_friendlyfire 1
Forwarded from SUT Ad
سال ۹۵ بود...
یه کانال کوچیک زدیم برای اینکه با چندتا از رفقای شریفی، خاطرات و روزمرگیهای دانشجوییمونو با چاشنی طنز بنویسیم. نمیدونستیم یه روز میتونه تبدیل بشه به یکی از بزرگترین کانالهای دانشجویی تلگرام!
🔸 اسمش رو هم گذاشتیم:
👉🔥 SUT Twitter
توی این سالها، چندبار تعطیلمون کردن، هر بار برگشتیم و با کمک نسلهای جدید ورودیها تونستیم یه فضای باحال و خودمونی برای بچههای دانشگاه بسازیم.
اگر تو هم دوست داری مطالب بامزه دانشجویی بخونی به جمعمون بیا: 👇
یه کانال کوچیک زدیم برای اینکه با چندتا از رفقای شریفی، خاطرات و روزمرگیهای دانشجوییمونو با چاشنی طنز بنویسیم. نمیدونستیم یه روز میتونه تبدیل بشه به یکی از بزرگترین کانالهای دانشجویی تلگرام!
👉
توی این سالها، چندبار تعطیلمون کردن، هر بار برگشتیم و با کمک نسلهای جدید ورودیها تونستیم یه فضای باحال و خودمونی برای بچههای دانشگاه بسازیم.
اگر تو هم دوست داری مطالب بامزه دانشجویی بخونی به جمعمون بیا: 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
SUT Twitter
به توییتر دانشجویی شریف خوش آمدید!
پادکست بعدش چی:
@baadeshchi
ارسال توییت:
twitter.com/sut_tw_admin
درآمدهای اهدایی به خیریه:
@suttw
تبلیغات:
@sut_twit
بیان نظرات و انتقادات:
@sutfeedback
پادکست بعدش چی:
@baadeshchi
ارسال توییت:
twitter.com/sut_tw_admin
درآمدهای اهدایی به خیریه:
@suttw
تبلیغات:
@sut_twit
بیان نظرات و انتقادات:
@sutfeedback
Forwarded from Linuxor ?
کلادفلر قراره نقش پلیس محافظ تولید کنندگان محتوا رو بازی کنه، هفته پیش یه ارز دیجیتالی به اسم NET Dollar معرفی کرد که قراره ارزشش یه دلار باشه و وقتی هوش مصنوعی از محتوای سایت شما محتوا تغذیه میکنه با سرعت خیلی بالایی بتونه این پولو پرداخت کنه و این پول به حساب شما بیاد
هنوز چیز زیادی ازش در دست نیست ولی تنها نجات دهنده تولید کننده های محتوا که سایت دارن کلادفلره خیلی راحت میتونه ربات های هوش مصنوعی که از اطلاعات تغذیه میکنن رو وادار کنه که پول بابت محتوا ها پول بدن.
همه کمپانی های بزرگ قطعا مخالفشن ولی تصمیم گیرنده نهایی کلادفلره بخواد مثل آب خوردن همه ربات ها حتی جلوی ربات های گوگل از تغدیه مفتی رو میگیره.
@Linuxor
هنوز چیز زیادی ازش در دست نیست ولی تنها نجات دهنده تولید کننده های محتوا که سایت دارن کلادفلره خیلی راحت میتونه ربات های هوش مصنوعی که از اطلاعات تغذیه میکنن رو وادار کنه که پول بابت محتوا ها پول بدن.
همه کمپانی های بزرگ قطعا مخالفشن ولی تصمیم گیرنده نهایی کلادفلره بخواد مثل آب خوردن همه ربات ها حتی جلوی ربات های گوگل از تغدیه مفتی رو میگیره.
@Linuxor
Forwarded from a pessimistic researcher (Kc)
خب مثکه نتایج ارشد اومده، چه خبرا؟ :)
Forwarded from 🎄 یک برنامه نویس تنبل (Lazy 🌱)
🔶 آیا خرید اقساطی با برنامههای BNPL نشانه بحران اقتصادی است؟
این روزها نرمافزار های «امروز بخر، بعداً پرداخت کن» (BNPL) به سرعت در جهان محبوب شدهاند. بیش از ۳۶۵ میلیون نفر در سال ۲۰۲۴ از این سرویسها استفاده کردهاند
اما چرا مردم تا این حد به این ابزارها وابسته شدهاند؟ دلیل اصلی ساده است: کمبود نقدینگی. بسیاری از خانوادهها پول نقد خود را برای اجاره و اقساط کنار میگذارند و برای خرید کالاهای روزمره یا حتی مواد غذایی سراغ BNPL میروند.
درآمد این صنعت در سال ۲۰۲۴ به ۱۲.۵ میلیارد دلار رسید و بازیگرانی مانند Klarna، Affirm و Afterpay و در ایران Tara 360 بخش عمدهای از این بازار را در اختیار دارند. اما این رشد ظاهری، پیامدهای عمیقی دارد:
رشد ظاهری مصرف: فروشگاه ها سود میبرند اما خریدها بر پایه بدهی است، نه درآمد واقعی.
انباشت بدهی خرد: اقساط کوچک وقتی جمع شوند، به بحران بزرگ تبدیل میشوند.
فرهنگ بدهی روزمره: نسل جوان یاد میگیرد که بدون وام نمیتوان زندگی کرد.
ایده BNPL تنها یک نوآوری مالی نیست؛ بلکه آینه ای از واقعیت امروز است: اقتصاد بدهی محور و نقدینگی کمیاب.
#خبر
@TheRaymondDev
این روزها نرمافزار های «امروز بخر، بعداً پرداخت کن» (BNPL) به سرعت در جهان محبوب شدهاند. بیش از ۳۶۵ میلیون نفر در سال ۲۰۲۴ از این سرویسها استفاده کردهاند
اما چرا مردم تا این حد به این ابزارها وابسته شدهاند؟ دلیل اصلی ساده است: کمبود نقدینگی. بسیاری از خانوادهها پول نقد خود را برای اجاره و اقساط کنار میگذارند و برای خرید کالاهای روزمره یا حتی مواد غذایی سراغ BNPL میروند.
درآمد این صنعت در سال ۲۰۲۴ به ۱۲.۵ میلیارد دلار رسید و بازیگرانی مانند Klarna، Affirm و Afterpay و در ایران Tara 360 بخش عمدهای از این بازار را در اختیار دارند. اما این رشد ظاهری، پیامدهای عمیقی دارد:
رشد ظاهری مصرف: فروشگاه ها سود میبرند اما خریدها بر پایه بدهی است، نه درآمد واقعی.
انباشت بدهی خرد: اقساط کوچک وقتی جمع شوند، به بحران بزرگ تبدیل میشوند.
فرهنگ بدهی روزمره: نسل جوان یاد میگیرد که بدون وام نمیتوان زندگی کرد.
ایده BNPL تنها یک نوآوری مالی نیست؛ بلکه آینه ای از واقعیت امروز است: اقتصاد بدهی محور و نقدینگی کمیاب.
#خبر
@TheRaymondDev
Business of Apps
Buy Now, Pay Later Revenue and Usage Statistics (2025)
Buy now, pay later (BNPL) is a form of short-term financing, which allows customers to spread the cost of a purchase over a set period with interest-free instalments. The period typically includes three to four payments, although operators have branched out…
Forwarded from 🎄 یک برنامه نویس تنبل (Lazy 🌱)
Forwarded from 🎄 یک برنامه نویس تنبل (Lazy 🌱)
Forwarded from 🎄 یک برنامه نویس تنبل (Lazy 🌱)
🔶 به گفتهی آرون کومار، استاد برجسته اقتصاد هند, تولید ناخالص داخلی واقعی ما ۲.۵ تریلیون دلار است، نه ۴ تریلیون دلار. او معتقد است از زمان اجرای سیاست حذف اسکناسهای درشت، رشد اقتصادی ما به طور متوسط تنها ۱ تا ۲ درصد بوده و آنچه به عنوان رشد پر زرق و برق اقتصادی نشان داده میشود، حاصل محاسبات نادرست در برآورد GDP است.
#خبر
@TheRaymondDev
#خبر
@TheRaymondDev
Forwarded from 🎄 یک برنامه نویس تنبل (Lazy 🌱)
🔶 گوگل پارامتر num=100 را حذف کرده و حالا فقط ۱۰ نتیجه جستجو نمایش داده میشود. این تغییر باعث شده دسترسی مدلهای هوش مصنوعی و سایتها به نتایج کاهش یابد؛ ۸۸٪ سایتها افت بازدید داشتهاند و سهام ردیت ۱۵٪ سقوط کرده است.
پیام اصلی: در فضای جدید اینترنت، توزیع و دیدهشدن مهمتر از خود محصول است.
#توییت
@TheRaymondDev
پیام اصلی: در فضای جدید اینترنت، توزیع و دیدهشدن مهمتر از خود محصول است.
#توییت
@TheRaymondDev
X (formerly Twitter)
Nicolai Svane 🦋 (@NicooSvane) on X
Google just made a subtle but massive change
Last month, Google quietly removed the num=100 search parameter.
This means you can no longer view 100 results at once. The default max is now 10.
Why does this matter?
- Most LLMs (OpenAI, Perplexity, etc.)…
Last month, Google quietly removed the num=100 search parameter.
This means you can no longer view 100 results at once. The default max is now 10.
Why does this matter?
- Most LLMs (OpenAI, Perplexity, etc.)…
Forwarded from Gopher Academy
🔵 عنوان مقاله
PegoMock 4.3: A Powerful Yet Simple Mocking Framework
🟢 خلاصه مقاله:
**PegoMock 4.3 یک فریمورک mocking ساده اما قدرتمند است که با یک DSL خوانا نوشتن، خواندن و نگهداری تستها را آسان میکند. هسته اصلی آن، زبانی است که بهجای کدهای طولانی، نیت تست را شفاف بیان میکند. این ابزار از stubbing و argument matching پشتیبانی میکند؛ یعنی میتوانید رفتار وابستگیهای شبیهسازیشده را تعریف کنید و بر اساس الگوهای ورودی، انتظارها را دقیق و انعطافپذیر تنظیم کنید. نتیجه، تستهایی شفاف، کمبوایلرپلیت و قابل اتکا برای تیمهاست.
#Testing #Mocking #DSL #UnitTesting #Stubbing #ArgumentMatching #TestAutomation
🟣لینک مقاله:
https://golangweekly.com/link/175072/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
PegoMock 4.3: A Powerful Yet Simple Mocking Framework
🟢 خلاصه مقاله:
**PegoMock 4.3 یک فریمورک mocking ساده اما قدرتمند است که با یک DSL خوانا نوشتن، خواندن و نگهداری تستها را آسان میکند. هسته اصلی آن، زبانی است که بهجای کدهای طولانی، نیت تست را شفاف بیان میکند. این ابزار از stubbing و argument matching پشتیبانی میکند؛ یعنی میتوانید رفتار وابستگیهای شبیهسازیشده را تعریف کنید و بر اساس الگوهای ورودی، انتظارها را دقیق و انعطافپذیر تنظیم کنید. نتیجه، تستهایی شفاف، کمبوایلرپلیت و قابل اتکا برای تیمهاست.
#Testing #Mocking #DSL #UnitTesting #Stubbing #ArgumentMatching #TestAutomation
🟣لینک مقاله:
https://golangweekly.com/link/175072/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - petergtz/pegomock: Pegomock is a powerful, yet simple mocking framework for the Go programming language
Pegomock is a powerful, yet simple mocking framework for the Go programming language - petergtz/pegomock
Forwarded from Software Engineer Labdon
کامپیوترها برای نگهداری و نمایش کاراکترهای یک متن از یه فضای یک بایتی (معادل هشت بیت 0 یا 1) استفاده میکردن
این میزان فضا توی کامپیوتر میتونه شامل 255 حالت مختلف بشه
کامپیوترها برای نشانههای گرامری، حروف انگلیسی و عدد از استاندارد اسکی (ASCII) استفاده میکردن
این استاندارد آمریکایی میاد برای هر کاراکتر یه معادل عددی تعریف میکنه
مثلا کاراکتر A در اسکی معادل عدد 65هست
قرار گرفتن این اعداد پشت سر هم در کامپیوتر یک متن رو میسازه
مشابه این استاندارد معادل عددی برای پشتیبانی از تمام زبانهای دنیا به وجود اومد که یونیکد (Unicode) نام داره
کاراکترهای انگلیسی و اعداد انگلیسی توی یونیکد از همون اعداد استاندارد اسکی استفاده میکنن و در ادامه پشتیبانی از کاراکترهای بقیه زبانهای دنیا بهش اضافه میشه
یونیکد در حال حاضر دارای چیزی حدود 297,000 معادل عددی برای کاراکترهای مختلف از زبانهای مختلف، اموجیها و ... هست
فضای یک بایتی برای پشتیبانی از این میزان حالتهای مختلف کافی نیس
شما برای این جا دادن این میزان از حالتهای مختلف به شکل بیت کامیپوتر به حداقل سه بایت نیاز دارین
سه بایت میتونه تا حدود 16 میلیون عدد مختلف رو برای شما نگه داری کنه
حالا شما برای نگهداری یک متن که شامل کاراکترهای
یونیکد هست نیاز دارین 3 بایت برای هر کاراکتر اختصاص بدین
کاراکترهای انگلیسی تو یونیکد تنها یک بایت هم براشون کافیه ولی اگه شما برای یه متن انگلیسی، هر کاراکتر رو سه بایت در نظر بگیرین عملا به ازای هر کاراکتر انگلیسی دو بایت فضا رو هدر دادین
مثلا تو یه متن با ده هزار کاراکتر،
یه چیزی حدود 20 کیلوبایت فضای کامپیوتر رو هدر دادین
چه وقتی میخاین ازش استفاده کنین و توی رم هست و چه وقتی که روی هارد دیسک برای استفاده در آینده ذخیره شده
اینجاست که UTF-8 میتونه کمک کنه
این استاندارد که توسط یونیکد تعریف شده به جای اینکه بیاد فضای 3 بایتی به هر کاراکتر
اختصاص بده، میاد از 7 بیت راست یک بایت برای کاراکترهای اسکی استفاده میکنه
و برای کاراکترهای بعدی علاوه بر خود کاراکتر، تعداد بایت مصرف شده برای اون کاراکتر هم داخل بایت اول ذخیره میکنه
یعنی 128 کاراکتر اول اسکی به شکل عادی ذخیره میشن بدون تغییر خاصی با فقط یک بایت فضا
ولی برای کاراکترهای بعدی میاد و داخل بایت اول مشخص میکنه چه میزان فضا برای کاراکتر استفاده شده
این میزان فضا از یک بایت تا چهاربایت میتونه متغیر باشه
حالا چه شکلی اینکارو میکنه
تو یه بایت برای 128 عدد اولیه اسکی، بیت چپ همیشه صفر هست
اما وقتی بیت چپ یک میشه یعنی با یه کاراکتر UTF8 طرف هستیم
همونطور که گفتم هر کاراکتر توی UTF-8 میتونه از یک بایت تا چهاربایت متغیر باشه
کامپیوتر چطور اینو تشخیص میده؟
بیتهای 1 اولِ بایت رو میشماره تا به عدد 0 صفر برسه
یعنی اگه بایت اول با عدد باینری 110 شروع بشه، یعنی دوبایت فضا استفاده شده
اگه 1110 باشه سه بایت و ...
تو UTF-8 فضای بیتهای بایت اول بین خود کاراکتر و تعداد بایت تقسیم میشه و متغیره
اما تو بایتهای دوم و سوم و چهارم همیشه شش تا بیت راست برای خود کاراکتر استفاده میشه و دو بیت دیگه برای هندل کردن ارور تو utf-8 استفاده میشه
امیدوارم تونسته باشم با دانش ناقص خودم شما رو در مورد این انکدینگ رایج دنیای کامپیوتر آشنا کرده باشم
توضیحات دقیقتر:
https://en.wikipedia.org/wiki/UTF-8
سایت استفاده شده برای تست بایت UTF-8:
https://utf8-playground.netlify.app/
| <Amir/>
این میزان فضا توی کامپیوتر میتونه شامل 255 حالت مختلف بشه
کامپیوترها برای نشانههای گرامری، حروف انگلیسی و عدد از استاندارد اسکی (ASCII) استفاده میکردن
این استاندارد آمریکایی میاد برای هر کاراکتر یه معادل عددی تعریف میکنه
مثلا کاراکتر A در اسکی معادل عدد 65هست
قرار گرفتن این اعداد پشت سر هم در کامپیوتر یک متن رو میسازه
مشابه این استاندارد معادل عددی برای پشتیبانی از تمام زبانهای دنیا به وجود اومد که یونیکد (Unicode) نام داره
کاراکترهای انگلیسی و اعداد انگلیسی توی یونیکد از همون اعداد استاندارد اسکی استفاده میکنن و در ادامه پشتیبانی از کاراکترهای بقیه زبانهای دنیا بهش اضافه میشه
یونیکد در حال حاضر دارای چیزی حدود 297,000 معادل عددی برای کاراکترهای مختلف از زبانهای مختلف، اموجیها و ... هست
فضای یک بایتی برای پشتیبانی از این میزان حالتهای مختلف کافی نیس
شما برای این جا دادن این میزان از حالتهای مختلف به شکل بیت کامیپوتر به حداقل سه بایت نیاز دارین
سه بایت میتونه تا حدود 16 میلیون عدد مختلف رو برای شما نگه داری کنه
حالا شما برای نگهداری یک متن که شامل کاراکترهای
یونیکد هست نیاز دارین 3 بایت برای هر کاراکتر اختصاص بدین
کاراکترهای انگلیسی تو یونیکد تنها یک بایت هم براشون کافیه ولی اگه شما برای یه متن انگلیسی، هر کاراکتر رو سه بایت در نظر بگیرین عملا به ازای هر کاراکتر انگلیسی دو بایت فضا رو هدر دادین
مثلا تو یه متن با ده هزار کاراکتر،
یه چیزی حدود 20 کیلوبایت فضای کامپیوتر رو هدر دادین
چه وقتی میخاین ازش استفاده کنین و توی رم هست و چه وقتی که روی هارد دیسک برای استفاده در آینده ذخیره شده
اینجاست که UTF-8 میتونه کمک کنه
این استاندارد که توسط یونیکد تعریف شده به جای اینکه بیاد فضای 3 بایتی به هر کاراکتر
اختصاص بده، میاد از 7 بیت راست یک بایت برای کاراکترهای اسکی استفاده میکنه
و برای کاراکترهای بعدی علاوه بر خود کاراکتر، تعداد بایت مصرف شده برای اون کاراکتر هم داخل بایت اول ذخیره میکنه
یعنی 128 کاراکتر اول اسکی به شکل عادی ذخیره میشن بدون تغییر خاصی با فقط یک بایت فضا
ولی برای کاراکترهای بعدی میاد و داخل بایت اول مشخص میکنه چه میزان فضا برای کاراکتر استفاده شده
این میزان فضا از یک بایت تا چهاربایت میتونه متغیر باشه
حالا چه شکلی اینکارو میکنه
تو یه بایت برای 128 عدد اولیه اسکی، بیت چپ همیشه صفر هست
اما وقتی بیت چپ یک میشه یعنی با یه کاراکتر UTF8 طرف هستیم
همونطور که گفتم هر کاراکتر توی UTF-8 میتونه از یک بایت تا چهاربایت متغیر باشه
کامپیوتر چطور اینو تشخیص میده؟
بیتهای 1 اولِ بایت رو میشماره تا به عدد 0 صفر برسه
یعنی اگه بایت اول با عدد باینری 110 شروع بشه، یعنی دوبایت فضا استفاده شده
اگه 1110 باشه سه بایت و ...
تو UTF-8 فضای بیتهای بایت اول بین خود کاراکتر و تعداد بایت تقسیم میشه و متغیره
اما تو بایتهای دوم و سوم و چهارم همیشه شش تا بیت راست برای خود کاراکتر استفاده میشه و دو بیت دیگه برای هندل کردن ارور تو utf-8 استفاده میشه
امیدوارم تونسته باشم با دانش ناقص خودم شما رو در مورد این انکدینگ رایج دنیای کامپیوتر آشنا کرده باشم
توضیحات دقیقتر:
https://en.wikipedia.org/wiki/UTF-8
سایت استفاده شده برای تست بایت UTF-8:
https://utf8-playground.netlify.app/
| <Amir/>
Forwarded from Gopher Academy
🔵 عنوان مقاله
Failsafe: Fault Tolerance, Resilience Patterns & Policies
🟢 خلاصه مقاله:
Failsafe یک کتابخانه برای ساخت اپلیکیشنهای fault-tolerant است که به شما امکان میدهد کدهای حساس را با مجموعهای از سیاستهای تابآور مانند Retry، CircuitBreaker، RateLimiter، Timeout و Fallback بپوشانید. این سیاستها قابل ترکیباند و بدون تغییر منطق کسبوکار، حفاظتهای چندلایه ایجاد میکنند.
در نسخههای اخیر، دو قابلیت کلیدی اضافه شده است: نخست، usage tracking برای اعمال عدالت و جلوگیری از اثر “noisy neighbor” از طریق پایش مصرف و اجرای محدودیتها یا سهمیهها. دوم، execution budgets برای تعیین سقف کلی هزینه اعمال تابآوری—مثل مجموع retries یا hedges—در سطح یک فراخوانی، جریان کاری یا کل سیستم. این بودجهها مانع از افراط در بازیابی میشوند و تعادلی بین نرخ موفقیت، تأخیر، هزینه و SLOها برقرار میکنند.
خروجی این رویکرد، عملکرد قابلپیشبینیتر، تنزل کنترلشده در شرایط خطا و اعمال سیاستهای عملیاتی سازگار در برابر رخدادها و اوج ترافیک است.
#FaultTolerance #Resilience #Failsafe #Retry #CircuitBreaker #RateLimiter #Timeout #Fallback
🟣لینک مقاله:
https://golangweekly.com/link/175069/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Failsafe: Fault Tolerance, Resilience Patterns & Policies
🟢 خلاصه مقاله:
Failsafe یک کتابخانه برای ساخت اپلیکیشنهای fault-tolerant است که به شما امکان میدهد کدهای حساس را با مجموعهای از سیاستهای تابآور مانند Retry، CircuitBreaker، RateLimiter، Timeout و Fallback بپوشانید. این سیاستها قابل ترکیباند و بدون تغییر منطق کسبوکار، حفاظتهای چندلایه ایجاد میکنند.
در نسخههای اخیر، دو قابلیت کلیدی اضافه شده است: نخست، usage tracking برای اعمال عدالت و جلوگیری از اثر “noisy neighbor” از طریق پایش مصرف و اجرای محدودیتها یا سهمیهها. دوم، execution budgets برای تعیین سقف کلی هزینه اعمال تابآوری—مثل مجموع retries یا hedges—در سطح یک فراخوانی، جریان کاری یا کل سیستم. این بودجهها مانع از افراط در بازیابی میشوند و تعادلی بین نرخ موفقیت، تأخیر، هزینه و SLOها برقرار میکنند.
خروجی این رویکرد، عملکرد قابلپیشبینیتر، تنزل کنترلشده در شرایط خطا و اعمال سیاستهای عملیاتی سازگار در برابر رخدادها و اوج ترافیک است.
#FaultTolerance #Resilience #Failsafe #Retry #CircuitBreaker #RateLimiter #Timeout #Fallback
🟣لینک مقاله:
https://golangweekly.com/link/175069/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Failsafe-go
Fault tolerance and resilience patterns for Go
Failsafe-go website