Kam dat knihovnu pro Tomacat

2006-11-27 Tema obsahu Benda Lukas
Kam mam nahrat, nebo jak nastavit, popripade jaky parametr predat
tomactovai 6.0, aby nacetl knihovnu kteoru potrebuje pro pripojeni k
databazi?

Problem je v tom, ze knihovna neni zavisla na projektu, tudiz to nebude
v adresari projektu.

Promenou prostredi CLASSPATH ocividne tomcat ignoruje a z .../Tomcat
6.0/lib ani ../Tomcat 6.0/shared/lib si ji nenacte.

Lukas Benda


Re: Co jde v .NET a nejde v Jave?

2006-11-02 Tema obsahu Benda Lukas
Myslim, ze JAVA znamena programovaci jazyk, zakladni API a komunitu 
kolem toho. Stejen tak jako ostatni programovaci jazyky. Takze tak se na 
to divejte.


Ja programuji v Delphi a JAVA. Ceska komunita kolem Delphi je silnejsi 
nez JAVA, Delphi jako nastroj je daleko vyspelejsi, nez napr. Eclipse, 
ale protoze Delphi je placene i komunita kolem neho vydava prevazne 
placene komponenty a frameworky.


To byl duvod proc jsem nakonec presel na JAVA, api je daleko mensi a 
kompaktnejsi, tudiz lepe pruhledne. K frameworkum mam zdrojove kody ve 
kterych se da (narozdil od tech Delphovych) dobre vyznat.


Nesnazte se tedy odtrhavat komunitu od programovaciho jazyka jako takoveho.

P.S.: To o cem mluvite s tim propojenim dat s tabulkou to je prace RCP 
Spring RCP to resi presne tak jak si prejete, ale jde v tom o trochu 
dal. Pouziva Formularovi Model, ktery automaticky generuje (kdez 
chcete), nebo vas necha si ho nagenerovat sam, kdyz chcete v nem provest 
upravy. Tudiz do ruky dostavate silu obou pristupu, ne jen jednoho.


Lukas benzin Benda ([EMAIL PROTECTED];  http://benzin.bloguje.cz)
Java a Delphi programator
PHP a JavaScript skrypter
Tvurce databazovych aplikaci
A cestinarsky ignorant
ad 1) Ano TableModel si muze tahat veci i od nekud jinud, ale toto vy musite rucne nejak osetrit, musite to proste naprogramovat. 
ad 2) Prave by bylo pekne, kdybych mohl vytvorit jen Hib. Entity a JTable nejak rict ze ma rovnou pouzivat tyto entity (a tudiz bych uz se nemusel starat o prekladku dat z Entit do TableModelu). A takhle by snad nejak mohl fungovat JBoss Seam. 


petr
__
  

Od: [EMAIL PROTECTED]
Komu: Java konference@java.cz
Datum: 02.11.2006 08:59
Předmět: Re: Co jde v .NET a nejde v Jave?

1. Table model neni nutne plnit, ten si veci muze jenom pretahovat od


nekud jinud, od sveho modelu. To jste to mozna
  

jenom nepouzil spravne.

2. Neni mi jasne proc je to vyhoda .NET, kdyz naprogramuju model, ktery


si bude data tahat primo z Hibernate entit, pak
  

mam to same co v .NET, ne?

3. Nehledal jsem, ale nedivil bych se, kdyby to uz nekdo udelal za me ...


:-)) To je vyhoda Javy ...
  

Petr Synek napsal(a):

Myslim ze to neni nic proti MVC. 
Je to jen zjednoduseni ve smyslu jako by JTable mohl pouzivat primo
  

Hibernate entity aniz by bylo nutne predtim rucne plnit
javax.swing.table.TableModel z Entit. S tim ze se zaroven automaticky
zjisti jmena a typy sloupcu (a samozrejme ze je take mozne dodatecne toto
implicitni mapovani sloupcu upravit, pokud nevyhovuje). 
  

Podobne jednoduse by snad mohl fungovat JBoss Seam pro JSF (viz.
  

http://www.onjava.com/pub/a/onjava/2006/03/15/jboss-seam.html), ale jeste
jsem si to cele nestihl precist. 
  

petr


__
  

Od: [EMAIL PROTECTED]
Komu: Java konference@java.cz
Datum: 01.11.2006 10:13
Předmět: Re: Co jde v .NET a nejde v Jave?



Napr. GUI nebo Web prvky pracuji primo s datovmi objekty (ADO.NET),
  

takze vetsinou odpada rucni plneni Model objektu z Entit, tedy vice
  

mene
  

odpada rucni prehazovani kupy dat tam a zase zpet (i kdyz napr. Jakarta
BeanUtils lrecos v tomhle smeu v Jave take zjednodusuji, ale v .NETu
  

tohle
  
funguje implicitne a automaticky). 
  

No to bych zrovna jako vyhodu moc nepovazoval. To je pak o tom, ze se


vsechno toci okolo GUI, ktere zobrazuje i drzi
  

data, coz neni dobry pristup (rozhodne to neni podle MVC, ale on


Microsoft nikdy MVC moc nebral vazne). Pokud MVC chci
  

pouzit, pak musim data z modelu kopirovat do GUI :-((

Me se naopak i u desktopovych aplikaci striktni pouziti MVC vzdy


vyplatilo, i kdyz i trivialni aplikace to znamena vic
  

prace, ale prehlednost kodu a jeho rozsiritelnost jednoznacne hovori


ve
  

prospech tohoto reseni. (pravda nikdy jsem si
  

GUI neklikal, protoze me to prislo hrozne omezujici )

Abych se ale vyjadril k tematu, vse je to o tom, ktera platforma


vyhraje. To je ta spravna volba  Navic jde i o
  

filosofickou otazku, ktera podle me trochu zanikla ... chcete mit


volnost
  

a nebo jasne danou cestu, podle toho si vyberte.
  

P.S. Uz je .NET dostatecne stabilni, aby jej Microsoft nemenil pod


rukama
  

jako se stalo mezi verzi 1.X a 2.0 ... to je
  

argument pro Javu, mozna ...

--
Jiří Mareš (mailto:[EMAIL PROTECTED])
ČSAD SVT Praha, s.r.o. (http://www.svt.cz)
Czech Republic




  

--
Jiří Mareš (mailto:[EMAIL PROTECTED])
ČSAD SVT Praha, s.r.o. (http://www.svt.cz)
Czech Republic




Re: Maven kodovani zdroju

2006-10-23 Tema obsahu Benda Lukas

Michal Palička napsal(a):

Dobry den,

existuje plugin, ktery to umi.
Jedna se vlastne o obaleny kus skriptu pro ANT.
Autorem je Jakub Pawlowicz.

http://www.jakubpawlowicz.com/blog/2006/03/19/maven_native2ascii_plugin/

  
Plugin jsem nainstaloval podle navodu a mvn -U install a nic se 
nezmenilo. Mam jeste nejak pozmenit pomy? Protoze na strankach je psano 
ze to funguje jako kouzlem. Ale vypada to ze ja jsem proti tomuto druhu 
magie rezistni :(


Lukas benzin Benda ([EMAIL PROTECTED];  http://benzin.bloguje.cz)
Java a Delphi programator
PHP a JavaScript skrypter
Tvurce databazovych aplikaci
A cestinarsky ignorant

mp. 



-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Benda Lukas
Sent: Friday, October 20, 2006 19:59
To: Java - diskuse
Subject: Maven kodovani zdroju

Pouzivam ke kompilovani Maven2. V antu jsem pro cestinu pouzival
native2ascii encoding=UTF-8 src=${resource.dir}
  dest=${class.dir}/resource includes=**/messages/*.properties /

Jenze v mavenovi nevim jak ho dokopat k tomu aby konvertoval soubory do asci 
aby se mi to zobrazovalo spravne. Zkousel jsem jak nastaveni:
plugin
groupIdorg.apache.maven.plugins/groupId
artifactIdmaven-compiler-plugin/artifactId
version2.0.1/version
configurationp
source1.5/source
target1.5/target
encodingutf-8/encoding
/configuration
/plugin
plugin
groupIdorg.apache.maven.plugins/groupId
artifactIdmaven-resources-plugin/artifactId
version2.2/version
configuration
encodingutf-8/encoding
/configuration
/plugin
Ktere ale nedela ocividne vubec nic.

Tak nastaveni pomoci anta:
plugins
  plugin
artifactIdmaven-antrun-plugin/artifactId
executions
  execution
phasegenerate-sources/phase
configuration
  tasks

taskdef name=native2ascii
  
classname=org.apache.tools.ant.taskdefs.optional.Native2Ascii

  classpathref=maven.dependency.classpath 
  classpath
pathelement path=maven.dependency.classpath/
pathelement location=${java.home}/../lib/tools.jar/
  /classpath
/taskdef
   
native2ascii src=src/main/resources/

  dest=src/target/resources/
  includes=**/*.properties /
  /tasks
/configuration
  goals
goalrun/goal
  /goals
/execution
  /executions
/plugin
  /plugins
Ktere zase konci havarii anta (s blize neurcenou chybou).

Jak tento problem resite vy?

Lukas benzin Benda ([EMAIL PROTECTED];  http://benzin.bloguje.cz)  Java a Delphi 
programator  PHP a JavaScript skrypter  Tvurce databazovych aplikaci  A cestinarsky 
ignorant

  




Maven kodovani zdroju

2006-10-20 Tema obsahu Benda Lukas

Pouzivam ke kompilovani Maven2. V antu jsem pro cestinu pouzival
   native2ascii encoding=UTF-8 src=${resource.dir}
 dest=${class.dir}/resource includes=**/messages/*.properties /

Jenze v mavenovi nevim jak ho dokopat k tomu aby konvertoval soubory do 
asci aby se mi to zobrazovalo spravne. Zkousel jsem jak nastaveni:

   plugin
   groupIdorg.apache.maven.plugins/groupId
   artifactIdmaven-compiler-plugin/artifactId
   version2.0.1/version
   configurationp
   source1.5/source
   target1.5/target
   encodingutf-8/encoding
   /configuration
   /plugin
   plugin
   groupIdorg.apache.maven.plugins/groupId
   artifactIdmaven-resources-plugin/artifactId
   version2.2/version
   configuration
   encodingutf-8/encoding
   /configuration
   /plugin
Ktere ale nedela ocividne vubec nic.

Tak nastaveni pomoci anta:
plugins
 plugin
   artifactIdmaven-antrun-plugin/artifactId
   executions
 execution
   phasegenerate-sources/phase
   configuration
 tasks

   taskdef name=native2ascii
 
classname=org.apache.tools.ant.taskdefs.optional.Native2Ascii

 classpathref=maven.dependency.classpath 
 classpath
   pathelement path=maven.dependency.classpath/
   pathelement location=${java.home}/../lib/tools.jar/
 /classpath
   /taskdef
  
   native2ascii src=src/main/resources/

 dest=src/target/resources/
 includes=**/*.properties /
 /tasks
   /configuration
 goals
   goalrun/goal
 /goals
   /execution
 /executions
   /plugin
 /plugins
Ktere zase konci havarii anta (s blize neurcenou chybou).

Jak tento problem resite vy?

Lukas benzin Benda ([EMAIL PROTECTED];  http://benzin.bloguje.cz)
Java a Delphi programator
PHP a JavaScript skrypter
Tvurce databazovych aplikaci
A cestinarsky ignorant


Serializace objektu, ktery obsahuje neserializovane cleny

2006-10-19 Tema obsahu Benda Lukas
Mam tridu, ktera je serializable a obsahuje protected parametr logger. 
Chci takovou tridu preda pomoci RMI, ale havaruje to prave na tom, ze 
logger neni serializovany. Prve jsem byl presvedcen, ze privatni objekty 
se neserializuji, jenze ono jo. Coz mne docela mrzi, protoze vlastne 
kazda moje trida ma logger. Musim tedy pro kazdou tridu definovat metodu 
writeExternal(), readExternal(), nebo se to da nejak obejit.


Pomuze kdyz bude logger private? Neexituje nejaka anotace kterou bych 
oznacil cleny objektu ktere se namaji serializovat? Co se stane kdyz pak 
chce objekt zalogovat? Jak takovy problem resite?


Ta chyba je konkretne tato:
   java.io.WriteAbortedException: writing aborted; 
java.io.NotSerializableException: org.apache.log4j.Logger


S pozdravem
   Lukáš Benda
   [EMAIL PROTECTED]

APNetsoft s.r.o.
Hradecká 15
746 01, Opava
tel.: +420 553 642 111
fax.: +420 553 619 205
mobil.: +420 777 577 054
http://www.apnet.cz


Re: Chytre knihy o swingu

2006-10-13 Tema obsahu Benda Lukas

Je rozdil by dokazat mohlo a dokze. Nechapu proc si to porad pletete.

Oto 'tapik' Buchta wrote:
Take mne tento flame nezajima, ale doporucuji vsem, aby netvrdili o 
produktu, ktery neznaji, ze ten produkt je to ci ono, obzvlaste 
lidem, kteri jsou v praci s onim produktem fakt dobri. Uvedu priklad: 
pred 13 lety, kdyz jsem zacinal hloubs pronikat do sveta UNIXu, jsem 
si spoustel Makubovo makro ve VI na pruchod bludistem :-D


Jen pro poradek, to macro jsem nenapsal, jenom nasel, zminka
o nem je kdesi hluboko v kompletni dokumentaci Vi :-)

Mimochodem, Vi makra maji silu Turingova stroje, a ten, jak
kazdy informatik ma vedet, dokaze podle Church-Turingovy teze
provest kazdy algoritmus, ktery je proveditelny, cili cokoliv.
Tudiz kdo chce tvrdit, ze Vi neco nedokaze, musi se poprat
primo s Turingem a Churchem. Oni uz jsou teda oba mrtvi,
ale obrazne mysleno. :-)
Eh, uz jsem zabrednul, tak toho radis necham.
Pro hracicky jenom odkaz na to bludiste:
http://www.vanhemert.co.uk/vim/

Makub




Re: RMI - tříby stub a skeleton

2006-10-13 Tema obsahu Benda Lukas
No bud to udelate pres nastroj rmic, nebo pak zalezi na tom ktery 
nastroj pro building pouzivate. Ant, nebo Maven?


Podle toho pak upravte build.xml, nebo pom.xml. Prikladu je na netu 
docela dost. Staci dat Ant rmic, nebo Maven rmic


Lukas benzin Benda ([EMAIL PROTECTED];  http://benzin.bloguje.cz)
Java a Delphi programator
PHP a JavaScript skrypter
Tvurce databazovych aplikaci
A cestinarsky ignorant

Dobrý den.
Nevíte někdo jak přinutit Netbeans 5.5 RC1 aby vytvářelo třídy Stub a 
Skeloton pro RMI?

Chci volat Callbak funkce ze serveru na klienta a metoda
UnicastRemoteObject..exportObject(_test)
mi vrací tuto vyjimku
Stub class not found: remoteLib.objects.Test_Stub; nested exception is:
   java.lang.ClassNotFoundException: remoteLib.objects.Test_Stub



kde _test = new Test()
a Test je

public class Test extends UnicastRemoteObject implements 
RowSetsCompleted{


public Test() throws RemoteException{
 super();
}

public void rowsSetsCompleted() throws RemoteException{
 javax.swing.JOptionPane.showInputDialog(AHOJ);
}

}







Re: Chytre knihy o swingu

2006-10-12 Tema obsahu Benda Lukas

Jenze Vim je textovy editor, kdezto Emacs je IDE, tam bych videl ten
zakladni rozdil. Ono totiz je neco pravda na tom: Emacs je dobry
operacni system ... :)). Samozrejme, kdyz by se jednalo o programovani v
Pascalu, tak bych emacs asi nepouzival, ale prava ze pro Java ma
rozsireni JDEE, ktere z Emacsu dela plnohodnotne IDE.

Lukas benzin Benda ([EMAIL PROTECTED];  http://benzin.bloguje.cz)
Java a Delphi programator
PHP a JavaScript skrypter
Tvurce databazovych aplikaci
A cestinarsky ignorant

Benda Lukas wrote:
Jenom muzu rict, ze jsem to zkousel jak s Eclipse tak s Netbeans a k 
srdci mi neprirostlo ani jedno z techto vyvojovych prostredi, ja tedy 
pouzivam pro vyvoj aplikaci Emacs (respektive XEmacs).


Zkuste IntelliJ IDEA, opustil jsem kvuli nemu svuj oblibeny Vim :-)

Makub





Re: Chytre knihy o swingu

2006-10-12 Tema obsahu Benda Lukas
EE tady se nejedna o valku, ze bych snad rekl ze je Vim horsi. To ze mi 
neprirostl k srdci, jeste neznamena ze musi byt horsi. Ale paklize 
porovnavame IDE, tak Vim se porovnavat proste neda, protoze to neni IDE, 
ale textovy editor. Nema ty funkce ktere ma IDE, doplnovani nazvu 
funkci, code browser atp. atd. Pak je jasne ze prejdete od Vim k 
InteliJ, kdyz delate v Java protoze InteliJ je IDE. Tot vse.

Benda Lukas wrote:

Jenze Vim je textovy editor, kdezto Emacs je IDE, tam bych videl ten
zakladni rozdil. 


Tohle je ta nejstarsi svata valka na Internetu,
primo matka vsech flamewars :-)

http://en.wikipedia.org/wiki/Editor_war

Do toho nejdu :-)

Makub




Re: Chytre knihy o swingu

2006-10-11 Tema obsahu Benda Lukas
No jestli je to lepsi nebo ne, nemuzu posoudit, protoze jsem se nikdy 
nesnazil udelat nejaky relevantni srovnani.


Jenom muzu rict, ze jsem to zkousel jak s Eclipse tak s Netbeans a k 
srdci mi neprirostlo ani jedno z techto vyvojovych prostredi, ja tedy 
pouzivam pro vyvoj aplikaci Emacs (respektive XEmacs).


Nehlede na to, jak rikam. Spring ma snahu zastitit kompletni vyvoj aplikace.

Takze bych se na to dival s jineho uhlu. Pouzit JBoss a Tomcat a 
JGoodies a Eclipse RCP a JSF, nebo pouzit proste Spring? Vetsinou totiz 
delate jak aplikace pro web tak pro desktop, takze proto jsem sahl po 
springu. Nemusim se ucit padesat rozdilnych metodik, kde je i komunita 
pokazde jina, takze s moji specifickou konfiguraci mi nikdo neumi 
poradit. Tady mam vsechno pod jednou strechou.


A jak rikam. Muzete uvazovat jestli je lepsi programovat podle EJB3 a 
nechat aplikaci bezet v kontejneru. Nebo si vypomuzete Springem (ale 
nadale to nechate bezet v kontejneru a budete pouzivat EJB3). No a 
posledni moznost je pouzit Spring bez kontejneru a na EJB se v zasade 
vykaslat. Ja si zvolil treti cestu, protoze pro muj ucel se skvele hodi, 
dobre se tim vytvari desktopova aplikace, ktera je ale automaticky 
viceuzivatelska a ma webove rozhrani (a pritom se nemusim stvat s 
automatickou instalaci kontejneru, kdyz to budu prodavat jako krabicovy 
software). Obodobne je to i s podporou RCP. Nehlede na to, ze se 
neuvazuji na jedine vyvojove prostredi :))


Lukas benzin Benda ([EMAIL PROTECTED];  http://benzin.bloguje.cz)
Java a Delphi programator
PHP a JavaScript skrypter
Tvurce databazovych aplikaci
A cestinarsky ignorant

Ahoj,
odpovídám na zprávu z úterka, 10. října 2006,
kterou Benda Lukas napsal(a) v 23:59:47:

   No a není pak lepší rovnou použít Eclipse RCP nebo Netbeans?

--- Původní zpráva ---
 Odesilatel: Benda Lukas [EMAIL PROTECTED]
Předmět: Chytre knihy o swingu
  Datum: 10. října 2006, 23:59:47 (GMT +0200)
Přílohy: none
  msgid:[EMAIL PROTECTED]

B No nejlepsi je projit diskusi. Protoze je projekt hodne mlady, tak k 
B nemu dokumentace jeste moc neni. Ale je tam kompletni tutorial jak 
B vytvorit aplikaci.


 Konec původní zprávy 

  




Re: OT: Ako a kde ukladat zakaznicke customizacie vo VCS?

2006-10-11 Tema obsahu Benda Lukas
Anebo se na to da rict, pouzivejte mavena :)) Taky jsem se snazil tohle 
vsechno udelat v antu, ale pak jsem si nainstaloval mavena a ten presne 
to co popisujete dela vlastne automaticky, paklize neurcite jinak. Takze 
se vase praxe jevi jako spravna :))

