RE: Je to písmeno nebo není ...

2009-12-11 Tema obsahu Rudolf PECINOVSKÝ
To bude tím, že se v Javě 5 přecházelo na jinou verzi normy Unicode konkrétně z 
verze 2.1 z roku 1998 (ta ale oproti verzi 2.0, s níž Java začala, přidala 
jenom znak eura) na verzi 4.0 z roku 2003. 

Šestka podle mne implementuje verzi 5.0 z roku 2006. Ta udělala zase pár 
kotrmelců - možná že ta změna interpretace háčku je jedním z nich. Každopádně 
se v šestce třídy pro normalizaci znaků (převod háčko-čárkovaných písmen na 
dvojici znak - diakritika a zpět) přestěhovaly z balíčku sun.text do java.text 
a navíc se jejich metody i trochu změnily včetně požadovaných parametrů.

Pozor - v roce 2010 se chystá Unicode verze 6.0, takže můžeme v příští Javě 
čekat v práci se znaky zase nějaké drobné změny.

Rozpovídal jsem se jenom proto, abyste věděli, že i věc, o níž si člověk myslí, 
že už je dávno usazená, může pořád překvapovat - viz problém s diakritikou.


Preji krasny den
Have a nice day

°
Rudolf  P E C I N O V S K Y

Senior EDU Expert, ICZ a.s.

Associate Professor
Department of information technologies
University of Economics, Prague

Tel:   +420 244 101 764
GSM:   +420 603 330 090
ICQ:158 156 600 
Jabber: pecinov...@jabbim.cz

rud...@pecinovsky.cz 
rudolf.pecinov...@i.cz
°


> -Původní zpráva-
> Od: konference-boun...@java.cz [mailto:konference-boun...@java.cz] za
> uživatele Petr Franta
> Odesláno: pátek 11. prosince 2009 09:59
> Komu: konference@java.cz
> Předmět: Je to písmeno nebo není ...
> 
> Začaly mi padat testy a po bádání jsem dospěl k tomuto:
> Znak "háček" bez písmene - \u02C7 není v JDK 1.4 znak, ale v JDK 1.6
> už znakem je! Asi těch znaků bude více, ale pro mne je to překvapením
> ...
> 
> public class Test {
>  /**
>   * Test znaku.
>   */
>  public static void main(String[] args) {
>char ch = '\u02C7';
> 
>System.out.println("Znak: " + ch + " " + (int) ch + " " +
> Character.isLetterOrDigit(ch));
>  }
> }
> 
> C:\Program Files\Java\jdk14\bin>java -version
> java version "1.4.2_06"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_06-b03)
> Java HotSpot(TM) Client VM (build 1.4.2_06-b03, mixed mode)
> 
> C:\Program Files\Java\jdk14\bin>java Test
> Znak: ˇ 711 false
> 
> c:\Program Files\Java\jdk16\bin>java -version
> java version "1.6.0_14"
> Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
> Java HotSpot(TM) Client VM (build 14.0-b16, mixed mode, sharing)
> 
> c:\Program Files\Java\jdk16\bin>java Test
> Znak: ˇ 711 true
> 
> 
> __ Informace od ESET NOD32 Antivirus, verze databaze 4677
> (20091210) __
> 
> Tuto zpravu proveril ESET NOD32 Antivirus.
> 
> http://www.eset.cz
> 
 

__ Informace od ESET NOD32 Antivirus, verze databaze 4677 (20091210) 
__

Tuto zpravu proveril ESET NOD32 Antivirus.

http://www.eset.cz
 



RE: jakou literaturu do zacatku?

2007-12-23 Tema obsahu Rudolf PECINOVSKÝ
> rad bych se zacal vice venovat programovani v Java. Do ted 
> (cca 8 let) 
> jsem programoval spise pro sve potreby nebo par veci pro 
> zakazniky, a to 
> prevazne v shellu, php a perlu, vse na Linuxu. Rad bych 
> pronikl vice do taju OOP a Javy.

Prechodem na Javu prechazis nejenom na novou syntaxi, ale také na nove
paradigma. Chces-li vytvaret programy, které budou opravdu objektove
orientovane a nebudou to jenom nejake objektove se tvarici spatlaniny
pouzivajici tridy, mel bys dostat pod kuzi trochu OOP mysleni.

Naucit se syntaxi muzes za jedno odpoledne. Naucit se objektove premyslet,
to vyzaduje myslenkovy kotrmelec, který beznym programoatorum trva vice nez
rok. (Uvadi se, ze preskoloeni klasickeho programatora na objektove
orientovaneho trva 12-18 mesicu - cim zkusenejsi, tim dele).

