Úžasné překlady

Dnes jsme narazili na krásný překlad. Zkuste si na debianu/ubuntu spustit příkaz apt-get. Jako poslední řádek dostanete tento text:

Tato APT má schopnosti svaté krávy.

V angličtině je zde text:

This APT has Super Cow Powers.

Další libůstkou je výstup programu dd:

0+0 vstoupivších záznamů
0+0 vystoupivších záznamů

v angličtině:

0+0 records in
0+0 records out

Skenování přes web

Nedávno jsme narazili na problém, jak skenovat soubory přes web. Tvoříme informační systém formou webové aplikace a potřebujeme skenovat velké množství dokumentů.

Řešení, kdy uživatel naskenuje dokument v nějaké aplikaci, a pak jej nahraje (tzv. uploadne) na web, je nereálná. Potřebujeme rychlé oboustranné skenování s podavačem. Uživatel se nesmí zdržovat skenováním náhledu, definicí výřezu, rozlišením a barevnou hloubkou. Už vůbec by neměl být zdržován tím, že se soubor nahrává někam na internetový server.

Proto jsme začali uvažovat o nějakém jednodušším řešení (z hlediska jednoduchosti používání).
Pokračování textu Skenování přes web

Čtečky čárového kódu na webu

Při psání informačního systému jsme narazili na nutnost využít čtečky čárového kódu.

Tato zařízení jsou dnes poměrně levná a spolehlivá. V první chvíli jsme se obávali jejich použití v prostředí webové aplikace. Naštěstí vše bylo jednodušší než jsme čekali.

Většina čteček se chová jako další klávesnice. My jsme využili USB variantu, která přímo implementuje HID protokol pro klávesnici. Pokud přečtete čárový kód, čtečka pošle odpovídající znaky do počítače jako stisky kláves.

Abychom zabránili vepsání čárového kódu do libovolné položky formuláře na stránce, naprogramovali jsme čtečky tak, aby před odesláním znaků poslaly i stisk klávesy Shift+F12 a po dokončení klávesu Enter. Poznáme tedy, že uživatel použil čtečku a nikoliv klávesnici, zobrazíme skryté zadávací pole (pomocí JavaScriptu) a po dokončení, díky klávese Enter, se formulář sám odešle.

Pro generování a tisk čárových kódů používáme program UJAC a do čárového kódu ukládáme nejen čísla, ale i znaky (v podstatě jde použít jen A-Z a a-z).

Zajímavý je také způsob programování čteček. Je s nimi dodáván obslužný program. V něm vytvoříte nastavení, které pak jako soubor čárových kódu vytisknete. Čtečku pak k vytištěným kódům postupně přikládáte a tím jí nastavíte. Zajímalo by mne zda je možné tímto způsobem přeprogramovat čtečky v supermarketech 🙂


Klíčová slova: čtečka, čárový kód, webová aplikace, web, barcode reader

PostgreSQL 8.1 – znatelné zrychlení

V současné době vytváříme informační systém, který jako svojí databázi využívá PostgreSQL. V produkčním prostředí jsme používali verzi 7.4.

V poslední době jsme pro vývoj začali používat verzi 8.1.

Protože velmi často používáme složité dotazy s velkým množstvím "joinů" a podmínek, museli jsme vytvářet složené indexy pro různé kombinace podmínek a i přesto je často databáze nedokázala využít. Tato verze však přináší novou vlastnost "Bitmap Scan", a dokáže tak kombinovat více jednoduších indexů. Protože nemusíte vytvářet složené indexy, ušetříte paměť/IO operace/místo na disku a zvýšíte rychlost vkládání záznamů. Dokáže také častěji najít kombinaci indexů pro dotaz.

Další zajímavou vlastností PostgreSQL je od verze 8.0 možnost provozu více verzí databáze současně (toto zpětně zprovoznili i pro verzi 7.4) a také skvělá podpora platformy Windows.

Z PostgreSQL se stává velmi dobrá databáze.

Využití OpenSSL certifikátu k podepsání JAR souboru

Využít existující certifikát OpenSSL (vygenerovaný např. vlastní certifikační autoritou) k podepsání JAR souboru (např. pro JavaWebStart) není zrovna jednoduchý úkol. Chtěl bych vám popsat návod jak jsme to vyřešili my. K vygenerování OpenSSL certifikátu můžete použít např.

Předpokládejme, že máme certifikát i klíč uloženy v jednom souboru ve formátu PEM.
Nejdříve musíme vše vyexportovat z formátu PEM do PKCS12. Důležité je pojmenovat certifikát v uložišti, protože se na něj budeme později odkazovat při podepisování JAR souboru.

openssl pkcs12 -export -in SoftEU-JavaWebStart.pem -out SoftEU-JavaWebStart.p12 -name softeu

Akce (export do PKCS12) se provádí jen jednou. Tím jsme získali úložiště, se kterým už jarsigner dokáže pracovat. JAR podepíšeme:

jarsigner  -keystore SoftEU-JavaWebStart.p12 -storetype pkcs12 target/softeu-scan-1.jar softeu

A výsledek zkontrolujeme:

jarsigner -verify target/softeu-scan-1.jar


Klíčová slova: jar sign openssl convert keytool java keystore

PostgreSQL a priorita dotazů

Naše databázová aplikace obsahuje dva druhy akcí – "interaktivní" a "na pozadí". Interaktivní jsou takové akce, které vyvolal uživatel a čeká na jejich výsledek (např. výpis záznamů). Akce na pozadí jsou spouštěny automaticky a provádějí různé dlouhotrvající práce (např. přepočet aktuálních úroků pro nový den). Téměř všechny akce na pozadí spouštíme v noci a žádný uživatel nečeká na výsledek.

Někdy je třeba spustit akce na pozadí i v době, kdy je systém vytížen interaktivními akcemi. V takových případech se může stát, že se běh interaktivních akcí zpomalí.
Pokračování textu PostgreSQL a priorita dotazů

Proč se vydávájí produkty se známými chybami

Adam Hauner mně upozornil na zajímavý článek na témá, proč se vydávají produkty se známými chybami.

Cituji z článku:

  • vydáte verzi se známou chybou, protože se staráte o kvalitu kódu tak moc, že rozhodujete, které chyby jsou ještě akceptovatelné a které už ne
  • vydáte verzi se známou chybou, protože je lepší vydat produkt s úrovní kvality, která je známá než vydat produkt, který je plný překvapení
  • vydáte verzi s chybami, protože druhou možností je opravit je a riskovat možnost zanesení dalších chyb, které mohou být ještě horší než ty, které máte teď

Doporučuji k přečtení.

Celý článek My life as a Code Economist uveřejněný na blogu autora.

Automatizované testování aplikací

Dnes proběhla další, a letos poslední, přednáška v rámci předmětu ZČU "Trendy a technologie v softwarovém inženýrství". Opět jsem přednášel já (Petr Ferschmann) a obsah je přístupný (a také jako zip).

Nástroje použité v přednášce:

Články o tomto tématu: