Re: Casove razitko s Postsignum

2012-05-03 Tema obsahu Martin Kuba

Dne 3.5.2012 15:24, Dusan Zatkovsky napsal(a):

 Security.addProvider(new BouncyCastleProvider());

 // tu mam certifikaty postsignum k overeniu ssl cert path
 System.setProperty(javax.net.ssl.trustStore, caJksFile);
 System.setProperty(javax.net.ssl.trustStorePassword, caJksPasswd);


Možná to bude tím, že se SecurityProvider  inicializuje ještě
před tím, než jsou nastaveny ty systémové properties k trust store.
Zkuste prohodit pořadí.

Když to nepomůže, zkuste nastavit -Djavax.net.debug=all tak jak radí na
http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/ReadDebug.html
a třeba se něco objeví.

Makub
--
~~
CERIT-SC   Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--


Re: tomcat a linky

2012-04-03 Tema obsahu Martin Kuba

A nebo místo Springu použít Stripes, ty mají anotaci @UrlBinding a použít

@UrlBinding(/recenzie)
public class Home implements ActionBean {


Makub

Dne 3.4.2012 11:12, Oto Buchta napsal(a):

A nebo to resit jak to resi spousta lidi - predradit Apache pred
Tomcat. A mod_rewrite.

Dne 3. dubna 2012 0:16 Petr Frantapetr.fra...@gmail.com  napsal(a):

1. Můžeš si vytvořit adresář (pokud ho nemáš) recenzie a do něj
nakopírovat stejný soubor index.jsp.
2. Použít nějaký redirect filter, například
http://code.google.com/p/urlrewritefilter/


Petr

2012/4/2 Ivan Polakivan.po...@f4s.sk


vo web.xml mam:

welcome-file-list
welcome-fileindex.jsp/welcome-file
/welcome-file-list

a tento subor je OK, ked zadam:

http://localhost:8080/moja_aplikacia

natiahne sa index.jsp, obsahuje uvodnu stranku. a na nej mam odkaz na
http://localhost:8080/moja_aplikacia/recenzie

ako mam nadefinovat tomcat aby to bol alias na

http://localhost:8080/moja_aplikacia/recenzie/home.action


Ivan

On 2 April 2012 23:09, Petr Frantapetr.fra...@gmail.com  wrote:

Doplň si do souboru web.xml:
 welcome-file-list
 welcome-fileindex.jsp/welcome-file
 /welcome-file-list


V rootu aplikace si vytvoř soubor index.jsp, který bude obsahovat
následující řádky pro redirect:
%@ page contentType=text/html;charset=utf-8 pageEncoding=utf-8%

%@ taglib uri=http://java.sun.com/jsp/jstl/core; prefix=c %

c:redirect url=home.action/


Petr


2012/4/2 Ivan Polakivan.po...@f4s.sk


zdravim konferenciu,

mam takuto otazku na konfiguraciu tomcat-u 6.x. mam aplikaciu a ked
zadam linku http://localhost:8080/moja_aplikacia/recenzie

ako mam nadefinovat tomcat aby to bol alias na

http://localhost:8080/moja_aplikacia/recenzie/home.action

este dodam, ze vo web.xml mam nasledovne:

servlet
servlet-nametest_servlet/servlet-name


  
servlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-class
init-param
param-namecontextConfigLocation/param-name
param-value
/WEB-INF/test-servlet.xml
 /param-value
/init-param
load-on-startup1/load-on-startup
/servlet

servlet-mapping
servlet-nametest_servlet/servlet-name
url-pattern*.action/url-pattern
/servlet-mapping

teda vsetky poziadavky *.action idu na DispatcherServlet.

dakujem

Ivan













--
~~
CERIT-SC   Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--


Re: Reference na Class s Generic - CacheString,String.class

2011-09-19 Tema obsahu Martin Kuba

Zdravím,

to je typický problém s generiky v Javě, ta jsou implementována pomocí erasure,
takže typ CacheString,String za běhu neexistuje, existuje jenom soubore 
Cache.class
pro raw typy.

Ale dá se to obejít, takhle:

static interface CacheSS extends CacheString,String { }

public static void main(String[] args) {
CacheString, String cache = ComponentFactory.getComponent(CacheSS.class, 
TEST_CACHE);
}

Trik je v tom, že interface CacheSS není generická, ale parametrizovaná třída,
takže má svůj soubor CacheSS.class s bytekódem.

Makub

Dne 19.9.2011 13:20, Petr Novak napsal(a):

Zdravím konferenci,

narazil jsem na problém s generic a nevím, jestli je problém jen v mé hlavě, 
nebo v javě a google mi zatím moc nepomohl, protože ani nevím jak se řádně 
zeptat.

Problém je s následujícím kouskem kódu:

ClassCacheString,String cls = Cache.class; // nelze zkompilovat, eclipse mi nabízí, abych 
ClassCacheString,String převedl jen na ClassCache, ale to pak má warning, že používám 
RAW typy, což
ani nechci :).

Myslel jsem, že půjde zapsat
ClassCacheString,String cls = CacheString,String.class; //ale toto nelze 
kompilovat už vůbec, řve to, že Cache není definována a že ty závorky tam nemají být a kdo ví co 
ještě.

Definice rozhraní cache je jednoduchá: public interface CacheK, V{}

Původní problém je trochu jiný, ale důsledek stejný, ve skutečnosti potřebuji:
CacheString, String cache = ComponentFactory.getComponent(Cache.class, 
CACHE_NAME); //toto ale opět hází warning

definice té metody je:
public static T T getComponent(final ClassT compClass, final String 
compName);

čekal jsem možnost použití
CacheString, String cache = 
UESComponentFactory.getComponent(CacheString,String.class, TEST_CACHE); //ale jak 
plyne z výše uvedeného, toto nelze kompilovat



Jediné řešení, které funguje compilačně a bez warningu je:
@SuppressWarnings(unchecked)
CacheString, String cache = UESComponentFactory.getComponent(Cache.class, 
TEST_CACHE);

ale to se mi nelíbí.


Nemáte někdo nějaký nápad, jak v javě zapsat správně CacheString,String.class ? 
Klidně to můžete zkusit pro MapString,String dopadne to stejně.

Díky za veškeré podněty

Petr




--
~~
CERIT-SC   Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Generátor PDFek

2011-09-01 Tema obsahu Martin Kuba

Dne 1.9.2011 11:04, Oto Buchta napsal(a):

Zdravím.
Potřeboval bych do webové aplikace napsat generátor PDFek.
Díval jsem se na iText a ten mi přijde jako ideální varianta pro tisk faktur a 
evidenčích karet.
Máte s ním nějaké zkušenosti? Nebo používáte něco jiného, kde lze snadno 
nadefinovat
různé tabulky bez nutností hrát si se swingem nebo dokonce s Java2D?


Ahoj,

úspěšně používám pdflatex, stačí ho spustit jako externí proces
a pak prohlížeč přesměrovat na vygenerovaný soubor.
Asi to není správně enterprise komplikované řešení, ale funguje :-)

Makub
--
~~
CERIT-SC   Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: OT: hardware

2011-08-12 Tema obsahu Martin Kuba

Dne 12.8.2011 12:04, Tomáš Záluský napsal(a):


Dobrý den,

stojím před upgradem domácího počítače po 11 letech a nový počítač bych chtěl 
sestavit i s ohledem na možnou občasnou práci doma. Prací rozumím programování 
v Javě (především server-side aplikace nad relační databází a swingové GUI). 
Rád bych se zeptal na Vaše zkušenosti s výběrem komponent.

Chápu, že můj dotaz se netýká jazyka Java, ale zajímají mne zkušenosti lidí, 
kteří Javu používají. Na webu je spousta recenzí z hlediska hraní her nebo 
stříhání videa, ale programátorských pohledů (např. vytížení jader u 
vícevláknových programů) jsem moc nenašel.

Moje sestava je prozatím zvolena takto:
http://www.czechcomputer.cz/view_user_list.jsp?id=K1105022142589174894220450091751
procesor: AMD Phenom II X6 1100T Black Edition
motherboard: GIGABYTE GA-890GPA-UD3H - AMD 890GX s integrovanou grafikou
paměť: Kingston HyperX 8GB (2x4GB) DDR3 1333 (KHX1333C7AD3K2/8G)
systémový disk: SSD - OCZ Vertex 3 - 120GB
druhý disk: Samsung SpinPoint F3 - 1TB
skříň: CoolerMaster Elite 370
chladič: GELID Solution Tranquillo - revize 2
zdroj: Seasonic SS-500ET-F3 500W, OEM
DVD: Samsung SH-S223C, černá, Bulk
operační systém: Microsoft Windows 7 Home Premium CZ 64bit OEM
cena: cca 21000, nechci přelézt 25000.

Trvám jen na tom, aby to byl počítač (ne notebook) a OS Windows. Jinak 
preferuji AMD, Gigabyte a Kingston, ale nebráním se ani jiným značkám. Rovnou 
bych měl napsat, že na AMD Bulldozery nemohu čekat, potřebuji to ještě do konce 
prázdnin.

Pokud znáte nějaký odkaz na recenze z pohledu programátora anebo napíšete, že 
je jedno, co si vyberu, anebo se podělíte o své zkušenosti s udržováním obrazu 
o světě hardwaru, budu to taky považovat za užitečnou odpověď.


Myslím, že po 11 letech bude každý počítač připadat rychlý jako blesk :-)
Řešil jsem koncem minulého roku stejný problém. Sestavu jsem koupil podobnou,
jenom místo AMD s Intelem, za 27 tisíc. Zpětně bych řekl, že hlavní příspěvek k 
rychlosti
byl SSD disk, mám OCZ Vertex 2, a přijde mi ďábelský rychlý. Jednak
má přenosovou rychlost někde kolem 170MB/s, a hlavně, protože nevystavuje 
mechanické hlavičky,
velice rychle čte mnoho souborů rozházených po disku, takže start Windows a 
updaty v Linuxu
jsou téměř mžikové. Od doby, co ho mám, mi mechanické disky připadají 
nesnesitelně pomalé :-)

Makub
--
~~
CERIT-SC   Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: smerovanie javy 7,8

2011-07-15 Tema obsahu Martin Kuba

Dne 14.7.2011 11:08, Robert Novotny napsal(a):

Ruinujuce a JAVA JE MRTVA hlasky nie su na mieste, isteze dalsie jazyky 
(Groovy, Scala) mozno ju nahradia z hladiska syntaxe, ale dolezite je, ze stare 
kniznice sa nestratia,


Řekl bych, že diskuse o to, jestli je lepší Java nebo 
Ruby/Python/Groovy/Scala/atd.
jsou trochu mimo mísu. Spíš jsou různé jazyky vhodné pro různé účely.

Přirovnal bych to třeba k vozidlům. Nemá smysl se hádat, jestli je lepší
závodní auto, osobní auto nebo traktor.

Závodní auto je nejlepší v rychlosti, ale náklad v něm neodvezete,
traktor odtáhne těžký náklad, ale je pomalý, a osobní auto je něco mezi tím,
ani velmi rychlé, ani velmi silné, ale vyvážené pro běžnou osobu, proto se tak 
jmenuje.

Můj dojem je, že skriptovací jazyky s dynamickým typováním jsou
vhodné pro rychlé napsání programu, ale mají mizernou udržovatelnost (write 
once, read never).
A Java naopak.

Takže pro Jirku Hradila, který chrlí malé websajty na zakázku, je Ruby
jistě požehnáním. Ale pro někoho jiného, kdo se dlouhodobě stará
o jeden rozsáhlý systém, je Java mnohem vhodnějším jazykem.

Tož tak, odcházím na dovolenou, případného flamewar se nezúčastním  :-)

Makub
--
~~
CERIT-SC   Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: moduly v aplikaci

2011-06-29 Tema obsahu Martin Kuba

The Open Services Gateway initiative framework is a module system and service 
platform
for the Java programming language that implements a complete and dynamic component 
model

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

http://www.springsource.org/osgi


Dne 29.6.2011 06:49, Tomas Baca napsal(a):

liferay ?


Liferay je portál, modularizuje uživatelské rozhraní, na aplikační úrovni
leží aplikace spíš vedle sebe, než že by byly moduly něčeho většího.

Ještě mne napadlo OpenCMS, to má v sobě podporu modulů, a funguje v něm
přesně to požadované - když je potřeba anketa, doinstaluje se modul ankety,
viz seznam modulů:

http://opencms-wiki.org/Available_Modules



2011/3/1 Jiří Nápravníkjiri.naprav...@gmail.com:

Zdravím,
potřebuji udělat aplikaci, která bude co možná nejvíce modulární.
Uvedu například CMS, bude třeba dodat anketa, tak se udělá modul
ankety, který povolím a v adminu/frontendu se objeví tahle
funkcionalita.

A druhá věc, chtěl bych aby aplikace byla na jednom místě a běželo
více instancí, přičemž každá instance by měla různé povolené moduly
například přes kofigurační soubory.

Můžete mi doporučit, co nastudovat?


Makub
--
~~
CERIT-SC   Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Aplikacia na vyplnanie instancii XML schemy

2011-06-21 Tema obsahu Martin Kuba

Dne 21.6.2011 13:25, Robert Novotny napsal(a):

Zdravim,
v ramci jedneho projektu som sa stretol s ulohou, ked treba zbuchat aplikaciu 
na vyplnanie instancii XML schemy. Na vstupe je lubovolna (ale rozumne 
obmedzena) XML schema, pre ktoru sa zobrazi
formular s polickami, ktore pouzivatel vyplni/vyklika. Ide prakticky o XML data 
binding. Na toto by sa bezne pouzil JAXB, ale ten zrejme nedokaze za behu 
vygenerovat triedy a na ne namapovat hodnoty.

Jedna ocividna moznost je preliezt XSD ako klasicky XML dokument a v servlete 
vygenerovat lepenim stringov formular, ktory pouzivatel vyplni a po jeho 
odoslani sa hodnoty vyplnene namapuju na vhodny
objekt.

Nemate niekto skusenosti s lepsim napadom?

Robert Novotny


Onehdy tu někdo řešil stejný problém. Obecně to nejde, protože XML schema
může popisovat nekonečně mnoho dokumentů, ale při určitém omezení to jde,
a je k tomu knihovna XSOM http://xsom.java.net/. Viz vlákno

http://www.mail-archive.com/konference@java.cz/msg12102.html

Makub
--
~~
CERIT-SC   Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Swign HTML

2011-06-16 Tema obsahu Martin Kuba

Přítel Google mi našel tohle:

http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/Swing-Tutorial-JLabel.html

kde se píše:

* Label string must begin with html, not HTML.
* Embedded images are not supported in the HTML.
* JLabel fonts are ignored if HTML is used
* You must use P, not BR to force a line break.
* Other HTML support is spotty. Be sure to test each HTML construct you use. 
Letting the user enter HTML text at run-time is asking for trouble.


Nic podrobnějšího jsem nenašel :-(

Makub

Dne 16.6.2011 09:03, Libor Jelinek napsal(a):

Promiň, nepřečetl jsem si pozorně otázku.

No jestli existuje jasný seznam komponent to nevím, ale podle mojí
zkušenosti prakticky všechny. I když sada HTML značek je omezená a CSS
jsem v nich nikdy ještě nezkoušel použít.

Dá se s tím docela pěkně kouzlit. Např. já tím v JTable zalamuju
příliš dlouhý nadpis sloupce apod.

Libor


Dne 16. června 2011 8:59 Libor Jelinekljeli...@virtage.com  napsal(a):

Ahoj!
je třeba aby hodnota začínalahtml  a končila/html

jLabel1.setValue(htmlBěžnýbtučný/b  testbr/nový řádek/html);

Libor

Dne 16. června 2011 8:34 Ondra Medekxmed...@gmail.com  napsal(a):

Ahoj,

lze nekde zjistit, jake konkretne veci z HTML a CSS podporuje Swing
(jre6 windows) pro renderovani napr. jLabel?

diky

--
Ondra Medek






--
~~
CERIT-SC   Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Vytvoreni instance XML objektu z XSD definice

2011-04-20 Tema obsahu Martin Kuba

Dne 20.4.2011 10:19, Martin Beránek napsal(a):

eclipse takovou funkcionalitu ve svem editoru poskytuje. pravým tlačítkem na soubor 
*.xsd = generate = xml file


Cvičně jsem si napsal kód, který z XSD poslaného tazatelem vyrobí
pomocí JDOMu požadovanou zprávu. Stálo mně to asi dvě hodiny učení se XSOMu :-)

package cz.makub.xsom;
import com.sun.xml.xsom.*;
import com.sun.xml.xsom.parser.XSOMParser;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
import org.xml.sax.SAXException;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class XSOMaJDOM {

public static void main(String[] args) throws IOException, SAXException {
XSOMParser parser = new XSOMParser();
parser.parse(new File(message.xsd));
XSSchema schema = parser.getResult().getSchema(1);
XSComplexType complexType = 
schema.getComplexTypes().values().iterator().next();
System.out.println( + complexType.getName() + : complex);
Element root = new Element(complexType.getName());
for (XSParticle p1 : 
complexType.getContentType().asParticle().getTerm().asModelGroup().getChildren())
 {
XSElementDecl el1 = p1.getTerm().asElementDecl();
System.out.println( + el1.getName() + : complex);
Element l2Elem = new Element(el1.getName());
root.addContent(l2Elem);
for(XSParticle p2 : 
el1.getType().asComplexType().getContentType().asParticle().getTerm().asModelGroup().getChildren())
 {
XSElementDecl el2 = p2.getTerm().asElementDecl();
XSSimpleType simpleType = el2.getType().asSimpleType();
System.out.println( + el2.getName()+  : 
+simpleType.getName());
Element l3Elem = new Element(el2.getName());
l2Elem.addContent(l3Elem);
l3Elem.setText(nejaka hodnota);
}
}
//output JDOM
Document doc = new Document(root);
BufferedOutputStream bos = new BufferedOutputStream(new 
FileOutputStream(vystup.xml));
XMLOutputter out = new XMLOutputter(Format.getPrettyFormat());
out.output(doc, bos);
bos.close();
}
}

Tímto to považuji za vyřešené. Kdyby to XSD mohlo mít jiný počet úrovní než 
tři, tak
by stačilo použít Visitor Pattern, tedy

XSSchema schema = parser.getResult().getSchema(1);
schema.visit(new MyVisitor());

kde MyVisitor je

