Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Vít Šesták (v6ak)

Stran: 1 ... 6 7 [8] 9 10 ... 32
106
Odkladiště / Re:Škálování a spotřeba Bitcoinu
« kdy: 17. 11. 2022, 18:40:08 »
Ad 1.449kWh: Tam IMHO nezahrnujete LIghtning transakce, které s tím taky úzce souvisejí. Ve výsledku se za jednou transakcí na blockchainu může skrývat hromada malých transakcí.

Ad Lightning Network: To se Vám může nelíbit jak chce, ale pokud budeme srovnávat s reálnými alternativami (a ne s hypotetickým ideálním řešením, o kterém nevíme, jak to udělat), můžeme to srovnávat s jinými kryptoměnami, čistým BTC (L1), nebo třeba fiatem. Ano, bylo by skvělé mít systém o bezpečnosti BTC, který by tuto bezpečnost zvládl zajistit pro bambilion transakcí za sekundu. To tu nemáme, takže mi Vaše námitky trochu zavání Nirvana fallacy. Ale možná jsem to jen blbě pochopil.

Ad ekologie: To je už Xkrát rozebrané. Stručně: vyplatí se těžit za dostatečně levnou elektřinu. To bude typicky přebytečná elektřina, pro kterou není lepší využití.

107
Odkladiště / Re:Škálování a spotřeba Bitcoinu
« kdy: 17. 11. 2022, 08:37:37 »
Zapisovat rovnou na chain je drahé z principu věci, protože ty informace pak drží kdekdo. Existují měny, které to řeší obrovskými bloky (např. Solana), ale už jen kvůli tomu je extrémně drahé provozovat vlastní node, a neudělá to kdekdo na Raspberry Pi + SSD. Za bezpečnost platíte poplatky a časem na transakcí.

Lightning je o něco blíž fiatu (v dobrém i špatném), ale není to stejné. Protistrana se vás může pokusit ošidit, nicméně stručně řečeno, není to tak jednoduché. Je do toho zapojených více stran, které mají finanční motivace to neudělat. Lightning sice není tak bezpečný jako on-chain transakce, ale pořád je bezpečnější než custodial peněženka.

On-chain si můžete představit jako střežený trezor*, Lightning jako peníze u sebe. Snaha platit za pizzu on-chain zhruba odpovídá tomu, že byste šel do toho trezoru vybrat nějaké zlato kvůli sebemenší transakci. Bude to trvat a asi stejně nakonec radši budete nosit trochu zlata/stříbra po kapsách. Na zaplacení pizzy to je mnohem praktičtější, a případná škoda způsobená ztrátou není až tak velká.

*) Ano, analogie není dokonalá, ale tady asi stačí.

108
Hardware / Re:Měření teploty v bytě
« kdy: 15. 11. 2022, 17:23:48 »
Na parapetu jsem senzory umisťoval tak, aby stínil rám okna, i pokud je otevřené. Nepodařilo se to napoprvé, ale nakonec se podařilo. Samozřejmě nepřímé světlo na to svítí.

Detekce osoby podle teploty – možná, ale jsem k tomu skeptický. Pokud na tom senzoru nebudete sedět.

Detekce otevření myčky podle vlhkoměru – na to IMHO nebudou potřeba desetiny, pokud ten sensor bude někde rozumně blízko.

109
Hardware / Re:Měření teploty v bytě
« kdy: 15. 11. 2022, 13:19:51 »
10 °C – záleží na okolnostech, m.j. svitu Slunce. Přes 5 °C rozdíl není problém, pokud měřím i na parapetu, když netopím.

110
Silně pochybuju, že by ten BT protokol řešil nějak buffering. Prostě se budou posílat stisknuté klávesy, a buffering bude spíše věc klávesnice.

Znaky na klávesy asi nebudou ASCII. USB klávesnice posílají čísla kláves, znaky si z toho dělá až přijímač (mj. podle nastaveného jazyka klávesnice). Na BT to asi nebude jinak.

Amplification factor nevím, nicméně pro jedno ťuknutí do klávesy budou potřeba zřejmě aspoň dva packety (stisk a uvolnění klávesy). Plus je otázka, jak se to bude chovat při současném stisku více kláves, ale nejspíš (pokud je nezvládnete stisknout/uvolnit dost přesně současně) to nebude mít vliv, protože se bude posílat nějaký packet pro každou změnu.

111
Hardware / Re:měření teploty v bytě
« kdy: 11. 11. 2022, 13:06:13 »
1. Pokud se bavíme o branách jakožto hotových řešeních, pak každý výrobce podporuje především svoji elektroniku. Tedy třeba Philips bude asi umět světla, vypínače, zásuvky a senzory pohybu, a v nějaké míře (např. bez aktualizací) i od jiných výrobců. Nečekal bych tam ale podporu senzorů teploty.

