This week I got a simple request from our customer – to count plays of videos embeded at their site. We currently support different kinds of players – from FLVs interpeted by JwPlayer, Vimeo, Czech Stream.cz to YouTube movies. The task was so simple that I (fool) made a prototype only for FireFox and estimated at most few hours for the implementation. I couldn’t have been dumber …
Archívy
Všechny články od autora Otec Fura
Pár shell skritpů jsem už napsal – jak pro Windows tak pro Linux, ale v tomto směru se považuji za naprostou lamu a to se ještě nějakou dobu nezmění. Proto jsem fascinovaně naslouchal Dierk Königovi, který na přednášce pražského CZJUGu zmiňoval použití Groovy pro psaní shell skriptů. Vyměnit jazyk proprietárního shellu, ve kterém toho moc neumím, za multiplatformní Groovy, kde jsem na výrazně pevnější půdě, se zdá jako perfektní nápad. Vše šlo tak hladce, že neváhám podobnou věc doporučit všem, co denně kódují na JVM.
I guess everyone of you already know content loading mechanism used on the Twitter site. When you scroll down at the bottom of current page another content is loaded immediatelly without you clicking on any UI element. It’s a very nice idea for AJAX powered listings and you’d probably take advantage of it on your own site too. I came to the same conclusion also but it seems there is no single jQuery plugin enveloping this kind of mechanism. Searching Google you could find several articles describing how to implement similar funcionality with jQuery but you wouldn’t find any jQuery plugin ready to use. So I decided to make one for this purpose – it’s called TriggerOnView plugin.
Polská konference GeeCON nabírá na popularitě a letos již byla s předstihem vyprodána. Možná to není takový tahák jako Google I/O, které se vyprodalo hned po 2 dnech, ale myslím, že pro Java pozitivního středoevropana je to jedna z velmi lákavých událostí roku. S kolegy z Forresta jsme na ni vyrazili již v úterý, abychom se ve středu zúčastnili University day s rozšířenými (3h) prezentacemi na konkrétní témata.
Kluci z polského JUGu mají akci perfektně zvládnutou a za celé 3 dny jsem nenašel jedinou chybičku, kterou bych jim mohl vytknout. Multikino je pro pořádání těchto akcí, řekl bych, ideální prostor a tak je mnohahodinové sezení v pohodlných sedačkách v klimatizované místnosti snesitelné. Nakonec jsme na konferenci všichni stejně kvůli speakerům, ale tyhle drobnosti dělají hodně – myslím, že GeeCON má ve velké míře všechno co chybělo na českém @WebExpo (prostory, organizace, stravování).
Dost planého tlachání … pokud máte zájem podívejte se, co mne připadlo zajímavé na přednáškách letošního GeeCONu.
Nápad použít jabber jako příkazovou řádku k živému systému nás napadl asi před dvěma lety. Přestože se nám naše idea zdála velmi originální, jak se později zjistilo, nebyli jsme sami, koho podobná věc napadla. Existuje například implementace použití SSH přes Jabber protokol (JabSh) a možná by bylo možné při detailnějším hledání najít další.
Co nás vůbec motivovalo o nějaké takové věci vůbec přemýšlet?
Předně jsme vývojáři, kterým je příkazová řádka často bližší než sebelepší klikátka. Navíc klikátka umí milion věcí, které běžně nepotřebujeme – nám stačí jen pár základních úloh, které ovšem chceme provést velmi rychle a odkudkoliv. Ve firmě máme zprovozněný interní Jabber server (Openfire Jabber Server) integrovaný s naším LDAP (s odpovídající politikou hesel), který je provozován přes SSL protokol a tudíž splňuje všechny bezpečnostní požadavky definované naším TA oddělením pro přístup zvenčí. Svůj jabber účet má každý zaměstnanec Forresta, a mají ho také všichni po ruce (jeden klik nebo klávesová zkratka obvykle stačí) a to nejen ve firmě, ale i z domova. Klientů pro jabber protokoly je nepřeberné množství pro všechny platformy, a to i dokonce pro platformy mobilní (Android, iPhone, Symbian). XMPP má řadu použitelných knihoven v Javě – konkrétně autoři Openfire Jabber Serveru dodávají i velmi kvalitní klientskou knihovnu Smack, kterou jsme si pro naše účely vybrali. Všechno tedy hrálo do karet nápadu použít jabber protokol jako bránu k našim interním systémům.
Aktuálně ve Forrestu revidujeme způsob vytváření dokumentace, nastavení standardů a bavíme se o tom, co a jak změnit.
Motiv je jasný – nejsme spokojeni se současným stavem a v některých případech dokonce dost zásadně. Všichni známe to staré rčení „nejlepší dokumentace je zdrojový kód“, které pochází kdoví odkud (tipnul bych si, že za ním stojí eXtreme Programming, ale zdroj jsem vážně nenašel) – jenže je to omyl. Správná dokumentace může mít dost zásadní vliv na výslednou použitelnost / publicitu vašeho produktu / knihovny mezi programátory.
Kvalitní (systém) dokumentace má podle mého názoru zásadní pozitivní vliv na rozšíření např. jQuery nebo Springu. Naopak negativně se musela dokumentace podepsat na adopci Groovy. Přestože se jedná o skvělý jazyk, dokumentace je na tom, co se týká přehlednosti a detailnosti, bídně (můj subjektivní dojem).
MySql databázi používáme jako standardní řešení datové vrstvy už hodně let. Prošli jsme si už pěknou řádku verzí JDBC ovladačů, ale jedna věc mě dostala vážně do kolen. Tak se pohodlně usaďte, protože dnešní příběh bude vážně dlouhý
Žil byl v jedné firmě programátor starající se malou generickou knihovnu pracující s JDBC. Jednoho krásného rána se probudil s jednou nově reportovanou issue ve svém trackeru … ale ne, takhle by to vyprávění trvalo opravdu hodně dlouho … vše začalo touto krásnou exception:
java.sql.SQLException: Generated keys not requested. You need to specify Statement.RETURN_GENERATED_KEYS to Statement.executeUpdate() or Connection.prepareStatement(). at the execute command.
Dnes proběhl další hackathon, který se zaměřil na RefactorNG plugin do NetBeans. RefactoringNG je modul pro NetBeans, který slouží k automatizované refaktorizaci kódu. Pro bližší seznámení doporučuji projít existující články na Java.cz:
- Úvod do RefactorNG
- Refaktorizace – továrna
- Refaktorizace – záměna metody
- Refaktorizace – evoluce rozhraní
Plugin funguje tak, že v prostředí Netbeans můžete označit konkrétní Java zdrojáky (popř. balíky zdrojáků) a aplikovat na ně pravidla uložená v RNG souboru. Pravidla se skládají ze dvou částí – první obsahuje pattern, kterým se porovnává zkoumaný zdrojový Java soubor a pokud dojde ke shodě části AST stromu, je na tuto část aplikován pattern v druhé části pravidla, který provede požadované modifikace.
Po roce nadávání na bídnou rychlost Windows a marném downgrade z Windows Vista na Windows XP před cca rokem (které můj problém ani náhodou nevyřešilo) jsem se rozhodl nainstalovat na mém pracovním stroji Linux. Měl jsem výhodu v tom, že někteří moji kolegové už tento systém provozují a mají rozchozené všechny základní věci, které jsou pro napojení na naše firemní zdroje zapotřebí (Exchange, Samba, Jabber atd. atd.).
Výsledky měření rychlosti na ekvivalentních operacích v Linuxu, které jsem denodenně prováděl na svém pracovním laptopu s Windows byly více než lákavé. V tomhle článku bych chtěl shrnout výsledky mého jednoduchého měření a dále vás odkázat na můj článek s poznámkami ze zprovoznění systému a vytipovaným SW, který je pro běžnou práci s počítačem potřeba – obdobně jako jsem to kdysi provedl s článkem Cesta k legalitě.
Blíží se konec roku a s ním přichází i nálada k bilancování. Ani já nebudu výjimkou a podívám na průběh roku 2010 pro mne samotného i pro tento blog. Neodpustím si ani pár statistik, které pro mne samotného jsou velmi zajímavé a užitečné. Jsem si vědom, že pro řadu z Vás může být obsah tohoto příspěvku nezajímavý a proto cítím povinnost Vás varovat předem
.


