2008/04/14

 

Amersfoort




Minulý týden jsem byl pracovně v Nizozemí, konkrétně v Amersfoortu. Celkem pěkné město asi 45 minut vlakem z amsterdamského letiště Schiphol. Ačkoliv jsem byl holandksým kolegou varován, že "tu nic není", docela se mi tam líbilo. Pár fotek z Amersfoortu naleznete zde: fotoalbum Amersfoort .
Posted by Picasa

Štítky: ,


2008/03/13

 

Rady pro začínající freelancery - 5


Dneska jsem narazil na dva zajímavé články, které jsou srozumitelné a úplné, takže k nim není moc co dodávat. První článek vám vysvětlí, jak je to s registrací plátce DPH (kdy je to povinnost, výhodné apod.):
Obrat vyšší než 1 milion? Stáváte se plátcem DPH
A přečíst si tento druhý článek myslím taky neuškodí:
Noční můra každého podnikatele: Kontrola z finančního úřadu
Oba články jsou ze serveru Podnikatel.cz.

Štítky: , , , ,


2008/03/06

 

Samostatná Fakulta Informatiky na ČVUT


Kamarád a můj bývalý student z časů, když jsem jakožto PhD student na Katedře Počítačů učil cvičení z Algoritmizace a Programovacího jazyka Java), L.P. , mě požádal o názor na kauzu „Fakulta Informatiky“.

O této kauze si můžete přečíst například zde v článku „Kauza: Fakulta Informatiky“ (serveru student.cvut.cz)

Ve zkratce jde o to, že skupina lidí z Katedry Počítačů (jejímž jsem absolventem pozn. autora), podporována vcelku širokou studentskou základnou, vystoupila s koncepcí na osamostatnění se od Fakulty Elektrotechnické (FEL) a založení samostatné Fakulty Informatiky. Reakcí na tento krok bylo odvolání několika lidí z funkcí, např. vedoucího katedry profesora Pavla Tvrdíka.

Já jsem již několik let z FELu pryč, a kromě občasných návštěv CZJUGu nemám se současným prostředím FELu v podstatě žádné kontakty. Nebudu zde a ani nemůžu komentovat vnitřní záležitosti, tedy zda je nebo není správné někoho odvolávat za uvedené činy, ani nevidím do způsobu financování univerzity a rozdělování financí mezi fakulty, katedry apod.

Pokud se však podívám na tuto záležitost z hlediska studenta, který chce jít studovat VŠ a studovat informatiku (ve smyslu softwarové inženýrství, programování, obor počítače apod.) - tedy z pohledu sebe ve svých 18 letech - musím říct, že bych raději šel studovat na samostatnou Fakultu Informatiky než jít znovu studovat obor Počítače na Fakultu Elektrotechnickou, tedy tak, jak jsem vystudoval já.

Důdody jsou následující.

Ačkoliv mojím cílem bylo studovat „počítače“ (laicky řečno) a to spíše tu „softwarovou část“, tak pokud si vzpomínám, v úvodních dvou semestrech jsme měli předmět Výpočetní technika (tedy alespoň něco), v druháku nedostaly předměty úzce související s oborem počítačů skoro žádný prostor. Za to prostor dostalo mnoho předmětů elektrotechnických (dvoje Úvod do elektrotechniky, Elektrická měření, dvě Teorie obvodů, Teorie elektromagnetického pole, Materiály pro elektrotechniku, Logické systémy apod.). Nezapomínám taky na jeden semestr studia legendární Vyhlášky 50 případně zapojování zásuvek v podzemních laboratořích apod. Zcela bez diskuse – každý předmět vám něco nového dá. Otázkou je, co vám naopak vezme. Co jste mohli během tohoto času získat jinde, pokud byste se věnovali něčemu jinému. Cena ušlé příležitosti. Podle mě by bylo mnohem užitečnější, kdyby se naše specializace projevila už v prvních dvou letech.

