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 - Filip Jirsák

Stran: 1 ... 263 264 [265] 266 267 ... 375
3961
nejsem programator slo by vysvetlit jestli teda s tim na mac os x a windows muzu neco udelat nebo ne a pripadne jak ?
Stručná odpověď pro vás je „ne“.

Podrobnější odpověď je – musel byste naprogramovat ty části J2ME knihovny, které nejsou v J2SE, a emulovat je pomocí prostředků dostupných v daném prostředí.

Jinak samozřejmě existují emulátory, ve kterých se J2ME aplikace vyvíjely a testovaly.

Ale hlavně nevím, k čemu by bylo dobré Operu Mini pro J2ME pouštět na deskopu.

3962
Na počítači máte JRE se standardní knihovnou J2SE. Opera mini je předpokládám J2ME aplikace, tj. musel byste použít standardní knihovnu pro J2ME. Ta je mnohem menší, než J2SE, ale má i některé věci navíc, které jsou specifické pro mobilní telefony – a ty na svém počítači nemáte.

3963
Windows a jiné systémy / Re:dotaz na hosts soubor v windows
« kdy: 06. 05. 2017, 20:57:56 »
k uplnemu ? zamezeni pristupu k dane ip adrese slouzi prikaz route (viz man route)
Ne, příkaz route neslouží k zamezení přístupu k dané IP adrese, ale k nastavení routovací tabulky. Přístup k nějaké IP adrese je možné zablokovat pomocí firewallu.

man route na Windows nefunguje. A pokud jste myslel Linux (i když otázka se ptá na Windows), tam zase nefunguje route. Takže man route by pomohlo jen na jiných unixových systémech.

3964
Windows a jiné systémy / Re:dotaz na hosts soubor v windows
« kdy: 06. 05. 2017, 18:06:57 »
Na internetu se nekomunikuje s doménami, ale s IP adresami. Doménové jméno se používá jenom jako lidsky čitelný název, který si počítač převede právě na IP adresu. Soubor hosts je nejstarší způsob převodu doménových názvů na IP adresy a systém ho obvykle používá přednostně – pokud tam doménové jméno najde, dál už se ho překládat nepokouší. Aplikace ale ani nemusí používat systémové funkce a může dotaz na DNS server poslat sama, pak na ní tenhle soubor nebude mít vliv.

Souborem hosts tedy určitě nelze zablokovat nějakou doménu, maximálně jím můžete upravit překlad daného doménového jména pro aplikace, které ten soubor využívají.

Blokovat komunikaci s nějakou doménou obecně ani nelze, protože komunikace se navazuje s IP adresou a vy nevíte, jestli aplikace tu IP adresu získala tím, že si předtím přeložila nějaké doménové jméno.

Blokovat komunikaci s určitým doménovým jménem by šlo u některých protokolů, kde je doménové jméno součástí dat přenášených protokolem. To bychom ale museli vědět, o co se vlastně snažíte. Řešením by také mohlo být použít SOCKS5 proxy a zakázat navazování spojení na IP adresy, povolit jen spojení na základě DNS názvu. Ale ne každá aplikace podporuje SOCKS5 proxy.

3965
Poslední vývoj chrome i firefoxu hodně šlapou na http a snaží se vnutit aspoň https.
Aha. To je pak těžké uhodnout, o čem vlastně píšete, protože HTTPS není v pravém smyslu protokol – je to HTTP přenášené TLS kanálem. Výběr, zda použijete šifrovanou nebo nešifrovanou variantu, pak závisí jenom na tom, zda potřebujete přenášená data šifrovat. Pokud máte zabezpečenou infrastrukturu, můžete použít pro komunikaci s backendem nešifrovaný kanál – ale zase pak nerozumím, na co se vlastně ptáte, protože jestli použijete pro komunikaci s backendem HTTP nebo HTTPS je vlastně jedno a je to akorát věc jednoduché změny konfigurace.

