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 ... 264 265 [266] 267 268 ... 375
3976
Vývoj / Re:Java a C# - porovnání práce se Zip souborem
« kdy: 28. 04. 2017, 22:36:23 »
Takže mýlka vznikla z toho důvodu, že ten ZipInputStream je Stream a zároveň iterátor. Je to špatný OOP návrh, který porušuje Single responsibility princip, v dokumentaci třídy není uvedeno, že se jedná o kočkopsa a proto mi nedošlo, jak se to má používat. Správné by bylo, kdyby ZipInputStream byl iterátor nad ZipEntry, a na ZipEntry by mělo getInputStream(). Ale pokud dělali Javu stejní kokodi, jako dělali SQL Developera, Eclipse a podobné, tak se není moc čemu divit.
Neumíte naprogramovat domácí úkol, který je možná i na dvacet řádků, neumíte si přečíst dokumentaci, ale hlavně že víte, jak by to mělo vypadat a co dělají všichni ostatní špatně.

Pro vaší informaci, ZipInputStream je potomek třídy FilterInputStream, která (překvapivě) funguje jako filtr, tj. na vstupu dostane jeden InputStream, vy s ní pracujete zase jako s InputStreamem a ta třída uvnitř provádí nějaké filtrování toho streamu. Chápu, že je to napsané až na pátém řádku dokumentace, a tak daleko jste nedočetl.

Ta třída existuje pravděpodobně „do počtu“ s ostatními třídami, které dělají (de)komprimaci nad streamy. Nejhorší na té třídě je, že vůbec existuje, nebo že u ní není uvedeno důrazné varování, že její použití je jen na vlastní nebezpečí a podrobné vysvětlení, co ta třída vlastně dělá. Protože ta třída čte jednotlivé položky ZIPu tak jak jsou v souboru uvedeny za sebou, a ignoruje adresář uložený na konci souboru. Přitom ale v tom adresáři je uvedeno, co je v tom ZIPu doopravdy. Když budete ZIP procházet pomocí ZipInputStreamu, můžete klidně rozbalit smazané soubory, starou verzi souboru nebo soubor budete mít špatně pojmenovaný. Což je podle mne mnohem horší než to, že si neumíte přečíst dokumentaci a nechápete, jak se ta třída používá.

3977
Vývoj / Re:Java a C# - porovnání práce se Zip souborem
« kdy: 28. 04. 2017, 16:32:08 »
Ale já jsem se díval i na ten ZipInputStream a nim to taky nemuze jit. On totiz neumi pro zadnou ZipEntry v zip souboru vytahnout jeji InputStream.
Ze ZipInputSream nemusíte žádný InputStream vytahovat, ZipInputStream už sám implementuje InputStream.

3978
Vývoj / Re:Java a C# - porovnání práce se Zip souborem
« kdy: 28. 04. 2017, 16:26:06 »
Já jsem si právěže mislel, že standardní knihovna Jazyka by měla být něco jako základ, ve kterém by všechno mělo fungovat a mělo by to být udělané dobře, protože všichni ostatní programátoři pak na tu budou navazovat.
Právě proto tam nemůžou být komplexní operace jako rekurzivní rozbalování ZIP souborů, protože ty bude chtít každý udělat trochu jinak. Má tam být právě jen ten základ.

A proč to tam teda není za tolik let opravené nebo nějak vylepšené? V té Javě.
Java drží extrémní politiku zpětné kompatibility – ze standardní knihovny nebylo od verze 1.0 nic odstraněno, včetně věcí, které byly opravené hned v následující verzi (třeba java.util.Date – teď už máme ve standardní knihovně 3. generaci tříd pro práci s datem a časem, ale předchozí generace tam stále zůstávají). Takže některé věci se sice „opravují“, ale takovým způsobem, že se ponechá ta stará „chybná“ verze a vedle ní se přidá nová.
Na tom ZipFile není co opravovat, to, co má dělat, dělá správně. A vylepšovat – proč cpát do standardní knihovny něco, co využije jen málokdo? Ve standardní knihovně má být jen základ.
S tím logováním je to podobné – nějaký základ ve standardní knihovně je, pokud někdo chce něco lepšího, má možnost použít rozšiřující knihovny. Které se mimochodem stále vyvíjí, takže by nebylo rozumné je cpát do standardní knihovny, protože pak byste stejně chtěl používat ty novinky a stejně byste si k aplikaci připojoval externí knihovny. Tohle už bylo s XML knihovnami (ve standardní knihovně byl vložený Xerces a Xalan, které se vedle dál vyvíjely), a byly z toho jen samé problémy a neustále se řešilo, jak z běhového prostředí vyštípat ty staré verze knihoven, které byly součástí JRE, a místo nich použít novější verze. (Tam to navíc bylo dané tím, že autoři Xercesu a Xalanu byli schopni psát C++ v jakémkoli jazyce, takže ty knihovny nebyly se světem Javy moc kompatibilní – a abych jim jen nekřivdil, nutno podotknout, že to bylo už hodně dávno a zdaleka ještě nebylo známo tolik best practices, jak některé věci dělat.)