Já, stejně jako většina kruhu, s kteým jsem studium začínal, věděla, že z nás nikdy nebudou profíci navrhující elektronické obvody ani silnoproudé rozvody, elektromotory apod. Vesměs všichni jsme měli od začátku jasno, že chceme studovat obor Výpočetní technika. A všichni jsme věděli, že hlavní a ta zajímavější část studia nám začne od třeťáku, tedy potom, co si projdeme základním dvou-letým cyklem a začneme de facto konečně studovat svůj obor.

Další moje zkušenost je z dob kdy jsem učil předmět Algoritmizace. Zažil jsem období, kdy se algoritmizace poprvé začala učit na příkladech v jazyce Java namísto dříve používaného Pascalu.

Musím říct, že úrověň a ambice studentů v mých skupinách byly velice různorodé – jeden extrém byli počítačoví „geekové“ a na druhé straně, studenti, kterým počítače skoro nic neříkaly, a programování je nezajímalo. Podle mě by se tyto dvě skupiny měly oddělit a věnovat se jim jiná péče. Jenže prvák na FELu to je víc jak patnáct-set studentů, z nichž podle mne je v dnešní době více zájemců o obor „Výpočetní technika a programování“ než o další obory. Proto se tam ti lidé hlásí, ale (pokud se nic nezměnilo) může se stát, že se na obor nedostanou, protože je nutné vytížit i ostatní obory.

Proto si myslím, že samostatná Fakulta Informatiky je dobrá věc. Nemyslím tím fakultu, která bude produkovat „rychlokvašky“ v oboru, protože teď momentálně je po IT poptávka. Myslím tím seriozní Informatickou fakultu, kde se od prvního ročníku bude věnovat dostatečná péče studentům, kteří šli studovat informatiku, nebude nutné dělat kompromisy. Samozřejmě bych zachoval rozsah matematiky, koneckonců i fyziky a některé uvedené elektrotechnické předměty bych spíše přesunul do kategorie volitelných (něco jiné je zda chcete navhrovat procesory nebo se zabývat teorií překladačů).

Prostě – pokud někdo hodlá programovat a psát software, nemusí nutně např. dva semestry týden co týden měřit všelijaké extremní případy odporů, kapacit a proudů a skládat z toho zkoušku, s detailní znalostí schemat jednotlivých měřících přístrojů. Může, ale volitelně. Podle mě je dnes svět natolik specializovaný, rychlý, že je škoda ztrácet čas nečím, co nevyužijete a kde usilí tomu věnované není uměrné výnosu. Prostě bych některé z těchto elektrotechnických předmětů nahradil informatickými, tak, aby si studenti základy odbyli mnohem dříve a od třetího ročníku se mohli věnovat mnohem specializovanějším tématům a projektům.

Toť můj osobní názor na téma samostatná Fakulta Fnformatiky vs. FEL. Jsem pro!


2008/02/25

 

Web www.300zatacek.cz



Před týdnem jsem spustil stránky www.300zatacek.cz. Charakterizoval bych je jako foto-video-blog věnovaný mezinárodnímu silničnímu motocyklovému závodu 300 zatáček Gustava Havla, který se koná každoročně v květnu v Hořicích (letošní 46. ročník se uskuteční 17.-18.5. 2008). Tyhle závody jsou opravdu poměrně unikátní, viz nový web nebo příspěvky, které jsem zde publikoval v minulosti - label motorsport.

Tyto stránky jsou taková volnočasová, odpočinková aktivita. Sehnal jsem několik lidí, kteří jsou ochotni přispět materiály ze svého archivu, ale sháním další. Takže pokud máte nějaké povedené fotky, videa apod. ze zatáček nebo České Tourist Trophy, kontaktujte mě na email, který je uvedený na stránkách www.300zatacek.cz nebo na těchto.

Mimochodem z ročníku 2007 existuje i několik "on-board" youtube videí z průjezdu okruhem, natočených přímo z motorky - viz třeba zde nebo video vítěze zde.


Štítky:


2008/02/13

 

Kde byste byli v tuhle chvíli radši?



