úterý 26. září 2006
Video k zamyšlení
Já, muslim (cca 28 minut) je sonda České televize natočená převážně skrytou kamerou v pražské mešitě na Černém mostě. Za odvysílání byla na Českou televizi podána stížnost u Rady pro rozhlasové a televizní vysílání, nicméně rada správní řízení zastavila.
neděle 17. září 2006
Ze života Hibernate
(Původně vyšlo 17. září 2006, aktualizováno 13. února 2008)
Tenhle spot bych chtěl pojmout jako takovou symbolickou omluvu Marovi, kterému jsem tvrdil, že v Hibernate (což je řekněme nástroj pro ulehčení databázového programování v Javě) se dá stejných výsledků jako pomocí konfigurace XML soubory dosáhnout také anotacemi podle JSR-220 (EJB 3.0 persistence). Není to pravda.
Mějme příklad objednávka-produkty (položky objednávky), tedy vztah many-to-many. Z hlediska Javy ho budou tvořit dva objekty (Objednavka a Produkt), které budou mít (obousměrný) vztah many-to-many , v databázi vyjádřený tabulkami objednavka a produkt a vazební tabulkou objednavka_produkt, obsahující cizí klíče (objednavka_id a produkt_id). Potud žádný problém.
Ovšem v reálném světě je často potřeba mít ve vazební tabulce další popis vztahu, třeba počet objednaných kusů. A tady už problém je, protože takový vztah popsat Hibrenate JSR-220 anotací (@ManyToMany) neumí. Podle vývojáře Hibernate Annotations Emmanuela Bernarda tohle mělo fungovat ve verzi 3.2.1, ale nefunguje a podle jeho posledního vyjádření ani hned tak nebude.
Co s tím? Dá se to obejít samozřejmě tak, že vztah many-to-many dekomponujeme na dva vztahy many-to-one. Z vazební tabulky vyrobíme entitu (ObjednavkaPol), která bude mít složený primární klíč z cizích klíčů do tabulek objednavka a produkt (se vztahem many-to-one). Způsobů jak toho dosáhnout je víc, ale jen jediný se mi povedlo spolehlivě rozhýbat v Hibernate 3.2.5 (ve verzi 3.2.0 tomu bylo ovšem jinak :)
K vytvoření složeného primárního klíče vyrobíme novou třídu (ObjednavkaPolId), necháme ji implementovat rozhraní Serializable (s překrytím metod hashCode() a equals()) , označíme ji anotací @Embeddable a přidáme do ní dva členy typu Objednavka a Produkt, které označíme anotacemi @ManyToOne a @JoinColumn(name="xxx_id", nullable=false).
Třídu ObjednavkaPol označíme anotací @IdClass(ObjednavkaPolId.class), přidáme do ní všechny property z ObjednavkaPolId, které tvoří primární klíč, oanotujeme je jako @Id a opět jako @ManyToOne a @JoinColumn(name="xxx_id", nullable=false).
To, že máme položky klíče ve dvou třídách se na první pohled může například proti řešení s anotací @EmbeddedId zdát neohrabané, ale není to tak hrozné. Části klíče jsou rovnou součástí entity a pokud potřebujeme entitu vyhledat prostřednictvím primárního klíče, využijeme ObjednavkaPolId.
Tenhle spot bych chtěl pojmout jako takovou symbolickou omluvu Marovi, kterému jsem tvrdil, že v Hibernate (což je řekněme nástroj pro ulehčení databázového programování v Javě) se dá stejných výsledků jako pomocí konfigurace XML soubory dosáhnout také anotacemi podle JSR-220 (EJB 3.0 persistence). Není to pravda.
Mějme příklad objednávka-produkty (položky objednávky), tedy vztah many-to-many. Z hlediska Javy ho budou tvořit dva objekty (Objednavka a Produkt), které budou mít (obousměrný) vztah many-to-many , v databázi vyjádřený tabulkami objednavka a produkt a vazební tabulkou objednavka_produkt, obsahující cizí klíče (objednavka_id a produkt_id). Potud žádný problém.
Ovšem v reálném světě je často potřeba mít ve vazební tabulce další popis vztahu, třeba počet objednaných kusů. A tady už problém je, protože takový vztah popsat Hibrenate JSR-220 anotací (@ManyToMany) neumí. Podle vývojáře Hibernate Annotations Emmanuela Bernarda tohle mělo fungovat ve verzi 3.2.1, ale nefunguje a podle jeho posledního vyjádření ani hned tak nebude.
Co s tím? Dá se to obejít samozřejmě tak, že vztah many-to-many dekomponujeme na dva vztahy many-to-one. Z vazební tabulky vyrobíme entitu (ObjednavkaPol), která bude mít složený primární klíč z cizích klíčů do tabulek objednavka a produkt (se vztahem many-to-one). Způsobů jak toho dosáhnout je víc, ale jen jediný se mi povedlo spolehlivě rozhýbat v Hibernate 3.2.5 (ve verzi 3.2.0 tomu bylo ovšem jinak :)
K vytvoření složeného primárního klíče vyrobíme novou třídu (ObjednavkaPolId), necháme ji implementovat rozhraní Serializable (s překrytím metod hashCode() a equals()) , označíme ji anotací @Embeddable a přidáme do ní dva členy typu Objednavka a Produkt, které označíme anotacemi @ManyToOne a @JoinColumn(name="xxx_id", nullable=false).
Třídu ObjednavkaPol označíme anotací @IdClass(ObjednavkaPolId.class), přidáme do ní všechny property z ObjednavkaPolId, které tvoří primární klíč, oanotujeme je jako @Id a opět jako @ManyToOne a @JoinColumn(name="xxx_id", nullable=false).
To, že máme položky klíče ve dvou třídách se na první pohled může například proti řešení s anotací @EmbeddedId zdát neohrabané, ale není to tak hrozné. Části klíče jsou rovnou součástí entity a pokud potřebujeme entitu vyhledat prostřednictvím primárního klíče, využijeme ObjednavkaPolId.
středa 13. září 2006
Cashback u nás
I když je to Baruščino téma, tak vzhledem k tomu, že je pryč, dovolím si zablogovat za ni.
V prodejnách Hypernova a Albert s kartami ČSOB bude od od října ve zkušebním a od listopadu v ostrém provozu fungovat služba, na kterou se všichni těšíme: cashback. Ve zkušebním provozu ho budou poskytovat: Albert Chrpa v Praze-Chodově, Hypernova Brno-Modřice a Hypernova Uherské Hradiště – Kunovice, v plném provozu všech 297 prodejen.
Cashback u ČSOB znamená, že k nákupu alespoň za 300,- Kč si můžu říct o hotovost 100-1500 Kč (v násobcích sto) a tu mi pokladní vrátí. Nic se za to neplatí (narozdíl od výběru z bankomatu) a oproti placení kartou bude vždy vyžadován PIN (a možná nebude vyžadován podpis).
Cashback půjde použít i s kartami ČSOB, které vydává Poštovní spořitelna a Fio, ale ne ostatními: klienti IC Banky, Oberbank, PPF Banky, Waldviertler Sparkasse von 1842, Raiffeisenbank im Stiftland a Volksbank mají zatím smůlu.
Zdroj: ČT24, Finexpert a Finexpert.
Podle všeho si ČSOB s Internetem pořád nějak nerozumí: na svém webu nemá ČSOB o cashbacku ani zmínku, o tom, že celé pondělí nefungoval internetbanking nemluvě (nicméně díky zavedení cashbacku jim odpouštím :) .
A ještě jedna kuriozita: v neděli jsem vybíral z bankomatu 6000,-. V úterý se na výpise z účtu objevilo 2x stržených 6000,- + 5,- Kč za výběr. Po dlouhých telefonech ("Kdy by tak ten internetbanking mohl fungovat?") jsem už na řešení něměl sílu a nechal jsem to na dneska. A hopla! na dnešním výpise je+5000,- +6000,- a + 5,- Kč "Oprava duplicity 11.9.". Už jsem se lekl, že všechy výběry 11.9. přispívaly třeba na opravu WTC :)
V prodejnách Hypernova a Albert s kartami ČSOB bude od od října ve zkušebním a od listopadu v ostrém provozu fungovat služba, na kterou se všichni těšíme: cashback. Ve zkušebním provozu ho budou poskytovat: Albert Chrpa v Praze-Chodově, Hypernova Brno-Modřice a Hypernova Uherské Hradiště – Kunovice, v plném provozu všech 297 prodejen.
Cashback u ČSOB znamená, že k nákupu alespoň za 300,- Kč si můžu říct o hotovost 100-1500 Kč (v násobcích sto) a tu mi pokladní vrátí. Nic se za to neplatí (narozdíl od výběru z bankomatu) a oproti placení kartou bude vždy vyžadován PIN (a možná nebude vyžadován podpis).
Cashback půjde použít i s kartami ČSOB, které vydává Poštovní spořitelna a Fio, ale ne ostatními: klienti IC Banky, Oberbank, PPF Banky, Waldviertler Sparkasse von 1842, Raiffeisenbank im Stiftland a Volksbank mají zatím smůlu.
Zdroj: ČT24, Finexpert a Finexpert.
Podle všeho si ČSOB s Internetem pořád nějak nerozumí: na svém webu nemá ČSOB o cashbacku ani zmínku, o tom, že celé pondělí nefungoval internetbanking nemluvě (nicméně díky zavedení cashbacku jim odpouštím :) .
A ještě jedna kuriozita: v neděli jsem vybíral z bankomatu 6000,-. V úterý se na výpise z účtu objevilo 2x stržených 6000,- + 5,- Kč za výběr. Po dlouhých telefonech ("Kdy by tak ten internetbanking mohl fungovat?") jsem už na řešení něměl sílu a nechal jsem to na dneska. A hopla! na dnešním výpise je
úterý 12. září 2006
Premiérův kolega
Dluh Topolánkovy firmy VAE koupila firma Eltodo, v jejíž brněnské pobočce jsem rok pracoval na brigádě. V dnešní době v naší republice není jasné, kdo co kdy na koho vytáhne, takže radši říkám rovnou: s Topolánkem, VAE ani dluhem nemám nic společného, a za to, že mě Eltodo neodhlásilo na zdravotní pojišťovně ze svých zaměstnanců opravdu nemůžu.
pondělí 11. září 2006
Kalendář
Člověk by neřekl, co na světě existuje kalendářů:
- Gregoriánský (vychází z Juliánského) - počítá se od narození Krista
- Hebrejský - na Spasitele stále čekající, má teď rok 5766; jinak obsahuje 13 měsíců (já jsem se narodil v měsíci Tammuz), viz převodník hebrejského kalendáře
- Buddhistický kalendář
- Muslimský občanský kalendář
- Muslimský (lunární) kalendář - měsíc začíná, když se srpek měsíce objeví po západu slunce nad obzorem
- Čínský kalendář - nejkomplikovanější kalendář zahrnující výpočty vázající se ke slunovratu, novým měsícům a sluneční délce (solar longitude)
- Japonský kalendář
pátek 1. září 2006
Novinky.cz mají RSS pro každou rubriku
Novinky.cz mají ode dneška (tuším) RSS pro každou rubriku. Po pravé straně stránky je odkaz "+ Přidej na Seznam.cz", z něhož se dá vypreparovat URL jako např.: http://www.novinky.cz/rdf/zdravi.rdf, keré se zadá do čtečky.
Vtip (english only)
Do finále kvízové televizní soutěže se dostane pastor a střihač ovcí. O vítězi má rozhodnout poslední disciplína: za 3 minuty složit báseň obsahující slovo Timbuktu.
Tři minuty uplynou, začíná pastor:
I was father all my life,
had no children, had no wife.
I read the bibel through and through,
on my way to Timbuktu.
Obrovský aplaus, a pastor si myslí, že už má výhru v kapse, ale přichází střihač ovcí:
When Tim and me to Brisbane went,
we met three girls cheap to rent.
They were three and we were two,
so I booked one and Tim booked two.
Tři minuty uplynou, začíná pastor:
I was father all my life,
had no children, had no wife.
I read the bibel through and through,
on my way to Timbuktu.
Obrovský aplaus, a pastor si myslí, že už má výhru v kapse, ale přichází střihač ovcí:
When Tim and me to Brisbane went,
we met three girls cheap to rent.
They were three and we were two,
so I booked one and Tim booked two.
Přihlásit se k odběru:
Příspěvky (Atom)