Jedinou ceskou knihou, která te uci objektove programovat, je "Myslime
objektove v jazyku Java" a na ni volne navazujici (byt jinym nakladatelem
vydana) "Navrhove vzory"

Z anglickych bych ti mohl doporucit "Head First Object-Oriented Analysis &
Design" a "Head First Design Patterns". 

Knihu "Head First Java" bych nedoporucoval, protože se soustredi spise na
syntaxi a objektve orientovanem mysleni ti moc nepovi.



RE: Eclipse a NetBeans

2007-12-05 Tema obsahu Rudolf PECINOVSKÝ
> mám dotaz jestli existuje nějaký plugin, který dokáže 
> exportovat Netbeans projekty do Eclipse project formátu.

Ja si myslim, ze to vubedc není potrewba, protože to, co se zbytkem fimry
sdilis, jsou zdrojove kody a ne format projektu. U nas ve firme pracuji
programatori ve ctyrech ruznych IDE - každý ve svem oblibenem, a nikde s tim
problemy nejsou.

Ja sam prepinam podle momentali potreby tech ci onech funkci mezi BlueJ -
NetBeans - Eclipse a nemam s tim zadny problem. 



RE: hashset contains wtf

2007-05-23 Tema obsahu Rudolf PECINOVSKÝ
> Děkuji za objasnění, už rozumím (naprosto dokonale). 
> Jednoznačně je to chyba v javadoc. 

Možná se moje odpověď nebude někomu líbit, ale podle mne v javadoc chyba
není. Toto chování vyplývá z vlastností hešových tabulek a měla by to proto
vysvětlit učebnice (nebo lektor) jako obecnou vlastnost všech objektů
využívajících hešových tabulek. Jestli k vám takováto informace ještě
nepronikla, spílejte svým učitelům a autorům učebnic, z nichž jste se Javu
učili.

Rozlišujte javadoc a učebnici. Kdyby se měly dávat do javadoc i takovéto
věci, tak tam za chvíli někdo bude chtít vysvětlit, jak funguje interface
nebo jiný jazykový konstrukt. Pro javadoc by mělo stačit prohlášení, že daný
kontejner je definován pomocí hešových tabulek, a to tam je.

Tím nechci říst, že by javadoc nějakou drobnou zmínku na toto téma nesnesl,
ale chápu, proč se Sunům nechce do něj dávat věci, které mají být primárně
vysvětleny jinde. Já bych jim spíš vyčítal, že tuto informaci nedali do
tutoriálu (leda bych ji tam ve své slepotě nenašel) - tam podle mne patří.
Já bych tam zařadil kapitolku o hešových tabulkách, na kterou by se pak
odvolávaly všechny kapitoly pojednávajících o kontejnerech, které jsou na
hešových tabulkách založeny.



RE: swing literatura

2007-01-10 Tema obsahu Rudolf PECINOVSKÝ
> Nevite nekdo o slusne literature "java swing". Pokud mozno v cestine.
> diky Tomas

Pro začátečníka např.
Horton: Java 5.0
Moc mne sice nenadchla, ale o jiné české pro začátečníka nevím.
 

-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.5.432 / Virus Database: 268.16.8/621 - Release Date: 09.01.07 út 
13:37
 



RE: Udalosti klavesnice

2006-11-02 Tema obsahu Rudolf PECINOVSKÝ
> Tento kód ma vypísať kód klávesy, ktorú stlačím. Keď stalačím hociaku
> klavesu, tak mi vypise 0. Prvy krat pracujem s udalosťami klavesnice.
> Takže tam bude nejaká chyba,ktorú neviem najisť.

Zkus si upravit kód následovně (pak to začne chodit):

public class Udalosti extends java.applet.Applet
   implements java.awt.event.KeyListener

{
//definujeme premenne
int kp, kr, kt;


public void init()
{
addKeyListener(this);
}

//teraz to vypiseme

public void paint (Graphics auto)
{
auto.drawString("KP=" + kp + ",  KR=" + kr + ",  KT=" + kt ,
   10,10);
}

//zachyti stalacenie klavesy
public void keyPressed(java.awt.event.KeyEvent ke)
{
//kod klavesy
kp = ke.getKeyCode();
repaint();
}

//zachyti uvolnenie klavesy
public void keyReleased(java.awt.event.KeyEvent ke)
{
kr = ke.getKeyCode();
repaint();
}

public void keyTyped(java.awt.event.KeyEvent ke)
{
kt = ke.getKeyChar();
repaint();
}

} 

-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.409 / Virus Database: 268.13.22/512 - Release Date: 01.11.06 st
 