Protokol http má výhodu také v tom, že během vývoje mohu použít i prohlížeč na prezentaci výsledků backendu.
Jak kdy, musíte tím protokolem přenášet data, která je prohlížeč schopen zobrazit. A tady správně píšete o protokolu HTTP, nezáleží tedy na tom, zda použijete šifrovanou nebo nešifrovanou alternativu.

Stačí mi třeba mít webovou administraci na intranetu jen v http a už na mě bliká, že to je nezabezpečný a nedejbože abych tam měl okénko s heslem.
To ale nepíšete o komunikaci webserveru s backendem, ale o komunikace prohlížeče s webserverem. A tam jsou upozornění prohlížeče správná, protože prohlížeč nemůže vědět, že je to na intranetu, navíc to, že je něco na intranetu, vůbec neznamená, že je síťová komunikace bezpečná.

Multiplexing je vždy pomalejší než několik otevřených konekcí.
Proč? Navíc HTTP/2 vám nijak nebrání mít otevřených víc spojení.

Na backend nemá smysl už proto, že často padá jedna konekce na klienta, jelikož statické stránky obslouží sám webserver, na backend pak už padá tak jeden až dva requesty na stránku.
To s tím přece vůbec nesouvisí. Webserver může mít otevřené jedno nebo několik spojení s backendem, a přes tahle spojení posílat různé požadavky od různých klientů.

Na rychlých sítích je přenos dat menší problém, než jejich zpracování.
HTTP/2 je binární protokol, takže oproti HTTP/1.x je rychlejší i to zpracování.

Například šifrování
Šifrování vůbec nesouvisí s protokolem. I kdybyste měl protokol jenom s nešifrovanou variantou, vždycky ho můžete poslat šifrovaným kanálem, třeba VPN nebo SSH.

náklady na správu multiplexu mohou být mnohem dražší
Než náklady na správu více spojení? Mohou, a nebo také mohou být mnohem levnější…

co se týče hlaviček tak opět, jejich množství lezoucí mezi webserverem a backendem může být významě redukováno.
Což pořád nevylučuje možnost ten zbytek hlaviček komprimovat.

3966
Vývoj / Re:Jak se naucit slusne vyvijet v Jave
« kdy: 06. 05. 2017, 12:38:27 »
K tomu, abyste se učil slušně vyvíjet software, potřebujete především hodně vyvíjet software a umět se poučit ze svých i cizích chyb. Všechno ostatní (škola, knížky, mentoři, články) vám může pomoci, ale vlastní zkušenost to nenahradí.

3967
S nástupem Http/2.0 a snahou vytlačit HTTP z prohlížečů
Asi jste mylně informován. Nikdo se z prohlížečů nesnaží vytlačit HTTP, dokonce ani prohlížeče neimplementují žádnou náhradu, která by mohla HTTP vytlačit. HTTP je pro prohlížeče stále ten nejdůležitější protokol, některé prohlížeče vedle něj jako doplněk nabízejí třeba FTP.

jaký protokol používat na komunikaci mezi webserverem a nějakým pokročilým backendem
Nechápu, jak to souvisí s předchozí částí – i kdyby prohlížeče používaly jiný protokol, nic vás nenutí opouštět HTTP.

Nevidím důvod, proč bych na backendu měl používat http/2.0, už kvůli tomu, že nevyužiju ani multiplexing ani šifrování, ale spíš honím maximální rychlost při přenosu dat z backendu na webserver.
Zrovna multiplexing využijete ještě víc, než prohlížeče, protože jedním spojením přenesete mnohem víc požadavků, než jeden prohlížeč. Díky komprimaci hlaviček také můžete ušetřit objem přenášených dat. Nevidím žádný důvod, proč by přenos přes HTTP/2 byl pomalejší, než HTTP/1.1 – naopak má potenciál být rychlejší.

Co se používá v jiných firmách a projektech?
Například HTTP.

3968
Vývoj / Re:Java a C# - porovnání práce se Zip souborem
« kdy: 29. 04. 2017, 22:01:25 »
A co je podle pana Jirsáka toto:
http://www.vlkodlak.cz/noze/bojove
Nikde tam nevidím žádný nůž, který by byl propagován jako nůž speciálně určený pro vraždy.