public class MyVisitor implements XSVisitor {
@Override
public void schema(XSSchema schema) {
for (Map.EntryString, XSComplexType e : 
schema.getComplexTypes().entrySet()) {
e.getValue().visit(this);
}
}
@Override
public void complexType(XSComplexType xsComplexType) {
XSContentType xsContentType = xsComplexType.getContentType();
XSParticle particle = xsContentType.asParticle();
if (particle != null) {
XSTerm term = particle.getTerm();
if (term.isModelGroup()) {
for (XSParticle p : term.asModelGroup().getChildren()) {
XSTerm pterm = p.getTerm();
if (pterm.isElementDecl()) { //xs:element inside 
complex type
pterm.visit(this);
}
}
}
}
}
//atd..
}

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Vytvoreni instance XML objektu z XSD definice

2011-04-19 Tema obsahu Martin Kuba

Dne 19.4.2011 14:11, Vladislav Krejčiřík napsal(a):

ok, mozna jsem to spatne popsal. Zkusim znovu. Ja nechci nic validovat, protoze 
nemam vlastne ani co. XSD mi definuje strukturu nejake message. Ja bych 
potreboval takovou messge umet vytvorit,
vygenerovat z XSD definice. Myslel jsem ze bych ziskal nejakou objektovou 
reprezentaci te XML message kde bych nastrkal hodnoty co potrebuju. Potom bych uz jen XML 
message poslal do fronty.

Nevim jestli existuje nejaka knihovna, ktera to umoznuje. Nebo budu muset rucne 
takovou XML vystavet..


To je právě nepochopení situace. XSD nedefinuje strukturu nějaké message,
XSD definuje všechny možné message, a těch bývá obvykle nekonečně mnoho,
kromě podivného případu, kdy by všechny použité datové typy byly výčtové.

Takže vygenerovat z XSD konkrétní message nedává smysl.

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--


Re: Vytvoreni instance XML objektu z XSD definice

2011-04-19 Tema obsahu Martin Kuba

Dne 19.4.2011 14:18, Martin Kuba napsal(a):

Dne 19.4.2011 14:11, Vladislav Krejčiřík napsal(a):

ok, mozna jsem to spatne popsal. Zkusim znovu. Ja nechci nic validovat, protoze 
nemam vlastne ani co. XSD mi definuje strukturu nejake message. Ja bych 
potreboval takovou messge umet vytvorit,
vygenerovat z XSD definice. Myslel jsem ze bych ziskal nejakou objektovou 
reprezentaci te XML message kde bych nastrkal hodnoty co potrebuju. Potom bych uz jen XML 
message poslal do fronty.

Nevim jestli existuje nejaka knihovna, ktera to umoznuje. Nebo budu muset rucne 
takovou XML vystavet..


To je právě nepochopení situace. XSD nedefinuje strukturu nějaké message,
XSD definuje všechny možné message, a těch bývá obvykle nekonečně mnoho,
kromě podivného případu, kdy by všechny použité datové typy byly výčtové.

Takže vygenerovat z XSD konkrétní message nedává smysl.


Tedy abych byl přesný - dá se pomocí třeba JAXB z XSD vygenerovat
sada tříd reprezentující jednotlivé elementy, a potom se dá programově
z instancí těch vygenerovaných tříd sestavit v paměti strom objektů
a ten zeserializovat do XML. To jde. Příslušný příkaz je

xjc soubor.xsd

Ale nejde z obecného XSD rovnou vygenerovat ten strom objektů v paměti,
protože to XSD může třeba definovat varianty, a nejde říci, která
z variant by se měla vybrat.


Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Vytvoreni instance XML objektu z XSD definice

2011-04-19 Tema obsahu Martin Kuba

Dne 19.4.2011 15:27, Vladislav Krejčiřík napsal(a):

Aplikace funguje nasledovne:

Pri startu si aplikace natahne vsechny XSD ze zadaneho adresare. Pak potrebuju 
ke kazde XSD definici udelat validni XML message do ni vlozit potrebne hodnoty 
a poslat na zadanou queue.


A jak do té XML message vloží ty potřebné hodnoty, když předem neví, jak
to XSD vypadá ? Tj. neví kam kterou hodnotu vložit.

Vygoogloval jsem XSOM, možná by se to dalo použít:
http://xsom.java.net/userguide.html

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Java fór

2011-04-12 Tema obsahu Martin Kuba

Dne 12.4.2011 09:31, Tomas Studva napsal(a):

Tak, tak. Urcite aby ma povodny programator co najviac potrapil :). Je to tak 
ako pisete, for(;;) je while(true) a break vyskoci iba zo switchu. break look, 
skoci na navestie. Som zvedavy ake perly ma
este cakaju. Inak v dnesnej dobe pisat parser ak sa jedna o nieco zlozitejsie 
je vhodne pomocou lexem a gramatiky definovanej v nejakom jazyku.


Zas tak exotické to není. Break s návěštím se používá typicky v případě,
že už není nutné dál iterovat, protože jsme našli, co jsme hledali, tj. např:

int[][][] pole3D = new int[5][7][9];
pole3D[3][6][8] = 42;

TRI_SMYCKY:
for (int i = 0; i  pole3D.length; i++) {
for (int j = 0; j  pole3D[i].length; j++) {
for (int k = 0; k  pole3D[i][j].length; k++) {
if(pole3D[i][j][k]==42) {
System.out.println(Našli jsme základní odpověď života, 
vesmíru a vůbec všeho !);
break TRI_SMYCKY;
}
}
}
}

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: read() z IO - předávání referencí? To snad ne..

2011-04-05 Tema obsahu Martin Kuba

Dne 5.4.2011 08:41, Libor Jelinek napsal(a):

Ovšem do jaké podoby přepsat Zamestnanec.getNarozeni(), aby teda nevracela 
referenci na privátní objekt Date, ale kopii. Tedy odolné proti 
zam.getNarozeni().setTime(0L);, aby i po tomto příkazu
zůstalo datum narození v nezměné?

První co mě napadá je přepsat getNarozeni() na toto:

 public Date getNarozeni() {
 Zamestnanec kopieZamestnance = new Zamestnanec(narozeni);
 return kopieZamestnance.getNarozeni();
 }

Ovšem s tím nepochodím a skončím s ošklivou chybou:

Exception in thread main java.lang.StackOverflowError
 at Zamestnanec.init(ZmenaBezSetteru.java:16)
 at Zamestnanec.getNarozeni(ZmenaBezSetteru.java:21)
(a tento řádek vypsán ještě asi 30x :-))

Proč skončí tato varianta s vytvořením nového objektu na sebe sama s chybou 
StackOverflowError? Když zkusím druhé co mě napadá na toto:


Protože ta metoda volá sama sebe v nekonečné rekurzi, takže přeteče zásobník.

I kdyby se přepsala, tak to stejně nepomůže, protože objekt typu Date
je stále tentýž i v nové kopii Zamestnanec, neboť se jí předá v konstruktoru
na něj ukazatel a ten se uloží i v nové kopii.



 public Date getNarozeni() {
 return (Date) narozeni.clone();
 }

Pak již hlavní program vypíše 2x po sobě stejné datum.


Buď tak, a nebo

  public Date getNarozeni() {
  return new Date(narozeni.getTime());
  }

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: read() z IO - předávání referencí? To snad ne..

2011-04-04 Tema obsahu Martin Kuba

Krátké, výstižné, jednoznačné:

Java is Pass-by-Value, Dammit!
http://javadude.com/articles/passbyvalue.htm

Dne 4.4.2011 14:18, Ondřej Fafejta napsal(a):

ale objekty se předávájí odkazem (resp. adresa pointeru ...)


Ne, objekty se předávají *hodnotou* ukazatele.

Odkaz (angl. reference) a ukazatel (angl. pointer) nejsou to stejné.

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Porovnání řetězců

2011-03-04 Tema obsahu Martin Kuba

Dne 3.3.2011 17:34, Tomas Pitner napsal(a):

Tuším, že to bude jistě něco s ukazateli (promiňte mi ten výraz, vím v
Javě nejsou).


Jen pro upřesnění, ukazatele v Javě jsou, jsou to všechny objektové
proměnné. To co v Javě není je ukazatelová aritmetika. Tj. v Céčku jde
udělat

struct bla *p;
struct bla a[10];

p = a[3]; //p ukazuje na a[3]
p = p + 1; //p ukazuje na a[4]
p++;   //p ukazuje na a[5]

kdežto v Javě lze do ukazatele jedině přiřadit jiný ukazatel nebo null.

Při předávání parametrů do metod se předávají všechny parametry hodnotou,
primitivní i objektové, takže při použití

Bla bla = new Bla(1);
nejakaMetoda(bla);
System.out.println(bla);
...

public void nejakaMetoda(Bla par) {
  par = new Bla(2);
  return;
}

se vytiskne obsah instance inicializované s Bla(1), jelikož se
sice do parametru par předala kopie ukazatele na Bla(1) a pak byla v těle
metody přepsána hodnotou ukazatele na Bla(2), ale na původní proměnnou bla
to nemá vliv.

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Porovnání řetězců

2011-03-04 Tema obsahu Martin Kuba

Dne 4.3.2011 13:56, michal.niko...@elanor.cz napsal(a):

Jen bych doplnil, takovou libustku, ktera ukazuje, ze i Java ma
ukazatelovou aritmetiku.

http://www.java.cz/article/ukazatelovaaritmetika

Ale je to opravdu jen takova zajimavost.


To není ukazatelová aritmetika. To jenom ukazuje,
že pomocí nativních metod se dá přistupovat k paměti přímo,
ale to je tím, že ty nativní metody jsou napsané v Céčku.

Definice té metody Unsafe.putChar() totiž vypadá takto:

public native void putChar(long address, char x);


Stejně tak můžu pomocí nativní metody přistupovat
k nějaké speciální vlastnosti nějakého operačního systému, třeba
sdílené paměti mezi procesy nebo k nastavování práv na unixovém
filesystému, ale tím se to nestává součástí Javy jakožto jazyka.

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: moduly v aplikaci

2011-02-28 Tema obsahu Martin Kuba

Dne 1.3.2011 01:10, Jiří Nápravník napsal(a):

Zdravím,
potřebuji udělat aplikaci, která bude co možná nejvíce modulární.
Uvedu například CMS, bude třeba dodat anketa, tak se udělá modul
ankety, který povolím a v adminu/frontendu se objeví tahle
funkcionalita.

A druhá věc, chtěl bych aby aplikace byla na jednom místě a běželo
více instancí, přičemž každá instance by měla různé povolené moduly
například přes kofigurační soubory.

Můžete mi doporučit, co nastudovat?


Nemám s tím osobní zkušenosti, ale pro modularitu je určené OSGi:
http://en.wikipedia.org/wiki/OSGi

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Classloader v tomcatu

2011-02-24 Tema obsahu Martin Kuba

Dne 24.2.2011 13:31, Tomas Bezdek napsal(a):

ahoj,
v jedne sve tride mam volani EPaymentService.class.getResource(.),
ktere mi pri debugovani v eclipsech vraci spravnou cestu ke tride
(file:/...). kdyz ale toto volani probehne v aplikaci spustene na
tomcatu, vraci null. nevite nekdo cim by to mohlo byt zpusobene?


Nejspíš tím, že . je aktuální adresář, a v Tomcatu ta třída
není v souboru s příponou .class, ale zabalená bud v souboru .jar,
nebo dokonce uvnitř nerozbaleného .war, záleží na lokální instalaci.
Takže ta třída žádný adresář nemá.

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Classloader v tomcatu

2011-02-24 Tema obsahu Martin Kuba

Dne 24.2.2011 14:21, Tomas Bezdek napsal(a):

presne tak, potrebuju ziskat aktualni adresar, protoze vedle .class mi
lezi wsdl ktere potrebuju predhodit kontruktoru javax.xml.ws.Service.
zkousel jsem s teckou i bez, nefunguje ani jedno reseni. prijde mi divne
ze pri debugovani v eclipse se cesta nacte bez problemu


V tom případě by bylo lepší použít 
EPaymentService.class.getResource(neco.wsdl)

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: OpenJDK vs. Sun JDK

2011-02-10 Tema obsahu Martin Kuba

Dne 10.2.2011 12:36, Libor Jelinek napsal(a):

Dobrý den!
Koukám, že když se nezeptám, tak tu je mrtvo :-)

V rámci svého návratu k Javě bych měl další dotaz. V době kdy jsem naposledy 
programoval OpenJDK nebylo a Sun jen uvažoval o uvolnění.

Jaký je vlastně tedy rozdíl mezi Sun a OpenJDK? Dočetl jsem se jen toho, že 
vývoj stejně dělá z 95% zaměstnanci Sunu (resp. Oraclu).

Např. v Ubuntu 10.10+ se rozhodli, že standardně nabízenou verzí bude ta 
OpenJDK.


Je to jiná implementace JVM i tříd. Zatím jsem vypozoroval,
že v OpenJDK nefungují správně některé applety, třeba
můj oblíbený SciMark http://math.nist.gov/scimark2/run.html
má v OpenJDK nepoužitelné okno.

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Off Topic - Oracle/Java/Linux zkratka ala LAMP?

2011-01-26 Tema obsahu Martin Kuba

Dne 25.1.2011 18:01, Jiří Hradil napsal(a):

Existuji samozrejme jine platformy, ktere vam vrati radost do zivota.
Treba http://rubyonrails.org/ :).


A zkusili jste to někdo použít k reálnému provozu ?

Četl jsem kdesi, že RoR server je třeba mnohokrát denně přestartovat
kvůli stabilitě. Taky jsem osobně zkoušel pro RoR napsat reálnou aplikaci,
ale strašně mi chyběla Javovská podpora internacionalizace, ResourceBundle,
podpora utf-8 a unicode.

A další věc je výkon. Samotná Céčková implementace Ruby je dost pomalá,
i v porovnání třeba s Pythonem nebo Perlem. Vypsal jsem bakalářskou práci
na porovnání výkonu RoR nad Ruby a JRuby (implementace Ruby nad JVM),
a vyšlo to tak, že JRuby je pro RoR aplikace ještě pomalejší než normální Ruby.
Hodně ztrácí zejména v I/O operacích, což se dá ještě zvládnout
použitím IBM JVM místo SUN JVM, ale naprosto tragické je to
v rychlosti přístupu k databázi.

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Off Topic - Oracle/Java/Linux zkratka ala LAMP?

2011-01-26 Tema obsahu Martin Kuba

Dne 26.1.2011 11:20, Jiří Hradil napsal(a):

Bezime na tom nekolik mesicu v poctu uzivatelu v radu stovek/tisicu a
naprosto v pohode. Pocet modulu (subsystemu) v radu desitek.

i18n, utf-8, skalovani, rychlost - vse OK. Diky share nothing proste
pridavam servery dle potreby do clusteru a je mi jedno, jestli je to o
par procent pomalejsi nez Java. Failover resi balancer. I kdyz je
reseni stabilni, tak pripadny vypadek jednoho ze serveru me netrapi,
uzivatele jsou v dalsim requestu presmerovani na jiny server. Restart
serveru kvuli nestabilite nepamatuju.

Vyvoj je 10x rychlejsi, takze tyhle drobnosti neresim, protoze koupit
novy server je mnohem levnejsi, nez se patlat s Javou. Tohle je gral
vyvoje. Nikoli rychlost jazyka, ale rychlost vyvoje. Kdyz se ale divam


To zní velmi zajímavě. Ale napadá mne jedna námitka - rychlost
vývoje není všechno, důležitá je i udržovatelnost. Moje zkušenost
s Ruby mi říká, že se v něm sice mnohem rychleji píše než v Javě,
ale zato mnohem hůře čte. Gosling  se kdesi vyjádřil ve smyslu -
zjistili jsme experimenty, že se kód mnohem častěji čte než píše.
Proto je Java záměrně navržena tak, aby se dobře četla, spíš než dobře psala.

Přece jenom statické typování dohromady s kontrolami v Intellij IDEA
mi umožňují psát téměř bezchybný kód, kdežto dynamické typování
v Ruby mi nedovoluje ani zjistit co můžu očekávat v parametrech
nějaké metody.

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Off Topic - Oracle/Java/Linux zkratka ala LAMP?

2011-01-26 Tema obsahu Martin Kuba

Dne 26.1.2011 12:52, Jiří Hradil napsal(a):

Zkuste to a dejte vedet. Fakt to za to stoji. A verte mi, byl jsem
velky obhajce Javy :).


Zkusil jsem obojí, Javu i Ruby, a můj dojem z Ruby skutečně byl,
že je to mnohem silnější jazyk, ve kterém se dá elegantněji
a proto stručněji vyjádřit. Kdesi jsem četl, že člověk dovede
posoudit jenom slabší jazyky, než je ten nejsilnější, který zrovna umí,
a asi to tak bude. Se znalostí Ruby vidím, že Java má slabší
vyjadřovací schopnost, předtím bych to nedokázal posoudit.
(Na tom stejném místě psali, že nejsilnější je LISP, ten neumím, nemohu 
posoudit :-))


Ale, ALE ! Napsal jsem si v Ruby jistou poměrně komplikovanou aplikaci,
která už nějaké dva roky funguje. Jenže se do ní teď neodvažuji dělat zásahy,
protože se mi v tom kódu teď, když jsem ho dlouho neviděl, špatně orientuje.

Neodvažuji se dělat refaktoring, protože IDEA mi s tím nepomůže, jelikož
kvůli duck typing neví, kde se co používá.

Takže můj soukromý závěr je, že Ruby je fantastické na psaní krátkých
kousků kódu, protože se v něm píše stručněji, a tím je i méně
místa na dělání chyb. Ale je naprosto hrozné na definování
rozhraní něčeho, to v něm v podstatě nejde. Když budu mít
parametr metody, který je seznam hešovacích tabulek ve kterých je klíčem
nějaká třída, tak to nikdy nezjistím.

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Virtualizace vyvojoveho prostredi

2010-12-23 Tema obsahu Martin Kuba

Dne 22.12.2010 16:43, Vítězslav Košina napsal(a):

Dobry den,

to co mi popisujete znam a myslim, ze neni to co uplne hledam. Zkusim to
popsat detailneji.

Mam farmu serveru cca. 5 dohromady 10 dual procaku a dohromady cca. 256 GB RAM
a k tomu 10 TB pole. Na tom mam virtualizaci VMware ESX server.

