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: eclipse, IDE, JBuilder, JGear, programovani, recenze, software
2007/10/14
Web Services Standards Poster
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).

PÅ™Ãklad: kontextová mapa pro projekty Metro a Tango
Å tÃtky: programovani, standards, webservices
2007/07/02
Eclipse - nefunkÄ?nà "hot code replace"
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Ã:
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:
- stáhnout
ecj.jar(JDT Core Batch Compiler)z eclipse.org
- donutit Ant použÃt tento compiler: tzn. nastavit hodnotu Ant property
build.compilernaorg.eclipse.jdt.core.JDTCompilerAdapter
- a nakonec samozřejmě přidat
ecj.jardo 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: eclipse, programovani
2007/05/18
TunnelliJ a Idea plugin API
Napadlo mÄ› tedy, že se mrknu jaká je situace v Idee, zda jeÅ¡tÄ› pořád funguje plugin Tunnellij (TCP tunnel integrovaný do IDE), který jsem napsal pÅ™ed pár lety pro verzi Idea 3.5 (jakožto pomůcku pro sniffovánà SOAP zpráv). Mrknul jsem na stránky Jetbrains a zjistil jsem, že udÄ›lali v této oblasti velký kus práce. Nové a pÄ›knÄ› udÄ›lané stránky plugin repository, relativnÄ› velké množstvà pluginů (vzhledem k tomu že Idea je komerÄ?nà IDE).
Takže jsem vzal poslednà build Idea verze 7 a zkusil jsem, zda můj Tunnellij (popis) plugin bude i nadále fungovat. Funguje bez problému, takže plugin API v Idee se zda být celkem stabilnÃ, minimálnÄ› pro featury které jsem použil. Lehce se zmÄ›nil a rozÅ¡ÃÅ™il plugin XML descriptor, takže jsem doplnil chybÄ›jÃcà údaje (vsuvka - na zmiňované pÅ™ednášce se mi lÃbilo, že Jarda zdůraznil, že návrh API nenà jenom o Java kódu a public interfacech, ale týká se mnohem vÃce vÄ›cÃ, od promÄ›nných prostÅ™edà OS pÅ™es různé deskriptory, konfigurace atd...) a znova rebuildoval celou package a nahrál do plugin centra. Paradoxem je, že tento build Idea pluginu jsem již dÄ›lal z Eclipsu ;-)
A co mÄ› nakonec pÅ™ÃjemnÄ› pÅ™ekvapilo je poÄ?et downloadů - pÅ™es 5700 downloadů je pÄ›kné Ä?Ãslo ;-)
Å tÃtky: aplikace, programovani
2006/11/21
JBuilder 2007 aneb veletoc Borlandu
ProÄ? bychom si ho ale mÄ›li chtÃt vyzkouÅ¡et? Sám nevÃm. JBuilder nebyl Å¡patné IDE, ale v Ä?asech kolem verzà 6, 7, 8 (ano Borland chrlil major verze každý půlrok) podle mÄ› zaspal dobu. Co nám může nabÃdnout za nemalé penÃze dnes? NejdÅ™Ãve se podÃvejme, co jsou to ty nemalé penÃze. LicenÄ?nà model zůstáva zachován, verze Enterprise, Professional a nejchudšà Developer stojà 1.999 resp. 799 resp. 399 dolarů (cena za nové licence, ceny za upgrade jsou o nÄ›co nižšÃ). Poplatky za podporu nejsou v této sumÄ› zahrnuty a nemalé penÃze se platà se zvlášť. ÄŒtyÅ™ista babek za Developer verzi, urÄ?enou pro individuálnà a open-source uživatele mi pÅ™ijde jako silná káva a nerozumÃm nikomu, kdo by do toho tyto penÃze investoval. PodÃváteli se na seznam funkcÃ, je tato verze silnÄ› okleÅ¡tÄ›ná (Ä?i vykleÅ¡tÄ›ná ;-)) a argument, že můžete IDE rozÅ¡ÃÅ™it o pluginy produkované eclipse komunitou zde jaksi nemá smysl.
DalÅ¡Ãm důvodem proÄ? podlÄ› mÄ› NEinvestovat do JBuilderu je evidentnà nejistota co se týÄ?e směřovánà tohoto produktu a potažmo celé firmy. Investovali byste (sta)tisÃce dolarů do software firmy, která v únoru tohoto roku oznamovala, že se zbavà své divize zabývajÃcà se vývojovými nástroji (JBuilder, Delphi, C++Builder, C#Builder,...) protože to, co je podle nich "hot", je trh application life management (ALM) softwaru. Tento týden (o devÄ›t mÄ›sÃců pozdÄ›ji) naopak Borland oznámil, že nejlepšà bude divizi nástrojů si ponechat, ale vyÄ?lenit jà jako samostatnou odnož se jménem CodeGear. PÄ›kný veletoÄ? ;-) Tyto zvraty jsou pro Borland celkem typické, vzpomeňme nÄ›kolikaletou neúspěšnou pÅ™emÄ›nu v Inprise a pozdÄ›jšà návrat k původnÃmu firemnÃmu jménu Borland.
Nynà se podÃvejme na technickou stránku vÄ›ci. Co nového JBuilder 2007 pÅ™inese. ÄŒerpám pouze z dostupné dokumentace, což je pÅ™edevÅ¡Ãm web a pdfka: Data Sheet a Feature Matrix.
Již úvodnà věta je celkem odvážná :)
The latest JBuilder is the first application server independent enterprise class IDE built on open source Eclipse.
PokraÄ?ujme dále:
It provides all the economic benefits of an open source platform, with the reliability of a trusted, turnkey solution provider.
S výše zmiňovanou cenovou politikou mi přijde poukazovat na ekonomické benefity open source platformy také celkem zcestné ;-)
Krásné fráze.
Z inzerovaných featur:
- postavený na platformě Eclipse 3.2
- podpora JEE5,
- podpora JSE5
- oboustranné modelovánà v UML 2.0
- Visual Web Services Designer
- vizualizace usnadňujÃcà EJB development (Visual EJB Workbench)
- integrovaný OptimizeIt 2007 (což může být celkem zajÃmavý argument)
- ProjectAssist a
- dalšà Ä?Ãm dál vÃc enterprise-abstraktnÄ›-marketingové funkce.
Jak už jsem Å™ekl jsem k osudu JBuilderu dost skeptický. Ani ne kvůli Eclipse a Netbeans, které jsou zdarma. Ani ne kvůli IntellJ Idee, která je o dost levnÄ›jšà a v nÄ›kterých vÄ›cech stále nepÅ™ekonaná, ale podle mÄ› mÃřà na trochu jiný segment trhu. SkuteÄ?ná konkurence pro JBuilder jsou produkty jako IBM RAD nebo Oracle JDeveloper. Jenže ti to majà snazÅ¡Ã. IBM i Oracle majà sÃlu s dalÅ¡Ãmi produkty a službami protlaÄ?it svá IDE k zákaznÃkovi. Borland tuto sÃlu už dávno nemá!
Å tÃtky: aplikace, programovani, software
2006/02/03
quick oracle tip - how to move tablespaces
ALTER TABLESPACE DATA02 OFFLINE;
ALTER TABLESPACE DATA02
RENAME DATAFILE 'D:\oracle\oradata\mboruvka\DATA021.ORA' TO 'G:\oracle\oradata\mboruvka\DATA021.ORA';
ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
ALTER TABLESPACE DATA02 ONLINE;
note: with this procedure it is not necessary to shutdown db.
Å tÃtky: programovani, software
2005/11/27
Sněžka!
Výstup na Sněžku v zimÄ› má svoje kouzlo - viz následujÃcà fotky:
![]() | ![]() |
![]() | ![]() |
Å tÃtky: cestovani, programovani, software
2005/10/06
Ajax - lehký úvod
Fakta:
RozdÃl mezi tradiÄ?nà webovou aplikacà a webovou aplikacà podle Ajaxu je na následujÃcÃm diagramu:

