Archív rubriky 'devel'

Jak na iGoogle gadget

14.3.2008 (Friday)

V únoru končila soutěž, kterou vyhlásil český google, v Programování iGoogle gadgetů. Chtěl jsem se ji zůčastnit a vyzkoušet si jak se to dělá. Strávil jsem nad tím asi 2 a1/2 večerů a zplodil svůj vlastní gadget. Ještě den před koncem soutěže jsem pilně finishoval abych se nakonec dozvěděl, že se můj gadget do soutěže nedostal. Bůh ví proč?

Ale nebojte se nechci abyste o něco přišli a tak vám jej tady předvedu. Na googlu jej lze zajít zde Kurzy ČNB.

Taky jej máte přímo před nosem.

Co umí:

Nic moc ale snad to stačí. Můžete si vybrat měnu, kterou si to zapamatuje jako vychozí, a můžete měnit částky pro převod, a to jak Z tak DO. Zkuste do toho klikat snad na to příjdete. Když mi budete hodně nadávat, že se vám to nelíbí, třeba tam i něco upravím.

A jak jsem s ním válčil:

Inu celkem to šlo, bylo to tak náročné jako je programování v javascriptu, tedy peklo. Hlavně v tom, že když už to skoro bylo, zjistil jsem, že to nefunguje v IE a tak jsem musel dělat nějaké kompromisy. A protože jsem spěchal a nechtěl jsem tomu věnovat zbytečně dlouho tak na tu prasárnu nejsem moc hrdý. Ale abych nezněl moc negativně, tak se mi celá ta technlogie docela líbí a myslím že by se stím dali udělat i zajímavé věci.

Psal jsem to v editoru Google Gadget Editor, který je vlastně taky gadget. Nebylo to sice moc konfortní, ale v rámci možností bez potřeby něco instalovat se to dá přežít.

Good luck s vaší vlastní tvorbou.

Potřebujete konvertovat různé formáty?

28.9.2007 (Friday)

Určitě jste už potřebovali zkovertovat nějaký soubor do jiného formátu, a díky tomu jste si nainstalovali do kompu kopu šrotu. Nedavno mi kolega ukázal zajímavou web applikaci Zamzar, která za vás konverzi provede , výčet formátů je ceklem pestrý:

Convert file formats with Zamzar

maven-release-plugin in Action

28.8.2007 (Tuesday)

Tento příspěvek vznikl jako reakce na článek Honzy Hovotného „Co bych rád slyšel v září na CZJUG“, ve kterém se ptal myslím na release maven multiprojectu a na stanovení jednotné verze pro modul s potomky. Už dříve jsem s tím nějakou dobu strávil, protože jsem to chtěl v práci vyřešit, tehdy se mi to nepodařilo, ale myslel jsem si, že jsem byl blízko. Proto jsem si našel chvíli času a rozhodl jsem se ten problém rozkousnout. Doufám že vám to přisěje i k diskusi na CZJUG já se jako obvykle nedostavím.

Pokusím se vás provést krok za krokem. A snad se vám to taky podaří.

Příprava

Takže co potřebujeme? Potřebujeme maven, cvs a maven repository. Ja mám svoje maven repository na svém hostingu a deployuji tam pomocí ftp což jsem ze začátku trošku složitější, ale nakonec ftp je přece jen častěji dostupnějsí než jiné metody. Cvs mám taky nainstalované na localhostu, takže si budete muset udělat svoje. Potřebujeme také maven multiproject, na vyzkoušení můžete použít tenhle jednoduchý, který jsem si na to vytvořil já (maven-multiproject-test).

Podívejme se na naše pom(y).xml

mmt/pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com_3rojka.maven.test</groupId>
        <artifactId>mmt</artifactId>
        <packaging>pom</packaging>
        <version>0.9-SNAPSHOT</version>
        <name>Maven Multiproject Test</name>
        <scm>
                <!-- tady si budete muset naspat svůj connection string -->
                <!-- scm:cvs:method:username:password@server:cvsroot:module -->
                <developerConnection>scm:cvs:pserver:3rojka:@localhost:/work/cvs-repositories/eclipse-1:mmt</developerConnection>
        </scm>
        <modules>
                <module>A</module>
                <module>B</module>
        </modules>

        <distributionManagement>
                <!-- use the following if you're not using a snapshot version. -->
                <repository>
                        <id>maven-3rojka-com</id>
                        <name>maven-3rojka-inhouse repo</name>
                        <url>
                                ftp://ftp.3rojka.com/public_html/maven/maven2/repos/inhouse-1
                        </url>
                </repository>
                <!-- use the following if you ARE using a snapshot version. -->
                <snapshotRepository>
                        <id>maven-3rojka-com</id>
                        <name>maven-3rojka-inhouse repo</name>
                        <url>
                                ftp://ftp.3rojka.com/public_html/maven/maven2/repos/inhouse-1
                        </url>
                </snapshotRepository>
        </distributionManagement>

        <build>
                <!-- tahle extension je potřeba pro ftp deploy -->
                <extensions>
                        <extension>
                                <groupId>org.apache.maven.wagon</groupId>
                                <artifactId>wagon-ftp</artifactId>
                                <version>1.0-beta-2</version>
                        </extension>
                </extensions>
        </build>