Co potrebuju je:
- aby moji vyvojari nevyvijeli na desktopu, ale pekne na serveru tj. v
podstate virtualizovany desktop
- bylo mozne v ramci jednotlivych session vyuzivat plne vykonu serveru
- existovala moznost si vzit image i na svuj notas a pokracovat v praci offline
- cele to bezelo pres https (kvuli moznym problemum s pripojenim z ruznych
mist na teto planete)
- aby jednotlive session mohli uzivatele prebirat. Napr. tester najde chybu, a
svuj desktop preda vyvojari v tom stavu, v jakem se ta chyba vyskytla.
- vytvorit klon prostredi a zalohovani byla trivka
- prostredi mohla byt jak linux tak i win7


Tohle přece VMware umí, ne ? Přes prohlížeč (https) se připojím na server,
vyberu si virtuální stroj a kliknutím aktivuji plugin v prohlížeči,
který se připojí na server a zobrazí mi desktop virtuálního stroje. Podle 
potřeby se můžu
připojovat a odpojovat. Jenom si nejsem jistý, jestli se dá
vzít virtuální stroj ze serveru off-line pryč, normálně
to nepoužívám.

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--


Re: reload truststore za behu

2010-12-14 Tema obsahu Martin Kuba

Dne 14.12.2010 10:37, Martin Kuba napsal(a):

http://download.oracle.com/javase/6/docs/technotes/guides//security/jsse/JSSERefGuide.html#CustomizingStores

Nicméně o implementaci reloadující certifikáty CA za běhu jsem tam nic nenašel,
takže stejně nezbude než si ji napsat.


Našel jsem tam následující radu
http://download.oracle.com/javase/6/docs/technotes/guides//security/jsse/JSSERefGuide.html#OwnX509TM
cituji:

 Updating the keyStore Dynamically

 You can enhance MyX509TrustManager to handle dynamic keystore updates. When a 
checkClientTrusted
 or checkServerTrusted test fails and does not establish a trusted certificate 
chain, you can add
 the required trusted certificate to the keystore. You need to create a new 
pkixTrustManager from
 the TrustManagerFactory initialized with the updated keystore. When you 
establish a new connection
 (using the previously initialized SSLContext), the newly added certificate 
will be called to make
 the trust decisions.

Takže asi tak.

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--


Re: reload truststore za behu

2010-12-13 Tema obsahu Martin Kuba

Dne 14.12.2010 07:57, Tomas Vojtech napsal(a):

Ahoj,

v některých aplikacích chceme mít možnost reloadu truststoru za běhu aplikace 
bez restartu tomcata. Podle toho co jsem našel by to mělo jít implementací 
vlastního X509TrustManager. Zatím jsem ale
nepřišel na to jak JVM říct, aby ho používala.

Máte s tím někdo zkušenosti? Budu rád za každý tip.


Ahoj,

používaný TrustManager není záležitostí JVM, ale konkrétní třídy.

Třeba pro *klientská* HTTPS spojení zajišťovaná třídou HttpsURLConnection
se dá nastavit vlastní TrustManager pomocí

TrustManager[] trustManagers = new TrustManager[] { myTrustManager };
SSLContext sctx = SSLContext.getInstance(TLS);
sctx.init(null, trustManagers, null);
SSLSocketFactory sf = sctx.getSocketFactory();
HttpsURLConnection.setDefaultSSLSocketFactory(sf);


Takže pokud je potřeba nastavit vlastní TrustManager Tomcatu, je třeba
zjistit, jak Tomcatímu Connectoru podstrčit vlastní implementaci
SSLSocketFactory. Z toho co jsem vygoogloval to vypadá,
že v server.xml se dá v tagu Connector nastavit


Connector ... SSLImplementation=cz.moje.SSLimplementace

aspoň podle 
http://anil-identity.blogspot.com/2007/10/tip-9-change-ssl-implementation-in.html

Podivné ale je, že v referenční dokumentaci pro Tomcat 6.0 na
http://tomcat.apache.org/tomcat-6.0-doc/config/http.html#SSL_Support
tenhle atribut popsán není, je jen v dokumentaci pro Tomcat 3.0 na
http://tomcat.apache.org/tomcat-3.3-doc/tomcat-ssl-howto.html

Popravdě řečeno, nikdy jsem SSL přímo v Tomcatu nepoužíval, vždycky jsem
před Tomcat postavil Apache s mod_ssl a pomocí mod_jk přeposílal
requesty Tomcatu. (Používám mod_jk místo mod_proxy_ajp proto,
že mod_jk umí poslat DN certifikátu vytvořené OpenSSL, kdežto mod_proxy_ajp to 
neumí.)
A mod_ssl si seznam CA kontroluje, aspoň si to myslím, při každém SSL handshake.

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--


Re: Spring security 3.0.x + LDAP pres SSL za pouziti certifikatu

2010-11-29 Tema obsahu Martin Kuba

Dne 29.11.2010 13:11, el.wond...@centrum.cz napsal(a):


V konfiguraku nic takoveho neni . Pouze nejaky DefaultSpringContextSource...


Tak právě ten bych zkusil vyměnit za ten můj MyContextSource. Oba jsou potomci 
AbstractContextSource
http://static.springsource.org/spring-ldap/docs/1.3.x/apidocs/org/springframework/ldap/core/support/AbstractContextSource.html
takže by měli být zaměnitelní.

Pokud by to přesto nešlo, tak bych jako druhou možnost zkusil ten můj 
MyContextSource udělat
jako potomka DefaultSpringContextSource místo AbstractContextSource,
ve skutečnosti jde jenom o to předefinovat metodu getDirContextInstance() tak,
aby podstrčila jako parametr vlastní implementaci SSLSocketFactory.

Makub



Od: Martin Kubama...@ics.muni.cz
Komu: Javakonference@java.cz
Datum: 26.11.2010 17:50
Předmět: Re: Spring security 3.0.x + LDAP pres SSL za pouziti certifikatu

Dne 26.11.2010 08:41, Martin Kuba napsal(a):

package cz.makub;
import org.springframework.ldap.core.support.AbstractContextSource;

public class MyContextSource extends AbstractContextSource {


--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--


Re: Spring security 3.0.x + LDAP pres SSL za pouziti certifikatu

2010-11-26 Tema obsahu Martin Kuba

Dne 26.11.2010 08:41, Martin Kuba napsal(a):

Spring Security jsem nepoužíval, jenom Spring LDAP, ale podle toho popisu 
soudím,
že je třeba si vytvořit vlastní implementaci AbstractContextSource, viz
http://static.springsource.org/spring-ldap/docs/1.3.x/apidocs/index.html?org/springframework/ldap/core/support/AbstractContextSource.html
která se k připojí k LDAP serveru a použije přitom SSL certifikát.

V něm je třeba se správně autentizovat, popis je na
http://download.oracle.com/javase/jndi/tutorial/ldap/security/ssl.html
v části Using Custom Sockets. Je třeba si vytvořit SslSocketFactory, která
dokáže předložit klientský SSL certifikát. To se dělá zhruba takto:


Tak jsem si to zkusil, a je to tak. V konfiguraci Springu se musí
org.springframework.ldap.core.support.LdapContextSource
nahradit za vlastní implementaci, která musí vypadat nějak takto:

package cz.makub;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.ldap.core.support.AbstractContextSource;

import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.DirContext;
import javax.naming.ldap.InitialLdapContext;
import javax.net.SocketFactory;
import javax.net.ssl.*;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import java.net.URI;
import java.net.URISyntaxException;
import java.security.KeyStore;
import java.util.Hashtable;

/**
 * Alternative to LdapContextSource allowing client SSL certificates.
 *
 * @author Martin Kuba ma...@ics.muni.cz
 * @version $Id:$
 * @see org.springframework.ldap.core.support.LdapContextSource
 */
public class MyContextSource extends AbstractContextSource {

final static Logger log = LoggerFactory.getLogger(MyContextSource.class);

private String keyStoreFile;
private String keyStorePassword;

public void setKeyStoreFile(String keyStoreFile) {
this.keyStoreFile = keyStoreFile;
}

public void setKeyStorePassword(String keyStorePassword) {
this.keyStorePassword = keyStorePassword;
}

@SuppressWarnings({unchecked})
@Override
protected DirContext getDirContextInstance(Hashtable env) throws 
NamingException {
String url = (String) env.get(Context.PROVIDER_URL);
try {
if (new URI(url).getScheme().equalsIgnoreCase(ldaps)) {
env.put(java.naming.ldap.factory.socket, 
cz.makub.MyContextSource$MySSLFactory);
MySSLFactory.setManagers(getKeyManagers(), null);
}
} catch (URISyntaxException e) {
log.error(LDAP URL  + url +  is wrong, e);
}
return new InitialLdapContext(env, null);
}

private KeyManager[] getKeyManagers() {
return getKeyManagers(loadKeyStoreFromFile(keyStoreFile, 
keyStorePassword), keyStorePassword);
}

private static KeyManager[] getKeyManagers(KeyStore keyStore, String 
storePassword) {
try {
KeyManagerFactory keyManagerFactory = 
KeyManagerFactory.getInstance(SunX509);
keyManagerFactory.init(keyStore, storePassword != null ? 
storePassword.toCharArray() : null);
return keyManagerFactory.getKeyManagers();
} catch (Exception ex) {
throw new RuntimeException(ex.getMessage(), ex);
}
}

private static KeyStore loadKeyStoreFromFile(String ksfile, String 
password) {
String kstype;
if (ksfile.endsWith(.jks)) {
kstype = JKS;
} else if (ksfile.endsWith(.p12)) {
kstype = PKCS12;
} else {
throw new RuntimeException(keystore file name  + ksfile +  must end 
with .ks (JKS) or .p12 (PKCS12));
}
try {
KeyStore store = KeyStore.getInstance(kstype);
store.load(new FileInputStream(ksfile), password != null ? 
password.toCharArray() : null);
return store;
} catch (Exception ex) {
throw new RuntimeException(ex.getMessage(), ex);
}
}

/**
 * SSL SocketFactory enabling client certificates and customs server checks.
 */
@SuppressWarnings({UnusedDeclaration})
public static class MySSLFactory extends SocketFactory {

final static MySSLFactory thisFactory = new MySSLFactory();

static SSLSocketFactory factory = (SSLSocketFactory) 
SSLSocketFactory.getDefault();

public static void setManagers(KeyManager[] keyManagers, TrustManager[] 
trustManagers) {
try {
SSLContext sctx = SSLContext.getInstance(TLS);
sctx.init(keyManagers, trustManagers, null);
factory = sctx.getSocketFactory();
} catch (Exception ex) {
ex.printStackTrace();
}
}

public static SocketFactory getDefault() {
return thisFactory;
}

@Override
public Socket createSocket() throws IOException {
return factory.createSocket

Re: generika a '? extends Xxx'

2010-11-25 Tema obsahu Martin Kuba

Dne 25.11.2010 08:26, Martin Beranek napsal(a):

Tak si trošku odpovím sám. Je třeba použít T? super B, ale neřeší to
můj problém...

private class A {}

private class B extends A {}

private abstract class DaoAT extends A  {
 void doSomething(T param) {}
}

private class DaoB extends DaoAB  {}

a pak potrebuji

DaoA? extends A  dao = new DaoB();
dao.doSomething(new B()); // nejde přeložit


Hm, generika dovedou být dost neintuitivní. Musel jsem si znovu přečíst
http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf
abych to pochopil. Vysvětlení je na straně 7 nahoře, v jednodušší
formě se to dá demonstrovat na tomhle příkladu:

Set? extends Object s = new HashSetString();
s.add(ZZZ); //nejde přeložit

Jde o to, že ? extends Object může být cokoliv, třeba Float, nemusí to být
String, takže kompilátor nemůže dovolit do takové množiny String přidat.
Musí se to napsat právě jako

Set? super String s = new HashSetString();
s.add(ZZZ); //v pořádku

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--


Re: generika a '? extends Xxx'

2010-11-25 Tema obsahu Martin Kuba

Jenom poznámku:

Dne 25.11.2010 10:00, Kamil Podlesak napsal(a):


Ještě intuitivnější vysvětlení je s kolekcemi:

List? extends A l;
if (externifunkce()) {
l = new ArrayListB();
} else {
l = new ArrayListC();


Tohle taky přes kompilátor neprojde:


   l.add(new C());
}
//a toto nesmi byt povoleno, protoze l muze byt  ListC !
l.add( new B() );


Musí se to udělat takto:

List? extends A l;

if (externifunkce()) {
l = new ArrayListB();
} else {
ArrayListC lc = new ArrayListC();
lc.add(new C());
l = lc;
}

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--


Re: generika a '? extends Xxx'

2010-11-25 Tema obsahu Martin Kuba

Ještě si s tím hraju, a zjistil jsem, že do

 List? extends B l;

nejde přidat vůbec nic, a to dokonce ani

 l.add( l.get(0) );

Je to sice logické, ale naprosto protiintuitivní.

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--


Re: Spring security 3.0.x + LDAP pres SSL za pouziti certifikatu

2010-11-25 Tema obsahu Martin Kuba

Dne 25.11.2010 17:58, el.wond...@centrum.cz napsal(a):


Ahoj Javisti. Potreboval bych poradit s problemem, kdy je potreba se 
autentizovat/autorizovat LDAPem pres SSL za pouziti certifikatu pomoci Spring 
security. Od zakaznika jsem dostal certifikaty, ktere mam pouzit. Vubec 
netusim, jak a hlavne kam se ty certifikaty musi nacpat(JDK, Tomcat,...??), aby 
se pri autentizaci ty certifikaty pouzili. Muzete mi nekdo poradit? Popripade 
hodit nejaky link s prikladem.


Předpokládám, že se tím myslí klientské SSL certifikáty pro přístup k LDAP 
serveru,
vůči kterému se ověří username a heslo uživatele, tj. to co je popsáno na
http://static.springsource.org/spring-security/site/docs/3.0.x/reference/ldap.html#ldap-context-source
a ne třeba klientský SSL certifikát v uživatelově browseru, to by byla úplně 
jiná pohádka.

Spring Security jsem nepoužíval, jenom Spring LDAP, ale podle toho popisu 
soudím,
že je třeba si vytvořit vlastní implementaci AbstractContextSource, viz
http://static.springsource.org/spring-ldap/docs/1.3.x/apidocs/index.html?org/springframework/ldap/core/support/AbstractContextSource.html
která se k připojí k LDAP serveru a použije přitom SSL certifikát.

V něm je třeba se správně autentizovat, popis je na
http://download.oracle.com/javase/jndi/tutorial/ldap/security/ssl.html
v části Using Custom Sockets. Je třeba si vytvořit SslSocketFactory, která
dokáže předložit klientský SSL certifikát. To se dělá zhruba takto:

SSLContext sc = SSLContext.getInstance(SSL);
TrustManager[] myTrustManager = new TrustManager[]{
new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}

public void checkClientTrusted(X509Certificate[] certs, 
String authType) {
//není potřeba u klienta
}

public void checkServerTrusted(X509Certificate[] certs, 
String authType) {
//jen pokud chci ověřovat server
}
}
};
KeyManager[] myKeyManager = new KeyManager[] {
new X509KeyManager() {
public String[] getClientAliases(String s, Principal[] 
principals) {
}

public String chooseClientAlias(String[] strings, 
Principal[] principals, Socket socket) {
}

public String[] getServerAliases(String s, Principal[] 
principals) {
}

public String chooseServerAlias(String s, Principal[] 
principals, Socket socket) {
}

public X509Certificate[] getCertificateChain(String s) {
}

public PrivateKey getPrivateKey(String s) {
}
}
};
sc.init(myKeyManager, myTrustManager, new java.security.SecureRandom());
SSLSocketFactory sslSocketFactory = sc.getSocketFactory();

samozřejmě je třeba naimplementovat metody pro TrustManager a KeyManager tak,
aby se ověřil saerver a předložil klientský SSL certifikát.

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--


Re: priepustnost Wsclienta

2010-11-07 Tema obsahu Martin Kuba

Dne 5.11.2010 22:47, tester tester napsal(a):

Zdravim,

s WS zacinam tak by som sa chcel spytat jednu vec ohladne priepustnosti ws 
clienta generovaneho z ws pomocou NB (jax-ws style).
Vie mi niekto povedat ako je vnutorne klient pripraveny na viacnasobne 
konkurentne volanie klienta ?


Odpověď neznám, ale docela by mne zajímalo, jestli to někdo poslední dobou 
měřil.
Někdy před šesti lety jsem měřil rychlost Axis 1, a byla velmi špatná,
zejména v porovnání s gSOAP implementovaným v Céčku, na stejném železe
Axis dokázala 198 volání za sekundu se SUNovským JVM, 239 s JRockitem,
a gSOAP dokázal 1540 volání za sekundu.

Dělal jsem si tehdy poznámky na
http://www.ics.muni.cz/~makub/java/speed.html#ws
Bohužel se v SUNím JRE od verze 1.5.0 změnila implementace SAX parseru
a srovnatelné výsledky od té doby nelze získat.

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--


Re: Plugin do Eclipse pre podporu vytvorenia lokalizacie priamo z kodu

2010-11-03 Tema obsahu Martin Kuba

Dne 3.11.2010 00:28, Roman Zakutny napsal(a):

Zdravim,

vedel by mi niekto z Vas poradit, ci existuje plugin do Eclipse (pripadne ako 
inak to sami implementujete), ktory poskytuje zhruba nasledujuce moznosti:
1) v zdrojaku napisem string Testovaci preklad
2) napr. stiskom praveho tlacitka si z kontextoveho menu vyberiem nieco ako 
Localize
3) v okne zadam vlastny lokalizacny kluc, napr. my.key
4a) po potvrdeni mi automaticky vygeneruje konstantu do predom znamej triedy - public 
static final String MY_KEY = my.key
4b) do predom znameho *.properties suboru vlozi kluc my.key=Testovaci preklad 
(pripadne poskytne vytvorenie dalsich jazykovych mutacii)

Tymto postupom by som si chcel usetrit vlastne generovanie konstant a predist tak 
opacnemu pristupu:
1) vytvor lokalizacny kluc v *.properties subore
2) pregeneruj triedu konstant na zaklade tohto *.properties suboru
3) vloz konstantu do kodu

V Eclipse uz existuje sice moznost Enternalize String, ale to sa mi moc 
nepaci, pretoze to sice konstantu vygeneruje, ale natvrdo tam dosadi tu moju jedinu 
lokalizovanu hlasku. Tym som prisiel o
moznost dynamickej lokalizacie podla aktualne uzivatelom nastaveneho jazyka.

