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 - Mirek Prýmek

Stran: 1 ... 539 540 [541] 542 543 ... 618
8101
Vývoj / Re:K čemu je v Javě prázdný String konstruktor?
« kdy: 20. 09. 2012, 12:20:30 »
@kuka: asi si nerozumíme. Chtěl jsem říct, že ve mně budí podezření jazyky, kde A funguje nějak a B, které je A velmi podobné, funguje úplně opačně - ale zároveň komunita tvrdí, že to, jak B funguje, je bomba.

8102
Vývoj / Re:K čemu je v Javě prázdný String konstruktor?
« kdy: 20. 09. 2012, 12:17:49 »
Pak to vede na úchvatné signatury metod typu:
Kód: [Vybrat]
public static <T extends Comparable<? super T>> void sort(List<T> list)
No dyť jsem říkal, že z toho na mě dýchá C++ ;)

8103
Vývoj / Re:K čemu je v Javě prázdný String konstruktor?
« kdy: 20. 09. 2012, 11:53:24 »
U generik je to správně proto že kontroly provádí přímo kompilátor. U polí je to špatně protože kompilátor nekontroluje a může to tedy vést k pádům programů za běhu, což je přesně to co by silně typový jazyk neměl dovolovat. No a to že je to jednou tak a podruhé tak je prostě to peklo na druhou...
Ok, hledal jsem za tím něco složitějšího. Jestli je to správně, to nevím. Je to prostě tak :) Má to taky své nevýhody a v jiných jazycích se to afaik řeší jinak.

A prave proto, ze by to vyvolalo behovou vyjimku, to u generik nejde, coz jsem se snazil vysvetlit. Tam by to vadilo, protoze generika zarucuji, ze k behove vyjimce nedojde, protoze se nesoulad typu objevi uz pri prekladu - to je ostatne hlavni prinos generik. Pole to nezarucuji a proto to u nich nevadi, kazdy proste vi/mel by vedet, ze k takove situaci muze dojit. Princip typove kontroly poli a generik je uplne jiny, coz je sice sveho druhu "souvislost", podle mne ale vzhledem k tematu generik irelevantni.
No takže u polí to vadí taky, ale tam to "každý ví" :)

8104
Vývoj / Re:K čemu je v Javě prázdný String konstruktor?
« kdy: 20. 09. 2012, 11:22:05 »
Čistě z pohledu typového systému jsou kovariantní pole špatně a invariantní generiky správně. Ovšem use-site variance je peklo na druhou...
Můžeš trochu rozvést důvody? (pokud možno tak, abych to jako ne-fulltime programátor, ne-javista pochopil :)

8105
Vývoj / Re:K čemu je v Javě prázdný String konstruktor?
« kdy: 20. 09. 2012, 11:17:14 »
Ne nevadi. BTW jak Array souvisi s generiky a jejich typovou bezpecnosti?
No tak, že to, co u generik vůbec nejde, to u Array jde, ale vyvolá to runtime výjimku.

8106
Sítě / Re:IPv6 - Pověry a fakta
« kdy: 20. 09. 2012, 11:10:59 »
Ale u takového "kdokoliv" vím kdo to je - musím znát své uživatele.
Nesmysl. Získat přístupové údaje řadového zaměstnance je triviální - social engineering ještě nikdy nezklamal ;) A pak už nemáš "uživatele, kterého znám" ani náhodou - a NIC proti tomu neuděláš, protože BFU nezměníš. A že BFU vydal heslo dobrovolně, nikdy nedokážeš.

To je podstatný rozdíl proti útočníkovi který se mi dostal na server omylem, ale se kterým je nutno počítat - statisticky se to prostě jednou za čas stane, protože komplikovaný software bezpečnostní díry měl, má a bude mít.
Právě proto, že software díry měl a mít bude, je potřeba počítat s tím, že k průniku může dojít - sice se mu snažit _rozumně_ bránit, ale zároveň na obranu nespolíhat, brát úspěšný útok jako fakt a sichrovat se IDSkem a rozumně vymyšleným DR.

