FK~

Moje odkazy

Ostatní odkazy

Close Windows
Nenajdete mě na Facebooku ani Twitteru
Rozpad EU
Jsem členem FSF
There Is No Cloud …just other people's computers.
Sane software manifesto / Manifest příčetného softwaru

Blok finally při odchytávání výjimek: C++ vs. Java

vydáno: 29. 10. 2024 22:20

Programovací jazyky C++ i Java implementují výjimky (exceptions) pro ošetřování chyb resp. řízení toku programu při chybových stavech. V bloku try provádíme operace, které mohou selhat a vyhodit výjimku. V bloku catch tuto případnou výjimku zachytíme a nějak na ni reagujeme. V blogu finally pak máme kód, který se má provést vždy, bez ohledu na to, zda výjimka vyletěla nebo ne – typicky jde o kód, který zavírá zdroje, uvolňuje paměť nebo dělá jiný úklid. Na rozdíl od Javy jazyk C++ blok finally nemá. Není to zvláštní, když v C++ je jinak prakticky vše, co lze vymyslet? V dnešním článku si ukážeme, jak v C++ vytvořit obdobu bloku finally a následně i lepší řešení, která jsou pro C++ přirozenější.

Jména a jmenné prostory, URI, RDF, OID, UUID či Tor

vydáno: 4. 8. 2020 16:32, aktualizováno: 27. 2. 2024 19:29

Když se řekne „jmenný prostor“, hodně lidí si představí xmlns v XML nebo balíčky v Javě odvozené od internetových domén. Jmenné prostory jsou ale obecný koncept, se kterým se setkáme prakticky všude a odvozovat je můžeme i jinak. Dobře definovaná jména (názvy) jsou pak nutným předpokladem prakticky veškerého uvažování a komunikace. V tomto článku se podíváme na různé příklady jmenných prostorů a souvislosti mezi nimi. Ukážeme si, jak vytvořit jmenný prostor i bez placení a internetové domény – a dokonce i anonymně a bez závislosti na nějaké centrální autoritě. Nahlédneme do zajímavého světa RDF a ukážeme si, jak vytvářet URI, která budou globálně unikátní jednou provždy.

Java a unixové doménové sokety, FD, systemd a xinetd

vydáno: 4. 6. 2019 16:32, aktualizováno: 18. 2. 2024 01:10

Internet běží sice převážně na TCP/IP, ale v rámci jednoho počítače máme i vhodnější způsoby komunikace. V tomto článku se podíváme na unixové doménové sokety a jejich použití v Javě. Předáme si souborové popisovače (FD) z rodičovského procesu potomkovi a ukážeme si princip socket activation. Nakonfigurujeme si služby v klasickém xinetd i moderním systemd a nakonec propojíme Jetty a Apache HTTPD pomocí unixového soketu.

Java a záludnost ternárního operátoru

vydáno: 1. 7. 2017 22:16, aktualizováno: 1. 7. 2017 22:24

Ternární operátor většinou bereme jako stručnější, ale obsahově totožný, zápis if-else bloku, v jehož větvích jen nastavujeme proměnnou nebo vracíme hodnotu. Jsou ale vždy tyto zápisy ekvivalentní? Můžeme automaticky nahrazovat stávající kód ternárními operátory?

binfmt_misc: spouštíme javovské programy podobně jako nativní binárky

vydáno: 20. 6. 2015 20:03, aktualizováno: 20. 6. 2015 21:57

Programy napsané v jazyce Java se překládají do tzv. bajtkódu a pro jejich spuštění je – na rozdíl od nativních binárek jako ELF – potřeba běhové prostředí (JRE). Programy v Javě tedy spouštíme pomocí příkazů typu: java NázevTřídy # nebo častěji: java -jar program.jar Linux (jádro) ale obsahuje mechanismus, umožňující spouštět programy v různých (interpretovaných) jazycích stejně jako nativní binárky – stačí tedy souboru nastavit spustitelný příznak (chmod +x) a spustit bo pouhým zadáním jeho názvu – např. program.jar.

Přepisujeme soukromé proměnné v Javě pomocí reflexe