Alebo to riesite nejak inteligentejsie?


V Eclipse nevím, ale v Intellij IDEA tohle lze udělat na dva kroky pomocí

 Refactor - Internationalize (Alt-R,Alt-Z)
   které vytvoří klíč v *.properties souboru, přiřadí mu hodnotu z řetězce a 
nahradí
   řetězec za resourceBundle.getString(klic)

 Refactor - Introduce constant (CTRL+Alt+C)
   které klic nahradi nově vytvořenou konstantou

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--


Re: content-type a JSP stranka

2010-09-07 Tema obsahu Martin Kuba
Ahoj,

kódování je třeba uvést na dvou místech, aby to správně fungovalo,
a je dobré ho dát ještě na třetím, a to takto:

%@ page contentType=text/html; charset=utf-8 pageEncoding=windows-1250%
html
 head
meta http-equiv=Content-Type content=text/html; charset=utf-8

To první místo je v direktivě @page v atributu contentType, a určuje, v jakém
kódování bude stránka poslána prohlížeči, tj. HTTP hlavičku.
Pokud není uvedeno, bere se iso-8859-1.

Druhé místo je zase v direktivě @page, ale v atributu pageEncoding, a určuje, v 
jakém
kódování je soubor JSP načten z disku. Musí odpovídat tomu, jak je nastaven 
editor, ve kterém
to píšete. Default je určen nastavením operačního systému, přesněji řečeno 
systémovou property
file.encoding, a na českých Windows to bude windows-1250.

Třetí místo je v tom meta tagu. Pokud je nastaveno první místo (tj. HTTP 
hlavička),
tohle nastavení má smysl jen pokud si uživatel uloží kopii stránky na disk, při 
kterém
se HTTP hlavičky nezachovávají. Pokud HTTP hlavička kodování nespecifikuje,
vezme ho prohlížeč z meta tagu. Specifikace v HTTP hlavičce má přednost před 
specifikací v meta tagu.

No a pokud není kodování nastaveno ani v hlavičce ani v meta tagu, prohlížeč má 
nastaveno
nějaké default kodování, ve Firefoxu je to v menu Úpravy - Předvolby - Obsah - 
Písma a barvy -
Rozšířené - Znaková sada, případně se to dá rychle ručně vynutit v Zobrazení - 
Znaková sada.

Takže stručná opověď je, že je třeba, aby pageEncoding bylo správně nastaveno, 
aby
znaky byly vůbec správně načteny, a pak je třeba nastavit správně HTTP hlavičku
pomocí contentType, aby byly znaky správně překodovány na výstupu a prohlížeč 
věděl jak.
Pak není nutné na straně prohlížeče vůbec nic dělat.

Makub

ivo_m napsal(a):
 Já mám trochu podobný problém. Jednoduchá stránka xx.html:
 
 !DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN
 html
 head
 meta http-equiv=Content-Type content=text/html; charset=utf-8
   titlePokus 2/title
 /head
 
 body
 ěščřžýáíéúůťň
 ĚŠČŘŽÝÁÍÉÚŮŤŇ
 /body
 /html
 
 se mi ve Firefoxu (v. 3.6.8) vždy zobrazí v kódování windows-1250 a musím ji
 pokaždé ručně přepnout na utf-8, aby byla čitelná. V IE8 to funguje správně. 
 Jak
 mám přemluvit Firefox, aby to zobrazoval správně?
 WinXP, Apache 2.2 (localhost)
 
 Díky ivo


-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Matematicka knihovna

2010-09-01 Tema obsahu Martin Kuba
Ondrej Nekola napsal(a):
 Tady bych mel trochu strach z pohledu bezpecnosti. Pocitam, ze vstup
 pod kontrolou nemate, a uzivatel ma slusnou sanci vam do nej vlozit
 neco oskiveho,

To se dá vyřešit SecurityManagerem. Dělal jsem webovou aplikaci,
kde si uživatelé mohli zadávat libovolně složité podmínky,
za jazyk pro psaní podmínek jsem zvolil JRuby. To je z bezpečnostního hlediska
stejné jako JavaScript, oba umožňují volat libovolné Java třídy.

Řešení je spustit JVM s přepínačem -security a v policy souboru
vyjmenovat, co uživatel může udělat. Defaultně může ještě míň než
applet, žádné System.exit(), práce se soubory nebo komunikace po síti,

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Matematicka knihovna

2010-09-01 Tema obsahu Martin Kuba
Ondrej Nekola napsal(a):
 Ja kdysi neco takoveho take pouzival pro management konzoli, ale na
 evaluaci vyrazu mi to prijde jako nemistne riziko. Evil user se muze
 potencialne ze sandboxu prokopat, nebo alespon spustit nejakou
 procesor vytezujici cinnost. 

To je pravda, prosté while(true){} by na DOS útok stačilo.
Ale dalo by se proti tomu bojovat kontrolou, že spuštěný
skript do určité doby skončí.

Nicméně souhlasím, že jednoúčelová knihovna je bezpečnější.

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Rozdily v Jave na Windows a Linuxu

2010-08-10 Tema obsahu Martin Kuba
To je zajímavé, na Linuxu to v kódu je - ten řádek 22 s checkcast:

static void process(java.util.List);
  Code:
   0:   aload_0
   1:   invokeinterface #2,  1; //InterfaceMethod 
java/util/List.iterator:()Ljava/util/Iterator;
   6:   astore_1
   7:   aload_1
   8:   invokeinterface #3,  1; //InterfaceMethod java/util/Iterator.hasNext:()Z
   13:  ifeq34
   16:  aload_1
   17:  invokeinterface #4,  1; //InterfaceMethod 
java/util/Iterator.next:()Ljava/lang/Object;
   22:  checkcast   #5; //class cz/makub/TypovaZahada$Employee
   25:  astore_2
   26:  aload_2
   27:  checkcast   #6; //class java/util/Map
   30:  astore_3
   31:  goto7
   34:  return

Takže to není vlastnost JVM, ale překladače.

Makub

Zdeněk Troníček napsal(a):
 V byte kodu pretypovani neni. Metoda
 
protected static void process(ListEmployee list) {
 for (Object o : list) {
 System.out.println(o);
 }
 }
 
 se prelozi takto:
 
 protected static void process(java.util.List);
   Code:
0:   aload_0
1:   invokeinterface #2,  1; //InterfaceMethod
 java/util/List.iterator:()Ljava/util/Iterator;
6:   astore_1
7:   aload_1
8:   invokeinterface #3,  1; //InterfaceMethod
 java/util/Iterator.hasNext:()Z
13:  ifeq33
16:  aload_1
17:  invokeinterface #4,  1; //InterfaceMethod
 java/util/Iterator.next:()Ljava/lang/Object;
22:  astore_2
23:  getstatic   #5; //Field
 java/lang/System.out:Ljava/io/PrintStream;
26:  aload_2
27:  invokevirtual   #6; //Method
 java/io/PrintStream.println:(Ljava/lang/Object;)V
30:  goto7
33:  return


-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Rozdily v Jave na Windows a Linuxu

2010-08-10 Tema obsahu Martin Kuba
Martin Kuba napsal(a):
 To je zajímavé, na Linuxu to v kódu je - ten řádek 22 s checkcast:

Tak jsem si přečetl specifikaci na 
http://java.sun.com/docs/books/jls/third_edition/html/statements.html#259170
a myslím, že na Linuxu je to špatně. Specifikace totiž říká jasně, že

for (Object object : list) {

}

se má rozepsat jako

for(IteratorEmployee i = list.iterator();i.hasNext();) {
Object object = i.next();
}

ale když obě varianty přeložím a podívám se na vygenerovaný bytekód,
tak se liší práve o ten checkcast. Takže překladač rozepíše takto:

for(IteratorEmployee i = list.iterator();i.hasNext();) {
Object object = (Employee) i.next();
}

což neodpovídá specifikaci.

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--


Re: Porovnani objektu

2010-06-29 Tema obsahu Martin Kuba
Tomáš Záluský napsal(a):
 identityHashCode() vraci pro ruzne objekty ruzne hodnoty, ale pouze v
 danem okamziku. 
 
 To právě popírá program, který jsem linkoval v minulém mailu:

To je tím, že hashCode() vrací int, tedy může mít jenom 2^32 různých hodnot.
A už třeba jenom různých instancí typu java.lang.Long může být 2^64,
takže se musí najít dvě různé se stejným hashem.

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Porovnani objektu

2010-06-29 Tema obsahu Martin Kuba
michal.niko...@elanor.cz napsal(a):
 Diky moc za uvedeny priklad. Vystupem u me je (Eclipse):
 
 1580473: java.lang.obj...@42e816 - java.lang.obj...@42e816
 1580473: (false) 4384790 - 4384790
 
 pricemz je pro me prekvapujici ten (false) ve vypisu. Vzdy jsem si myslel 
 ze porovnani objektu obj == clash je prave porovnani pres identityHashCode 
 (coz jsem prave mylne pokladal za adresu instance na heapu). Njn, diky za 
 informace a jdu to udelat pres tu WeakReference a porovnavat budu pres 
 ==.

Javadoc k Object.hashCode() povídá:

 As much as is reasonably practical, the hashCode method defined by class 
Object does
 return distinct integers for distinct objects.
 (This is typically implemented by converting the internal address of the 
object into an integer,
 but this implementation technique is not required by the JavaTM programming 
language.)

Tj. není to adresa instance na heapu, ale integer vyrobený z adresy instance na 
heapu.
Adresa může mít větší bitový rozsah než integer, takže dvě různé adresy
mohou vyprodukovat stejný integer.

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--


Re: jednoduchy sablonovaci system pomocou jsp tagov a UTF-8

2010-04-27 Tema obsahu Martin Kuba

Ivan Polak wrote:

pouzivam Tomcat 6.0.x

jednoduchy JSP subor (ziadne includovanie):

%@ page contentType=text/html; charset=utf-8 %
html
body
šťžčý
/body
/html


ještě tam chybí pageEncoding, tj.

%@ page contentType=text/html; charset=utf-8 pageEncoding=utf-8%

protože ten charset definuje výstupní kódování, ale je nutné
specifikovat i kódování zdrojáku té JSP stránky.

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--




smime.p7s
Description: S/MIME Cryptographic Signature


Re: [Java] Program nejvýhodnější nabí dky

2010-03-09 Tema obsahu Martin Kuba
Ondra Medek napsal(a):
 Jinak nechápu co je to ta free markerová šablona. Dále ten počet klientů je 
 jenom orientační. Ten časový interval tam bude pravděpodobně kvůli 
 aktualizaci záznamů aby se zbytečně neaktualizovaly ty znázmami dost často, 
 skrátka jednou za čas abychom měli představu o nějaké změně do databáze 
 učastníků.
 
 Misto pollingu v casovem intervalu lze pouzit technoligii server push.
 Pro web se nazyva tez Comet. Jeji spolehliva implmentace neni
 trivialni, pry ICEFaces ji maji dobre udelanou.
 
 Pro RMI ma neco asi podobneho JBoss remoting (nezkoumal jsem, jak tam
 ten push pracuje, JBoss remoting pouzivame, ale jen jako transparentni
 nahradu RMI).

IMHO server push se nedá implementovat, vždycky je to jenom nějaká forma
pollingu v časovém intervalu. Kód na straně webového prohlížeče totiž
nemůže poslouchat na socketu, a i kdyby mohl, tak prohlížeč je zhusta
za NATem nebo firewallem nebo obojím, takže není ze strany serveru vidět.

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: problem s java.util.Date

2010-03-08 Tema obsahu Martin Kuba
Souhlasím s Otou. Tyhle řetězce nevyjadřují čas od půlnoci
dané časové zóny, ale čas od začátku závodu. Takže třídy v java.util a java.text
jsou pro to zcela nevhodné.

Vzhledem k tomu, že vhodná třída pro tenhle typ údaje je org.joda.time.Duration,
ale ta nemá parsování, udělal bych prostě tohle:

public static void main(String[] args) {
String t1 = 00:30:10;
String t2 = 00:40:20;
int timeInSeconds = parseDuration(t2)-parseDuration(t1);
System.out.println(timInSeconds =  + timeInSeconds);
}

private static int parseDuration(String t1) {
String[] p = t1.split(:);
return 
Integer.parseInt(p[0])*3600+Integer.parseInt(p[1])*60+Integer.parseInt(p[2]);
}

Makub

Oto Buchta napsal(a):
 No nevím. Podle mého je nejjednodušší cestou vlastní triviální parser,
 který ze stringů udělá milisekundy.
 Pomocí String.split(), Integer.parseInt() a operace násobení.
 
 2010/3/7 danisevsky danisev...@gmail.com:
 diky, toto:

 Date date3 = new Date(date1.getTime() - date2.getTime() +
 date1.getTimezoneOffset()*6);

 funguje, ale metoda getTimezoneOffset() je deprecated a navic jsem k
 java.util.Date ztratil duveru, protoze teto tride a jeji praci s casem vubec
 nerozumim.

 Muj pozadavek je jednoduchy, prijdou mi dva Stringy predstavujici cas ve
 tvaru HH:mm:ss a znamenaji:

 1. string = doba za kterou auto ujelo 1. okruh
 2. string = doba za kterou auto ulejo 1. okruh + 2. okruh

 ja potrebuji cisty cas za ktery auto ujelo 2. okruh.


-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Netbeans, maven, webservice klient

2010-03-02 Tema obsahu Martin Kuba
Dusan Zatkovsky napsal(a):
 Momentalne to riesim tak, ze pouzivam konstruktor ( URL, QName ) pre danu 
 sluzbu, ale je to strasne primitivne a dost ma irituje fakt, ze musim rucne 
 prechadzat vygenerovany kod a hladat v nom konstrukciu QName.
 
 Nejaky napad?

WebServices jsem v Mavenu nedělal pomocí wizardu v NetBeans, ale pomocí
CXF, takže stačilo udělat

mvn generate-sources

po té, co jsem do pom.xml přidal tohle:

properties
cxf.version2.2.4/cxf.version
/properties

dependencies
dependency
groupIdorg.apache.cxf/groupId
artifactIdcxf-rt-frontend-jaxws/artifactId
version${cxf.version}/version
/dependency
dependency
groupIdorg.apache.cxf/groupId
artifactIdcxf-rt-transports-http/artifactId
version${cxf.version}/version
/dependency
dependency
groupIdorg.apache.cxf/groupId
artifactIdcxf-rt-transports-http-jetty/artifactId
version${cxf.version}/version
/dependency
dependency
groupIdorg.apache.cxf/groupId
artifactIdcxf-common-utilities/artifactId
version${cxf.version}/version
/dependency
/dependencies

build
plugins
plugin
groupIdorg.apache.cxf/groupId
artifactIdcxf-codegen-plugin/artifactId
version${cxf.version}/version
executions
execution
idgenerate-sources/id
configuration
wsdlOptions
wsdlOption
wsdlhttp://cosi/kdesi?wsdl/wsdl
/wsdlOption
/wsdlOptions
/configuration
goals
goalwsdl2java/goal
/goals
/execution
/executions
/plugin

!-- nastaveni verze zdrojaku --
plugin
groupIdorg.apache.maven.plugins/groupId
artifactIdmaven-compiler-plugin/artifactId
configuration
source6/source
target6/target
/configuration
/plugin
!-- zavislosti na JARech --
plugin
groupIdorg.apache.maven.plugins/groupId
artifactIdmaven-dependency-plugin/artifactId
configuration
outputDirectory
${project.build.directory}
/outputDirectory
/configuration
/plugin
/plugins
/build

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: spring-jdbc a transakcie

2010-02-16 Tema obsahu Martin Kuba
Dusan Zatkovsky napsal(a):
 Problem je, ze nikde na webe nemozem najst nejaky JEDNODUCHY navod,
 ako na transakcie so spring-jdbc. Nasiel som len kopu otazok bez odpovedi, 
 pripadne
 odpovede s linkom na kopu xml chaosu a stovky riadkov mne nepochopitelneho 
 kodu:
 
 http://static.springsource.org/spring/docs/2.5.x/reference/transaction.html
 
 Poradi niekto?

Vyráběl jsem onehdy tutoriál, je tady:
http://kore.fi.muni.cz:5080/wiki/index.php/Spring_JDBC#Transakce

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: spring-jdbc a transakcie

2010-02-16 Tema obsahu Martin Kuba
Dusan Zatkovsky napsal(a):
 On Tuesday 16 of February 2010 11:44:22 Martin Kuba wrote:
 
 Vyráběl jsem onehdy tutoriál, je tady:
 http://kore.fi.muni.cz:5080/wiki/index.php/Spring_JDBC#Transakce
 
 No, tam je ale vsetok jdbc kod v jednej metode.
 
 Co ak je dana transakcia rozbita na mnoho volani roznych tried? V jdbc dane 
 triedy zdielaju jednu connection, takze mozem v jednej metode spravit insert, 
 v druhej delete, v tretej update a ak to prezije az do stvrtej, tak to 
 commitnut?

Pokud se volají z jedné metody označené jako @Transactional,
tak budou všechny v jedné transakci. Tj. klidně to může vypadat nějak takto:

@Transactional
public void hlavni(Nahrada nove) {
  Neco neco = najit();
  smazat(neco);
  vlozit(nove);
}

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: tomcat a upload suborov

2010-02-09 Tema obsahu Martin Kuba
Ondra Medek napsal(a):
 Administrator Tomcatu by mel moci vasemu servletu povolit primy
 pristup do (vsech, vybranych) souboru kdekoliv na filesystemu, viz
 http://tomcat.apache.org/tomcat-5.5-doc/security-manager-howto.html

V security manageru problém není, jestli to dobře chápu.

Jde o to, že soubory jsou mimo adresář webaplikace, takže tomcat
je nemůže sám servírovat.

Napadlo mě jedno řešení, a to ve WEB-INF/web.xml zaregistrovat
ServletContextListener, tj.

listener
 listener-classcz.moje.MujListener/listener-class
/listener


který při startu aplikace zkontroluje, jestli
existuje link na adresář, a když ne, vytvoří ho. Kam má link
ukazovat může brát z getServletContext().getInitParameter(adresar)
a hodnota bude v META-INF/context.xml jako

Parameter name=adresar value=/nekde override=true/

takže po redeploy bude link vždycky existovat.