RE: lama dotaz: NullPointerException vs. IllegalArgumentException

2006-09-27 Tema obsahu Rudolf PECINOVSKÝ
> Zdravim konferenci, chtel bych se zeptat jestli existuje nejaky padny 
> duvod proc vyhazovat NullPointerException misto 
> IllegalArgumentException pokud metoda dostane argument, ktery nesmi 
> byt nulovy. Pokud je to jedno, pak by me zajimalo kterou z vyjimek 
> vyhazujete vy.

Já v tomto případě dávám přednost výjimce IllegalArgumentException, protože se 
opravdu
jedná o špatnou hodnotu parametru. 

NullPointerException ponechávám na systému, který ji vyhazuje v případech 
uvedených v
dokukentaci. Řekl bych, že je to výjimka určená pro nevhodné přímé použití 
prázdného
odkazu a ne pro jeho předání jako parametru.

Jinými slovy: Výjimka NullPointerException bude vyhozena, když udělám chybu já,
IllegalArgumentException když udělá chybu ten, kdo moje metody volá a předá jim 
na
nevhodném místě prázdný odkaz (null).

-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.407 / Virus Database: 268.12.9/457 - Release Date: 26.09.06 út
 



RE: Literatura

2006-08-13 Tema obsahu Rudolf PECINOVSKÝ
> Zrovna se Javu ucim a "Thinking in Java" od Eckela mne prijde pro
> zacatecnika, ktery se chce Javu naucit, jako prvni knizka nejlepsi.

Záleží na tom, o jakého začátečníka se jedná. Pro člověka, který se potřebuje 
naučit syntaxi Javy, je určitě dobrá (ostatně já jsem se z ní také učil). Pro 
člověka, který ještě neumí objektově programovat ale znám lepší. 

Její nevýhodou pro opravdové začátečníky je, že se omezuje opravdu jen na 
syntaxi a vůbec se nesnaží čtenáři ukázat, jak má v Javě přemýšlet, takže 
čtenář po jejím přečtení sice programuje v Javě, ale dál v ní patlá své 
strukturované programy. Kniha totiž ani vzdáleně nenaznačuje, že pracovat s 
objekty ještě neznamená objektově programovat.

Vynechám-li tu svoji, tak knihy, které se snaží naučit opravdu objektově 
programovat, jsem zatím objevil jen tři: 

Head First Design Patterns 
Lepší z nich. Neomezuje se pouze na výklad návrhových vzorů, ale opravdu se 
snaží čtenáře naučit objektově přemýšlet. Mrzí mne na ní, že je místy trochu 
plytká a řídká a že je postavena pouze na AHA-příkladech, ale znám řadu lidí, 
kterým to nevadí. Kniha ale předpokládá základní znalost syntaxe Javy

Object First with Java
Ta je určena pro naprosté začátečníky a autor se snaží čtenáře naučit 
programovat opravdu objektově, nicméně to dělá jen polovičatě. Např. rozhrnaí 
vysvětluje až ke konci knihy a navíc je primárně zavádí jako náhražku násobné 
dědičnosti.

Big Java
To je takový hybrid mezi klasicky pojatou učebnicí probírající syntaxi a 
knihovny a učebnicí snažící se naučit objektově programovat. Autor již 
vysvětluje i mnohé ze zásad OOP, ale těžiště výkladu je přece jenom blíže té 
klasíce.


> O logickych operatorech & a | se nezminuje, to me taky
> prekvapilo, ale inicializace u anonymnich trid tam popsana je.

Inicializaci anonymních tříd vysvětluje až ve třetím vydání (já jsem se učil z 
druhého), k lepšímu vysvětlení serializace se však nepropracoval ani tam. 
Čtvrté jsem prozatím v ruce neměl.



> A pak mne jeste zaujala "Just Java".

Ta mi, bohužel, zatím rukama neprošla

-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.405 / Virus Database: 268.10.9/417 - Release Date: 11.08.06 pá
 



RE: Literatura

2006-08-13 Tema obsahu Rudolf PECINOVSKÝ
> Nejlepsi knizky co jdou trochu do hloubky jsou podle me 
> pripravne knizky k 
> certifikacim - at uz Head first edice nebo klasicke, napr. od Sybexu.

Obavam se, ze tady se neshodneme. Ani "Head First", any sybexovske certifikace 
do hloubky nejdou. Ledaze byste v te dopovedi daval duraz na "trochu". Ony 
totiž jdou do hloubky opravdu jenom trosku (ono to nastesti pro ziskani 
certifikace staci).

