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\binjava -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\binjava Test
 Znak: ˇ 711 false
 
 c:\Program Files\Java\jdk16\binjava -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\binjava 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: 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: 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-07-28 Tema obsahu Rudolf PECINOVSKÝ



Pro lovka, který che znát vci trochu do hloubky a nemusí 
se uit základy porgramování je podle mne jednou znejlepích dvojice knih 
Core Java:
VolI - 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Ý
 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Ý
 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: Prevod kodovani znaku

2006-02-10 Tema obsahu Rudolf PECINOVSKÝ



Uvedená metoda má jednu nevýhodu: neumí pevádt 
pehlasovaná písmena, která se pevádjí na dvojice znak - nap. Göthe - 
Goethe apod. Kdy pevedete 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 ; isource.length();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: 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: 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 
 LinkedHashMapString,String, 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: 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: 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