Při pohledu na mou úvodní stránku ve firefoxu mě nutně napadá otázka, kde bych teď byl raději:
a) u laptopu, tam kde jsem teď
b) na horách
Ještě mě tedy napadla jedna varianta:
c) s laptopem na horách ;-)
Tak zpátky do práce ;-)

Štítky: ,


2008/02/08

 

Rady pro zacinajici freelancery - 4


Rada číslo 4 ze série rad pro začínající freelancery se týká fakturování a faktur.

Každý začínající freelancer se samozřejmě těší na chvíli, kdy vystaví a odešle svou první fakturu a začne tak konečně sklízet plody (resp. Smetany ;-) své práce. Každý začínající freelancer typicky řeší následující dvě otázky:
"Jak má faktura správně vypadat?"

"Mohu faktury posílat mailem?"
Jak má faktura správně vypadat? Nezasvěceným by se mohlo zdát, že faktura a její podoba je pevně definována v zákonech. Není tomu tak - viz například wikipedie:
"Pojem faktura není v současné době definován v žádném právním předpise. Dříve platná tzv. „fakturační vyhláška“ upravovala podrobně náležitosti týkající se faktur, ale v současné době takovýto právní dokument neexistuje. Nicméně pojem faktura je vžitý a používá se v obchodních vztazích velmi často. Různé zákony určitým způsobem upravují náležitosti, které faktura musí obsahovat, aby vyhověla podmínkám, které ten který zákon stanoví."
Jelikož tedy vzhled faktury není zákonem určen, nemusíte pro ní běhat nikam do papírnictví a můžete klidně popustit uzdu fantazii a navhrnout si vlastní design ;-) Nicméně musíte dodržet pravidla a faktura musí obsahovat dané položky. Náležitosti faktury můžete nalézt třeba zde:
Faktury a doklady (JakPodnikat.cz)
Faktury z pohledu obch. zákoníku (UcetniSvet.cz)
Vzor faktury třeba zde, včetně XLS souboru ke stažení:
Faktura - vzor ke stažení (Euroekonom.cz)
K druhé otázce. Mohu tedy faktury posílat mailem? Krátká odpověď zní ANO.
Otázkou je jejich archivace, aby mohly být uznány jako daňový doklad. Já osobně si faktury přijaté i vystavené tisknu a archivuji v papírové podobě (zde pozor: "...Autenticitu a integritu dokladu zajišťuje příjemce faktury..." viz zde).
Faktury samozřejmě posílám emailem, digitálně nepodepsané. Je to v souladu s tím, co se píše v tomto článku Vystavování a uchovávání faktur. Elektronický by byl nutný pouze v případě, že byste je archivovali v elektronickém formátu.

Toť úvod do fakturování for dummies :-)
Pozn.: Samozřejmě, vše se týká osob, které vedou daňovou evidenci a ne podvojné účetnictví.

Štítky: , , , ,


2008/01/29

 

Shanime kvalitniho PHPckare


Rozšiřujeme JetMinds tým. Na zajímavý dlouhodobý projekt hledáme kvalitní PHPčkáře.
Celý text nabídky, včetně kontaktního emailu, je zde: Shanime kvalitniho PHPckare (Filův blog).

Štítky: , ,


2008/01/24

 

Interesting series for Eclipse plugin developers


If you're interested into Eclipse plugin development you shouldn't miss the series of articles written by my JetMinds colleague Ludek. Go and check it out @ www.dolejsky.com/tag/eclipse.

Štítky: , , ,


2008/01/14

 

Job offer - Java Integration Developer


Čas od času se mi někdo znamý ozve, zda nevím o nějakém vhodném kandidátovi na určitou pozici. Rozhodl jsem se, že nabídky, které mi přijdou zajímavé, zveřejním na blogu, třeba někoho z vás zaujmou. V případě že ano, tak se mi ozvete (kontaktní email najdete vlevo nahoře na této stránce).

Java Integration Developer