Levá strana diagramu popisuje klasickou webovou aplikaci tak jak ji vÅ¡ichni známe: browser posÃlá HTTP requesty na server, server vracà HTML+CSS, které je zobrazeno v browseru.
Pravá strana diagramu ukazuje model s použitÃm Ajaxu. Na prvnà pohled pÅ™ibyla do Ä?ásti web browseru dalšà vrstva - Ajax engine. Požadavky z uživatelského rozhranà jsou pÅ™evedeny na volánà metod JavaScriptu v Ajax enginu, který komunikuje se serverem. Server odpovÃdá ve formátu XML dokumentu, který Ajax engine transformuje na browserem zobrazitelné HTML a CSS.
Zásadnà rozdÃl je v tom, že v klasické webové aplikaci je nutné pro pÅ™echod mezi dvÄ›ma stavy aplikace naÄ?Ãst celou stránku. To je jak vÅ¡ichni známe zdlouhavé a otravné. Ajax umožňuje zmÄ›nu pouze Ä?ásti stránky. Wikipedia na toto téma uvádà jako pÅ™Ãklad webovou aplikaci umožňujÃcà pÅ™Ãdávat k obrazkům popisky (viz. napÅ™ Flicker).
TradiÄ?nà pojetÃ: obrázek a formulář pro pÅ™idánà popisku. Odeslánà formuláře (submit) způsobà pÅ™echod aplikace do nového stavu, který pÅ™edstavuje nová stránka zobrazujÃcà ten samý obrázek s pÅ™idaným popiskem.
V pojetà Ajaxu: obrázek a formulář pro pÅ™idánà popisku. Odeslánà formuláře nezpůsobà nový HTTP call, ale pouze volánà JavaScript metody na Ajax enginu. Ten aniž by zatÃm jakkoliv mÄ›nil zobrazenou stránku, odeÅ¡le data na server a poÄ?ká na odpovÄ›Ä? v XML. Pomocà webových technologià DHTHML a CSS zobrazà popisek u obrázku na aktuálnÄ› zobrazené stránce, aniž by se znova naÄ?Ãtala. Odezva aplikace je mnohem kratÅ¡Ã, uživatel nemusà Ä?ekat na znovunaÄ?tenà stránky, což v pÅ™ÃpadÄ› obrázku nemusà být zanedbatelná doba (ano, asi je v cachi browseru, ale i tak...:-).
Protože Å¡edá je teorie a zelený je strom praxe, nynà se mrkneme na pÅ™Ãklad, kde si Ajax můžete vyzkouÅ¡et v praxi: Typickým pÅ™Ãkladem použità konceptu Ajax je Google Suggest. O této vychytávce, která je jako beta stále pod Google labs, jsem psal asi pÅ™ed půl rokem (viz Google napovÃdá). Bohužel jsem v té dobÄ› nepátral, jak je to udÄ›lané. Vody web designu a developmentu nejsou tak stojaté jak se zdá a já jsem tak troÅ¡ku zaspal dobu :-)
Jak to teda funguje: Google stránka vypadá stejnÄ› jak ji důvÄ›rnÄ› znáte. ZaÄ?nete na klávesnici vyÅ¥ukávat heslo které hledáte a browser vám napovÃdá. Ale nenapovÃdá vám pomocà historie dotazů uložené ve vaÅ¡em browseru (to co jste hledali nÄ›kdy v minulosti). NapovÃdá Google a to tak, že po jednotlivých pÃsmenkách na pozadà zavolá službu na Google serveru, která mu vrátà sadu nejÄ?astÄ›ji hledaných hesel podle pÃsmen, které jste zadali. Podstatné je, že to funguje - a funguje to rychle. A vysledný dojem pro uživatele: stránka se ani nehne, tzn. nenaÄ?Ãtá se znovu celá, pouze se obnovujà dropdowny s nabÃzenými hesly.
PÅ™Ãklad jak použità Ajaxu vývojáři Googlu neuvádÃm nahodou. Google se Ajaxu chopil zodpovÄ›dnÄ› a je výkladnà skÅ™Ãnà Ajax aplikacÃ. PosuÄ?te sami:
PokraÄ?ovánà pÅ™ÃÅ¡tÄ›: Zrovna zkouÅ¡Ãm AjaxTags, což je knihovna JSP tagů, která umožňuje použÃt jednoduché Ajaxové triky v JavaServerPages.
Å tÃtky: programovani
2005/05/10
IT: JBuilder open sourcem
Co je v pozadÃ? SamozÅ™ejmÄ› je to vÃtÄ›zné taženà Eclipsu.
I když CEO Borlandu se tvářà stále optimisticky - viz Ä?lánek ŽijeÅ¡ jenom tÅ™ikrát - bude to podle mÄ› mÃt Borland hodnÄ› těžké a osobnÄ› nedávám JBuilderu moc Å¡ancÃ.
Zároveň je mi JBuilderu troÅ¡ku lÃto, protože to bylo moje prvnà IDE. DÃky práci na pluginu WASP Developer jsem si důkladnÄ› proÅ¡el každou verzi JBuilderu od verze 4 (s Porsche Boxster ve splash screenu ;-), 5, 6, 7, 9, X). VSUVKA: Jako malé ocenÄ›nà tohoto (dnes už dále nevyvÃjejÃcÃho se) pluginu je pro mÄ› fakt, že samotný html/php/xml/... guru Jirka Kosek použil náš tehdehšà plugin ve své diplomce na téma webové služby! ;-) Ale to jsem odboÄ?il.
Otázka která mÄ› napadá: můžete v dneÅ¡nà dobÄ› existovat firma soustÅ™edÃcà se primárnÄ› na vývojové prostÅ™edà (IDE)?
...eclipse pod rouÅ¡kou open source, za zády sponzorovaný vÅ¡emocnou IBM zabÃjà vÅ¡echny ;-) nenà to dumping? kdo jeÅ¡tÄ› zbývá? je ted Å™ada na intellij? Co na to jan tleskaÄ??...
Å tÃtky: programovani, software
2005/03/03
IT: Excel v Jave? POI!
V rámci projektu na kterém teÄ? pracuju jsem potÅ™eboval dostat z 10 megového Excel sheetu tisÃce hodnot a transformovat je do výstupnÃch CSV souborů. Podle výstupnÃho souboru se liÅ¡ila kombinace sloupců a jejich transformace. SamozÅ™ejmÄ› že by to Å¡lo vyÅ™eÅ¡it a smést ze stolu rychlým sledem copy&pastů v Excelu a maximálnÄ› použitÃm nÄ›jakého makra.
Dostávám se k jádru vÄ›ci. Rozhodl jsem se pro Å™eÅ¡enà v javÄ›. ZasvÄ›cenà asi vÄ›dÃ, že se k práci s Microsoft Office soubory použÃvá open-source knihovna Jakarta POI.
Takže moje poznatky: pro práci s Excelovskými tabulkami vás zajÃmá jen jedna Ä?ást POI - POI-HSSF. NaÄ?Ãst Excelovský dokument a vybrat z nÄ›j hodnoty které potÅ™ebujete je po rychlém nahlédnutà do Quick guidu záležitost pár minut. Co mÄ› potěšilo je, že to opravdu funguje.
Jenom jsem musel pro naÄ?tenà 10 MB XLS souboru jsem musel zvÄ›tÅ¡it heap VM (
-Xmx196M zabralo).Dalšà malou záludnostà je iterátor přes buňky v řádku (
hssfRow.cellIterator()). Nevracel buňky tak jak byste Ä?ekali, ale v jakémsi fyzickém poÅ™adà a na v logickém. ZatÃm jsem nestudoval o co jde. StaÄ?à použÃt hssfRow.getCell(int).A nakonec abyste mÄ›li pÅ™edstavu jak vypadá API sem dávám malý pÅ™Ãklad:
FileInputStream fis = new FileInputStream(xlsFile)
POIFSFileSystem fs = new POIFSFileSystem(fis);
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
HSSFRow row = sheet.getRow(rowNumber);
HSSFCell codeCell = row.getCell(COLUMN_CODE);
ProstÄ› jednoduché a funkÄ?nÃ.
Dále jsem potÅ™eboval jeden velký CSV soubor naÄ?Ãst a jiný zapsat.
S tÃmto formátem POI nepracuje. Takže jsem pro zápis použil normálnÃ
PrintWriter a pro Ä?tenà knihovnu z ostermiller.org. K nà jedna malá poznámka - CSVParser vracà jen String[][], takže nebude zrovna moc vhodný pro veliké dokumenty.Å tÃtky: programovani, software
2005/03/02
IT: titulek okna v *.bat
(*.bat, *.cmd) ve windowsech. Stavá se vám taky, že máte najednou otevÅ™ených Å¡est oken s pÅ™Ãkazovou řádkou a zuÅ™ivÄ› mezi nimi pÅ™epÃnáte pÅ™es Alt+Tab a hledáte to jediné správné? Tak teÄ? už to bude jednoduššÃ. Dodnes jsem netuÅ¡il že existuje pÅ™Ãkaz title [string]. Je to asi tÃm, že jsem se tyhle pÅ™Ãkazy uÄ?il na MS-DOSu 5.0. A to tam jeÅ¡tÄ› nebyl. Nebo ano? :-) Pro ty z Vás, co majà potÞe vyznat se v oknech i po zmÄ›nÄ› titulků, existuje jeÅ¡tÄ› jedno Å™eÅ¡eni: použÃt
color [XX], kde XX jsou hexa-Ä?Ãslice reprezentujÃcà barvy.Opakovánà je matka moudrosti.
Å tÃtky: programovani, software
2005/02/28
IT: Apache vs. Skype
C:\Program Files\Apache Group\Apache2\bin>Apache.exe
(OS 10048)Only one usage of each socket address (protocol/network address/port)
is normally permitted. : make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
No a bohužel nemáte moc Ä?asu na Å™eÅ¡enà tohoto problému. NaÅ¡tÄ›stà se to povedlo. Takže jak postupovat? Prvnà co mÄ› napadlo bylo že si port 80 obsadil Microsoft IIS. Jenže ten neběžel. Takže jsem si pustil utilitu TCPView z kolekce www.sysinternals.com Výborný pomocnÃk. Z nÄ›j jsem už jednoduÅ¡e zjistil, že si port 80 obsadil Skype. ZajÃmavé. DÄ›je se to jenom v pÅ™ÃpadÄ›, že notebook nemám v sÃti. Usuzuju z toho, že Skype zkoušà pro vytvoÅ™enà spojenà použÃt svoje standardnà porty, ale když se mu to nepovede (notebook nenà v sÃti), obsadà si port 80 a i když se nikam nepÅ™ipojà a je ve stavu offline - zůstane viset na portu 80.
Å tÃtky: programovani, software
IT: Oracle a jeho služby ve windows
Startup Type) z Automatic na Manual. Oracle Tip Manage Oracle9i services under Windows vám na pár řádcÃch udÄ›lá jasno k Ä?emu která služba je a jestli se vám vyplatà jà spouÅ¡tÄ›t automaticky, ruÄ?nÄ› nebo nikdy.
Na konci Ä?lánku jsou dva jednoduché skripty pro startovánà a stopovánà služeb Oraclu. UÅ¡etřà vám zdlouhavé klikánà v managementu
Service.Å tÃtky: programovani, software
2005/01/21
IT: Maly kviz pro znalce batch filu - reseni
Pozdrzet vykovavani
*.bat skriptu napr. na nekolik vterin neni zrovna jednoducha zalezitost. Na princip reseni prisel po nekolika iteracich prisel jako prvni Fil.
Princip reseni je nasledujici. Protoze zadne
pause [time] bohuzel neexistuje a ani choice /t:time uz ve Windows XP/2k nemuzete pouzit, musite si pomoci sami trosku vetsim hackem :-)
Rob van der Woude poskytuje skript obsahujici reseni - v cyklu volate prikaz
ping s nastavenym timeoutem proti neexistujici IP adrese:
ping -n 1 -w [timeout] [neexistujici.ip.adresa]
Chce to duvtip! :-)
Å tÃtky: programovani, software
2005/01/19
IT: Maly kviz pro znalce batch filu
*.bat) smycku, ktera v kazde iteraci ceka rekneme 5 vterin. Jde mi o to cekani, nejde mi o tu smycku ;-)
Å tÃtky: programovani, software
2005/01/02
IT: Refactoring
Knizka pojednava o refactoringu, neboli upravach existujiciho kodu za ucelem zvyseni jeho kvality aniz by tim vsak utrpelo jeho vnejsi chovani. Je pekne strukturovana: tzn. zacina tim proc je refactoring uzitecny, jak ho praktikovat, co je k nemu potreba. Dulezite jsou ale dve casti knihy - seznam tzv. bad smells a seznam jednotlivych refactoringu, ktere tyto zapachy odstranuji. Vsechno je doplnene srozumitelnyma prikladama v Jave.
Jak jsem si tak procital jednotlive bad smelly, vybavovaly se mi casto i classy, na kterych bych jednotlive zapachy :-) dobre ilustroval :-)
Pokud zrovna nemate tuto knizku po ruce, doporucuju se podivat do helpu ke svym IDE. Idea, Eclipse i JBuilder refactoring uz dnes podporuji a velmi ho zjednodusily - vetsinou na pouhou klavesovou zkratku (kdyz vite co oznacit ;-)). Pro Ideu existuje pekny tutorial ktery ukazuje refactoring pomoci tohoto IDE.
Koho zajima refactoring vic, muze se mrknout na web ktery shromazduje veskere materialy na dane tema: www.refactoring.com. A kdo chce, muze se subscribnout na RSS feed ktery informuje o novinkach na webu.
Tabulka SmellsToRefactorings ukazuje seznam nejcastejsich bad smellu a zaroven prinasi rady jak se jich pomoci refactoringu zbavit.
No a nakonec abecedni seznam refactoringu s jejich popisy.
Å tÃtky: programovani, software
2004/12/23
IT: WseWsdl2.exe troubles
I would like to point out few problems which I've experienced during my experiments with WseWsdl2.exe tool. I am using WseWsdl2.exe from Microsoft Web Services Enhancements 2.0 SP2. The WseWsdl2.exe is WSDL to SoapClient Tool. It should replace current .NET Wsdl.exe tool. What I find quite disappointing are the error messages produced by this tool. WSDLs we use in our project are compilable without any problems with Wsdl.exe but WseWsdl2.exe complains. What is worse, that the error messages are very unclear. Documentation didn't help us, neither the Google search. We had to take our WSDLs and remove element after element to find out what's wrong with them. Here are the findings, maybe it will help someone having similar troubles. This is the reason for this post.
First problems occur when the WSDL definition contains more than one message part in the (SOAP) message. But the error message says this:
An error occurred processing this WSDL. More information:
System.Exception: Invalid WSDL file from SoapService
at ClientGen.ClientGen.GetBindingType(...)
at ClientGen.ClientGen.WriteCSOperationBinding(...)
at ClientGen.ClientGen.WriteOperationBinding(...)
at ClientGen.ClientGen.WriteClass(...)
at ClientGen.ClientGen.GenerateCode(...)
at ClientGen.ClientGen.GenerateCode(...)
at ClientGen.Class1.Main(String[] arguments)
I know that WSDLs describing messages with more than one message part (referring element) in SOAP body should not be used. It is stated in the WS-I Basic Profile 1.1. We can change the WSDL to wrapped-literal, no problem. But the tool should not produce this general error!
The second problem I would like to point occurs when the WSDL contains unsupported extension element. We are using custom extesion elements within the soap:binding. The extension element present in our WSDL is not marked with wsdl:required="true". So it should be silently ignored if the consumer does not understand him or cannot process him (as stated in the WS-I Basic Profile 1.1, which also clarifies and tights up the rules from the WSDL specification). WseWsdl2.exe does not ignore them - but fails:
An error occurred processing this WSDL. More information:
System.InvalidCastException: Specified cast is not valid.
at ClientGen.ClientGen.WriteCSOperationBinding(...)
at ClientGen.ClientGen.WriteOperationBinding(...)
at ClientGen.ClientGen.WriteClass(...)
at ClientGen.ClientGen.GenerateCode(...)
at ClientGen.ClientGen.GenerateCode(...)
at ClientGen.Class1.Main(String[] arguments)
Again, the error message is very, very unclear! For me it seems that the level of WSDL specifications support is much lower than it was in previous version. Without any warning in the documentation. Or Am I missing something?
Å tÃtky: programovani, software
2004/12/11
Google napovida
Google Suggest prinasi dalsi vylepseni ve vyhledavani na internetu. Vlastne to neni nic jineho nez autocomplete - automaticke doplnovani. V okamziku kdy zadavate do formulare vyhledavaci stranky Googlu svuj dotaz, on vam napovida. Muze vam to usetrit psani, ale taky vidite, jaka souslovi lide nejcasteji hledaji.
Fuknce autocomplete je vetsine uzivatelum PC dobre znama. Setkate se s ni napriklad kdyz zadavate adresu do browseru nebo treba kdyz pisete adresu prijemce v emailu. Vlastne logicky - pouziti i ve vyhledavani v internetu - udelal az Google. Vsadim se, ze se do roka se s touto featurou setkame taky v nejednom z ceskych vyhledavacu.
Co me na tom zarazi jsou dve veci: zpusob jakym byl tento napad prenesen do praxe a taky - ze to vazne pekne funguje.
Jak autor myslenky pise, cela vec ho napadla behem obeda. V Googlu maji udajne pravo venovat az 20% sveho pracovniho casu vlastnim projektum. To je jiste velmi lakave (zde bych jen podotknul, ze se nelze domnivat, ze by vam Google platil za vase soukrome projekty, ale jde o projekty ktere jsou ve vysledku ve vlastnictvi company). Takze za par mesicu svuj napad dovedl do konce.
To ze to funguje skutecne pekne si zkuste sami. Zadejte si jedno slovo a za chvilku se dozvite, v jakych souslovich se nejcasteji vyhledava. Kdyz vezmeme v uvahu kolik miliard stranek Google indexuje a za jakou chvilicku vam nabidne relevantni slova, tak je to vazne k neuvereni. Je jasne, ze napriklad domnivat se, ze po napsani slova Milan se dockam sveho prijmeni, je zatim zcestne :-) I kdyz nekteri znami jiz na Googlu maji slusny page rank, takze u nich to funguje.
Takze, vyzkousejte si sami!
Å tÃtky: programovani, software



