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 ... 323 324 [325] 326 327 ... 375
4861
Studium a uplatnění / Re:C# .NET vs. Java?
« kdy: 25. 02. 2015, 09:21:16 »
intuitivnejsi, ako ten zapis v Jave. Ale bavit sa o takychto kktinach to je tak rootovske :)
„Intuitivní“ pro mne opravdu neznamená „musím vědět, co přesně ta funkce dělá, a program musím číst chvilku zepředu dozadu a chvilku opačně“. Intuitivní je, když funkce FirstOrDefault vrátí první záznam, nebo výchozí hodnotu, pokud je seznam prázdný. Jenže ta funkce s predikátem dělá dvě věci – jednak filtruje, a pak vybírá ten první záznam. A to, že se ten predikát používá zrovna pro filtrování, to musíte vědět – z definice té funkce to nijak nepoznáte. Ona by se ta funkce správně musela jmenovat FilterAndGetFirstOrDefault, ale pak už by bylo jasné, že ta funkce nedělá jen jednu věc.

4862
Studium a uplatnění / Re:C# .NET vs. Java?
« kdy: 25. 02. 2015, 08:54:20 »
a co tak si pozriet ako naozaj FirstOrDefault funguje az potom nieco komentovat?
A co tak si nejprve přečíst celý komentář a až pak na něj reagovat? Kdybyste si můj komentář přečetl celý, zjistil byste, že vím, co funkce FirstOrDefault dělá – akorát že je ta funkce špatný příklad intuitivnosti jazyka, protože to vede k tomu, že máte kód ve zdrojáku na přeskáčku a hlavně musíte vědět, kdy se ten predikát použije.

Vobec nefiltruje komplet mnozinu.
To ten Javovský kód také nedělá.

A dalsia vec, aky by to malo zmysel, keby to porovnava len prvy prvok mnoziny?
To je jedno.

Jinak teda porovnávat dvě rozsáhlé vývojové platformy podle třech řádků kódu je totální nesmysl. Chtěl jsem jenom poukázat na špatně zvolený příklad, protože ten kód v C# je neintuitivní.

4863
Studium a uplatnění / Re:C# .NET vs. Java?
« kdy: 25. 02. 2015, 07:30:14 »
A nazorny priklad:

Uplna novinka v Jave 8 (rok 2014):

public Optional<Article> getFirstJavaArticle() { 
    return articles.stream()
        .filter(article -> article.getTags().contains("Java"))
        .findFirst();
    }


A naproti tomu, LINQ v C#, ktery je s nama od roku 2007:

