Programming ∀
Nix configim ancha eskiribti endi sekin sekin shuni yaxshilash kerak. Xozir devayslarim ko’p o’zgaradi 36GB config keladi bechora devaysga atak makesense lekin barbir juda ko’p hamma devayslarimda ham bazi narsalarni ishlatmayman yani ortiqcha paketlar juda…
Hullas manashunaqa bo'lishini istayman.
editors.vscode.enable = true;
stacks = {
rust = {
enable = true;
toolChain = "stable";
};
haskell = {
enable = true;
compiler = "ghc912";
};
};
😨3
Programming ∀
bu narsa uncha yaxshi bo'lmas ekan.
Ho'sh kecha birnechta modularni optionlarga o'rab chiqdim.
Ko'rinishidan zo'r o'zingizni configuration.nix file ichida shunchaki.
Sizda butun haskell dev stack bor uje, lsp, ide plugins hammasi.
Bu juda zo'r ko'rinadi toki tanqid qilmaguncha :) Ho'sh qanday tradeoff bo'ldi ?
Masalan my.* nix LSP resolve qilolmaydi. Demak bu custom optionlarni yoki eslab qolish kerak yoki harsafar search qilish kerak nu shunga o'xshagan tanqidan boshlandi hammasi.
Ammo modularga o'girishni dalshe davom etib ko'rdim.
Quyidagi hulosalarni oldim.
1.
2.
3. Code to'liq decidable emas chunki bazi narsalar optionsda hal bo'lib ketgan va optionlar asosida mutatsiyalar ko'p.
4. Paketlarni pick qilish qiyin. Masalan ko'rib turganignizdak haskell stackda
Ho'sh endi qanday yechim keldi ?
Shunchaki hamma o'ziga kerakli paketlarni qo'shib olgani afzal
Masalan common narsalarni esa shunchaki bir modulga yeg'ib qo'ysa yetarli. Shunda mutatsiya ham yo'q custom optionlar ham yo'q.
Qaysidir hostga nimadir boshqacha kerak bo'lsa qo'lda yozib terib olaveradi.
Ko'rinishidan zo'r o'zingizni configuration.nix file ichida shunchaki.
my.stacks.haskell.enable = true;
Sizda butun haskell dev stack bor uje, lsp, ide plugins hammasi.
Bu juda zo'r ko'rinadi toki tanqid qilmaguncha :) Ho'sh qanday tradeoff bo'ldi ?
Masalan my.* nix LSP resolve qilolmaydi. Demak bu custom optionlarni yoki eslab qolish kerak yoki harsafar search qilish kerak nu shunga o'xshagan tanqidan boshlandi hammasi.
Ammo modularga o'girishni dalshe davom etib ko'rdim.
Quyidagi hulosalarni oldim.
1.
options, config, mkIf, mkEnableOption. Bularni o'zi boilerplate. Chunki hamma modulda bularni bazilari yoki hammasi ishtrok etadi.2.
my.X.enable = true qildim ho'sh buni tog'ri config genrate qivotganini qanday trace qilaman ?3. Code to'liq decidable emas chunki bazi narsalar optionsda hal bo'lib ketgan va optionlar asosida mutatsiyalar ko'p.
4. Paketlarni pick qilish qiyin. Masalan ko'rib turganignizdak haskell stackda
pkgs.stack hoogle turibti. Ammo mandagi qaysidir hostga hoogle kerak bo'lmasa nima qilaman ? Undan tashqari bazi joylarda extraPackages option tashlab ketmasam keginchalik uniyam qo'shish kerak, yoki tashlab ketsam umuman ishlatmasligim mumkin.Ho'sh endi qanday yechim keldi ?
Shunchaki hamma o'ziga kerakli paketlarni qo'shib olgani afzal
++ va // bilan hal etish kerak.Masalan common narsalarni esa shunchaki bir modulga yeg'ib qo'ysa yetarli. Shunda mutatsiya ham yo'q custom optionlar ham yo'q.
Qaysidir hostga nimadir boshqacha kerak bo'lsa qo'lda yozib terib olaveradi.
❤2🤔1
Adashmasam 7-8 yil oldin man ishlatib ko'rgan dashboardlarni deyarli hammasi umuman qotmasdan ishlar edi.
U payitlar adashmasam juda ko'p narsa phpda edi, qanaqadir template enginelar bilan componentlar yozib o'tirganimni ham eslayman.
Tassavur qiling deyarli hammmada 4 cpu 8-12 gb ram. O'sha payitdagi hadwarelar va muhiit. Yani user spaceda xozirgichalik katta resurslar bo'lmagan.
Lekin shunda ham deyarli hechqaysi sofware qotmasdan bemalol ishlar edi. Xatto devayslarni abuse qilib i3 da GTA V ham o'ynaganman.
Endichi ?
Preprod envoirmentdagi dashboardga logindan kegin kutasiz.
Leadning page saytni ochasiz va kutib o'tirasiz bazida. DevTools ochsangiz bazida katta hajmli rasm ham bo'lmaydi. Qandaydir katta source code ham yo'q. Shunchaki virtual doom load qilishga kutish kerak.
Muammo faqat webda emas, bazida umuman internetda. Lekin deyarli hamma UI/GUI dasturlarni qarasa shu axvol. Masalan yaqinda bir tolov tizimi orqali to'lov qilmoqchi edim internet 5G chiqyabti ammo QR generatsiya uchun taxminan 5 minut kutdim.
Masala kim ayibdor ekanida ham emas. Shunchaki borgan sayin hammaga pofig bo'lib boryotganida. Tillarni benchmark qilamiz va eng tez framework bizda deb maqtanamiz ammo qilgan dasturimiz load bo'lgunicha kech bo'ladi.
U payitlar adashmasam juda ko'p narsa phpda edi, qanaqadir template enginelar bilan componentlar yozib o'tirganimni ham eslayman.
Tassavur qiling deyarli hammmada 4 cpu 8-12 gb ram. O'sha payitdagi hadwarelar va muhiit. Yani user spaceda xozirgichalik katta resurslar bo'lmagan.
Lekin shunda ham deyarli hechqaysi sofware qotmasdan bemalol ishlar edi. Xatto devayslarni abuse qilib i3 da GTA V ham o'ynaganman.
Endichi ?
Preprod envoirmentdagi dashboardga logindan kegin kutasiz.
Leadning page saytni ochasiz va kutib o'tirasiz bazida. DevTools ochsangiz bazida katta hajmli rasm ham bo'lmaydi. Qandaydir katta source code ham yo'q. Shunchaki virtual doom load qilishga kutish kerak.
Muammo faqat webda emas, bazida umuman internetda. Lekin deyarli hamma UI/GUI dasturlarni qarasa shu axvol. Masalan yaqinda bir tolov tizimi orqali to'lov qilmoqchi edim internet 5G chiqyabti ammo QR generatsiya uchun taxminan 5 minut kutdim.
Masala kim ayibdor ekanida ham emas. Shunchaki borgan sayin hammaga pofig bo'lib boryotganida. Tillarni benchmark qilamiz va eng tez framework bizda deb maqtanamiz ammo qilgan dasturimiz load bo'lgunicha kech bo'ladi.
❤3🔥1
Choq -8 hours for configurations.
Palakat soat 4:00 da komp oldiga o’tirgan edim uje obet bo’libti.
Loglarga qarab vaqtni bildim bo’lmasa o’tiraverardim qorayib.
Hullas ozgina chala ishlar qoldi barbir, biroz chill qilib aylanib qaytib o’tirib cook qivoraman(deb o’ylayabman lekin nixrena unaqa bo’lmaydi).
Soat paranoyiklarga o’ylab topilgan narsa ekaniga yana bir isbot mana. Bo’lmasa o’tiraverar edim indamay yo’q vaqtni ko’rdim va biroz o’tirib qolibman degan fikr keldi xayolga.
Palakat soat 4:00 da komp oldiga o’tirgan edim uje obet bo’libti.
Loglarga qarab vaqtni bildim bo’lmasa o’tiraverardim qorayib.
Hullas ozgina chala ishlar qoldi barbir, biroz chill qilib aylanib qaytib o’tirib cook qivoraman(deb o’ylayabman lekin nixrena unaqa bo’lmaydi).
Soat paranoyiklarga o’ylab topilgan narsa ekaniga yana bir isbot mana. Bo’lmasa o’tiraverar edim indamay yo’q vaqtni ko’rdim va biroz o’tirib qolibman degan fikr keldi xayolga.
Programming ∀
Ho'sh kecha birnechta modularni optionlarga o'rab chiqdim. Ko'rinishidan zo'r o'zingizni configuration.nix file ichida shunchaki. my.stacks.haskell.enable = true; Sizda butun haskell dev stack bor uje, lsp, ide plugins hammasi. Bu juda zo'r ko'rinadi toki…
Fuck you nix!
Hullas bu temaga kegin qaytamizl. Systemd start bo'lmasdan qotib qoladigan qilib qo'ydim endi bootdan kegin hechvaqo bo'lmay turaveradi molga o'xshab bezrayib, man esa shuni kutib uxlab qolibman kecha ertalab qarasam o'sha o'sha.
Configda aniq nimadir broken nu uje pofig bir aylanib kelib qaytib fix qilib stabil qivolaman.
Hullas bu temaga kegin qaytamizl. Systemd start bo'lmasdan qotib qoladigan qilib qo'ydim endi bootdan kegin hechvaqo bo'lmay turaveradi molga o'xshab bezrayib, man esa shuni kutib uxlab qolibman kecha ertalab qarasam o'sha o'sha.
Configda aniq nimadir broken nu uje pofig bir aylanib kelib qaytib fix qilib stabil qivolaman.
Hullas hamma mayda componentlar manashunaqa yeg'ib chiqiladi har bir hostda.
Sizga kerakli hostga kerakli narsalarni yeg'ib chiqa olasiz mazza. Ideya yedi ammo yoki unstable channelar ishlatganim yoki bo'lmasa qaysidir paket brokenligi sabab va home-managerda backuplar ishlamayotgani sabab yangi config apply bo'lmayabti.
Sizga kerakli hostga kerakli narsalarni yeg'ib chiqa olasiz mazza. Ideya yedi ammo yoki unstable channelar ishlatganim yoki bo'lmasa qaysidir paket brokenligi sabab va home-managerda backuplar ishlamayotgani sabab yangi config apply bo'lmayabti.
Shu hamma joyda pismayib optionlar, dialektlar, standartlar bo’lib ketishi yoqmaydi.
Mos kelmaydigan configurationlarni check qilish doyim azob. Masalan loglar append turibti. Stderr ham yozadi ammo /dev/stderr ga write permission yo’q.
Bu palakat qolib keganiga systemd ham indamagan. Bu narsani bilish uchun esa qolganlar qanday qilganini search qilish kerak girhubdan.
Endi esa yodlash kerak shuni sababi ertaga yana shunaqa case bo’lsa nixrena debug qilolmaysiz.
Mos kelmaydigan configurationlarni check qilish doyim azob. Masalan loglar append turibti. Stderr ham yozadi ammo /dev/stderr ga write permission yo’q.
Bu palakat qolib keganiga systemd ham indamagan. Bu narsani bilish uchun esa qolganlar qanday qilganini search qilish kerak girhubdan.
Endi esa yodlash kerak shuni sababi ertaga yana shunaqa case bo’lsa nixrena debug qilolmaysiz.
😁3
Programming ∀
Shu hamma joyda pismayib optionlar, dialektlar, standartlar bo’lib ketishi yoqmaydi. Mos kelmaydigan configurationlarni check qilish doyim azob. Masalan loglar append turibti. Stderr ham yozadi ammo /dev/stderr ga write permission yo’q. Bu palakat qolib…
Append esa restartdan kegin log yozmayabti 🙂
Fuck you systemd
Fuck you systemd
Programming ∀
hammasini tikdim...
Bu ishladi sababini keginroq yozaman buyam o'sha elab qolinishi kerak bo'lgan temalardan.
Programming ∀
Bizni qoravoy
Bu server oyoq tagida yotar edi shu sabab sholcha derdik. Endi kovrik deymiz.
😁10
Dasturlashda bazi narsalar borki agar shunga ishingiz tushib qolsa o’rganishga deyarli resurslar ham bo’lmaydi.
Githubdan search qilasiz bazida uyam topilmasligi mumkin. Forumlarda ham discussion qilinmagan bo’ladi. Agar AI ishlarsez ham makillaydi.
Manashunaqa holatga tushsam mazza qilaman, chunki o’zingiz ijod qilasiz. O’zingiz research qilasiz huddi puzzlega o’xshaydi. Manashu questdan o’tish juda katta boost beradi sizga.
Githubdan search qilasiz bazida uyam topilmasligi mumkin. Forumlarda ham discussion qilinmagan bo’ladi. Agar AI ishlarsez ham makillaydi.
Manashunaqa holatga tushsam mazza qilaman, chunki o’zingiz ijod qilasiz. O’zingiz research qilasiz huddi puzzlega o’xshaydi. Manashu questdan o’tish juda katta boost beradi sizga.
🔥12
Rustdan olamshumul safety, perfomance kutadiganlar uchun maxsus :)
Rust analayser LSP rustda yozilgan va manashunaqa resurs yeydigan caselar bo’ladi.
Bu bilan nima demoqchiman ?
Odamiga bog’liq. Bu yerda texnalogiyadan ko’ra ko’proq odam faktori ham bor o’sha maintainer, avtor etc…
Bazida rewrite fikrlarini qoralashim sababi ham aynan shunaqa yani yangisi eskisidan yomonroq bo’lib qolishi.
Rust analayser rewrite qilinmagan manimcha. Lekin man ko’rgan eng ochko’z LSP. Umuman olganda rewrite fikriga fanatic qaramaslik kerak. Man bilmayman LSPda qandaydir memoryleak bormi yo’qmi, maintainerlarini ham tanimayman bularni imrove qilgani nimadir o’ylashyabtimi bilmayman. Ammo aniq nimadir neto, rustda serverlar yozish ideyasi doyim yoqmagan sababi bazida server side applarga borrowlar juda noise berib tashlaydi undan tashqari async rust ham mutant bo’lib yotibti coloured funksiyalar bilan.
Nima bo’lganda ham LSP ustida ko’p odam ishlaydi balki fix qilishar balki yo’q bunisi manga qorong’u.
Rust analayser LSP rustda yozilgan va manashunaqa resurs yeydigan caselar bo’ladi.
Bu bilan nima demoqchiman ?
Odamiga bog’liq. Bu yerda texnalogiyadan ko’ra ko’proq odam faktori ham bor o’sha maintainer, avtor etc…
Bazida rewrite fikrlarini qoralashim sababi ham aynan shunaqa yani yangisi eskisidan yomonroq bo’lib qolishi.
Rust analayser rewrite qilinmagan manimcha. Lekin man ko’rgan eng ochko’z LSP. Umuman olganda rewrite fikriga fanatic qaramaslik kerak. Man bilmayman LSPda qandaydir memoryleak bormi yo’qmi, maintainerlarini ham tanimayman bularni imrove qilgani nimadir o’ylashyabtimi bilmayman. Ammo aniq nimadir neto, rustda serverlar yozish ideyasi doyim yoqmagan sababi bazida server side applarga borrowlar juda noise berib tashlaydi undan tashqari async rust ham mutant bo’lib yotibti coloured funksiyalar bilan.
Nima bo’lganda ham LSP ustida ko’p odam ishlaydi balki fix qilishar balki yo’q bunisi manga qorong’u.
1💯2