8107
Sítě / Re:IPv6 - Pověry a fakta
« kdy: 20. 09. 2012, 11:06:51 »
Na druhou stranu, je kompletně dokumentován každý krok a to je rozhodně plus.
(pomalé) schvalování a (poměrně rychlý) change/config management jsou imho dvě na sobě docela nezávislé věci, i když v korporacích vždy úzce provázané.

Já třeba teď nasazuju change mgmt kombinovaný s HIDS na celkem jednoduchém principu na bázi gitu, takže plnou zdokumentovanost a přehled změn bych měl mít brzo k dispozici taky - i bez schvalování desítkou úředníků :)

Ale nestěžuji si, na rozdíl od ostatních podniků, tady ti lidé dobře vědí co dělají a mají přehled o technologiích i mimo svůj obor. Jen by to chtělo větší systémovou flexibilitu.
Na to si stěžují všichni zaměstnanci velkých korporací bez výjimky :)

8108
Vývoj / Re:K čemu je v Javě prázdný String konstruktor?
« kdy: 20. 09. 2012, 10:14:10 »
Tedy bych si deklaroval List<Y> a predal ho metode, ktera pracuje s List<X>. Ta by do nej pridala instanci tridy Z (ktera je rovnez potomkem X). Potom bych postupne zpracoval prvky sveho List<Y> a volal na nich metody tridy Y. Co by se stalo, az bych narazil na instaci tridy Z? Kde by byla slibovana typova kontrola? Pro nazornost si dosadme treba X=Number, Y=BigDecimal, Z=Short.
U Array to nevadí? :)

8109
Vývoj / Re:K čemu je v Javě prázdný String konstruktor?
« kdy: 20. 09. 2012, 09:50:12 »
Generiky v bajtkodu:
http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.4
http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.8

Neni to uplne jednoduchy cteni, zkusim se o tom nekdy rozepsat (sam to budu muset ted nastudovat do vetsi hloubky, nez je zdravo :)
Uff, tak to je na mě fakt moc velkej guláš, to si raději počkám na ten článek (předem díky ;)

Ad kovariance: je to treba ukazano zde: http://www.ibm.com/developerworks/java/library/j-jtp01255/index.html
Dovedu pochopit, proc to je takto navrzeno, ale z hlediska OOP (kde mame Integer extends Number a Float extends Number - dosadte si libovolnou jinou cast ze stromu hierarchiche) to cloveka nekdy prekvapi.
Jasně, tak to jsem pochopil správně. Jo, je to docela matoucí - hlavně ta nekonzistence s Array.

8110
Vývoj / Re:K čemu je v Javě prázdný String konstruktor?
« kdy: 20. 09. 2012, 09:10:55 »
To není berlička ale nutnost. Nastudujte si rozdíl mezi List<? extends X> a List<? super X> a pochopíte.
Mluvím o tom, že celá tahle konstrukce se mi nelíbí. Považoval bych za normální, že Ypsilonem můžu Xko nahradit v jakémkoli kontextu bez toho, abych to někomu nějak zvlášť dával najevo.

8111
Sítě / Re:IPv6 - Pověry a fakta
« kdy: 20. 09. 2012, 09:06:46 »
Z druhého bodu musí mít extrémní radost správci všech serverů na které bude kompromitovaný stroj útočit, protože útočník má neomezenou možnost síťové komunikace. Pro mě je takový přístup nepřijatelný.
Opět zdůrazňuju, že to je můj názor a můj přístup k věci.

Tohle považuju za pseudoproblém. Neomezenou možnost komunikace má libovolný uživatel libovolného stroje. Získat přístup k uživatelskému účtu je podstatně jednodušší než k systémovému účtu. Takže mi tahle myšlenka přijde trochu jako zamykání branky, u které není plot :)

