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 ... 234 235 [236] 237 238 ... 375
3526
Správně zadané sudoku má právě jedno řešení. Zadání sudoku, které to nesplňuje, vymyslíte snadno – třeba když bude zadaná jenom jediná číslice. K zadání, které nemá řešení, ale v daném stavu splňuje všechna pravidla, dojdete docela snadno při řešení nějakého správně zadaného sudoku, pokud do nějakého políčka, kde v tu chvíli při splnění pravidel může být několik číslic, vyplníte jednu z nich a zrovna ne tu správnou.

3527
Odkladiště / Re:Jak "kryptograficky" uzavřít smlouvu?
« kdy: 16. 03. 2018, 16:18:18 »
Pokud se jedná o smlouvu v ČR, je jediným průkazným řešením použít elektronický podpis a časové razítko. […] Postup se liší země od země, neexistuje uneverzální kuchařka, ani v rámci EU.
To, že to (dnes) lze udělat v ČR, je dané nařízením Evropské unie eIDAS. Nebo-li podpis vytvořený na základě kvalifikovaného certifikátu vydaného třeba českou autoritou má právní platnost kdekoli v EU.

Rozdíly jsou jen v tom, že různé státy si mohly stanovit výjimky, co budou uznávat navíc – takže v ČR je vedle kvalifikovaných elektronických podpisů (podpis založený na kvalifikovaném certifikátu vytvořený bezpečným prostředkem) uznáván i zaručený elektronický podpis založený na kvalifikovaném certifikátu (podpis vytvořený opět na základě kvalifikovaného certifikátu, ale podpis nemusel být vytvořen bezpečným prostředkem – např. máte privátní klíč uložený v souboru na disku).

3528
Odkladiště / Re:Jak "kryptograficky" uzavřít smlouvu?
« kdy: 16. 03. 2018, 11:04:33 »
Zajímalo by mě, jak uzavřít neprůstřelně smlouvu ( kryptograficky na dálku).
To je úplně normální elektronický podpis, přesně k tomuhle slouží – akorát v případě smlouvy budou na tom dokumentu podpisy dva. Když použijete pro vytvoření podpisu certifikáty některé certifikační autority akreditované v EU, bude mít ten podpis stejnou právní platnost, jako kdybyste smlouvu podepsal vlastnoručně. A nebo si s protistranou můžete ujednat, že budete důvěřovat i slabším podpisům, než jsou ty od akreditovaných CA.

Expirace podpisových certifikátů se řeší tak, že se za podpis připojí časové razítko.

Ideální je pro tenhle případ formát PDF/A – je určen pro dlouhodobou archivaci, podpisů tam můžete přidat kolik chcete a jsou součástí přímo dokumentu.

3529
Vývoj / Re:Unikátní název aplikace
« kdy: 07. 03. 2018, 16:55:23 »
Vyhledejte si ten zvolený název aplikace Googlem. Žádný seznam všech názvů aplikací neexistuje a duplicity v názvech existují.

3530
Vývoj / Re:Java open-source projekty pre juniora
« kdy: 06. 03. 2018, 22:02:11 »
dom4j – na dobu vzniku je to celkem dobře napsané, dnes už by to ale chtělo zmodernizovat, na což zatím nikdo nenašel čas. Zase je to ale malá knihovna, u které je snadné pochopit, co a proč dělá, nestane se vám tam, že byste něco implementoval a vůbec byste netušil, k čemu je to vlastně dobré a jak to zapadá do celku. Moc issue tam zadaných není, ale dá se tam vymyslet spousta věcí, například rozšíření API o podporu Streamů. A pokud by vám to lépe vyhovovalo, můžeme se o tom bavit i česko-slovensky (ale pokud to není problém, dávám u opensource projektů přednost angličtině, i vyřešenou issue může číst kdokoli).

3531
Odkladiště / Re:Datova shranka - ano/ne
« kdy: 25. 02. 2018, 20:22:10 »
Je to vratný krok, schránku zřízenou na žádost můžete deaktivovat.

