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

Předpověď počasí v terminálu & Relační roury

vydáno: 14. 8. 2021 02:14, aktualizováno: 18. 8. 2021 19:58

Když nepočítám televizi a rozhlas, pro předpovědi počasí si většinou chodíme na nějakou webovou stránku, kterou si zobrazujeme v prohlížeči. Dnes si ukážeme, jak si stáhnout předpověď počasí ve formátu XML přes API poskytovatele a zobrazit si ji v textovém terminálu díky jednoduchému skriptu, který si napíšeme.

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.

Komplexita softwaru: Řešení a prevence

vydáno: 18. 5. 2020 02:30, aktualizováno: 3. 2. 2024 20:34

Třetím dílem dnes zakončíme sérii věnovanou komplexitě softwaru (co to je, jak vzniká). Podíváme se na možná řešení tohoto problému a zejména na prevenci, protože úspěšný boj s komplexitou zpravidla začíná už v době návrhu.

Komplexita softwaru: Jak vzniká?

vydáno: 8. 3. 2020 23:34, aktualizováno: 22. 11. 2020 14:55

Dnes se podíváme na příčiny vzniku komplexity, a navážeme tak na předchozí díl této série.

Komplexita softwaru: Co to je a proč představuje problém?

vydáno: 29. 2. 2020 23:45, aktualizováno: 10. 11. 2023 01:05

Když dělník kope příkop nebo zedník staví zeď, má se za to, že každý metr představuje část hotové práce a budoucí užitek. Jistě, občas se stane, že se příkop nebo zeď udělají někde jinde, než měly být, nicméně to není moc časté a tyto chyby se obvykle rychle odhalí. Ale když programátor píše (či jinak vnáší) kód zapojený do výsledného produktu, nemůžeme říci, že bychom se s každým dalším řádkem kódu blížili cíli. Spojitost mezi množstvím kódu a budoucí užitečností je velice nejistá. Ba naopak – množství zdrojového kódu je třeba vnímat spíše jako negativní hodnotu a budoucí náklad, než jako hotový díl práce (pozitivní hodnota). Pokrok můžeme měřit množstvím implementovaných požadavků, ale určitě ne množstvím kódu.

CLOC: počítáme řádky kódu

vydáno: 30. 9. 2015 23:10, aktualizováno: 21. 9. 2020 16:08

Když si stáhnu zdrojové kódy nějakého programu, jednou z prvních věcí, které zkoumám, je, v čem je to napsané a kolik toho je. Počet řádků kódu považuji za celkem důležitý ukazatel, ale o tom zase někdy příště… Programovací jazyk můžeme zjistit podle přípon souborů nebo nahlédnutím do nich. Řádky zase můžeme spočítat pomocí příkazu wc z GNU coreutils. Ale pro tyto úkoly existuje daleko lepší specializovaný nástroj, který se jmenuje cloc (Count Lines of Code).

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: 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.

XML Web generátor – verze 0.4

vydáno: 6. 7. 2012 21:22, aktualizováno: 27. 7. 2020 00:00

V případě mého programu XML Web generátor chybí projektový a produktový management a vývoj probíhá zcela živelně. Vydání nové verze znamená, že se urodil dostatek nových funkcí, aby stálo za to a tom napsat. Kvalitáři by z toho neměli radost, ale myslím, že u takovýchto programů to tak prostě má být :-)

XML Web generátor – verze 0.3

vydáno: 8. 1. 2012 17:32, aktualizováno: 18. 7. 2020 13:32

Zase jsem po večerech a ve chvílích volna udělal trochu práce na svém generátoru webových stránek. Takže tady je souhrn novinek. Pokud nevíte, o co jde, přečtěte si nejdřív úvod: XML Web generátor. Nejzajímavější jsou na něm tzv. makra, která umožňují vkládat do generovaných stránek různé věci pomocí jednoduchých značek (podobné jako XHTML značky, akorát se nachází ve vlastním jmenném prostoru).

Distribuované verzovací systémy: Mercurial – úvod

vydáno: 24. 11. 2011 21:58, aktualizováno: 10. 8. 2020 10:42

Předchozí díl tohoto seriálu byl věnovaný teorii distribuovaných verzovacích systémů. Dnes se konečně podíváme prakticky na jeden z nich – Mercurial (zkráceně Hg). Kromě úplných základů (přidávání souborů pod správu verzí, mazání, přejmenovávání…) si také ukážeme, jak se vracet ke starším verzím a jak si verze pro větší přehlednost označovat pomocí štítků.

Distribuované verzovací systémy: úvod

vydáno: 20. 1. 2011 02:59, aktualizováno: 16. 6. 2022 23:08

Verzovací systémy jsou jedním z nejdůležitějších vývojářských nástrojů a užitečné mohou být i jinde. V současné době jsou v módě distribuované verzovací systémy – dnes se na ně tedy podíváme teoreticky a v dalších dílech se budeme věnovat prakticky jednotlivým implementacím.

Verzovací systémy – svn, git, hg – svatá válka?

vydáno: 29. 12. 2009 13:32, aktualizováno: 10. 6. 2022 22:42

Který z nich je nejlepší? Nebo je lepší ještě nějaký jiný (CVS, P4 - Perforce, ClearCase, BZR)? Skvělé téma do internetových diskusí. Můžete se o nich hádat podobně jako o tom zda je lepší VIM nebo Emacs, případně jestli se má používat editor nebo IDE.

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); }

Proč psát programy česky?

vydáno: 4. 6. 2009 15:15, aktualizováno: 10. 9. 2014 14:14

Krátké zamyšlení pocházející z jedné diskuse o tom, v jakém jazyce (nikoli programovacím) psát zdrojové kódy.

Posílání zpráv pomocí fronty (POSIX MQ)

vydáno: 7. 4. 2009 12:15, aktualizováno: 22. 4. 2019 17:07

V operačních systémech odpovídajících standardu POSIX jako je např. GNU/Linux nebo Mac OS máme k dispozici systém front. Jedná se o něco podobného jako JMS, ale na nižší (systémové) úrovni. Tato technologie nám umožňuje vytvářet pojmenované fronty (názvy začínají lomítkem). Do těchto front můžeme posílat zprávy a následně je z fronty vybírat. Fronty jsou tak použitelné pro asynchronní meziprocesovou komunikaci (IPC).

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).

Mercurial? Co to je?

vydáno: 14. 3. 2009 23:26, aktualizováno: 12. 8. 2020 11:29

Jednoduchý návod jak si stáhnout zdrojáky nacházející se v mém mercurialovém úložišti.