Guys tez maynerlarni o'chiramiz.
https://letsencrypt.org/2026/01/15/6day-and-ip-general-availability.html
https://letsencrypt.org/2026/01/15/6day-and-ip-general-availability.html
letsencrypt.org
6-day and IP Address Certificates are Generally Available
Short-lived and IP address certificates are now generally available from Let’s Encrypt. These certificates are valid for 160 hours, just over six days. In order to get a short-lived certificate subscribers simply need to select the ‘shortlived’ certificate…
Forwarded from bahrom04
@versatile_engineer silliq qorli zinadan tushayotganda orqasi bilan yiqilib tushishi jarohat olib kelmadi lekin zarbani yutib yuborgan popkadagi noutbukni tekshirib olish kerak.
nix build qilsa demak ishlayadi.
nix build qilsa demak ishlayadi.
😁10😱1👨💻1
Hash funksiya nima deysizmi ?
Masalan biror murakkab qurilmani qiziqib ochasiz va barcha detallarini ajratib qo'yasiz, kegin birdan aralashtirvorasiz hammasini. Manashu holat o'sha qurilmaning hashed versiyasi.
Biroz intro qilishga shuni o'qisangiz bo'lsa kerak: https://tuttlem.github.io/2024/10/26/simple-hashing-algorithms.html
Naxren leetcode agar bunaqa narsalarni hayotga tadbiq qilmasangiz Qo'chqor aka!
Masalan biror murakkab qurilmani qiziqib ochasiz va barcha detallarini ajratib qo'yasiz, kegin birdan aralashtirvorasiz hammasini. Manashu holat o'sha qurilmaning hashed versiyasi.
Biroz intro qilishga shuni o'qisangiz bo'lsa kerak: https://tuttlem.github.io/2024/10/26/simple-hashing-algorithms.html
Naxren leetcode agar bunaqa narsalarni hayotga tadbiq qilmasangiz Qo'chqor aka!
tuttlem.github.io
Simple Hashing Algorithms · Cogs and Levers
A place for thoughts, ideas, tutorials and bookmarks. My brain can only hold so much, you know.
Bu yerda esa yanada qiziqroq ma'lumot bor: https://binarymusings.org/posts/rust/rust-hashmap-memory-layout/
Bu yerda SMID bilan qilingan focuslar: https://kylematsuda.com/blog/writing_a_hashmap_part_3a
Bu yerda SMID bilan qilingan focuslar: https://kylematsuda.com/blog/writing_a_hashmap_part_3a
Binary Musings
3 Ultimate Secrets of Rust HashMap: Swiss Tables, SIMD, and Memory Layout
Deep dive into Rust HashMap implementation with Swiss Tables, quadratic probing, SIMD lookup, and memory layout optimizations for high performance.
Programming ∀
Yana bir qiziq challenge. Tassavur qiling biz bir filega Nta processdan turib content yozyabmiz va bu holatda race condition bo'lib contentlar kasha bo'lib tushish shansi bor. Masalan Process 1 hali yarmini yozib bo'lmasadan process 2 yozishni boshlaydi vaxakazo.…
File locking cooked
🔥1
Dromatic: f*ck sleep keep coding!
Realist: f*ck coding keep sleep!
Me: f*ck sleep and coding keep shitposting.
Realist: f*ck coding keep sleep!
Me: f*ck sleep and coding keep shitposting.
💯7
Haskell Haskell Haskell!
https://www.youtube.com/watch?v=ETxmCCsMoD0&list=RDETxmCCsMoD0&start_radio=1
https://www.youtube.com/watch?v=ETxmCCsMoD0&list=RDETxmCCsMoD0&start_radio=1
YouTube
ABBA - Money, Money, Money (Official Music Video)
REMASTERED IN HD! UP TO 4K!!
Listen to more music by ABBA: https://abba.lnk.to/musicID
Get the latest official ABBA merch: https://abba.lnk.to/SHOPABBA
Read More About ABBA: http://www.abbasite.com/
Video produced by: Kjell Sundvall and Kjell-Åke Andersson…
Listen to more music by ABBA: https://abba.lnk.to/musicID
Get the latest official ABBA merch: https://abba.lnk.to/SHOPABBA
Read More About ABBA: http://www.abbasite.com/
Video produced by: Kjell Sundvall and Kjell-Åke Andersson…
FAFO deriving custom typeclass.
Hullas bungacha manda journal entry Key Val dan tashkil topgan edi. Manabunday:
Ammo bu narsa yomonam noise beradi. Rustda ham Haskell kabi
Agar shunaqa bo'lsa man o'zim yasagan tipni osongina journal entryga ham o'gira olaman shu bilan birga type safety ham joyida qoladi. Undan tashqari log entrylar tag bilan ajratilgan bo'ladi constructor namega qarab bu esa journalda grouping kabi narsalar qilishga juda foydali.
Haskellda siz yozgan typeclassni derive qilish unchalik qiyin emas. GHC.Generics bilan ishingiz anchagina oson ham bitadi, bu mavzularda juda ko'p resurslar bor. Lekin rustda esa bunday mavzular haqida kerakli resurslar deyarli topolmadim. Topganim bitta shu HeapSize. Ishqilib anchagina FAFOlardan kegin bu narsani yedirdim vanihoyat man yozgan typeclassni derive qilsa bo'ladigan bo'ldi.
Implementation: https://gist.github.com/lambdajon/c815ea20b9743e69fba9911e7583d930
Aytgancha
FAFO -> Fuck Around and Find Out
Hullas bungacha manda journal entry Key Val dan tashkil topgan edi. Manabunday:
let entry = Entry::new(vec![
Field::string("_SYSTEMD_UNIT", "myapp.service"),
Field::string("PRIORITY", "6"),
Field::string("MESSAGE", "Application started"),
]);
Ammo bu narsa yomonam noise beradi. Rustda ham Haskell kabi
derive qilsa bo'ladi typeclasslarni. Shu ideya hayolga keldi. Yani manabunaqa qilsa bo'larmikan ?#[derive(JournalEntry)]
pub struct ServiceLog {
#[journal(rename = "_SYSTEMD_UNIT")]
pub unit: String,
#[journal(rename = "MESSAGE")]
pub message: String,
#[journal(rename = "PRIORITY")]
pub priority: u32,
}
Agar shunaqa bo'lsa man o'zim yasagan tipni osongina journal entryga ham o'gira olaman shu bilan birga type safety ham joyida qoladi. Undan tashqari log entrylar tag bilan ajratilgan bo'ladi constructor namega qarab bu esa journalda grouping kabi narsalar qilishga juda foydali.
Haskellda siz yozgan typeclassni derive qilish unchalik qiyin emas. GHC.Generics bilan ishingiz anchagina oson ham bitadi, bu mavzularda juda ko'p resurslar bor. Lekin rustda esa bunday mavzular haqida kerakli resurslar deyarli topolmadim. Topganim bitta shu HeapSize. Ishqilib anchagina FAFOlardan kegin bu narsani yedirdim vanihoyat man yozgan typeclassni derive qilsa bo'ladigan bo'ldi.
Implementation: https://gist.github.com/lambdajon/c815ea20b9743e69fba9911e7583d930
Aytgancha
FAFO -> Fuck Around and Find Out
🔥1
Rust fichalaridan foydalanib nafaqat safe balki declarative va qisqaroq code yozsa bo'ladi.
Bunga sekin sekin ko'nikish kerak. Masalan shu macro bilan ancha user friendly bo'ldi. Undan tashqari boshqa narsalar ham bor, bazida ko'p narsani boilerplate qilib yuboramiz.
Refactoring sessiyalarini shunga ham ko'paytirmoqchiman. Shu orqali o'rganamiz har bir masalaga intensiv yondoshuvni. Agar language feauturelardan foydalanmasak Rustda yozgan bilan C++ da yozganimiz farq qilmasligi mumkin. Agar biz shunday train qilib yursak, yangi narsalarga ko'proq tolerant bo'lsak shunda Codeni AI yozberadimi yoki o'zimiz yozamizmi doyim ham katta axamiyatga ega emas. Chunki biz aynan qanday codeni qabul qilishni bilamiz aks holda AI generate qilib bergan har qanday kodni ishlataveramiz va yetmaganiga o'zimiz yozgan govnokodlarni AIga review qildiramiz.
Bunga sekin sekin ko'nikish kerak. Masalan shu macro bilan ancha user friendly bo'ldi. Undan tashqari boshqa narsalar ham bor, bazida ko'p narsani boilerplate qilib yuboramiz.
Refactoring sessiyalarini shunga ham ko'paytirmoqchiman. Shu orqali o'rganamiz har bir masalaga intensiv yondoshuvni. Agar language feauturelardan foydalanmasak Rustda yozgan bilan C++ da yozganimiz farq qilmasligi mumkin. Agar biz shunday train qilib yursak, yangi narsalarga ko'proq tolerant bo'lsak shunda Codeni AI yozberadimi yoki o'zimiz yozamizmi doyim ham katta axamiyatga ega emas. Chunki biz aynan qanday codeni qabul qilishni bilamiz aks holda AI generate qilib bergan har qanday kodni ishlataveramiz va yetmaganiga o'zimiz yozgan govnokodlarni AIga review qildiramiz.
💯2❤1😁1
Haskell yoki Rustga o'xshagan tillarda optional tiplarga duch kelasiz. Imperativ tillardagi NULL o'rniga ko'proq manashunday abstraksiyalar ishlatilinadi.
Haskell: Maybe
Rust: Option
Bu abstraksiyalar bizga optional valuelar bilan ishlagani kerak, imperativ tillarda aytganda nullable valuelar bilan. Ammo bilamizki imperativ tillarda null hamma joyda osilib yuradi, niz nullable valueni olib yana boshqa funksiyaga bervorishingiz mumkin vaxakazo hullas hamma joyda null tekshirish potensiali mavjud.
Immutable tilda ishlar ekansiz imperativ tillardagi odatlarni sekin chetga surish kerak. Optional narsalarni eng boshidan hal etish kerak. Bo'lmasa o'zingizni Option tipni ham qurib o'tirasiz.
Bu draft PRda aynan shu muammoni yechimini ko'rsak bo'ladi: https://github.com/bleur-org/bleur/pull/17/changes
Ammo muammo bundanda kengroq ekan, Biz
Manashu sababli konstruksiyalar yanayam teparoqdan refactor qilinishi kerak, PRda aynan
PR o'ziga etibor bersangiz birgina empty case sababli qancha code kerakmas bo'lib qoldi. Shu sababli ham bunday holatlarda o'zingizni custom empty caseni qurmaslik kerak. Eng boshidan aniq ajratib olish kerak hammasini shunda ortiqcha code bo'lmaydi, ortiqcha
Maxsus empty caselar bazida bo'lishi mumkini ammo bu boshqa mavzu bizni contextga umuman aloqador emas.
Manashu ham misol bo'ladiki biz language feauturelardan foydalanishni o'rganishimiz kerakligiga. Albatta hammasini sekin sekin o'rganamiz.
Haskell: Maybe
Rust: Option
Bu abstraksiyalar bizga optional valuelar bilan ishlagani kerak, imperativ tillarda aytganda nullable valuelar bilan. Ammo bilamizki imperativ tillarda null hamma joyda osilib yuradi, niz nullable valueni olib yana boshqa funksiyaga bervorishingiz mumkin vaxakazo hullas hamma joyda null tekshirish potensiali mavjud.
Immutable tilda ishlar ekansiz imperativ tillardagi odatlarni sekin chetga surish kerak. Optional narsalarni eng boshidan hal etish kerak. Bo'lmasa o'zingizni Option tipni ham qurib o'tirasiz.
Bu draft PRda aynan shu muammoni yechimini ko'rsak bo'ladi: https://github.com/bleur-org/bleur/pull/17/changes
Ammo muammo bundanda kengroq ekan, Biz
Configuration degan tipda Empty degan varianti olib tashladik va endi bizda Configuration tipida empty case yo'q. Lekin muammo shundaki uning Template yoki Collection tiplariga kerakli valuelar Collection tipi construct bo'lish vaqtida bo'lmasligi mumkin. Manashu sababli konstruksiyalar yanayam teparoqdan refactor qilinishi kerak, PRda aynan
todo qolib ketgan. PR o'ziga etibor bersangiz birgina empty case sababli qancha code kerakmas bo'lib qoldi. Shu sababli ham bunday holatlarda o'zingizni custom empty caseni qurmaslik kerak. Eng boshidan aniq ajratib olish kerak hammasini shunda ortiqcha code bo'lmaydi, ortiqcha
unwrap ham bo'lmaydi. Vaqtim bemalol bo'lganida PR yakunlab qo'yaman va natijani ulashaman.Maxsus empty caselar bazida bo'lishi mumkini ammo bu boshqa mavzu bizni contextga umuman aloqador emas.
Manashu ham misol bo'ladiki biz language feauturelardan foydalanishni o'rganishimiz kerakligiga. Albatta hammasini sekin sekin o'rganamiz.
🔥2❤1🤯1
Bu ishlardan tashqari vaqtim bo'lganida yangi ish muhitimni ham boshlamoqchiman. Nix va linuxni biroz custumize qilamiz anchadan buyon o'zim istagan text editor vaxakazolar.
Orada qiziq narsalar chiqsa ularniyam gaplashamiz.
Imkon bo'lsa unda ham har bir o'zgarishni share qilaman, masalan nega falon narsani tanladim, qanaqa optionlar bor edi vaxakazolar.
Orada qiziq narsalar chiqsa ularniyam gaplashamiz.
Imkon bo'lsa unda ham har bir o'zgarishni share qilaman, masalan nega falon narsani tanladim, qanaqa optionlar bor edi vaxakazolar.
Programming ∀
Endi bunga write streamlar qo'shish kerak va agar man biror structure berib shuni journalga yozsam o'zi encode qilib streamga tashlashi kerak. Shunda bunaqa tassavur qilsangiz bo'ladi. Har bir journal entry bu raw Har bir entry field bu column. Ammo journal…
Tiplarni journalga implement qilishga bitta sabab topdim.
1. Loglarni render qilish kerak. Journalga hohlagancha narsa yozib tashlayverganingiz bilan hali muammoni report qilinganda o'sha journalni view qiladiganlar ham tushuna olishi kerak.
2. Reportdan olingan dump file ichida aniq duplicated narsalar bo'ladi, masalan muammo kernel oops bilan boshlandi va shu sababli boshqa joylarga ham tasir qildi, natija tizimda nimadurlar buzildi lekin bunaqa holatda loglarni ko'rsangiz doyim ham bitta bo'lmaydi yani sabablar zanjiri. Demak journalni indexlay olish muhimroq ammo indexlar read journal qilinganda bo'lmaydi mavjud journal data fileni o'qib undan index yasash kerak va bu yaqin kelajakda bo'ladi.
Bu holatda esa eng boshlang'ich yechim journal entrylarga tiplar qo'shish. Ho'sh qanday bo'ladi ?
Yechimlar unchalik qiyin emas hayolga 2tasi keldi.
1. Har bir field o'zini tipiga ega bo'ladi. Bunda boshlang'ich 1 yoki 4 byte offset type representation bo'ladi. Masalan 1 kelsa 32bit int, 2 kelsa 64, 3 kelsa string vaxakazo.
2. Bufferlar indexlari bo'yicha type schemalar. Bu holatda biz har bir entryga metadataga schema qo'shib ketamiz. Masalan bizni entryda 3ta field bor. Metadatagi N byte tuple bo'ladi va u yerda schema turadi: (3,3,2) Bu yerda entry field order o'zgarsa ham farqi yo'q kombinatsiyalar mos kelaveradi.
Yana bir biroz murakkabroq va chalaroq fikr bor ammo potential storage efficient, recorda tag bor yani type constructor tag bo'lib olgan. Aslida bu unchalik tog'ri ham emas chunki code o'zgarishi mumkin va turli tillarda constructor namelar turlicha. Shu sabab shunchaki strukturani identity qilish kerak hayolga birinchi kelgan yechim bu Duck typing. Ammo bizda juda muhim nuans shundaki journalni oddiy user journalni o'qimaydi, shu sababli biz auto indexing qilsak bo'ladi. Masalan journal dump yuborilganidan kegin bizga kelib tushganida alohida indexing bo'ladi. Yani xinux ishlayotgan joyda indexlash vaxakazolarga umuman extiyoj bo'lmaydi uyoqda hamma narsa write oriented bo'ladi. Lekin journal bizga kelganida biz uni o'qishdan oldin read oriented qilib olamiz )). Xozircha bu narsa biroz hom, agar fikrlar bo'lsa aytilar.
1. Loglarni render qilish kerak. Journalga hohlagancha narsa yozib tashlayverganingiz bilan hali muammoni report qilinganda o'sha journalni view qiladiganlar ham tushuna olishi kerak.
2. Reportdan olingan dump file ichida aniq duplicated narsalar bo'ladi, masalan muammo kernel oops bilan boshlandi va shu sababli boshqa joylarga ham tasir qildi, natija tizimda nimadurlar buzildi lekin bunaqa holatda loglarni ko'rsangiz doyim ham bitta bo'lmaydi yani sabablar zanjiri. Demak journalni indexlay olish muhimroq ammo indexlar read journal qilinganda bo'lmaydi mavjud journal data fileni o'qib undan index yasash kerak va bu yaqin kelajakda bo'ladi.
Bu holatda esa eng boshlang'ich yechim journal entrylarga tiplar qo'shish. Ho'sh qanday bo'ladi ?
Yechimlar unchalik qiyin emas hayolga 2tasi keldi.
1. Har bir field o'zini tipiga ega bo'ladi. Bunda boshlang'ich 1 yoki 4 byte offset type representation bo'ladi. Masalan 1 kelsa 32bit int, 2 kelsa 64, 3 kelsa string vaxakazo.
2. Bufferlar indexlari bo'yicha type schemalar. Bu holatda biz har bir entryga metadataga schema qo'shib ketamiz. Masalan bizni entryda 3ta field bor. Metadatagi N byte tuple bo'ladi va u yerda schema turadi: (3,3,2) Bu yerda entry field order o'zgarsa ham farqi yo'q kombinatsiyalar mos kelaveradi.
Yana bir biroz murakkabroq va chalaroq fikr bor ammo potential storage efficient, recorda tag bor yani type constructor tag bo'lib olgan. Aslida bu unchalik tog'ri ham emas chunki code o'zgarishi mumkin va turli tillarda constructor namelar turlicha. Shu sabab shunchaki strukturani identity qilish kerak hayolga birinchi kelgan yechim bu Duck typing. Ammo bizda juda muhim nuans shundaki journalni oddiy user journalni o'qimaydi, shu sababli biz auto indexing qilsak bo'ladi. Masalan journal dump yuborilganidan kegin bizga kelib tushganida alohida indexing bo'ladi. Yani xinux ishlayotgan joyda indexlash vaxakazolarga umuman extiyoj bo'lmaydi uyoqda hamma narsa write oriented bo'ladi. Lekin journal bizga kelganida biz uni o'qishdan oldin read oriented qilib olamiz )). Xozircha bu narsa biroz hom, agar fikrlar bo'lsa aytilar.