Nespoléhejte se na to, že, tak jako Java samotná, budou i základní knihovny a nástroje respektovat důležitost zpětné kompatibility. Například v případě Tomcatu se nám už několikrát stalo, že při upgradu na verzi, kde se mění pouze číslo patche, se kompletně rozpadla funkčnost aplikace. Poprvé to bylo myslím, když v patchi vyupgradovali na novější specku JSP a teď nám zase přihodili bombičku v podobě změny obsahu httpServletRequest.getPathInfo(), která nově vrací i tzv. path parametry.
Termín „partyzánština“ znáte určitě taky. Je to přístup, kdy u věcí, které považujete za správné nebo prospěšné do budoucna, nečekáte na nějaké schválení „shora“ nebo na to až získáte konsenzus okolí, ale prostě sednete a zkusíte je zrealizovat. Nevím jaké zkušenosti s tím máte vy, ale mě se takto podařilo docílit poměrně podstatných změn ve způsobu práce mojí i mého okolí. Myslím si, že partizánština z vás může udělat spokojenější vývojáře v úspěšnějších firmách. Číst dál …
Spring security is really powerful library in its current version and I like it much. You can secure your application on method level several years now (this feature was introduced by Spring Security 2 in 4/2008) but we’ve upgraded from old Acegi Security only recently. When using method access control in larger scale I started to think about security rules encapsulation into standalone annotation definitions. It’s something you can live without but in my opinion it could help readibility and maintainability of the code. Let’s present some options we have now …
A month ago I had an incident in production that was caused, as I found out later, by poor performance of used JSON parser library. I’ve optimalized the code and managed to solve it but decided to look for another library with better performance characteristics. I searched for some existing benchmarks and found two of them – one is for JSON manipulation on Android and the second one is thorough serialization test focused on different use-cases than I had. So I decided to write my own microbenchmark copying the use-case I had in the production.
There are many differencies among JSON libraries regarding their features and resulting performance. So if you want to know my findings continue reading …
Prozatím mám spíš takové zkušenosti, že petice a protesty nefungují. Nicméně je to jediný nástroj, který nám demokratické zřízení dává (když nepočítám volby jednou za 4 roky). Proto jsem se rozhodl napsat našemu poslanci v EU a osobně jej požádat, aby hájil práva našich občanů a vydal nesouhlasné stanovisko se současným zněním dohody ACTA. Pochybuji, že to něco změní, ale minimálně mi pan poslanec odepsal.
Korespondenci zveřejňuji proto, že jsem o to byl požádán. Zkuste věnovat chvilku a napsat p. Zahradilovi také ….
Tradice jsou tu od toho, aby se dodržovaly. Navíc já sám si chci trochu zrevidovat, jak se situace v blogosféře vyvíjí. Mám totiž trochu pocit, že aktivita bloggerů maličko uvadá a je nahrazena krátkými tweety, příspěvky na G+ nebo Facebooku.
Tak trochu to pociťuji i sám na sobě – rok od roku je na mém blogu o pár článků méně a stejně tak i většinu článků z RSS čteček jen letmo prolétnu (pokud není téma pro mě zrovna aktuální nebo není článek psaný česky).
Stále jsem sice přesvedčen, že z hlediska shromažďování informací pro své či cizí potřeby je blogování pořád tou nejlepší alternativou, ale třeba nás jednou mikroblogování úplně převálcuje.
Pokud vás zajímá pár statistik, pojďte se se mnou podívat na uplynulý rok 2011 …
Tohle byl pro mě nějakou dobu oříšek, než jsem narazil na pár článků s překvapivým – ne dokonalým, ale přeci jen nějakým řešením.
Problém je jednoduchý, chtěl bych aby bylo možné v nějaké abstraktní třídě definovat cosi jako:
/** poznámka: toto je nesmysl, ale vyjadřuje
moji snahu o vyjádření vazeb **/
abstract class AbstractClass<T is this> {
T getMe();
}
Což jsem potřeboval z důvodu získání reference na AOP proxy obalující moji třídu – v níže uvedených odkazech podobná potřeba vznikla při implementaci builder patternu.
Nikdy, nikdy nepodlehněte své lenosti. Všichni známe předvánoční čas plný akcí a večírků a uznávám, že včera jsem velmi zvažoval, jestli chci na CodeRetreat vlastně jet a zmizet o desíti z jiné akce s přáteli úplně střízlivý. Přiznávám svou slabost a stydím se, že jsem vůbec kdy zapochyboval. CodeRetreat byl jednou z mých letošních nejlepších akcí a musím říct, že naboural žebříček nejhodnotnějších akcí vůbec. Přičemž i příčka jOpenSpace se zachvěla ve svých základech.
Vstupy:
1. lidi, co chtějí o víkendu kódovat (zázrak sám o sobě a předvýběr jako sviňa)
2. na první pohled jednoduchý problém k vyřešení v nereálném čase
3. podmínka TDD, párové programování, změny párů v 45 minutových intervalech
Důsledky:
1. střídání programovacích jazyků, IDE, klávesnic i programátorských přístupů
2. přistoupení na hru, že cesta je cíl
3. destilovaný programátorský zážitek
Tímto článkem udělám malou výjimku a zkusím Vás všechny oslovit s nabídkou práce u nás ve Forrestu. Je to zvláštní, ale už nějakou dobu sháníme Javistu a nedaří se nám sehnat nikoho s kým bychom si padli do noty. Říkal jsem si, jestli to není tím, že ploché inzeráty Vás moc neosloví – respektive práci v mladém a perspektivním týmu s možností osobního rozvoje s platem odpovídajícím Vašim schopnostem nabízí každý druhý. Jenže co jiného taky do několika řádkového inzerátu napsat, že? Proto jsem se rozhodl napsat tento článek, ve kterém bych Vám rád popsal, jak vyvíjíme u nás ve Forrestu – co používáme za nástroje, jak řídíme projekty, na kterých projektech pracujeme, jaká je možnost si u nás vyzkoušet nové technologie a všechny ty věci, na které stejně při každém přijímacím pohovoru přijde řeč s lidmi, kteří se zajímají. Článek možná bude zajímavý i pro ty z Vás, kteří práci nehledají – vždyť je to nakouknutí do cizí kuchyně a kdo z nás není aspoň trochu zvědavý, no ne?
Dnešní příspěvek bude velmi krátký. Je dost pravděpodobné, že podobné řešení už dávno máte ve svých tetovacích utilitkách, ale mě tato kombinace napadla relativně nedávno a jsem nadšený z toho, o jak elegantní řešení se pro testy jedná.
V některých testech potřebuji vytvořit část Spring aplikačního kontextu, jehož některé beany mají závislost na nějaké další beaně, kterou je pro mne obtížné do testu zahrnout. Buď z důvodu, že její samotné vytvoření s vyžaduje další komplexní infrastrukturu okolo ní nebo třeba proto, že její zařazení do testovacího kontextu způsobuje při běhu testu vedlejší efekty (např. odeslání e-mailu).