Philips hue bridge třeba podporuje teplotní a vlhkostní čidla od tuya nebo sonoff, neumí u nic ale už OTA a máš pravdu, že to je spíše laborování.
OK, nevím přesně hranici, co všechno to podporuje, ale IIRC to prostě nepodporuje 100 % ZigBee výrobků na 100 %.

2. Pokud jde o dongly, tak tam asi ano, ale pak je tu otázka software. Zigbee2mqtt má celkem dlouhý seznam podporovaných zařízení, na části z nich podporuje i aktualizace, ale není tam všechno.

Zigbee nebo z-wave si umí data přeposílat mezi zařízeními, funguje to relativně spolehlivě a jsem schopný se takhle doťukat třeba do sklepa, lepší je ale použít nějaký malý repeater do zásuvky.

To ano (až na ten repeater – v čem udělá lepší službu než třeba svítidlo?), jen mám pocit, že oba píšeme o něčem jiném.

112
Hardware / Re:měření teploty v bytě
« kdy: 11. 11. 2022, 09:34:53 »
Výhoda je právě vcelku rozumná cena oproti jiným technologiím, nezašpuntování wifiny (i když to teda jede na 2.4GHz)
Jakože kdyby to jelo na Wi-Fi, tak by ji to nějak zašpuntovalo? Já tu vidím výhodu spíše ve spotřebě

Taktéž je hezké, že fungují s bránou zařízení jakéhokoliv výrobce.
Edit: myslím to tak, že nemusím řešit jaké čidlo/výrobce pořídím, pokud to bude zigbee tak to pojede.
No, částečně:

1. Pokud se bavíme o branách jakožto hotových řešeních, pak každý výrobce podporuje především svoji elektroniku. Tedy třeba Philips bude asi umět světla, vypínače, zásuvky a senzory pohybu, a v nějaké míře (např. bez aktualizací) i od jiných výrobců. Nečekal bych tam ale podporu senzorů teploty.
2. Pokud jde o dongly, tak tam asi ano, ale pak je tu otázka software. Zigbee2mqtt má celkem dlouhý seznam podporovaných zařízení, na části z nich podporuje i aktualizace, ale není tam všechno.
ja mam proste jinou zkusenost. ve starem baraku dosah mizivy.
Dosah zařízení na baterku sám o sobě nebývá nějak velký, ale pokud k tomu máte zařízení napájená ze zásuvky (světla, zásuvky, …), typicky fungují jako repeatery.

kompatibilita nekdy strasny boj, dostat nektere cidla (z multi senzoru) to do HASS.
nektere gateway proste zarizeni nevidela vubec.
Před nákupem zkontroluju k kompatibilitu v supported devices u Zigbee2mqtt (případně podle toho, co používáte), to zabrání některým nepříjemným překvapením…

baterky vydrzi, ale za cenu, ze frekvence mereni je mala.u frekvence kterou chci, je to tak 1, opravdu mozna 2 mesice.
Frekvence měření ≠ frekvence odesílání. Mám senzory, které jsou schopny poslat změnu každých 10s, pokud je velká. Pokud se ale měřená hodnota moc nemění, klidně si počkají hodinu. Asi to bude i důvod, proč mi sensor v lednici žere baterku nejvíc. (Nabízí se i nízká teplota, ale prý pro Lithiové baterie by měla být OK.)

113
Distribuce / Re:Java na Raspbian Bullseye
« kdy: 10. 11. 2022, 09:33:51 »
Ta chyba vypadá dost divně. Skoro jako by obfuskátor* vygeneroval nějaký podivný bytecode**, a použité verzi Javy by se to nelíbilo. Někdy jsou prostě starší verze JVM tolerantnější k některým nedokonalostem bytecode.

Kromě použití starší verze Javy se nabízí použít novější verzi UBNT.

*) Podle názvu třídy to vypadá, že je nějaký obfuskátor použit. oOo
**) Z hlavy fakt nevím, jestli je tečka v názvu fieldu přípustná. Ve zdrojáiu Javy ne, ale to nic neříká o bytecode.

114
Vývoj / Re:Je Rust jazyk budoucnosti?
« kdy: 09. 11. 2022, 23:26:40 »
Nejde o to, že si ho musíš napsat ručně. To jsem se špatně vyjádřil. Jde o to, že ho musíš definovat. Tím, že použiješ serializátor (i kdyby automatický, ale prostě ho máš a použiješ), tak tím zabráníš kompilátoru v možnosti celej obrázek zahodit. Když použiješ parser, tak kompilátor najednou neví jak přesně ty hodnoty budou vypadat a nemůže to rovnou hodit do binárky. Věřím, že to je ti jasné.