Knihy "Core Java", o nichž jsem se tu zminoval, jdou ale do rozumne, pro 
praktického programátora potřebné hloubky a jdou do ni doopravdy a 
systematicky. Ne tak jako Eckel, který si najde zajimavou malickost, kterou 
rozpitva do mrte, ale pak se zapomene na zakladni věci – napr. zminit se o 
logickych operatorech & a |, či vysvětlit, jak serializovat instance tříd s 
řízeným počtem instancí nebo jak definovat konstruktor anonymni tridy.

-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.405 / Virus Database: 268.10.9/417 - Release Date: 11.08.06 pá
 



RE: Literatura

2006-07-28 Tema obsahu Rudolf PECINOVSKÝ



Pro člověka, který che znát věci trochu do hloubky a nemusí 
se učit základy porgramování je podle mne jednou z nejlepších dvojice knih 
Core Java:
Vol I - Fundamentals - ISBN 
0-13-148202-5
Vol II - Advanced Features - ISBN  
0-13-111826-9


--
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.394 / Virus Database: 268.10.4/402 - Release Date: 27.07.06 èt
 


RE: Add to array objects

2006-04-13 Tema obsahu Rudolf PECINOVSKÝ
> ... nevim jak tam pridat 
> komponentu, kdyz mam toto
> jDesktopPane = new JDesktopPane[jDesktopPane.length+1];
> 
> tak se mi to proste vymaze, poradte mi jak to resite?

To se nevymaže - prostě se vytvoří nový objekt a odkaz v proměnné jDesktopPane 
se
nasměruje na něj.
Pokud na ten původní už nikdo neukazuje, stane se kandidátem na odstranění.

Potřebuješ-li přidávat složky do vektoru (=jednorozměrného pole) po jedné, 
použij např.
ArrayList.

-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.385 / Virus Database: 268.4.1/310 - Release Date: 12.04.06 st
 



RE: special Window keys

2006-03-10 Tema obsahu Rudolf PECINOVSKÝ



Souhlasím s tím, že je to prasárna. Nicméně je-li to někdy 
doopravdy potřeba, lze to udělat tak, že si dotyčný programátor nadefinuje 
vlastní ovladač klávesnice a ten vnutí systému místo toho původního. Ovladač 
nemusí být kompletní - stačí aby stisky kritických kláves konvertoval na nějaké 
jiné a zbytek práce pak nechal na původním 
ovladači.


--
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.375 / Virus Database: 268.2.1/278 - Release Date: 09.03.06 èt
 


RE: Numericke operace na typem Double

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

Opak je pravdou



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

Jak kde - mně vychází: 
39.9 * 0.1 = 3.99
39.9 + 0.1 = 40.0
V programu:
public static void test() {
System.out.println("\f");
double a = 39.9;
double b = 0.1;
System.out.println( a + " * " + b + " = " + (a*b) );
System.out.println( a + " + " + b + " = " + (a+b) );
}

Díval jste se opravdu dobře na to, co zadáváte?



> Hle ona chyba se z trinacte pozice prenesla hned na treti. 

Jak jsem byl ukázal, chyba naopak nebyla vůbec žádná. Nicméně i kdyby byla 
taková, jak
jste psal, tak se v žádnom případě nepřesunula na třetí pozici, ale byla na 
jedenácté,
protože ten výsledek byl urrčitě výsledek nějakého sčítání a ne násobení. Leda 
byste měl
nějaký nabouraný koprocesor.



> Je vysoka pravdepodobnost ze se vyskytnou pripady kdy se 
> takova chyba prenese dokonce na pozici druhou. 

Když program napíšu blbě, tak opravdu ano.



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

Trpí jimi všechny programovací jazyky, protože všechny jazyky používají v 
počítači
stejný koprocesor, který tyhle výpočty provádí. Jediný rozdíl je v tom, jakou 
používáte
proceduru pro tisk - pokud používáte v jednom jazyku zaokrouhlovací proceduru a 
v druhém
ne, nemůžete jejich výsledky porovnávat. 

Začněte v Dephi tisknout s přesností na 15 desetinných míst a budete dostávat 
stejné
výsledky jako u prinln v Javě. Budete-li naopak používat formátovaný výstup v 
Javě,
vůbec takovéte drobné odchylky nezaznamenáte.

Používejte printf a porovnávejte hodnoty korektně a máte po starostech.



-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.375 / Virus Database: 268.0.0/267 - Release Date: 22.02.06 st
 



RE: Numericke operace na typem Double

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

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

abs(d2 - d1) < eps

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

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

abs(1 - d1/d2) < eps

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

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