Makub

 2010/2/9 Ivan Polak ivan.po...@f4s.sk:
 Zdravim konferenciu,

 chcel som si spravit jednoduchy publikacny system, kde pouzivatel zada
 clanok a vie pripojit subory ako prilohy. tieto subory ukladam do
 adresara, ktory je mimo aplikacie, tak aby undeploy a nasledny deploy
 novej verzie nemal dosah na tento adresar. administrator kde chcem v
 tomcat-e spustit tuto aplikaciu ma upozornil, ze ak chcem priamo
 pristupovat k tomuto adresaru bude vzdy po deploy novej verzie musiet
 vytvorit linku na tento adresar, ktoru vytvori v adresary webapp teda
 tam kde je subor index.jsp. Alebo druha moznost, musim vytvorit tzv.
 download servlet, ktory bude tieto subory nacitavat a odovzdavat na
 vystup. je este aj nejaka ina moznost, pripadne co by ste odporucali.

 dakujem

 Ivan

 
 
 


-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Certifikaty cez web s iterakciou pouzivatela

2009-11-29 Tema obsahu Martin Kuba
Gabriel Gajdos napsal(a):
 Mal som v úmysle využiť najskôr usera na vloženie údajov, ktoré vie vložiť
 on (typicky meno a e-mail), s tými by potom pracovala CA za použitia
 klientsky generovaného kľúča...
 
 Je nejaká free implementácia CA na jave?

Chcete se opravdu pustit do provozování CA ? To je náročné hlavně
organizačně. Záleží na její plánované důvěryhodnosti, ale
třeba CA pro bankovní použití musí být ve speciálním bunkru,
do kterého vede turniket propouštějící jenom jednu osobu,
a samotné zařízení CA musí mít autodestrukční systém.
Aspoň tak mi to popisovali kdysi v MUZO,a.s., které provozovalo
CA pro certifikaci v rámci platebního protokolu SET.
Jestli okolo bunkru byl vodní příkop s krokodýly se zuby
napuštěnými jedem už neříkali :-)

Co se týká implementace CA, zdarma je http://www.openssl.org/
která je sice v Céčku, ale není problém ty programy volat
pomocí System.exec().
O free implementaci v Javě nevím.

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Certifikaty cez web s iterakciou pouzivatela

2009-11-27 Tema obsahu Martin Kuba
Gabriel Gajdos napsal(a):
 Zdravím konferu.
 
 Už niekto riešil „ako“ vytvárať certifikáty pre elektronický podpis?
 
 Nechcem návod typu „keytool –help“  ani odkaz na javadoc.
 
 Hľadám skôr nejaké hotové riešenie, ktoré by sa dalo adaptovať v Jave
 (alebo aspoň používať)...
 
 Pri generovaní certifikátov je potrebné riešiť niekoľko oblastí
 (vytvorenie kľúča, certtificate request, overenie autoritou, databázu
 autority...).
 
 Ide mi skrátka o to, aby to, čo má bežať u klienta, zostalo u klienta
 a to, čo má bežať na serveri, aj bežalo na serveri...

Certifikáty je nejlepší generovat přímo v prohlížeči, protože
na to jsou CA zařízené. A potom certifikát vyexportovat z prohlížeče
jako *.p12 (PKCS12) soubor a načíst ho v Javě pomocí PKCS12 keystore.

Udělátko v Javě, které by certifikát generovalo, by muselo
nějak interagovat s CA, a každá CA má jiné rozhraní.

Obvykle je postup takový, že uživatel navštíví Registrační Autoritu (RA),
tam předloží doklady a dostane nějaký tajný kód.
Pak přijde ke svému počítači, přes prohlížeč se připojí na Certifikační 
Autoritu (CA),
zadá ten tajný kód od RA, načež CA způsobí vygenerování
párů klíčů v prohlížeči, vytvoří certifikát a ten do prohlížeče vloží.

Nahrazovat tenhle postup mi přijde zbytečné. Leda že byste měl v úmyslu
napsat si kompletně i novou CA, ale to asi není tenhle případ.

Makub

-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Jak ziskat v HttpServlet.doGet() URL Rootoveho kontextu web aplikace

2009-11-26 Tema obsahu Martin Kuba
Oto Buchta napsal(a):
 Zdar vsichni,
 jsem asi potrefen sneznou slepotou skloubenou se sklenenou nemoci -
 muze mne nekdo prosim nakopnout, jak inteligentneji udelat:
 
 request.getRequestURL().substring(0,request.getRequestURL().indexOf(request.getRequestURI()))+request.getContextPath()
 ?
 
 request.getProtocol()+://+request.getLocalName()+:+request.getLocalPort()+request.getContextPath()
 za inteligentni nepovazuji.

To líp nejde.

Tedy, má to být

req.getScheme()+://+req.getServerName()+:+req.getServerPort()+req.getContextPath()

protože request.getServerName() vrací jméno HTTP serveru z HTTP hlavičky Host:,
kdežto getLocalName() vrací jméno IP rozhraní.
U name-based virtual hosts je to zásadní rozdíl.

Důvod, proč to nejde, je nejspíš v tom, že v samotném HTTP protokolu
to URL není. Přijde totiž něco jako

GET /contextPath/neco HTTP/1.1
Host: www.moje.cz

takže i Servlet API to musí skládat ze znalosti jestli to bylo SSL nebo ne,
z hlavičky Host:, ze znalosti na jakém to bylo portu (ne vždy to trefí správně,
u Tomcatu za Apachem a mod_proxy v režimu http proxy to bude blbě),
a z URI mezi GET a identifikací verze HTTP.

Mimochodem, jako pamětník jistě oceníš, že kdysi dávno znamenalo URI
část URL, kdežto dneska je URI nadmnožina URL. Metoda getRequestURI() je toho 
němým důkazem.

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: client-side java (bylo Re: Zkušenosti s Apache Wicket)

2009-11-23 Tema obsahu Martin Kuba
Update po víkendu - zatím celkem 397 prohlížečů, z toho

194 tj. 48.9% nemá javu
203 tj. 51.1% má javu

a z těch co mají, tak

190 má 1.6.0
8   má 1.5.0
1   má 1.4.2
1   má 1.4.0
3   má 1.1.4

takže 49.9% všech prohlížečů má funkční Javu aspoň 1.5, což je mnohem víc, než 
jsem čekal.


Makub

Martin Kuba napsal(a):
 Jak říkal Winston Churchill, věřím jenom statistice, kterou jsem si zfalšoval 
 sám :-)
 Tak jsem vzal soubory z http://www.realchat.com/blog/java-vs-flash/
 trochu je upravil, a dělám si vlastní statistiku. Po 15 hodinách jsou 
 výsledky tyto:
 
 75 unikátních prohlížečů, z toho
 40 tj. 53% nemá javu (nespustí se jim applet)
 35 tj. 47% má javu (spustí se jim applet)
 
 z těch 35
 1 má verzi 1.1
 1 má verzi 1.5
 33 má verzi 1.6


-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: client-side java (bylo Re: Zkušenosti s Apache Wicket)

2009-11-23 Tema obsahu Martin Kuba
jeeff napsal(a):
 Ahoj,
 
 ano, ako si pisal je to o tom sfalsovani vlastnej statistiky.
 
 Nenapisal si, na akej stranke to merias. Ak na nejakom svojom JAVA blogu je 
 jasne, ze pomer javy v prehliadaci bude relativne vysoky kvoli tomu, ze tam 
 chodia developeri.
 
 Urcite by ale ine vysledky boli na nejakom mainstream serveri kde chodia 
 tety uradnicky teda nieco ako www.pluska.sk/soubiznis/

Není to java blog, je to na každé stránce http://meta.cesnet.cz/
což jsou stránky o superpočítačích a výpočetních clusterech, s javou
nemají nic společného. Je pravděpodobné, že uživatelé přicházející
na takové stránky nejsou statisticky úplný průměr, protože
nejvíc jich přichází z Googlu po zadání dotazů na kerberos nebo matlab.
Ale taky to nejsou žádní odborníci na javu.

Bohužel nemám pod palcem obecnější server, na kterém bych to vyzkoušel.
Jestli někdo máte, klidně poskytnu zdrojáky nebo přímo WAR s aplikací.

Mimochodem, za stejné období mi Google Analytics hlásí podporu
Javy u 82.45%. Jak jsem už psal, jeho způsob detekce pomocí volání
JavaScriptové funkce navigator.javaEnabled() není spolehlivý.

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: mapování servletu na url, která jso u podmnožinou mapovaných url jiného servletu

