home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 June / Chip_2004-06_cd1.bin / chplus / interval / clanek04.htm < prev    next >
Encoding:
Extensible Markup Language  |  2004-05-01  |  19.5 KB  |  244 lines

  1. <?xml version='1.0' encoding='windows-1250'?>
  2. <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
  3. <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='cs' lang='cs'>
  4. <head>
  5. <meta http-equiv='Content-Type' content='text/html; charset=windows-1250' />
  6. <meta http-equiv='Content-language' content='cs' />
  7. <meta http-equiv='Cache-control' content='no-cache' />
  8. <meta http-equiv='Pragma' content='no-cache' />
  9. <meta http-equiv='Expires' content='0' />
  10. <meta name='robots' content='index, follow' />
  11. <meta name='googlebot' content='index, follow, noarchive' />
  12. <meta name='description' content='Interval.cz - Internetov² magazφn o webdesignu, v²voji webov²ch aplikacφ a e-komerci. VÜe podstatnΘ o technologiφch XHTML, HTML, CSS, DHTML, JavaScript, XML, .NET, ASP, PHP, Java, J2ME, SQL, WAP...' />
  13. <meta name='keywords' content='Interval' />
  14. <meta http-equiv='imagetoolbar' content='no' />
  15. <meta http-equiv='MSThemeCompatible' content='no' />
  16. <meta name='MSSmartTagsPreventParsing' content='true' />
  17. <meta name='ICBM' content='49.1915, 16.626' />
  18. <meta name='DC.Title' content='Interval.cz' />
  19. <meta name='DC.Identifier' content='http://interval.cz' />
  20. <meta name='DC.Language' content='cs' />
  21. <link rel='alternate' type='text/xml' title='RSS' href='http://interval.cz/__rss/rss.asp' />
  22. <link rel='shortcut icon' href='favicon.ico' />
  23. <link rel='first' href='http://interval.cz/clanek.asp?article=2561' />
  24. <link rel='prev' href='http://interval.cz/clanek.asp?article=2848' />
  25. <link rel='up' href='http://interval.cz/serial.asp?serial=27' />
  26. <link rel='home' href='http://interval.cz' />
  27. <link rel='search' href='http://interval.cz/search_ex.asp' />
  28. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/html4.css' />
  29. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/basic_all.css' />
  30. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/homepage_all.css' />
  31. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/articles_all.css' />
  32. <link rel='stylesheet' type='text/css' media='print' href='__services/styles/articles_print.css' />
  33. <title>Interval.cz - denn∞ o tvorb∞ webu a e-komerci</title>
  34. </head>
  35. <body class='interval interval-articles'>
  36. <div id='page-header'><div id='interval-logo'><h1 title='Interval.cz - denn∞ o tvorb∞ webu a e-komerci (logo & index link)'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz'>Interval.cz<span></span></a></h1></div><div id='advertising-page-header'></div><div class='page-maker'> </div></div>
  37. <div id='page-topmenu'><h2 class='textversion'>Navigace</h2><div id='page-mainmenu'><h3 class='textversion'>Hlavnφ menu</h3><ul><li class='first selected'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz'>Titulnφ strana</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=14'>Webdesign</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=15'>V²voj aplikacφ</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=18'>E-komerce</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=17'>Nßstroje</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz?idcategory=16'>Magazφn</a></li><li class='right selected'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.inshop.cz'>Knihkupectvφ</a></li><li class='right'><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interforum.interval.cz'>Interforum</a></li></ul></div><div id='page-mainmenu-maker'> </div></div>
  38. <div id='page-body'><div id='page-left'><div id='article'>
  39.  
  40.  
  41.  
  42. <h2>J2ME v kostce - jak na zvuk I</h2>
  43. <p id='prepend'>Ve standardnφm MIDP 1.0 byste podporu zvuku hledali marn∞. Co s tφm, pokud p°esto chcete u₧ivatele sv²ch her obÜ¥astnit ·chvatn²mi a nezapomenuteln²mi zvuky, bez nich₧ by to prost∞ nebylo ono? Cht∞ necht∞ budete muset nejspφÜ pou₧φt proprietßrnφ API v²robc∙ telefon∙. V tomto Φlßnku vßs seznßmφm s Φßstφ Mobile Multimedia API, t²kajφcφ se zvuku.</p>
  44.  
  45.  
  46. <h3>Mobile Media API</h3>
  47. <p>Knihovna <a href='http://java.sun.com/products/mmapi/overview.html'>Mobile Media API</a> (MMAPI - JSR-135) rozÜi°uje J2ME o prßci s multimΘdii, nap°φklad audiem a videem. Podmno₧ina MMAPI, zab²vajφcφ se zvukem, je souΦßstφ MIDP 2.0, ale vyskytuje se i na nezanedbatelnΘm mno₧stvφ telefon∙, kterΘ implementujφ pouze MIDP 1.0. Jak tvrdφ <a href='http://jal.sun.com/webapps/device/device?api=41'>p°ehled telefon∙ s J2ME</a> p°φmo u Sunu, jde o nov∞jÜφ telefony od firem Nokia a Sony Ericsson. MMAPI se vyskytuje i na n∞kter²ch telefonech znaΦky Siemens (nejspφÜ na vÜech krom∞ starÜφch model∙ jako SL45i, M50, MT50), jenom s tou fintou, ₧e se odpovφdajφcφ t°φdy nenachßzejφ v balφcφch <code>javax.microedition.media</code> a <code>javax.microedition.media.control</code>, ale v balφcφch <code>com.siemens.mp.media</code> a <code>com.siemens.mp.media.control</code>.</p>
  48. <p>Zßkladnφ t°φdou MMAPI je t°φda <code>javax.microedition.media.Manager</code>. Tato t°φda dle zadan²ch parametr∙ vytvo°φ instanci rozhranφ <code>javax.microedition.media.Player</code>, kterß slou₧φ k p°ehrßvßnφ zvukov²ch soubor∙ nebo jednohlas²ch sekvencφ t≤n∙. Nastavenφ t°φdy typu <code>javax.microedition.media.Player</code> se dßle m∙₧e ovliv≥ovat t°φdami typu <code>javax.microedition.media.Control</code>.</p>
  49.  
  50. <div class='image'><img src='podklady/bittnerova/827/media.png' alt='Architektura MMAPI' title='Architektura MMAPI' />
  51. <br /><span class='comment'>Architektura MMAPI</span></div>
  52.  
  53. <h3>Manager</h3>
  54. <p>T°φda <strong>Manager</strong> umφ vytvo°it instanci t°φdy <code>Player</code> ze vstupnφho proudu nebo na zßklad∞ zadanΘho URI. Prvnφ metoda je urΦena k p°ehrßvßnφ zvukov²ch soubor∙ ulo₧en²ch v JARu a jejφ pou₧itφ je nßsledujφcφ:</p>
  55.  
  56. <div class='sample'>
  57. try {
  58. <br />    <span class='comment'>// otev°enφ zvukovΘho souboru v JARu</span>
  59. <br />    InputStream is = getClass()
  60. <br />        .getResourceAsStream("music.wav");
  61. <br />    <span class='comment'>// vytvo°enφ instance t°φdy Player,</span>
  62. <br />    <span class='comment'>// kterß umφ p°ehrßt onen zvukov² soubor</span>
  63. <br />    Player p = Manager.createPlayer(is, "audio/x-wav");
  64. <br />    <span class='comment'>// nastavenφ poΦtu opakovßnφ zßznamu</span>
  65. <br />    p.setLoopCount(13);
  66. <br />    <span class='comment'>// spuÜt∞nφ p°ehrßvßnφ</span>
  67. <br />    p.start();
  68. <br />} catch (IOException ioe) {
  69. <br />    <span class='comment'>// nastal problΘm se Φtenφm proudu</span>
  70. <br />} catch (MediaException me) {
  71. <br />    <span class='comment'>// Player po₧adovanΘho typu nelze vytvo°it</span>
  72. <br />}
  73. </div>
  74.  
  75. <p>Pokud se v JARu zvukov² soubor nenachßzφ, zkonΦφ b∞h p°edchozφho k≤du v²jimkou <code>NullPointerException</code>, proto₧e v tom p°φpad∞ vrßtφ metoda <samp>getResourceAsStream("music.wav")</samp> hodnotu <samp>null</samp>.</p>
  76. <p>Nachßzφ-li se zvukov² soubor mimo JAR soubor aplikace, je pot°eba k jeho p°ehrßnφ pou₧φt metodu <code>Manager.createPlayer(String URI)</code>. URI je definovßno schΘmatem:</p>
  77.  
  78. <div class='sample'><protokol>:<podrobnosti zßvislΘ na protokolu></div>
  79.  
  80. <p>P°φklady URI:</p>
  81.  
  82. <div class='sample'>http://www.mujserver.cz/moje.mp3
  83. <br />ftp://nejaky.ftp.server.com/cizi.wav</div>
  84.  
  85. <p>Povinn∞ podporovanΘ typy zvukov²ch soubor∙ jsou v MIDP 2.0 "WAV (audio/x-wav)" a "MIDI (audio/midi)", nejlepÜφ je zjistit si na ka₧dΘm telefonu seznam vÜech podporovan²ch typ∙ metodou <code>getSupportedContentTypes(String protokol)</code>. Zavolß-li se s parametrem <samp>null</samp>, vrßtφ podporovanΘ typy bez ohledu na protokol. Nap°φklad telefony Sony Ericsson um∞jφ p°ehrßvat "MIDI (audio/midi)", "AMR (audio/amr)" a "iMelody (audio/imelody)".</p>
  86. <p>Na p°ehrßnφ jednoho t≤nu mß t°φda <code>Manager</code> metodu <code>playTone(int vyska, int delka, int hlasitost)</code>. V²Üka t≤nu je Φφslo od 0 do 127, p°iΦem₧ t≤nu c1 odpovφdß hodnota 60 a dßle v₧dy hodnoty liÜφcφ se o 1 odpovφdajφ notßm liÜφcφm se o p∙lt≤n.</p>
  87.  
  88. <h3>Player</h3>
  89. <p>Rozhranφ <strong>Player</strong> slou₧φ k p°ehrßvßnφ zvukov²ch dat. B∞hem svΘho ₧ivotnφho cyklu se m∙₧e ocitnout v n∞kolika stavech:</p>
  90.  
  91. <h4>Nerealizovan² stav</h4>
  92. <p>V tomto stavu se <code>Player</code> nachßzφ po svΘm vytvo°enφ. Proto₧e nemß jeÜt∞ dostatek informacφ o zvukov²ch datech, nelze v tomto stavu volat metody:</p>
  93.  
  94. <div class='list'>
  95. <ul>
  96. <li>getContentType()</li>
  97. <li>setMediaTime()</li>
  98. <li>getControls()</li>
  99. <li>getControl()</li>
  100. </ul>
  101. </div>
  102.  
  103. <p>Do nßsledujφcφho stavu p°ejde <code>Player</code> zavolßnφm metody <code>realize()</code>. Jsou-li nap°φklad zvukovß data umφst∞na na serveru, jsou v pr∙b∞hu realizace sta₧ena na mobilnφ telefon.</p>
  104.  
  105. <h4>Realizovan² stav</h4>
  106. <p>Zvukovß za°φzenφ se jeÜt∞ nealokujφ, aby zbyteΦn∞ nebyla blokovßna. Do nßsledujφcφho stavu se p°ejde metodou <code>prefetch()</code>.</p>
  107.  
  108. <h4>P°ipraven² stav</h4>
  109. <p>P°echod z p°ipravenΘho do b∞₧φcφho stavu by m∞l trvat minimum Φasu, proto v p°ipravenΘm stavu u₧ jsou alokovßna zvukovß za°φzenφ a zßsobnφky napln∞ny zvukov²mi daty, je-li to pot°eba. Do nßsledujφcφho stavu se p°ejde metodou <code>start()</code>. Po ukonΦenφ svΘho b∞hu se <code>Player</code> op∞t vrßtφ do p°ipravenΘho stavu.</p>
  110.  
  111. <h4>B∞₧φcφ stav</h4>
  112. <p>V b∞₧φcφm stavu <code>Player</code> p°ehrßvß zvukovß data. V tomto stavu nenφ u₧ mo₧nΘ nastavovat poΦet opakovßnφ zvuku metodou <code>setLoopCount()</code>.</p>
  113.  
  114. <h4>UkonΦen² stav</h4>
  115. <p>Do ukonΦenΘho stavu p°ejde <code>Player</code> z jakΘhokoli stavu volßnφm metody <code>close()</code>. V tomto stavu uvolnφ vÜechny zdroje a nedß se u₧ dßle pou₧φt.</p>
  116.  
  117. <div class='image'><img src='podklady/bittnerova/827/player.png' alt='Player - stavy' title='Player - stavy' />
  118. <br /><span class='comment'>Player - ₧ivotnφ cyklus</span></div>
  119.  
  120. <p>Obrßzek ukazuje cel² ₧ivotnφ cyklus objektu typu <code>Player</code>. Pro lepÜφ p°ehlednost z n∞j byly vypuÜt∞ny n∞kterΘ Üipky. Je-li <code>Player</code> v nerealizovanΘm stavu a zavolß se metoda <code>prefetch()</code> nebo <code>start()</code>, automaticky je zavolßna jako jejich souΦßst metoda <code>realize()</code>. Je-li <code>Player</code> v realizovanΘm stavu a zavolß se na n∞m metoda <code>start()</code>, automaticky je zavolßna jako jejφ souΦßst metoda <code>prefetch()</code>.</p>
  121.  
  122. <h4>Udßlosti</h4>
  123. <p>Pot°ebujeme-li dostßvat informace o zm∞nßch stavu t°φdy typu <code>Player</code>, je pot°eba implementovat rozhranφ <code>PlayerListener</code>, kterΘ obsahuje pouze jednu metodu <samp>playerUpdate(Player player, String typUdalosti, Object data)</samp>, a dßle si posluchaΦe zaregistrovat metodou <samp>addPlayerListener(PlayerListener posluchac)</samp>. VÜechny typy udßlostφ, kterΘ posluchaΦ m∙₧e dostßvat, obsahuje rozhranφ <code>PlayerListener</code> jako statickΘ prom∞nnΘ. Chceme-li, aby po celou dobu spuÜt∞nφ aplikace hrßla na pozadφ dokola jedna skladba a nastavenφ vysokΘho poΦtu opakovßnφ skladby se nßm nezdß jako dostateΦn∞ vhodnß metoda, m∙₧eme si zaregistrovat posluchaΦe a p°i odchycenφ udßlosti <samp>END_OF_MEDIA</samp> volat na t°φdu typu <code>Player</code> metodu <code>start()</code>.</p>
  124.  
  125. <h3>Control</h3>
  126. <p>Rozhranφ <strong>Control</strong> neobsahuje ₧ßdnΘ metody spoleΦnΘ pro ovladaΦe zvuku, slou₧φ pouze jako p°edek, ze kterΘho musφ b²t vÜechny odvozeny. V MIDP 2.0 jsou definovßna v balφku <code>javax.microedition.media.control</code> dv∞ rozhranφ, rozÜi°ujφcφ <code>Control</code>, a to <code>VolumeControl</code> a <code>ToneControl</code>.</p>
  127.  
  128. <h4>VolumeControl</h4>
  129. <p>Rozhranφ <code>VolumeControl</code> slou₧φ poze k nastavenφ hlasitosti zvuku. Hlasitost m∙₧e nab²vat hodnotu od 0 do 100. Hodnota 0 odpovφdß vypnutΘmu zvuku a 100 nejvyÜÜφ mo₧nΘ hlasitosti.</p>
  130.  
  131. <div class='sample'>
  132. <span class='comment'>// zφskßnφ ovladaΦe hlasitosti, podle dokumentace nenφ-li</span>
  133. <br /><span class='comment'>// pou₧it² nßzev t°φdy absolutnφ, p°edpoklßdß se,</span>
  134. <br /><span class='comment'>// ₧e je z balφku javax.microedition.media.control</span>
  135. <br />VolumeControl volume = (VolumeControl)
  136. <br />          player.getControl("VolumeControl");
  137. <br /><span class='comment'>// nastavenφ hlasitosti na nejvyÜÜφ mo₧nou hodnotu</span>
  138. <br />volume.setLevel(100);
  139. </div>
  140.  
  141. <h4>ToneControl</h4>
  142. <p>Rozhranφ <code>ToneControl</code> slou₧φ k p°ehrßvßnφ jednohlas²ch sekvencφ t≤n∙. Toto rozhranφ nenφ obsa₧eno v telefonech znaΦky Siemens. Pokud u₧ mßme sekvenci t≤n∙ vytvo°enou, p°ehraje se takto:</p>
  143.  
  144. <div class='sample'>
  145.     <span class='comment'>// sekvence t≤n∙ jako pole byt∙</span>
  146. <br />byte[] mySequence = ...
  147. <br />try {
  148. <br />    <span class='comment'>// vytvo°enφ t°φdy typu Player na p°ehrßvßnφ sekvencφ t≤n∙</span>
  149. <br />    Player mp = Manager.createPlayer(Manager.TONE_DEVICE_LOCATOR);
  150. <br />    <span class='comment'>// p°echod do realizovanΘho stavu</span>
  151. <br />    mp.realize();
  152. <br />    <span class='comment'>// zφskßnφ ovladaΦe typu ToneControl</span>
  153. <br />    ToneControl c = (ToneControl)
  154. <br />        mp.getControl("ToneControl");
  155. <br />    <span class='comment'>// nastavenφ skevence t≤n∙</span>
  156. <br />    c.setSequence(mySequence);
  157. <br />    <span class='comment'>// spuÜt∞nφ p°ehrßvßnφ</span>
  158. <br />    mp.start();
  159. <br />} catch (Exception ex) {
  160. <br />    <span class='comment'>// zpracovßnφ v²jimky</span>
  161. <br />}
  162. </div>
  163.  
  164. <p>┌plnß <a href='podklady/bittnerova/827/sekvence.html'>definice formßtu sekvence t≤n∙</a> je pon∞kud delÜφ, proto ji uvßdφm v externφm souboru.</p>
  165.  
  166. <h3>Poznßmka k MIDP 2.0</h3>
  167. <p>Pokud vßs blφ₧e zajφmß MIDP 2.0, je prßv∞ v tisku Φesk² p°eklad knihy <a href='http://www.oreilly.com/catalog/j2meanut/'>J2ME v kostce</a>, kterou vydßvß Grada. Tato kniha bude obsahovat takΘ mou p°φlohu, zab²vajφcφ se prßv∞ MIDP 2.0.</p>
  168.  
  169. <h3>Odkazy, zdroje</h3>
  170.  
  171. <div class='list'>
  172. <ul>
  173. <li><a href='http://java.sun.com/products/j2mewtoolkit/'>J2ME Wireless Toolkit 2.1</a> - MIDP 2.0 emulßtor od firmy Sun</li>
  174. <li><a href='http://developer.sonyericsson.com/site/global/docstools/java/p_java.jsp'>Sony Ericsson</a> - informace a emulßtory</li>
  175. <li><a href='https://communication-market.siemens.de/portal/main.aspx?pid=1'>Siemens</a> - informace a emulßtory</li>
  176. </ul>
  177. </div>
  178.  
  179.  
  180.  
  181. <div id='article-author'>
  182. <a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/autor.asp?author=144'>Bittnerovß, Lucie Rut</a> (6. 4. 2004)
  183. <div id='article-about-author'>programßtor û analytik <a href="http://www.amaio.cz">Amaio Technologies</a></div>
  184. </div>
  185.  
  186.  
  187.  
  188. </div></div>
  189. <div id='page-right'><h2 class='textversion'>Prav² sloupek</h2>
  190. <div id='search'><h3 class='textversion'>Vyhledßvßnφ</h3><form method='get' action='http://interval.cz/search.asp'><div><input type='text' name='hledej' class='text' /><input type='submit' class='submit' value='Najdi!' /></div></form><div><a href='http://interval.cz/search_ex.asp'>RozÜφ°enΘ vyhledßvßnφ</a></div></div>
  191.  
  192.  
  193.  
  194. <div class='page-right-box book'>
  195.     <h3>Kni₧nφ novinka</h3>
  196.     <div class='page-right-box-in'>
  197.         <div class='book-top'>
  198.             <h4><a href='http://interval.cz/__redirect/redirect.asp?what=interval_booknews&url=http://interval.inshop.cz/inshop/scripts/detail.asp?ItemID=250'>Zrychlete svΘ WWW strßnky!</a></h4>
  199.         </div>
  200.     </div>
  201.     <div class='image'>
  202.         <img src='podklady/knihy/image.jpg' alt='obßlka' title='obßlka' /></a>
  203.     </div>
  204.     <div class='book-bottom'>Cena: <span class='book-price-old'>390 KΦ</span> <span class='book-price-new'>351 KΦ</span></div>
  205. </div>
  206.  
  207.  
  208.  
  209. <div class='page-right-box reading'>
  210.     <h3>NejΦten∞jÜφ</h3>
  211.     <div class='page-right-box-in'>
  212.         <ul>
  213. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3276'>Webovß grafika podle TomßÜe BarΦφka</a></li>
  214. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3301'>Kompletnφ pr∙vodce XSLT - ·vod do problematiky</a></li>
  215. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3298'>Osv∞dΦenφ z ·Φetnictvφ p°es cΘdΘΦko</a></li>
  216. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3295'>Cactus - testovanie cookies</a></li>
  217. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3302'>K Φemu je nßm MathML</a></li>
  218.         </ul>
  219.     </div>
  220. </div>
  221.  
  222.  
  223.  
  224. <div class='page-right-box cauldron'>
  225.     <h3>Diskuznφ kotel</h3>
  226.     <div class='page-right-box-in'>
  227.         <ul>
  228. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3305' title='(48 komentß°∙)'>T°etφ d∞lß byznys</a></li>
  229. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3280' title='(36 komentß°∙)'>Interval.cz a jeho Φtenß°i</a></li>
  230. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3296' title='(30 komentß°∙)'>PHP pro pokroΦilΘ - znovu t°φdy a objekty</a></li>
  231. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3301' title='(24 komentß°∙)'>Kompletnφ pr∙vodce XSLT - ·vod do problematiky</a></li>
  232. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3276' title='(21 komentß°∙)'>Webovß grafika podle TomßÜe BarΦφka</a></li>
  233.         </ul>
  234.     </div>
  235. </div>
  236.  
  237.  
  238.  
  239. <div class='page-right-box emailserv'><h3>Email servis</h3><div class='page-right-box-in'><form action='prihlaseni.asp' method='post'><div class='shell'><input class='text' type='text' name='adresa' /></div><div class='shell'><input class='radio' type='radio' value='1' name='co' checked='checked' />T²dennφ p°ehled Φlßnk∙</div><div class='shell'><input class='radio' type='radio' value='2' name='co' />HELP konference</div><div class='shell'><input class='submit' type='submit' value='P°ihlßsit' /></div></form></div></div>
  240. </div>
  241. <div class='page-maker'> </div><div class='page-maker-white'> </div></div>
  242. <div id='page-foot'><div id='page-foot-menu'><a href='http://interval.cz/reklama.asp'>Inzerce na Interval.cz</a> | <a href='http://interval.cz/redakce.asp'>Redakce Interval.cz</a> | <a href='http://interval.cz/autori.asp'>Hledßme novΘ autory</a></div><div id='issn'>ISSN 1212-8651</div><div id='page-foot-zoner'>© Zoner software, s.r.o., vÜechna prßva vyhrazena, tento server dodr₧uje <a href='http://interval.cz/privacy.asp'>prßvnφ p°edpisy</a>o ochran∞ osobnφch ·daj∙.</div></div>
  243. </body>
  244. </html>