Považuju za demagogii v diskusi o něčem nelegálním argumentovat přirovnáním k něčemu legálnímu. Proto jsem na tu demagogii upozornil a to přirovnání jsem upravil tak, aby se týkalo také něčeho nelegálního.

3969
Vývoj / Re:Java a C# - porovnání práce se Zip souborem
« kdy: 29. 04. 2017, 18:20:41 »
Nezlobte se, ale nemám o diskuzi podobného typu moc zájem, obzvlášť o víkendu :).
To je škoda. Nejsnazší způsob, jak může člověk zjistit, že dělá chybu, je ten, když ho na to někdo jiný upozorní. Když na to má přijít sám, trvá to mnohem déle. Nejsem si vědom toho, že bych v nějaké diskusi začal jednat nefér jinak, než jako reakci na nefér diskusi z druhé strany. Ale samozřejmě je možné, že se mýlím – pak bych to rád věděl. Nebo považujete za špatné i to oplácet druhému stejnou mincí?

3970
Vývoj / Re:Java a C# - porovnání práce se Zip souborem
« kdy: 29. 04. 2017, 15:17:43 »
Souhlasím, ale jak nám říkal jeden vyučující - musíte chápat i složitější věci, aby se vám zdály ty snadné skutečně snadné. Jak je vidět z průběhu tohoto tématu, někteří se ještě nedostali ani do této fáze. ;)
A nebo nevědět nic, pak se zdá snadné všechno :-)

3971
Vývoj / Re:Java a C# - porovnání práce se Zip souborem
« kdy: 29. 04. 2017, 14:16:54 »
Já tedy nevím, nechci nikomu brát iluze o snadnosti programování. Programováním se živím už 10 let, mám tento obor i vystudovaný. S přestávkami programuji od třinácti let, od dob osmibitů. Postupem doby si začínám říkat, že programovat v podstatě pořádně vůbec neumím (tj. vím že nic nevím). Existuje tam TOLIK záludností, jazyků a stylů programování a dost těžké teorie... Samozřejmě jde o to, co pro koho znamená umět programovat. Pro mě například to znamená vytvoření vlastního interpretru, rozumět pořádně paralelnímu programování atp.
Souhlasím, nemyslel jsem to tak, že je lehké naprogramovat cokoli. Chtěl jsem tím říct, že naprogramovat jednoduché věci není složité. Nejtěžší na tom je poznat, kdy nejde o jednoduchou věc :-)

3972
Vývoj / Re:Java a C# - porovnání práce se Zip souborem
« kdy: 29. 04. 2017, 13:31:38 »
Takže si to vezměme hezky popořádku. Stream je v Javě implementován dost blbě a nikdo se nad tím očividně řádně nezamyslel. Ve světě OOP mi opravdu označení pro Stream - tedy obecně proud něčeho - nepříjde vůbec nějak volné, ale naprosto jednoznačně se odkazující ke specifikaci, nad jakým typem dat to má vlastně proud má být. Viz Java 8 - Streamy.
Vezměte to popořádku. Nejprve získejte nějaké znalosti, a pak o tom něco pište. InputStream a OutpuStream jsou v Javě od verze 1.0, tedy od roku 1996. Stream API bylo přidáno do Javy ve verzi 8, tedy v roce 2014. Spletl jste se jenom o 18 let.

Takže takový příklad, který vám poslouží jako taková berlička, pane Jirsáku, abyste konečně vymanil z te nevědomosti a pochopil, že bufferování nehraje roli při rozhodování, zda-li něco je stream nebo není:
Kde jsem psal, že bufferování hraje roli při rozhodování, že je něco stream? Aha, nikde, to vy jenom neumíte číst. Zkusím vám to vysvětlit ještě jednou. Některé formáty dat jsou uspořádané tak, že k interpretaci dat, které jsou v proudu dat dříve, potřebujete informaci, která je v proudu dat až později. Pokud máte náhodný přístup ke všem datům, není to žádný problém – prostě si nejprve přečtete ten konec, zjistíte potřebné informace a na jejich základě pak přečtete začátek. Pokud ale ta data dostáváte od začátku do konce, tenhle postup použít nemůžete – když dostanete ta data na začátku, ještě nevíte, co s nimi máte dělat, musíte si je odložit někam stranou (do nějakého bufferu) a později se k nim vrátit.