vydáno: 13. 6. 2015 22:56, aktualizováno: 14. 6. 2015 12:40

Java je (primárně) objektově orientovaný jazyk a máme zde zapouzdření – k soukromým (privátním) proměnným cizího objektu nemůžeme přímo přistupovat – objekt si je může měnit jen sám a ostatním to může dovolit jen nepřímo přes svoje metody. Přesto Java nabízí způsob, jak zapouzdření obejít – reflexe.

Java 8: Stream API

vydáno: 17. 1. 2015 23:23, aktualizováno: 9. 3. 2015 00:11

Dnes si na praktických příkladech ukážeme další novinky v Javě 8. Lambda výrazy, kterými jsme se zabývali minule, tu nejsou jenom pro okrasu – používají se ve standardní knihovně a umožňují elegantní práci s proudy objektů skrze nové Stream API.

Java a princip RAII (SBRM, CADRe) známý z C++

vydáno: 9. 9. 2014 10:06, aktualizováno: 5. 11. 2023 13:24

C++ nemá garbage collector (GC) a navíc si s sebou táhne historické dědictví jazyka C a ruční správy paměti. Proto je spousta programů v C/C++ docela peklo a udržovat kód prolezlý pointery je procházka minovým polem. Ale nemusí tomu tak být – v moderním C++ se používá princip RAII a další vymoženosti.

Java 8: lambdy, uzávěry a platnost proměnných

vydáno: 5. 9. 2014 11:32, aktualizováno: 7. 9. 2014 18:52

Lexikální uzávěr (closure) je tvořený funkcí a prostředím, ze kterého pochází (proměnné, metody…). Odkaz na funkci můžeme předávat dál a funkce tak putuje naším programem – ale stále má vazbu na kontext, ve kterém vznikla, a může používat jeho proměnné a metody. Ale má to určitá pravidla.

Java 8: coalesce – hledáme neNULLové hodnoty

vydáno: 11. 8. 2014 20:54, aktualizováno: 12. 8. 2014 10:22

Jednou z věcí, která mi v Javě vždycky trochu chyběla, je funkce coalesce(). Možná ji znáte z PostgreSQL. Funkce přijímá na vstupu více hodnot a vrací první z nich, která není NULL. A hodnotu NULL vrací pouze v případě, že jsou všechny vstupní hodnoty NULL. Hodí se to třeba při práci s mezipamětí nebo pro nastavování výchozích hodnot v případě, že chybí specifické.

Java 8: novinky jazyka

vydáno: 9. 8. 2014 13:24, aktualizováno: 18. 7. 2020 13:33

Přiznám se, že změn v osmé verzi Javy jsem se trochu obával. Ale nakonec, když jsem to trochu víc prozkoumal a zkusil si napsat nějaký ten kód, tak se mi to líbí. Mám z 8 radost.

Nová verze SQL klienta SQL-DK v0.9

vydáno: 6. 4. 2014 21:36, aktualizováno: 7. 9. 2014 18:58

Původně jsem chtěl vydat až verzi 1.0, ale jednak se od minula nastřádalo pár změn a jednak se mi nechtělo do některých věcí naplánovaných do 1.0, takže tu máme ještě verzi 0.9. Pokud nevíte, o čem je řeč, píšu dávkového/terminálového klienta pro relační databáze.

Java a rozšířené atributy souborů

vydáno: 22. 1. 2011 19:42, aktualizováno: 26. 12. 2023 13:14

Java ve své sedmé verzi přinese řadu zajímavých vlastností. Jednou z nich je i podpora práce s rozšířenými atributy souborů, což je funkcionalita poskytovaná souborovým systémem, která umožňuje k souborům ukládat metadata. V dnešním článku si povíme obecně o rozšířených atributech a ukážeme jak s nimi snadno pracovat v Javě (díky OpenJDK 7).

Java na serveru: posílání e-mailů a CAPTCHA

vydáno: 23. 3. 2010 15:19, aktualizováno: 18. 7. 2020 13:42