3979
Vývoj / Re:Java a C# - porovnání práce se Zip souborem
« kdy: 28. 04. 2017, 16:11:29 »
Druhý důvod je ten, že podstata Streamu, ve smyslu, jak je používán v .NET nebo v Javě, nemá nutně co dělat s formátem, ve kterém je zdroj uložen - obojí je zkrátka abstraktně představuje tok dat, který může procházet jistou transformací.
Problém je právě v tom, že je to tok bajtů. Když se podíváte na strukturu formátu ZIP, zjistíte, že přehled toho, co je v ZIPu uloženo, je až na konci souboru (což umožňuje soubor aktualizovat, aniž byste ho musel přepsat celý od začátku). Takže jak byste s tím pracoval, když máte k dispozici jenom tok dat? Začnete číst od začátku, budete přeskakovat v tu chvíli nezajímavá data (protože jim nerozumíte a nevíte, co znamenají), až se konečně dostanete k adresáři na konci souboru, ten přečtete a zjistíte, že požadovaná data byla v tom, co jste zahodil. Ale máte smůlu, je to stream, vrátit se nemůžete.
Poučen tímto nezdarem budete příště stream zpracovávat jinak – při procházení si data budete někam odkládat, když se to nevejde do RAM, odložíte si je na disk. Až se propracujete k závěrečnému adresáři, konečně se dozvíte, co je kde v souboru uložené, vrátíte se k těm datům, co jste si uložil, a konečně je můžete zpracovat.
Trošku divné je, když takhle budete zpracovávat ZIP jako soubor na disku – budete ho načítat jako stream a data si bufferovat do druhého souboru. Proč, když už je jednou v souboru máte? Nehledě na to, že když budete mít velký ZIP a z něj potřebovat vytáhnout malý soubor, můžete klidně skončit na tom, že vám dojde místo na disku.
Když ZIP nedostanete jako stream bajtů, ale jako pole bajtů s náhodným přístupem, můžete s ním pracovat úplně jinak. Prostě si nejdřív přečtete z konce souboru adresář, a podle něj si najdete třeba ten jediný soubor, který chcete rozbalit. Nemusíte nic bufferovat, nemusíte vytvářet zbytečné dočasné soubory.
Java je nízkoúrovňový nástroj, takže vám poskytuje jen ty základní nástroje, abyste mohl něco udělat. Takže pokud chcete rozbalovat ZIP v ZIPu, standardní knihovna Javy vám k tomu dává nástroje, akorát si to budete muset naprogramovat sám. A nebo použijete nějakou knihovnu, která už to má v sobě – třeba zt-zip, zp4j nebo TrueZIP.
Je klidně možné, že C# má už ve standardní knihovně nějakou nadstavbu, která interně řeší to bufferování. Což ale nemění nic na tom, že je to nutné udělat – a můžete jen doufat, že je ta implementace tak chytrá, že zjistí, když je za streamem schovaný soubor, a vykašle se v tom případě na stream a použije náhodný přístup.

3980
/dev/null / Re:Velkolepé Java inženýárství v praxi
« kdy: 28. 04. 2017, 13:04:02 »
Zvolil jste si špatný formát souboru. ZIP není určený k ukládání na pásku (na rozdíl třeba od gzip nebo bzip2), k jeho dekompresi potřebujete náhodný přístup k souboru. Proto to nefunguje se streamem, ale je potřeba předat soubor. S Javou to nijak nesouvisí, takhle byste to musel udělat s každou knihovnou v libovolném jazyce.

3981
Vývoj / Re:Node.js a multiplexed IO obecně
« kdy: 22. 04. 2017, 22:11:51 »
Výhodou Node.JS je právě ten JavaScript – můžete psát klientskou i serverovou stranu webové aplikace v jednom jazyce (tzv. izomorfní aplikace), můžete mezi nimi sdílet kód.

3982
Vývoj / Re:PHP a skrytí hesla k databasi a AES šifr. klíče
« kdy: 19. 04. 2017, 15:17:34 »
Nema. Kazdy ma pravo vytvorit uzivatela na forum.root.cz a tym dostane pri poskytnuti hesla pravo na editaciu vytvoreneho uctu. Toto neposkytuje pravo editovat nahodny existujuci ucet.
Jistě. Protože běžný uživatelský účet nemá práva editovat náhodný existující účet. O tom ale nebyla řeč. Řeč byla o tom, že když má anonym právo vytvořit účet, má efektivně veškerá práva, která má nově vytvořený účet.