public Article GetFirstJavaArticle()
{
    return articles.FirstOrDefault(x => x.Tags.Contains("Java");
}

Co vam pripada prehlednejsi, citelnejsi a jednodussi na nauceni??

Hlavní na první pohled každý ten kód dělá něco jiného. Ten Javovský vezme všechny články, z nich vybere ty, které mají štítek Java, a z nich vybere první. Ten C# kód vezme články, z nich vezme první nebo výchozí, a u něj asi zkontroluje, zda obsahuje štítek Java. Alespoň to tak vypadá.

Jednodušší na naučení je podle mne to, kde se nic učit nemusím, protože správný význam je patrný i bez učení. Uniká my smysl toho, proč bych se měl učit, že FirstOrDefault může mít jako parametr predikát, který nejprve filtruje množinu a pak až vrací první záznam (proč nedělá třeba to, co jsem popsal výše, tedy že by rozhodl, zda první záznam odpovídá predikátu?), a proč bych se měl učit, že kód musím číst střídavě zleva doprava a zprava doleva.

4864
Studium a uplatnění / Re:C# .NET vs. Java?
« kdy: 25. 02. 2015, 07:11:51 »
Java nedosahnete takovy siroky zaber technologii jako se C#. Napr pomoci C# muzete programovat serverove casti (pomoci Mono i na linuxu), desktop (WinForms a excelentni WPF), web (ASP.NET a novy vNext, ktery je multiplatformni, typescript, hodne podobny C#, atd...), cloud Azure, mobilni aplikace (WP, android a IOS pomoci Xamarin) a dalsi.
Máte naprostou pravdu, jak to, že si toho do dnes nikdo nevšiml? V Javě nikdy nikdo nenaprogramoval žádnou serverovou aplikaci, žádnou desktopovou, žádný web, nic pro cloud, žádnou mobilní aplikaci. Ono vlastně v Javě nebylo naprogramováno nikdy nic. A teprve teď jste to vy odhalil.

4865
Studium a uplatnění / Re:C# .NET vs. Java?
« kdy: 24. 02. 2015, 13:24:25 »
Pokud nechcete mobilní aplikaci psát pro každou platformu zvlášť
Chci, protože ty platformy jsou rozdílné, a napsat to jednou znamená, že to bude špatně na všech platformách.

JDK je má dost úzké API, protože "one size fits all". Zkuste z Javy zjistit jaké na stroji běží služby (services/deamons), jaké jsou naplánované úlohy (Windows Task Scheduler/cron), něco vytisknout, získat obrázek ze scanneru atd.
To není otázka jazyka, ale toho prostředí okolo. Je hezké, že jste vyjmenoval úplně vše, kde má prostředí C# navrch. Ale moc toho není, že?

Navíc jsou dost hrozivě nedodělané i základy, jako operace s časem/datem, named parameters při práci s DB atd.
Co vám vadí na JodaTime, které je i součástí JRE 8? Co vám vadí na JDBC, Spring Data, Hibernate a spoustě dalších knihoven a frameworků, které pro práci s DB existují?

Něco se snaží zalepit Apache Commons, ale je to bída.
Bída je především Apache Commons. Ty byly mezi slepými jednookým králem někdy před deseti lety, dnes máme spoustu nesrovnatelně lepších knihoven. A to, že jsou ty věci v knihovnách, je snad správně – proč by to mělo všechno být v základní platformě?

V .NETu máte k dispozici mnohem širší služby platformy.
To je podle mne nedostatek.

K tomu pak nabídku komponent třetích stran, většinou (na rozdíl od knihoven pro Javu) slušně dokumentovaných.
No ale ta nabídka není moc slavná, že? S tou dokumentací je to také jen nějaký váš výmysl.

BTW první co mě na Javě zarazilo je absence verbatim string literals.
Takovýchhle příkladů najdete u každého jazyka spoustu, a o každé jednotlivě se můžete do krve hádat, jestli je to správně nebo není. U každé najdete zastánce toho, že jazyk má mít jednoduchou syntaxi bez spousty výjimek, jinak potom vypadá, jako když pejsek a kočička vařili dort. A proti nim budou stát zastánci toho, že zrovna tenhle syntaktický cukr je velice užitečná věc a ušetří to triliony dolarů. Abych do tohoto flamewaru také přispěl – zamyslet se nad tím, jestli ona primitivní syntaxe Javy není jedním z důvodů jejího velkého rozšíření. Protože kompletní syntaxi obsáhne programátor za chvilku a v kódu ho pak nepřekvapují různé obskurní shluky symbolů.

A nehovoriac o IDE, ktore ma MS prepracovane a ziadne ine sa nechyta nan. Proste Visual Studio je mocny nastroj.
A proto existuje ReSharper, aby se to slavné Visual Studio alespoň přiblížilo javovským IDE.

4866
Studium a uplatnění / Re:C# .NET vs. Java?
« kdy: 24. 02. 2015, 11:28:23 »
Svět .NETu je to trochu bohatší, a zahrnuje všechno od desktopu, přes web a mobilní aplikace až po server.
Viděl bych to přesně opačně. Třeba ty mobilní aplikace – kolik lidí má mobil s Windows a jaká je tedy poptávka po mobilních Windows aplikacích? Jinak Javovské aplikace začínají ještě dřív, než desktop, můžete je klidné psát třeba pro Raspberri PI. To si s Cx budete muset počkat na dvojku, až na to Microsoft naportuje Windows.

Přechod z Javy na C# bývá poměrně jednoduchý, C# je prakticky nadmnožinou Javy. Naopak je to složitější, protože si připadáte jako když vám někdo uříznul jednu ruku.
A tady bych to viděl také opačně. Vaše tvrzení platí možná pro jazyk, ale když vezmete v úvahu celý ekosystém okolo, bude vám chybět víc než jen jedna ruka.

4867
Software / Re:Hromadná uprava HTML stránok
« kdy: 24. 02. 2015, 10:44:17 »
Používám na takovéhle věci jEdit – má funkci Search in Directory a dají se s ní použít regulární výrazy.

4868
Studium a uplatnění / Re:C# .NET vs. Java?
« kdy: 24. 02. 2015, 08:59:21 »
k comu je dobre presne vediet, ako funguje kompilator?
Když víte, jaké dělá optimalizace, nemusíte se snažit ty samé optimalizace dělat ručně (obvykle ty z kompilátoru budou lepší a budete mít přehlednější kód). Nebo naopak víte, že nějakou optimalizaci ten kompilátor udělat neumí, a že ji tedy musíte napsat ručně. Nebo kód napíšete tak, aby kompilátor rozpoznal o co jde a mohl tu optimalizaci provést (a kdybyste kód napsal jinak, i kdyby dělal to samé, kompilátor by to nerozpoznal). A to se týká jen optimalizací. Dále ten kompilátor může podporovat nějaké rozšíření, které vám usnadní práci nebo zpřehlední kód. Další věc je, že i kompilátory mají chyby, kterým je občas potřeba se vyhnout.

4869
Studium a uplatnění / Re:C# .NET vs. Java?
« kdy: 24. 02. 2015, 07:27:20 »
Jo, filip tam mel hromadu blabolu kolem, ale tohle byla pointa. Je videt ze jsi hloupy ze to nechapes ;-)
Ne, nebyla to pointa. To, že to nechápete, nemusí být jenom tím, že jste hloupý, třeba jsem to já špatně napsal. A nebo prostě jenom máte málo zkušeností.