-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.375 / Virus Database: 268.0.0/267 - Release Date: 22.02.06 st
 



RE: Numericke operace na typem Double

2006-02-23 Tema obsahu Rudolf PECINOVSKÝ
> Nemate tuseni proc se v JAVA napriklad 39.9 / 10 = 3.9898?
> 
> Potrebuji cislo zaokrouhlit napr. na dve desetina mista. Puziji 
> jednocuchy vzorec  Math.round(cislo * 100) / 100 bohuzel konkretne u 
> cisla zmineneho vise to nejak nevychazi. Nevite co s tim?

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

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

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

formátovaný výstup 

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

budeš mít po starostech - vytiskne se

39.9 / 10 = 3.99

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

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

-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.375 / Virus Database: 268.0.0/267 - Release Date: 22.02.06 st
 



RE: Prevod kodovani znaku

2006-02-10 Tema obsahu Rudolf PECINOVSKÝ
> nehlede na to ze se pise Göethe :-)

Tak teď jste mne dostal - vždyť ono by se to jinak muselo číst krátce!

Takže tohle je zrovna protipříklad, že ö se někdy může převádět na o.

Život není jednoduchý.

-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.375 / Virus Database: 267.15.4/255 - Release Date: 09.02.06 čt
 



RE: Prevod kodovani znaku

2006-02-10 Tema obsahu Rudolf PECINOVSKÝ
> > Uvedená metoda má jednu nevýhodu: neumí převádět 
> přehlasovaná písmena, která
> > se převádějí na dvojice znaků - např. Göthe -> Goethe apod. 
> Když převedete
> > Göthe na Gothe, bode to vypadat dost blbě.
> No ze to vypada blbe. Ale prece ceske slovo Kočka taky nechcete
> prevadet na Koczka, to by pak byl prevod na ascii podle toho jak to
> pismeno zni v mluvenej reci.

Hovoříme každý o něčem jiném. Já hovořím o tom, jak se to má přivádět správně a 
vy dáváte protipříklad, že se to nemá převádět blbě.

Pravidla pro převod do podoby bez diakritiky nikde nehovoří o tom, že by se 
kočka měla převádět na koczku - o něčem takovém opravdu nevím. Vy snad ano?

Ale tato pravidla jasně hovoří o tom, že přehlasované ä, ö a ü se převádějí na 
ae (např. maedchen), ö na oe (např. Goethe) a ü na ue (např. Muenchen - Mnichov 
- viz www.muenchen.de). Když budete místo Goethe psát Gothe apod., tak se jenom 
ztrapníte.

-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.375 / Virus Database: 267.15.4/255 - Release Date: 09.02.06 čt
 



RE: Prevod kodovani znaku

2006-02-10 Tema obsahu Rudolf PECINOVSKÝ



Uvedená metoda má jednu nevýhodu: neumí převádět 
přehlasovaná písmena, která se převádějí na dvojice znaků - např. Göthe -> 
Goethe apod. Když převedete Göthe na Gothe, bode to vypadat dost 
blbě.

  Na javacentrum.sk vo faq je jedna taka metoda, 
  ale mne momentalne javacentrum nefici.
   
  Bolo to myslim toto:
   
  
    private static final String tab00c0=  
  "AAAC"+  "DNO\u00d7\u00d8YI\u00df"+  
  "aaac"+  
  "\u00f0no\u00f7\u00f8y\u00fey"+  
  "AaAaAaCcCcCcCcDd"+  "DdEeEdEdEdEdGgGg"+  
  "GgGgHhHhIiIiIiIi"+  "IiJjJjKkkLlLlLlL"+  
  "lLlNnNnNnnNnOoOo"+  "OoOoRrRrRrSsSsSs"+  
  "SsTtTtTtUuUuUuUu"+   "UuUuWwYyYZzZzZzF";
    public static String internationalToEnglish( String source 
  ){  char[] vysl = new 
  char[source.length()];  char one 
  ;  for( int i = 0 ; i     
  (i);    if( one>='\u00c0' & 
  one <='\u017f' )  (int)one - '\u00c0' 
  );    
  vysl[i]=one;  
  }  return new 
  String(vysl);    }
  On 2/10/06, Lukas 
  Fiala <[EMAIL PROTECTED]> wrote: 
     
Zdravim,potreboval nejakou sikovnou tridu na "odhackovani" narodnich 
znaku zruznych znakovych sad do cisteho ascii. Tedy odsraneni ruznych 
hacku, carek, sprezek, ocasku a podobnych veci. Mel by jste nekdo 
tip?   
Lukas Fiala
  --No virus found in this incoming message.Checked by 
  AVG Free Edition.Version: 7.1.375 / Virus Database: 267.15.4/255 - Release 
  Date: 09.02.06 èt