Počítejte s tím, že pak musíte schránku pravidelně kontrolovat, mohou vám tam teoreticky chodit i osobní věci (třeba pokuty za rychlost), když to úředník nerozliší, že je to schránka PFO a ne FO. Taky se obtížně zjišťuje, zda schránku máte nebo nemáte a komu přesně schránka patří, takže vám mohou chodit zprávy pro někoho jiného, nebo naopak vaše zprávy budou chodit jinam. Ale v takovém případě je paradoxně lepší schránku mít, protože když úředník nechá vyhledat schránku a najde se mu jedna, která vypadá, že by mohla být vaše, pošle dokument tam – protože neví, že vy schránku nemáte. Když se mu najdou dvě schránky, bude nucen zjišťovat, v čem se liší, a podle dalších údajů pravděpodobně dohledá tu vaši správnou schránku.

Papírové pošty se tím nezbavíte, protože pokud povaha dokumentu vylučuje použití datových schránek, použije se klasický dopis – takže pak musíte hlídat jak datovou schránku tak poštovní.

3532
Odkladiště / Re:nakolik je platba přes GoPay bezpečná?
« kdy: 24. 02. 2018, 20:22:17 »
Asi dělám něco blbě
Ano. Odpovídáte na tři roky starý komentář.

3533
Vývoj / Re:Jak se dá podmínka do HTML stránky?
« kdy: 24. 02. 2018, 16:00:20 »
Samotné HTML to neumí, je k tomu potřeba nějaká aplikace – buď na klientovi nebo na serveru. To <? echo "Ahoj $form.jmeno!"; ?> je příklad serverové aplikace, předpokládám, že v PHP. Aby to fungovalo, nestačí otevřít přímo ten HTML soubor v prohlížeči, je potřeba si nainstalovat nějaký server s podporou PHP a zobrazit to přes něj. Nejlepší bude přečíst si o tom nějaký návod nebo knížku, tam ta instalace bude vysvětlená a budu tam vysvětlené i základy PHP, to není na jeden odstavec odpovědi v diskusním fóru.

3534
Vývoj / Re:Datové struktury a stromy v Javě
« kdy: 23. 02. 2018, 14:04:57 »
MarSik chápe, co je medián a o co javablbovi šlo.
A taky chápe, že když odpovídám 10xCoderovi, odpovídám 10xCoderovi a ne MarSikovi.

3535
Vývoj / Re:Datové struktury a stromy v Javě
« kdy: 23. 02. 2018, 13:39:54 »
Pokud je bucketů méně než možných hashů (tj. vždy), tak v případě kolize nemají všechny prvky stejný hash (kolize je na úrovni indexu bucketu). Takže se dá porovnávat ten hash samotný.

Navíc, pokud mají dva prvky stejný hash klíče, tak se z hlediska kolekcí jedná o ten samý prvek. Tj dojde k přepsání hodnoty pro ten klíč a žádná kolize nenastane.
Nikoli, dva prvky se stejným hashem jsou i z pohledu kolekcí pořád dva různé prvky. To, že může dojít ke kolizi, je základní princip hashe – a pro ukládání dat do hashtabulky se nepoužívají kryptograficky silné hashovací funkce, takže k těm kolizím reálně dochází a počítá se s nimi.

Máte pravdu, že v praxi může dojít ke dvěma typům kolizí – kolizi hashů, a kolizi indexů bucketu. To už je ale spíš otázka praktické implementace. V teorii je výpočet hashe záležitostí té hashtabulky, protože to ona ten hash potřebuje a objekt ukládaný do hashtabulky teoreticky nemusí nic o nějakém hashi vědět. Tím pádem si hashtabulka spočítá už rovnou hash o správné velikosti, aby šel rovnou použít jako index do té hashtabulky. Proto se v případě hashtabulky tomu indexu říká i hash. Ale třeba v Javě je to implementováno tak, jak popisujete – tj. výpočet hashe je (objektově nečistě) implementován přímo v každém objektu, tj. výpočet hashe vrací hash o nějaké univerzální velikosti (konkrétně integeru), a HashMap nebo HashSet si tenhle univerzální hash musí následně převést do rozsahu odpovídajícího aktuální velikosti hashtabulky (pole).

3536
Vývoj / Re:Datové struktury a stromy v Javě
« kdy: 23. 02. 2018, 13:30:27 »
Nechápeš, pročež píšeš nesmysly. Představ si pole čísel v náhodném pořadí. Nalezení i-tého největšího prvku je lineární. A stejně lineární je to i v hashmapě, když jsou hodnotami čísla (na klíči nesejde). Nalezení mediánu je jen speciální případ nalezení i-tého největšího prvku.
Nesmysly tu píše spousta lidí, ale já ani MarSik to nejsme. i-tý největší prvek pole je úplně něco jiného, než i-tý prvek pole. i-tý největší prvek se vztahuje k hodnotám těch prvků, a mimo jiné předpokládá, že ty prvky umím porovnat a tedy seřadit. i-tý prvek se vztahuje k pořadí těch prvků v poli, v programátorském zápisu je to prostě pole.

