voidp
описание
Software Engineer, Mentor Portfolio: https://voidp.uz Books: @voidpbooks Don't get mad at me, if I always ask you "how it actually works?".
120
подписчиков
Охват к подписчикам
233,3%
ERR
Реакции к просмотрам
2,58%
173 на 24 постов
Пересылки к просмотрам
0,31%
21
Постов в день
0,3
всего 24
Где отзываются чаще
доля реакций к просмотрам- 14 авг.#sys 📲 What Every Programmer should know about Memory Ulrich Drepper’s 2007 paper, foundational for low level system design. @voidplog9,68%
- 25 мая#ai Miyangiz hatto o'ylashga ham erinib qolgan bo'lsa, o'sha AI instructioniga shunday prompt qo'shib qo'ying: - Act like a Socratic mentor, always ask questions. Don't just give the answer, even if I beg for it. Make me think and find the path myself. Claude misolida sinab ko'ryapman, ochig'i miyani og'rityapti. Og'riq qancha kuchli bo'lsa siz AI ga shunchalik qaramsiz do'stim. @voidplog6,99%
- 7 авг.#c 👨💻 How I'm solving a subtle problem in Kinetic's memory mgmt. Allaqachon arena allocation ishlatyapman, butun request context alohida malloc'chalar emas bitta bump-allocate bo'ladi va bitta reset bo'ladi. Everything is fine, until it isn't. 👩💻 Repo: https://github.com/Samandar-Komilov/kinetic Xo'sh, o'zi nima gap? Ex bu TCP requestlar doim bittada to'liq kelganida edi... Lekin unday emas, bitta 2KB request 3 qismda (512KB, 1024KB, 512KB) kelishi mumkin. Va biz har chunk kelganda "keyingisi kelarmikan, qachon kelarkin endi u" deb kutib o'tirmaymiz, shart parserga berib yuboramiz (FSM aniqlaydi, request complete'mi, errormi yo yana kutish kerakmi). Yaxshi, lekin o'sha kelgan chala requestni ham qayerga o'qiymiz? Arenagami? Arena resizing uchun terrible, a bizda esa chunk_size ma'lum emas, xohlagancha kelishi mumkin. Bu active resizing talab qiladi, va intuitiv tarzda biz shunchaki malloc/realloc ishlatib qo'yaqolamiz. Har chunk kelganda yangi temporary heap, uni keyin connection bufferga copy (resize boladi). Bu degani har bitta chunk uchun nechta system-call ishlatyapman? O'zi arenadan maqsad ortiqcha syscallarni yo'qotish edi, xo'sh endi nima? Research qilsam, bu holatda global pool ishlatish to'g'riroq qaror bo'lib chiqdi: MAX_CONN=1024 va har bir pool_slot_size=8192 qilib 8MB lik heap pool ochib olaman (nima uchun static emas heap, nima deb o'ylaysiz?). Har chunk kelganda yangi malloc emas, o'sha 8KB slotga yozib qo'yaman. Lekin endi connectionga alohida copyni oldini olish uchun poolni connection-owned qilaman. Va tema hal - butun connection davomida pre-process raw datani qabul qilish uchun shu poolni ishlatishim mumkin. ✅ Lekin, yechim boshqa muammoni ko'tarib keladi - endi men max 1024 ta connectionni serve qila olaman, sababi har bir slot butun connection lifetime davomida uniki bo'ladi. Config fayldan dynamic boshqaraman, max_connections=100000 qilib qo'yaman deysizmi? Har server ishga tushganda RAMdan ~780MB yemoqchimisiz, hech nima qilmasa ham? Yo'q bunaqasi ketmaydi. ❓ Bu muammoni yechish uchun qanday yo'l tutishim mumkin, nima deb o'ylaysiz? Keyingi post shu haqida. @voidplog6,77%
- 11 авг.#c 👩💻 From Pool Slot Ownership to On-Demand Borrowing Yuqoridagi muammoga yechim - Buffer Multiplexing. Ya'ni, slotlarni connection'ga biriktirib qo'ymasdan, faqat kerakli paytda borrow qilish. Natijada, bitta pool slotini yuzlab connection'lar navbat bilan ishlatishi mumkin. Sababi, network traffic tabiatan shunday: 10 mingta faol connection bo'lsa ham, ular deyarli hech qachon ayni bir mikrosekundda paket jo'natmaydi. 👩💻 Implementation @voidplog5,66%
- 13 июл.#c ⏳ New Post Series is Pending... @voidplog5,24%
- 6 июн.#geo ⚠️ Geospatial data bilan ishlayotgan backendchilar uchun bu yerda kerak manbalar bo'lishi mumkin. 🗺 Xaritalar o'qish va chizish men uchun doim qiziqarli bo'lib kelgan. Best source to have fun. 10 yil oldin Paintda Orol dengizi qurishini chizganimda bir kun maxsus program bilan haqiqiy karta chizaman deb niyat qilardim. Yillar o'tib esimdan ham chiqib ketgan ekan, endi esladim. Bu xarita juda sodda bo'lsa-da o'sha niyatimga erishish mumkinligini amalda isbotladi. Foydalanildi: - QGIS 3.44, - Natural Earth Starter Kit Dataset, - QGIS tutorials @voidplog4,17%
- 28 июн.How Agentic Development affected my state of mind (in 6 months)? - The internal clock is now ticking way faster. I'm always in a hurry, time is not enough, even though AI was supposed to "improve" my efficiency. - Extreme distraction. AI meant we can do more and more concurrent tasks (e.g. multiple projects with parallel Claude sessions (multi-waiting sessions' auto mode)). Yet I'm now losing track of my own codebases, not writing a single line of code caused brain to fear from touching code and prefer "just ask Claude". - Loss of a deep work. Brain has much less resistance now. The very thing I actually need to grow is being treated as a barrier to growth. "Why bother facing with infra issues, just give Claude SSH access" - this is how far I got. Today I realized how far I moved from who I was a year ago. I willingly allowed the hype to take my resources and vision. Well, we'll get them back with force, killing CC dependency first. @voidplog3,38%
- 15 февр.без подписи3,36%
- 26 мая🔋 Battery Optimization Techniques Ko'pchiligimiz kompyuterni ishlatish tartibimiz by default quyidagicha: 100% -> unplug charger -> 20% -> plug charger -> 100% ... Ayniqsa, turli eski zamonlardan qolgan miflarga qanchadir miqdorda ishonamiz: batareyani to'liq 0 qilib turish kerak, to'liq 100% qilmasa kichrayib boradi, etc. Lekin zamonaviy litiy-ion batareyalar umuman boshqacha treat qilinishi kerak. Linuxda (Fedora misolida) buni tlp servisi bilan amalga oshirish mumkin. 1. Enabling Sleep Mode Modern komplarda ekranni yopsa ham komp o'chmasligi yoki light sleepga tushishi batareya ekran yopiqligida ham tez ketishiga sabab bo'lyapti. TLP orqali deep sleep qilishini ta'minlaymiz: MEM_SLEEP_ON_AC=deep MEM_SLEEP_ON_BAT=deep 2. Setting Charge Threshold Kompingiz zaryadi to'lsa ham tokda turganda batareya toshib ketmaydi, aksincha u directly tokni ozidan foydalana boshlaydi. Bu imkoniyatni o'z foydamizga ishlatamiz - zaryad 80 dan oshsa batareyani uzib tokni o'zini ishlat: START_CHARGE_THRESH_BAT0=0 STOP_CHARGE_THRESH_BAT0=80 Bu juda efficient usul bo'lib, kamroq charge, kamroq cycle count bo'lishi va natijada sog'lom batareya uzoqroq saqlanishini ta'minlaydi. 3. CPU optimizations Agar processoringiz kuchli bo'lsa, shunga mos energiya ham yeydi. Uni cheklash orqali energiyani tejashimiz mumkin: CPU_SCALING_GOVERNOR_ON_AC=performance CPU_SCALING_GOVERNOR_ON_BAT=powersave CPU_ENERGY_PERF_POLICY_ON_AC=balance_performance CPU_ENERGY_PERF_POLICY_ON_BAT=power CPU_BOOST_ON_AC=1 CPU_BOOST_ON_BAT=0 CPU_MAX_PERF_ON_AC=100 CPU_MAX_PERF_ON_BAT=60 Bular ishlashi uchun TLP servisini install qilishingiz, systemd service sifatida enable qilishingiz va config change bo'lganda restart qilishingiz kerak bo'ladi. Shuningdek shortcut, agar zaryad ulanmagan paytda ham tez ishlashini istab qolsangiz, profile change qilish tezroq solution bo'ladi (config changedan ko'ra): sudo tlp ac Bu orqali AC modega o'tamiz va komp tok ulangandagi performanceda ishlashni boshlaydi. @voidplog3,21%
- 18 мая🔥 Brat ichimdagi olovni qayta yoqdi Prosta iste'molchi bo'lmasdan, biroz contribute ham qilib turish kerak! (Hali PRim merge bo'lgan levelga chiqmagan bo'lsam-da, o'zim uchun eslatma) @voidplog3,05%
- 9 мая#sys ⚠️ So'z bilan uradigan post. Bu brat aytgan narsalar oldida o'zimni API plumber his qildim. Haqiqatan, experiment qilishlarni to'xtatib qo'ydik. Comfort (AI)ga yotib olyapmiz do'stlar. @voidplog2,68%
- 6 июл.#sys 🔄 HTTP Connection Lifecycle State Diagram 1st image shows how I built my previous HTTP server, while 2nd is the official RFC-compliant server. See the difference? Biggest mistakes we can make: 1. Reading HTTP requests as ASCII chars (char*) instead of octet-streams (uint8_t); 2. Considering Response generation a separate lifecycle, generating responses with separate heap alloc; 3. Thinking everything is sequential, while 2nd request may come before you send response to the 1st (no pipelining support); 4. Thinking IDLE state somehow finishes (no timers); 5. Assuming body is not chunked/dropping them off; 6. Forgetting to flush memory after connection completes. @voidplog2,52%