Zkusím vám to uvést na takovém příkladu, jde jen o sčítání a odčítání malých čísel, to už jste snad ve škole bral. My jsme zvyklí používat infixovou notaci, kdy jsou tyto matematické operátory uvedené mezi operandy, třeba 5 + 3 - 7. Zkuste si, jak byste naprogramoval výpočet, kdybyste měl na vstupu stream operandů a operátorů zapsaných v tomhle pořadí (tedy byste měl stream 5, +, 3, -, 7). Dá se to udělat tak, že nemusíte nic bufferovat, pouze si budete pamatovat aktuální mezivýsledek a prováděnou operaci (což by se také dalo chápat jako buffer, ale nebudu vám to komplikovat).

Pro zápis matematických operací se dá ale použít také třeba postfixová notace, nebo-li reverzní polská notace (RPN). V té se zapisují nejprve operandy a teprve za nimi je operátor. Ten výše uvedený příklad můžete v RPN zapsal jako 5 3 7 - +6. (Ty dva zápisy nejsou ekvivalentní, tohle odpovídá v infixové notaci zápisu 5 + (3 - 7). Ale pro ulehčení jsem zvolil jen sčítání a odčítání, které mají stejnou prioritu, tudíž ani v infixové notaci nejsou závorky potřeba.) Opět máte na vstupu stream operandů a operátorů, tentokrát tedy 5, 3, 7, -, +. Dokážete naprogramovat výpočet jenom na základě toho streamu, aniž byste si musel bufferovat přicházející hodnoty, tj. ukládat si je do nějakého zásobníku?

Vám totiž nejde do hlavinky, že i input stream, který musí načíst nejprve celý vstupní stream, je rovněž stream.
Napsal jsem někde něco, z čeho by toto plynulo? Aha, nenapsal, to jenom vy neumíte číst. Napsal jsem, že aby bylo možné s tím zip archivem pracovat správně, musíte stejně celý ten stream přečíst a nabufferovat si ho, tj. zapsat někam, kde k němu budete mít přístup pro náhodné čtení – třeba do RAM nebo na disk.

A v tom je ten problém, který vy stále nechápete. Protože to bufferování může být operace velmi náročná na zdroje. Ano, nějaká knihovna to před vámi může skrýt, aby to mohli používat i takoví neumětelové, jako vy. Jenže to vám bude fungovat jen v jednoduchých případech. Když vám pak někdo pošle 100 GB zip („prosím vypal mi tenhle Blue-ray“) a ta vaše knihovna se ho pokusí celý načíst do paměti, nedopadne to moc slavně.

Takže ne, není pravda, co tvrdíte, že každá implementace ZipStreamu musí nutně na výstup posílat rovněž nevalidní soubory.
Což jsem opět nikde netvrdil, to jenom vy neumíte číst. Já jsem napsal, že pokud nemám přístup k datům zipu pro náhodné čtení (tj. mohu si kdykoli zvolit, kterou část zipu přečtu), ale mám k dispozici jenom proud bajtů, musím si ten proud bajtů odkládat někam, kde budu mít ten náhodný přístup – protože jedině tak dokážu zajistit, že ten příchozí zip archiv zpracuju správně.

Takto se to rozhodli udělat v Javě a je to samozřejmě špatně, protože to neuvedli v dokumentaci.
Jak už jsem psal, ta třída je velmi stará a dokumentace ještě pochází z doby, kdy programátoři rozuměli tomu, co dělají. Programátor, který zná formát zip archivu a přečte si tu dokumentaci, pochopí, jaká to má úskalí. Dneska už programují lidé jako vy, takže by v té dokumentaci mělo být uvedeno, ať se té třídě obloukem vyhnou lidé, kteří o formátu zip nic nevědí.