8112
Sítě / Re:IPv6 - Pověry a fakta
« kdy: 20. 09. 2012, 08:43:20 »
Ano, oba máme jiný způsob práce. Já jsem totiž přesvědčený že investovat práci do zabezpečení serveru je nutnost která má přednost před administrátorovou pohodlností.
Nebudu to brát jako invektivu :)

Nejde o pohodlnost admina, ale - jak jsem psal - o udržovatelnost takového řešení. Ne admin vs. bezpečnost, ale bezpečnost vs. dostupnost. Ovšem pokud se ti nikdy nestalo a nestane, že sis takhle extenzivními fw pravidly zablokoval omylem legitimní provoz, tak ok, je to dobré řešení (teda za podmínky, že mi nevadí jeho limity - např. že takhle ochráněný apache pak nemůžu nastavit jako proxy pro jiný server obsahu).

Můj přístup je jiný - 1. apache do jailu a 2. smíření se s tím, že kompromitovaný stroj je kompromitovaný stroj 3. DR pro případ kompromitace. To tvoje řešení mi přijde trochu moc extenzivní a přeplácané. Ale to je věc názoru, jak jsem již byl řekl :)

8113
Vývoj / Re:K čemu je v Javě prázdný String konstruktor?
« kdy: 20. 09. 2012, 08:33:18 »
To jde pokud metodu deklarujete takto: metoda(List<? extends X>)
Aha. Ale nemělo by to jít automaticky bez berliček? Není to trochu krkolomné? (silně na mě z toho vane duch C++ ;)

8114
Vývoj / Re:K čemu je v Javě prázdný String konstruktor?
« kdy: 20. 09. 2012, 05:31:41 »
Jak přesně se tohle projevuje? Že List<X> nemůžu předat někam, kde se očekává List? To je asi blbost že? Všechno je to za běhu List. Teď si nějak neumím představit, o co jde :)
...nebo že do metoda(List<X>) bych měl mít možnost předat parametr typu List<Y> za předpokladu, že Y je podtřída X?

8115
Vývoj / Re:K čemu je v Javě prázdný String konstruktor?
« kdy: 20. 09. 2012, 05:28:47 »
Ovsem v bajtkodu se ta informace ve skutecnosti zachova ve forme metadat [...], coz si hlida prekladac ve chvili, kdyz se nekde jinde vola mujObjekt.test1() a mujObjekt.test2().
To je zajimava informace - o jaký přesně metadata se jedná? Jak se to správně jmenuje (abych si o tom mohl něco vygooglit)?

A dá se s těmi metadaty nějak softwarově pracovat? Když např. z nějakého zdroje dostanu obecný objekt a chci za běhu zjistit, jakého je typu, můžu nějak zjistit, jestli je to List<X> nebo List<Y>?

A jak je to s tou (obecnou) factory? Když mu předám obecný objekt, dá se vytvořit nová instance? Jde to nějak přibližně takhle?
Citace
Object neznamyObjekt = nepredvidatelnyZdrojObjektu.getNext();
Constructor[]  constructors = neznamyObjekt.getClass().getConstructors();
[...výběr bezparametrického konstruktoru...]
Object neznamyObjekt2 = constructor.newInstance();

Co me osobne vadi vice je fakt, ze generika (resp. ty typy) nejsou kovariantni, i kdyz by podle me mohly byt :/
Jak přesně se tohle projevuje? Že List<X> nemůžu předat někam, kde se očekává List? To je asi blbost že? Všechno je to za běhu List. Teď si nějak neumím představit, o co jde :)

Na druhou stranu je treba diky tomu implementace Clojure pro JVM mnohem snazsi nez v .NET, takze je to neco za neco :)
V čem přesně je snazší?

(dík za odpovědi - u většiny z nich bude stačit třeba i jenom nasměrování na článek, vhodnou google frázi nebo tak něco :)

Stran: 1 ... 539 540 [541] 542 543 ... 618