Ahoj,

my pouzivame pro deleni zdrojovych kodu tri zakladni organizacni
jednotky - library, product line a project. Kazdy konkretni item dane
kategorie sestava z jednoho ci vice jaru ktere ho tvori.
Liby jsou obecne systemove knohovny a frameworky bez konkretni business
funkcnosti, ale zapouzdrujici nejake systemove funkce - pristup do databaze,
apod... Jedna knihovna muze pouzivat jinou knihovnu, nicmene cyklicke odkazy
nejsou povoleny.
Produktove linie jsou knihovny se specialni business funkcnosti,
vztahujicimu se ke konkretnimu nicmene zobecnitelnemu business problemu.
Produktova linie muze vnitrne pouzivat obecne knihovny nebo jine produktove
linie. Cyklicke odkazy mezi produktovymi liniemi nejsou povoleny
Projekt pak znamena jednu konkretni implementaci, jeden konkretni
vysledny produkt (napr. pro jednoho konkretniho zakaznika s jeho specifiky,
apod.) Projekt muze pouzivat (v instalacnim setu obsahovat) jak obecne
knihovny, tak i produktove linie, projekty vzajemne se ale pouzivat nesmi.

Prirozene, pokud je nejaka funkcnost ktera se ma chovat jinak na
konkretnim projektu, muze byt nutne to zohlednit nejakou konfiguracni
moznosti v produktove linii, nekdy pomuze zmena factory (resp. zmena
konfigurace u aliasu objektu, vytvareneho pod timto obecnym aliasem v
nadrazene produktove linii tak aby smeroval na zmenenou implementaci)...
Zda se nam, ze to docela vyhovuje sdileni zdroju i v pripade jinych
programovacich jazyku a ruznych typu projektu. Diky tomuto deleni je mozne
vzdy separatne otestovat uvedene komponenty nezli se poskladaji dohromady
(kazdy jar s produktivnimi tridami ma i sveho partnera s develop
tridami, kde jsou m.j. JUnit testy apod.).

Konkretne v Jave delime pak projekty na vrstvy - prezentacni vrstva
(pl), fasady business vrstvy (bl facade) a jadro business vrstvy (bl core) a
vrstvu pristupu k datum (dal) - nadrazena vrstva smi pouzivat vzdy jen
podrazenou - ale to je asi celkem bezna zalezitost.

Pokud se tyka verzovani, i kdyz Subversion nepouzivame (nas VCS neumi
historii adresaru coz je pri javovskem strukturovani docela problem),
pouzivame obecne pouzitelny princip - verzujeme jednotlive jary pri jejich
buildu automaticky antem a dohromady je pak oznacime labelem ve VCS - pak
jsou vsechny jary spadajici k danemu produktu oznacene jednim labelem.
Vnitrne jary pak v manifestu obsahuji knihovny i s verzemi, ktere je nutno
mit, aby dana funkcnost korektne fungovala (knihovny i s jejich verzemi se
kterymi byla dana knihovna zkompilovana a tedy i otestovana). Protoze se
vytvari pro jistotu vzdycky i jary se zdrojaky a s dokumentaci dane verze
plus v pripade potreby jdiff pro rozdilovou dokumentaci a to vse se pak
oznacuje i labelem ve VCS, mame jistotu ze i v pripade uzivatelske nebo
systemove chyby VCS jsme schopni zrekonstruovat odpovidajici stav (resp.
mame ho dvojmo - jednou primo jako verzi zdrojovych souboru primo ve VCS a
jednou jeste v jaru vzdy pro danou verzi).
Build antem pak umi i prekompilovat v pripade potreby celou kaskadu
vzajemne se pouzivajicich podprojektu (jaru) - jeste tedy se ty jary musi
rucne checkinovat a checkoutovat, ale to se obecne da taky zvladnout
automaticky - tim ze se verzovani posunuje v praxi z urovne trid na uroven
jaru se cela vec docela zjednodusuje.
Samozrejme se snazime mit od jednoho produktu co nejmene verzi, nastesti
nas prilis netrapi muset delat paralelni vyvoj nove funkcnosti (nepocitam
opravy) pro vice verzi jednoho produktu, to je celkem malokdy a snad se tomu
da temer vzdy administrativne predejit... Nicmene pokud je to nutne napr.
pro jednoho zakaznika udelat nejakou zmenu specifickou a narychlo, melo by
to zasahnout jen jeho projekt a ostatni projekty to snad nezasahne.

Tolik teorie :-).

Ahoj, Artur.

- Original Message - 
From: Benda Lukas [EMAIL PROTECTED]

To: Java konference@java.cz
Sent: Tuesday, October 10, 2006 6:04 PM
Subject: Re: OT: Ako a kde ukladat zakaznicke customizacie vo VCS?


  

Asi je to otazka poctu zakazniku, firemni politiky a schopnosti daneho
zarizeni. Ale ja resim, vse pomoci parametru, tudiz, aplikace umi vzdy
vse jen je nutno ji nastavit tak aby to delala. Je sice pravda, ze
odmazani kusu kodu, nebo prepsani je casove mene narocne, ale vetsinou
tu upravu casem chce i nekdo jiny a hlavne nemusim pro kazdeho zakaznika
delat zvlast kompilaci.

Ty parametry jsou v XML souboru nastavene pres spring.

Mam i zarizeni (ctecka carovych kodu), ktera ma ruzna omezeni a tam se
bohuzel musim uchylovat prave k specialnimu programu pro kazdeho
zakaznika, ale musim rict ze mi to velmi nevyhovuje. Nejhorsi je kdyz
prijdu k novemu potencialnimu zakaznikovi a predvadim mu schopnosti
onoho zarizeni a pri

Re: OT: Ako a kde ukladat zakaznicke customizacie vo VCS?

2006-10-10 Tema obsahu Benda Lukas
Asi je to otazka poctu zakazniku, firemni politiky a schopnosti daneho 
zarizeni. Ale ja resim, vse pomoci parametru, tudiz, aplikace umi vzdy 
vse jen je nutno ji nastavit tak aby to delala. Je sice pravda, ze 
odmazani kusu kodu, nebo prepsani je casove mene narocne, ale vetsinou 
tu upravu casem chce i nekdo jiny a hlavne nemusim pro kazdeho zakaznika 
delat zvlast kompilaci.


Ty parametry jsou v XML souboru nastavene pres spring.

Mam i zarizeni (ctecka carovych kodu), ktera ma ruzna omezeni a tam se 
bohuzel musim uchylovat prave k specialnimu programu pro kazdeho 
zakaznika, ale musim rict ze mi to velmi nevyhovuje. Nejhorsi je kdyz 
prijdu k novemu potencialnimu zakaznikovi a predvadim mu schopnosti 
onoho zarizeni a pri predvadeni nejake Cool funkce zjistim, ze ta je ve 
verzi pro jineho zakaznika nez mam prave nahrano v ctecce, to by mne 
vzdycky mohl cert urvat.