</project>

Pokud budete deployovat jako na nějaký remote server budete potřebovat nastavit username a password. Takže je potřeba konfigurovat setting.xml

....
        <servers>
                <server>
                        <!-- všimněte si že podobnost tohoto id a id repository v distributionManagmantu v pom.xml není náhodná -->
                        <id>maven-3rojka-com</id>
                        <username>...tohle je na vás ...</username>
                        <password>...a tohle už tím tuplem</password>
                </server>
        </servers>
....

Tak už jenom pro úplnost mnt/A/pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <parent>
                <artifactId>mmt</artifactId>
                <groupId>com_3rojka.maven.test</groupId>
                <version>1.3-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
        <groupId>com_3rojka.maven.test</groupId>
        <artifactId>mmt-A</artifactId>
        <packaging>jar</packaging>
        <name>Maven Multiproject Test - module A</name>
</project>

a mmt/B/pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <parent>
                <artifactId>mmt</artifactId>
                <groupId>com_3rojka.maven.test</groupId>
                <version>1.3-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
        <groupId>com_3rojka.maven.test</groupId>
        <artifactId>mmt-B</artifactId>
        <packaging>jar</packaging>
        <name>Maven Multiproject Test - module B</name>

        <!-- tady jsem si jako perličku ještě udělal závislost mezi submoduly -->
        <dependencies>
                <dependency>
                        <groupId>com_3rojka.maven.test</groupId>
                        <artifactId>mmt-A</artifactId>
                        <version>${version}</version>
                </dependency>
        </dependencies>
</project>

Pustíme se do práce

1. Rozbalíme si mmt.zip do adresáře mmt a importujeme jej jako modul mmt do cvs.

2. teď protože máme project commitnutý mužeme přistoupit k mvn release:prepare
D:\work\eclipse-ws-2-maven\mmt>mvn release:prepare -DautoVersionSub­modules=true
tady to autoVersionSub­modules je very kool trick který zajistí verzovaní modulu stejně jako verzi parenta. maven se nás pěkně zeptá…. What is the release version for „Maven Multiproject Test“? (com_3rojka.ma­ven.tes t:mmt) 0.9: :…. a protéže máme hezkou snapshot verzi sám nám nabídne 0.9 takže stačí enter…. What is SCM release tag or label for „Maven Multiproject Test“? (com_3rojka.mave n.test:mmt) mmt-0_9: :…. taky nám doporučí cvs tag, taky enter….
What is the new development version for „Maven Multiproject Test“? (com_3rojka.ma­ven.test:mmt) 0.10-SNAPSHOT: :
…. a ještě si vymyslí další SNASHOT verzi, taky stačí enter, ale pokud by ste třeba chtěli verzi 1.0, ale na to by ste asi taky přišli…. Hotovo release:prepare je za námi.3. takže můžeme release:perform
D:\work\eclipse-ws-2-maven\mmt>mvn release:perform
A máme releasnuto a připravenou další pracovní SNAPSHOT verzi.

Takhle je to docela triviální, ale ta drbačka než jsem přišel na některé detaily.

Takže seznam věcí na které je potřeba si dát pozor.

  1. Nastavení developerConnection
  2. Nastavení deploymentManag­mentu tedy repository pro výsledný deploy.
  3. S 2 souvisí nastavení servers tedu heslo pro vzdálený přístup.
  4. ‚releasovat‘ se dají zdárně jenom SNAPSHOT verze, aspoň tedy myslím.

Přeji mnoho úspěchů v Portlandu.

Ostrava on Rail

2.5.2007 (Wednesday)

Narazil jsem na tuto zajímavou konferenci tak ji sem nalinkuji: Ostrava on Rail

Maven - online průvodce

1.5.2007 (Tuesday)

Zrovna jsem na nějakém blogu našel odkaz na online průvodce pro maven. Protože mám maven rád myslím, že stojí za to tento odkaz znovu nalinkovat.

EL hack …

9.4.2007 (Monday)

… aneb jak volat methodu s parametrem pomocí Expression Language.