Ve zkratce: role Java Integration Developer, pro konzultantskou firmu v oblasti BPM.
Požadavky: samozřejmě znalost J2EE, vybraného app serveru, messaging systému, SQL a PL/SQL, znalost Tibco nebo Oracle Fusion je polehčující okolnost :-), design v UML, znalosti principů SOA jsou velká výhoda :-), stejně jako zkušenost s BPMN/BPELem.

Při práci byste cestovali po EU (i více než polovinu času), takže dobrá angličtina je nutnost.

Kromě klasických benefitů (mobil, laptop atd.) dostanete i externí školení Tibca případně se můžete stát i Tibco certikovaným ;-)
Pokud byste měli zájem, ozvěte se mi na email.

Štítky: ,


2008/01/05

 

Hororovy geocaching


O tom, že geocaching je zajímavá a napínavá "hra", jsem psal už kdysi. Nicméně zážitek, který si dnes prožil kamarád Jarda při hledání jisté "mystery" cache (mystery cache = souřadnice skrýše nedostanete přímo ale musíte je rozluštit či dopočítat...), mu určitě nezávidím!

Jarda mi dnes navečer celý rozrušený volal, že na jistých souřadnicích jedné cache (registrované na geocaching.com) poblíž Prahy (odkaz na cache momentálně nebudu uvádět, protože probíha policejní vyšetřování) totiž nalezl místo cache ukrytou mrtvolu!

Celou historku, poutavě popsanou, si můžete přečíst zde:
Zajímavý geocaching, místo plastové krabičky MRTVOLA!

Teď už nezbývá než čekat, co přinese vyšetřování...

Aktualizováno 11-1-2008:
Dnes vyšel článek v MF DNES: Hledali „poklad“ pomocí GPS, našli mrtvolu

Štítky: ,


2007/12/21

 

Vývoj aplikací pro Facebook v Javě - 1


V tomto příspěvku rozeberu postup, jak psát aplikace pro Facebook platformu v jazyce Java. Celý příspěvek jsem rozdělil na několik částí.

Nejdříve tedy krátký úvod, co je to Facebook a proč by vás mohl jakožto vývojáře zajímat.

Úvod

O Facebooku jistě většina z vás již slyšela. Jedná se o další social network projekt, tedy web poskytující vám služby sociální sítě. Více se dočtete více zde nebo zde.

Pokud nejste na Facebooku zaregistrovaní a nevyzkoušeli jste si ho, vřele vám to doporučuju. Facebook totiž není jen "yet another Orkut" ;-) a osobně si myslím, že Facebook je na dobré cestě, aby porazil všechny ostatní sítě. Uvidíme ještě, jak dopadne snaha o standardizaci API v oblasti social networků, ve které se výrazně angažuje i Google - viz OpenSocial.

Btw. Pokud chcete, můžete si přidat můj kontakt mezi své kontakty - link na můj profil je zde.

Čím je Facebook zajímavý a čím vybočuje z řady? Jednak je to jeho obrovská popularita a raketový nárůst počtu uživatelů. Zaregistrujte se, použijte Friend Finder nástroj a garantuji vám, že budete překvapeni, kdo všechno z vašich známých již na Facebooku je ;-) Pro zajímavost ohledně vývoje popularity, podívejte se třeba na Google Trends graf pro Facebook, Orkut a LinkedIn.

Co Facebook ale výrazně odlišuje od předchůdců jako Orkut je fakt, že Facebook se otevřel pro vývoj dalších aplikací a vznikla tak Facebook platforma.

Přínos

Facebook vám umožňuje relativně jednodušše napsat aplikaci (nebo vzít existující aplikaci) a zaintegrovat jí do Facebooku. Proč byste to měli dělat?
  1. Facebook používá obrovské množství lidí a počet stále roste. Roste tak počet potenciálních uživatelů vaší aplikace (a tedy i vašich příjmů :)

  2. Přidat si novou aplikaci ve Facebooku je mnohem snažší než najít a zaregistrovat se na nějakém novém webu. Prvotní bariéra proto, aby uživatel začal používat vaší aplikaci je minimální.

  3. Úspěch a popularita aplikací na Facebooku se šíří virálně. To je další podstatný rys Facebooku. Po přihlášení se do Facebooku se vám šikovně zobrazí stránka s news feedem , kde vidíte co se ve vaší síti děje.

    Např. zaujme, že váš kamarád používá aplikaci, která by vás mohla zajímat též, jste dva kliky od toho, abyste jí začali používat taky. No a virus se začíná šířit ;-]