Dále, je-li v nějaké knihovně třída pro práci se zip archivy, pojmenujme ji teď lépe ZipArchive, očekává se od ní, že uživatelům umožní rozbalit soubor, který chtějí. Když nějaký uživatel bude používat tuto třídu ZipArchive, očekává, že bude správně fungovat, ne, že fungovat nebude.
Což je přesně to, co dělá třída java.util.zip.ZipFile. Nebo vy snad máte nějaký příklad, kdy funguje špatně?

Je takový problém, aby se v případě, že dochází paměť, začalo prostě bufferovat na disk?
Ano, je to problém třeba v případě, kdy nemáte k dispozici disk, na který můžete zapisovat. Nebo v případě, kdy na disku nemáte volné místo.

Nic jiného k zajištění správné funkce ani není možné
Ale je to možné. Víte, občas někdo přijde s takovou školní úlohou, že má vypsat názvy souborů v tom zipu. Proč by pak rozbaloval ty soubory na disk, když je vůbec nepotřebuje? Když vám pošlu po síti 100 GB zip s úkolem, že máte vypsat názvy souborů v něm obsažených, a vy máte aplikaci spuštěnou na bezdiskovém počítači se 4 GB RAM, je to bez problémů splnitelný úkol. Akorát to musí naprogramovat někdo, kdo aspoň trochu ví, o co jde.

takže proč vy vlastně tvrdíte, že je to problematické a že si to musí každý naimplementovat sám podle svých potřeb?
Protože o té problematice alespoň něco malilinko vím. Vám, který o tom nevíte vůbec nic, se to samozřejmě všechno zdá snadné. Jenom se to naučit a mohl byste to naimplementovat.

Pane Jirsáku, vemte si někdy taky dovolenou, oddechněte si, sportujte, nechoďte tolik na sluníčko a bude to zase fajn.
Mám pro vás špatnou zprávu. Pokud byste se někdy skutečně naučil alespoň základy programování, pochopíte, jak hloupé byly vaše komentáře v této diskusi. Teď to vědět nemůžete, protože když nevíte vůbec nic, nemáte ani znalosti na to, abyste pochopil, jak málo toho víte.

Já jsem tady mluvil o Streamech abstraktních, řekl jsem, že Java 8 Stream api tuto abstraktnost cti ale InputStream a Jirsák ji nectí. To je jedna věc.
Už jsem vám vysvětloval, že IO streamy v Javě tento název ctít nemohou, když vznikly asi tak 15 let před tímto názvem.

Druhá věc je, že nechci proudově zpracovávat formát, který proudem není, jen tvrdím, že je možné ho proudově zpracovat, ikdyž to znamená, že se musí nejprve celý načíst. To, že se musí celý načíst, neznamená, že to nemůže být proud.
Akorát když ten proud načtete do paměti s náhodným přístupem a pracujete pak s tou pamětí, nepracujete už s proudem dat, ale s pamětí s náhodným přístupem. Ten postup „načíst do paměti“ není možné provést vždy – proud je potenciálně nekonečný, a to se vám do paměti fakt nevejde.

Ale je to marné, je to marné, je to marné.
Není to marné. Naučili se to jiní před vámi, není důvod, proč byste se nenaučil programovat i vy. Není to těžké.

3973
Vývoj / Re:Java a C# - porovnání práce se Zip souborem
« kdy: 29. 04. 2017, 09:53:34 »
Nicméně v typickém případě se zip dělá sekvenčně a nemodifikuje, nebo ne?
Pravděpodobně ano. Nicméně vždycky je možnost, že ten zip někdo dodatečně upraví (dělal jsem to mnohokrát), taky je možné, že se někomu z důvodu snazší implementace hodí vytvořit ho „modifikovaný“ rovnou. A pak je tu samozřejmě možnost, že někdo vytvoří nějaký záškodnický plně validní zip záměrně.

