Még jó hogy csak béta, mert nálam tökre nem ugyanaz történik a flash-es runtimeban mint a dhtml-esben. Fedora 6, firefox. Mondjuk linuxon ez a flash plugin is büntet időnként egy memory leakkel.
Az ajaxosok élete se csak játék és mese, mást nem tudok mondani biztatót. Kérem kapcsolja ki.
2007. január 31., szerda
2007. január 30., kedd
TeamCity
Megnéztem a Teamcity CI szerver demóját, hát tényleg hajmeresztő, nagyon jó koncepciói vannak bár kipróbálnám hogy vajon mit tud maven projectekkel, na meg hogy testNG-t nem tud menni, a modernebb teszt koncepciók valószinűleg nincsenek benne. Viszont az a koncepció hogy a CI szerver maga tartsa számon a teszt eredményeket és a analízis eredményeit, hogy aztán onnan lehessen riportolni, hát... pont ilyenről álmodtam. Még 11 hónap karácsonyig :) 200 dolcsi fejenként, ehh, a per seat licenszelés az mindig szívás, nem is kell inkáb.
Egyszer kicsit hasonló IDE integrációt csináltam a continuumhoz és eclipse-hez, életem első és azóta is egyetlen eclipse pluginja :-D Aztán átpasszoltam egy indiai srácnak aki átírta egyébként elég frankón, kiadott egy snapshotot aztán ennyi jó ideje. Így megy ez.
Egyszer kicsit hasonló IDE integrációt csináltam a continuumhoz és eclipse-hez, életem első és azóta is egyetlen eclipse pluginja :-D Aztán átpasszoltam egy indiai srácnak aki átírta egyébként elég frankón, kiadott egy snapshotot aztán ennyi jó ideje. Így megy ez.
Beágyazott ESB egy springes webalkalmazáshoz
A webappba beágyazott dolgoknak mókás kis kultúrája fejlődött ki az utúbbi néhány évben. Kell adatbázis, de nem akarjuk hogy a felhasználó babráljon vele, bedobunk egy Derby-t, kell esetleg MQ is, de az még babrásabb mint egy adatbázis, na jó, akkor bedobunk egy ActiveMQ-t. Kellene kimenő és bejövő adatokat kezelni, integrálni más rendszereinkkel (tipikusan open source cuccokkal).
Erre az igényre tervezem bevetni a Mule ESB-t, konkrétan a yikulju opcionális spring context-darabkáival, és ehhez jön nagyon kapóra a Mule AutowireUMOManagerFactoryBean osztálya. Az a ApplicationContextAware cucc automatikusan megkeresi az inicializáció során a mule objektumokat a context-ben, így opcionálisan be tudjuk válogatni a különböző ki/bemeneti rendszereket, paraméterezés a már leírt módon, megint semmi máshoz nem kell nyúlnia normál esetben a deployernek, csak a web.xml-hez. Én azt se szeressem, de tényleg nem találtam még ennél kevésbé szívatós megoldást :)
Na, ez a terv.
Erre az igényre tervezem bevetni a Mule ESB-t, konkrétan a yikulju opcionális spring context-darabkáival, és ehhez jön nagyon kapóra a Mule AutowireUMOManagerFactoryBean osztálya. Az a ApplicationContextAware cucc automatikusan megkeresi az inicializáció során a mule objektumokat a context-ben, így opcionálisan be tudjuk válogatni a különböző ki/bemeneti rendszereket, paraméterezés a már leírt módon, megint semmi máshoz nem kell nyúlnia normál esetben a deployernek, csak a web.xml-hez. Én azt se szeressem, de tényleg nem találtam még ennél kevésbé szívatós megoldást :)
Na, ez a terv.
2007. január 29., hétfő
Hogy válik az ember architect-té
Na erre nekem is van egy változatom :)
A munkahelyén robot, otthon pedig éjfélig vakít az ívfény. Ez ilyen magyaros betyáros undergroundos dolog, magam tapasztalataiból.
A munkahelyén robot, otthon pedig éjfélig vakít az ívfény. Ez ilyen magyaros betyáros undergroundos dolog, magam tapasztalataiból.
2007. január 28., vasárnap
Meghatódós percek
Előkerült egy cipősdobozból egy 6 évvel ezelötti merevlemezem. Te jó ég hogy ezen mik vannak... például egy korabeli debian aminek tizedik nekifutásra eszembejutott a jelszava, egy PostgreSQL FAQ fordítás, valószinűleg az első amit írtam mert befejezetlen, java cuccok béta kiadásban amiknek mára még a koncepicói is elavultak.
6 év alatt annyi minden elmúlik, néhány dolog viszont 10 év alatt sem :)
6 év alatt annyi minden elmúlik, néhány dolog viszont 10 év alatt sem :)
2007. január 26., péntek
TestNG apocalEclipse
Szóval az eclipse support gyógyítása: eclipse restart. Érdekes. A teszt paraméterezés is megyeget, de ezt még nem igazán találtam ki hogy hogyan kellene használni. Azt szeretném, ha a Continuous Integration szerveremen (continuum konkrétan) be lehetne paraméterezni hogy milyen adatbázis szerverek vannak installálva például és azokon minden végrehajtani a DAO implementációk tesztjeit, és persze minden implementáción. Ha már egyszer elvetemült idealista vagyok akkor abban már nyugodtan lehetek szélsőséges fajta :)
Amúgy ma miközben az itthoni miniclusteremet pofozgattam elszállt a másfél éves maxtor vincsim, amin egyébként a home partíciót is tartom, de kimenekítettem. Vegyetek ti is sok maxtor vinyót, nagyon jó hangja van amikor azt mondja hogy "nyekkk"!
Amúgy ma miközben az itthoni miniclusteremet pofozgattam elszállt a másfél éves maxtor vincsim, amin egyébként a home partíciót is tartom, de kimenekítettem. Vegyetek ti is sok maxtor vinyót, nagyon jó hangja van amikor azt mondja hogy "nyekkk"!
2007. január 24., szerda
N-edik visszapattanás a TestNG-ről
Ma ismét megpróbáltam átportolni egy projectemet TestNG-re, mert nagyon megtetszett hogy jobbára már működik az eclipse TestNG pluginja a 3.2-es eclipsemmel. Hoz pár olyan dolgot ami frankó lenne végre bevetni, test grouping, paraméterezés, ilyesmi.
Aztán rájöttem hogy az eclipse pluginja is csak jobbára működik, a maven-nel a 5.1-es verzió pedig egyáltalán nem. Kb ugyanez áll a Junit 4.1 verziójára, annyi kivétellel hogy az eclipse alapból tartalmaz már egy "junit 4" futtatókörnyezetet, ami konkrétan junit 4.1-gyel megy. Tökre nem mindegy hogy 4 vagy 4.1, de stablinak tünik. Már csak maven support nincs hozzá.
A surefire SVN-beli verzióján is látszik hogy 5.1-es testNG-vel tesztelik, úgyhogy lehet figyelni a surefire 2.3-as verzióját, vagy átnyergelni a SNAPSHOT-ra és lőni mozgó célpontra.
A törpök élete se csak játék és mese. Mint azt közismert :)
Aztán rájöttem hogy az eclipse pluginja is csak jobbára működik, a maven-nel a 5.1-es verzió pedig egyáltalán nem. Kb ugyanez áll a Junit 4.1 verziójára, annyi kivétellel hogy az eclipse alapból tartalmaz már egy "junit 4" futtatókörnyezetet, ami konkrétan junit 4.1-gyel megy. Tökre nem mindegy hogy 4 vagy 4.1, de stablinak tünik. Már csak maven support nincs hozzá.
A surefire SVN-beli verzióján is látszik hogy 5.1-es testNG-vel tesztelik, úgyhogy lehet figyelni a surefire 2.3-as verzióját, vagy átnyergelni a SNAPSHOT-ra és lőni mozgó célpontra.
A törpök élete se csak játék és mese. Mint azt közismert :)
Spring context xml-es okoskodás
Visszatérve kicsit a hiperkorrekt maven rad-os gondolathoz (de nem csak azzal kapcsolatban), hogy ugye előre definiált datasource-ok és ilyesmi, csak most kicsit több aspektus. Konkrétan a yikulju kódjában próbálok valami végleges és nagyon pöpec rendet teremteni a unit tesztek közt, és itt jutott eszembe az hogy ha már lehetőség van a tesztek paraméterezésére, akkor megoldhatjuk azt hogy a például egy DAO teszt lefusson a fejlesztő környezetétől függően Derby-n vagy PostgreSQL-en. Mióta O/R mappinget használ az ember felületesen fölöslegesnek tünhet mindez, de azért van pár kivétel amire jó elég korán rádöbbenni, ha nem kerül túl nagy erőfeszítésbe.
Na, megint elkóboroltam a kiszemelt témától. Szóval a spring context XML-t hogyan robbantsuk fel darabokra úgy, hogy az elég rugalmas legyen és ne kelljen beleírkálni egynál több file-ba a végfelhasználóknak. Ezzel jól célozza az ember a the long tail-ben található felhasználóbázist, de még nem zárja ki a nagyhalakat sem :)
Na és valami ilyesmit találtam ki erre:
Na, megint elkóboroltam a kiszemelt témától. Szóval a spring context XML-t hogyan robbantsuk fel darabokra úgy, hogy az elég rugalmas legyen és ne kelljen beleírkálni egynál több file-ba a végfelhasználóknak. Ezzel jól célozza az ember a the long tail-ben található felhasználóbázist, de még nem zárja ki a nagyhalakat sem :)
Na és valami ilyesmit találtam ki erre:
- Az adatbázis connection pool kerül külün context xml-be, ilyen elnevezési tradícióval mint pool-...xml. Ennek konkrétan két implementációja lehetséges, az ultralusta végfelhasználók és minimalista futáskörnyezetek számra beágyazott commons-dbcp és a szabványos JNDI lookupos akármi. Mindkettő implementáció persze ugyolyan nevű beant definiál, pl "dataSource"
- Adatbázis függő adatok számára külőn XML-ek. Ez olyanokat tartalmaz mint a JDBC driver osztály neve (amire java 1.6-ban már nincs sokáig szükség, de most még kell ha senki más nem tudja), hibernate dialect, esetleg a compass dialect.
- Külső konfigurációs adatokat a kontextusba ágyazó BeanFactoryPostProcessor, ez idáig az egyetlen Spring-függő dolog benne, de ilyet talán máshol is lehet implementálni. A unit tesztek egyszerűen csak importálnak egy másik ilyen preprocesszort definiáló XML-t ami például a System.properties alapján helyetesít be konfigurációs adatokat és mehet is a műsor. Nem kellett copy-pastelni a konfigot alkalmazás és tesztek közt.
Például amikor webappot hegesztesz, a webapp egyszerűen csak a web.xml-ben definiálja context változóként a kellő konfig adatokat és megmondja hogy a teljes alkalmazás melyik XML-ekben található bean-ekből áll össze. Emberi módon felsorolva, JNDI, postgresql, webapp, opcionális bean-ek.
2007. január 22., hétfő
Esti gyorsjelentés
Na, egy kicsit egyedi megoldás került be a yikulju SVNbe, amiről kicsit magyarázkodnék.
Kicsit gáz volt az hogy az alkalmazás mindenféle konfigurációja mindenfele a webappban megtalálható, hibernate konfig file, applicationcontext, web.xml, satöbbi. Az applicationContext-ből kikaptam pár dolgot amire több lehetséges implemntáció van.
A lényeg az hogy a web.xml az egyetlen file a webapp-ban amit módosítania kell bárkinek is. A mégjobb az lenne ha még azt se kéne :) Nade ne legyek mohó, holnap is legyen új a sun alatt.
Kicsit gáz volt az hogy az alkalmazás mindenféle konfigurációja mindenfele a webappban megtalálható, hibernate konfig file, applicationcontext, web.xml, satöbbi. Az applicationContext-ből kikaptam pár dolgot amire több lehetséges implemntáció van.
- Adatbázis connection pool. Beágyazott DBCP a lustáknak, vagy JNDI lookup-os csilivili a mazohistáknak, és persze más-más adatbázis típusokkal. (ezek kerültek a db package alá)
- Index megoldások. Kicsit elbizonytalanodtam a compass frameworktől, ezért a Directory implementációkat kitettem egy-egy külső xml-be.
- Opcionális szolgáltatások (jelenleg az egyetlen az IRC robot) az opt package alatti xml-ekben.
A lényeg az hogy a web.xml az egyetlen file a webapp-ban amit módosítania kell bárkinek is. A mégjobb az lenne ha még azt se kéne :) Nade ne legyek mohó, holnap is legyen új a sun alatt.
Java 1.7 fejlesztőbosszantó
A java.net-en már a sokadik kérdés van szavazáson a jdk 1.7 (vagy marketingeseknek 7.0) újításairól. Az eddigi eredményből a Language-level XML support népszerűtlenségét emelném ki. A closures (vajon ezt magyarul hogy fogjuk mondani) viszont jól szerepel. A groovy biztosan bejött pár embernek :)
Izzik parázs vita a javaforumon is a dologról.
Izzik parázs vita a javaforumon is a dologról.
2007. január 21., vasárnap
Compass vs Lucene
Vajon illik-e a másik project package struktúráját felvenni azért hogy hozzáférhessünk a package-protectred dolgokhoz benne? Aki kapott már olyan hogy "sealing violation", az valószinűleg azt mondja erre hogy nem igazán. Én már kaptam ilyet az arcomba, ott egy ravasz srác hekkelte meg az Oracle Advanced Queue package strukturát ahhoz hogy menjen Bea Weblogic alatt mint JMS. Jajj, azok a régi szép gyári hegesztőmunkás napok.
A jelenlegi eset az a Lucene és a Compass framework.
A compass framework sok hasznos dolgot adna, imádnám érte. A JDBCDirectory-n keresztül együtt tarthatjuk az indexet az adattal, ugyanaz a hely, ugyanaz a tranzakció. A Lucene helyett meg nincs más.
Szóval ezen is van mit kalapálni.
Mindenesetre a Yikulju-ban a lucene index directoryt is kipakolom külső context xmlekbe, legalább had legyen választása a felhasználónak még ha minden választás rossz is :(
A jelenlegi eset az a Lucene és a Compass framework.
A compass framework sok hasznos dolgot adna, imádnám érte. A JDBCDirectory-n keresztül együtt tarthatjuk az indexet az adattal, ugyanaz a hely, ugyanaz a tranzakció. A Lucene helyett meg nincs más.
Szóval ezen is van mit kalapálni.
Mindenesetre a Yikulju-ban a lucene index directoryt is kipakolom külső context xmlekbe, legalább had legyen választása a felhasználónak még ha minden választás rossz is :(
Spring context és a java.util.Properties osztály érdekességei
Ez a probléma mindig előjön amikor spring contextekben java.util.Properties objektumot kell passzolni valamelyik objektumnak. A probléma az az, hogy a spring ilyan Properties objektumokat csinál:
Na és ez piszok mód statikus. Ebbe a properties-be senki nem szól bele. Többnyire ez nem baj, csak vegyük példának egy olyan esetet, hogy van egy hibernate-re épülő szoftverünk, amihez külön kontextusba kipakoltuk a hibernate különböző beállításait és az DataSource konfigot. Ebben az esetben azt szeretném, ha abban a külső XML-ben legyenek definiálva egyes tulajdonságok. Például a hibernate.dialect.
És akkor jön a gonosz Copy-Past Coding, mert ezt minden springes projectben ahol felmerül ennek az igénye ezt beletúrom.
Na, erre szivesen megnéznék egyszer valami más megoldást :) Is there anybody out there?
Na és ez piszok mód statikus. Ebbe a properties-be senki nem szól bele. Többnyire ez nem baj, csak vegyük példának egy olyan esetet, hogy van egy hibernate-re épülő szoftverünk, amihez külön kontextusba kipakoltuk a hibernate különböző beállításait és az DataSource konfigot. Ebben az esetben azt szeretném, ha abban a külső XML-ben legyenek definiálva egyes tulajdonságok. Például a hibernate.dialect.
És akkor jön a gonosz Copy-Past Coding, mert ezt minden springes projectben ahol felmerül ennek az igénye ezt beletúrom.
És innentől már lehet Map-ból csináni a Properties-t ezzel a factory bean-nel.
public class PropertiesFactory implements FactoryBean {
private Mapproperties;
public Object getObject() throws Exception {
Properties props = new Properties();
props.putAll(properties);
return props;
}
public Class getObjectType() {
return Properties.class;
}
public boolean isSingleton() {
return true;
}
public MapgetProperties() {
return properties;
}
public void setProperties(Mapproperties) {
this.properties = properties;
}
}
Na, erre szivesen megnéznék egyszer valami más megoldást :) Is there anybody out there?
2007. január 20., szombat
Ötletelős percek - Maven RAD
Csináltam egy friss blogot, konkrétan ezt olvasod, írogatok majd ide mindenfélét technikai dolgokról. Java főleg, linux, clusterezés, open source projectek, villanydemokrácia, meg ami jön. Utálni fogtok érte :) Na, vágjunk egy "in medias res"-t a lovak közé!
Elmentem ma mérni, és mivel ez különösebben nem egy intellektuális tevékenység, azon gondolkodtam hogy összeállítani egy korrekt architektúrát web alkalmazásokhoz igencsak időigényes dolog, de vannak dolgok amivel meg lehet gyorsítani a fejlesztést.
Itt van például a grails. Beírod hogy ant create-project, ott is vagy, megvan a projected. Az acegit mondjuk kicsit kalapálni kellett, de legalább jobban képbekerültem groovy-ban meg acegiben. A friss grailsben viszont ott van az amin én is mennyit vacakoltam, openlaszlo integráció. Szóval közelebb hozza az álmot hogy a webapp-fejlesztés gyorsan elstartolható, meg ilyesmi. Feketemágia akad az ilyen *rails dolgokban bőven, nem csak a fejlesztőkörnyezetbe veszi be magát, hanem a futási környezetbe is, kiszedni meg nehezebb mint teljesen újraírni az egész cuccot.
Egy érdekes próba lenne maven alapra tenni egy RAD projectet, ami két részből állna.
Szóval elbonyolítani már sikerült, mindenesetre teszek egy próbafúrást a területen, hátha feltör az olaj és én leszek a Bobi Juing. Vagy a Dzsoki inkább, mer` ő gonosz.
Elmentem ma mérni, és mivel ez különösebben nem egy intellektuális tevékenység, azon gondolkodtam hogy összeállítani egy korrekt architektúrát web alkalmazásokhoz igencsak időigényes dolog, de vannak dolgok amivel meg lehet gyorsítani a fejlesztést.
Itt van például a grails. Beírod hogy ant create-project, ott is vagy, megvan a projected. Az acegit mondjuk kicsit kalapálni kellett, de legalább jobban képbekerültem groovy-ban meg acegiben. A friss grailsben viszont ott van az amin én is mennyit vacakoltam, openlaszlo integráció. Szóval közelebb hozza az álmot hogy a webapp-fejlesztés gyorsan elstartolható, meg ilyesmi. Feketemágia akad az ilyen *rails dolgokban bőven, nem csak a fejlesztőkörnyezetbe veszi be magát, hanem a futási környezetbe is, kiszedni meg nehezebb mint teljesen újraírni az egész cuccot.
Egy érdekes próba lenne maven alapra tenni egy RAD projectet, ami két részből állna.
- Egy maven archetype, amivel gyorsan létre lehet hozni egy hiperkorrekt, bár üres projectet
- Egy plug-in amivel gyorsan le lehetne generálni DAO interface-ket és implementációkat, valamint a view oldalból is létrehozna egy templatet.
- külön projectekre elválasztva a modell, az alkalmazáslogika és a különböző felhasználói felületek (webes felület, web service, swing, portlet, ilyesmi), integrációs projectek
- deklaratív tranzakciókezelés alapból, mert tranzakciókezelés úgyis mindenhova kell, ha meg nem akkor úgyis könnyebb kivenni mint beletenni :)
- Azonosítás, dettó, bár ezen még azért érdemes lenne okoskodni
- Persze mindez korlátokkal, mert a tökéletes ember és szoftver még amerikai szuperhősfilmben sincs. Acegi, spring, alapból JPA-ra generált DAO-k. JPA mögé persze Hibernate, mert úgyis boldog boldogtala lecserélni meg elméletileg könnyű. Nem próbáltam még.
- Generált tesztek a DAO objektumokhoz, alapból például Derby-n, de persze opcionálisan bármi máson.
- Alapból beleintegrált riportok minden alprojecthez,
Szóval elbonyolítani már sikerült, mindenesetre teszek egy próbafúrást a területen, hátha feltör az olaj és én leszek a Bobi Juing. Vagy a Dzsoki inkább, mer` ő gonosz.
Feliratkozás:
Bejegyzések (Atom)