Pokud tedy vlastníte fungující web, chtěli byste ho dále rozvíjet a získat větší počet uživatelů, neváhal bych a už dneska bych začal pracovat na jeho integraci s Facebookem.

Jako pěkný příklad uvedu Flickr vs. Facebook Photo, služby pro sdílení fotek. Flickr byl donedávna jasnou jedničkou, co se týká sdílení fotek na webu. Nyní jej (v USA) už předstihl Facebook Photos (viz zde). Přitom Facebook Photos je jen základní služba, kterou dostanete pokud se na Facebooku zaregistrujete. Stejně jako možnost používat sdílené kalendáře (Events), inzerci (MarketPlace) atd. Takže tu roste nová konkurence pro Evite.com resp. eBay.com.

Celé je to hrozně jednoduché. Proč bych měl být registrován na tolika webech, když mi to Facebook poskytne všechno pod jednou střechou. Pod jednou střechou ale neznamená, že by Facebook napsal všechny služby znova a vytvořil tak konkurenční služby jako v případě Flickru. Facebook je platforma, která umožňuje vznik a existenci konkurečních projektů a až trh rozhodne :-)

Pokračování příště...

Takže to by na úvod stačilo. V dalších dílech rozeberu architekturu Facebook aplikací, API které máte možnost použít pro integraci s platformou a tím se dostanu až k Javě, kterou můžete použít jako jednu z možností (kromě PHP, Pythonu, Ruby, C# atd.).

PS: Pokud vás (vývoj pro) Facebook zajímá, ať už z pohledu vývojáře nebo z pohledu spíše podnikatelského, přidejte se do facebookové groupy Czech Facebook User Group.

Štítky: ,


2007/12/17

 

Rady pro začínající freelancery - 3


Rada číslo 3 zní:
Pokud to myslíte s vaším podnikáním vážně, založte si od počátku samostatný podnikatelský bankovní účet.
Sice vás žádný zákon nenutí mít jakožto OSVČ separátní podnikatelský účet a můžete tedy pro podnikání používat svůj osobní bankovní účet, ale časem zjistíte, že to má několik nevýhod:
Takže pokud váháte, neváhejte. I když je to zase o jeden krok navíc, který vás stojí další zařizování a drahocenný čas, vyplatí se vám to.

Více např. v diskuzi zde: Podnikatelský účet je nutný?

Štítky: , , , ,


 

Rady pro začínající freelancery - 2


Dnešní rada je hodně aktuální. Blíží se konec roku a nový rok přinese velké změny v oblasti daní. Dnešní rada je obzvláště zajímavá pro ty z vás, kteří jste začali podnikat nedávno (letos nebo v průběhu loňska) a platíte minimální zálohy zdravotního a sociálního pojištění, neboť vám ještě výše záloh nebyla vyměřena podle skutečných příjmů z předchozího roku. Ti z vás by měli urychleně jednat. Často se to ale vyplatí i v ostatních případech:
Tip č. 2: Spočítejte si, kolik zhruba budete muset zaplatit za zdravotní a sociální pojištění za rok 2007 a rozdíl mezi již uhrazenými zálohami a spočtenou částkou odešlete na účet zdravotní pojišťovny resp. na Správu sociálního zabezpečení ještě letos tak, aby peníze z vašeho účtu odešly ještě v roce 2007.
Výhodné je to proto, protože letos jsou ještě zálohy na zdravotní a sociální pojištění považovány za položky daňově uznatelné, zatímco od nového roku již nebudou (viz superhrubá mzda).

Více se dočtete například zde nebo zde.

Štítky: , , , ,


2007/12/13

 

Rady pro začínající freelancery - 1


Brzy uplyne rok od doby, co jsem začal profesně působit jako osoba samostatně výdělečně činná (OSVČ), tedy živnostník nebo-li "po anglicku" freelancer.

Pokud se rozhodujete vyzkoušet si pracovat na volné noze také, možná se vám budou hodit moje tipy vycházející z mé osobní zkušenosti. Takže díl první:
  1. Sežeňte si účetní. Dobrou účetní.

    Z vlastní zkušenosti ale i od svých kolegů vím, že většinou je průběh následující. Na začátku jste plní optimismu, že vedení daňové evidence (nemluvím o vedení účetnictví, to je jiná liga) není nic těžkého (de facto ne, jde jen o evidenci příjmů a výdajů). Nejdříve si najdete základní informace na internetu. Pak zajdete do knihkupectví, nakoupíte si různé knížky na dané téma a ponoříte se do toho.
    Brzy však přijdete na to, že věci jsou komplikovanější než se zdají a množství dokumentů vyprodukovaných státním aparátem, které byste měli přečíst a pochopit, je neuvěřitelné. Pravidla hry, kterou hrajete, jsou pěkně komplikovaná :-) Prvotní optimismus vás tedy opustí. Pochopíte, že je mnohem lepší věnovat se činnosti, kterou se opravdu živíte a že je lepší předat (outsourcovat) tuto činnost profesionálům.
    Takže následuje druhá fáze, kdy své dosavadní účetnictví předáte profesionálovi. A od té doby mám klidnější spánek :-)

    Rada první tedy zní: přeskočte fázi 1 a rovnou od začátku si najděte dobrou účetní. Ušetříte si tím čas.