2009-11-23 Tema obsahu Martin Kuba
Tomas Vojtech napsal(a):
 Zamýšleno tím bylo to, že všechny požadavky budou obslouženy servletem
 cgw kromě těch s url /interconnect/session/*, které půjdou na servlet
 sessions.
 Problém ale je ten, že požadavky s url /interconnect/session/* jdou na
 oba. Nejdříve se zavolá sessions servlet a potom cgw. Na pořadí mapování
 servletů nezáleží... Zkouším to na tomcatu 6.0.20.

To je proti Servlet API Specification 2.4. Zavolat se má jenom jeden. Cituji:

Upon receipt of a client request, the Web container determines the Web 
application
to which to forward it. The Web application selected must have the the longest
context path that matches the start of the request URL. The matched part of the 
URL
is the context path when mapping to servlets.
 The Web container next must locate the servlet to process the request using
the path mapping procedure described below.
 The path used for mapping to a servlet is the request URL from the request
object minus the context path and the path parameters. The URL path mapping
rules below are used in order. The first successful match is used with no further
matches attempted:
  1. The container will try to find an exact match of the path of the request 
to the
 path of the servlet. A successful match selects the servlet.
  2. The container will recursively try to match the longest path-prefix. This 
is done
 by stepping down the path tree a directory at a time, using the ’/’ 
character as
 a path separator. The longest match determines the servlet selected.
  3. If the last segment in the URL path contains an extension (e.g. .jsp), the 
serv-
 let container will try to match a servlet that handles requests for the 
extension.
 An extension is defined as the part of the last segment after the last ’.’ 
char-
 acter.
  4. If neither of the previous three rules result in a servlet match, the 
container will
 attempt to serve content appropriate for the resource requested. If a 
default
 servlet is defined for the application, it will be used.
 The container must use case-sensitive string comparisons for matching.
SRV.11.2   Specification of Mappings
In the Web application deployment descriptor, the following syntax is used to 
define
mappings:
  • A string beginning with a ‘/’ character and ending with a ‘/*’ suffix is 
used
 for path mapping.
  • A string beginning with a ‘*.’ prefix is used as an extension mapping.
  • A string containing only the ’/’ character indicates the default servlet 
of
 the application. In this case the servlet path is the request URI minus 
the con-
 text path and the path info is null.
  • All other strings are used for exact matches only.


Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


client-side java (bylo Re: Zkušenosti s Apa che Wicket)

2009-11-20 Tema obsahu Martin Kuba

Jak říkal Winston Churchill, věřím jenom statistice, kterou jsem si zfalšoval 
sám :-)
Tak jsem vzal soubory z http://www.realchat.com/blog/java-vs-flash/
trochu je upravil, a dělám si vlastní statistiku. Po 15 hodinách jsou výsledky 
tyto:

75 unikátních prohlížečů, z toho
40 tj. 53% nemá javu (nespustí se jim applet)
35 tj. 47% má javu (spustí se jim applet)

z těch 35
1 má verzi 1.1
1 má verzi 1.5
33 má verzi 1.6

celkový výpis těch s javou je tady:

java.version=1.1.4 java.vendor=Microsoft Corp. os=x86 Windows NT 5.1 
browser=Explorer 8 Windows
java.version=1.5.0_07 java.vendor=Sun Microsystems Inc. os=i386 Linux 
2.6.16.27-0.6-smp browser=Firefox 1.5 Linux
java.version=1.6.0-oem java.vendor=Sun Microsystems Inc. os=x86 Windows Vista 
6.0 browser=Firefox 3 Windows
java.version=1.6.0_0 java.vendor=Sun Microsystems Inc. os=amd64 Linux 
2.6.28-16-generic browser=Firefox 3 Linux
java.version=1.6.0_0 java.vendor=Sun Microsystems Inc. os=amd64 Linux 
2.6.31.5-0.1-desktop browser=Firefox 3.5 Linux
java.version=1.6.0_0 java.vendor=Sun Microsystems Inc. os=i386 Linux 
2.6.31.5-0.1-desktop browser=Firefox 3.5 Linux
java.version=1.6.0_07 java.vendor=Sun Microsystems Inc. os=x86 Windows XP 5.1 
browser=Firefox 3.5 Windows
java.version=1.6.0_13 java.vendor=Sun Microsystems Inc. os=x86 Windows XP 5.1 
browser=Explorer 7 Windows
java.version=1.6.0_14 java.vendor=Sun Microsystems Inc. os=x86 Windows Vista 
6.0 browser=Firefox 3.5 Windows
java.version=1.6.0_14 java.vendor=Sun Microsystems Inc. os=x86 Windows XP 5.1 
browser=Explorer 8 Windows
java.version=1.6.0_14 java.vendor=Sun Microsystems Inc. os=x86 Windows XP 5.1 
browser=Firefox 3 Windows
java.version=1.6.0_14 java.vendor=Sun Microsystems Inc. os=x86 Windows 7 6.1 
browser=Firefox 3.5 Windows
java.version=1.6.0_15 java.vendor=Apple Inc. os=i386 Mac OS X 10.6.2 
browser=Firefox 3.5 Mac
java.version=1.6.0_15 java.vendor=Apple Inc. os=x86_64 Mac OS X 10.6.2 
browser=Safari 4 Mac
java.version=1.6.0_15 java.vendor=Sun Microsystems Inc. os=amd64 Linux 
2.6.29-gentoo-r5 browser=Konqueror 3.5 Linux
java.version=1.6.0_15 java.vendor=Sun Microsystems Inc. os=x86 Windows Vista 
6.0 browser=Firefox 3 Windows
java.version=1.6.0_15 java.vendor=Sun Microsystems Inc. os=x86 Windows Vista 
6.0 browser=Firefox 3.5 Windows
java.version=1.6.0_15 java.vendor=Sun Microsystems Inc. os=x86 Windows Vista 
6.0 browser=Firefox 3.5 Windows
java.version=1.6.0_15 java.vendor=Sun Microsystems Inc. os=x86 Windows XP 5.1 
browser=Firefox 3.5 Windows
java.version=1.6.0_15 java.vendor=Sun Microsystems Inc. os=x86 Windows XP 5.1 
browser=Firefox 3.5 Windows
java.version=1.6.0_15 java.vendor=Sun Microsystems Inc. os=x86 Windows XP 5.1 
browser=Firefox 3.5 Windows
java.version=1.6.0_15 java.vendor=Sun Microsystems Inc. os=x86 Windows 7 6.1 
browser=Safari 4 Windows
java.version=1.6.0_16 java.vendor=Sun Microsystems Inc. os=amd64 Linux 
2.6.28-9-generic browser=Opera 9.8 Linux
java.version=1.6.0_16 java.vendor=Sun Microsystems Inc. os=i386 Linux 
2.6.31-14-generic browser=Firefox 3.5 Linux
java.version=1.6.0_16 java.vendor=Sun Microsystems Inc. os=x86 Windows 7 6.1 
browser=Explorer 8 Windows
java.version=1.6.0_17 java.vendor=Sun Microsystems Inc. os=i386 Linux 
2.6.31-ARCH browser=Mozilla 1.9 Linux
java.version=1.6.0_17 java.vendor=Sun Microsystems Inc. os=x86 Windows Vista 
6.0 browser=Firefox 3.5 Windows
java.version=1.6.0_17 java.vendor=Sun Microsystems Inc. os=x86 Windows Vista 
6.0 browser=Firefox 3.5 Windows
java.version=1.6.0_17 java.vendor=Sun Microsystems Inc. os=x86 Windows XP 5.1 
browser=Explorer 8 Windows
java.version=1.6.0_17 java.vendor=Sun Microsystems Inc. os=x86 Windows XP 5.1 
browser=Explorer 8 Windows
java.version=1.6.0_17 java.vendor=Sun Microsystems Inc. os=x86 Windows XP 5.1 
browser=Firefox 3 Windows
java.version=1.6.0_17 java.vendor=Sun Microsystems Inc. os=x86 Windows XP 5.1 
browser=Firefox 3.5 Windows
java.version=1.6.0_17 java.vendor=Sun Microsystems Inc. os=x86 Windows XP 5.1 
browser=Firefox 3.5 Windows
java.version=1.6.0_17 java.vendor=Sun Microsystems Inc. os=x86 Windows XP 5.1 
browser=Mozilla 1.9 Windows
java.version=1.6.0_17 java.vendor=Sun Microsystems Inc. os=x86 Windows XP 5.1 
browser=Opera 9.8 Windows

Pokud by někoho zajímala metodika - na všech stránkách mého webserveru je odkaz 
na JavaScript,
který spouští applet, který přečte ze systémových properties verzi Javy a OS
a zavolá zase JavaScript, který zavolá server s hlášením. První JavaScript 
posílá servlet,
který si nastaví session, a pokud do 15 sekund nepřijde hlášení o verzi Javy,
zaznamená že Java není nainstalovaná. Každý prohlížeč je započítán nejvýš 
jednou,
při prvním pokusu se nastaví cookie s platností do roku 2070.

Makub

Martin Kuba napsal(a):
 Stare verzie Java -  tam to moc  nesledujem,  ale MS java  uz skoro
 neexistuje.
 Naposledy bola distribuovana s Win2000 , ale nie s XP, takze to uz nikto
 nema. Podla tejto statistiky http://www.statowl.com/java.php ma java
 81,87% ale len 0,01

Re: Urceni MIME TYPE dokumentu nacteneho v poli bytu

2009-11-20 Tema obsahu Martin Kuba
Jaroslav Hurdes napsal(a):
 Zdravim, vsechny. Nemate nekdo zkusenost, jak urcit mime type dokumentu,
 ktery mam nacteny v poli bytu. Vsechny funkce pracuji se soubory. Nechci
 ukladat obsah pole do docasneho souboru jenom pro to abych urcil mime
 type. Nemate nekdo nejaky napad jak na to. Diky Jaroslav Hurdes

Tenhle problém se tu před pár lety řešil, pokud si pamatuju dobře,
řešení bylo jMimeMagic a to má metodu na zpracování pole bajtů:
http://jmimemagic.sourceforge.net/apidocs/net/sf/jmimemagic/Magic.html#getMagicMatch%28byte[]%29

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Zkušenosti s Apache Wicket

2009-11-19 Tema obsahu Martin Kuba
Jak tak čtu tuhle diskuzi, tak mi přijde, že se potvrzuje stará pravda o tom,
že HTML bylo navrženo pro dokumenty, ne pro aplikace.

Sice jsem to sám nezkoušel, ale pro skutečné aplikace s bohatým GUI na webu mi 
přijde
lepší použít skutečné aplikační prostředí, totiž Flex. Pak aplikace běží
ve Flash pluginu, který sice v polovině 90. let byl navržen pro animovanou
vektorovou grafiku, ale postupem doby se z něj stala platforma
velmi podobná Javě, s bajtkódem, garbage collection a silným typováním
v ActionScriptu.

Zatím hledám nějakou komplikovanou aplikaci, abych měl důvod si ho vyzkoušet
naostro. Nicméně pokud bych takovou našel, dal bych rozhodně přednost Flexu
před AJAXem, protože v JavaScriptu jsem si už své odprogramoval, a vždycky s ním
byly jenom problémy.

Makub

Roman Zakutny napsal(a):
 Ahojte,
 
 tiez sa pokusim prispiet do tejto debaty, ale skor navrhom dalsich
 moznosti:) Prave teraz rozbiehame projekt a predbezny odhad na jeho
 implementaciu je cca. 2-3 roky. Klient preferuje kombinaciu
 Spring+Hibernate. Vzhladom na planovane bohatsie GUI a dlhodobejsi vyvoj
 stoji pred nami najzapeklitejsi problem - vybrat spravnu view
 technologiu. Kedze s Tapestry a Wicketom nemame ziadnu skusenost, je to
 mozno privelky risk, vrhnut sa na projekt takeho rangu. Po nejakej uvahe
 nam ostali 3 moznosti:


-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Zkušenosti s Apache Wicket

2009-11-19 Tema obsahu Martin Kuba
Rastislav Rehak napsal(a):
 Ked uz uvazovat o Flex, preco nie Swing alebo Silverligth alebo JavaFX ?

Swing ne, protože Javu má nainstalovanou minimum uživatelů.
Sice podle statistik prohlížečů získávaných pomocí JavaScriptu
má podporu Javy hodně lidí, ale podle studií ve skutečnosti
jen asi 50% a z nich má drtivá většina starou špatnou Javu 1.1
od Microsoftu. Tudy cesta nevede.

Silverlight pojede jenom na MS-Windowsech, ne ? A Silverlight,
JavaFX a Adobe AIR jsou jiný typ platformy než Flex,
mají za cíl poskytovat i lokální databázi. Pro všechny tři je potřeba
instalace pluginu, který uživatelé nemají. Spousta uživatelů
si nic nainstalovat neumí. A další spousta, třeba v bankách, na úřadech
nebo v nemocnicích, ani nemůže, protože systémový správce jim to nedovolí.

Flex potřebuje jenom Flash plugin, který má už nainstalovaný 99% uživatelů
na všech operačních systémech, viz
http://www.adobe.com/products/player_census/flashplayer/version_penetration.html
Téhle statistice věřím, protože kvůli YouTube si Flash
všichni udržují aktuální.

Z hlediska webových technologií mi přijde velmi podnětný Facebook.
On sám je napsaný v PHP a používá AJAX, na tom není nic zajímavého,
ale převratná novinka je to, že je do něj možné dopisovat
další aplikace. Technicky to funguje tak, že Facebook zobrazí
stránku se svým logem, v té je IFRAME a v něm může být libovolná
stránka na libovolném serveru. Ty aplikace tak neběží na serverech Facebooku,
ale úplně jinde.

A když se podíváte, jak jsou ty úspěšné aplikace dělané, tak
je to u jednodušších AJAX, a u složitějších Flash (netvrdím že vyvinuté
pomocí Flex, nedá se to poznat, ale je to pravděpodobné).
Třeba takový test Who has the biggest brain?
http://www.facebook.com/apps/application.php?id=8827826004
zobrazuje v reálném čase pohybující se předměty a měří rychlost lidské reakce
(takže neměří velikost mozku ;-) ) a aby to zvládl, je dělaný ve Flashi.

Koneckonců, nejsložitější uživatelské rozhraní mají hry, a když se podíváte
třeba na http://www.superhry.cz/ tak všechny jsou psané ve Flashi.

To podle mně dokazuje, že Flash je dnes ta správná platforma pro aplikace
se složitým rozhraním.



Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Zkušenosti s Apache Wicket

2009-11-19 Tema obsahu Martin Kuba
Rastislav Rehak napsal(a):
 Par dalsich statistik, ktorym zase ja verim ( su z mojho serveru cez
 google analytics )   Java 97,5%  , Flash 97,96%

Pozor, Google Analytics zjišťuje údaj o Javě pomocí volání JavaScriptové funkce
navigator.javaEnabled() která nespouští JVM (to trvá příliš dlouho),
takže není moc vypovídající. Tahle statistika je k ničemu.

 Stare verzie Java -  tam to moc  nesledujem,  ale MS java  uz skoro
 neexistuje.
 Naposledy bola distribuovana s Win2000 , ale nie s XP, takze to uz nikto
 nema. Podla tejto statistiky http://www.statowl.com/java.php ma java
 81,87% ale len 0,01% je other - co by mohla by 1.1 .

Tahle statistika je velice zajímavá. Ale nepíšou tam, jak to zjistili.
A když se podívám na statistiku Shockwave http://www.statowl.com/shockwave.php
který nemá nainstalován skoro nikdo, tak je vidět, že graf ukazuje
vzájemný poměr verzí u těch, kdo mají danou věc nainstalovanou.
Neříká nic o tom, kolik je těch, co nemají danou věc nainstalovanou vůbec.

Ano, věřím tomu, že mezi těmi, kdo mají Javu nainstalovanou,
má 59% verzi 1.6. Ale nejspíš těch 100% z grafu bude jenom zlomek
ze všech prohlížečů.

Tohle je statistika získaná metodou, která mi přijde rozumná:
http://www.realchat.com/blog/java-vs-flash/
a výsledek je - 56% má Javu, z toho polovina je stará MS Java.
Takže řekněme 28% uživatelů má použitelnou Javu.

 vs WSRP, OpenSocial atd.Urcite by som to netahal do diskusie aky
 framework - rovnako dobre mozem urobit biggest brain ako applet alebo Ajax.

Tak to silně nesouhlasím. Aplikace jako biggest brain se podle mě
jako applet nebo AJAX udělat nedá. tedy dá se vyrobit,
ale nebude spolehlivě fungovat.

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Comparator na retezce s diakritikou

2009-11-18 Tema obsahu Martin Kuba
troni...@fit.cvut.cz napsal(a):
 Dobry den,
 
 kratke povidani o ceskem razeni:
 
 http://www.java.cz/article/ceskerazeni

Díky za ten článek, je to pěkně a přehledně popsáno.

Nestálo by za to nahlásit SUNům jako bug, že český Collator
neřadí správně česky ?

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Zkušenosti s Apache Wicket

2009-11-18 Tema obsahu Martin Kuba

Ještě můžu doporučit Stripes http://www.stripesframework.org/

+ žádná XML konfigurace
+ pěkná URL
+ lze se rychle naučit, jednoduché, účinné, dokumentace výborná
+ rychlý vývoj
- není moc komponentové

Makub

Jan Jirout napsal(a):
 Ahoj,
 
 jeste muzu doporucit tapestry 5:
 
 + komponentovy pristup 
 + zadne vnitrni tridy
 + zadna XML konfigurace
 + generuje validni HTML
 + pekne URL
 + opravdu rychly vyvoj
 + jednoduche na testovani
 - ze zacatku trochu slozitejsi


-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Zkušenosti s Apache Wicket

2009-11-18 Tema obsahu Martin Kuba
Rodina Novotných napsal(a):
 Já bych řekl, že není vůbec komponentové ne? Respektive, takhle nějak si
 představuju jednoduchý request based framework. 

Trochu je. Můžu udělat komponentu tak, že si udělám JSP, kterou inkluduju
do různých stránek, a v té JSP udělám

stripes:useActionBean var=kompotenta1 
beanclass=cz.neco.MojeKomponentaActionBean /

a Stripes při zpracování tohohle tagu vytvoří instanci daného ActionBeanu,
a provede binding dat z requestu na jeho settery, takže pokud v té JSP
budu mít formulář nebo link, tak si je takováhle komponenta schopna
zasílat data sama sobě.

Aspoň si myslím, že by to takhle šlo použít, ve skutečnosti jsem
to nepoužil. Dřív v Best Practises na
http://www.stripesframework.org/display/stripes/Best+Practices
doporučovali použít View Helper pattern, což je přesně to co jsem popsal,
ale teď už tam doporučují pre-actions.

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Na zelenej lúke

2009-11-16 Tema obsahu Martin Kuba
Roman Roman napsal(a):
 - Web framework: JSF (len preto, že je preferovaný SUNom a budí dojem 
 dlhodobého štandardu; 

Tenhle argument mě vždycky dostane. Myslíte nějaký dlouhodobý standard,
jako byly třeba JSP 1.0 se skriptlety, později zavržené a nahrazené
JSP s custom tagy, později nahrazené v JSP 2.0 za Expression Language
a fragmentové atributy, později v JSP 2.1 nahrazené za Unified Expression 
Language
a JSF ? Nebo třeba EJB 1.0 Entity Beans, později zavržené a nahrazené v EJB 3.0 
za JPA ?

Nějak mi nepřipadá, že SUNem používaný 'design by committee' by produkoval něco
stabilního nebo dobrého. Pouze kolem toho nadělají pořádný hype a použijí 
spoustu buzzwords.
Nejlepší věci vznikají evolučně, jako třeba Struts nebo Hibernate,
a SUN je nakonec se skřípěním zubů zahrne, v těchto případech Struts Bean Tags 
jako
JSTL a Hibernate jako JPA.

SUN v tom není sám, pamatuji dobu, kdy IBM zuřivě propagovalo svůj vlastní 
webserver
Internet Connection Secure Server, aby pak tiše začalo používat opensourcový 
Apache,
který byl prostě lepší.

Prostě používat něco horšího jenom proto, že za tím stojí velká firma,
místo něčeho lepšího, je IMHO krátkozraké, protože to lepší se časem prostě 
prosadí.

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: automatické odesílání formulář e

2009-11-13 Tema obsahu Martin Kuba

tomasjur...@email.cz napsal(a):

Dobrý den

vytváříme jednoduchou web aplikaci ve které si přihlášený student může spustit 
test (např z Matematiky, ČJ, Přírodovedy). Jedná se o obyčejný HTML formulář, 
který po vyplnění a zaškrtání odpovědí student odešle na server k automatickému 
vyhodnocení.

Čas testu musí být časově omezen. Po stanovené době se musí test automaticky ukončit a odeslat na server ke zpracování . 


Toto chování jsem nejprve implementoval pomocí JavaScriptu:

   1. Po spuštění testu se na klientský PC uloží cookie obsahující čas ukončení 
testu.
   2. V pravidelném časovém intervalu se kontroluje aktuální čas s časem 
uloženým v cookie. ( používá window.setInterval() )
   3. Formulář se odešle pokud je aktuální čas větší než čas v cookie.


Řešení se ukázalo jako nespolehlivé. Existuje nějaká možnost jak toto chování 
řídit na straně serveru?
Aplikace je napsaná v Jave na Spring 2.5


Na serveru se nedá ovládat, co dělá klient. Odeslat formulář z HTML klienta se 
dá jedině kliknutím
na submit tlačítko nebo z JavaScriptu. Pokud má klient JavaScript vypnutý, není 
cesta, jak
donutit formulář k odeslání.

Ale dalo by se na serveru zkontrolovat, kolik času uběhlo mezi vygenerováním 
stránky
s formulářem a přijmutím POST requestu s daty z formuláře.

Ještě mne napadlo, že pomocí
meta http-equiv=Refresh content=300;URL=http://neco/nekde; v head
se dá donutit prohlížeč, aby po 300 sekundách načetl jinou stránku,
ale ztratí se tím data vyplněná ve formuláři.


Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--




smime.p7s
Description: S/MIME Cryptographic Signature


Re: Comparator na retezce s diakritikou

2009-10-29 Tema obsahu Martin Kuba
http://java.sun.com/javase/6/docs/api/java/text/Collator.html

Makub

danisevsky napsal(a):
 Ahoj, resim trivialni problem, jak seradit podle abecedy list stringu.
 Respektive potrebuju komparator, ktery spravne porovna i znaky s
 diakritikou. Toto je mala ukazka problemu:


-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--


smime.p7s
Description: S/MIME Cryptographic Signature


Re: Balikovanie java aplikacii na linuxe

2009-10-15 Tema obsahu Martin Kuba
Dusan Zatkovsky napsal(a):
 
 Co si o tomto celom myslite?

No, pokud vím, existuje http://www.jpackage.org/ který
už má javové balíčky pro linuxy vyrobené.

OpenSuse, které používám na svém desktopu, obsahuje jaksi mírně upravené
balíčky z jpackage. Nicméně, vyhýbám se těmto balíčkům jak čert kříži.
Hrozně mi totiž vadí, že kdosi za mě rozhodl, jakou verzi toho kterého programu
či knihovny potřebuju.

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Balikovanie java aplikacii na linuxe

2009-10-15 Tema obsahu Martin Kuba
Dusan Zatkovsky napsal(a):
 Pokial si 100 aplikacii so sebou bundluje kniznice, musi sa revidovat 100 
 balikov. Take nieco udrzovat kazdy vzda a potom je v tom presne taky bordel, 
 aky v tom je dnes.

Kdybych používal 100 javových aplikací, asi by mi balíčkovací systém připadal 
jako
dobrý nápad. Ale používám čtyři: Maven, Ant, IntelliJ a Tomcat.
Tak mi množství knihoven jako palčivý problém nepřipadá.

A taky mne napadlo - Java je od začátku propagovaná s write once, run 
everywhere.
Kdyby javové aplikace začaly záviset na tom, jestli je přítomen
balíčkovací systém pro Debian Linux, tahle krása by vzala za své.

To už by mi schůdnější připadalo řešení, které má Ruby
pro všechny operační systémy - balíčkovací systém Ruby Gems
napsaný v Ruby. Ekvivalentem by tedy nebyly *.deb balíčky,
ale zcela nový balíčkovací systém napsaný v Javě a fungující
na Linuxu, Solarisu, MS-WIndows, Mac OS, ...

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Balikovanie java aplikacii na linuxe

2009-10-15 Tema obsahu Martin Kuba
Dusan Zatkovsky napsal(a):
 Aha. A ako to potom udrzuju a zaplatuju? To rucne chodia po forach a zistuju, 
 ci jedna z tych kniznic v zipe nahodou nie je buggy, nema v sebe bezpecnostnu 
 dieru, a potom to rucne zaplatuju?

Dovolím si odvážit se názoru, že v Java světě na rozdíl od C/C++
jsou díky neexistenci ukazatelů do paměti a vrstvě virtuálního stroje
vyloučeny buffer overflow útoky, a tak jsou bezpečnostní záplaty
potřeba tak zřídka, že je není třeba řešit.

Chvíli jsem Googloval a nenašel jsem příklad, že by nějaká
knihovna napsaná v Javě měla novou verzi jenom kvůli bezpečnostní záplatě.
Jediné co jsem našel bylo
http://www.securitytracker.com/archives/underlyingos/175.html
a tam jsou za poslední tři roky tři chyby, a to ještě všechno
v aplikacích, ne v knihovnách.

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: wizard form a upload suborov

2009-10-13 Tema obsahu Martin Kuba
Ivan Polak napsal(a):
 zdravim konferenciu,
 
 mam takyto problemik v JAVA web aplikacii - pouzivam Spring a Spring
 MVC, mam registracny formular typu wizard teda ma 9 krokov, v jednom
 kroku by mal pouzivatel uploadovat dokumenty (neobedzeny pocet).
 upload mam vyrieseny, otazka je kam davat obsah uploadovanych suborov, nakolko
 ukoncenie registracie sa nachadza az o niekolko krokov dalej. ak to
 budem davat na suborovy system (nejaky temp adresar), ak pouzivatel
 nedokonci registraciu musim tieto subory pravidelne nejakym sposobom
 vymazavat (ak registraciu dokonci, presuniem ich na spravne miesto).
 ak by som to ukladal do session, neviem ako by sa to spravalo, ak
 pouzivatel uploadne povedzme 10 suborov po 1 MB, teda len pre tieto
 informacie bude v session 10 MB dat. neriesil niekto z Vas podobny
 problem. dakujem!

Napadlo mne - co dávat ty soubory na souborový systém, do session si dávat
na ně odkazy a při ukončení session (zjistit se to dá pomocí 
HttpSessionListener)
ty soubory smazat ? Tím by ani nezabíraly paměť, ani by nebylo nutné
vytvářet nějaký speciální časovač pro mazání.

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: wizard form a upload suborov

2009-10-13 Tema obsahu Martin Kuba
Ján Valkovič napsal(a):
 Zalezi na tom ako ma nastavenu expiraciu session. Ak uzivatel zatvori
 prehliadac, vypadne mu elektrika alebo zamrzne pocitac a session
 neexpiruje, tak subory ostanu visiet v tempe. Ak tych registracii nie je
 vela, tak by sa mohli mazat aj pri starte servera alebo mazanie riesit
 externe, skriptom ako task v OS.

Session vyexpiruje vždy, i když uživatel zavře prohlížeč.
Standardně vyexpiruje session po 30 minutách od posledního requestu,
dá se to případně přenastavit.

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Problemy s kodovanim cestiny

2009-09-18 Tema obsahu Martin Kuba
Petr Fejfar napsal(a):
 - spustim main() a parser nefunguje.
   Kdyz trasuju do Pattern.compile(), tak mi Eclipse
   ve stringu predavanem do compile() zobrazuje pred tim stupnem
   navic nejaky velky A s nabodenickem (uz si nepamatuju co to presne bylo),
   cili ten Maven tam prelozi buhvi co.

To velké A s obráceným háčkem je typickým znakem toho, že znaky
v UTF-8 kódování byly omylem načteny v nějakém 8-bitovém kódování,
takže první bajt z dvojice byl mylně pochopen jako to A s háčkem.

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Problemy s kodovanim cestiny

2009-09-18 Tema obsahu Martin Kuba
Petr Fejfar napsal(a):
 Pokud uz tam chcete dat nejaky exoticky znak, tak JEDINE pres \u
 
 Hmmm... no to by me ani ve snu nenapadlo, ze ve 21. stoleti existuje
 prostredi, kde je nutne znak, ktery lze napsat na klavesnici
 a korektne zobrazit na obrazovce, zejmena kdyz prostredi predstira,
 ze je Unicode awared, zadavat jak pred 30 lety escape sekvenci.
 (Ale asi melo, kdyz v .properties lze pres veskery pokrok v IT
 zadavat stale jen Latin-1...)

Ono 21. století není tak daleko od 90. let 20. století, kdy byl
v kódování na-ASCII znaků děsný bordel :-)

 Alespon v JLS pisou
 (http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.10.5),
 
 ze *Characters may be represented by escape sequences* :-OOO
 Ne ze musi...

Ano, nemusí, ale když se to nedělá, bývají zhusta problémy
s tím, že kompilátor použije špatné kódování, a programátoři
pak píšou zoufalé emaily do konferencí :-)

 
 Kdo ten bordel dela? Maven? Nebo to vadi samotnemu jazyku?
 

Těžko říci na dálku. Ale pokud jsou v .java souborech
ne-ASCII znaky zapsány přímo, musí při kompilaci být
správně zadáno kódování, ať už pomocí

javac -encoding

nebo implicitně přebráním z operačního systému. To může být
občas problém, jak se v tomto případě ukazuje.

Jazyku samotnému to nevadí, do .class souborů jdou jenom
UTF-16 znaky. Ale je třeba si pohlídat kompilátor.

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Problemy s kodovanim cestiny

2009-09-16 Tema obsahu Martin Kuba
Petr Fejfar napsal(a):
 2. V parent POMu mam v properties nastaveno
 project.build.sourceEncodingUTF-8/project.build.sourceEncoding
a kdyz Mavenem vytvorim .war s strcim ho Tomcatu
na stejnem stroji, cestina je v haji, ovsem ne cela:
lokalizovane texty, ktere taham z .XML jsou spravne,
ale spatne jsou staticke texty z .HTML souboru.

To bude nejspíš tím, že na modernějších Linuxech je default kódování
nastaveno v operačním systému nastaveno na utf-8, kdežto na Windows
je to windows-1250. A čeština se pak mrší tam, kde není specifikované
kódování a použije se default.

Mohlo by pomoci při startu dát

java -Dfile.encoding=utf-8

 3. Kdyz .war strcim Tomcatu na Linuxu, tak tam je cestina
skoro spravne, tj. staticke texty i lokalizovane texty
jsou spravne, ale problemy jsou s kodovanim dat zadavanych
do editu ve formulari (napr. znak pro stupen)

Data z formuláře jsou speciální případ, je nutné zajistit, aby HTTP
hlavička Content-Type strány s formulářem obsahovala
parametr charset=utf-8. Nevím jak se to nastavuje u Wicketu,
ale nakonec se musí zavolat metoda HttpServletResponse.setContentType().

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Problemy s kodovanim cestiny

2009-09-16 Tema obsahu Martin Kuba
Podlesak Kamil napsal(a):
 Pokud máte formulář kde se může vyskytnout něco jiného než ASCII, nikdy 
 nepoužívejte GET.

Nikdy je v podstatě správně :-)

Ale pro přesnost - problém není v metodě GET, problém je i při metodě POST
s parametry předanými v URL, protože se předávají stejným způsobem jako při GET.

  Pozor na to, ze pri pouziti metody GET to nektere verze jisteho browseru 
 (schvalne, tipnete si ktere :-) ignoruji a data poslou vzdy v jedinem 
 kodovani - podle verze UTF-8, LATIN-1 nebo 1250. Pozor, pojem verze zde 
 neobsahuje jen cislo (5, 5.5, atc), ale i verzi OS a verzi nainstalovaneho 
 kancelarskeho baliku od stejne firmy!

Tohle jsem nevěděl, ale kromě problémů na straně browseru
jsou ještě problémy na straně serveru, konkrétně TomCat od jisté verze (tuším 
5.0),
používá pro překódování parametrů z URL (při GET i POST)
kódování iso-8859-1 dokud se v server.xml nenastaví Connector 
useBodyEncodingForURI=true,
pak použije kódování specifikované voláním 
HttpServletRequest.setCharacterEncoding().

A autoři TomCatu to považují za úžasný rys, což mne už roky vytáčí.

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Problemy s kodovanim cestiny

2009-09-16 Tema obsahu Martin Kuba
Petr Fejfar napsal(a):
 ale nakonec se musí zavolat metoda HttpServletResponse.setContentType().
 
 Jestli myslis http-equiv=Content-Type, tak ten ma hodnotu UTF-8.
 Nastavujeme ho v abstraktnim predkovi vsech nasich stranek
 a primo v markupu:
 
  meta http-equiv=Content-Type content=text/html; charset=utf-8/

Nemyslím meta tag v HTML, myslím nastavení HTTP hlavičky Content-Type,
ta má přednost před nastavením v meta tagu.

takze by melo stacit zmenit jim to ve zdrojovce
na

  application/x-www-form-urlencoded; charset=UTF-8

To nepomůže, servlet engine nečeká parametr charset,
takže ho ignoruje.

Neexistuje cesta, jak na straně HTTP klienta, tedy prohlížeče,
specifikovat kódování znaků v HTTP requestu.
Fakt to nejde. Odjakživa. Není to ani v žádném z RFC ohledně HTTP.
Ty starší RFC o kódování cudně mlčí, ty novější doporučují
použít utf-8, ale nedefinují místo, kde by se dalo specifikovat použité 
kodování.
Pouze existuje de facto shoda mezi výrobci prohlížečů,
že parametry z HTML formuláře jdou v kódování stránky s formulářem.
Ale není to v žádné specifikaci.

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: high performance middle vrstva

2009-09-14 Tema obsahu Martin Kuba
Ahoj,

přijde mi, že  zvyšovat výkon a zlepšovat škálovatelnost přidáním
vrstvy je protimluv. Ono totiž obecně přidání vrstvy výkon vždycky snižuje,
ale občas je to cena, kterou má smysl zaplatit, protože tím lze zlepšit
udržovatelnost.

V tomto konkrétním případě nic nemůže výkonově překonat přímou komunikaci
JDBC ovladače s databázovým strojem. Komunikace po síti přes RMI
přidá pouze další zpoždění potřebné na cestu sítových packetů mezi TomCatem
a RMI serverem.

Makub

salmonel salmonel napsal(a):
 Dobrý deň,
 
 mám web aplikáciu v jave, je napísaná v Spring web flow, používa
 Hibernate pre perzistenciu objektov. K hibernate pristupujem vždy cez DAO.  
 
 Momentálne aplikácia beží v tomcate. Potrebujem pridať medzi databázu a
 tomcat vrstvu, v ktorej by boli všetky dao objekty. Na servroch nám
 totiž beží niekoľko inštancií našej aplikácie(máme niekoľko klientov),
 tieto inštacie majú každá vlastnú databázu. Niekedy však potrebuje jedna
 inštacie liezť aj do databáze druhej inštancie. Preto chcem
 centralizovať prístup k databázam.
 
 Podstatné je, že potrebujem pridať vrstvu, v ktorej by boli len DAO
 objekty. Podľa toho, čo som pochopil mám na výber medzi EJB statless
 beanami bežiacimi v JBOSSe(prípadne inom aplikačnom servri), alebo si
 spraviť vlastnú aplikáciu, ktorá by obsahovala dao objekty a fungovala
 ako RMI server. Tomcat by bol RMI klient a vždy kontaktoval server. O
 pooling databázových pripojení by sa postaral hiberante.
 
 Aplikácia už je naprogramovaná, iné výhody EJB asi nevyužijem. Ide mi
 najmä o vysoký výkon a budúcu škálovatelnosť(s ktorou by nemal byť
 problém, ide o stateless objekty, takže môžem nasekať koľko chcem RMI
 servrov, ktoré nemusia medzi sebou komunikovať).
 
 Ďakujem


-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: kodova stranka projektu na windows

2009-09-14 Tema obsahu Martin Kuba
Dusan Zatkovsky napsal(a):
 Dokazal by mi niekto objasnit, ako je to v jave na windows s defaultnym 
 kodovanim a preco sa to chova takto podivne? Jedine, co ma napada je, ze 
 getenv() vrati string v nejakej blbej kodovej stranke ( co by imho nemalo ) a 
 potom sa to taha napriec projektom (*2).

Pamatuju se, že na Windows se používalo jiné kódování češtiny
přes GUI a jiné v příkazovém řádku. Možná je to tím, pokud
se třeba proměnná nastavuje v .bat souboru.

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: fronta pro zpracování dlouhých udílos ti ve webovém kontejneru

2009-08-21 Tema obsahu Martin Kuba
Tomáš Procházka napsal(a):
 Z a ktery z techto pripadu testuje situaci, o ktere pise Makub?
 
 Já právě psal, že jsem nenašel praktický případ, kdy bych dostal kladnou 
 odpověď
 na  neexistující email. Tedy praktickou existenci toho, co Martin kuba
 popsal.

Bez pokusu s velkým množstvím adres se mi příklad takové konfigurace
hledá špatně, ale zkuste třeba adresu

neexistuj...@cz.ibm.com

podle MX záznamu to přebírá SMTP server v Americe a
podle hlavičky pokusného emailu se to pak přeposílá na mockrát.

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: fronta pro zpracování dlouhých udílos ti ve webovém kontejneru

2009-08-20 Tema obsahu Martin Kuba
Tomáš Procházka napsal(a):
 Díky za reakci. Já si celou dobu myslel, že SMTP doručuje zprávy přímo do 
 schránek.
 
 Nicméně zkoušel jsem pár domén, posílat na ně maily. A vždy jsem na 
 neexistující email dostal informací, že schránka neexistuje. Zkoušel jsem u 
 většiny i existující email a naopak mi to oznámilo doručení, email vždy 
 přišel. Zkoušel jsem ibm.com, dvě české velké vysoké školy a několik 
 nejznámějších free emailových serverů
 
 Zde je seznam testovaných domén:
 
 @ibm:
 
 com.sun.mail.smtp.SMTPAddressFailedException: 550 5.1.1 
 hfjdjh...@ibm.com... User unknown

Přes jaký SMTP server to odesíláte ? Já když udělám v kódu

InternetAddress[] mailto = {new 
InternetAddress(sdhajsdha...@ibm.com,Neexistujici ucet,UTF-8)};

Transport trans = session.getTransport(smtp);
trans.connect(relay.muni.cz, 25, null, null);
try {
 trans.sendMessage(msg, mailto);
} catch (SendFailedException sfex) {
...

tak mi to žádnou vyjímku nevyhodí, a když navíc zaregistruji
TransportListener tak to na něm dokonce zavolá messageDelivered().

A až potom dojde na moji adresu email s

   - The following addresses had permanent fatal errors -
sdhajsdha...@ibm.com
(reason: 550 5.1.1 sdhajsdha...@ibm.com... User unknown)

Čili můj program to předá SMTP serveru na relay.muni.cz,
ten to přijme, kontaktuje SMTP server v ibm.com, ten zprávu
odmítne doručit a tak relay.muni.cz pošle e-mail na adresu odesílatele,
že nemůže zprávu doručit. Ale z hlediska SMTP v JavaMailu to bylo odesláno.

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: servlet a staticka metoda

2009-07-28 Tema obsahu Martin Kuba
Peter Stibrany napsal(a):
 Mam tu po ruke Servlet 2.4 specifikaciu. V casti SRV 2.2 Number of
 Instances sa pise:
 
 For a servlet not hosted in a distributed environment (the default), the 
 servlet
 container ***must use only one instance per servlet declaration.***
 
 Servlet declaration sa mysli deklaracia vo web.xml.

Jen doplním, to znamená, že když ve web.xml bude deklarace
dvou servletů se stejnou třídou, např.

servlet
  servlet-names1/servlet-name
  servlet-classcz.neco.MujServlet/servlet-class
  init-param
param-nameparametr/param-name
param-valuehodnota1/param-value
  /init-param
   /servlet

servlet
  servlet-names2/servlet-name
  servlet-classcz.neco.MujServlet/servlet-class
  init-param
param-nameparametr/param-name
param-valuehodnota2/param-value
  /init-param
   /servlet

tak budou existovat dvě instance třídy MujServlet, a každá dostane
jinou hodnotu inicializačního parametru parametr.

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: fronta pro zpracování dlouhých udílos ti ve webovém kontejneru

2009-07-27 Tema obsahu Martin Kuba
Michal Bernhard napsal(a):
 A pak je tu, jak uz bylo zmineno klasicky JavaMail, ktery je soucasti
 jee kontejneru (jako jboss, glasfish..aj), ale ten byva oznacovan jako
 tezkopadny. Kazdopadne api pro sledovani dorucitelnosti mailu ma - viz
 javax.mail.event.TransportListener#messageNotDelivered(TransportEvent e)

No, nějak se mi nechce věřit, že by to pro SMTP protokol mohlo fungovat.
Před mnoha lety jsem řešil, jak detekovat nedoručitelné emaily přes JavaMail 
API,
a zjistil jsem, že problém leží o úroveň níž. Neexistuje totiž
jednotný způsob, jak SMTP server oznámí odesilateli, že e-mail nelze doručit.

Obvykle SMTP server vygeneruje nový email na adresu MAIL FROM:
z *obálky* e-mailu (nikoliv z hlavičky e-mailu) a do něj podle
vkusu implementátora SMTP serveru nějak napíše, že email se nedá doručit.
Ale nedá se to nějak automaticky parsovat, implementací SMTP serverů je příliš 
mnoho.

Jako nejlepší řešení jsem tehdy použil to, že jsem do obálky a do hlavičky
dal různé adresy odesílatele, a adresa v obálce měla v sobě zakódovanou
identifikaci zprávy.

Ovšem existují firmy/instituce, kde se příchozí e-maily meziukládají před 
doručením,
čímž se ztratí obálka e-mailu, a případné nedoručení se pošle pak na adresu
z From: hlavičky. Takže úspěšnost detekce byla něco kolem 98%.

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Vytvoreni instance parametru, ktery je zadan v genericke tride

2009-06-16 Tema obsahu Martin Kuba
To nejde, protože pro generickou třídu existuje jen jeden soubor .class
a parametrizace v době překladu už není k dispozici v době běhu.

Vím o třech způsobech, jak tohle řešit:

1) nepoužívat pole, ale ListT, protože vytvořit instanci Listu
   je triviální

2) zapamatovat si  třídu, kterou se parametrizuje, tj.

   ClassT_DB classDb;
   ClassT_WSDL classWsdl;

   //konstruktor
   public DbToWsdlConvertor(ClassT_DB classDb, ClassT_WSDL classWsdl) {
this.classDb = classDb;
this.classWsdl = classWsdl;
   }

   public T_WSDL[] dbTypeArrayToWsdlArray() {
  T_WSDL[] ret = ( T_WSDL[] ) Array.newInstance(classWsdl, tmp.length ) ;
  ...
   }

3) využít fintu odkoukanou z Hibernate spočívající v tom, že anonymní
   potomek vzniklý parametrizací generické třídy má ve svém .class
   zakompilováno, jakou třídou se parametrizovalo. Při použití
   se musí používat anonymní potomci generické třídy, tj.

   DbToWsdlConvertorTridaA,TridaB d2w =  new 
DbToWsdlConvertorTridaA,TridaB() { };

   a pak lze použít

   ClassT classDb = (ClassT) ((ParameterizedType) 
getClass().getGenericSuperclass()).getActualTypeArguments()[0];
   ClassT classWsdl = (ClassT) ((ParameterizedType) 
getClass().getGenericSuperclass()).getActualTypeArguments()[1];

   pro zjištění, čím bylo parametrizováno.

Makub


vkrejcirik napsal(a):
 Dobry den, chtel bych se zeptat jak by slo vytvorit instanci  parametru
 genericke tridy. Mam nasledujici kod:
 
 public class DbToWsdlConvertorT_DB, T_WSDL {
 ...
 public T_WSDL[] dbTypeArrayToWsdlArray() {
 ...
 v teto metode potrebuji vytvorit instanci pole prvku typu T_WSDL.
 Pokousel jsem se na to jit takto:
 
 ParameterizedType type = (ParameterizedType)
 this.getClass().getGenericSuperclass();
 Class classWsdl = (Class) type.getActualTypeArguments()[1];
 T_WSDL[] ret = ( T_WSDL[] ) Array.newInstance(classWsdl, tmp.length ) ;
 
 Bohuzel dostavam java.lang.ClassCastException: java.lang.Class
 
 Mohl by mi nekdo poradit? Dekuji
 


-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: JDBC PreparedStatement a navrat primary key

2009-05-26 Tema obsahu Martin Kuba
No, hodilo by se v dotazu uvést, o jakou databázi a jaký JDBC driver se jedná.
Z toho returning id soudím, že je to nejnovější PostgreSQL, protože
tohle je jeho specialitka, to není standardní SQL.

Podle popisu metody Statement.executeBatch(), který říká

Returns:
an array of update counts containing one element for each command in the 
batch.

soudím, že vygenerované id se takhle získávat nedají. Musí se
v cyklu volat executeQuery(). Nebo, a to bude lepší,
získat ty id předem pomocí volání

select nextval('foo_id_seq')

a nastavit je do dávky jako parametry, takže nebude nutné
z dávky nic vracet.

Makub

Dusan Zatkovsky napsal(a):
 Ahoj.
 
 Potrebujem do primitivnej tabulky, ktora ma id INTEGER PRIMARY KEY, vlozit 
 tisicky zaznamov a ziskat s5 priradene id. Snazim sa na to pouzit 
 PreparedStatement ( insert into foo ( ... ) returning id as integer ) a 
 jeho batch funkcionalitu.
 
 for ( ... ) {
   st.setString(..);
   st.addBatch();
 }
 
 Neviem vsak tie vygenerovane id ziskat, pretoze:
 
 A.st.executeBatch();  // toto hodi SQL ex, ze nebol 
 ocakavany result
   ResultSet rs = st.getGeneratedKeys();
 
 B.ResultSet rs = st.executeQuery()// toto vrati len 1 
 zaznam
 
 Je vobec tato funkcionalita mozna pomocou batch, alebo musim v tom prvom 
 cykle 
 vzdy volat executeQuery() v kazdom cykle? Rad by som sa totiz vyhol zbytocnym 
 RTT medzi klientom a databazou.
 
 Dik.
 


-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: JDBC PreparedStatement a navrat primary key

2009-05-26 Tema obsahu Martin Kuba
Pssal hned v úvodním emailu, že getGeneratedKeys() mu hází vyjímku,
a hlavně getGeneratedKeys() funguje jenom když
DatabaseMetaData.supportsGetGeneratedKeys() vrací true,
což bohužel není případ PostgreSQL.

Makub

Karel Zacek napsal(a):
 Ahoj
 
 Vygenerovana id by melo jit ziskat pomoci metody 
 PreparedStatement.getGeneratedKeys(), ale asi to nepujde pro celou davku.
 
 karel
 
 Martin Kuba wrote:
 No, hodilo by se v dotazu uvést, o jakou databázi a jaký JDBC driver
 se jedná.
 Z toho returning id soudím, že je to nejnovější PostgreSQL, protože
 tohle je jeho specialitka, to není standardní SQL.

 Podle popisu metody Statement.executeBatch(), který říká

 Returns:
 an array of update counts containing one element for each command
 in the batch.

 soudím, že vygenerované id se takhle získávat nedají. Musí se
 v cyklu volat executeQuery(). Nebo, a to bude lepší,
 získat ty id předem pomocí volání

 select nextval('foo_id_seq')

 a nastavit je do dávky jako parametry, takže nebude nutné
 z dávky nic vracet.

 Makub

 Dusan Zatkovsky napsal(a):
  
 Ahoj.

 Potrebujem do primitivnej tabulky, ktora ma id INTEGER PRIMARY KEY,
 vlozit tisicky zaznamov a ziskat s5 priradene id. Snazim sa na to
 pouzit PreparedStatement ( insert into foo ( ... ) returning id as
 integer ) a jeho batch funkcionalitu.

 for ( ... ) {
 st.setString(..);
 st.addBatch();
 }

 Neviem vsak tie vygenerovane id ziskat, pretoze:

 A.st.executeBatch();// toto hodi SQL ex, ze nebol
 ocakavany result
 ResultSet rs = st.getGeneratedKeys();

 B.ResultSet rs = st.executeQuery()// toto vrati len 1 zaznam

 Je vobec tato funkcionalita mozna pomocou batch, alebo musim v tom
 prvom cykle vzdy volat executeQuery() v kazdom cykle? Rad by som sa
 totiz vyhol zbytocnym RTT medzi klientom a databazou.

 Dik.

 


   


-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Property Change Support

2009-05-26 Tema obsahu Martin Kuba
Tomas Hubalek napsal(a):
 Vsechno chapu, jedine co mi neni jasne je, proc neexistuje ve standardu
 nejaky takovyto interface:
 
 public interface BeanWithBoundProperties {
void addPropertyChangeListener(PropertyChangeListener listener);
void removePropertyChangeListener(PropertyChangeListener listener);
 }

Nevím, ale odhaduju, že je to proto, že se dá zaregistrovat listener buď
pro změny všech properties, nebo jenom pro konkrétní.

Takže není jasné, jestli by ten interface měl mít výše zmíněnou  metodu,
nebo metodu

void addPropertyChangeListener(String propertyName, PropertyChangeListener 
listener);

nebo obě.

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: embedovatelny textovy editor

2009-05-22 Tema obsahu Martin Kuba
Stejskal Jindřich napsal(a):
 Dobry den,
 Nevite někdo a nejakem textovem editoru v jave
 ktery by sel jednoduse vlozit do GUI aplikace?
 aby umel highlighting atp.

Co tohle ?

http://www.pushing-pixels.org/?p=355

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: getResourceAsStream() na aplikacnom serveri

2009-05-19 Tema obsahu Martin Kuba
Dusan Zatkovsky napsal(a):
 ConfigManager ma staticku metodu loadDefaults(), v ktorej vola:
 
   InputStream in = new 
 Object().getResourceAsStream(/my/package/name/defaults.cfg);

Takhle to určitě není, protože getResourceAsStream() je metoda třídy 
java.util.Class,
a new Object() není výraz typu java.util.Class. Mělo by to být

this.getClass().getResourceAsStream(/my/package/name/defaults.cfg);

 Zvlastne je, ze som nikde v domain1 nenasiel Common.jar, *ConfigManager*.* 
 ani 
 defaults.cfg, napriek tomu
 ten servlet ConfigManager vidi. Uploaduju sa na server iba skompilovane 
 class-y? To by to vlastne vysvetlovalo.

servletové aplikace mají zkompilované třídy v WEB-INF/classes
a JARy v WEB-INF/lib, takže bych hledal WEB-INF/lib/Common.jar

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: getResourceAsStream() na aplikacnom serveri

2009-05-19 Tema obsahu Martin Kuba
Martin Kuba napsal(a):
 Dusan Zatkovsky napsal(a):
 ConfigManager ma staticku metodu loadDefaults(), v ktorej vola:

  InputStream in = new 
 Object().getResourceAsStream(/my/package/name/defaults.cfg);
 
 Takhle to určitě není, protože getResourceAsStream() je metoda třídy 
 java.util.Class,
 a new Object() není výraz typu java.util.Class. Mělo by to být
 
 this.getClass().getResourceAsStream(/my/package/name/defaults.cfg);

Až po odeslání jsem si všiml, že je to statická metoda, takže to má být

ConfigManager.class.getResourceAsStream(/my/package/name/defaults.cfg);

Makub

-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Prenos velkych suborov do z klienta do webservice

2009-04-07 Tema obsahu Martin Kuba

Dusan Zatkovsky napsal(a):
S tym servletom je to vyborny napad, akurat vobec netusim, ako to 
naprogramovat ( web je moja slaba stranka ) :)


Tak tady to je :-)

public class PutServlet extends HttpServlet {
@Override
protected void doPut(HttpServletRequest request, 
HttpServletResponse response) throws ServletException, IOException {


ServletInputStream in = request.getInputStream();
byte[] buffer = new byte[4096];
BufferedOutputStream out = new BufferedOutputStream(new 
FileOutputStream(/tmp/soubor));

int n;
while((n=in.read(buffer))!=-1) {
out.write(buffer,0,n);
}
out.close();
in.close();
response.setStatus(HttpServletResponse.SC_OK);
}
}

a namapovat ho ve web.xml třeba takto:

servlet
servlet-namePutServlet/servlet-name
servlet-classcz.makub.PutServlet/servlet-class
/servlet
servlet-mapping
servlet-namePutServlet/servlet-name
url-pattern/put/*/url-pattern
/servlet-mapping