Což je potřeba brát docela vážně, když uvážíte, že moderní souborové formáty kancelářských balíků (OpenDocument od OpenOffice.org a Office Open XML od Microsoftu) jsou zip archivy, zip archivy jsou třeba i binární balíčky Java programů. Takže když to rozbalíte špatně, můžete dostat jiný dokument nebo jiný program. Všechny zmíněné formáty umožňují dokument/balíček i podepsat, ale podepisuje se jen vnitřek zipu. Takže některým chybným implementacím rozbalení zipu (které by ignorovaly „hlavičku“ souboru) by bylo možné podstrčit dokumenty nebo balíčky, které by byly validním zipem, ta chybná implementace by je bez problémů rozbalila, seděly by všechny podpisy – akorát by tam bylo něco jiného, než kdybyste ten zip rozbalil správně.

3974
Vývoj / Re:Java a C# - porovnání práce se Zip souborem
« kdy: 29. 04. 2017, 09:41:29 »
Tam je totiž základní kravina v tom, že je tam vůbec nějaká třída umožňující procházet zip soubor implementovaná jako nějaký potomek InputStream, protože to má být spíše potomek Iterator. Toť věc první. Druhý problém, podstatně základnější, tam je v tom, že InputStream není napsán dostatečně abstraktně. Proto vůbec vznikla taková kravina, jako je FilteredInputStream.

InputStream by se totiž měl správně jmenovat ByteInputStream. Je to totiž, stejně jako v C#, proud nad typem byte. Správně, abstraktně implementovaná třída Stream, by měla být generická, s možnosti vybrat si, nad jakou jednotkou to stream vlastně je. Protože proud může být nad byte, nad soubory, nad ip pakety, nad tenisovými míčky nebo nad molekulami vody.
Názorná ukázka toho, že čím méně toho člověk ví, tím méně informací má o tom, co všechno neví – a má pak pocit, že rozumí skoro všemu. Vaše poučování o tom, jak by něco mělo být správně architektonicky navržené, je zábavné – když si uvědomíme, že neumíte naprogramovat triviální domácí úkol, a neumíte vlastně ani správně číst a psát. Navíc celý balíček java.util.zip byl do Javy přidán v JDK 1.1, která byla vydána před dvaceti lety – takže jdete trošku s křížkem po funuse.

Podstatně blíže abstraktnímu pojetí streamu je totiž v podstatě Iterator. To je správně abstraktně napsaný Stream.
To, že vy máte jakousi mlhavou představu, co by měl dělat váš stream, vůbec neznamená, že jsou ostatní povinni to slovo používat stejně. Java prostě na začátku zavedla pro proud bajtů označení „stream“, protože se to hodilo a slovo „stream“ v té době bylo ve světě programování volné.

Nikdo netvrdí, že něco, co je Stream nad zip souborem, musí procházet i smazané soubory,.
Netvrdím to ani já. Kdybyste si přečetl pořádně, co jsem napsal, dozvěděl byste se, že ZipInputStream, tak, jak je implementován v JRE, nutně prochází i smazané soubory nebo staré verze souborů. A že se tak nutně musí chovat každá implementace, která bude zip soubor načítat z proudu bajtů a nebude ho někde bufferovat. Plyne to z toho, jakou má zip formát strukturu – že „hlavička“ souboru s informacemi, kde co v souboru je, je uložená až na konci souboru.

Asi vám formát toho souboru připadá hloupý, protože abyste s tím souborem mohl rozumně pracovat, musíte mít k jeho obsahu náhodný přístup. Jenže ten souborový formát vznikl už v době pevných disků, které náhodný přístup umožňují – a tahle struktura formátu má tu obrovskou výhodu, že můžete ze zip souboru získat jeden soubor, aniž byste musel procházet vše, co je před ním. A zároveň to umožňuje vytvořit zip soubor na jediný průchod.