Štítky: , , , ,


2007/11/28

 

Odpočinek v Třeboni


Uplynulý víkend jsem si prodloužil a strávil ho relaxačně, lázeňsky - v Třeboni. V Třeboni jsem do této chvíle nebyl a byl jsem opravdu nadšen. Třeboň je vskutku pěkné městečko, v turistické sezoně evidentně hojně navštěvované turisty, ale teď je tam příjemný klid. I tak tam v této době máte spoustu možností co podniknout a navštívit: zámek, procházka kolem Rybníku svět, hrobka Schwarzenberků - architektonicky krásná stavba v pěkném parku cca 15 minut od centra, pivovar Regent s exkurzemi, expozice akvárií se sladkovodními rybami v domě Jakuba Krčína, dále lázně a wellness, bazén, několik velice příjemných hospůdek a kaváren... Doporučuju.

Fotky zde: Třeboň a okolí

Štítky:


 

Zimní JetMinds offsite


Presentation about JBoss SeamV posledních týdnech jsem měl spoustu práce (což je dobře :-), takže se k výjezdnímu zasedání (off-situ) renomovaných JetMinds vracím až teď.

Průběh akce, která se konala na chatě Hříbek v Benecku v Krkonoších, shrnul už Fil na svém blogu - viz Offsite ala JetMinds.

Akce to byla povedená, ideální kombinace edukace, socializace :-) a zábavy.

Pro zajímavost - v části edukační proběhly přednášky o o tématech jako OpenArchitectureWare, Java Media Framework, Laszlo, Ajax frameworcích, Springu v praxi, JBoss Seamu a o novém připravovaném JetMinds produktu (nechte se překvapit :) Chvílemi se z přednášek stal spíše code-camp. O občerstvení se postaral sudem JiPi - díky :-)

Fotky jsem dal sem.

Štítky: ,


2007/11/10

 

JGear LiveSource - Namodelujte si své Java EE aplikace!


Na portálu java.cz jsem publikoval recenzi na JGear LiveSource, Eclipse plugin, který je pokračovatelem populárního TogetherJ a je základním kamenem nového JBuilderu 2007:

JGear LiveSource je nový modelovací nástroj firmy CodeGear. LiveSource umožňuje modelování a vizuální návrh Java /Java EE aplikací pomocí modelovacího jazyka UML. Tento produkt je distribuován jako plugin pro vývojové prostředí Eclipse. V tomto příspěvku bych chtěl popsat svoje dojmy a zkušenosti z tohoto produktu.

Celou recenzi naleznete zde:

JGear LiveSource – Namodelujte si své Java EE aplikace!
(java.cz)

Zde se můžete podívat na screenshoty.

Štítky: , , , , , ,


2007/10/14

 

Web Services Standards Poster


Pokud vás zajímají webové služby (web services), SOA a podobná témata, rozhodně doporučuji pěkný poster s přehledem existujících Web Service standardů (stav 2007):

WS-Standards Poster 2007-02.pdf

který vytvořila a dala k dispozici německá firma innoQ.

Pro zajímavost. Před pár měsíci jsem procházel nové WS standardy a projekty a pro přehledné vyjádření vzájemných souvislostí jsem použil kontextové mapy vytvořené pomocí CMapTools (více zde).

Contextual map Web Services - Metro and Tango
Příklad: kontextová mapa pro projekty Metro a Tango

Štítky: , ,


2007/09/26

 

Chyba v Excelu 2007 - k neuvereni!


Věřili byste, že se ještě dnes, v x-té evoluci všudepřítomného softwaru, na kterém (s trochou nadsázky) stojí světová ekonomika, může objevit následující chyba?!
Bug in Excel 2007
Mimochodem - k té nadsázce: Zase tak velká nadsázka to není. Zažil jsem už několik (>=5) projektů (globálních multi-culti :-) firem, kde se nasazoval enterprise systém (sourcing, procurement, pricing) do míst, kde v podstatě 1:1 nahrazoval manuální práci desítek či stovek lidí a jednoho nástroje - všemocného excelu!

Více: Bug in Excel 2007

Štítky: , , ,


2007/07/02

 

Eclipse - nefunkční "hot code replace"


Alternativní nadpis tohoto příspěvku by mohl znít "Jak použít Eclipse (java) compiler" mimo IDE. Tímto jsem asi dost napověděl, o čem budou následující řádky pojednávat.

Remote Debugging

Vzdálené debugování (remote debugging) je užitečný nástroj pro ladění "vzdálených" aplikací - "vzdálených" v tom smyslu, že se pomocí svého debuggeru připojujete do jiné běžící Java Virtual Machine nejspíše s úmyslem ladění dané aplikace ;) Nebudu nosit dříví do lesa: Více si o tomto tématu přečtete například v článku Debugging v praxi - opravdu samozřejmost?! od otce Fura či Eclipse a drobné maličkosti - vzdálené debugování od Dagiho.

Hot Swap

S remote debuggingem souvisí další funkcionalita, která z mé vlastní zkušenosti dokáže ušetřit obrovské množství času. Tato funkcionalita se jmenuje hot swap. Hot swap umožňuje "vpašovat" do běžící aplikace novou verzi přeloženého kódu a nahradit jí tak kód původní.

Pro lepší představu, proč považuji hot swap za maximálně efektivní pomůcku, uvedu jeden příklad z mé praxe. Pracoval jsem na Ariba projektu, kde restart modulu Ariba aplikace (to jest jedné instance Weblogicu) na které jsem pracoval, trval na laptopu přibližně 9-10 minut (díky tomu, že se inicializovaly různé adaptéry, Tibco repositories, kontrolovala se XML metadata,...).

Součástí typického úkolu na tomto projektu byl vývoj nějakého vysoce sofistikovaného ;) java kódu, který používá pokud možno public API aplikace a na konci dosáhne kýženého výsledku, za aplausu business consultantů :) V uvedené konfiguraci, kdy jedním restartem ztratíte tolik času, si musíte dávat sakra dobrý pozor na jakékoliv triviální chyby (na netriviální chyby si často pozor dát ani nemůžete, například z toho důvodu, že API není zrovna dobře zdokumentované a až stacktrace při testování vás upozorní na možný problém) ;)