a klient může použít HTTP klienta z JDK:

public class PutClient {
public static void main(String[] args) throws IOException {
HttpURLConnection uc = (HttpURLConnection) new 
URL(http://localhost:8080/putapp/put/file;).openConnection();

uc.setRequestMethod(PUT);
uc.setDoOutput(true);
BufferedInputStream in = new BufferedInputStream(
new FileInputStream(veliky_soubor));
byte[] buffer = new byte[4096];
int n;
OutputStream out = uc.getOutputStream();
while ((n = in.read(buffer)) != -1) {
out.write(buffer, 0, n);
}
in.close();
out.close();
int responseCode = uc.getResponseCode();
System.out.println(responseCode =  + responseCode);
}
}

Samozřejmě čtení a ukládání souborů je třeba předělat
na něco reálného.

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--




smime.p7s
Description: S/MIME Cryptographic Signature


Re: JavaMail + Sign + Encrypt

2009-04-07 Tema obsahu Martin Kuba


Emaily jsem úspěšně podepisoval přímo pomocí BouncyCastle, zdrojáky
můžu v případě zájmu poslat. Proč potřebujete nad skákacím hradem
ještě nějakou nadstavbu ?

Makub

Gabriel Gajdos napsal(a):

Zdravim vsetkych...

Potrebujem poradit s podpisovanim e-mailov s vyuzitim JavaMail.
Funkcne example JavaMail mam uz za sebou...
Nasiel som tool Javamail-crypto (http://javamail-crypto.sourceforge.net/),
ktory pracuje s BouncyCastle S/MIME provider implementaciou
(http://www.bouncycastle.org/latest_releases.html)...

Podla prvých testov je to funkcne, ale zarazili ma dve veci:
1. posledna verzia tohto API je z roku 2006 (!)
2. nefunguje to s balikmi BouncyCastle pre JDK 1.6
- v podstate som to rozchodil iba z balikmi pre Java 1.4.

Otázka:
  viete o nejakom lepsom/vhodnejsom free API pre podpisovanie a kryptovanie
e-mailov?

Vdaka za tipy...

GG





--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--




smime.p7s
Description: S/MIME Cryptographic Signature


Re: Prenos velkych suborov do z klienta do webservice

2009-04-06 Tema obsahu Martin Kuba

Dusan Zatkovsky napsal(a):
Je este nejaka ina cesta, ako prenasat subory pomocou WS? Povodne som totiz 
navrhoval, ze klient si s ws iba pokeca a samotny prenos obstara tretia 
strana, pravdepodobne nejaky ssl socket, ktoremu da webservica echo o 
klientovi a nejake autorizacne data, ktorymi sa potom klient ohlasi. Problem 
je, ze je to pre mna dalsi overhead, spojeny mimo ineho aj s vecami s javou 
nesuvisiacimi ( povolit dalsie porty u klienta a tak podobne ).


Posílání přes webservice mi přijde jako jeden extrém, a posílání
přes speciální socket jako druhý extrém. Nestačilo by ten soubor
poslat normálně přes HTTP ? A nemyslím jako přílohu formuláře,
ale metodou PUT. Stačilo by si pak napsat jednoduchoučký servlet, který
by četl tělo requestu a přímo ho zapisoval do souboru.

A aby to bylo webservicové, přes SOAP by se klient mohl dozvědět
to správné URL pro HTTP PUT.

Pokud jde o *opravdu* velké soubory, tj. gigabajty až terabajty,
pak narazíte na omezení TCP protokolu, a nezbude než použít
stripovaný transfer (více souběžných TCP spojení). Pak
doporučuji použít bbftp http://doc.in2p3.fr/bbftp/ případně gridftp.

Makub
--
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: Inicializacia JDBC ovladaca

2009-04-02 Tema obsahu Martin Kuba
Ahoj ve spolek,

ještě bych k tématu poznamenal, že používání DriverManager je od Javy 1.4 
zastaralé, viz
http://java.sun.com/javase/6/docs/api/java/sql/DriverManager.html

 The DataSource interface, new in the JDBC 2.0 API, provides another way
 to connect to a data source. The use of a DataSource object is the preferred
 means of connecting to a data source.

Problém s DataSource trochu je, že v JRE není jeho implementace,
tu má dodat výrobce JDBC ovladače.

Jako optimální se mi nyní jeví použít pro přístup k databázi Spring,
protože ten obsahuje různé implementace DataSource, zejména
org.springframework.jdbc.datasource.DriverManagerDataSource,
a tudíž můžu stejný kód používající DataSource použít
jak v desktopové aplikaci bez connection poolingu, tak ve webové aplikaci
s connection poolingem, jenom v konfiguraci měním implementaci DataSource.

S použitím třídy SimpleJdbcTemplate je pak práce s JDBC opravdu
příjemná, mohu doporučit. Vyráběl jsem k tomu onehdy návod, kdyby to někoho
zajímalo, je tady: http://kore.fi.muni.cz:5080/wiki/index.php/Spring_JDBC

Makub


Zdenek Tronicek napsal(a):
 Dobry den,
 
 presne tak. Kdyz napisete do kodu new MyDriver();, tak svazete aplikaci
 s konkretnim driverem. Proto se ustalila konvence, ze driver ma staticky
 inicializator, ktery jej zaregistruje u DriverManager:
 
 public class MyDriver implements Driver {
 
 static {
 DriverManager.registerDriver(new MyDriver());
 }
 ...
 }
 
 Pak staci natahnout tridu driveru do pameti. Bud pres Class.forName()
 nebo nastavenim property jdbc.drivers na prikazove radce.
 
 Z.T.


-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--


Re: Inicializacia JDBC ovladaca

2009-04-02 Tema obsahu Martin Kuba
Robert Novotny napsal(a):
 V nich nevidim rozdiel medzi Class.forName a new Driver().
 Podla toho, co pisete, oba napevno zadrotuju ovladac
 do aplikacie.

Rozdíl je v tom, že new Driver() se musí řešit za kompilace, kdežto
Class.forname() až za běhu. Tj. Class.forName() může název třídy
přečíst z konfiguračního souboru, takže ovladač není napevno zadrátovaný.

Ono vůbec není potřeba použít ani Class.forName(),
dá se to specifikovat při startu VM pomocí systémové property, tj.

java -Djdbc.drivers=org.postgresql.Driver

Ale v případě triviálních aplikací které se nebudou nikdy používat
je to skutečně jedno.

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: teorie: prirazeni jako argument

2009-03-30 Tema obsahu Martin Kuba
Nazval bych to přiřazení je výraz, protože jsou jazyky, kde přiřazení je 
příkaz.

Výraz (expression) má hodnotu, která se dá použít v dalším výrazu,
kdežto příkaz (statement) hodnotu nemá a ve výrazu se použít nedá.

Podobný případ jako přiřazení jsou prefixový a postfixový increment a decrement,
tj. ++i i++ --i i--, taky jsou to vlastně příkazy změny hodnoty, které ale mají
výslednou hodnotu a dají se použít jako výraz.

Makub


Pavel Kolesnikov napsal(a):
 Nevím, jak to pojmenovat, ale oporu pro toto chování najdete v Java
 Language Specification, sekce 15.26 Assignment Operators:
 
http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#5281
 
 konkrétně ve větě
 
   At run time, the result of the assignment expression is the value
 of the variable
after the assignment has occurred.
 
 Pavel
 
 2009/3/30 David Vana david.v...@ness.com:
 Zdravim konferenci,

 Naledujici funkcnost neumim spravne pojmenovat - pracovne jsem si to nazval 
 prirazeni jako argument.

 01: int i = 5;

 02: System.out.println(i = i + 5);

 Potreboval bych pojmenovat skutecnost, ze ono prirazeni (i = ...) funguje 
 stejne, jako kdybych metode println() predal promennou i po vyhodnoceni i + 
 5 nasledovne:

 01: int i = 5;

 02: i = i + 5;

 03: System.out.println(i);

 Navic bych potreboval nejaky oficialni (nejlepe online) zdroj, kde se da 
 docist, ze to funguje a proc to tak funguje.

 PS: Nejde mi o princip pass-by-value.

 David


-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: CZJUG Březen - Webové frameworky

2009-03-19 Tema obsahu Martin Kuba
Lukas Zapletal napsal(a):
 A taky se dají přímo Rails spustit v JRuby :-)
 
 :-)
 
