OpenPGP bo'yicha qilingan expirementlar.
Hamma narsa juda explicit qilingan misol keltiraman, aytaylik manga ed25519 key kerak va manashunday key generation qilmoqchiman.
Ho'sh public va private keylar shakli qanday bo'ladi masalan publickey
Ko'rib turdangingizdek bu yerda juda tushunarsiz infolar ko'p, MPI nima ? OID nima va nega kerak?
Agar RFC ga mos qilmasangiz unda siz qilgan narsa sizni muhitdan tashqarida ishlamaydi. Masalan publickey manashu normalarga mos kelmasa uni boshqa pgp key bilan ishlaydigan dasturlar masalan
Bu faqat rfc haqida edi. Endi texnik tomondan qaraymiz.
Masalan siz foydalanadigan tilda bularni qilsangiz qanday ishlaydi ?
Bu umumiy manoda yani tezlikdan tortib xavfsizlikgacha. Mani holatimda nativ haskellda yetarlicha tez ishlayabti key generation ammo xavfizlik qanday bilmayman.
Ammo encyption/decryption unday emas yetarlicha sekin ishlaydi )) Streamingsiz holatda 11-12minutes for ~50mb file encryption.
Streaming bilan ~3s Ammo buyoqda ham gambling qilganman yani bazi parametrlarni o'zgartirib ko'rdim va chunklarni 32kb dan oldim.
Aytishingiz mumkin 3s norm. Ha norm bo'lishi mumkin ammo rfcga mos degani muammo hal bo'ldi degani emas. Yani man buni qanday test qilishni bilmayman. Ishlayabtimi ? Ha ishlayabti )) Ha bazi componentlarni test qila olarman va biroz hotirjam bo'larman aytaylik SHA1 o'rniga SHA-512 ishlatdim. RFC bo'yicha hamma narsaga mos keladi.
Ammo asosiy savol ochiqligicha qolaveradi. Yani qanchalik xavfsiz va qanchalik tog'ri ?
Manashu yerda yo'l ikkiga ajralyabti.
1. For fun.
2. Professional.
Man professional kriptogrof emasman. Shunchaki RFC dagi aytilgan gaplar bo'yicha bazi liblar bilan expirement qilgan odaman holos. Ha dasturlashni bilaman ammo specialis emasman bu domainda. Ha bu narsani qandaydir darajada qildim, albatta full emas rfc bir qismi holos. Ammo prikol shundaki bu narsaga garantiya berolmayman.
Agar parser yozsam eng kamida visual bilishim mumkin va input/output ni test qila olaman. Ammo kriptografiyada doyim ham unday emas ekan. Yani biror narsa xato ekanini qanday isbotlashni ham bilmayman ammo tog'ri emas deb o'tiraverishim mumkin.
Ha albatta study qilish mumkin, bu borada doyim tolerantman. Ammo bunga sarflanadigan resurs, vaqt... Aynan bunaqa mavzularda tajribaga ega odamlardan feedback olish.
Shunda ham hamma narsani to'liq 0 dan emas balki uje tayyor librarylarni ishlatgan holatda qildim.
Ushbu expirement quyidagi hulosalarga olib keldi.
1. Bazi narsalarda shunchaki havaskor bo'lish ham unchalik oson emas. Masalan kriptografiya.
2. Nimadirni high levelda tushungan bilan uni implement qilish o'rtasida juda katta farq bor. Tushungan odam faqat o'zini tushunaman deb o'ylaydi ko'p holda aslida unaqa bo'lmaydi....
3. Detaillarga kirganda sizdagi tajriba va bilim aniq ko'rinadi. Masalan bit manipulationdan tajribam juda kamligi sabab doyim adashtirib o'tirdim kerakli combinatorlarni tiplarda juda ko'p adashdim bazi joylarda unsignet integer kerak bo'lsa man signed bazi joylarda esa bytestring o'rniga unsignet integer va ularni ortiqcha convertatsiyalari. Nu baxtimga haskellda kriptografiyaga aloqador juda ko'p source bor.
Bu narsa man uchun shunchalik katta puzzle bo'ldiki xatto nimani qayerdan ham boshlashni bilmagan edim. Boshida shunchaki
Ammo muammoni hal etishga ham compramise topa oldim. Yani 2ta source of truth bu yerda manga kerkali encryption/decryption algorithmlar uje tayyor testdan ham o'tgan:
https://github.com/simplex-chat/simplexmq
https://github.com/fission-codes/fission
Hamma narsa juda explicit qilingan misol keltiraman, aytaylik manga ed25519 key kerak va manashunday key generation qilmoqchiman.
Ho'sh public va private keylar shakli qanday bo'ladi masalan publickey
0x04 - Bu versiya bizda xozir V4<4 bytes> - Unix time yani qachon yasalgani0x16 - Qaysi algorithmda ekani bizni holatda EdDSA <10 bytes> - Object Identifier ASN.1 standarti bo'yicha. Masalan bizni holatdagi raqam 1.3.6.1.4.1.11591.15.1 Aynana manashunaqa formatda bo'ladi.0x01 0x07 0x40 - Bular section esa MPI: Bu encoding format for number<32 bytes> - Ed25519 public key content Ko'rib turdangingizdek bu yerda juda tushunarsiz infolar ko'p, MPI nima ? OID nima va nega kerak?
Agar RFC ga mos qilmasangiz unda siz qilgan narsa sizni muhitdan tashqarida ishlamaydi. Masalan publickey manashu normalarga mos kelmasa uni boshqa pgp key bilan ishlaydigan dasturlar masalan
gnugpg tushunmaydi.Bu faqat rfc haqida edi. Endi texnik tomondan qaraymiz.
Masalan siz foydalanadigan tilda bularni qilsangiz qanday ishlaydi ?
Bu umumiy manoda yani tezlikdan tortib xavfsizlikgacha. Mani holatimda nativ haskellda yetarlicha tez ishlayabti key generation ammo xavfizlik qanday bilmayman.
Ammo encyption/decryption unday emas yetarlicha sekin ishlaydi )) Streamingsiz holatda 11-12minutes for ~50mb file encryption.
Streaming bilan ~3s Ammo buyoqda ham gambling qilganman yani bazi parametrlarni o'zgartirib ko'rdim va chunklarni 32kb dan oldim.
Aytishingiz mumkin 3s norm. Ha norm bo'lishi mumkin ammo rfcga mos degani muammo hal bo'ldi degani emas. Yani man buni qanday test qilishni bilmayman. Ishlayabtimi ? Ha ishlayabti )) Ha bazi componentlarni test qila olarman va biroz hotirjam bo'larman aytaylik SHA1 o'rniga SHA-512 ishlatdim. RFC bo'yicha hamma narsaga mos keladi.
Ammo asosiy savol ochiqligicha qolaveradi. Yani qanchalik xavfsiz va qanchalik tog'ri ?
Manashu yerda yo'l ikkiga ajralyabti.
1. For fun.
2. Professional.
Man professional kriptogrof emasman. Shunchaki RFC dagi aytilgan gaplar bo'yicha bazi liblar bilan expirement qilgan odaman holos. Ha dasturlashni bilaman ammo specialis emasman bu domainda. Ha bu narsani qandaydir darajada qildim, albatta full emas rfc bir qismi holos. Ammo prikol shundaki bu narsaga garantiya berolmayman.
Agar parser yozsam eng kamida visual bilishim mumkin va input/output ni test qila olaman. Ammo kriptografiyada doyim ham unday emas ekan. Yani biror narsa xato ekanini qanday isbotlashni ham bilmayman ammo tog'ri emas deb o'tiraverishim mumkin.
Ha albatta study qilish mumkin, bu borada doyim tolerantman. Ammo bunga sarflanadigan resurs, vaqt... Aynan bunaqa mavzularda tajribaga ega odamlardan feedback olish.
Shunda ham hamma narsani to'liq 0 dan emas balki uje tayyor librarylarni ishlatgan holatda qildim.
Ushbu expirement quyidagi hulosalarga olib keldi.
1. Bazi narsalarda shunchaki havaskor bo'lish ham unchalik oson emas. Masalan kriptografiya.
2. Nimadirni high levelda tushungan bilan uni implement qilish o'rtasida juda katta farq bor. Tushungan odam faqat o'zini tushunaman deb o'ylaydi ko'p holda aslida unaqa bo'lmaydi....
3. Detaillarga kirganda sizdagi tajriba va bilim aniq ko'rinadi. Masalan bit manipulationdan tajribam juda kamligi sabab doyim adashtirib o'tirdim kerakli combinatorlarni tiplarda juda ko'p adashdim bazi joylarda unsignet integer kerak bo'lsa man signed bazi joylarda esa bytestring o'rniga unsignet integer va ularni ortiqcha convertatsiyalari. Nu baxtimga haskellda kriptografiyaga aloqador juda ko'p source bor.
Bu narsa man uchun shunchalik katta puzzle bo'ldiki xatto nimani qayerdan ham boshlashni bilmagan edim. Boshida shunchaki
Ammo muammoni hal etishga ham compramise topa oldim. Yani 2ta source of truth bu yerda manga kerkali encryption/decryption algorithmlar uje tayyor testdan ham o'tgan:
https://github.com/simplex-chat/simplexmq
https://github.com/fission-codes/fission
www.rfc-editor.org
RFC 9580: OpenPGP
This document specifies the message formats used in OpenPGP.
OpenPGP provides encryption with public key or symmetric cryptographic algorithms, digital signatures, compression, and key management.
This document is maintained in order to publish all…
OpenPGP provides encryption with public key or symmetric cryptographic algorithms, digital signatures, compression, and key management.
This document is maintained in order to publish all…
java 21+ silani ko'rsataymi ?
sealed interface PortResult permits Ok, Missing, NotNumeric, OutOfRange {}
record Ok(int port) implements PortResult {}
record Missing() implements PortResult {}
record NotNumeric(String str) implements PortResult {}
record OutOfRange(int value) implements PortResult {}
PortResult parsePort(String str) {
if (str.isEmpty()) return new Missing();
int port;
try {
port = Integer.parseInt(str);
} catch (NumberFormatException e) {
return new NotNumeric(str);
}
if (port < 1 || port > 65535) return new OutOfRange(port);
return new Ok(port);
}👏6😱3
Programming ∀
java 21+ silani ko'rsataymi ? sealed interface PortResult permits Ok, Missing, NotNumeric, OutOfRange {} record Ok(int port) implements PortResult {} record Missing() implements PortResult {} record NotNumeric(String str) implements…
Oma barbir noise ko’pda. Shu narsa scalada chiroyli bo’ladi. Haskellda esa burutal bo’ladi. Rustda ham qilsa bo’ladi :)
Qilib ko’rilar.
Qilib ko’rilar.
Bizdagi sofware productlar pizdets borku. Bittasi oddiy hide balanceni eplolmagan bo'lsa boshqasiga shunchaki adashib kirib qo'yasangiz sizga call qilishadi. 1Fitni aytyabman.
Hullas odat qilib oldim har kuni kamida 3-4 marotaba 1Fitga kiraman va manga tel qilishadi. Ammo callgaga javob bermayman.
Ko'ramiz qachongacha cho'zilar ekan. Adashmasam uje 1 hafta bo'lyabti.
Hullas odat qilib oldim har kuni kamida 3-4 marotaba 1Fitga kiraman va manga tel qilishadi. Ammo callgaga javob bermayman.
Ko'ramiz qachongacha cho'zilar ekan. Adashmasam uje 1 hafta bo'lyabti.
😁14
Nu classic hamma AIga salkam sig'inyotgan davrda. Bunaqa mantiqsizliklarga o'rganib qolamiz.
Nu sizni datani leak qilishlari yoki qo'rqmasdan sotishlari maylikuya endi o'zingizga kerakli appni ham ishlatolmaysizda chunki qayerdandir spawn bo'lgan qo'ylar tomonidan vapshe mantiqsiz interfeyslar ham qilinadi.
Shu "raqamlashgan" dunyodan vos kechib tog'u toshlarga ketishga yaqin qolyabti shekilli. Manimcha man robotlar inqilobidan oldin survoraman bunaqa mantiqsizliklardan kegin.
Nu sizni datani leak qilishlari yoki qo'rqmasdan sotishlari maylikuya endi o'zingizga kerakli appni ham ishlatolmaysizda chunki qayerdandir spawn bo'lgan qo'ylar tomonidan vapshe mantiqsiz interfeyslar ham qilinadi.
Shu "raqamlashgan" dunyodan vos kechib tog'u toshlarga ketishga yaqin qolyabti shekilli. Manimcha man robotlar inqilobidan oldin survoraman bunaqa mantiqsizliklardan kegin.
😁3❤1
Shu joyda kimdir "rivojlangan texnalogiyalar..." deb qolsa bormi. Fonda esa HTMLdagi qanaqadir markuplar.
Mazzada.
Nu hotya shu ham yoqolib ketti manimcha chunki AI slop. AI musor generate qilishi yetmagandek odamlar musor generatorlar haqida musor generate qilishyabti.
Endi savol AI musor generate qilish bo'yicha odamlarni qachon replace qiladi ?
Mazzada.
Nu hotya shu ham yoqolib ketti manimcha chunki AI slop. AI musor generate qilishi yetmagandek odamlar musor generatorlar haqida musor generate qilishyabti.
Endi savol AI musor generate qilish bo'yicha odamlarni qachon replace qiladi ?
❤1
Programming ∀
OpenPGP bo'yicha qilingan expirementlar. Hamma narsa juda explicit qilingan misol keltiraman, aytaylik manga ed25519 key kerak va manashunday key generation qilmoqchiman. Ho'sh public va private keylar shakli qanday bo'ladi masalan publickey 0x04 - Bu…
Gpg key generation api max 7s olyotgan edi. 100msga tushurdim.
CVga refactor apis 70x faster perfomance deb yozsamikan ?
CVga refactor apis 70x faster perfomance deb yozsamikan ?
😁11💯2
Programming ∀
Gpg key generation api max 7s olyotgan edi. 100msga tushurdim. CVga refactor apis 70x faster perfomance deb yozsamikan ?
Alam qilyotgan joyi o’sha 7s ham man tomonimdan yozilganda.
Xozir CVlar haqida haqiqatni ochib qo’ydim bilmasdan.
Xozir CVlar haqida haqiqatni ochib qo’ydim bilmasdan.
😁13❤1
Bu safargi relizda bizni haskell code va errorlarni detect qiladigan app ham chiqadi. Ehhe o’ylagan sayin hursand bo’lyabman.
Yana ozgina qoldi birinchi relizgacha, yana ozgina qorayib ishlasak…
Yana ozgina qoldi birinchi relizgacha, yana ozgina qorayib ishlasak…
😁3
Kriptografiya haqiqiy job security ekan yaxshilab o’ylab qarasam. Ish topish qiyin topsangiz yoqotmaysiz.
Filesystemlar haqida hech o'ylab ko'rganmisiz masalan fs hierarchy.
/
/root
/home
/home/user
Algorithmchilar biladi bu narsa oddiy tree. Ammo sizga algorithmlar ham yordam berolmaydi bazi caselarda.
Masalan oddiy edge case bor.
Ho'sh siz qilyotgan structure, algorithmlar qnachalik tog'ri ekanini qanday tekshirish mumkin ?
Testlar ?
Xop biz qilgan fs treedagi barcha caselarni cover qilib ko'ringchi.
Manda boshqa ideya bor, agar testlarni aqli yetmaydigan bo'lsa demak boshqa narsa qilish mumkin.
Specifications
Hullas ideya bunday biz oldin spesifikatsiya yozamiz. Yani tizimni invariantlari va cheklovlarini tariflaymiz va qandaydir tool yani aynan shu specni check qiladigan tool barcha holatlarni analiz qilib biz qilgan modeldagi muammolarni ko'rsatadi.
Masalan Alloy6
Endi buni tushunishga xarakat qilamiz. Undan oldin keling specni mantiqiy darajada o'ylab olaylik biz oddiy directory uchun model qilamiz.
1. FSObject - Bu file yoki directory bo'lishi mumkin xozir bizni holatda faqat directory. Ammo FS objectda rule bor. Ko'pi bilan bitta parent dir. Mantiqiy jixatdan bitta directoryda 2ta parent bo'lmaydiku ahir ))
2. Root - eng top leveldagi directory
Mana bizda qandaydir objectlar va ularga nisbatan mantiqiy qoidalar paydo bo'ldi. Endi yana bir mantiqiy qismi qoldi. Ammo buni biz fakt deymiz. Bu qoida emas yani talab emas bu aniq fakt!
Fakt quyidagicha: Hech bir directory o'zining ajdodi bo'la olmaydi
Etibor qilgan bo'lsangiz biz mantiqga asoslangan spesifikatsiya yozdik. Alloy6 esa manashu specni o'zi tekshiradi va bizni mantiqdagi xatoliklarni ko'rsatishi mumkin.
/
/root
/home
/home/user
Algorithmchilar biladi bu narsa oddiy tree. Ammo sizga algorithmlar ham yordam berolmaydi bazi caselarda.
Masalan oddiy edge case bor.
/ ni parenti yo'q.Ho'sh siz qilyotgan structure, algorithmlar qnachalik tog'ri ekanini qanday tekshirish mumkin ?
Testlar ?
Xop biz qilgan fs treedagi barcha caselarni cover qilib ko'ringchi.
Manda boshqa ideya bor, agar testlarni aqli yetmaydigan bo'lsa demak boshqa narsa qilish mumkin.
Specifications
Hullas ideya bunday biz oldin spesifikatsiya yozamiz. Yani tizimni invariantlari va cheklovlarini tariflaymiz va qandaydir tool yani aynan shu specni check qiladigan tool barcha holatlarni analiz qilib biz qilgan modeldagi muammolarni ko'rsatadi.
Masalan Alloy6
sig Dir extends FSObject {}
sig File extends FSObject {}
abstract sig FSObject {
parent: lone Dir
}
sig Root extends Dir {} {
no parent
}
fact NoCycle {
no d: Dir | d in d.^(~parent)
}Endi buni tushunishga xarakat qilamiz. Undan oldin keling specni mantiqiy darajada o'ylab olaylik biz oddiy directory uchun model qilamiz.
1. FSObject - Bu file yoki directory bo'lishi mumkin xozir bizni holatda faqat directory. Ammo FS objectda rule bor. Ko'pi bilan bitta parent dir. Mantiqiy jixatdan bitta directoryda 2ta parent bo'lmaydiku ahir ))
2. Root - eng top leveldagi directory
/ Bu yerda yana rule yani uning parenti yo'q.Mana bizda qandaydir objectlar va ularga nisbatan mantiqiy qoidalar paydo bo'ldi. Endi yana bir mantiqiy qismi qoldi. Ammo buni biz fakt deymiz. Bu qoida emas yani talab emas bu aniq fakt!
Fakt quyidagicha: Hech bir directory o'zining ajdodi bo'la olmaydi
Etibor qilgan bo'lsangiz biz mantiqga asoslangan spesifikatsiya yozdik. Alloy6 esa manashu specni o'zi tekshiradi va bizni mantiqdagi xatoliklarni ko'rsatishi mumkin.
🔥2
Programming ∀
Filesystemlar haqida hech o'ylab ko'rganmisiz masalan fs hierarchy. / /root /home /home/user Algorithmchilar biladi bu narsa oddiy tree. Ammo sizga algorithmlar ham yordam berolmaydi bazi caselarda. Masalan oddiy edge case bor. / ni parenti yo'q. Ho'sh…
Speclarni kattaroq masshtabda ko’rsatib bersam balki ko’pchilikga tushunarli bo’lar.
Bugun yaxshi ideya berishgan edi. Permission control engine haqida.
Yani kimga qanday permission bor shularni check qiladigan engine. Uyoqga rule yozasiz va rulelar bo’yicha check qilsa bo’ladi kimni nimaga accessi bor. Masalan amazon cedar degan tilni va bunaqa servisni qilgan: https://docs.aws.amazon.com/verifiedpermissions/latest/userguide/what-is-avp.html
Manashuni minimal versiyasini o’ylayabman qandaydir DSL bilan.
Bugun yaxshi ideya berishgan edi. Permission control engine haqida.
Yani kimga qanday permission bor shularni check qiladigan engine. Uyoqga rule yozasiz va rulelar bo’yicha check qilsa bo’ladi kimni nimaga accessi bor. Masalan amazon cedar degan tilni va bunaqa servisni qilgan: https://docs.aws.amazon.com/verifiedpermissions/latest/userguide/what-is-avp.html
Manashuni minimal versiyasini o’ylayabman qandaydir DSL bilan.
Amazon
What is Amazon Verified Permissions? - Amazon Verified Permissions
Learn about Amazon Verified Permissions, a scalable, fine-grained permissions management and authorization service for custom applications.
🔥1
SQLite tomonidan db aynan qanday componentlardan tashkil topgani va qanday ishlashi haqida qisqacha yozilgan ekan. Kimgadir qiziq bo’lsa o’qishni va chuquroq kiromoqchi bo’lsa db engine bilan yozib ko’rishni tavsiya etaman.
Ancha oldin fs integrated Btree va MergeTree qilib ko’rgan edim. Keginchalik bu narsa juda katta foyda berdi yani systemd journal bilan ishlayotganimda. Ko’pchilik DB ishlatishni biladi ammo juda kam odam DBlar ichkarida qanday ishlashi haqida qiziqgan bo’lsa kerak. Qiziqgan bo’lsa ham shu classic WAL, Vacum yana birbalolar.
Hullas oshxonada pishirib ko’ring qiziqroq bo’ladi hayot.
https://sqlite.org/arch.html
Ancha oldin fs integrated Btree va MergeTree qilib ko’rgan edim. Keginchalik bu narsa juda katta foyda berdi yani systemd journal bilan ishlayotganimda. Ko’pchilik DB ishlatishni biladi ammo juda kam odam DBlar ichkarida qanday ishlashi haqida qiziqgan bo’lsa kerak. Qiziqgan bo’lsa ham shu classic WAL, Vacum yana birbalolar.
Hullas oshxonada pishirib ko’ring qiziqroq bo’ladi hayot.
https://sqlite.org/arch.html
🔥5👌3
Github shunchalik jonimga tegdiki aynan repolarni classify qilib mirror qilishni jiddiy o'ylay boshladim.
Ertalab ishlamagan edi, boshqa narsaga chalg'ib ketdim mayli deb. Xozir kompga o'tirsam yana shu axvol.
Kuniga eng kamida 10-15 requestlarim fail bo'ladi. Pull request emas page load yoki chala yokida osilib qoladi.
Ertalab ishlamagan edi, boshqa narsaga chalg'ib ketdim mayli deb. Xozir kompga o'tirsam yana shu axvol.
Kuniga eng kamida 10-15 requestlarim fail bo'ladi. Pull request emas page load yoki chala yokida osilib qoladi.
Bir qiziq steriotip bor.
Toshmat aytadi, X tilni o'rgansamikan qanday tavsiya berasiz ?
Ko'p beriladigan javob: Ko'p sakrama bittasini o'rgan!
Yaqingacha o'zim ham shunday javob berganman. Ammo fikrim o'zgara boshladi.
Masalan siz biror tilda qandaydir projectlar yoza olayabsizmi ? Uje production qilyabsizmi ?
Unda yangi tilni o'rganish makesense. Ammo birnecha nuaslarni hisobga olish kerak.
1. Maqsad. Shunchaki qiziq deyish doyim ham yaxshilikga olib bormaydi, biroz qiynalsangiz tashlab qo'yasiz. O'zimda ham shunday. Shu sababli aniqroq maqsad qo'yish kerak, masalan siz falon tilda aynan nimadir qanaqa qilinishini o'rganmoqchidirsiz. Aytaylik rustda error handling. Yoki boshqa tillarda Error handlingni o'rganyabsiz va rustdan boshladingiz.
2. Code yozish kerak. Hullas 40ta maqola o'qiysizmi video dars, conference ko'rasizmi foydasiz agar code yozmasangiz. Buning sababi siz code yozganda o'zingiz detailed design qilasiz. Shunda siz biror darslikda ko'rmaydigan holatlarga duch kelishingiz mumkin aytaylik
Kuzatuvchilar orasida qancha odam javada yozadi bilmayman. Ammo hamma ham manabu narsani bilmasligi aniq: https://t.me/programming_everyone/4186
Buning sababi esa comfort zone xisoblanadi. Siz falon tilda nima qanday qilinishini bilib olgansiz va siz uchun ananaviy uslubga aylanib qolgan. Endi bu uslubni o'zgartirishni istamaysiz.
3. Demak agar siz yangi til o'rganishni istasangiz eng muhim narsalardan biri bu sizni comfort zonedan tashqariga olib chiqish. Agar siz hamma joyda panic, va throw qilib tashlayotgan bo'lsangiz yangi til esa bunday qilishga bermasa siz xatoliklar bilan ishlashda yangicha qarashlarga ega bo'lasiz.
Yangi til o'rganib eski ish qilish - Masalan siz Javada backend yozasiz va Haskell o'rganyabsiz. Agar haskellda ham backend, crud yozaman desangiz unda biroz zerkib qolishingiz mumkin. Shu sababli boshqa muammoni hal etishga xarakat qilib ko'rish kerak. Masalan Haskellda sodda interpreter yozib ko'rarsiz.
Yangi til, yangi domain sizdagi dunyoqarashni va tajribani yanada oshiradi. Bu ham yana boshqa prismdan ko'rish imkonini beradi.
Hulosa: Hohish, motivation bo'lsa maqsadli xarakat yaxshi. Ammo bu narsaga hamma narsa kerak degan perespektivadan qarash kerak emas. Shunchaki qotib qolmaslik uchun harakat qilish ham yetarli bazida. Shunchaki etibor qilish kerak nimadir processdan qanday natija bo'lishiga. Agar maqsad process bo'lsa unda natija bo'lmaydi. Agar sizda natija yangi dasturlash tilini o'rganish bo'lsa bunga erishishingiz imkoni past deb o'ylayman. Agar sizda natija siz uchun yangi dasturlash tilida qandaydir dastur qurish bo'lsa unda buning foydasi bo'lishi mumkin.
Toshmat aytadi, X tilni o'rgansamikan qanday tavsiya berasiz ?
Ko'p beriladigan javob: Ko'p sakrama bittasini o'rgan!
Yaqingacha o'zim ham shunday javob berganman. Ammo fikrim o'zgara boshladi.
Masalan siz biror tilda qandaydir projectlar yoza olayabsizmi ? Uje production qilyabsizmi ?
Unda yangi tilni o'rganish makesense. Ammo birnecha nuaslarni hisobga olish kerak.
1. Maqsad. Shunchaki qiziq deyish doyim ham yaxshilikga olib bormaydi, biroz qiynalsangiz tashlab qo'yasiz. O'zimda ham shunday. Shu sababli aniqroq maqsad qo'yish kerak, masalan siz falon tilda aynan nimadir qanaqa qilinishini o'rganmoqchidirsiz. Aytaylik rustda error handling. Yoki boshqa tillarda Error handlingni o'rganyabsiz va rustdan boshladingiz.
2. Code yozish kerak. Hullas 40ta maqola o'qiysizmi video dars, conference ko'rasizmi foydasiz agar code yozmasangiz. Buning sababi siz code yozganda o'zingiz detailed design qilasiz. Shunda siz biror darslikda ko'rmaydigan holatlarga duch kelishingiz mumkin aytaylik
Result<Result<T>> boshida match qilib yuraverarsiz, ammo savol paydo bo'lishi mumkin balki eng boshidan bunaqa narsaga olib kelmasmiz ? Hullas code yozish oqibatida tajriba ham olasiz va eng muhim qismi shu.Kuzatuvchilar orasida qancha odam javada yozadi bilmayman. Ammo hamma ham manabu narsani bilmasligi aniq: https://t.me/programming_everyone/4186
Buning sababi esa comfort zone xisoblanadi. Siz falon tilda nima qanday qilinishini bilib olgansiz va siz uchun ananaviy uslubga aylanib qolgan. Endi bu uslubni o'zgartirishni istamaysiz.
3. Demak agar siz yangi til o'rganishni istasangiz eng muhim narsalardan biri bu sizni comfort zonedan tashqariga olib chiqish. Agar siz hamma joyda panic, va throw qilib tashlayotgan bo'lsangiz yangi til esa bunday qilishga bermasa siz xatoliklar bilan ishlashda yangicha qarashlarga ega bo'lasiz.
Yangi til o'rganib eski ish qilish - Masalan siz Javada backend yozasiz va Haskell o'rganyabsiz. Agar haskellda ham backend, crud yozaman desangiz unda biroz zerkib qolishingiz mumkin. Shu sababli boshqa muammoni hal etishga xarakat qilib ko'rish kerak. Masalan Haskellda sodda interpreter yozib ko'rarsiz.
Yangi til, yangi domain sizdagi dunyoqarashni va tajribani yanada oshiradi. Bu ham yana boshqa prismdan ko'rish imkonini beradi.
Hulosa: Hohish, motivation bo'lsa maqsadli xarakat yaxshi. Ammo bu narsaga hamma narsa kerak degan perespektivadan qarash kerak emas. Shunchaki qotib qolmaslik uchun harakat qilish ham yetarli bazida. Shunchaki etibor qilish kerak nimadir processdan qanday natija bo'lishiga. Agar maqsad process bo'lsa unda natija bo'lmaydi. Agar sizda natija yangi dasturlash tilini o'rganish bo'lsa bunga erishishingiz imkoni past deb o'ylayman. Agar sizda natija siz uchun yangi dasturlash tilida qandaydir dastur qurish bo'lsa unda buning foydasi bo'lishi mumkin.
🔥6
Misol uchun xozir Flix tilini o'rganyabman.
Maqsad nima ?
Maqsadim bu tilda production qilish emas. Asosiy sabab bu effect systemlar haqida o'rganish. Flix effect sistemalar tadbiq qilingan juda yaxshi tillardan biri xisoblanadi. Juda ko'p joyda effectlar bor lib ko'rinishida yoki til ichiga qo'shvorilgan. Flix misolida esa bu narsalar ancha osonlashtirilgan userga. Masalan effect capabilites bor bu narsa turli joylarda cheklovlar qilishga juda ham foydali. Undan tashqari monadlarni juda ham chiroyli moslashtriilgan Scala + Haskell bo'lib ko'rinadi ko'zimga. Yani scaladagi for comperhensions + haskells do notation. Bu narsa juda intuitiv syntaxga sabab.
Sodda aytganda effect sistemalarni sinab ko'rish, tushunish uchun yaxshi start point sifatida filix boshladim. Xozircha bazi oddiy primitiv samplelar yozdim endi sodda log rotation daemon qilyabman. Yani timestamp bo'yicha loglarni qarab chiqadi va eskilarini truncate qiladi.
Hullas maqsad effect sistemalar bilan yaqindan tanishuv, natija flixda log rotator. Bu narsa gitga chiqishiyam shartmas, bu narsaga notes ham kerakmas. Bu narsani aynan bugun yakunlashim ham shart emas. Shunchaki hammasi step by step ketaveradi. Manga Flix da fluend bo'lish ham qiziq emas.
Maqsad nima ?
Maqsadim bu tilda production qilish emas. Asosiy sabab bu effect systemlar haqida o'rganish. Flix effect sistemalar tadbiq qilingan juda yaxshi tillardan biri xisoblanadi. Juda ko'p joyda effectlar bor lib ko'rinishida yoki til ichiga qo'shvorilgan. Flix misolida esa bu narsalar ancha osonlashtirilgan userga. Masalan effect capabilites bor bu narsa turli joylarda cheklovlar qilishga juda ham foydali. Undan tashqari monadlarni juda ham chiroyli moslashtriilgan Scala + Haskell bo'lib ko'rinadi ko'zimga. Yani scaladagi for comperhensions + haskells do notation. Bu narsa juda intuitiv syntaxga sabab.
Sodda aytganda effect sistemalarni sinab ko'rish, tushunish uchun yaxshi start point sifatida filix boshladim. Xozircha bazi oddiy primitiv samplelar yozdim endi sodda log rotation daemon qilyabman. Yani timestamp bo'yicha loglarni qarab chiqadi va eskilarini truncate qiladi.
Hullas maqsad effect sistemalar bilan yaqindan tanishuv, natija flixda log rotator. Bu narsa gitga chiqishiyam shartmas, bu narsaga notes ham kerakmas. Bu narsani aynan bugun yakunlashim ham shart emas. Shunchaki hammasi step by step ketaveradi. Manga Flix da fluend bo'lish ham qiziq emas.