Aha, takže IIUC jde o klasický trik, který se používá u benchmarků, aby kompilátor „nepodváděl". Výslednou hodnotu pošle někam do /dev/null, ale poslat ji musí, aby nešidil. Ale potom to není jen o nadefinování parseru/serializéru, ale i o jejich použití.


A já jsem se hlavně chytil toho tvého popisu uvažování. Když si vytvoříš strukturu trojice barev, a tu dáš do dvou rozměrného pole, tak ty tím Haskellu (nebo libovolnému jinému jazyku) neříkáš, že skutečně musí vytvořit strukturu tak jak jsi ji popsal. Vůbec ne. On si to klidně může přeložit jako proud bytů [červerná zelená modrá červená zelená modrá ...]. Nebo může udělat tři separátní proudy. Nebo ještě jinak. Nemusí tam být jedinej ukazatel. Prostě nemusí. Proč by měl?
S tím libovolným jiným jazykem to je asi trochu silné tvrzení, ale v případě Haskellu to asi platí.


Stejně jako když funkcionální jazyk má všechno immutable, tak to přeci taky neznamená, že v:
Kód: [Vybrat]
let xs = [1 .. 256]
let xs1 = filter f1 xs
let xs2 = map f2 xs1
budou tři 256prvkové pole.
To ne, zejména v Haskellu, který je líný.


Proč by mělo? Kompilátor samozřejmě rozumí tomu, že je to lazy, ale to přeci neznamená, že to lazy být musí. Jen se to tak musí jakože chovat navenek. To je to samé jako s tou immutabilitou. Samozřejmě, že kompilátor brutálně přepisuje tu samou paměť.
V případě laziness má kompilátor teoreticky celkem volné ruce, prakticky to není tak snadné. Aby to bylo korektní, musí se poprat se situacemi, kdy a. výpočet skončí chybou a b. výpočet neskončí nikdy, nebo by trval extrémně dlouho. V praxi to v kombinaci s neřešitelností problému zastavení bude znamenat, že budou existovat situace, kdy by šlo použít striktní vyhodnocení, ale kompilátor to nezjistí.

115
Vývoj / Re:Je Rust jazyk budoucnosti?
« kdy: 09. 11. 2022, 22:37:52 »
Pokud v Haskellu vytvoříš strukturu (jakkoliv sofistikovanou) obrázku, provedeš na ní libovolné transformace, a ten zdrojový obrázek tam vložíš ručně jako literál, tak ti to Haskell s velkou pravděpodobností zoptimalizuje tak brutálně, že to bude třeba dvakrát rychlejší jak kdybys to napsal v assembleru. Hádej proč :-)
Tak zrovna tady je to jen o tom, že něco lze spočítat již v době kompilace. V takovémto případě může kompilátor rovnou do binárky hodit výsledek…

Když tam vytvoříš (a použiješ) parser a serializer tak se kouzlem změní pravidla hry, a Haskell bude muset optimalizovat jinak.
Sorry, já to tam stále nevidím. Jsou to věci, které by si v nějaké podobě mohl kompilátor vygenerovat sám (a asi je jedno, v jakém pořadí se serializují jednotlivé složky barvy), pokud mu to pomůže. Takže moc nevidím, v čem pomůže, když to napíšu ručně.

Já se vážně obávám, že ty důvody jsou naprosto liché. Vychází z tvých bohatých zkušeností s GrallVM a JIT. Haskell nějaké laziness vůbec nezajímá, to zcela jistě problém nebude.
Haskell je lazy už v sémantice, takže to musí kompilátor zajímat…

Věřím, že s nějakým strict byste té optimalizace dosáhl. Jistý si s tím nejsem, ale věřil bych tomu.
Tohle se normálně v praxi používá. Ale je to ideově špatné :-) Takhle by se to dělat nemělo, i když to funguje.
Holt na konci dne je potřeba nějak splnit požadavky uživatelů, i když to někdy vyžaduje něco, čemu bychom se radši vyhnuli…

Jo, Haskell je vysokoúrovňový. A ve svých snech si představuju, že by to mohlo jít ještě extréměji. A někdo to chce, někdo ne. Věřím, že mi vyhrajem. :-)
Asi by to mohlo jít i extrémněji, a asi to bude v nějakých situacích přínosem. Obecně to ale IMHO není otázka toho, co vyhraje, ale co se hodí ve které situaci…