V hashmapě to „stejně lineární“ není – a bylo by dobré, kdybyste si konečně zjistil, jak hashmapa funguje. Začněme tím, že v hashmapě jsou dvě struktury, ve kterých se prvek hledá. První struktura je hashtabulka, klíčová struktura pro hashmapu – je to pole, ve kterém index pole přímo odpovídá hashi klíče. Mám klíč, z něj vypočítám hash, ten hash převedu do rozsahu velikosti pole (např. hash modulo velikost pole), a tahle hodnota se použije přímo jako index té hashtabulky. Vyhledávání v té tabulce tedy není v lineárním čase, ale v konstantním – je to prostě přístup do pole podle indexu. No a protože může dojít ke kolizi hashů, tj. víc klíčů má stejný hash a mělo by být umístěných ve jedné položce té hashtabulky, musím mít možnost uložit na tu pozici ne jeden klíč, ale jejich množinu. Nejjednodušší je udělat tam spojový seznam, v něm se pak konkrétní hodnota opravdu hledá v lineárním čase, ale pokud klíče umím setřídit, můžu tam použít i jinou strukturu, ve které půjde rychleji hledat – třeba seřazený seznam nebo binární vyhledávací strom.

Představte si to třeba pro hashtabulku o velikosti čtyř prvků. Prázdná vypadá takhle:

Kód: [Vybrat]
hashtable[0] = ();
hashtable[1] = ();
hashtable[2] = ();
hashtable[3] = ();

Budete tam chtít vložit klíč 'a', vypočítáte jeho hash, třeba 32745, a ten převedete do rozsahu hashtabulky, třeba modulo 4, takže vám vyjde index do hashovací tabulky 1. Takže klíč uložíte:

Kód: [Vybrat]
hashtable[0] = ();
hashtable[1] = ('a');
hashtable[2] = ();
hashtable[3] = ();

Pak budete chtít vložit klíč 'b', hash 126, index do hashovací tabulky 2:

Kód: [Vybrat]
hashtable[0] = ();
hashtable[1] = ('a');
hashtable[2] = ('b');
hashtable[3] = ();

Klíč 'c', hash 8293121, index do hashovací tabulky 1:

Kód: [Vybrat]
hashtable[0] = ();
hashtable[1] = ('a', 'c');
hashtable[2] = ('b');
hashtable[3] = ();

Vidíte, že tam došlo ke kolizi hashů (respektive až těch indexů v hashtabulce), takže pro hash 1 mám uložené dva různé klíče.

Když teď budu chtít v mapě najít klíč 'd', určím jeho hash 172340, index je 0, takže si v konstantním čase v hashtabulce najdu řádek s indexem 0:
Kód: [Vybrat]
hashtable[0] = (); //nalezený řádek v tabulce
hashtable[1] = ('a', 'c');
hashtable[2] = ('b');
hashtable[3] = ();
Vidím, že seznam klíčů je prázdný, tedy klíč 'd' v mapě není. Kdyby mi vyšel index 1, musím klíč hledat v té množině ('a', 'c'), a teprve pokud by tohle byl nesetříděný seznam, bude mít toto hledání lineární složitost. Tohle už je ale implementační detail, který může být v různých implementacích řešený různě. Podstatný pro hashovací tabulku je ten „trik“ že hash je přímo indexem pole a tudíž jeho vyhledání má konstantní časovou složitost.

3537
Vývoj / Re:Datové struktury a stromy v Javě
« kdy: 23. 02. 2018, 12:15:05 »
Někteří jen poukazovali na chybné tvrzení, že medián v hashmapě jde najít jinak než sekvenčně. To s klíči vůbec nesouvisí, nalezení i-tého prvku v nesetříděné množině pro libovolné i je lineární.
A na to právě reagoval MarSik, protože nalezení i-tého prvku v nesetříděné množině je prostě nesmysl. Když je ta množina nesetříděná, nemají prvky v ní žádné pořadí a neexistuje žádný i-tý prvek. Pokud je ale řeč o poli, tam jsou prvky seřazené podle svého pořadí v tom poli – a nalezení i-tého prvku se provede v konstantním čase, protože je to jen jednoduché přičtení adresy.

