2007-02-20

Spring MVC tapasztalatok

Megcsináltam egy teljes webalkalmazást Spring MVC-vel és Acegi Security-vel pár hét alatt. Az a véleményem, hogy ez a páros régi kérés-válasz alapú webalkalmazások készítésére nagyjából jó, de modernebb Ajax-os vastagkliensekre már nem. Ahogy ajax-os trükkök kerülnek kilátásba, egyre közelebb érzek egy komplexitásrobbanást, drótozások és hibalehetőségek tömkelegét. Nem jó hogy controllerekker és view-mappelésekkel kell szórakozni amikor a B logikával kellene foglalkozni.

Az Acegi Security mondhatni bevált, bár kicsit bonyolult a konfigurációja a Spring-en belül. (Bonyolult életet lehelni bele és megérteni. Amikor alapvetően működik, onnantól már oké.) A programozása viszont kifejezetten kényelmes. Jó ötlet a ThreadLocal változók használata. Mivel open source, nem gond bővítmények írása sem.

Mit is kell csinálnom, ha egy olyan alap funkciót akarok létrehozni, hogy egy combobox változása szerver interakció után változást okozzon a képernyőn a kliensben. Ez kb. egy kétsoros kód kéne hogy legyen. Ellenben:

  • Rá kell tenni a combobox onChange eseménykezelőjére egy javascript event-et. Célszerű dojo-val elküldeni a szervernek.
  • Controllert mappelni a http kérésre, megcsinálni a logikát ami a választ adja.
  • Megcsinálni a választ, ami lehet egy egyszerű jsp lap(részlet).
  • A képernyőn csinálni egy div-et ahova a választ be lehet illeszteni.
Ilyen és ehhez hasonló dolgokkal nem szeretnék találkozni, úgyhogy azt hiszem tovább kellene menni a JSF vagy valami másik magasabb szintű webes keretrendszer felé, hátha az jobb. A sima jsp, Dojo-s trükkökkel és saját komponensekkel felejtős.

Persze szép volt, jó volt, jó alkalmazás lett.

2007-02-16

javaforum.hu

Az utóbbi időben nagyon felfejlődött a javaforum Auth Gábornak köszönhetően. Értelmes hírek és értelmes fórumtémák jönnek elő. Valami tudásbázis is alakulgat, de az egyelőre elég halvány, valamint állásajánlatok, reklámok és cégtár is felbukkant az oldalon. A portál lényege, hogy minden teljesen magyar nyelven van és a nevével ellentétben nem csak egy fórumot takar. A fórumok kialakításán még lehetne agyalni, de ez egyébként folyamatban van.

Az Eclipse vs Netbeans versengésben a javaforum kicsit a Netbeans felé hajlik, de csak azért, mert a portál fenntartói az utóbbival vannak közelebbi kapcsolatban. Viszont szívesen vesznek bármiféle Eclipse-es segítőkész emberkét.

A javasite.hu pedig látszólag meghalt, de biztos van valami utódja, csak nem tudok róla.

2006-12-07

Notebook memória

Hardver rovat következik.

Felhuppant a gépemre egy Oracle 10g és ez kicsit megakasztotta. 170Mega kell az "üres" XP-nek hálózati kapcsolattal. Ha elindítom a böngészőt, a fejlesztőkörnyezetet és az appszervert amit használok, olyan 500M körül szoktam járni és enyhén érezhető a lapozás. Namost az Oracle-vel elindított XP 470Megát kér. Fejlesztőkörnyezettel (+Raptor) 800 mega körül jártam és néha az alkalmazásváltások között kínos félpercek teltek el, fejleszteni nagyon kényelmetlen volt.

Elvittem hát az Asus 2500 notebook-ot a legközelebbi számtechboltba, rakjanak bele memóriát. Gondoltam hogy nem annyira egyszerű mint gondolnám, de nem gondoltam hogy ennyire nem egyszerű.

Eredetileg 2 db 256M-s modul volt benne. Az egyik Kingston a másik valami noname 266Mhz-s, DDR1. Felhomályosítottak, hogy ha ez három éves notebook, akkor DDR1 van benne, DDR2-t nem lehet belerakni. Másik téma, hogy most már csak 400MHz és efölötti memóriákat forgalmaznak, de a notebook nem biztos hogy meg tudja ezt hajtani. Harmadik téma hogy a Kingston honlapja szerint ez a gép nem garantált hogy elbírja az 1 Giga vagy afölötti RAM-ot.

Belepakoltunk két 500Megást, bírta. Belepakoltunk egy 1 gigás Kingstont, mellette hagytunk egy fél gigásat, bírta. Végül bennehagytuk a saját 256M-s Kingstonomat és beleraktuk az 1 gigás Kingstont. Bírja.