116
Vývoj / Re:Je Rust jazyk budoucnosti?
« kdy: 09. 11. 2022, 21:52:13 »
V nějaké míře ano (ostatně některé úpravy dělají i moderní CPU, takže se tomu nevyhnete ani assemblerem…), ale liší se míra.

117
Hardware / Re:Doporučte „chytré“ hlavice pro radiátor
« kdy: 09. 11. 2022, 21:15:34 »
U některých jsem viděl, že reportují nějaké číslo udávající stav ventilu. Takže některé asi mají i nějakou pozvolnou regulaci, asi budou mít různé (případně různě nastavené) algoritmy. A IMHO to dává i víc smysl – jakmile dosáhneme nějaké rozumné teploty, je z hlediska baterky úspornější nastavit si jednu pozici, kterou nemusíme moc měnit, než aby jednou za čas otevřel ventil naplno, aby ho za chvíli zase zavřel zpátky.

118
Vývoj / Re:Je Rust jazyk budoucnosti?
« kdy: 09. 11. 2022, 21:08:00 »
nevím, k čemu by Haskellu byl parser a serializer.
Protože ten je podstatný. Je to vstup a výstup pro ten typ. Takže cokoliv mezi tím může Haskell 1) optimalizovat. Pokud ho definuješ, rozvážeš mu ruce a pak už ho nějaký lazy vyhodnocování vůbec nezajímá.

Možná to bude moje neznalost Haskellu, ale pořád mi to nedává smysl. Pokud by to mělo mít nějaký sémantický význam, ze kterého lze tu optimalizaci odvodit, mohl by to být jen nějaký příznak, a kompilátor si může parser a serializer vygenerovat u takto jednoduché struktury sám.

To co popisuješ a jak argumentuješ je charakteristické pro JITované jazyky jako je Java a ve skutečnosti i C, kde kompilátor tomu kódu moc nerozumí. V Javě pak za běhu odvozuje charekter dat. V Haskellu má mnohem víc informací, a mnohem méně omezení.

No věřím, že v Haskellu má kompilátor některé věci jednodušší. Ale jsem dost skeptický, že bez dalšího zvládne udělat ten rastr efektivně, z důvodů, které jsem psal.

sníží paměťovou náročnost, ale zvýší časovou náročnost. Co pak preferujeme?
Tady jsem trochu zaváhal. Netuším, zda to lze nějak ovlivňovat. V praxi se skutečně v tomto případě používá porušování toho principu "nenavádět", a začne se do toho Haskellu kecat pomocí strict a unsafe. Jestli na to jiné nástroje mají nějaké lepší instrumenty už žel netuším.

Věřím, že s nějakým strict byste té optimalizace dosáhl. Jistý si s tím nejsem, ale věřil bych tomu.

1/ Čímž netvrdím, že to dělá; vůbec netvrdím, že se to tak skutečně provede. Ale vzhledem k tomu, jaké brutální optimalizace dokáže GCC s hloupoučkým C, tak proč by to Haskell nedal ještě líp.

Tím jsme u toho, proč jsem Haskell označil za extrémně vysokoúrovňový. Něco napíšete, a doufáte, že se s tím kompilátor dobře popere. Neříkám, že je tento přístup špatně, někdy se hodí nízkoúrovňovější přístup (např. řešíme side channels u kryptografie, tam optimalizace kompilátoru mohou i škodit…), někdy vysokoúrovňovější.

119
Vývoj / Re:Je Rust jazyk budoucnosti?
« kdy: 09. 11. 2022, 09:10:33 »
S ideou, že ve vyšším jazyku řeknu, co chci, a kompilátor to vymyslí co nejlépe, v zásadě souhlasím. A slyšel jsem nějaké anekdotické případy, kdy například GCC vyhrál nad ručně optimalizovaným assembly code, protože vývojáři kompilátoru byli zkušenější. Kompilátory (obzvlášť JIT) někdy dovedou zajímavé věci. Třeba OpenJDK a GraalVM dovedou z dynamické alokace udělat alokaci na stacku, pokud si odvodí, že proměnná má odpovídající životnost. Obávám se ale, že s podobným typem byste v Haskellu krutě pohořel. Rád bych viděl ten kompilátor, co něco takového dovede dobře zanalyzovat a optimalizovat. I pokud byste použil typ pro dvourozměrné pole (má Haskell něco takového?), potřeboval by kompilátor pár věcí, ke kterým jsem skeptický. Je tu pár úkolů, které by si vyžádaly hlubokou analýzu celého programu:

1. Zjistit, že je výhodnější striktní vyhodnocování. To není vůbec snadné. Co když uděláte nějakou náročnou operaci, ale nakonec z obrázku budete chtít jen malý výřez?
2. Vyřešit případné time/space tradeoffs. OK, možná striktní vyhodnocování sníží paměťovou náročnost, ale zvýší časovou náročnost. Co pak preferujeme?
3. Ujistit se, že striktní vyhodnocování je korektní, případně udělat plán B. Haskell má sémantiku líného vyhodnocování. Z hlediska chování to znamená, že mohu mít obrázek s vadným subpixelem (například v jeho výpočtu dělím nulou nebo nekonečný výpočet*), chyba se projeví, až ho budu číst a hlavně jenom pokud ho budu číst. To rozhodně není snadné analyzovat. Pokud si s tím kompilátor nemůže být jistý, potřebuje mít plán B (překopat datové struktury za běhu), což není sranda, a může to znamenat v podstatě náhlý zásek.
4. Následně se rozhodnout, že místo ukazatele na RGB bude výhodnější přímo samotná hodnota. To by teoreticky mohl kompilátor rozhodnout snadno, pokud ví o neměnnosti (v Haskellu OK), používá striktní vyhodnocování (vizte body výše) a může tam být jen jediný typ (žádná dědičnost, v Haskellu asi OK). Problém by trochu nastal v případě onoho plánu B, protože pak by musel překopat nikoli jeden pixel, ale rovnou celý obrázek.

Pokud byste nepoužil dvourozměrné pole, ale přímočaře [[RGB]], bylo by to pro kompilátor ještě složitější:

1. Ze samotného typu nevyplývá, že jde o obdélníkový obrázek. Ve skutečnosti může jít o obdélník s různě ustřiženým jedním (typicky pravým; záleží na interpretaci dat) okrajem, protože vnitřní seznamy mohou být různě dlouhé.
2. List je v Haskellu spojový seznam, se vším, co z toho plyne pro paměťovou náročnost a výkon. To není jen nějaký implementační detail. To Haskell vystavuje tím, že jednak můžete seznam rozdělit na head a tail, a jednak můžete k seznamu přidat nový head, a přitom zachovat původní seznam. Ano, teoreticky by se kompilátor mohl rozhodnout použít pole, čímž některé operace zlevní a jiné zdraží (jak z hlediska času, tak z hlediska paměti), ale opět není sranda toto analyzovat. To bych se ale opakoval.

BTW, nevím, k čemu by Haskellu byl parser a serializer. Typ RGB je v podstatě struktura tří 1B integerů, k tomu lze serializaci a deserializaci vygenerovat snadno automaticky.

*) Nabízí se tu argumentovat problémem zastavení. Jeho neřešitelnost nám nicméně neříká, že to nedovedeme vyřešit nikdy. Můžeme mít algoritmus, který bude říkat ano/ne/nevím, přičemž v tom „nevím“ budou jak případy, které se zastaví, tak případy, které se nezastaví. Každopádně pokud u aspoň jednoho výpočtu pixelu nevíme, kompilátor potřebuje onen plán B.

120
Vývoj / Re:Je Rust jazyk budoucnosti?
« kdy: 09. 11. 2022, 00:36:34 »
Většinou to vědět nepotřebuju, ale někdy se to hodí. Třeba když řeším paměťovou náročnost. Extrémní příklad může být s rastrovým obrázkem. Nejpřirozeněji bych ho vyjádřil jako dvojrozměrné pole objektů typu třeba RGB. (Vím, RGB není jediná možnost, ale dejme tomu, že nám to bude stačit ) První problém je dvourozměrné pole – spousta jazyků místo toho nabídne pole polí, které je mocnější, ale méně efektivní. Druhý problém je v některých jazycích ten objekt typu RGB. Já bych potřeboval dejme tomu 3 byty na objekt (záleží na barevné hloubce, ale nekomplikujme to). V Javě se k tomu přidává už celkem slušný overhead – už jenom reference na ten objekt zabere víc, nemluvě o tom, že objekt potřebuje hlavičku jednak kvůli popisu třídy (VMT apod.) a jednak kvůli zamykání (každý objekt je i zámek). Z hlavy nereknu, kolik přesně obrázek zabere, ale zjevně to bude několikanásobně vícz než je účelné. A v Pythonu to bude ještě horší, každý objekt je i dictionary…

Mimochodem, podobné případy přinášejí zajímavý paradox – ve vyšším jazyce bych pravděpodobně použil víc low-level přístup (jako obrovské pole bytů), abych se vyhnul tomu overheadu. V low-level jazyce s vhodnou abstrakcí to není tolik potřeba

Stran: 1 ... 6 7 [8] 9 10 ... 32