Lukas benzin Benda ([EMAIL PROTECTED];  http://benzin.bloguje.cz)
Java a Delphi programator
PHP a JavaScript skrypter
Tvurce databazovych aplikaci
A cestinarsky ignorant

Zdravim!

Moja otazka sa netyka priamo javy, preto som ju oznacil OT, ale s vyvojom 
velmi uzko suvisi a mnohi z vas tento problem riesili a verim ze aj 
vyriesili.


Mame projekt, ktory obsahuje niekolko standalone javovskych modulov, t.j.  
standalone aplikacii, web aplikaciu a nejaky core, ktory je poskytovany

modulom ako kniznica (jar). Problem je, ze aplikaciu je potrebne pre
jednotlivych zakaznikov customizovat. Zakaznikov nie je velke mnozstvo
(radove jednotky), ale pre kazdeho z nich sa robia upravy, ktore su len
pre neho.  Tieto customizacie su od loga a farbiciek v css webovej
aplikacie, cez defaultne jazykove mutacie, samostatne schemy v DB az po
upravy zdrojoveho kodu, ked napr. pre zakaznika X mozu byt baliky (v
zmysle java packages) A, B.A a B.B, pre zakaznika Y to mozu byt B.B a C,
etc.

Problem je, ako udrziavat jednotlive customizacie vo VCS (konkretne 
pouzivame Subversion). Customizacie by mali byt dostatocne oddelene od 
core, ale zaroven by malo byt co mozno najjednoduchsie checkoutovat, 
buildovat, instalovat a testovat verziu pre kazdeho zo zakaznikov. Takze 
otazka je: Ako oddelujete zakaznicke customizacie od produktu a ako ich v 
pripade potreby na projekt aplikujete?


Vdaka za rady a napady. 

J. 

  




Re: Chytre knihy o swingu

2006-10-10 Tema obsahu Benda Lukas




Jako halvni rozdil mezi Spring RCP a JGoodies bych videl, ze JGoodies
je zameren jen na formulare, kdezto Spring na beh cele aplikace.

Kdyz se jedna o formulare, tak tam se vytvareji vcelku jednoduse.
Skracene.
setFormObject(object);

formBuilder.add("polozka1");
formBuilder.add("polozka2");
formBuilder.add("polozka3");
formBuilder.add("polozka4");
formBuilder.add("polozka5");
formBuilder.getForm();

A muzete si zvolit ruzne alyouty, GridBag, TableBag. To uz je na vas.
Pokud mam formularovy objekt treba takovy:
String polozka1; -- Zobrazi se jako policko do ktereho se da vlozit
libovolny text
Integer polozka2; -- Zobrazi se jako policko do ktereho se da vlozit
jenom cislo
Enum polozka3; -- Zobrazi se jako rozbalovaci seznam s moznostmi z
vyctu. S tim, ze lozkalizovane nazvy polozek vezme ze zdroje zprav.
Date polozka4; -- Zobrazi se jako NachoCalendar (mozne je i calendar z
JGoodies, ale tam je obecne problem s lokalizaci), popripade jakykoli
jiny kalendar kdyz si na to udelas data binder
Selectable polozka5; -- No a tady tohle se zobrazi podle toho jaky
databinder vytvoris a cim ty data nacpes. Takze nekdy to mam jako List,
nekdy jako ComboBox to uz je na tobe. Proste podedis z ComboBoxBinder a
naplnis ten objekt datama jake potrebujes.

Co se tyce toho validatoru, tak tam je to postavene na modulu springu
validator. Takze to ma ty vlastnosti. Samozrejme ze validator musis
povetsinou napsat sam. Nekdy se to da udelat jenom s pomoci regularnich
vyrazu, nekdy je to potreba sprogramovat jako funkci. Treba validator
pro wizarda, ktery chce Jmeno, Prijmeni a rodne cislo, s tim ze vsechno
ve smysluplnem tvaru (ve jmene treba neni mezera, nebo cislo atp.,
rodne cislo ma nalezitosti rodneho cisla), jsem udelal takto:

    /** Rules for creating new member of organization
 * @return rules for creating member
 */
    private final Rules createMemberRules() {
    return new Rules(NewMember.class) {
    protected void initRules() {
        add("rodneCislo", getRodneCisloValueConstraint());
        add("firstName", getNameValueConstraint());
        add("secondName", getNameValueConstraint());
    }
    };
    }

    /** Methode which make contrains for new name
 * @return complex contrains. Requird, max length and regexp
 */
    private final Constraint getNameValueConstraint() {
    return all(new Constraint[] {required(),
maxLength(MAX_NAME_LENGTH),
                 regexp("\\D*", "alphabetic")});
    }

    /** Methode which return contrains for new Rodne cislo
 * @return coplex contrains and complex regexp
 */
    private final Constraint getRodneCisloValueConstraint() {
    String regexpMesice31 = "([05][13578](([012]\\d)|(30)|(31)))";
    String regexpMesice30 = "([05][469](([012]\\d)|(30)))";
    String regexpMesic2 = "((([02468][048])|([13579][26]))"
        + "([05]2(([01]\\d)|(2\\d"
        + "|" + "(\\d{2}[05]2(([01]\\d)|(2[0-8])))";
    String regexpMesic11 = "([16]1(([012]\\d)|(30)))";
    String regexpMesic12 = "([16]2(([012]\\d)|(30)}(31)))";
    String regexpMesice = "(" + regexpMesice31 + "|" + regexpMesice30
        + "|" + regexpMesic11 + "|" + regexpMesic12 + ")";
    String regexpRodneCislo = "((" + regexpMesic2 + ")|(\\d{2}"
        + regexpMesice + "))/\\d{3,4}";

    return all(new Constraint[] {required(),
                 maxLength(MAX_RODNECISLO_LENGTH),
                 regexp(regexpRodneCislo)});

    }

Ten regularni vyraz pro rodne cislo by mozna sel napsat i jednoduseji,
ale ja zase v regularech nejsem tak sbehli. Kazdopadne az na
delitelnost jedenacti (ktera fakt nevim jak se v regularu dela)
kontroluje vsechno (vcetne prestupnych roku a ctyrech cifer na konci po
roku 53).


  Ahoj,
odpovídám na zprávu z úterka, 10. října 2006,
kterou Benda Lukas napsal(a) v 18:21:45:

   No, součástí JGoodies je i Validation framework, který přesně takové křížky umí, ale přijde mi to docela složité. Respektive trochu  moc upsané. Samotný JGoodies taky dokáže zcela řídit, kdy má změna ve formuláři promítnout do datového modelu, takže to Spring asi prostě jen převzal. I když možná to zjednodušil ;-) Tam se ty formuláře konfigurují jak? Je nato nějaké XML nebo anotace? V případě JGoodies musím sám napsat třídu zajišťující validaci, sám pro každý formulář provést mapování, atd. U toho validátoru jsem přišel na zajímavou věc. Buďto lze docílit toho, aby se nevyplněné položky modře podsvítily nebo jde chybně vyplněné označit právě tím křížkem, ale nejde to zkombinovat, nechápu proč. O to podsvícení nebo zvýraznění se starají dva různé handlery a nelze použít oba. Leda si napsat vlastní handler. Docela mě to překvapilo.

--- Původní zpráva 

Re: Chytre knihy o swingu

2006-10-10 Tema obsahu Benda Lukas

No spring ma moznost pouzit externi editory pro tvorbu formu.

JJ presne o tom.

No nejlepsi je projit diskusi. Protoze je projekt hodne mlady, tak k 
nemu dokumentace jeste moc neni. Ale je tam kompletni tutorial jak 
vytvorit aplikaci.


 Díky za informace, je to nesmírně zajímavé. Maličko je problém v tom, 
že pro tvorbu formulářů používám Matisse, takže namapování musím 
provést až pak dodatečně. Rozhodně mě ale Spring zajímá.



 Jinak je řeč o tomto, že?

 http://spring-rich-c.sourceforge.net/


 Víte ještě o nějakém dobrém zdroji ukázek?

   



--- Původní zpráva ---

 Odesilatel: Benda Lukas [EMAIL PROTECTED] mailto:[EMAIL PROTECTED]

Předmět: Chytre knihy o swingu

  Datum: 10. října 2006, 22:16:54 (GMT +0200)

Přílohy: Zpráva.html

  msgid:[EMAIL PROTECTED]








Jako halvni rozdil mezi Spring RCP a JGoodies bych videl, ze JGoodies 
je zameren jen na formulare, kdezto Spring na beh cele aplikace.



Kdyz se jedna o formulare, tak tam se vytvareji vcelku jednoduse. 
Skracene.


setFormObject(object);


formBuilder.add(polozka1);

formBuilder.add(polozka2);

formBuilder.add(polozka3);

formBuilder.add(polozka4);

formBuilder.add(polozka5);

formBuilder.getForm();


A muzete si zvolit ruzne alyouty, GridBag, TableBag. To uz je na vas. 
Pokud mam formularovy objekt treba takovy:


String polozka1; -- Zobrazi se jako policko do ktereho se da vlozit 
libovolny text


Integer polozka2; -- Zobrazi se jako policko do ktereho se da vlozit 
jenom cislo


Enum polozka3; -- Zobrazi se jako rozbalovaci seznam s moznostmi z 
vyctu. S tim, ze lozkalizovane nazvy polozek vezme ze zdroje zprav.


Date polozka4; -- Zobrazi se jako NachoCalendar (mozne je i calendar z 
JGoodies, ale tam je obecne problem s lokalizaci), popripade jakykoli 
jiny kalendar kdyz si na to udelas data binder


Selectable polozka5; -- No a tady tohle se zobrazi podle toho jaky 
databinder vytvoris a cim ty data nacpes. Takze nekdy to mam jako 
List, nekdy jako ComboBox to uz je na tobe. Proste podedis z 
ComboBoxBinder a naplnis ten objekt datama jake potrebujes.



Co se tyce toho validatoru, tak tam je to postavene na modulu springu 
validator. Takze to ma ty vlastnosti. Samozrejme ze validator musis 
povetsinou napsat sam. Nekdy se to da udelat jenom s pomoci 
regularnich vyrazu, nekdy je to potreba sprogramovat jako funkci. 
Treba validator pro wizarda, ktery chce Jmeno, Prijmeni a rodne cislo, 
s tim ze vsechno ve smysluplnem tvaru (ve jmene treba neni mezera, 
nebo cislo atp., rodne cislo ma nalezitosti rodneho cisla), jsem 
udelal takto:



/** Rules for creating new member of organization

 * @return rules for creating member

 */

private final Rules createMemberRules() {

return new Rules(NewMember.class) {

protected void initRules() {

add(rodneCislo, getRodneCisloValueConstraint());

add(firstName, getNameValueConstraint());

add(secondName, getNameValueConstraint());

}

};

}


/** Methode which make contrains for new name

 * @return complex contrains. Requird, max length and regexp

 */

private final Constraint getNameValueConstraint() {

return all(new Constraint[] {required(), 
maxLength(MAX_NAME_LENGTH),


 regexp(\\D*, alphabetic)});

}


/** Methode which return contrains for new Rodne cislo

 * @return coplex contrains and complex regexp

 */