Most sokkal simább minden. Érezhetően minden program gyorsabban indul, elindított 10g-nél sincs belassulás programváltásoknál sem.

35 rugót simán megért.

2006-11-20

Dojo dátumválasztó agyműtét

Még mindig Dojo. Két baj volt a DropdownDatePicker-rel ami miatt bele kellett kicsit másznom a kódba. Az egyik, hogy ha érvénytelen értéket írok bele a HTML-ben, akkor hülyén jelenik meg a dátumválasztó (mindenhol NaN van), márpedig nem ártana ha megjelenítené azt az érvénytelen értéket is a szövegmezőben, a dátumválasztó komponensben meg pl. a mai napot. A másik, hogy a 0.3-0.4 verzióváltás egy kicsit döcögősre sikerült. Megváltoztak mezők nevei (date-value, displazFormat-dateFormat) és senki sem védi meg tőle a doksikkal nem elhalmozott programozót hogy keverve használja ezeket a dolgokat.

Állítólag az első problémát már próbálják orvosolni a 0.4.1-re, de nem nagyon bízom benne hogy úgy sikerül ahogy kellene neki. A repo-ban is olyat olvastam, hogy valaki bekommitolt valamit, a másik kipróbálta és nem működött. Verziók...

Szóval a következőt csinálja ez a dropdowndatepicker:

  1. A value mezőből kiolvassa a string értéket és megpróbálja dátummá konvertálni. Próbálja Rfc3339-es (yyyy-mm-dd) formátumban is meg más formátumban is. Közben warningol, mert Rfc3339 lesz a támogatott 0.5-től és senki sem azt használja. Ha sikerül neki a parse-olás akkor a value változóban egy szép érvényes dátum objektum lesz, ha nem sikerül akkor egy érvénytelen dátum. (Ami baj, mert máris elveszett az eredetileg beírt érték.)
  2. Ezután a dátum szerint beállítja a dátumválasztó komponenst. Ha érvénytelen volt a dátum, mindenhol NaN lesz.
  3. Végül a dátumválasztó állapota szerint visszaírja a szövegmezőbe a dátumot a megadott formátummal. Tehát ha véletlenül megmaradt volna az érvénytelen érték, még itt is felülvágná.
Ráadásul Post-olás előtt, ha érvénytelen dátum van a szövegmezőben, akkor felülvágja a komponensen kiválasztott dátummal, de ez csak a 0.4-es verzióban támogatott displayFormat használatánál jelentkezik. Van is egy szép TODO komment ezzel kapcsolatban a forrásban.

Szóval a következő helyeken nyúltam bele az agyába:

  • Ha a kiolvasásnál nem tudja dátummá konvertálni, nem ír vissza érvénytelen dátumot, hanem magát a string-et írja vissza.
  • Ha a dátumválasztó komponens beállítása előtt érzékeli hogy a value típusa string, a komponensen a mai napot jeleníti meg.
  • Ha a value típusa string, nem frissíti a szövegmezőt a komponens értéke szerint (mai nap).

Ha lenne attach-olási lehetőség, beraknám ide a kódot.

2006-11-03

This page contains both secure and nonsecure items, dojo 0.3

Csináltam egy SSL-en keresztül működő webalkalmazást amiben egy javascript frameworköt használtam. Az Exploreres felhasználók beszóltak, hogy minden egyes kattintásra egy kedves "This page contains both secure and nonsecure items" figyelmeztető ablak jelenik meg, és ez nem jó.

Szerencsére kéznél volt a Google, beírtam a figyelmeztető üzenet szövegét és már jöttek is a találatok, köztük ez a link, ami szépen -ábrákkal tűzdelve- leírja, hogy mit kell beállítani az exploreren.

Feljött még egy fórumos találat, amiben leírták, hogy ez azért van, mert az alkalmazás SSL-en keresztül megy, de lehet hogy valahol belül HTTP hivatkozást használ HTTPS helyett. Valami iframe-s témát is emlegettek és valaki leírta, hogy ő olyan webalkalmazást csinál, amit több ezren használnak és kicsit durva lenne minden felhasználónak leveleket küldözgetni. Illetve főleg azok a felhasználók lehetnek problémásak akik ennél komolyabb leveleket szoktak kapni, pl. vezérigazgató.

Szóval frankó lett volna egy olyan megoldás amit a szerveren programozással meg lehet oldani, de biztos voltam benne, hogy minden hivatkozást relatíven adtam meg, tehát nálam minden HTTPS volt. A javascript keretrendszerben lehet a kutya elásva, ami Dojo. Egészen pontosan Dojo 0.3.1

Nos, azt hittem itt további trükközésekről, kód és fórumbányászatról fogok írni, de nem: Letöltöttem a Dojo 0.4-et és működött. (Működik.)