Za prvé, vypsal jsem různé příklady, aby bylo jasné, že těch znalostí je spousta. Některé, ale ne všechny, které jsem uvedl, vedou na nepřenositelný kód. Znalost toho, jak psát přenositelný kód, je další z těch znalostí a ve skutečnosti je jich zase několik. Znalost, jak psát přenositelný kód v C, mi bude k ničemu, když přejdu na Javu, znalost, jak psát přenositelné aplikace ve Swingu, které budou vypadat a chovat se správně na nejrůznějších platformách, mi bude k ničemu, když přejdu na C#.

Za druhé, přenositelnost není posvátná kráva. U vozítka na Marsu asi těžko budete odůvodňovat, že byste to sice mohl zoptimalizovat, ale pak by to nebylo přenositelné, takže potřebujete výkonnější procesor, tím pádem kapacitnější baterie, větší sluneční panely a spoustu prachů navíc na to, abyste tuhle nadváhu dostal na Mars. Je spousta jiných systémů, třeba mnoho business nebo enterprise aplikací, které jsou provozovány v jediné instanci, a nemá smysl tam řešit přenositelnost. A i u těch přenositelných systémů se řeší optimalizace pro konkrétní architektury nebo i kompilátory. Podívejte se třeba na linuxové jádro, kolik je tam optimalizací pro různé architektury - a nezdá se, že by kvůli tomu bylo nepřenositelné.

4870
Studium a uplatnění / Re:C# .NET vs. Java?
« kdy: 23. 02. 2015, 19:12:51 »
Řekl bych, že ten rozdíl, který pozorujete, je daný tím, že C# pozic je méně, tím pádem je i C# programátorů méně - a tudíž je musí firmy víc shánět, zatímco na Javu se jim okamžitě přihlásí spousta lidí. Jenže v té Javě je nakonec spousta možností, takže po nějakém javovském specialistovi bude stejná sháňka, jako po programátorovi v C#. Akorát to možná firmy nebudou inzerovat stejným způsobem, jako u toho C#, protože by se jim přihlásila spousta studentů, kteří měli Javu 1 semestr.

Jinak pojídač koláčů samozřejmě může programovat v libovolném jazyce a nebude v tom rozdíl (vždycky to bude, jako by to programoval v Cobolu :-) ). Dobrý programátor ale bude vědět, třeba jak funguje jeho C kompilátor a procesory jeho architektury, nebo jak funguje JVM, nebo jak funguje Dalvik a čím se liší různá Android prostředí, nebo jak funguje Swing, nebo jak funguje nějaký aplikační server, atd. atd. Pokud se dostane mimo to své prostředí (kterým není jen jazyk, ten to dělí jen na velmi hrubé úrovni), samozřejmě mu ty jeho znalosti budou k ničemu. Takže sice nebude psát úplně blbý kód, ale nebude to stejně špičkový kód, jako když je v té své oblasti. Na druhou stranu, i ten záběr špičkového programátora bývá široký a různorodý, takže se snadno může stát, že dostane úplně jiný úkol, a odvede stejně špičkový výkon - protože se nedostal mimo oblast toho, co perfektně umí, jenom se v ní přesunul na jiné místo.