Možná, že je to tím že jsem si dostačně pořádně nepřečetl dokumnetaci k EL, ale nějak jsem nezjistil jak zavolat methodu objektu s parametrem a párkrát by se mi to hodilo. V EL přímo to asi nejde, ony na to budou nejspíš budou existovat nějak tag library, ale ty se mi většinou nelíbí, protože občas je dost horor k nim najít dokumentaci. Proto jsem přemýšlel jak to udělat bez tld přímo pomocí EL.
Určitě to není uplně nejčistější řešení a určitě nejsem jediný koho to napadlo, ale zajímal by mě váš názor na tento Hack.

(more…)

Boolean … zcvoknout či nezcvoknout

2.2.2007 (Friday)

Podle mne jedním z problémů vyvojářů bývá nedostatek komunikace. Při redesignu části naší sity jsem měl co do činění z kódem mého předchůdce. A občas jsem měl pocit, že ten člověk nekomunikoval ani sám se sebou. Jinak si nemohu vysvětlit proč si implementoval třídu boolean …


/*@author xxxxx xxxx Made in my free time. */

package com.xxxxxx.fuzzywords;

public class FlagBoolean {

private boolean value;

void set(boolean to) { value=to; }

boolean isSet() { return value; }

}

… že by paranoia aneb nedůvěra k cizímu kódu, nebo se snad připravoval na nějaké předem promyšlené rozšiřování, nebo jen nevěděl co se svým “free time” (inu někdo píše blogy, jiný zase vdolky). Snad to byl jen úlet, ale podle mne se ten člověk zbláznil, jinak si nedokážu vysvětlit, jak mohl celé ty fuzzywords napsat tak geniálně, že tady tomu nikdo nerozumí.

V žádném případě ho neodsuzuji, věřím, že pokud se z toho dostal tak se tomu dnes sám zasměje, a možná k tomu měl důvod.

A navíc si myslím, že nás to čeká všechny. Tak že se občas projděte k oknu než z toho zblbnete.

Eclipse Callisto + mevenide EE

24.9.2006 (Sunday)

This is english edition of one of my previous posts. I decided to write it in english after couple mails that I received where people were asking me to send them the modified jar, because they probably read about the fix in codehause jira.