--
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.375 / Virus Database: 267.15.4/255 - Release Date: 09.02.06 èt
 


RE: generic type array

2006-01-27 Tema obsahu Rudolf PECINOVSKÝ
Abys mohl vracet požadovaný typ, musel bys zadat do parametru pole s příslušným 
typem
položek. Pole hodnot parametrizovaného typu však nelze vytvořit, taže se budeš 
muset s
tou varovnou hláškou smířit, anebo si pořídit verzi Javy, jejíž překladač již 
bude
akceptovat zákaz vydávání varování typu "unchecked".

> 
>  Chápu správně, že tohle:
> 
>  return list.toArray(new LinkedHashMap[list.size()]);
> 
>  Nejde v Jave 1.5 doplnit o generický typ 
> LinkedHashMap, tak aby to negenerovalo 
> 'unchecked' chybu?

-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.375 / Virus Database: 267.14.23/242 - Release Date: 26.01.06 čt
 



RE: Inlining v javac 1.5

2006-01-24 Tema obsahu Rudolf PECINOVSKÝ
> No, mozna jsem uplne mimo misu, ale principialne v zadnem jazyce nemuze 
> prekladac udelat inlinovat protected a public metodu, kdezto u private to 
> udelat muze ;-) A staci na to trivialni preprocesor, ktery ma na inlining 
> treba Idea. Totez plati pro runtime. 

Pro runtime platí trochu jiná pravidla. Když překladač zjistí, že metodu nikdo
nepřekrývá, může ji klidně "inlinovat" a když se podzději natáhne další třída, 
která
danou metodu překryje, tak prostě přeloží danou část kódu znovu, tentokrát s 
klasickým
voláním.

-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.375 / Virus Database: 267.14.22/238 - Release Date: 23.01.06 po
 



RE: Konstruktory

2005-11-22 Tema obsahu Rudolf PECINOVSKÝ
> > Ted si jenom nekde nastudovat co je to "tovarni metoda" ;-) Jak se
> > tomu rika anglicky? Mam k ruce jen knizku "Java in a
> > nutshell", kde jsem zadnou zminku o "factory method" nenasel.

Vzor, o kterém tu byla rec, se nejcasteji oznacuje jako "Jednoduchá tovární 
metoda"
(Simple Factory Method), což je degenerovaná (ve smyslu zjednodušená) vere 
obecné
tovární metody (Factory Method).

Java in Nutshell je prírucka syntaxe a knihovny. Ty o návrhových vzorech 
vetšinou
nehovorí.

Hledáte-li zmínku v ceské literature, zkuste moji "Myslíme objektove v jazyka 
Java 5.0".
Není to sice ´kniha o návrhových vzorech, ale pouze zacátecnická prírucka 
programování,
ale návrhové vzory vcetne zmínené jednoduché tovární metody (i když ji tam 
oznacuji
pouze jako "tovární metoda") tam jsou rozebrány (a zrovna u tovární metody je 
podrobne
zduvodneno kdy a jak ji použít).

Smíríte-li se s anglictinou, najdete skvelý výklad v knize "Head First Design 
Patterns",
a níž tu nedávno bežela rec

Chcete-li neco zdarma, zkuste Java Design Patterns - napr. na
http://www.patterndepot.com/put/8/JavaPatterns.htm
Není sice tak dobrá jako Head First, ale je zadarmo. Navíc ukazuje príklady 
návrhových
vzoru na trídách ze standardní knihovny.

Zdarma se dá stáhnout také Eckelova "Thinking in Patterns" 
(www.bruceeckel.com), ale ta
má tu nevýhodu, že autor predpokládá, že ctenár cetl "Design Patterns". Autor 
tam sice
prezentuje radu zajímavých názoru, ale musím priznat, že po Head First mne ta 
kniha už
moc nenadchla.

Bude-li vám nekdo doporucovat knihu "Design Patterns v OOP", která je také 
zdarma ke
stažení (a navíc je cesky), tam tam bych vás varoval, že autor se zabývá pouze 
tou
obecnejší verzí návrhového vzoru "Factory Method" a k takovým trivialitám, jako 
je
jednoduchá tovární metoda, se nesnižuje. Jako výchozí bod ke studiu návrhových 
vzoru je
však tato kniha (hlavne pro exaktneji zamerené ctenáre) velmi dobrá.

-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.362 / Virus Database: 267.13.5/177 - Release Date: 21.11.05 po
 



RE: Konstruktory