Zde se pomalu dostávám k jádru věci. Hot swap vám v těchto případech velice dobře poslouží: triviální problém - zapomněli jste test na null? Chcete přidat debugovací řádku...? S hrůzou zjistíte že nerovnost v podmínce je přesně obráceně? Bez remote debuggingu (aneb tak jak jsem to viděl kupodivu u velkého množství kolegů konzultantů) musíte shodit server, opravit, překompilovat, zrestartovat a dvacet minut je pryč. Následnovně zjistíte, že o pár řádků dále je problém podobný a tak pořád dokola.

Ti rozumnější (případně ti pracující v módu fixed fee a ne time&material :D ) využijí hot swap: kód v IDE jednoduše opravíte, upravíte, přeložíte, a pokud jste debuggerem připojeni do JVM v které běží aplikace, hot swap nahraje novou verzi byte-kódu do JVM a nahradí jí kód původní. V těchto jednoduchých případech vám hot swap nezanedbatelně šetří čas. (Samozřejmě zde existuje mnoho omezení, která když porušíte, debugger zobrazí varování, že daná změna není podporována (změny v hierarchii tříd ale i například přidání public metody atd.) a restartu se stejně nevyhnete).

Hot Swap v Eclipse

Zatímco v Intellij Idee hot swap fungoval bez problémů a intuitivně, po přechodu na Eclipse mi hot code replace (jak se tato feature v eclipsu nazývá) v mnoha případech nefungoval. Po rekompilaci třídy se mi místo očekávaného nahrání nového byte-kódu na server zobrazovalo často následující varování:

Hot code replace failed


Trochu jsem pátral co je příčinou a dopátral jsem se. Na obranu debuggingu v Eclipsu můžu uvést, že je v tom (částečně nevinně).

Scheme change not implemented

Zásadní problém je ten, že Eclipse pro kompilaci nepoužívá sunovský javac, nýbrž svůj kompilátor (součást JDT Core component). Vyprodukovaný byte kód se liší (nezkoumal jsem do detailů jak...) od byte kódu class přeložených javac kompilátorem. Tyto rozdíly jsou pro debugger ale podstatné tak, že neumožní záměnu byte kódu za běhu. Podobný problém viz např. na news.eclipse.tools.jdt: Scheme change not implemented.

(Nutno podotknout, že důvod proč se mi na serveru objevuje kód kompilovaný jiným kompilátorem (javac než z IDE (eclipse compiler), je fakt, že instalace a deployment této aplikaci je poměrně komplikovaný proces a je pro něj přepdřipravena sada nástrojů (Ant skriptů), které je nutné ve správném pořadí použít v závislosti na prováděné změně).

Řešení

Řešení problému spočívá v použití stejného kompilátoru v obou případech.

První možnost je donutit Eclipse kompilovat pomocí javac. To jde podle mě jednoduše pouze pomocí nového ANT builderu a custom Ant scriptu. Což není zrovna elegantní.

Druhá varianta je donutit existující produkt, který obsahuje vlastní "Ant" build systém, kompilovat pomocí Eclipse kompilátoru.

To jde celkem jednoduše:
  1. stáhnout ecj.jar (JDT Core Batch Compiler)z eclipse.org

  2. donutit Ant použít tento compiler: tzn. nastavit hodnotu Ant property build.compiler na org.eclipse.jdt.core.JDTCompilerAdapter
  3. a nakonec samozřejmě přidat ecj.jar do classpath (tip pro lenochy: nahrát tento jar do adresáře ant/lib)

Tímto donutíme Ant kompilovat pomocí Eclipse kompilátoru a hot swap neboli hot code replace funguje tak jak má.

Malá poznámka na konec. Rozhodně bych nedoporučoval měnit použitý compiler na produkčním server, o čem tu pojednávám, je prostředí vývojáře!

Více kompilování v Eclipse o možnostech použití vně Eclipse IDE se lze dočíst v online nápovědě: JDT Plug-in Developer Guide > Compiling Java code.

Štítky: ,