čtvrtek 19. dubna 2007

Ze zákulisí CZ podcastu

Plno posluchačů CZ podcastu určitě zajímá jakým způsobem podcast vzniká a jak je to technologicky uděláno. V tomto článku Vám prozradím něco ze zákulisí. Takže pokud se chystáte nějaký podcast nahrát, tak tohle můře být malá kuchařka.

Nejsem si jistý, jestli s myšlenkou nahrávání podcastu přišel Filemon, ale řekl bych že největší podíl na jeho rozjetí určitě má. Příprava na nahrávání probíhá přibližně následujícím způsobem.

  • Někdo z trojice Roumen, Filemon nebo Dagi navrhne téma podcastu. To bývá většinou na Váš přímý popud. Samozřejmě výběr omezujeme témata, ke kterým máme co říci a které by mohli zajímat širší posluchačskou obec.
  • Následuje dohadování termínu nahrávání. To je většinou problém, protože každý z nás má plno aktivit, navíc Roumen a Filemon často cestují. Takže se kolikrát stane, že každý sedíme nejen v jiné zemi, ale i jiné časové zóně.
  • Dohodnutí detailního programu podcastu nebo alespoň pokus o to. Většinou si pošleme linky na témata, které chceme probírat, aby byl každý alespoň v obraze. Případně domlouváme externí hosty.

K vlastní komunikaci slouží program Skype, přes který je založen konferenční hovor, do kterého jsou všichni připojeni. Přes Skype pak probíhá klasický telefonický hovor. Pokud je délka podcastu řekněme hodina, pak délka nahrávání je přibližně hodina a půl. Před vlastním nahráváním, děláme poslední korekci, domlouváme detailně kdo řekne novinky, úvodní část a jak bude nahrávání probíhat.

Každý z nahrávajících je také zodpovědný za pořízení svého lokálního zvukového záznamu pomocí programu Audacity. Začíná nahrávání, to už musí vše klapnout, musím říci, že v průběhu nahrávání nedochází takřka k žádným "režisérským" vstupům. Tím pádem odpadá, až na výjimky, nutnost stříhání. Po konci nahrávání musí každý vyexportovat a nasdílet svůj zvukový záznam (300MB) a následuje fáze zpracování podcastu.

Výsledný podcast, audio stopa, vzniká dvěma způsoby. Starý způsob, který jsme používali do podcastu číslo osum, je založen na spojení všech audio stop opět pomocí programu Audacity. Druhou možností je využití nahrávacího programu Pamela, který nahrává přímo Skype hovor.

Oba dva způsoby mají své výhody a nevýhody. Při slučování audio stop je potřeba udělat manuální synchronizaci jednotlivých stop, protože v závislosti na zpoždění dochází k jejich posunu. Naopak druhý způsob při nahrávání celého hovoru má tu nevýhodu, že tam je občas slyšet takzvané zalagování. Člověk mluví jakoby trhaně, v mém případě to není občas technický problém, ale mám to od přírody.

Právě toto zpracování audio záznamu bývá časově nejnáročnější činností při vytváření podcastu. Výsledná audio stopa se prožene pře různé filtry (odstranění šumu, normalizace, zvýšení hlasitosti atd.) a přidá se jí znělka a vyexportuje se výsledný MP3 soubor. Jen tak pro zajímavost například ORM podcast jsem stříhal a piplal přes čtyři hodiny. Ovšem největší práci s tím mívá Filemon, který to dělal pro všechny ostatní díly.

Výsledný podcast je skoro připraven na cestu k posluchačům. Nyní je potřeba jej celý poslechnout a vychytat odkazy, o kterým se v průběhu podcastu bavíme. To už souvisí s přípravou článku pro server java.cz. Vlastní článek je vytvořen v publikačním systému a zároveň proběhne upload MP3 na Roumenovu stránku.

Provoz vygenerovaný stahováním podcastu je v řádech desítek GB. Jenom pro zajímavost, podcast číslo sedum si stáhlo přes tisíc posluchačů. Takže při velikosti přibližně 70MB si není těžké spočítat jak hodně to ukrojí z datového limitu a s čím je potřeba počítat. K tomu se Váže úsměvná historka. Když byl ještě CZ podcast (vlastní audio soubor) hostovaný na Java.cz a došlo k překročení datového limitu, stálo provozovatele každé stažení deset korun.

No a to je asi tak všechno. Možná se to nezdá, ale celkový čas všech operací od dohodnutí tématu po publikování článku zabere nezřídka více než čtyř hodin spolupráce několika lidí. Pokud vás něco ze zákulisí zajímá, určitě se nebojte zeptat v diskusi. Rádi Vám odpovíme.