3983
Vývoj / Re:PHP a skrytí hesla k databasi a AES šifr. klíče
« kdy: 18. 04. 2017, 23:30:00 »
Ten ucet moze mat jedine pravo a to vytvarat zakaznikov bez dalsich prav.
Pokud může přidělovat další práva, má držitel takového účtu efektivně ta práva, která daný účet můře přidělit. Přinejhorším si prostě pro sebe založí druhý účet, který následně použije.

3984
Vývoj / Re:PHP a skrytí hesla k databasi a AES šifr. klíče
« kdy: 18. 04. 2017, 07:22:22 »
Od používání vlastních hesel k MySQL se kdysi z nějakého důvodu upustilo.
Důvodem je, že je to nepoužitelné pro model, jakým se dnes aplikace navrhují. Vlastní uživatelské účty do databáze mají význam tehdy, když se bezpečnost řídí na úrovni databáze.

Představte si běžný e-shop, kde se uživatelé mohou registrovat. Za prvé by nepřihlášený uživatel musel běžet pod účtem, který by měl právo zakládat uživatele a přidělovat mu oprávnění – a to už je jakékoli další zabezpečení k ničemu, může to klidně běžet pod tímhle účtem celé. A dál, i kdybyste se rozhodl jít touhle cestou, aby to mělo význam, potřebujete oprávnění na úrovni řádků. A do třetice, jméno a heslo by musel mít server k dispozici v otevřeném tvaru pro každý požadavek – takže buď uložené v session na serveru (kde ho zase může někdo ukrást), nebo ho přenášet s každým požadavkem. No a také by se neustále otvírala a zavírala spojení do databáze, místo dnešního sdílení připojení.

Každý uživatel = vlastní účet v databázi – to mohlo mít smysl maximálně u klient-server aplikací, kdy celá aplikace běžela u klienta a pouze se přes SQL připojovala do databáze.

3985
Software / Re:defaultní chování control+f v prohlížečích
« kdy: 17. 04. 2017, 22:28:45 »
Na té stránce to je. Stisknutí control+f zafocusuje na jejich vyhledávací pole. Možná se mi zobrazuje jiná verze než vám.
Možná. V jakém souboru to je?

3986
Software / Re:defaultní chování control+f v prohlížečích
« kdy: 17. 04. 2017, 22:16:07 »
Tohle vám vyhledávání nerozbije?
Rozbilo by, kdyby to na té stránce bylo.

Zakázat to určitě nejde. Jediné, co by s tím prohlížeč teoreticky mohl dělat, by bylo tu klávesovou zkratku do aplikace vůbec neposílat – ale nevím o tom, že by to nějaký prohlížeč uměl (samozřejmě pokud nechcete úplně vypnout JavaScript).

3987
Vývoj / Re:PHP a skrytí hesla k databasi a AES šifr. klíče
« kdy: 17. 04. 2017, 20:38:03 »
v případě kompromitace, aby útočník (pokud se dostane buď k FTP nebo vůbec souborovému systému) se nemohl dostat k MySQL databasi přes PHP
Pokud se útočník dostane jenom pro čtení k souborovému systému, bude mu k ničemu, když získá heslo k databázi – musel by ještě získat (síťový) přístup k té databázi. Není dobrý nápad, aby databázový uživatel, pod kterým přistupuje webová aplikace, měl do databáze přístup odjinud, než z webového serveru.

3988
Software / Re:defaultní chování control+f v prohlížečích
« kdy: 17. 04. 2017, 20:16:56 »
Odinstalovat plugin nebo vir, který vám způsobuje to nedefaultní vyhledávání.

3989
Vývoj / Re:PHP a skrytí hesla k databasi a AES šifr. klíče
« kdy: 17. 04. 2017, 13:06:02 »
Ne, nemají. Holt místo deobfuskace dekompiluješ bytecode (což vlastně Zend má myslím pro PHP taky).
A když ten klíč nebude v dekompilovaném kódu vidět na první pohled, stačí aplikaci podstrčit vlastní ovladač databáze (který nemusí dělat nic jiného, než že jenom zaloguje heslo), nebo často stačí jen odposlechnout komunikaci mezi aplikací a databází.

3990
Vývoj / Re:PHP a skrytí hesla k databasi a AES šifr. klíče
« kdy: 17. 04. 2017, 11:47:11 »
Pokud se útočník dostane ke zdrojákům a heslo tam někde je, vždycky se k němu dostane relativně snadno. Pokud tomu chcete zabránit, jediné řešení je dodávat heslo z venku – pak ale zase musíte umět ověřit, že ho dáváte té správné aplikaci.
Já bych se ale pro základní zabezpečení vydal jinou cestou, a to aby se útočník na váš server vůbec nedostal. Protože pokud už je na vašem serveru a může manipulovat s aplikací, může už tak napáchat dost škod a získat spoustu osobních údajů – získat přístup do databáze už by byla spíš jen taková třešnička na dortu.

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