home *** CD-ROM | disk | FTP | other *** search
/ PC World 2004 September / PCWorld_2004-09_cd.bin / novinky / Interval / 6 / clanek04.htm < prev    next >
Encoding:
Extensible Markup Language  |  2004-06-28  |  20.4 KB  |  273 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='home' href='http://interval.cz' />
  24. <link rel='search' href='http://interval.cz/search_ex.asp' />
  25. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/html4.css' />
  26. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/basic_all.css' />
  27. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/homepage_all.css' />
  28. <link rel='stylesheet' type='text/css' media='all' href='__services/styles/articles_all.css' />
  29. <link rel='stylesheet' type='text/css' media='print' href='__services/styles/articles_print.css' />
  30. <title>Interval.cz - denn∞ o tvorb∞ webu a e-komerci</title>
  31. </head>
  32. <body class='interval interval-articles'>
  33. <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>
  34. <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>
  35. <div id='page-body'><div id='page-left'><div id='article'>
  36.  
  37.  
  38.  
  39. <h2>J2ME v kostce - jak na zvuk II</h2>
  40. <p id='prepend'>V p°edchozφm Φlßnku jste se seznßmili s Φßstφ Mobile Multimedia API (MMAPI) t²kajφcφ se zvuku, tentokrßt budeme pokraΦovat p°ehledem prßce se zvukem u API firmy Nokia.</p>
  41.  
  42.  
  43. <h3>Nokia UI API</h3>
  44. <p>API obsahujφcφ obsluhu zvuku se jmenuje Nokia UI API. Toto API by m∞ly um∞t vÜechny telefony znaΦky Nokia. N∞kterΘ u₧ ovÜem obsahujφ navic i MMAPI, kter²m jsem se zab²vala v p°edchozφm Φlßnku. MMAPI mß vφce mo₧nostφ ne₧ Nokia UI API, ale kterΘ API zvolit zßle₧φ takΘ na tom, na kter²ch vÜech telefonech mß aplikace fungovat.</p>
  45. <p>Pou₧itφ t°φdy <code>Sound</code> z balφku <code>com.nokia.mid.sound</code> je celkem jednoduchΘ. Tato t°φda umo₧≥uje zahrßt t≤n danΘ frekvence a dΘlky, nebo p°ehrßt melodii ve formßtu WAV nebo RTPL (ringing tone programming language), co₧ je formßt vyzvßn∞nφ. Proto₧e ne ka₧d² telefon umφ p°ehrßt WAV a navφc je zvukov² soubor ve formßtu WAV obvykle hodn∞ velk², je lepÜφ pou₧φvat formßt RTPL, i kdy₧ umo₧≥uje hranφ pouze jednohlasΘ melodie. JakΘ formßty telefon umφ p°ehrßt, zjistφte metodou <code>Sound.getSupportedFormats</code>.</p>
  46.  
  47. <div class='sample'>
  48. <span class='comment'>// zφskßnφ podporovan²ch formßt∙</span>
  49. <br />int[] types = Sound.getSupportedFormats();
  50. <br />for(int i=0; i<types.length; i++){
  51. <br />    if(types[i]==Sound.FORMAT_WAV){
  52. <br />    <span class='comment'>// podporuje formßt WAV</span>
  53. <br />    } else if (types[i]==Sound.FORMAT_TONE){
  54. <br />    <span class='comment'>// podporuje formßt RTPL</span>
  55. <br />    }
  56. <br />}
  57. </div>
  58.  
  59. <p>Trochu nepraktickΘ je, ₧e jen n∞kterΘ emulßtory p°ehrßvajφ zvuk a obΦas i kdy₧ jej p°ehrßvajφ, je v²sledek odliÜn² od toho, co je poslΘze slyÜet z telefonu. Proto se p°i testovßnφ zvuku nespolΘhejte pouze na v²sledek dosa₧en² v emulßtoru.</p>
  60.  
  61. <h3>P°ehrßnφ jednoho t≤nu</h3>
  62. <p>Telefony se mohou liÜit tφm, jakΘ t≤ny jsou schopny zahrßt. N∞kterΘ telefony mohou zvlßdat pouze frekvence odpovφdajφcφ konkrΘtnφm t≤n∙m ze stupnice a p°i pokusu nastavit jinou frekvenci vyhodφ <code>IllegalArgumentException</code>. <a href='podklady/bittnerova/866/tony.html'>T≤ny a jejich frekvence</a> najdete v p°ipojenΘm p°ehledu.</p>
  63. <p>Pokud chcete zahrßt t≤n delÜφ ne₧ dv∞ vte°iny, m∙₧e se telefon rozhodnout vßm nevyhov∞t, a to tak, ₧e nezahraje po₧adovan² t≤n, ale ani nevyhodφ ₧ßdnou v²jimku.</p>
  64.  
  65. <div class='sample'>
  66. <span class='comment'>// Vytvo°enφ instance t°φdy Sound s danou
  67. <br />// frekvencφ t≤nu v Hz a dΘlkou t≤nu v milisekundßch.
  68. <br />// Tohle je konkrΘtn∞ 2 vte°iny trvajφcφ komornφ A</span>
  69. <br />Sound sound = new Sound(440, 2000);
  70. <br /><span class='comment'>// P°ehrßnφ t≤nu 1x</span>
  71. <br />sound.play(1);
  72. <br /><span class='comment'>// Nastavenφ dalÜφho t≤nu k p°ehrßnφ</span>
  73. <br />sound.init(880, 1000);
  74. </div>
  75.  
  76. <h3>P°ehrßnφ melodie</h3> 
  77.  
  78. <h4>FORMAT_TONE</h4>
  79. <p>Pro p°ehrßnφ melodie pot°ebujeme zvukovß data p°edat t°φd∞ <code>Sound</code> jako pole bajt∙. P°i pou₧itφ formßtu <code>Sound.FORMAT_TONE</code> je nejjednoduÜÜφ mφt toto pole bajt∙ p°φmo v n∞jakΘ t°φd∞. Dßvat zvukovß data do zvlßÜtnφch soubor∙ se m∙₧e vyplatit, je-li pot°eba zvuk vym∞nit bez kompilace aplikace.</p>
  80.  
  81. <div class='sample'>
  82. <span class='comment'>// Pole bajt∙ s melodiφ v RTPL</span>
  83. <br />byte[] data = {
  84. <br />     (byte)0x02, (byte)0x4a, (byte)0x3a, (byte)0x40,
  85. <br />     (byte)0x04, (byte)0x00, (byte)0x03, (byte)0x28,
  86. <br />     (byte)0x00
  87. <br />};
  88. <br /><span class='comment'>// Vytvo°enφ instance t°φdy Sound</span>
  89. <br />Sound sound = new Sound(data, Sound.FORMAT_TONE);
  90. <br /><span class='comment'>// P°ehrßnφ t≤nu 1x</span>
  91. <br />sound.play(1);
  92. </div>
  93.  
  94. <p>Definice syntaxe RTPL je snad jeÜt∞ mΘn∞ p°ehlednß ne₧ definice syntaxe sekvence t≤n∙ pro MMAPI z p°edchozφho Φlßnku. Lze ji nalΘzt ve specifikaci <a href='http://home.yole.ru/files/sms3_0_0.pdf'>Smart Messaging Specification</a>. NaÜt∞stφ nenφ pot°eba se syntaxφ RTPL vlastnoruΦn∞ prokousat. <a href='http://www.forum.nokia.com/main/0,6566,034-2,00.html'>Nokia Developer's Suite 2.0 for J2ME</a> obsahuje konvertor pro p°evod zvuku na pole bajt∙ ve sprßvnΘm formßtu.</p>
  95.  
  96. <div class='image'>
  97. <img src='podklady/bittnerova/866/convertor_small.png' alt='Audio Konvertor' title='Audio Konvertor' />
  98. <br /><span class='comment'>Audio konvertor (<a href='podklady/bittnerova/866/convertor.png'>plnß velikost, cca 40 kB</a>)</span>
  99. </div>
  100.  
  101.  
  102. <div class='list'>
  103. <ul>
  104. <li>Vstupnφ formßty:
  105.     <ul>
  106.     <li><strong>MIDI</strong> - net°eba p°edstavovat</li>
  107.     <li><strong>RTXML</strong> - XML formßt vyzvßn∞nφ (ringing tone)</li>
  108.     </ul>
  109. </li>
  110. <li>V²stupnφ formßty:
  111.     <ul>
  112.     <li><strong>OTA</strong> - v²stup pro OTA stahovßnφ vyzvßn∞nφ</li>
  113.     <li><strong>pole bajt∙</strong> - formßt pro vlo₧enφ do JavovΘho k≤du (tento formßt vßs bude asi nejvφc zajφmat)</li>
  114.     <li><strong>RTXML</strong> - XML formßt vyzvßn∞nφ (ringing tone), tento formßt se m∙₧e hodit, mßte-li melodii v MIDI formßtu a chcete-li ji jeÜt∞ upravit</li>
  115.     </ul>
  116. </li>
  117. </ul>
  118. </div> 
  119.  
  120. <p>Formßt RTXML je velmi jednoduch² a hodφ se na psanφ vlastnφch melodiφ, pokud umφte noty. Bohu₧el jsem k tomuto formßtu nenaÜla ₧ßdnΘ dtd, tak₧e pokud budete chtφt napsat n∞jakou komplikovan∞jÜφ melodii a nebudete v hledßnφ specifikace RTXML ·sp∞Ün∞jÜφ, nezbyde vßm, ne₧ pou₧φt n∞jak² jin² editor melodie a pak se zp∞tn∞ podφvat, jak se to dalo napsat p°φmo v RTXML.</p>
  121.  
  122. <div class='sample'>
  123. <span class='comment'><!-- Prvnφ t°i t≤ny pφsniΦky OvΦßci Φtverßci --></span>
  124. <br /><ringing-tone name="">
  125. <br />   <span class='comment'><!-- loop-value je poΦet opakovßnφ melodie --></span>
  126. <br />   <pattern id="A" loop-value="0">
  127. <br />      <span class='comment'><!-- tempo melodie --></span>
  128. <br />      <tempo value="100"/>
  129. <br />      <span class='comment'><!-- definuje v²Üku not, kterΘ za tφmto elementem nßsledujφ,
  130. <br />      nap°. je-li hodnota 1, pak nßsledujφcφ noty
  131. <br />      le₧φ v prvnφ oktßv∞ ap. --></span>
  132. <br />      <scale value="1"/>
  133. <br />      <span class='comment'><!-- Φtvr¥ovß nota G1 --></span>
  134. <br />      <note value="G" duration="1/4"/>
  135. <br />      <span class='comment'><!-- Φtvr¥ovß nota H1 (v anglicky mluvφcφch
  136. <br />      zemφch naz²vajφ notu H pφsmenem B) --></span>
  137. <br />      <note value="B" duration="1/4"/>
  138. <br />      <span class='comment'><!-- nßsledujφcφ noty jsou z druhΘ oktßvy --></span>
  139. <br />      <scale value="2"/>
  140. <br />      <span class='comment'><!-- p∙lovß nota D2 --></span>
  141. <br />      <note value="D" duration="1/2"/>
  142. <br />   </pattern>
  143. <br /></ringing-tone>
  144. </div>
  145.  
  146. <p>DΘlky not mohou b²t pouze zlomky mocnin dvojky, nejv∞tÜφ mo₧nß dΘlka je 1. K not∞ lze p°idat atribut <code>specifier="."</code>, kter² notu prodlu₧uje o polovinu jejφ dΘlky.</p>
  147.  
  148. <h4>FORMAT_WAV</h4>
  149. <p>Pro p°ehrßvßnφ zvuku ve formßtu WAV je nejsnadn∞jÜφ mφt tento zvuk v samostatnΘm souboru. Formßt WAV je elektronickou verzφ libovolnΘho audio zßznamu, tak₧e s nφm jde vytvo°it komplexn∞jÜφ zvuky ne₧ pomocφ t≤novΘho formßtu. Jak jsem vÜak uvedla d°φve, jsou zvukovΘ soubory v tomto formßtu obvykle p°φliÜ velkΘ, tak₧e v mobilnφch aplikacφch jej lze pou₧φt pouze pro kratiΦkΘ zvukovΘ vzorky.</p>
  150.  
  151. <div class='sample'>
  152. try{
  153. <br />   <span class='comment'>// otev°enφ vstupnφho proudu ze souboru 1.wav,
  154. <br />   // kter² je umφst∞n v ko°enφ JAR souboru</span>
  155. <br />   InputStream is =
  156. <br />      this.getClass().getResourceAsStream("/1.wav");
  157. <br />   byte[] b = new byte[500];
  158. <br />   <span class='comment'>// naΦtenφ maximßln∞ 500 bajt∙ ze vstupnφho proudu
  159. <br />   // do pole b</span>
  160. <br />   int i = is.read(b);
  161. <br />   <span class='comment'>// je-li i==500, je mo₧nΘ, ₧e zvukov² soubor nebyl naΦten² cel²
  162. <br />   // a Φtenφ je pot°eba opakovat v n∞jakΘm cyklu ...</span>
  163. <br />   Sound sound = new Sound(b, Sound.FORMAT_WAV);
  164. <br />   sound.play(1);
  165. <br />} catch (Exception e){
  166. <br />   e.printStackTrace();
  167. <br />}
  168. </div>
  169.  
  170. <h3>DalÜφ mo₧nosti NokiaUI API</h3>
  171.  
  172. <h4>Nastavenφ hlasitosti</h4>
  173. <p>Hlasitost zvuku se nastavuje metodou <code>setGain(int hlasitost)</code>. Parametr "hlasitost" je Φφslo od 0 do 255, p°iΦem₧ 0 znamenß ticho a 255 nejv∞tÜφ mo₧nou hlasitost, kterou za°φzenφ dokß₧e dosßhnout.</p>
  174. <p>Metoda <code>getGain()</code> vracφ aktußlnφ nastavenou hlasitost. Pokud jeÜt∞ nebyla volßna metoda <code>setGain(int hlasitost)</code>, m∙₧e se stßt, ₧e implementace Javy nenφ schopna zjistit aktußlnφ hlasitost. V tom p°φpad∞ vrßtφ volßnφ metody <code>getGain()</code> hodnotu -1.</p>
  175.  
  176. <h4>Zßrove≥ hranΘ zvuky</h4>
  177. <p>N∞kdy se v aplikaci m∙₧e hodit p°ehrßvat vφce zvuk∙ zßrove≥, nap°φklad u hry b∞₧φ na pozadφ stßle dokola jedna melodie, do kterΘ obΦas zaznφ specißlnφ zvukov² efekt. Kolik zvuk∙ konkrΘtnφ telefon umφ p°ehrßt, lze zjistit volßnφm metody <code>static int    getConcurrentSoundCount(int typMedia)</code>. Pokud telefon neumφ zßrove≥ p°ehrßvat vφce ne₧ jednu melodii, je nejjist∞jÜφ p°ed p°ehrßnφm specißlnφho efektu zastavit melodii na pozadφ metodou <code>stop()</code>, p°ehrßt specißlnφ efekt a po jeho skonΦenφ (zjistφ se pomocφ zaregistrovanΘho posluchaΦe) op∞t pokraΦovat v p°ehrßvßnφ melodie na pozadφ metodou <code>resume()</code>.</p>
  178.  
  179. <h4>PosluchaΦ zvukov²ch udßlostφ</h4>
  180. <p>Pro prßci se zvukem se m∙₧e hodit v∞d∞t, v jakΘm stavu se jakß zvukovß ukßzka nachßzφ. Pokud nap°φklad chceme v aplikaci na pozadφ neustßle pouÜt∞t dokola jednu zvukovou ukßzku, zaregistrujeme si na ni posluchaΦe a p°i skonΦenφ jejφho p°ehrßvßnφ ji spustφme znovu. PosluchaΦe si vytvo°φme implementacφ rozhranφ <code>SoundListener</code> a zaregistrujeme metodou <code>setSoundListener(SoundListener posluchac)</code>. Jeden zvuk m∙₧e mφt nastavenΘho pouze jednoho posluchaΦe, co₧ ovÜem niΦemu nevadφ. Naopak jeden posluchaΦ m∙₧e d∞lat posluchaΦe vÜem zvuk∙m, kterΘ v aplikaci pou₧φvßme.</p>
  181.  
  182. <div class='sample'>
  183. public class MySoundListener implements SoundListener{
  184. <br /><span class='comment'>   /*
  185. <br />      sound - instance t°φdy Sound, kde nastala udßlost
  186. <br />      event - udßlost, kterß nastala
  187. <br />   */
  188. <br /></span>
  189.    public void soundStateChanged(Sound sound, int event) {
  190. <br />      <span class='comment'>// zde se provede obsluha udßlosti</span>
  191. <br />   }
  192. <br />}
  193. </div>
  194.  
  195. <p>Udßlosti, kterΘ mohou nastat, definuje t°φda <code>Sound</code> jako konstanty:</p>
  196.  
  197. <div class='list'>
  198. <ul>
  199. <li><code>SOUND_PLAYING</code> - zvukovß ukßzka hraje</li>
  200. <li><code>SOUND_STOPPED</code> - p°ehrßvßnφ zvukovΘ ukßzky je zastaveno, v tomto stavu se zvuk nachßzφ po jeho vytvo°enφ, dokud jeÜt∞ nebyl spuÜt∞n</li>
  201. <li><code>SOUND_UNINITIALIZED</code> - zvukovß ukßzka se nep°ehrßvß a navφc u₧ byly uvoln∞ny vÜechny pot°ebnΘ zdroje volßnφm metody <code>release()</code></li>
  202. </ul>
  203. </div>
  204.  
  205. <p>Pokud u₧ zvuk nebude dßle pou₧φvßn, m∞ly by se alokovanΘ zdroje uvolnit volßnφm metody <code>release()</code></p>
  206.  
  207. <h3>Odkazy, zdroje</h3>
  208.  
  209. <div class='list'>
  210. <ul>
  211. <li><a href='http://java.sun.com/products/j2mewtoolkit/'>J2ME Wireless Toolkit 2.1</a> - MIDP 2.0 emulßtor od firmy Sun</li>
  212. <li><a href='http://forum.nokia.com'>Forum Nokia</a> - informace o telefonech znaΦky Nokia, emulßtory jednotliv²ch telefon∙ a prost°edφ Nokia Developer's Suite</li>
  213. </ul>
  214. </div>
  215.  
  216.  
  217.  
  218. <div id='article-author'>
  219. <a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/autor.asp?author=144'>Bittnerovß, Lucie Rut</a> (9. 6. 2004)
  220. <div id='article-about-author'>programßtor û analytik <a href="http://www.amaio.cz">Amaio Technologies</a></div>
  221. </div>
  222.  
  223.  
  224.  
  225. </div></div>
  226. <div id='page-right'><h2 class='textversion'>Prav² sloupek</h2>
  227. <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>
  228.  
  229.  
  230.  
  231. <div class='page-right-box book'>
  232.     <h3>Kni₧nφ novinka</h3>
  233.     <div class='page-right-box-in'>
  234.         <div class='book-top'>
  235.             <h4><a href='http://interval.cz/__redirect/redirect.asp?what=interval_booknews&url=http://interval.inshop.cz/inshop/scripts/detail.asp?ItemID=268'>Zßkladnφ pr∙vodce webdesignem</a></h4>
  236.         </div>
  237.     </div>
  238.     <div class='image'>
  239.         <img src='podklady/knihy/image.jpg' alt='obßlka' title='obßlka' /></a>
  240.     </div>
  241.     <div class='book-bottom'>Cena: <span class='book-price-old'>300 KΦ</span> <span class='book-price-new'>270 KΦ</span></div>
  242. </div>
  243.  
  244.  
  245.  
  246. <div class='page-right-box reading'>
  247.     <h3>NejΦten∞jÜφ</h3>
  248.     <div class='page-right-box-in'>
  249.         <ul>
  250. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3411'>Metadata a hlaviΦka pro XHTML dokument</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3400'>╚esk² programovacφ jazyk Flex a modFlex</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3386'>╚eskß sprßva socißlnφho zabezpeΦenφ on-line</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3412'>WebML - operace a manipulace s daty</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=1444'>Statistika p°φstup∙ v PHP - kalendß°</a></li>
  251.         </ul>
  252.     </div>
  253. </div>
  254.  
  255.  
  256.  
  257. <div class='page-right-box cauldron'>
  258.     <h3>Diskuznφ kotel</h3>
  259.     <div class='page-right-box-in'>
  260.         <ul>
  261. <li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3400' title='(32 komentß°∙)'>╚esk² programovacφ jazyk Flex a modFlex</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3411' title='(25 komentß°∙)'>Metadata a hlaviΦka pro XHTML dokument</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3412' title='(10 komentß°∙)'>WebML - operace a manipulace s daty</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3418' title='(5 komentß°∙)'>Sprßva barev - Color Management System (CMS)</a></li><li><a href='http://interval.cz/__redirect/redirect.asp?what=interval_offline&url=http://interval.cz/clanek.asp?article=3415' title='(4 komentß°∙)'>Sprßvce soubor∙ pomocφ DataGridu v ASP.NET - upload soubor∙</a></li>
  262.         </ul>
  263.     </div>
  264. </div>
  265.  
  266.  
  267.  
  268. <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>
  269. </div>
  270. <div class='page-maker'> </div><div class='page-maker-white'> </div></div>
  271. <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>
  272. </body>
  273. </html>