# [Zápočet] Java 21.1.2009

<{ForumPost(poster="Osiris", timestamp=2009-01-21 12:18:08)}>
Dneska jsme měli naprogramovat variaci na unixovský cut:  
  
Program měl běžet ve dvou modech, s delimiterama, pak bral pole podle oddělovačů, a binární mód, který bral co znak, to sloupec  
parametry byly takovehle (b je binarni mod):

    program -d delimiter -f pole 
    program -b pole   

Prislo mi to docela lehke, ale zasekl jsem se na regularnich vyrazech, takze jsem to dodelal asi 45 minut pred koncem, nez mi to Hnetynka uznal.  
  
\[\[ slouceno by Hypiz ]]
<{/ForumPost}>

<{ForumPost(poster="Necroman", timestamp=2009-01-21 13:27:41)}>
Dnesni zadani bylo na prvni pohled lehke, ale nachytalo se na nem dost lidi:

    vytvorte alternativu linuxoveho prikazu  cut  - program cte data ze std vstupu a pise na std vystup. z kazdeho radku zobrazi ty sloupce, oddelene zadanym oddelovacem, ktere jsou zadane v prikazu. parametry:
    -d : - nastaveni oddelovace na jednotlivych radcich
    -f 2,3-5,-7,4- - nastaveni, ktere sloupce vybrat, muze byt zadan jeden, interval ci z jedne strany otevreny interval
    -b 2,3-5,-7,4- - vypsat ne sloupce, ale znaky ci intervaly znaku na dane pozici, intervaly jsou stejne, jako u -f

v mem pripade jsem mel zaklad hotovy za hodinu, druhou hodinu jsem ladil problemy s indexy, kterych bylo mraky, dalsi pul hodinu problem se spatne pochopenym zadanim :) a posledni pulhodinu to, ze jsem oddelovac posilal primo do string.split a pokud byl oddelovac jako regex, tak to delalo problemy. Nakonec jsem to s primhourenymi oci dal, ale kdyz jsem na samem konci odchazel, dobre jeste 10 lidi tam sedelo a nevypadalo to, ze by to dokoncili.
<{/ForumPost}>

<{ForumPost(poster="Control", timestamp=2009-01-21 14:02:52)}>
Doplneni zadani  
  
Clovek si mohl byt jisty ze:  
- oddelovacem nebude   
 (vstup se mohl nacitat po radcich)  
- rozsahy x-y, kde x > y mohl oznamit jako chybu  
  
Pozor:  
* Pri parsovani rozsahu (napr. 1-5) pozor, pokud zavolate Integer.parseInt("-5") udela presne to, co ma vrati -5.  
  
* Pokud budete spoustet program z konzole z pomoci "java -jar ./dist/jmenoVasehoProjektu.jar < vstupniData" tak pri kazdem buildu v NetBeansy adresar ./dist/ smazou a znovu vytvori => filedescriptor zustane v pameti (protoze mate otevreny terminal ve kterem jste v adresari /dist/).   
Dusledkem bude, ze v danem okne terminalu nebudou v ./dist/ zadne soubory a spusteni pres java -jar vyhodi: "jmenoVasehoProjektu.jar is unreachable".  
Moznym resenim je spoustet vse pres:  
cd `pwd` ; java -jar ./dist/jmenoVasehoProjektu.jar < vstupniData  
  
* Pozor taky, pokud naalokujete prilis mnoho pameti (samotne netbeans berou radove stovky Mb) system Vam sestreli X-ka (stalo se mi, ze se pc po spusteni programu (s chybou) sam "odhlasil")  
  
* Potvrzuju, ze alespon pro 8 lidi to nebyla posledni navsteva zapoctoveho terminu z Javy... a to nebyl Swing/sitoviny/thready
<{/ForumPost}>

<{ForumPost(poster="HonzaK", timestamp=2009-01-28 20:42:00)}>

 > Necroman wrote: ...a posledni pulhodinu to, ze jsem oddelovac posilal primo do string.split a pokud byl oddelovac jako regex, tak to delalo problemy.

Mohl byste, prosim, nekdo popsat o jake problemy slo a jak ste je resili ? Podle dokumentace by metoda split mela brat jako oddelovac prave regexp, takze bych cekal, ze to bude fungovat rovnou...?!  
Diky
<{/ForumPost}>

<{ForumPost(poster="Necroman", timestamp=2009-01-28 22:36:30)}>

 > HonzaK wrote:
 >  > Necroman wrote: ...a posledni pulhodinu to, ze jsem oddelovac posilal primo do string.split a pokud byl oddelovac jako regex, tak to delalo problemy.
 > 
 > Mohl byste, prosim, nekdo popsat o jake problemy slo a jak ste je resili ? Podle dokumentace by metoda split mela brat jako oddelovac prave regexp, takze bych cekal, ze to bude fungovat rovnou...?!  
 > Diky

Pokud zadas jako oddelovac treba \ nebo \[ nebo . nebo jakykoliv jiny specialni znak z reg. vyrazu, tak mas problem... je treba je manualne odescapovat pridanim \pred nej. Jako vstup do string.split musi byt spravny regularni vyraz a to v tomto pripade neni treba samotny backslash.
<{/ForumPost}>