Nebo se na to můžete podívat jinak. Tím, že je C# pozic méně, je vlastně určitou specializací už ten jazyk - a trochu se očekává, že programátor v C# bude umět "všechno", takže nejspíš nebudete mít možnost jít tak do hloubky. Na druhou stranu, když o sobě píšete jako o "Java programátorovi", ani v té Javě nejspíš nejste nijak specializován a přechod k C# pro vás žádná ztráta nebude. Naopak určitě bude v životopisu dobře vypadat, že máte reálné zkušenosti s oběma světy, protože spousta firem si řekne "teď nabíráme na pozici Java programátora, ale až tenhle projekt skončí a vyhrajeme tamten C# projekt, budeme ho tam moci přesunout".

4871
Sítě / Re:Pravidla domácího IPv6 firewallu
« kdy: 22. 02. 2015, 21:01:29 »
Pouziti kvalitni ochrany typu L2/L3 firewall a aplikacni firewall na koncovych strojich je prakticky jedina moznost jak chranit koncove stroje.
Co na těch koncových počítačích běží za nebezpečné služby, že je potřeba je chránit firewallem? Není lepší služby, které tam běžet nemají, vypnout, a služby, které tam běžet mají (což v domácí síti bud možná nějaký NAS) zabezpečit?

Z toho vseho mi vyplyva ze pokud IPv6 opravdu nepotrebuji, nevidim duvod proc mit vubec IPv6, nebo 6to4 rozhrani vubec zapnute.
Já zase nevidím důvod, proč konfigurovat nějaký firewall, když tomu dotyčný nerozumí. V případě firewallu totiž vůbec nejde o to, zda ho někdo nebo nemá, ale jestli ho umí správně nastavit, správně používat. Nechápu tuhle módu, kdy každý, kdo umí něco naklikat, má pocit, že musí mít firewall. Řekl bych, že je to úplně stejné, jako se zbraní - když ji jenom máte a neumíte ji používat, může to být kolikrát horší, než ji nemít vůbec.

4872
Server / Re:Vlastnoručne podpísané SSL certifikáty
« kdy: 17. 02. 2015, 14:18:28 »
a jakej je vlastne rozdil mezi self signed certificate a normalnim?
Normální certifikát je podepsaný certifikační autoritou, tedy někým dalším. Self-signed certifikát je podepsán sám sebou (privátním klíčem, který přísluší k veřejnému klíči, ke kterému je certifikát vystaven). Kořenové certifikáty jsou self-signed.

4873
Server / Re:Vlastnoručne podpísané SSL certifikáty
« kdy: 14. 02. 2015, 22:06:58 »
Certifikační autorita dělá to, že svým podpisem potvrdí, že údaje na certifikátu jsou pravdivé. Tedy že když někdo chce vystavit certifikát např. na doménu root.cz, že je opravdu vlastníkem této domény. Takovou certifikační autoritu si ale může udělat kdokoli, ostatně když jste si sám podepsal certifikát, vlastně jste také takovou certifikační autoritou. Vy ale samozřejmě chcete důvěřovat jen certifikátům vydaným důvěryhodnými certifikačními autoritami, tedy takovými, u kterých věříte, že před vydáním certifikátu ty údaje opravdu prověří. Správně byste tedy měl začít s prázdným seznamem certifikačních autorit a do něj postupně přidávat ty, které si nějak ověříte a kterým důvěřujete.

Tvůrci prohlížečů si tu zodpovědnost výběru důvěryhodných autorit berou na sebe, takže vám ten seznam "důvěryhodných" autorit předvyplní desítkami certifikačních autorit (a slovo "důvěryhodný" tak dostane pěknou ozdobu v podobě uvozovek). Tím, že na sebe autoři prohlížečů berou tuhle zodpovědnost (a jejich špatné rozhodnutí ovlivní miliony lidí), mají samozřejmě nějaké podmínky pro to, aby se certifikát certifikační autority dostal do toho jejich seznamu. A to se svým podomácku vyrobeným certifikátem nesplníte ani náhodou. Tudy cesta nevede.