2005-11-20 Tema obsahu Rudolf PECINOVSKÝ
Druhou možností oproti té, kterou navrhoval Láda, je použít místo konstruktoru 
tovární
metodu.

V knize "Myslíme objektove v jazyku Java 5.0" jsem to trochu rozebíral - pust 
si to
nekde v knihkupectví pres palec.

-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.362 / Virus Database: 267.13.4/175 - Release Date: 18.11.05 pá
 



RE: Head First Design Patterns

2005-09-29 Tema obsahu Rudolf PECINOVSKÝ
> Chtěl bych se tu podělit o příjemný zážitek z jedné knihy.
> 
> Jedná se o knihu "Head First Design Patterns", info viz
> http://www.headfirstlabs.com/books/hfdp/index.html
> Upozornil mě na ni Heinz Kabutz ve svém sqělém Java Newsletter,
> http://www.javaspecialists.co.za/archive/print/Issue112.html
> Hned jak jsem si ten newsletter přečetl, objednal jsem ji
> a už si ji třetí den užívám :-)

Jedovatě bych si dovolil poznamenat, že jsme se tu o této řadě knih bavili 
někdy na jaře
a společně s Jirkou Hradilem jsme je docela chválili. Možná ne tak velkolepě 
jako
zmiňovaný článek, ale zato mnohem dřív.

-- 
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.344 / Virus Database: 267.11.8/114 - Release Date: 28.09.05 st
 



RE: Sort String[][]

2005-09-29 Tema obsahu Rudolf PECINOVSKÝ
> Nevie mi niekto portadit, ako najefektivnejsie utriedit 
> String[][] podla zadaneho sltpca? Mam tabulku podobnu ako v 
> Exceli a snazim sa utriedit riadky podla daneho stlpca. V 
> systeme mam okolo 10.000 riadkov a asi 15 stlpcov.

Já bych definoval Comparator, kterému bych v konstruktoru řekl, podle které 
položky
dodaných vektorů řetězců se má rozhodnout o tom, který ze svých parametrů 
prohlásí jako
větší. No a pak bych třídil za pomoci tohoto Comparator-u.

-- 
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.344 / Virus Database: 267.11.8/114 - Release Date: 28.09.05 st
 



Co znamena "umet programovat"

2005-07-21 Tema obsahu Rudolf PECINOVSKÝ
Umět programovat = optimálně využívat prostředky, které jsou k dispozici a umět
programovat podle zásad, ke kterým programátorská kounita postupně dopěla. 

Tyto zásady však ve většině učebnic nenajdete, protože to jsou především 
učebnice
syntaxe jazyka. 

Potkal jsem např. několik programátorů, kteří byli líní vymýšlet byť jednoduchá
modifikační pravidla a místo cyklu používali příkaz copy-paste s tím, že v 
každém
opakování změnili příšlušné parametry ručně.

Potkal jsem řadu programátorů, kteří sice používali OOP jazyky, ale jejich 
programy byly
sestaveny z několika málo obludných tříd (někdy také z jediné).

Znám řadu (i vysokoškolských) učebnic, jejichž autoři tvrdí, že rozhraní v Javě 
je
náhražkou násobné dědičnosti znáné např. z C++. Informace o tom, že současné
programování dává implementaci rozhraní přednost před dědičnost, se k nim ještě
nedonesla.

Znám programátory, kteří mne přesvědčovali, že místo volání bezparametrické 
procedury je
výhodnější skočit na příslušný kód a pak zase zpět, protože takovýto skok je o 
něco
rychlejší.

Znám programátory (mezi nimi i lektory a vysokoškolské učitele), kteří se stále
domnívají, že dědičnost slouží především k využití již naprogramovaných funkcí 
bez
ohledu na logiku aplikace. Jsou potom schopni definovat obdélník jako potomka 
bodu
(příklady z učebnice programování a seriálu v SN), cyklistu, který potřebuje 
přeskákat
potok po kamenech, jako potomka žáby (příklad z jednoho školení), letadlo jako 
potomka
dvou křídel (příklad citovaný v jedné učebnici) atd., atd.

Nedávno se mi jedna učitelka chlubila pracemi svých žáků, jejichž metody byly 
dlouhé
přes několik obrazovek. Když jsem se jí snažil vysvětlit, že moderní 
programování je
nepřítelem dlouhých metod, cítila se dotčena.

Příkladů "jak ne" bych mohl jmenovat mraky. Setkáváme se s nimi především 
proto, že se v
učebnicích jen opravdu zřídka vyskytuje rozumně obsáhlý výklad toho, "jak ano". 