 Navic jsem se tak dival na netu a vypada to, ze JRuby je stejne pomale
 jako Ruby - tj. neni to zadna slava.
 
 http://shootout.alioth.debian.org/u32/benchmark.php?test=alllang=javalang2=jrubybox=1

To já jsem našel měření, podle kterého je JRuby zhruba 5x rychlejší než
Ruby 1.8  a zhruba stejně rychlé jako Ruby 1.9
http://antoniocangiano.com/2008/12/09/the-great-ruby-shootout-december-2008/

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: CZJUG Březen - Webové frameworky

2009-03-19 Tema obsahu Martin Kuba
Lukas Zapletal napsal(a):
 Ano Wicket a Stripes se mi libi v posledni dobe nejvic :-D

Wicket jsem nezkoušel, ale Stripes se mi taky líbí v poslední době
nejvíc :-)

Mimochodem, 4. března vyšla nová verze Stripes 1.5.1, a přidává
poslední věc, která mi ve Stripes chyběla, totiž možnost
mít v odkazech odkaz na fragment dokumentu, tj. na konci URL #neco.

Teď už jenom čekám, kdy se 1.5.1 objeví v Maven 2 repository
a mé štěstí bude dokonalé :-)

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: CZJUG Březen - Webové frameworky

2009-03-18 Tema obsahu Martin Kuba
Lukas Zapletal napsal(a):
 Existuje nejaky webovy framefork podobny *Rails ale kde se pise kod v
 ciste Jave (zadny Groovy a jiny jazyky)? Neco na rychle prototypy
 webovych aplikaci / mini-projekty. Nechtel bych se ucit novy jazyk,
 resp. aby se cely tym musel ucit novy jazyk. Nejaka doporuceni?

Existuje Trails http://trailsframework.org/

A taky se dají přímo Rails spustit v JRuby :-)

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


Re: WCMS

2009-03-09 Tema obsahu Martin Kuba
Aleš Ondrúš napsal(a):
 Dakujem vsetkym za prispevky. Nakoniec sme sa rozhodli pre OpenCMS,
 predsa len s PHP na ktorom je zalozeny Drupal mame malo skusenosti. Co
 sa tyka zdrojov informacii o OpenCMS tak vieme:
 
 * o dokumentacii na OpenCMS.org
 * o konferencii
 * o eBook:
   o Building Web Sites with OpenCMS
   o Managing And Customizing OpenCMS 6 Websites Java JSP Xml
 Content Management
   o OpenCms 7 Development
 
 Vedeli by ste prosim poradit este nejake dalsie zdroje? Pokusal som sa
 zistit ci Alkacon Software poskytuje platenu dokumentaciu ale zatial bez
 odozvy. :-(

Při instalaci se vybírají moduly k nainstalování, a je možno
zvolit instalaci dokumentace, případně se dají ty moduly s dokumentací
stáhnout tady:
http://www.opencms.org/en/download/documentation.html

Kupodivu tahle dokumentace není na webu normálně přístupná, alespoň ne
oficiálně, ale dají se najít její kopie, třeba tady:
http://www.bng-galiza.org/opencms/opencms/alkacon-documentation/index.html

Bohužel ta dokumentace je dost stručná, občas je to až frustrující,
např. dokumentace k JSP taglib je naprosto hrozná:
http://www.bng-galiza.org/opencms/opencms/alkacon-documentation/documentation_taglib/docu_tag_contentloop.html

Trochu víc informací se dá najít na wiki:
http://www.opencms-wiki.org/Main_Page

Makub
-- 
~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Scienceemail: ma...@ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--



smime.p7s
Description: S/MIME Cryptographic Signature


  1   2   3   4   5   >