Dnes se opět budeme věnovat praktickým ukázkám a naší aplikaci. Po předchozím díle o vlastních JSP značkách a servletech se dnes podíváme na to, jak z Javy na serveru posílat e-maily a jak chránit aplikaci proti spamu pomocí tzv. CAPTCHA.

Java na serveru: Vlastní JSP značky a servlety

vydáno: 16. 3. 2010 17:18, aktualizováno: 21. 9. 2020 16:08

Po minulém teoretičtějším dílu seriálu budeme dnes zase trochu programovat. Naučíme se, jak vytvářet vlastní JSP značky a funkce, které nám ušetří psaní a pomáhají vytvářet znovupoužitelný kód. A ukážeme si jak vytvořit jednoduchý servlet, který klientům zpřístupní fotky z externího adresáře.

Java na serveru: porovnání Javy a PHP

vydáno: 9. 3. 2010 15:29, aktualizováno: 18. 7. 2020 13:10

Dnes na chvíli vybočíme z praktické linie tohoto seriálu a budeme se místo další práce na naší aplikaci věnovat obecnějšímu srovnání Javy a PHP na webu. Podíváme se na ně jak z hlediska jazykového, tak i z pohledu nasazení na server a hostingu.

Java na serveru: bezpečnost a EJB

vydáno: 4. 3. 2010 17:13, aktualizováno: 22. 9. 2014 16:54

Dnes budeme pokračovat v tématu zabezpečení aplikace. Od ukládání uživatelů do souboru přejdeme k praktičtější autentizaci vůči databázi. A do naší aplikace doplníme registrační formulář pro nové uživatele.

Java na serveru: autorizace a autentizace

vydáno: 25. 2. 2010 14:07, aktualizováno: 22. 9. 2014 16:54

Po předchozím díle o lokalizaci a formátování přistoupíme k dalšímu důležitému tématu. Tím je bezpečnost. Ukážeme si jak v Javě autorizovat a autentizovat uživatele a jak jim umožnit přístup jen tam, kam ho mít mají. Také naše výuková aplikace trochu pokročila – umí přidávat záznamy o podnicích do databáze. Pro začátek neuškodí zopakovat si dva základní pojmy – aneb „autorizace je když…“

Java na serveru: lokalizace a formátování

vydáno: 18. 2. 2010 17:38, aktualizováno: 18. 7. 2020 13:42

Po dvou databázových dílech seriálu, které mohly být pro některé čtenáře trochu náročnější, dnes přistoupíme k o něco lehčímu tématu. Budeme se zabývat lokalizací naší webové aplikace a formátováním výstupu. A na závěr si ukážeme jeden tip pro příznivce svobodného softwaru.

Spring JdbcTemplate?

vydáno: 12. 2. 2010 00:28, aktualizováno: 12. 12. 2013 15:23

Když vytváříte datovou vrstvu své aplikace, narážíte někdy na nutnost psát hodně nudného a opakujícího se kódu – získat spojení z databáze, nastavit parametry dotazu, odchytávat výjimky, uzavírat spojení… Proto existují různé pomůcky, které nám práci usnadní. Jednou z nich je JdbcTemplate z frameworku Spring. Dnes se podíváme na to, s čím nám pomůže a od čeho nás naopak nezachrání – prostě trochu střízlivější pohled, než najdete ve většině tutoriálů. Článek si přečtěte na serveru sql-vyuka.cz.

Java na serveru: práce s databází II

vydáno: 11. 2. 2010 11:04, aktualizováno: 22. 9. 2014 16:54

V předchozím díle jsme začali téma práce s databází, naučili jsme se k ní přistupovat pomocí JSP značek a napsat si vlastní zjednodušenou DAO vrstvu. Dnes se budeme věnovat dvěma pokročilejším způsobům přístupu k databázi – použití třídy JdbcTemplate a ORM Hibernate.

Java na serveru: práce s databází

vydáno: 27. 1. 2010 05:47, aktualizováno: 22. 9. 2014 16:53

Prakticky každá aplikace potřebuje někam ukládat a odněkud načítat data. K tomu se obvykle používají databáze. Dnes se podíváme na to, jak se z naší aplikace připojit k relační databázi a provádět základní operace.