ValidZipInputStream by byl taky stream a vracel by klidně jen validní soubory podle té vaší zip složky.
Akorát že takový stream by si nutně musel někam bufferovat načítaná data. Což není nic, co by mělo být ve standardní knihovně, protože je to velmi implementačně závislé. Někdy budete vědět, že stačí bufferovat do RAM, někdy budete vědět, že je potřeba použít disk, někdy budete vědět, že můžete disků použít víc, někdy, že stačí bufferovat jen některé položky. To si můžete implementovat v nějaké knihovně, ale nemá to co dělat v nízkoúrovňové základní knihovně.

Na disku máte taky data fyzicky zapsány různě napřeskáčku a některé z nich jsou smazané, připadá vám však ale, že nad soubory pak fungují streamy nějak blbě?
Máte zmatek v základních objektech, o kterých se tu bavíme. Souborový systém odpovídá zip souboru, jednotlivé soubory na tom souborovém systému odpovídají jednotlivým souborům v zipu. Ostatně existují různé nástroje, které se umí k zip souboru chovat, jako by to byl souborový systém. Streamy nad soubory v Javě (FileInputStream, FileOutputStream) operují nad jednotlivými soubory, ZipInputStream ale operuje nad celým zip souborem, tedy nad kolekcí souborů – tedy by to odpovídalo streamu nad celým souborovým systémem. Kdybyste implementoval nějaký třeba (pro jednoduchost) FATInputStream, který by měl na vstupu proud bajtů, měl byste s tím úplně stejný problém – musel byste data bufferovat (a to by vám u FAT stačilo bufferovat jen hlavičku, protože u FAT je na začátku diskového oddílu).

Takže si v tom udělajte pořádek pane Jirskáku, zamyslete, co jsou to vlastně streamy, máte už na to věk.
Děkuji za péči. Souhlasím s tím, že jeden z nás v tom má velký guláš. A myslím si, že je to ten, kdo neumí naprogramovat takovou trivialitu, jako je rekurzivní výpis seznamu souborů v zip souboru.

Pokud to, co tvrdí trochu pomýlený pan Jirsák o ZipInputStream, je pravda, totiž že čte i nevalidní soubory v zip archivu
Já jsem se díval do zdrojáku té třídy a na specifikaci zip formátu. Odkud své informace čerpáte vy? Navíc já jsem nepsal, že čte nevalidní soubory v zip archivu – napsal jsem, že čte i položky, které mohly být později upravené nebo smazané.

tak je to, obávám se, ještě větší sračka, než si všichni mysleli, a nechci ani domýšlet, kolik tento paskvil, kterých je v Javě povícero, způsobil, za dobu své existence, škod v řádech milionů dolarů, a to na jen nejrůznějších chybách v produkci.
Nemyslím si, že by vás pustili k něčemu, kde by mohly vzniknout škody v řádech milionů dolarů. A lidé, kteří umí aspoň trochu programovat, nebudou používat FileInputStream, který je k ničemu, ale použijí ZipFile nebo rovnou nějakou knihovnu. A taky si zjistí něco o formátu zip a ověří si, jestli je v souladu zadání a to, co chtějí použít při implementaci.

3975
Vývoj / Re:Java a C# - porovnání práce se Zip souborem
« kdy: 29. 04. 2017, 09:04:24 »
Trošku off topic, než se do sebe zase pustíte - tohle fakt znamená, že Java dokáže číst data ze zip souboru, který nemá konec? To by se mohlo hodit.
Ano, znamená. Ale také to znamená, že ten soubor je poškozený, a že tím pádem můžete přečíst něco, co v tom ZIPu vůbec není. Je to podobné, jako když si u souborového systému omylem smažete hlavičku – existují nástroje, které se pokusí z něj zachránit data, ale musíte počítat s tím, že dostanete spoustu souborů na jedné hromadě, kterou si pak budete muset ručně roztřídit na to, co je správné a platné, a na smetí, které se tam připletlo omylem.

Stran: 1 ... 263 264 [265] 266 267 ... 375