Takže v hashmapě se hledá tak, že se vypočítá hash klíče a tento hash modulo velikost hashovací tabulky je přímo index v dané tabulce (přístup je tedy konstantní). Pokud je pod tímto hashem jediný klíč, mám výsledek, pokud dojde ke kolizi a pod stejným hashem je uloženo víc klíčů, je nutné ještě najít ten správný klíč. Obecně je pak v tabulce uložen neseřazený seznam klíčů a pak nezbývá než porovnat klíče jeden po druhém, dokud se nenajde shoda (tedy složitost je lineární). Pokud je možné klíče seřadit, lze to optimalizovat a v případě kolize klíčů použít nějakou strukturu, ve které se lépe vyhledává, než neseřazený seznam.

3538
Vývoj / Re:Datové struktury a stromy v Javě
« kdy: 21. 02. 2018, 21:55:29 »
Pořád jste nikdo nevyvrátili to, co tady celou dobu tvrdím: ten kluk se ptá na stromy a datové struktury v Javě a nikdo jste mu, kromě mě, nevysvětlili, proč v 99.9% případů bude používat když už tak HashMapu a ne nějaké stromy.
Když už takovéhle triviality nevíte, pomohlo by vám, kdybyste se podíval do JavaDoc na to, jaké potomky má rozhraní Map – podle toho zjistíte, jaké existují (alespoň ve standardní knihovně) specializace, čím se liší, a pak už se vám bude lépe uvažovat nad tím, k čemu by se mohly používat.

Takže zjistíte, že existuje např. SortedMap, která má na rozdíl od obecné mapy klíče seřazené. To znamená, že můžete dělat takové věci, jako „dej mi výsek mapy od – do“, „dej mi všechny prvky větší než“. Implementací SortedMap je např. TreeMap, což je právě ten strom, na který se ptáte.

Abyste viděl nějaký hodně konkrétní příklad, tak když budete mít mapu osob, kde bude klíčem třeba datum a umožníte hledat rozsah údajů, třeba  „vše za rok 2017“. V tom vám mapa, která umí prvky porovnávat pouze na ekvivalenci (což je třeba právě hashmapa) nepomůže, a potřebujete alespoň tu SortedMap.

Pokud nerozumíte tomu, jak hashmapa funguje, zapomeňte na to, že je uvnitř nějaké pole (akorát vás to mate), a zapamatujte si hlavně to, že hashmapa umí porovnávat klíče pouze na ekvivalenci, neumí je porovnat větší/menší a neví tedy nic o jejich pořadí.

3539
Mozna jste si jiz vsiml, ze prohlizece a JS jsou jaksi baleny dohromady, neprodava se to v zelezarstvi jako oddelene komponenty. Takze JS vyuzije diry v prohlizeci a nabonzuje vas. A ta dira v prohlizeci muze s klidem byt take dirou v implementaci JS, cimz se to stava jeste zabavnejsim. A zabavnejsi je to take tim, ze kdyz nekdo pouziva TOR, tak utocnij vi celkem spolehlive, proti jakemu prohlizeci se ma zamerit a nemusi delat milion hokus pokusu. A v soucasne dobe vy na vas pomoci JS mohl i upeci nejakou chytristiku s vyuzitim procesoru Intel.

Ale jinak mate pravdu, je to skoro stejne, jako kdybyste mel autonehodu s Jaguarem, ktera ve skutecnosti byla zapricinena explozi defektni pneumatiky od vyrobce, kteru s Jaguarem nema nic spolecneho, akorat tedy ze JS engine zde dodava rovnez Moz://a.
Podstatné je to, že ta chyba může být v kterékoli jiné komponentě prohlížeče – v HTML parseru, v práci s cookies, v zobrazovači obrázků. Takže na té stránce nemusí být žádný JavaScript, v prohlížeči ho můžete mít vypnutý, a stejně vás ta chyba postihne.

3540
Napriklad skrz deravy browser. Browsery jsou porad derave.
Takže to neumožňuje JavaScript ale děravý prohlížeč. Přičemž ta díra může být pokaždé v jiné komponentě.

Stran: 1 ... 234 235 [236] 237 238 ... 375