Java na serveru: první web

vydáno: 12. 1. 2010 18:17, aktualizováno: 21. 9. 2014 15:54

Minule jsme řešili spíše administrativní záležitosti. Dnes se podíváme na hlavní komponenty, ze kterých se webová aplikace psaná v Javě skládá, Seznámíme se se základy JSP a JSTL. Probereme podrobněji deployment. Naučíme se ošetřovat HTML výstup a nastavit si vlastní chybové stránky.

Java na serveru: úvod

vydáno: 23. 12. 2009 01:31, aktualizováno: 18. 7. 2020 13:36

Java není jen skvělý objektově orientovaný jazyk. Je to i platforma, kterou můžeme použít pro tvorbu svých webových aplikací. Stejně jako ji můžeme použít pro vývoj aplikací pro desktop nebo mobilní telefony. Java je dospělá a léty prověřená technologie, přesto však moderní a stále se rozvíjející. Přes tyto přednosti se mezi běžnými webovými vývojáři netěší takové oblibě a bývá považována za něco, co patří jen do bank a velkých podniků. Důvod je prostý – prakticky 100% hostingů nabízí obvyklý LAMP (GNU/Linux + Apache + MySQL + PHP). Zatímco sehnat hosting pro Javu je složitější nebo přinejmenším dražší. Naštěstí s rozmachem VPS hostingů se situace lepší. Také platí, že prakticky každá větší než malá aplikace dostane dedikovaný server nebo alespoň virtuální stroj. Takže prostor pro Javu tu je. Ale pak zase nejsou lidi, protože jsou všichni odkojení PHP a psaním webů pro LAMP. Proto vznikl tento seriál. Doufám tedy, že se řady českých javistů rozrostou o nové vývojáře.

SQL Výuka

vydáno: 22. 8. 2009 16:22, aktualizováno: 18. 7. 2020 13:40

SQL je skvělý jazyk, který slouží k psaní databázových dotazů a obecně k práci s relačními databázemi. Naučit se ho není těžké, naopak, SQL příkazy jsou přirozené a logické. Zvládnout to může téměř každý. Bohužel většinu lidí odradí nutnost instalovat a konfigorovat databázový systém nebo jiný software, a tak SQL zůstává převážně doménou informatiků. To je škoda. Proto jsem napsal program SQL Výuka – teď stačí otevřít webový prohlížeč a můžete s SQL začít hned.

Procházení kolekce a null v Javě

vydáno: 19. 8. 2009 22:33, aktualizováno: 6. 1. 2014 12:19

Pravděpodobně už jste narazili na nutnost ošetřovat různé nestandardní případy, např. když vaší metodě někdo podstrčí jako parametr null. Mějme tento kód: Collection<String> kolekce = …; for (String s : kolekce) { System.out.println(s); }

Debian/Ubuntu a Java: nastavení správné verze

vydáno: 30. 6. 2009 10:49, aktualizováno: 29. 1. 2014 18:01

V operačním systému můžeme mít nainstalováno více verzí Javy, např. OpenJDK a Sun JDK. Požadovanou Javu si nastavíme jako výchozí pomocí tohoto příkazu:

Ukázka ORM – Hibernate JPA

vydáno: 15. 3. 2009 00:09, aktualizováno: 9. 9. 2021 21:13

Objektové programování a relační databáze, to jsou dva dost odlišné světy. K jejich propojení můžeme použít objektově relační mapování (ORM). Ne vždy je to nejlepší cesta a rozhodně to není cesta jediná, ale když už čtete tuhle stránku, předpokládám, že víte, do čeho jdete :-) V dnešním článku se podíváme na jednoduchý příklad použití ORM v podání aplikačního serveru Glassfish a Hibernate (použijeme ho jako poskytovatele JPA).

Java keytool: Input not an X.509 certificate

vydáno: 30. 8. 2008 20:31, aktualizováno: 15. 9. 2014 00:37

Při importu certifikátu do Javové klíčenky na nás může vyskočit nepříjemná chyba Input not an X.509 certificate. Jednou z příčin je, že máme certifikát v nesprávném formátu.