Pokud se jedná o jeden web a pár kamarádů, kteří nepoužívají moc počítačů, je nejjednodušší, že si vydáte certifikát s dlouhou platností, a oni si jej nainstalují. Ostatně, když se na ten web budou chtít dostat, prohlížeč je k instalaci prakticky donutí - když se chcete dostat na web s certifikátem, kterému prohlížeč nedůvěřuje, ale zároveň si ten certifikát nechcete nainstalovat do prohlížeče natrvalo, musíte být dost ostražitý a ve správném okamžiku prohlížeči v instalaci zabránit.

Pokud jde stále o jeden web, těch kamarádů je víc nebo chcete, aby to měli komfortní a nemuseli nic potvrzovat, můžete si od StartSSL nechat vydat certifikát zadarmo na rok (a za rok zase). StartSSL má svůj certifikát ve všech běžně používaných prohlížečích, takže se pak na váš web každý dostane bez divných hlášek. Je potřeba se připravit na to, že u StartSSL klasicky místo peněz platíte svým časem - vydání certifikátu není moc intuitivní, občas mají systémy přetížené, takže se nějaká akce neprovede a vy nevíte proč atd. Takže to chce obrnit se trpělivostí. (I když je pravda, že s tou intuitivností to není slavné ani u placených certifikátů, to asi aby si majitel certifikátu uvědomil, že to není žádná prča a měl pocit, že za něco tak složitého si certifikační autorita ty peníze fakt zaslouží.)

Pokud byste těch webových adres měl víc, pěkně to poleze do peněz. Nebo byste musel kamarády přesvědčit, že jste důvěryhodná certifikační autorita a ať si nainstalují váš kořenový certifikát. Jenže pak byste klidně mohl podepsat certifikát na adresu google.com a prohlížeče kamarádů by tomu důvěřovaly - já nemám moc kamarádů, jejichž kořenový certifikát bych si do systému nainstaloval.

V budoucnosti bude možné použít DANE, tj. certifikát pro doménu bude umístěn v DNS a ověřen přes DNSSEC. Certifikační autority se pak vrátí ke své původní funkci a k tomu, co dnes nabízejí jako EV (extended validation) certifikáty - tedy nebudou ověřovat jenom to, zda jste oprávněným vlastníkem domény, ale hlavně kdo jste. (Protože klidně můžete být oprávněným vlastníkem domény komercni-banka.cz, ale s Komerční bankou nemusíte mít nic společného. A příkaz k úhradě asi nechcete dávat někomu, kdo má zrovna nějakou hezkou doménu, ale pouze na webu, který vlastní opravdu Komerční banka). Jenže co se týče podpory DANE, dělí se dnes webové prohlížeče na dvě skupiny - na ty, které DANE nepodporují vůbec, a na ty, které DANE podporují pouze přes nějaký plugin třetí strany. Takže si ještě nějakou dobu počkáme.

4874
O serveru Root.cz / Re:Budoucnost fór na Rootu
« kdy: 13. 02. 2015, 19:34:28 »
Každý pokus o nějaký druh moderování diskuze nebo lustraci diskutérů obvykle způsobí menší nebo větší úpadek.
Podle mne je to přesně naopak. Porovnejte si, jak vypadalo Abclinuxu.cz před pár lety, když tam byli ještě aktivní moderátoři, a jak vypadá dnes. Problém je, že aby na Root v současném stavu mělo moderování pozitivní vliv a vyhnalo trolly zpět na Novinky, muselo by těch moderátorů být několik, aby to stíhali.

4875
Sítě / Re:Server, veřejná IP, dvě firmy - jak nastavit?
« kdy: 12. 02. 2015, 10:54:18 »
Napadení stanic ze serveru bych neřešil, protože v praxi je kompromitace samotných stanic daleko pravděpodobnější.
Psal jsem to proto, že je potřeba si uvědomit, že kvůli tomu serveru je udělaná „díra“ do NATu a firewallu, která propouští dovnitř sítě provoz navázaný zvenku. Je tedy potřeba si to víc pohlídat, aby ta díra neumožňovala přístup někam jinam (což je snazší) a aby se útočník nemohl dostat někam jinam přes ten server – např. že z venku pošle UDP paket se zfalšovanou zdrojovou IP adresou, server na ten paket odpoví a odpověď pošle do vnitřní sítě.

Stran: 1 ... 323 324 [325] 326 327 ... 375