Poznámka: Vyštrachal jsem fotku, aby jste si dokázali za naše hlasy dosadit obličeje.

CZ podcast volume #9 - novinky

Pani Mullerová, Roumen se nám vrátil z Ruska a Filem nastavená infrastruktura pro nahrávání podcastu vydržela, proto je tu v krátkém sledu podcast s pořadovým číslem devět. Tentokrát jsme se po vzoru The Java Posse nahráli díl o tématech, které hýbou událostmi v Java komunitě.

úterý 17. dubna 2007

CZ podcast volume #8 - metodiky vývoje software

Roumen, který v čase nahrávání pojídal šašlik a lemtal vodku, tj. evangelizoval v Rusku, nazval tento podcast jako zábavné tlachání. NkD jej zřejmě nazve hospodské tlachání. Každopádně Vy si nenechte ujít příležitost udělat si vlastní názor na podcast o metodikách vývoje software.

neděle 15. dubna 2007

Komety přilétají

Pokud jste žili v domnění, že AJAX je technologickým Mount Everestem současných možností prohlížečů, pak vězte, že vývoj jde dál. Na tahu je technologie zvaná Comet (kometa) postavená na AJAXu a ždímajíc server do morku křemíku. Comet též nazývaný reverse AJAX a nebo server push nebude zřejmě tak revoluční jako AJAX, ale svoje místečko si určitě najde a to znamená další speciální požadavky ne webové servery.

Základní rozdíl mezi AJAXem a Comet je v správě HTTP připojení mezi klientem a serverem. Při AJAXu znamená každý asynchronní požadavek nové volání serveru. Comet oproti tomu využívá dříve otevřené HTTP připojení, které se neuzavírá. Díky tomu může server posílat data (server push) na klienta kdykoliv jsou k dispozici. Rozdíl je vidět na následujícím obrázku.

Ajax vs Comet

Pokud bychom vzali jako příklad chat aplikaci, znamená to v případě AJAXu, že klient v časových intervalech volá server pro nové zprávy. V případě Comet implementace se HTTP spojení s danými klienty neuzavírá a kdykoliv server dostane novou zprávu, může jí poslat na poslouchající klienty.

Comet nepřiplouvá do Ameriky jak bájný Kolumbus, místo toho staví na technologiích a postupech, které jsou současně dostupné. Comet nerovná se konkrétní implementace, stejně jako AJAX nerovná se konkrétní implementace. Comet je stejně jako AJAX koncept. Termín Comet poprvé použil a technologii pojmenoval Alex Russell v článku Comet: Low Latency Data for the Browser. Tři základní části konceptu komety jsou:

  • komunikační comet protokol
  • javascriptová knihovna implementující comet protokol
  • server implementující comet protokol

Protokol slouží k definici formátu komunikace mezi klientem a serverem a popisuje jednotlivé události, které mohou během interakce nastat a také formát jednotlivých zpráv/událostí. V současnosti existují proprietární implementace comet protokolu pro DWR a ActiveMQ o standardizaci se snaží specifikace Bayeux prokolu.

Bayeux prokol a jakýkoliv jiný comet protokol popisuje ve své podstatě messanging. Pokud jste znalí JMS, tak se jedná o klasický model subscriber/publisher. Kde serverový endpoint představuje topic, na který se klient přístupem registruje.

Specifikace comet protokolu je důležitá nejen z pohledu interoperability, ale především z pohledu klienta (browseru). Browsery totiž obvykle nedovolují více jak dvě připojení na jeden server. Z tohoto důvodu je Bayeux navržen tak, aby mohl být využit mezi různými knihovnami. Právě Bayeux je součástí kompletní comet implementace (protokol, serverová a klientská část - DOJO toolkit) zvané Cometd.

Comet koncept je velice zajímavým rozšířením, které umožňuje efektivnější tvorbu aplikací, které byly nuceny v časových intervalech kontaktovat server. Typicky se jedná o aplikace typu instant messengeru apod. Comet koncept se dá využít například pro řešení uživatelských jako souběžná modifikace dat.

Z pohledu Javy přenáší comet nový rozměr. Implementace na straně serveru musí být asynchronní a request response musí být oddělen. Asynchronní implementace endpointu není problém, problémem je servlet API, kde není oddělený request a response. Výsledkem je, že každý servletový kontejner si asynchronní servlet API řeší sám. Takže Tomcat 6.0 má své Advance IO, Grizzly (HTTP konektor GlassFische) má Asynchronous Request Processing (ARP) a WebLogic zase .

Další čtení o Comet