Vyložit syntaxi dá totiž méně práce a autor si přitom nekoleduje o to, aby se 
do něj
ostatní pustili za to, že "to, co on ano, tak oni ne".

-- 
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.323 / Virus Database: 267.9.2/53 - Release Date: 20.07.05 st
 



RE: Chyba v prekladu...

2005-07-18 Tema obsahu Rudolf PECINOVSKÝ
> Pokud jste viděli učebnici, o které byste v klidu řekli, že by 
> Vaši maminku/ženu/dceru programovat naučila, budu velice, ale 
> velice vděčen za info. 

Maminka už je ve věku, kdy se odmítá učit obsluhovat mobilní telefon. Nicméně 
ženu i
dcery jsem už částečně zblbnul, protože dělaly redakci mých knih a jako 
vedlejší ofekt
tu tam něco pochytily.

Ale abych se vrátil k tomu, proč to píšu. Zkuste se někde podívat po knihách
nakladatelství O'Reilly z edice Head First. Jejich učebnici Javy jsem sice v 
ruce neměl
(a ta je právě pro začátečníky), ale viděl jsem jiné a např. u Design Patterns 
se mi
zdálo, že by se z ní dokázal naučit lépe programovat i leckdo z těch, kteří 
běžným
metodám výuky docela vzdorují.

Nesoustředí se v ní jenom na popis vzorů, sle snaží se čtenáři vštípit i jejich 
ducha a
spolu s tím se jej snaží naučit i další zásady, jak se má a nemá programovat. 
Je to
jedna z mála knih, které doopravdy učí programovat.

Rád bych napsal podobnou, jenom trochu méně ukecanou a trochu méně americkou.

-- 
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.323 / Virus Database: 267.9.0/43 - Release Date: 16.07.05 so
 



RE: Chyba v prekladu...

2005-07-17 Tema obsahu Rudolf PECINOVSKÝ
Odpovídám pozdě a ne na dotaz, ale přesto:

Naprostým začátečníkům doporučuji používat nějaké jednoduché vývojové 
prostředí, které
je odstíní od takových specialit, jako je třeba nastavování classpath. Připadá 
mi
nemoudré, vysvětlovat zákonitosti tohoto nastavování někomu, kdo má plně kecky 
toho, aby
se vůbec naučil základy jazyka. Myslím si, že na podobné věci je dost času 
poté, až
dotyčný tyto základy zvládne a pochopí význam nastavování classpath v 
souvislostech.

Jak jsem již mnohokrát naznačil, nevíc se mi na většině učebnic nelíbí, že 
začátečníky
neučí programovat, ale jenom je seznámí se syntaxí jazyka v bláhové naději, že 
umění
programovat přijde jako vedlejší efekt. Ale to je už jiná pohádka.

-- 
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.323 / Virus Database: 267.9.0/43 - Release Date: 16.07.05 so
 



RE: Náhrada mocniny (^) v C

2005-06-27 Tema obsahu Rudolf PECINOVSKÝ
Operátor ^ znamená bitové XOR v C stejně jako v Javě

Céčkový operátor >> nad číslem bez znaménka se v Javě realizuje pomocí 
operátoru >>>.

Tohle bys měl ale najít v kažeé základní učebnici jazyka.

> -Původní zpráva-
> Od: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] za uživatele [EMAIL PROTECTED]
> Odesláno: pondělí 27. června 2005 10:09
> Komu: [EMAIL PROTECTED]
> Předmět: Náhrada mocniny (^) v C
> 
> 
> Potřebuji převést několik metod z DLL knihovny (psáno v C) do javy.
> Nedokážu si ale poradit s tímto výrazem:
> 
> long CRC32tab[256] = {
> 0x, 0x77073096, 0xee0e612c, 0x990951ba, ... }
> 
> long CRC32(unsigned char value, long crc) {
>   return  CRC32tab[(unsigned 
> char)(crc^((long)(value)))]^(long)(((unsigned
> long)crc >> 8) & 0x00ff);
> }
> 
> Největší problém vidím v té mocnině. Java má sice metodu 
> Math.pow(double a, double b) , ale ta není příliš použitelná 
> (přetéká).
> Jinak přdpokládám, že crc >> 8 by se dalo nahradit crc / 256.
> 
> Poradí někdo ?
> 
> 
> 
> 
> --
> No virus found in this incoming message.
> Checked by AVG Anti-Virus.
> Version: 7.0.323 / Virus Database: 267.8.2/29 - Release Date: 
> 27.06.05 po
>  
> 

-- 
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.323 / Virus Database: 267.8.2/29 - Release Date: 27.06.05 po