“I have a problem with mevenide plugin with Eclipse 3.2 (POM
Synchronizer) and I read your workaround on JIRA
(http://jira.codehaus.org/browse/MEVENIDE-394).”

In order to get this working you only need to copy this modified jar to ECPLISE_ROOT/plugins/org.mevenide.ui_0.4.0/mevenide-ui-eclipse-0.4.0.jar.

If you wish to compile it yourself you need to get the mevenide sources from their subversion and replace class ToggleWritePropertiesAction.

I have been using this patch for quite a while and have not experienced any problem with it. If you have any problem or question send me a comment or email, I am glad to contribute.

Good luck using eclipse.

Eclipse Callisto + mevenide

19.7.2006 (Wednesday)

Hurá nová verze eclipsu je na světě, tak rychle ať už ji mám nainstalovanou. Eclipse instaluji každou chvíli a tak mi to zase zabralo o něco míň. Ale co se to nestalo nejlepší fíčura do mevenide, tedy synchronizace eclipse projektu s project.xml nefunguje. Píše to že nějaká klása přepisuje final metodu. Chvíli jsem byl smutný, pak mě začali kolegové prudit, že když jsem takový nadšenec tak ať si to opravím sám, od čeho je opensource. Eclipse pluginy jsem nikdy nedělal, ale nedalo mi to. Byl jsem překvapený jak rychle to šlo. V jednom předkovy se změnila metoda na final a bylo vymyšleno obecnější řešení pomocí implementace nějakého listeneru, musím přiznat že eclipse je úžasně komentovaný opensource a tak za pár minut nebylo co řešit.

(more…)

How to multiproject:clean in maven

17.7.2006 (Monday)

I ran into a problem with multiproject:clean. The problem was that if you have multiple projects where one supproject is dependent on another, then you will have a problem because maven tries to get dependencies even when you dont need them (obviously for clean you do not have to need some dependecies). So the multiproject:clean can end up with unsatisfied dependency error.
So I was googleing and found work arround:

<?xml version="1.0" encoding="ISO-8859-1"?>
<project default="all"
xmlns:m="jelly:maven" xmlns:j="jelly:core"

xmlns:ant="jelly:ant">
<goal name="multiproject:clean">

<m:reactor basedir="."
banner="Gathering project list"
includes="**/project.xml"
postProcessing="true"
ignoreFailures="true"
collectOnly="true" />
<j:forEach var="reactorProject"
items="${reactorProjects}">
<!-- this list of things to delete is lifted from clean:clean -->
<ant:delete
dir="${reactorProject.context.getVariable('maven.build.dest')}" />
<ant:delete
dir="${reactorProject.context.getVariable('maven.build.dir')}" />
<ant:delete
file="${reactorProject.context.getVariable('basedir')}/velocity.log"
quiet="true"
failonerror="false" />
</j:forEach>
</goal >

</project>

Surely there could be more, but this is suiteable for me now.More on maven:reactor jelly tag see maven documentation.

Trochu matematiky

10.6.2006 (Saturday)

Jeden kolega potřeboval pomocí SQL spočítat součin hodnot v daném slopečku tabulky. A jiný můj kolega mu poradil takou vtipnou věc. No není to pěkné posuďte sami:

SELECT exp(sum(log(column_name))) FROM table_name

GWT and Firefox RPC issue

5.6.2006 (Monday)

I had a problem with testing an application developed with GWT, the problem was that after compilation to html/javascript a was trying to run it locally (Firefox opening an html from local file system) with RPC against remote server. But the RPC call never procceded, the reason is probably becase firefox would consider this cross-site scripting as a security issue and would not allow it. This as not problem for IE explorer as it is not concerned about security risks. However this has a simple solution, testing could be done in hosted mode and final testing of the compiled ajax application must be done after deploying the app to the server.
More about this issue at Google groups: Invocation Exception - unable to initiate the asynchronous service invocation

Funguje to! Na tomto serveru běží Apache!

31.5.2006 (Wednesday)

Původně jsem chtěl nadávat na pípni, kvůli jejich vserverům, protože jsem si, budou tomu několik více dnů, zaregistroval tuto službu a pořád né a né ten server rozběhnout, je to sice zdarma virtual hosting, ale i tak to naštve. Po čase jsem zjistil, že už se ani nenaloguju, usoudil jsem, a správně jak jsem zjistil, že mi zrušili účet (moje nervy). Nedal jsem se a vytvořil účet znovu se stejným loginem (abych zjistil jestli jsem měl pravdu s tím zrušením). A výsledek jsem demonstroval v nadpisu. Teď už jenom aby mi te vserver nezrušili než se budu mít čas mu věnovat (mám teď zkouškové), oni to totiž píšou v neoficiálních podnímkách, že nevyužívané vservery ruší neboť jenom zabírají místo a IPiny.

3rojka.vserver.cz

GWT a IE7

26.5.2006 (Friday)

Včera jsem si začal hrát s GWT, což jsou Google tools pro vytváření AJAX aplikací v javě. Je to prý super člověk napíše javouvskou aplikaci a potom jí přeloží do javaskriptu. Google říká, že to odladily na spoustě jejich AJAX aplikací. Nicmeně to nepodporuje IE7, proč by taky když je to zatím takový beta zmetek (toto pramení z mojí frustrace s neodinstalací tohoto …). On by nebyl takový problém, že ho to nepodporuje, kdyby ho to ve svém prostředí pro spouštění hosted applikací nepoužívalo vnitřně. Chvíli mi včera trvalo než jsem přišel na to jak to odstarnit, až jsem to někde vygooglil. A dneska to google uveřejnil na svém GWT blogu jako Issue #8840603 - GWT applications do not run in IE 7. Mě to pomohlo a už vesele ladím.

IE sucks 2

25.5.2006 (Thursday)

Zkoušel jsem si nainsatlovat novější betu IE7. Co mám asi tak udělat …

… rád bych ale kde je ? …

.. abych přeinstaloval celý comp, to už tu bylo děkuji neprosím.

IE sucks …

25.5.2006 (Thursday)

Víme to všichni, ale stejně si to neodpustím, protože mě to dneska pěkně nakrklo. Protože jsem hodná duše uvolil jsem se nainstalovat si IE7 jako beta tester, už tehdy jsem tušil, že to bude průšvih, ale protože Exploder nepoužívam tak jsem to risknul. Marně jsem se pak snažil to odinstalovat nebo přejít na nižší verzi. Co je to za dotěrný software když to nejde odinstalovat. No tak chlapi z microsoftu, když už vypouštíte takové nedodělky, tak by jste je mohli naučit downgrady. Největší problém je v tom, že některé softwary používají IE engine, bohužel takovou bestii jako IE7 nikdo nepodporuje a já se jim nedivím, akorát se divim, že ze všech instalovaných enginů si vyberou ten nejhorší, to bude asi proto, že mají jistotu že ho nikdo nevymaže. Konkrétně sem měl problém s GWT a jak jsem to rozchodil vám povím zítra.