private final Constraint getRodneCisloValueConstraint() {

String regexpMesice31 = ([05][13578](([012]\\d)|(30)|(31)));

String regexpMesice30 = ([05][469](([012]\\d)|(30)));

String regexpMesic2 = ((([02468][048])|([13579][26]))

+ ([05]2(([01]\\d)|(2\\d

+ | + (\\d{2}[05]2(([01]\\d)|(2[0-8])));

String regexpMesic11 = ([16]1(([012]\\d)|(30)));

String regexpMesic12 = ([16]2(([012]\\d)|(30)}(31)));

String regexpMesice = ( + regexpMesice31 + | + regexpMesice30

+ | + regexpMesic11 + | + regexpMesic12 + );

String regexpRodneCislo = (( + regexpMesic2 + )|(\\d{2}

+ regexpMesice + ))/\\d{3,4};


return all(new Constraint[] {required(),

 maxLength(MAX_RODNECISLO_LENGTH),

 regexp(regexpRodneCislo)});


}


Ten regularni vyraz pro rodne cislo by mozna sel napsat i jednoduseji, 
ale ja zase v regularech nejsem tak sbehli. Kazdopadne az na 
delitelnost jedenacti (ktera fakt nevim jak se v regularu dela) 
kontroluje vsechno (vcetne prestupnych roku a ctyrech cifer na konci 
po roku 53).



Ahoj, odpovídám na zprávu z úterka, 10. října 2006, kterou Benda Lukas 
napsal(a) v 18:21:45:   No, součástí JGoodies je i Validation 
framework, který přesně takové křížky umí, ale přijde mi to docela 
složité. Respektive trochu  moc upsané. Samotný JGoodies taky dokáže 
zcela řídit, kdy má změna ve formuláři promítnout do datového modelu, 
takže to Spring asi

Re: Chytre knihy o swingu

2006-10-09 Tema obsahu Benda Lukas

V tomhle ohledu zustavam zcela verny springu. A proto pouzivam i
Spring-RCP. Builduji si to sam, vzdycky tak jednou za mesic (stahnu z
SVN a spustim mavena, uplne jednoduche :)).

Zatim jsem se dostal do faze, ve ktere mi u zchodi komplet cele GUI a
jeste dodelavam server. Data Bindig, je resen jako formularove modely.
Nakonec vsechno ukladam pres Spring + Hibernate, ale samozrejme by
nebylo problem pouzit Spring JPA.

Ze startu mi sice chvili trvalo, nez jsem se do toho dostal. Spoustu
veci je nutno pochopit ze zdrojaku, ale kdyz je pochopite, tak to uz jde
jak po masle.

Takze ja doporucuju Spring RCP

Lukas benzin Benda ([EMAIL PROTECTED];  http://benzin.bloguje.cz)
Java a Delphi programator
PHP a JavaScript skrypter
Tvurce databazovych aplikaci
A cestinarsky ignorant

Ahoj,
odpovídám na zprávu z pátku, 06. října 2006,
kterou URBAN Leos napsal(a) v 15:41:00:

   Já jsem přesně v tom stejném stavu. Postupně stále zkouším nové a nové 
postupy, ale žere to dost čas. Ono navíc není řečeno, že i kdyby taková kniha 
byla a popisovala tam nějaký konkrétní postup, že by ten postup byl nejlepší. 
Zatím jsem se uchýlil k Hibernate, JPA, JGoodies databinding a občas ještě něco 
navíc.

  Však zde napište, co považujete za nejlepší a třeba se najde někdo, kdo navrhne něco lepšího a pro ty další to bude tip, co zase naopak zkusit. 


--- Původní zpráva ---
 Odesilatel: URBAN Leos [EMAIL PROTECTED]
Předmět: Chytre knihy o swingu
  Datum: 6. října 2006, 15:41:00 (GMT +0200)
Přílohy: none
  msgid:[EMAIL PROTECTED]

U Ahoj,


U neprimo odkazuji na prispevek Lukase B. s prosbou zda mi nekdo nemuze 
U doporucit podobne chytre knihy pro Swing?


U Nejlepe neco kde by byla rozebrana nejaka aplikace pro praci s daty 
U (umyslne nepisu databazi protoze bych radsi EJB3 ale to bych asi chtel moc).


U Ja jsem stale ve stavu kdy to sice napisu ale na konci mam pocit ze se
U to melo delat nejak jinak :-(((

U Diky a hezky vikend,
U Leos

  Ja bych spis doporucil knihy o RCP.
  Dobre jsou: **Eclipse Rich Client Platform: Designing, Coding, and
  Packaging Java(TM) Applications*


 Konec původní zprávy 

  





Re: Spring + Hibernate: failed to lazily initialize a collection of role

2006-10-06 Tema obsahu Benda Lukas

A neresi tenhle problem tovarni metody?

Misto toho aby jste zavolal new Okres(), addOkresToKra(okes), tak proste 
zavolate kraj.createNewOkres().


A tovarni metoda samozrejme s AOP pocita.

Ja to takhle resim (ani mne to nenapadlo resi jinak) a nemam problem.

Lukas benzin Benda ([EMAIL PROTECTED];  http://benzin.bloguje.cz)
Java a Delphi programator
PHP a JavaScript skrypter
Tvurce databazovych aplikaci
A cestinarsky ignorant

Benda Lukas wrote:
Vysvetleni je strasne jednoduche. Pokud maji byt objekty nacitany 
pomoci lazy, musi mit odkaz na otevreny session. To znamena, ze po 
celou dobu zivota rodicovskeho objektu, musi byt session otevrena, co 
kdyby se nejaky lazy parametr mel zrovna nacist.


To je znacne nehospodarne ne? Takze spring automaticky po ukonceni 
behu vlakna session uzavre. No ale pak zjevne nemuze fungovat lazy. 
Jak z toho?


Prvni moznost je session zachytit a neumoznit jeji uvoneni. To 
znamena ze nechate vlakno ktere vlastni session zit. Brzi se ale 
dostanete do problemu.


Takze druha moznost je vyuzit vlastni metodiku lazy nacitani. Logicky 
by se do kazde metody ktera vrati line nacitane objekty dalo pridat 
nacteni z nejakeho dao readeru, jenze pak je tu potrebne odchytit 
ukladani objektu rodicovskeho, aby se i lazy drzene objekty ukladali 
taky. Ale v male aplikaci je to suverejne nejlepsi reseni. V podstate 
se tak oprostite i od hibernate, vyhnete se spouste problemu a celou 
ORM si udelate sam na miru. Cas ktery spotrebujete na vytvareni 
takovehoto ORM modelu, je pri malych aplikacich (s malym mnozstvim 
tabulek) vyrazne nizsi nez kolik poterbujete na zkroceni hibernate.


No ale ve vetsim projektu, se hibernate uz vyplati. Takze pak se 
logicky nabizi moznost AOP. Spring ma specialni AOP object pro 
komunikaci s hibernate. V definici pak vubec lazy nepouzivate a 
nacitani nechavate na springu, ktery vse zaridi pres AOP:


 bean id=jHasEvidHibernateInterceptor
   class=org.springframework.orm.hibernate3.HibernateInterceptor
   property name=sessionFactory
 ref bean=jHasEvidSessionFactory/
   /property
 /bean

 bean id=krajTarget class=cz.apnetis.jhasevid.db.KrajClass
   property name=associationref bean=association//property
 /bean

 bean id=kraj 
class=org.springframework.aop.framework.ProxyFactoryBean

   property name=targetref bean=krajTarget//property
   property name=proxyInterfaces
 valuecz.apnetis.jhasevid.db.KrajInterface/value
   /property
   property name=interceptorNames
 list
   valuejHasEvidHibernateInterceptor/value
 /list
   /property
 /bean

Kde association je jakykoli parametr ktery ma byt jednoduse predan.


Pokud se nepletu, tak toto reseni moc nepomuze.
Problem je, ze Spring AOP neumi obalovat instance objektu, ktere 
vytvarite pomoci new Constructor(), coz Hibernate dela.
Smysl to ma pouzit jedine, pokud tim obalite DAO tridu, jejiz instanci 
ziskate od Spring ApplicationContextu a dale jak uz jsem psal v 
predchozim mailu k tomuto tematu.


Jinak s tim ukladanim objektu nactenych lazy v jine session muzou 
byt docela problemy, protoze je mate ve dvou ruznych session, tak jsou 
oddelene i JDBC transakce pod tim, takze je nutne volat vice commitu 
apod.








Re: RMI security manager, DB

2006-10-06 Tema obsahu Benda Lukas
No tak to vypada, ze tenhle problem nastava pac pouzivam Spring aten 
nejak vnitrne nepodporuje security context a remote transaction, jak 
pisi v prvnim odstavci o RMI.


Takze asi budu muset pochopit a skrotit Acegi Security. Mate nekdo s nim 
zkusenosti?


Lukas benzin Benda ([EMAIL PROTECTED];  http://benzin.bloguje.cz)
Java a Delphi programator
PHP a JavaScript skrypter
Tvurce databazovych aplikaci
A cestinarsky ignorant
Tak pri svych pokusech o rozchozeni RMI sem se dostal az do bodu, kdy 
propreneseni hlavniho objektu, potrebuji nastavit SecurityManager


Tohle mi to pise kdyz ho nemam nastaveny (na strane klienta):
 java.lang.ClassNotFoundException: cz.apnetis.jhasevid.db.DBSupport 
(no security manager: RMI class loader disabled)]


Takze jsem nastavil standardni RMISecurityManager:
System.setSecurityManager(new RMISecurityManager());

Bohuzel ted se mi nerozbehne server protoze konci s chybou:
NoClassDefFoundError: could not initialize class 
org.firebirdsql.pool.FBConnectionPoolDataSource



Cely vypis chyby je radikalne delsi, ale zbytek uz je jenom: Objekt se 
neporadilo vytvorit, protoze nebyl vytvoren objekt, ktery nebyl 
vytvoren protoze , az nakonec je vise zminena hlaska.



Pritom, kdyz security manager nastaveny neni, tak mi to tu chybu 
nehlasi (nehlasi ji to, ani kdyz je to skompilovane jako stand alone, 
verze v jednom baliku).


Nejak presne nechapu podstatu security manageru, a proc mi to nepovoli 
vytvorit connection pool.


Umite mi nekdo pomoct?

Lukas benzin Benda ([EMAIL PROTECTED];  http://benzin.bloguje.cz)
Java a Delphi programator
PHP a JavaScript skrypter
Tvurce databazovych aplikaci
A cestinarsky ignorant





Re: Spring + Hibernate: failed to lazily initialize a collection of role

2006-10-06 Tema obsahu Benda Lukas
JJ jasne to funguje, na internetu se o tehle metode dost pise. Neuvedl 
jsem ji, protoze pro mne byla nepouzitelna, protoze prave delam na 
aplikaci s RCP, tudiz mne webovy filtr nepomuze. Server zije porad a 
nejake requesty pro neho neplati. Ale pro webovku je to idealni, to uznavam.
Ja vim, ze spring tu sessionu zavre, ale zajimalo by me, proc. Ja bych 
chtel prave konfiguraci, kde zustane otevrena, nebo kde ji 
reconnectne. V pripade, ze se bude pouzivat jenom jedna sessiona, tak 
mi lazy nacitani fungovat bude.


V dokumentaci ke springu je mj. psano, ze prave 
rg.springframework.orm.hibernate3.support.OpenSessionInViewFilter by 
mel zajistit, aby sessiona zustala otevrena po dobu zpracovani celeho 
requestu.


Stanislav Ulrych

Benda Lukas wrote:
Vysvetleni je strasne jednoduche. Pokud maji byt objekty nacitany 
pomoci lazy, musi mit odkaz na otevreny session. To znamena, ze po 
celou dobu zivota rodicovskeho objektu, musi byt session otevrena, co 
kdyby se nejaky lazy parametr mel zrovna nacist.


To je znacne nehospodarne ne? Takze spring automaticky po ukonceni 
behu vlakna session uzavre. No ale pak zjevne nemuze fungovat lazy. 
Jak z toho?


Prvni moznost je session zachytit a neumoznit jeji uvoneni. To 
znamena ze nechate vlakno ktere vlastni session zit. Brzi se ale 
dostanete do problemu.


Takze druha moznost je vyuzit vlastni metodiku lazy nacitani. Logicky 
by se do kazde metody ktera vrati line nacitane objekty dalo pridat 
nacteni z nejakeho dao readeru, jenze pak je tu potrebne odchytit 
ukladani objektu rodicovskeho, aby se i lazy drzene objekty ukladali 
taky. Ale v male aplikaci je to suverejne nejlepsi reseni. V podstate 
se tak oprostite i od hibernate, vyhnete se spouste problemu a celou 
ORM si udelate sam na miru. Cas ktery spotrebujete na vytvareni 
takovehoto ORM modelu, je pri malych aplikacich (s malym mnozstvim 
tabulek) vyrazne nizsi nez kolik poterbujete na zkroceni hibernate.


No ale ve vetsim projektu, se hibernate uz vyplati. Takze pak se 
logicky nabizi moznost AOP. Spring ma specialni AOP object pro 
komunikaci s hibernate. V definici pak vubec lazy nepouzivate a 
nacitani nechavate na springu, ktery vse zaridi pres AOP:


 bean id=jHasEvidHibernateInterceptor
   class=org.springframework.orm.hibernate3.HibernateInterceptor
   property name=sessionFactory
 ref bean=jHasEvidSessionFactory/
   /property
 /bean

 bean id=krajTarget class=cz.apnetis.jhasevid.db.KrajClass
   property name=associationref bean=association//property
 /bean

 bean id=kraj 
class=org.springframework.aop.framework.ProxyFactoryBean

   property name=targetref bean=krajTarget//property
   property name=proxyInterfaces
 valuecz.apnetis.jhasevid.db.KrajInterface/value
   /property
   property name=interceptorNames
 list
   valuejHasEvidHibernateInterceptor/value
 /list
   /property
 /bean

Kde association je jakykoli parametr ktery ma byt jednoduse predan.

Lukas benzin Benda ([EMAIL PROTECTED];  http://benzin.bloguje.cz)
Java a Delphi programator
PHP a JavaScript skrypter
Tvurce databazovych aplikaci
A cestinarsky ignorant

Dobry den,
mam prosbu o pomoc:

Ve svem projektu pouzivam spring (1.2.6) a hibernate (3.1RC1) a 
nefunguje mi lazy inicializace mapovanych objektu : tomcat pise chybu:
failed to lazily initialize a collection of role: 
beans.Project.phases, no session or session was closed


konfigurace v msfchecklist-servlet.xml:

bean id=sessionFactory

class=org.springframework.orm.hibernate3.LocalSessionFactoryBean
property name=dataSourceref bean=dataSource 
//property
property 
name=configLocationvalueclasspath:hibernate.cfg.xml/value/property 

property 
name=configurationClassvalueorg.hibernate.cfg.AnnotationConfiguration/value/property 


property name=hibernateProperties
props
prop 
key=hibernate.dialect${hibernate.dialect}/prop

prop key=hibernate.hbm2ddl.autoupdate/prop
prop key= hibernate.show_sqltrue/prop
/props
/property
/bean
   !-- Transactions --
bean id=transactionManager 
class=org.springframework.orm.hibernate3.HibernateTransactionManager
property name=sessionFactoryref local=sessionFactory 
//property

/bean

   bean id=dataStorageTarget class= 
businesslogic.DataStorageFacadeImpl

property name=documentDAO ref=documentDAO /
property name=documentInPhaseDAO ref=documentInPhaseDAO /
property name=documentTypeDAO ref=documentTypeDAO /
property name=phaseDAO ref=phaseDAO /
property name=phaseInProjectDAO ref=phaseInProjectDAO /
property name=projectDAO ref=projectDAO /
property name=projectTypeDAO ref=projectTypeDAO /
property name=roleDAO ref=roleDAO /
property name=roleInProjectDAO ref=roleInProjectDAO /
property name=signDAO ref=signDAO /
property name=signRequestDAO ref=signRequestDAO /
property name=userDAO

Re: Spring + Hibernate: failed to lazily initialize a collection of role

2006-10-06 Tema obsahu Benda Lukas
Ale rozumime si. Ja jenom tvrdim, ze pro mne zadny request nefunguje, 
pokud delate aplikaci ktera je na desktopu, popripade kdyz delate server 
ke kteremu se pripojuje klient pres RMI (napriklad). Btw. do budoucna 
bude takhle resit i webove projekty. Udelam server (furtbezici) a na 
neho se bude JSP container napojovat pres RMI. Takze nebudu muset kvuli 
kazdemu dotazu znovu a znovu nacitat data z databaze, no a navic k tomu 
kdikoli prilepim RCP klienta.


Takze Vam by mohlo pomoct tohle:
http://wiki.apache.org/tapestry/FrequentlyAskedQuestions/SpringHibernate

Lukas benzin Benda ([EMAIL PROTECTED];  http://benzin.bloguje.cz)
Java a Delphi programator
PHP a JavaScript skrypter
Tvurce databazovych aplikaci
A cestinarsky ignorant
Ted si nejsem jisty, jestli si spravne rozumime - ja se snazim, aby mi 
lazy initialization fungovala v ramci jednoho requestu, a to mi 
nefunguje a nevim v cem mam chybu. Lazy initialization pres vice 
requestu nepotrebuju a ani nechci.
Muj problem je opravdu jenom v tom, ze mam v jednom requestu vice 
session.

Co s tim?



Benda Lukas wrote:
JJ jasne to funguje, na internetu se o tehle metode dost pise. 
Neuvedl jsem ji, protoze pro mne byla nepouzitelna, protoze prave 
delam na aplikaci s RCP, tudiz mne webovy filtr nepomuze. Server zije 
porad a nejake requesty pro neho neplati. Ale pro webovku je to 
idealni, to uznavam.
Ja vim, ze spring tu sessionu zavre, ale zajimalo by me, proc. Ja 
bych chtel prave konfiguraci, kde zustane otevrena, nebo kde ji 
reconnectne. V pripade, ze se bude pouzivat jenom jedna sessiona, 
tak mi lazy nacitani fungovat bude.


V dokumentaci ke springu je mj. psano, ze prave 
rg.springframework.orm.hibernate3.support.OpenSessionInViewFilter by 
mel zajistit, aby sessiona zustala otevrena po dobu zpracovani 
celeho requestu.


Stanislav Ulrych

Benda Lukas wrote:
Vysvetleni je strasne jednoduche. Pokud maji byt objekty nacitany 
pomoci lazy, musi mit odkaz na otevreny session. To znamena, ze po 
celou dobu zivota rodicovskeho objektu, musi byt session otevrena, 
co kdyby se nejaky lazy parametr mel zrovna nacist.


To je znacne nehospodarne ne? Takze spring automaticky po ukonceni 
behu vlakna session uzavre. No ale pak zjevne nemuze fungovat lazy. 
Jak z toho?


Prvni moznost je session zachytit a neumoznit jeji uvoneni. To 
znamena ze nechate vlakno ktere vlastni session zit. Brzi se ale 
dostanete do problemu.


Takze druha moznost je vyuzit vlastni metodiku lazy nacitani. 
Logicky by se do kazde metody ktera vrati line nacitane objekty 
dalo pridat nacteni z nejakeho dao readeru, jenze pak je tu 
potrebne odchytit ukladani objektu rodicovskeho, aby se i lazy 
drzene objekty ukladali taky. Ale v male aplikaci je to suverejne 
nejlepsi reseni. V podstate se tak oprostite i od hibernate, 
vyhnete se spouste problemu a celou ORM si udelate sam na miru. Cas 
ktery spotrebujete na vytvareni takovehoto ORM modelu, je pri 
malych aplikacich (s malym mnozstvim tabulek) vyrazne nizsi nez 
kolik poterbujete na zkroceni hibernate.


No ale ve vetsim projektu, se hibernate uz vyplati. Takze pak se 
logicky nabizi moznost AOP. Spring ma specialni AOP object pro 
komunikaci s hibernate. V definici pak vubec lazy nepouzivate a 
nacitani nechavate na springu, ktery vse zaridi pres AOP:


 bean id=jHasEvidHibernateInterceptor
   class=org.springframework.orm.hibernate3.HibernateInterceptor
   property name=sessionFactory
 ref bean=jHasEvidSessionFactory/
   /property
 /bean

 bean id=krajTarget class=cz.apnetis.jhasevid.db.KrajClass
   property name=associationref bean=association//property
 /bean

 bean id=kraj 
class=org.springframework.aop.framework.ProxyFactoryBean

   property name=targetref bean=krajTarget//property
   property name=proxyInterfaces
 valuecz.apnetis.jhasevid.db.KrajInterface/value
   /property
   property name=interceptorNames
 list
   valuejHasEvidHibernateInterceptor/value
 /list
   /property
 /bean

Kde association je jakykoli parametr ktery ma byt jednoduse predan.

Lukas benzin Benda ([EMAIL PROTECTED];  http://benzin.bloguje.cz)
Java a Delphi programator
PHP a JavaScript skrypter
Tvurce databazovych aplikaci
A cestinarsky ignorant

Dobry den,
mam prosbu o pomoc:

Ve svem projektu pouzivam spring (1.2.6) a hibernate (3.1RC1) a 
nefunguje mi lazy inicializace mapovanych objektu : tomcat pise 
chybu:
failed to lazily initialize a collection of role: 
beans.Project.phases, no session or session was closed


konfigurace v msfchecklist-servlet.xml:

bean id=sessionFactory

class=org.springframework.orm.hibernate3.LocalSessionFactoryBean
property name=dataSourceref bean=dataSource 
//property
property 
name=configLocationvalueclasspath:hibernate.cfg.xml/value/property 

property 
name=configurationClassvalueorg.hibernate.cfg.AnnotationConfiguration/value/property 


property name=hibernateProperties
props
prop 
key=hibernate.dialect${hibernate.dialect}/prop

Re: Spring + Hibernate: failed to lazily initialize a collection of role

2006-10-05 Tema obsahu Benda Lukas
Vysvetleni je strasne jednoduche. Pokud maji byt objekty nacitany pomoci 
lazy, musi mit odkaz na otevreny session. To znamena, ze po celou dobu 
zivota rodicovskeho objektu, musi byt session otevrena, co kdyby se 
nejaky lazy parametr mel zrovna nacist.


To je znacne nehospodarne ne? Takze spring automaticky po ukonceni behu 
vlakna session uzavre. No ale pak zjevne nemuze fungovat lazy. Jak z toho?


Prvni moznost je session zachytit a neumoznit jeji uvoneni. To znamena 
ze nechate vlakno ktere vlastni session zit. Brzi se ale dostanete do 
problemu.


Takze druha moznost je vyuzit vlastni metodiku lazy nacitani. Logicky by 
se do kazde metody ktera vrati line nacitane objekty dalo pridat nacteni 
z nejakeho dao readeru, jenze pak je tu potrebne odchytit ukladani 
objektu rodicovskeho, aby se i lazy drzene objekty ukladali taky. Ale v 
male aplikaci je to suverejne nejlepsi reseni. V podstate se tak 
oprostite i od hibernate, vyhnete se spouste problemu a celou ORM si 
udelate sam na miru. Cas ktery spotrebujete na vytvareni takovehoto ORM 
modelu, je pri malych aplikacich (s malym mnozstvim tabulek) vyrazne 
nizsi nez kolik poterbujete na zkroceni hibernate.


No ale ve vetsim projektu, se hibernate uz vyplati. Takze pak se logicky 
nabizi moznost AOP. Spring ma specialni AOP object pro komunikaci s 
hibernate. V definici pak vubec lazy nepouzivate a nacitani nechavate na 
springu, ktery vse zaridi pres AOP:


 bean id=jHasEvidHibernateInterceptor
   class=org.springframework.orm.hibernate3.HibernateInterceptor
   property name=sessionFactory
 ref bean=jHasEvidSessionFactory/
   /property
 /bean

 bean id=krajTarget class=cz.apnetis.jhasevid.db.KrajClass
   property name=associationref bean=association//property
 /bean

 bean id=kraj 
class=org.springframework.aop.framework.ProxyFactoryBean

   property name=targetref bean=krajTarget//property
   property name=proxyInterfaces
 valuecz.apnetis.jhasevid.db.KrajInterface/value
   /property
   property name=interceptorNames
 list
   valuejHasEvidHibernateInterceptor/value
 /list
   /property
 /bean

Kde association je jakykoli parametr ktery ma byt jednoduse predan.

Lukas benzin Benda ([EMAIL PROTECTED];  http://benzin.bloguje.cz)
Java a Delphi programator
PHP a JavaScript skrypter
Tvurce databazovych aplikaci
A cestinarsky ignorant

Dobry den,
mam prosbu o pomoc:

Ve svem projektu pouzivam spring (1.2.6) a hibernate (3.1RC1) a 
nefunguje mi lazy inicializace mapovanych objektu : tomcat pise chybu:
failed to lazily initialize a collection of role: 
beans.Project.phases, no session or session was closed


konfigurace v msfchecklist-servlet.xml:

bean id=sessionFactory

class=org.springframework.orm.hibernate3.LocalSessionFactoryBean

property name=dataSourceref bean=dataSource //property
property 
name=configLocationvalueclasspath:hibernate.cfg.xml/value/property
property 
name=configurationClassvalueorg.hibernate.cfg.AnnotationConfiguration/value/property

property name=hibernateProperties
props
prop key=hibernate.dialect${hibernate.dialect}/prop
prop key=hibernate.hbm2ddl.autoupdate/prop
prop key= hibernate.show_sqltrue/prop
/props
/property
/bean
   
!-- Transactions --
bean id=transactionManager 
class=org.springframework.orm.hibernate3.HibernateTransactionManager
property name=sessionFactoryref local=sessionFactory 
//property

/bean

   
bean id=dataStorageTarget class= 
businesslogic.DataStorageFacadeImpl

property name=documentDAO ref=documentDAO /
property name=documentInPhaseDAO ref=documentInPhaseDAO /
property name=documentTypeDAO ref=documentTypeDAO /
property name=phaseDAO ref=phaseDAO /
property name=phaseInProjectDAO ref=phaseInProjectDAO /
property name=projectDAO ref=projectDAO /
property name=projectTypeDAO ref=projectTypeDAO /
property name=roleDAO ref=roleDAO /
property name=roleInProjectDAO ref=roleInProjectDAO /
property name=signDAO ref=signDAO /
property name=signRequestDAO ref=signRequestDAO /
property name=userDAO ref=userDAO /
/bean

bean id=dataStorage

class=org.springframework.transaction.interceptor.TransactionProxyFactoryBean
property name=transactionManagerref 
local=transactionManager //property
property name=targetref local=dataStorageTarget 
//property

property name=transactionAttributeSource
bean 
class=org.springframework.transaction.annotation.AnnotationTransactionAttributeSource 
/

/property
/bean
   
Ve web.xml pouzivam:

filter
filter-namehibernateFilter/filter-name
filter-class

org.springframework.orm.hibernate3.support.OpenSessionInViewFilter

/filter-class
init-param
param-namesingleSession/param-name

RMI server - nabizene objekty

2006-10-05 Tema obsahu Benda Lukas

Jak poznam ktere objekty mi RMI registr nabyzi na danem portu?

Jde mi o to, ze jsem vytvoril client a server. Server jsem spustil a 
client se k nemu neumi prihlasit. Ted nevim jestli je chyba na strane 
client, nebo na strane server. Jak poznam ze objekt serveru je v 
registru a je skutecne nabizen clientum?


Da se nekde zjistit seznam nabizenych objektu danym registrem?

Lukas benzin Benda ([EMAIL PROTECTED];  http://benzin.bloguje.cz)
Java a Delphi programator
PHP a JavaScript skrypter
Tvurce databazovych aplikaci
A cestinarsky ignorant


RMI security manager, DB

2006-10-05 Tema obsahu Benda Lukas
Tak pri svych pokusech o rozchozeni RMI sem se dostal az do bodu, kdy 
propreneseni hlavniho objektu, potrebuji nastavit SecurityManager


Tohle mi to pise kdyz ho nemam nastaveny (na strane klienta):
 java.lang.ClassNotFoundException: cz.apnetis.jhasevid.db.DBSupport (no 
security manager: RMI class loader disabled)]


Takze jsem nastavil standardni RMISecurityManager:
System.setSecurityManager(new RMISecurityManager());

Bohuzel ted se mi nerozbehne server protoze konci s chybou:
NoClassDefFoundError: could not initialize class 
org.firebirdsql.pool.FBConnectionPoolDataSource



Cely vypis chyby je radikalne delsi, ale zbytek uz je jenom: Objekt se 
neporadilo vytvorit, protoze nebyl vytvoren objekt, ktery nebyl vytvoren 
protoze , az nakonec je vise zminena hlaska.



Pritom, kdyz security manager nastaveny neni, tak mi to tu chybu nehlasi 
(nehlasi ji to, ani kdyz je to skompilovane jako stand alone, verze v 
jednom baliku).


Nejak presne nechapu podstatu security manageru, a proc mi to nepovoli 
vytvorit connection pool.


Umite mi nekdo pomoct?

Lukas benzin Benda ([EMAIL PROTECTED];  http://benzin.bloguje.cz)
Java a Delphi programator
PHP a JavaScript skrypter
Tvurce databazovych aplikaci
A cestinarsky ignorant


Re: Hibernate + Spring opakovany navrat objektu

2006-09-01 Tema obsahu Benda Lukas
No prave ze na kraj 1 mam navazane pouze dva okresy. A obdobne jsem to 
taky spatlal, ze jsem odebral duplicitni kraj, jenze to mi pripadne 
docela na hlavu.


Jinak to vybiram loadAll(Kraj.class), takze HQL nepouzivam.

Okresy jsem drive z kraju dostaval pres vlastnost ListIOkres, ale 
tedka jsem to prekopl na SetIOkres ale jeste jsem nekontroloval jestli 
mi nepok*vi poradi.


Lukas benzin Benda ([EMAIL PROTECTED];  http://benzin.bloguje.cz)
Java a Delphi programator
PHP a JavaScript skrypter
Tvurce databazovych aplikaci
A cestinarsky ignorant

Benda Lukas napsal(a):

Mam strukturu
Kraj (1 - *) Okres (1 - *) Organizace (n - m) Clen organizace 
(1 - *) Dalsi ruzne detaily clena


Aktualne mam vlozene dva Kraj, v prvnim mam dva okresy, v druhem mam 
jeden okres. V kazdem okresu mam jednu organizaci (jenom v prvnim 
okresu prvniho kraje mam dve organizace). V organizacich prvniho 
okresuprvniho kraje mam pokazde jednoho clena.


Vazby 1 - * jsou realizovane pres FK v detail tabulce. Vazba n - 
m je tvorena samostatnou spojovaci tabulkou.


Ke zprave databaze pouzivam Hibernate a k sprave sessionu a trasakci 
vyuzivam nad nim Spring.


Problemy jsou dva:
1) Pri nacteni seznamu kraju mi vrati hibernate 4 kraje, misto dvou. 
A to v nasledovnem slozeni nejdrive trikrat se nacte Kraj 1 a 
nasledne jednou kraj 2. (HashCode i Equals mam pretizeno, vsechny 
objekty Kraj 1 jsou jeden a tentyz, jenom je v tom vracenem Listu 
nekolikrat)
Nemate nahodou na ten Kraj 1 navazane 3 Okresy? Jaky dotaz pouzivate 
pro nacitani Kraju? Setkal jsem se s timto chovanim v pripade ze jsem 
v HQL pouzil konstrukci
ktera kraje a prislusne navazane okresy nacita jednim joinovanym SQL 
selectem (uz si presne nepamatuji jaka je to konstrukce). Hlasil jsem 
to do BTS Hibernate
jako chybu ale pry je to feature. Resenim je si ten vysledny List 
presypat do LinkedHashSet ktera vyhodi duplicity ale pro iterator 
zachova poradi.
2) Da se do spojovaci tabulky pridat nektere dalsi informace? 
Napriklad datum zacatkuclenstvi, registracni cislo atp?


Lukas benzin Benda ([EMAIL PROTECTED];  http://benzin.bloguje.cz)
Java a Delphi programator
PHP a JavaScript skrypter
Tvurce databazovych aplikaci
A cestinarsky ignorant






Re: TODO anotece + nastroj na jejich cteni

2006-08-25 Tema obsahu Benda Lukas
No prave ze ja pouzivam XEmacs + JDEE, prave proto jsem chtel najit 
nejakou univerzalnejsi metodu jak tyto TO-DO poznamky psat nezavisle na 
IDE. No v XEmacsu pouziji grep jak jsem prave dostal radu + muzu pouzit 
standardni TODO manager pro Emacs.


No ale podle vseho kdyz se da tag @todo do dokumentace, tak maven 
defaultne umi vygenerovat html stranku se vsemy nedodelky. No a taky 
jsem dosal typ na tag ktery s pomoci xdoclet umi takovou stranku 
vygenerovat i pod antem.


Takze nakonec pouziji asi grep pro @todo tag, take to budu mit rychle 
dostupne v mojem IDE a taky vygenerovatelne napriklad na stranky.


Lukas benzin Benda ([EMAIL PROTECTED];  http://benzin.bloguje.cz)
 Java a Delphi programator
 PHP a JavaScript skrypter
 Tvurce databazovych aplikaci
 A cestinarsky ignorant


Re: for vs. while

2006-08-23 Tema obsahu Benda Lukas
No tady je zjevny iteracni krok, navic je zjevne ze tim omezujete 
platnost promene rs jenom pro dany cyklus. Takze tady to muze mit vyznam 
jak prakticky tak popisny.  Tak nejak  bych ve for hledal definici 
iterujici promene a metodu, ktera provadi samotny iteracni krok, jak uz 
i++, tak rs.next(). Kdezto ve while pouze samotnou kontrolu podminky.


Je to sice jenom moje chapani, ale tak nejak mi to prijde prirozene pro 
tyto dva cykly.


Lukas benzin Benda

Zdravim,
a co si myslite o tomhle:

   PreparedStatement ps = ...
   for (ResultSet rs = ps.executeQuery(); rs.next(); ) {
   ...
   }

Podle me je to lepsi nez ucebnicovy dvouradkovy while... a take v 
souladu s nazorem Joshuy Blocha v Effective Java...


Roman

Dneska jsem ve jednom frameworku narazil na tuhle konstrukci:

for (; text != null;) {
...
}

Mne to prijde jako docela praseci konstrukce. Muze mit nejake 
opodstatneni pouzit takhle for misto toho aby se pouzil while?


Lukas benzin Benda 


TODO anotece + nastroj na jejich cteni

2006-08-21 Tema obsahu Benda Lukas
Neznte nekdo jiz vytvorenou nejakou anotici a nastroj ktere by tyto 
anotace cetl na TODO? Proste seznam ukolu k udelani? Zatim jsem nasel 
rozsirujici modul pro JavaDoc, ale preci jen si myslim, ze problem s 
neudelanymi ukoly saha za hranice pouhe dokumentace a anotace se mi na 
to jevi jako dobry zpusob.


Lukas benzin Benda


Re: Testovani privatnich metod s jUnit 4

2006-06-30 Tema obsahu Benda Lukas
Uvazoval jsem nad timto tematem, a take nad tim, proc jsem tento problem 
nikdy nemusel resit. Je to asi zpusobeno tim, ze hojne vyuzivam 
refaktorizaci. Kdyz uz je nejaka privatni metoda tak slozita ze si 
vyzada vlastni testovani (ze nestaci pouhe testovani verejnych metod), 
pak ji vetsinou prisoudim vlastni tridu.


Asi to neni vsespasne reseni, ale zatim, mne to od vsech testu 
privatnich metod uchranilo.


Jinak reflection se mi nejevi az tak slozite.

Lukas Benda

Zdar,

mam takovou spise filozofickou otazku. Zvazuju, ze bych chtel 
otestovat privatni metodu jedne tridy. Zvazuju ze bych to udelal s 
jUnit 4 s tim, ze ten unit test pripojim primo do dane tridy. Nelibi 
se mi ale to, ze


1, samotna trida bude v runtime zavisla na tridach jUnitu, coz je 
podle me, chyba navrhu.
2, testovaci metoda musi byt public, coz znamena ze exportuju tuto 
metodu nesmyslne a zatemnuju tim API


Alternativy jsou:

   1. pouzit Reflection a testovat privatni metodu pres reflection -
  zda se mi moc slozite
   2. pouzit Groovy pro unit test - asi nejschudnejsi, ale neni to
  pure Java, musim do Mavenu pridavat  goal na compilaci Groovy
  trid, potize s Eclipse, ...
   3. pouzit TestNG, ale i tam je nakonec zbytecna zavislost tridy na
  testovacim frameworku. Jestli muze byt testovaci metoda v TestNG
  privatni, to nevim.

Mate k tomu nekdo nejakou poznamku? Napad? Jak to delaji jinde?

Tom


Re: Swing a data binding

2006-05-24 Tema obsahu Benda Lukas
Tak uvazuju jestli ten mail vubec do konference dosel. Ano to jde udelat 
napriklad na to je Spring-RCP, jedna se o platformu urcenou prave pro 
vytvareni tlustych (bohatych) klientu.


Btw. to co za Vas dela Hibernate, nebo JDO delalo Delphi do znacne miry 
pomoci obektu Query resp. ClientDataSet. Prevadi databazova data na 
objekt. Presne to kdyz udelate tak balicek org.springframework.binding a 
jeho potomek org.springframework.binding.swing je presne na tohle urceny.


S pozdravem Lukas Benda

Rozumím,

lze nějak rozumně udělat DBMS - datový objekt - Swing bez aplikačního
serveru (tzn. na dvojvrstvé věci)? Protože JBuilder mě neláká a rád bych si
nechal zadní vrátka pro rozšíření aplikace na třivrstvou někdy v budoucnu.

Petr

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Behalf Of URBAN Leos
Sent: Friday, May 19, 2006 8:22 AM
To: Java
Subject: Re: Swing a data binding


Zdravím,

to, co existovalo v VisualBasicu (a Delphi) najdete v JBuilderu.

Tam si připojíte datový zdroj definicí přes JDBC, na formulář naklikáte
speciální swingové objekty dbSwing co mají vlastnosti dataSet a
columnName, nahoru dáte toolbar s tlačítky first, next, edit,... (nebo
si to obsloužíte sám) a je to.

Viz
http://pipin.tmd.ns.ac.yu/extra/java2/libs/dbswing/ref/dbswing/Package-com.b
orland.dbswing.html

JBuilder není zadarmo ale toto funguje i s tou jejich start verzí která
je pro nekomerční použití zadarmo takže to můžete aspoň vyzkoušet.

Uvedený postup je proprietární postup Borlandu takže pak jste navěky
svázáni s JBuilderem.

Já to jen kdysi zkoušel. Protože se zabývám EJB3 (tj. 3 vrstevnou
architekturou) by mi toto nebylo k ničemu.

Leoš


Petr Zajíc napsal(a):
  

Totiž, zatím se v tom docela solidně technologicky ztrácím.

Vize je asi taková: Existuje nějaká historická dvojvrstvá aplikace s
databází (MSSQL) a tlustým klientem (Visual Basic 6). Datábázi chce


zákazník
  

nechat tak jak je, ale klienta předělat do Javy (Swing).

Ve starém špatném Basicu to bylo tak, že ovládací prvky na formuláři


byly
  

vázány přímo na zdroj dat - recordset (v Javě ResultSet). Ten JGoodies
binding nicméně umožňuje pomocí swingu prezentovat data zase jen z


objektu.
  

Já musím udělat kolečko

databáze - cosi - prezentace dat ve Swingu
prezentace dat ve Swingu - cosi - databáze

Takže já vlastně asi potřebuju nejenom binding, ale i perzistenci.

Nakopne mě někdo správným směrem? Existuje nějaká kombinace technologií,
která mi umožní
a) použít současný návrh relační databáze
b) solidně namapovat databázová relační data na objekty
c) objekty prezentovat ve tlustém klientu (desktop-swing)

Těch možností je víc a mě by zajímalo, kdo má s čím zkušenosti.

Petr Zajíc

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Behalf Of Richard Malaschitz
Sent: Friday, May 19, 2006 12:00 AM
To: Java
Subject: Re: Swing a data binding


Mohli by ste napisat co ste si nakoniec vybrali a nejake mini-porovnanie ?


2006/5/16, Benda Lukas [EMAIL PROTECTED]:
Samozrejme napr; Spring RCP
http://spring-rich-c.sourceforge.net/



Zdravím,

budu muset přepsat jeden ne-jevovský projekt do Javy a bude to tlustý
klient využívající Swing. Ve spoustě případů budu potřebovat okna, jejichž
komponenty budou zobrazovat a/nebo měnit data pocházející z relační
databáze. Aplikace bude dvojvrstvá.

Je mi jasné, že psát kód pro databinding je vynalézání kola. Máte někdo
zkušenosti s nějakým frameworkem na tuhle záležitost? Mě se zatím nejvíc
líbí JGoodies binding (https://binding.dev.java.net/), ale uvítám
názory/postřehy s tímto nebo čímkoli jiným.

Díky za názory

Petr
  


Re: Poptavka po vyvojari jednoduche mobilni Java aplikace

2006-05-16 Tema obsahu Benda Lukas

Takze kouzelnika?
Pokud vim, tak ani Nokia, ani Ericsson, ani zadny jiny mobil tohle nezvlada.

Mozna bude lepsi spis nahodit na jake mobily to chcete dostat. Protoze i 
kdyz to je Java, na kazdem mobilu jina.


Zdravim, hledam vyvojare Java, ktery dokaze spolupracovat s foto- a 
SMS funkcemi v mobilu.


Zahajuji projekt, ktery ma velmi vysoky financni potencial a mohu 
nabidnout podil.


Honza 


Re: Aplikace sklad - vhodna databaze, framework?

2006-05-09 Tema obsahu Benda Lukas

Petr Kolesa napsal(a):



Benda Lukas napsal(a):
  Takze pro desktopove aplikace bych mozna jeste zvazoval HSQL, ktera je
cela programovana v Linuxu a nepriklad je nativni pro OpenOffice, prave 

  ^^
Pravdepodobne myslite v Jave.


Presne



z duvodu ze Firebird nema embendet na Linuxu.


Nezni ten cizi, petkrat se vyskytujici, termit nahodou 'embedded'? Ja 
vim, bylo uz pred pulnoci ... :)


To neni puloci, ale skutecne tim, ze mam problemy s pravopisem jak 
anglickym, tak ceskym a obcas jsem lenivy kvuli kazdemu slovu brat 
slovnik. Btw. nedari se mi najit cesky ekvivalent toho slova. P.S.: Ani 
v mych chytrych slovnicich to slovo neni :((

kolisko






Re: Aplikace sklad - vhodna databaze, framework?

2006-05-08 Tema obsahu Benda Lukas

Ja napriklad.

Rychlosti predhoni, i u neodborne konfigurace, MySQL a PostgrSQL. Je 
velmi kompaktni. Snadno se do ni doprogrmovavaji dalsi UDF, kdyz uz tedy 
dalsi potrebujete (to znemna, napriklad ruzne funkce volane na urvni 
databaze). Na windows se da pouzit i jako Embendet (to znamena neni 
treba instalovat server, ale primo pomoci knihovny pristupujete k 
databazi). Embedet je navic rychlejsi, nez server (vse probiha v ramci 
jedineho pametoveho prostoru). Embendet ma taky vetsi odolnost vuci 
napadeni, protoze bez serveru, neni utocnika :))


Nevyhoda je neexistence embendet verze pro Linux.

Takze pro desktopove aplikace bych mozna jeste zvazoval HSQL, ktera je 
cela programovana v Linuxu a nepriklad je nativni pro OpenOffice, prave 
z duvodu ze Firebird nema embendet na Linuxu.


Kazdopadne Firebird vrele doporucuji.

S pozdravem Lukas Benda

Skusal niekto FireBird ?

DS 


-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Vladimir Vymetal
Sent: Friday, May 05, 2006 9:49 AM
To: Java
Subject: Re: Aplikace sklad - vhodna databaze, framework?

Co se tyka databaze, tak take doporucuji PostgreSQL. Transakce, 
referencni integrita a ostatní funkcnost je velmi vyspela. Co se tyka 
rychlosti, tak si dovolim tvrdit, ze vhodnou definicí indexu, se da 
priblizit rychlosti mysql.


S pozdravem
Vladimir Vymetal

Burdik Petr wrote:
  
Jestli chcete skladat moduly, doporucuji spring. Tam web nemusite resit 
pokud nechcete.


Mysql je dobra databaze pro web, na pouziti v ucetnictvi bych sel ale 
urcite do postgresu kvuli delsi podpore transakcniho zpracovani. Mysql 
je super pro web, protoze je proste rychlejsi.


Pet


Petr Gola wrote:



Zdravim,

chtel bych v Jave napsat aplikaci pro obsluhu skladu - prijem, vydej,
stav... no, databazova aplikace, pozdeji k tomu pridavat dalsi moduly
(napr. pokladnu, tisk uctenek). Ale resim ted nekolik problemu, ktere
je potreba rozhodnout jeste pred kodovanim. Rad bych pouzil moderni
postupy, ale nechci kanon na vrabce. Spise hledam neco, co by
vylepsilo produktivitu a nezavrelo mi to vratka k dalsimu rozsirovani.
Ted resim:

1) jakou databazi pouzit - aplikace by v nejlehci verzi mela bezet na
jednom pocitaci (mozny win i linux). Puvodne jsem pomyslel na
PostgreSQL, ale vadi mi zpusob behu na windows platforme - mate s tim
nekdo zkusenosti? A co si myslite o MySQL (nazvem mi neni prilis
symaticka:)?

2) chtel jsem pouzit nejaky framewok, ale vse mi prijde orientovane
spise na web. Ja ted potrebuji napsat desktop aplikaci, ale mozna, ze
pozdeji bych chtel pridat webovy, pripadne i mobilni pristup. Bohuzel
vsechny tutorialy jsou take zamereny na webove aplikace. Urcite by se
tim dalo prokousat, ale nemam ted bohuzel takove casove moznosti a
potreboval bych nejake nakopnuti. Nevite nekdo o necem na webu?
Nezkousel jste nekdo Spring-RCP (Rich Client Project)?

Hledam tedy nejlepe nejakou sadu nastroju - databaze, perzistence dat,
autorizace, namapovani dat do formulare (GUI)...

S pozdravem, Petr Gola
  







  




Re: Aplikace sklad - vhodna databaze, framework?

2006-05-08 Tema obsahu Benda Lukas
Prave pisu tutorialek na Spring-RCP, je sice pravda ze je to dosti mlady 
projekt, ale myslim ze s velkym potencialem. Kazdopadne pro uzivatelske 
rozhrani se nuvazete k jedinemu IDE, jako treba v pripade NetBeans RCP, 
nebo Eclipse RCP.


S pozdravem Lukas Benda

P.S.: Pro perzistenci vrele doporucuji Hibernate. Musim rict ze i 
Annotace jsou tam jiz solidne propracovane a zatim jsem nenarazil na 
problem, ktery bych nevyresil.

Petr Gola napsal(a):

1) jakou databazi pouzit - aplikace by v nejlehci verzi mela bezet na
jednom pocitaci (mozny win i linux). Puvodne jsem pomyslel na
PostgreSQL, ale vadi mi zpusob behu na windows platforme - mate s tim
nekdo zkusenosti? A co si myslite o MySQL (nazvem mi neni prilis
symaticka:)?



Z databazi bych uvazoval i o Firebird (www.firebirdsql.org) - puvodne 
Interbase. U nas ve firme na ni jede pres 60 klientu a bezi na ni cely 
informacni system (vsechny oblasti vyrobni firmy) a jsme velice 
spokojeni.


Ted resime neco podobneho jako vy - vybirame vhodny jazyk a prostredky 
na prepsani klientske casti vyse zmineneho systemu, ktery je nyni 
napsan v Kylixu. Jako jazyk jsme vybrali Javu. Vazne uvazujeme, ze to 
postavime nad Netbeans Platform, ale cekame na uvedeni Netbeans 6.0 (v 
Q4), kde ma byt databinding (ve spojeni s navrharem Matisse by to mohl 
byt pekny a pohodlny vyvoj aplikace).


Jako tisky zatim uvazujeme o JasperReports.

Karel





Re: OT: Testovani aplikaci (JUnit, DBUnit ...)

2006-03-28 Tema obsahu Benda Lukas
Asi nejmensi zlo je prechazet na nove metodoky pomalu. Pokud skocite do 
XP rovyma nohama, nevim jak dopadnete u kolegu. Je to spousta novych 
technik, ktere je nutno se naucit, jinak to nebude fungovat.


Ja zacal od TDD (testy rizeny vyvoj) s trochou refaktorizaci. Myslim, ze 
casem az se mi to vice zautomatizuje budu psat vice testu i vice 
refaktorovat.


Testy alespon pri vyvoji MVC koponent s web rozrhranim vyvoj radikalne 
zrychli. Nemusite totiz porad restartovat Tomcate (nebo ktery jiny 
server mate), resp. testovanou aplikaci. Protoze testy probihaji (s 
trochou dobreho navrhu) primo jenom v JUnit. K testovani puzivam hojne 
Mock Objekty a Test Scenario jak je popsan zde 
http://www.sweb.cz/pichlik/archive/2005_10_23_archive.html.


Sam jsem ale mel strasny problem pochopit jak vlastne testovat trochu 
slozitejsi problem, napojeny treba na DB. Osvedcil se mi model (kdyz 
teda delam aplikaci primo s JDBC, ne treba Hibernate, tam by byla 
metodika jina)
DAOReader (rozhrani) pro DAOReaderImpl a DAOReaderMock - Rozhrani 
implementuji dve tridy, ktera jedna je navazana na databazi a druha 
slouzi jako Mock objekt, pro predavani dat po cas testu.


Testuji pak aplikacni logiku pres DAOReaderMock a kdyz mam aplikacni 
logiku otestovanou otestuji jeste DAOReaderImpl jestli vrati skutecne z 
DB to co si preji. Obdobne DAOWriter pro zapis dat do DB.


Jak rikam vyvijim rychleji a to jiz z kratkodobeho hlediska, protoze 
nemusim cekat na start interface, abych naklikal, nebo jinak otestoval 
co chci.


S pozdravem Lukas Benda

P.S.: Pri testovani GUI se uz asi klikaci a testovaci metode nevyhnu 
(teda pokud se neucim Cactus - coz asi udelam).

Zdravim,

chtel bych se zeptat hlavne lidi, co se drzi nejake agilni metodiky
vyvoje software. Mam v umyslu presvedcit sve kolegy o  prechodu na
nekterou z techto metodik vcetne contin. integr. a s jedinou veci si
lamu hlavu. Psani testu. Chtel bych vedet jestli vyvojove tymy ktere
nejprve napisou testy a pak az koduji maji pocit, ze psanim testu
narostl cas straveny vyvojem. Je mi jasne, ze tenhle cas navic (jestli
je nejaky) se vrati pri pozdejsim vyvoji a integrovani dalsich komponent
(nemluve o tom, ze si clovek aspon uvedomi co chce napsat), ale co jsem
zjistil kdyz navrhnu psani testu atd. tak nejcastejsi poznamka je
navyseni casu pro vyvoj. A bohuzel na to management slysi.
Taky klidne muzete pridat svoje zkusenosti s agilnimi metodikami :)
(nejlepe v Jave, abych naplnil zamereni teto konference ;))

Preji hezky den

Daniel Holesinsky (DH)


Re: J2ME - Prace s infrered na mobilu

2006-03-17 Tema obsahu Benda Lukas
Kdyz si stahnete WTK primo do sunu tak na to tam jsou na to example 
aplikace.


Ve stredni tride mobilnich telefonu bluetooth a IDR zvladne ovladat 
zatim jenom Nokia 6230i. Erricsony myslim, zatim bluetooth vubec do Javy 
nezaradily. JJ je to bida, problem je se ty standarty dozvedet. Jedina 
moznost je prihlasit se do developlment komunity daneho vyrobce a 
doufat, ze u modelu uvadi standarty ktere to podporuje myslim, ze se to 
jmenuje JRE cislo. Takze si najdete na netu jake oznaceni ma standart 
pro Bluetooth a mrknete se na development strankach vyrobce jestli to 
Vas model podporuje.


S pozdravem Lukas Benda

Zdravim,

nevite prosim nekdo, jakym zpusobem ovladat IR port na mobilu? Mam 
Nokia, Ericsson.
Nejsem v J2ME vubec zbehly, chtel bych si s tim zkusit pohrat a udelat 
si dalkac na fotak, abych usetril petistovku :-)
Na webu jsem nasel spise zminky, ze to neni vyzadovano standardem a ze 
vyrobci telefonu to bud zpristupnuji ve svych vlastnich knihovnach 
Jave a nebo taky ne (= nutnost pouzivani podkladoveho OS, pokud je, 
nebo smula).


Diky za napady nebo dobre odkazy,
Radek


Re: OT: PMD Error while parsing

2006-03-09 Tema obsahu Benda Lukas

Takze Vy pouzivate PMD + MetaCeck?

A ty Vase fixy jsou dostupne kde? S PMD uz jakz, takz umim a mam 
nastaveny seznam pravidel.


P.S.: Chtel bych kontrolovat minimalni delku parametru (to pravidlo tam 
je), bohuzel nektere parametry ac kratke jsou dostatecne jednoznacne. 
Napr. id je jasny identifikator. Jak pasivovat PMD proti podobym 
prohreskum, pri zachovani kontroly?

On Wednesday 08 of March 2006 21:29, Benda Lukas wrote:
  

Tak jsem pochopil preklad slova obsolte=zastaraly, zakrnely, nemoderni



Vzhledem k tomu, ze je PDM neustale vyvijen (a jak jsem se docetl v jinem 
dnesnim postu i integrovan do NB5.0), tak obsolete asi nebude. Na zaklade 
mych fixu uz navic konecne umi korektne rozpoznavat neascii zdrojaky, 
takze...


  

Takze jsou to dva ruzne nastroje jako checkstyle a metacheck? A nejake
srovnani?



To nejsou dva konkurentni nastroje. MetaCheck uz od sveho nazvu Meta integruje 
vystupy z asi deseti source code checkeru (checktyle, JavaNSS, Hammurapi, 
PDM, JCS,...) do jednoho rozumne vypadajiciho HTMLcka.


URL je samozrejme http://metacheck.sourceforge.net/

  

On Wednesday 08 of March 2006 07:45, Jozef Babjak wrote:
  

Z PMD skusenosti mam a nasiel som aj uspokojive riesenie na problemy
s  nim:

http://checkstyle.sf.net

Napriek tomu, ze aj toto riesenie ma svoje muchy, robi z PMD
jednoznacne obsolete tool.


Az tak uplne obsolete neni. Kazdopadne doporucuji MetaCheck - nastroj,
ktery integruje spoustu podobnych nastroju.
  


  




Re: OT: PMD Error while parsing

2006-03-08 Tema obsahu Benda Lukas

Tak jsem pochopil preklad slova obsolte=zastaraly, zakrnely, nemoderni

Takze jsou to dva ruzne nastroje jako checkstyle a metacheck? A nejake 
srovnani?

On Wednesday 08 of March 2006 07:45, Jozef Babjak wrote:
  

Z PMD skusenosti mam a nasiel som aj uspokojive riesenie na problemy
s  nim:

http://checkstyle.sf.net

Napriek tomu, ze aj toto riesenie ma svoje muchy, robi z PMD
jednoznacne obsolete tool.



Az tak uplne obsolete neni. Kazdopadne doporucuji MetaCheck - nastroj, ktery 
integruje spoustu podobnych nastroju.
  




OT: PMD Error while parsing

2006-03-07 Tema obsahu Benda Lukas
Nemate nekdo hlubsi zkusenosti s PMD? Kdyz ho spustim nad svojima 
zdrojakama, nektere to uspesne skontroluje, ale nad nekterymi vyhodi 
hlasku typu: cz\apnetis\servlet\Login.java Error while parsing 
apnetis\servlet\Login.java


Programuju v Java 5. Dokonce to zhavaruje na parsovani jednoduchych 
vyctovych typu.


Co s tim?


Re: Numericke operace na typem Double

2006-02-28 Tema obsahu Benda Lukas
Jo je to MsSQL, takze uz s tim pracuju pomoci BigDecimal, resp. sem si 
vytvoril objek Monay, ktery s tim pracuje pomoci Longu s presnosti na 
halere.

Benda Lukas napsal(a):
Bohuzel ve chvili kdyz musite pracovat s DB jineho programu ktery ma 
castky ukladany jako float(8), tak na vyber nemate :((
Jaka je to databaze? Nejaka proprietarni, pro kterou neni JDBC driver? 
Protoze pokud pro ni je JDBC driver, tak muzete zcela jiste pouzit 
BigDecimal.


Tom





Numericke operace na typem Double

2006-02-23 Tema obsahu Benda Lukas

Nemate tuseni proc se v JAVA napriklad 39.9 / 10 = 3.9898?

Potrebuji cislo zaokrouhlit napr. na dve desetina mista. Puziji 
jednocuchy vzorec  Math.round(cislo * 100) / 100 bohuzel konkretne u 
cisla zmineneho vise to nejak nevychazi. Nevite co s tim?


S pozdravem Lukas Benda


Re: Numericke operace na typem Double

2006-02-23 Tema obsahu Benda Lukas
At se to zda absurdi kupodivu v naprosto bezne praci potrebuju presnost. 
Kdyz mam delat testy musim mit jistotu ze 39.9 / 10 = 39.9 *0.1 = 
39.9/100. Kdyz mi kazda tato operace vrati jiny vysledek pak je neco 
sakra spatne. Takze typ double pro mne vlastne efektvine skocil.


Dekuji za ten typ na BigDecimal.

Nemate tuseni proc se v JAVA napriklad 39.9 / 10 = 3.9898?

Potrebuji cislo zaokrouhlit napr. na dve desetina mista. Puziji 
jednocuchy vzorec  Math.round(cislo * 100) / 100 bohuzel konkretne u 
cisla zmineneho vise to nejak nevychazi. Nevite co s tim?



Záleží na tom, k jakému účelu potřebuješ číslo zaokrouhlit.

Je-li to jenom proto, aby se hezky vytisklo, je výhodnější se o zaokrouhlování 
nestarat
a přenechat starost o vzhled čísla formátovacímu objektu. Použiješ-li místo 

System.out.println( 39.9 +  /  + 10 +  =  + 39.9/10 ); 

formátovaný výstup 


System.out.printf( %.1f / %d = %.2f,  39.9,  10,  39.9/10 );

budeš mít po starostech - vytiskne se

39.9 / 10 = 3.99

Metoda printf ale funguje až od Javy 5.0 - u starších verzí musíš použít trošku
komplikovanější metody formátování.

Potřebuješ_li z nějakého důvodu s takto zaokrouhlaným číslem opravdu počítat, 
musíš si
ujasnit, jestli ti opravdu ta chyba někde na 14. desetinném místě vadí - pak 
použij
např. BigDecimal, nebo jestli tě to jenom obtěžuje při debugování - pak se na to
vykašli.

  




Re: Numericke operace na typem Double

2006-02-23 Tema obsahu Benda Lukas
Stojim za tim, ze se chyba na trinactem miste v 99% pripadu ignorovat 
neda. Napr. pri formatovani pomoci sprintf jak je uvedeno vyse.


Konkretne cislo 39.9 / 10 se podle JAVA rovna 3.988 takze ve 
vyslednem formatovani se zobrazi 3.99 (teda pokdu zaokrouhluje, to jsem 
nezkousel jinak by to vyslo 3.98)
Kdyz ale provedete 39.9 * 0.1 tak podle JAVA dostanete 4.007 
takze ve vyslednem formatovani ziskate 4.00


Hle ona chyba se z trinacte pozice prenesla hned na treti. Je vysoka 
pravdepodobnost ze se vyskytnou pripady kdy se takova chyba prenese 
dokonce na pozici druhou. Ale i v tomhle pripade se dostavate na 
presnoust vypoctu kolem 1% coz je dost tristni.


Btw. nevim ktere jazyky pocitate za vetsinu. Delphi a C# temito neduhy 
netrpi.

Mno, takhle se chová většina programovacích jazyků. Protože zpracování čísel
je přesné či nepřesné podle toho, zda zvolíte čísla s pevnou či pohyblivou
čárkou. Totéž platí pro databáze; typy MONEY či CURRENCY jsou na tom jinak
než FLOAT, SINGLE nebo DOUBLE (v různých DB se jmenují různě, princip však
souhlasí).

IMHO asi nebudete v praxi potřebovat dělit, zpětně násobit a porovnávat.
Jinak, porovnávat dvě float čísla se Vám dříve či později vymstí v jakémkoli
výpočtu při práci na jakémkoli programu.

Ta nepřesná čísla jsou tam právě proto, že chyba na třináctém místě za
desetinnou čárkou se většinou ignorovat DÁ.

Petr Zajíc

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Behalf Of Benda Lukas
Sent: Thursday, February 23, 2006 10:14 PM
To: Java
Subject: Re: Numericke operace na typem Double


At se to zda absurdi kupodivu v naprosto bezne praci potrebuju presnost.
Kdyz mam delat testy musim mit jistotu ze 39.9 / 10 = 39.9 *0.1 =
39.9/100. Kdyz mi kazda tato operace vrati jiny vysledek pak je neco
sakra spatne. Takze typ double pro mne vlastne efektvine skocil.


  




Re: Numericke operace na typem Double

2006-02-23 Tema obsahu Benda Lukas
Vsechny ulohy kde je treba pocitat s penezi na dve desetine mista (takze 
kdyz vlastne kazde ucetnictvi) potrebuje, jak jsem psal v predchozim 
prispevku
39.9 / 10 a 39.9 * 0.1 pri formatovani vystupu  %.2f da jednou vysledek 
3.99 a podruhe 4 a hned mate halerove manko.


Tady se rekne halir, tezko rict jestli nenajdeme kombinaci cisel kdy to 
da deset haleru.  Pak uz zacnou problem a velke problemy.
At se to zda absurdi kupodivu v naprosto bezne praci 
potrebuju presnost. 
Kdyz mam delat testy musim mit jistotu ze 39.9 / 10 = 39.9 *0.1 = 
39.9/100. Kdyz mi kazda tato operace vrati jiny vysledek pak je neco 
sakra spatne. Takze typ double pro mne vlastne efektvine skocil.



Sakra špatně je program, který testuje dva double na rovnost. Všechny slušné 
kurzy
programování jasné varují, že přímé porovnání dvou hodnot double je zakázaná 
operace.
Lze-li předem odhadnout řádovou velikost provonávaných hodnot, musí se dvě 
hodnoty d1 a
d2 typu double porovnávat buď

abs(d2 - d1)  eps

kde eps je nějaké předem zvolené číslo, které je výrazně menžší než požadovaná 
přensot
(už to tu někdo psal).

Není-li možno předem odhadnout řádovou velikost (tj. jestli to budou tisíce nebo
tisíciny), je to obtížnější - pak se musí porovnávat např.

abs(1 - d1/d2)  eps

Při běžné práci opravdu není potřeba větší přesnost, než oněch doublem 
zaručených 15
cifer. S takovou přesností se totiž v běžné praxi nic neměří, takže není důvod 
na ní
trvat. Taková zaručená přesnost je většinou potřeba pouze ve finančních 
výpočtech, kde
potřebujete počítat miliardami a bilióny s přesností na halíře. Druhou oblastí 
jsou pak
naumerická řešení všelijakých rozsáhlých rovnic popisujících tuhé systémy, 
protože tam
je občas potřeba odečíst dvě skoro stejná čísla a nemám-li dostatečný počet 
platných
cifer, jsem v ...

Opravdu existují úlohy, kde je třeba místo double používat např. BigDecimal, 
ale není
jich tak moc. I při výpočtech s pomocí BigDecimal vznikají zaokrouhlovací chyby 
a hlavně
jsou tyto výpočty mnohem, ale opravdu mnohem pomalejší. Ne vždy jsme přitom za 
ono
částečné zvýšení přesnosti ochotni touto pomalostí platit.


  




Re: Numericke operace na typem Double

2006-02-23 Tema obsahu Benda Lukas
Bohuzel ve chvili kdyz musite pracovat s DB jineho programu ktery ma 
castky ukladany jako float(8), tak na vyber nemate :((

Dobry den,
C# je na tom s delenim desetinych cisel jako java, c++ a nejspis
vsechny ostatni jazyky tedy tez nedava presny vysledek pokud
nepouzijete specialni objekt pro presne pocitani.
Chran nas panbuh od programu ktere pocitaji ze 1 je koruna a ne haler.

S pozdravem
Pavel Savara

Viz google predpokladam ze to tak je nejsem c# expert:
  

Does C# have the same problem as C++ with code like this?



  

if (GetDouble1() == GetDouble2())
{
}



  

In C++, due to the IEEE storage format, it is possible to have 2 doubles
that are essentially the same value but not quite, so the above code will
not do what you expect.  Boost has some extensions to STL to solve this
problem.



  

Does C# have similar problems?  If so, what is the right C# way of


handling
  

this issue?



Yes, floating-point (not just double precision) numbers/arithmethic has this
problem in virtually every language because of the representation that you
have noted.  One way of handling this is to calculate the precision of the
machine that your code is running on and then do a comparison to see if the
difference is less than or equal to the precision of the machine.  If it is,
then the values are identical as far as you can tell.

Note that C# has the Decimal type that can help is many situations.

Regards,
Randy

On 2/23/06, Benda Lukas [EMAIL PROTECTED] wrote:
  

Vsechny ulohy kde je treba pocitat s penezi na dve desetine mista (takze
kdyz vlastne kazde ucetnictvi) potrebuje, jak jsem psal v predchozim
prispevku
39.9 / 10 a 39.9 * 0.1 pri formatovani vystupu  %.2f da jednou vysledek
3.99 a podruhe 4 a hned mate halerove manko.

Tady se rekne halir, tezko rict jestli nenajdeme kombinaci cisel kdy to
da deset haleru.  Pak uz zacnou problem a velke problemy.


At se to zda absurdi kupodivu v naprosto bezne praci
potrebuju presnost.
Kdyz mam delat testy musim mit jistotu ze 39.9 / 10 = 39.9 *0.1 =
39.9/100. Kdyz mi kazda tato operace vrati jiny vysledek pak je neco
sakra spatne. Takze typ double pro mne vlastne efektvine skocil.



Sakra špatně je program, který testuje dva double na rovnost. Všechny slušné 
kurzy
programování jasné varují, že přímé porovnání dvou hodnot double je zakázaná 
operace.
Lze-li předem odhadnout řádovou velikost provonávaných hodnot, musí se dvě 
hodnoty d1 a
d2 typu double porovnávat buď

abs(d2 - d1)  eps

kde eps je nějaké předem zvolené číslo, které je výrazně menžší než požadovaná 
přensot
(už to tu někdo psal).

Není-li možno předem odhadnout řádovou velikost (tj. jestli to budou tisíce nebo
tisíciny), je to obtížnější - pak se musí porovnávat např.

abs(1 - d1/d2)  eps

Při běžné práci opravdu není potřeba větší přesnost, než oněch doublem 
zaručených 15
cifer. S takovou přesností se totiž v běžné praxi nic neměří, takže není důvod 
na ní
trvat. Taková zaručená přesnost je většinou potřeba pouze ve finančních 
výpočtech, kde
potřebujete počítat miliardami a bilióny s přesností na halíře. Druhou oblastí 
jsou pak
naumerická řešení všelijakých rozsáhlých rovnic popisujících tuhé systémy, 
protože tam
je občas potřeba odečíst dvě skoro stejná čísla a nemám-li dostatečný počet 
platných
cifer, jsem v ...

Opravdu existují úlohy, kde je třeba místo double používat např. BigDecimal, 
ale není
jich tak moc. I při výpočtech s pomocí BigDecimal vznikají zaokrouhlovací chyby 
a hlavně
jsou tyto výpočty mnohem, ale opravdu mnohem pomalejší. Ne vždy jsme přitom za 
ono
částečné zvýšení přesnosti ochotni touto pomalostí platit.



  





Hibernate, subclass, single table per classe hierarchy

2006-02-11 Tema obsahu Benda Lukas
Snazim se vytvorit hierarchii objektu kde v jedne tabulce jsou data pro 
vice objektu a objekty se lisi discriminatorem.

Pr.:
@Entity
@Table(name=user_skupinaKlic)
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name=type, 
discriminatorType=DiscriminatorType.STRING)

@DiscriminatorValue()
public class SkupinaKlicImpl implements SkupinaKlic, Serializable {

   @Id @GeneratedValue(strategy=GenerationType.AUTO)
   private Long id;
   @ManyToOne(targetEntity=UserImpl.class)
   @PrimaryKeyJoinColumn
   private User user;
   @Column
   private Integer value;

 Set, get metody a metoda equals (pouziva instanceOf) a hash
}

Z ni dedi dve tridy
@Entity(name=Skupina)
@DiscriminatorValue(0)
public class SkupinaSkupinaKlic extends SkupinaKlicImpl {}
a
@Entity(name=Klic)
@DiscriminatorValue(1)
public class KlicSkupinaKlic extends SkupinaKlicImpl {}

1) Pri tomto mapovani se vyskytlo hned nekolik potizi. Prvni je v 
pripade, kdyz DiscriminatorColumn nastavym na typ INTEGER, prohlasi 
hibernate ze neprevede hodnotu. Zmenil jsem tedy sloupecek v db na 
varchar a nastavil kolonku jako STRING. Kazdopadne bych ale radsi mel 
discriminator typu integer.


2) Pri pokusu o nacteni nektere z podtrid skonci hibernate s vyjimkou:
org.springframework.orm.hibernate3.HibernateObjectRetrievalFailureException: 
Object with id: 4 was not of the specified subclass: 
cz.apnetis.pohoda.settings.SkupinaSkupinaKlic (loaded object was of 
wrong class); nested exception is org.hibernate.WrongClassException: 
Object with id: 4 was not of the specified subclass: 
cz.apnetis.pohoda.settings.SkupinaSkupinaKlic (loaded object was of 
wrong class)
   org.hibernate.WrongClassException: Object with id: 4 was not of the 
specified subclass: cz.apnetis.pohoda.settings.SkupinaSkupinaKlic 
(loaded object was of wrong class)

at org.hibernate.loader.Loader.instanceAlreadyLoaded(Loader.java:1235)

Zaznam s id 4 je prvnim zaznamem v tabulce a schodou okolnosti ma type 
nastavene na 0, tudiz by mel byt typu SkupinaSkupinaKlic (ale je to 
celkem jedno i kdyz ho zmenim na 1, tak na nem hibernate skonci).


Zkousel jsem z equals vyhodit instanceOf a nepomohlo to
Objekty jsou nacitany jako lazy=false

Uz mam touhle chybou zkazenou celou sobotu a porad jsem se nehnul z mista.



JSTL core:out default

2006-02-08 Tema obsahu Benda Lukas
JSTL core tag core umonzuje nastavit defaultni hodnotu, ktera je vypsana 
v pripade, ze je hodnota value rovna null. navic taky umoznuje hodotu 
vypisovanou escapovat citlive HTML znaky nepr. , ,  atp. Otazka 
nastava jak vypsat napr. tvrdou mezeru (nbsp;) nebo FOTN 
color=redHodnota neni zadana/FONT a pritom u dat z databaze 
zachovat escapovani citlivych zanku.


Takze jak default neescapovat, ale v ostatnich pripadech escapovat? 
(pokud to nejak nastavit nejde tak se mi to default jevi pomerne dost 
bezzube)JSTL core:out default