Když jsem svůj krátkozraký příslib psal, právě končila zima a já si říkal, že se k článku a hlavně focení dostanu, sotvaže trošku vyleze sluníčko – zkrátka aby krabice vypadala co nejvíc sexy. Jenže jsem si nabral ukrutné množství práce, na krabici se mezitím snášel prach, já se uklidňoval, že ještě pořádně sluníčko nesvítí a že tedy není kam spěchat. Ale časem mi začínalo být jasné, že se k tomu asi nedohrabu. Teď už sluníčko nesvítí vůbec, začíná podzim a já se musím přiznat, že jsem hrozně líný něco o té krabici napsat. Kdybych měl víc času (a hlavně kdybych byl někdo jiný, někdo, kdo rád píše a najde si na to volnou chvíli), tak bych vám nadatloval stohy textu o tom, jak velká a potřebná změna ten přechod z PC byl. Ale jelikož já jsem já a já jsem líný až se hory zelenají, bude z toho prd.
No ale něco bych přeci jen měl: sem tam, když se objeví volná hodinka, bych vás rád seznámil se zajímavými programy, které ke své práci potřebuji a bez kterých bych se už asi neobešel. A kdybych byl já opravdu já, přesně v tomto okamžiku bych tento zápis ukončil, poklepal bych si na rameno, že jsem zase něco napsal a slíbil bych vám i sobě, že to co nejdřív dopíšu. Ale protože chci projednou překročit svůj stín, rovnou se vrhnu po nohou do prvního programu. A tím je… (ta da dá)

Cože? Charles? To je mi ale podivné jméno pro program, říkáte si asi. A to jste ještě neviděli jeho ikonku – vlastně tedy už viděli tady nalevo. Inu věřte, že Charles je jedním z nejdotaženějších programů, s jakými jsem měl tu čest kdy pracovat. A navíc není ani drahý – a lze jej docela dobře používat i jako trialware. A ta podivná ikonka s džbánkem z Karlových Varů je už jen navýsost vyladěná třešnička na dortu. Když začnete Charles používat (popravdě řekl bych, že vám bude téměř neustále běžet v minimalizované podobě), začnete se na ten květovaný džbánek těšit. Tedy rozhodně je to jedna z nejvíc nejoriginálnějších ikon, jaké jsem kdy viděl.
Ale zpět k funkcionalitě. Pokud děláte weby (a to asi děláte, protože jinak byste tento článek asi nečetli) – a pokud jsou ty weby navíc flashové, pravděpodobně jste se již dostali do situace, kdy jste potřebovali mít přehled o toku dat z a do vašeho prohlížeče. Zkrátka co, kdy a jak rychle se stahuje do počítače nebo cpe zpátky na internet. Prostě jak probíhá komunikace klient – server. Anebo jste jednoduše potřebovali nasimulovat pomalý modem, abyste mohli precizně vyladit ten děsně povedený flashový preloader, který jste právě připravili pro projekt, na kterém pracujete.
Na to všechno se Charles výborně hodí. Než jsem na něj narazil (ještě když jsem se řadil mezi uživatele platformy PC), sháněl jsem nějaký jednoduchý packet sniffer. nečekal jsem, že by někdo naprogramoval něco až tak dokonalého, co by mi dokázalo splnit všechny tužby (a dovolilo mi psát takové preloadery, jaké teď píšu, hehe). Původně by mi naprosto stačilo, kdyby sniffer ukazoval, jaké soubory se odkud tahají a jestli zrovna aplikace neposílá něco ven. Však to asi znáte, ve Flashi se moc chybových hlášek nedočkáte, všechny testy chyb si musíte naprogramovat sami.

Výchozí pohled na Charlese s jakýmsi výpisem z Q-city. Nahoře je stromová struktura z webu (tak jak jí Charles detekuje z odchozích požadavků), dole informace o vybraném záznamu.
Našel jsem Charlese. On to všechno umí. A mnohem, mnohem víc! Sedí jako proxy server mezi aplikací a internetem. Aplikace je zpravidla prohlížeč, flashový plugin (který vlastně využívá síťové funkce prohlížeče) nebo jakýkoliv program, takže např. i multiplayer hra, klientská aplikace pro přehrávání internetového rádia nebo třeba nějaká věc napsaná v Adobe AIR.
Charles je schopen tuto komunikaci dekódovat. Proti packet snifferu se liší tím, že nedekóduje vše, co chodí z a na síťovou kartu (tzn. všechny protokoly), ale pouze protokoly HTTP a HTTPS (případně tyto protokoly visící na jiném portu, než na jaký jsou stavěné – 80, resp. 443). Charles tuto komunikaci zachytává a loguje, analyzuje a filtruje její obsah a počítá podrobné statistiky. Ve výsledcích můžete vyhledávat, můžete je filtrovat a třídit.
To všechno samozřejmě umí i jiné sniffery, Charles se ale liší jedním (obzvláště pro flashaře) důležitým detailem: umí dekódovat AJAX, XMLHTTP, SOAP a AMF komunikaci. SOAP používá Microsoft ve svých WebServices, AMF0 a AMF3 je remotingový standard původně od Adobe. Charles také analyzuje HTML, JS a CSS soubory, dokáže zobrazit obrázky, které jsou stahovány, ukáže vám metadata SWF a FLV souborů. Umí i několik video formátů.

Analýza SOAP záznamu. Všechny položky jsou editovatelné.
Výše zmíněné SOAP a AMF záznamy dokáže procházet a dokonce editovat. Můžete tak jednotlivé příkazy zopakovat, aby na ně některá strana znovu zareagovala. Tak můžete ladit některé těžce dosažitelné kritické situace. Příkazy můžete ukládat na disk a opět načíst.
Velmi jsem si oblíbil funkci mapování lokálních serverů na servery virtuální. Pokud máte někde na lokálu web http://localhost/mujweb, jednoduše si ho můžete přesměrovat na http://mujweb.cz. Dokud Charles běží, všechny vaše dotazy na mujweb.cz jsou přesměrovány na web server běžící na vašem počítači. Deployment je pak o poznání jednodušší, protože si např. můžete napevno nastavit adresy pro flashový remoting uvnitř vaší flashové aplikace (nebo lépe v jejích konfiguračních souborech).

Nastavení simulace modemu (vlevo) a mapování lokálních serverů.
Jak jsem již řekl, Charles umí zpomalovat komunikaci, dokáže tak simulovat pomalé modemy. Může být použit jako proxy pro celou vaší síť (užitečné je to např. pokud potřebujete ladit na více počítačích najednou – já tak například ladil Q-city). Velmi jednoduše lze nastavit blacklisty na některé adresy – a to i pomocí masek. Výborná funkce je vynucení vypnutí cachování všech souborů v prohlížeči. Tak lze obejít známý problém Flashe, kdy se SWF soubory zpravidla cachují vždy a cache je pak nutno vymazávat ručně (nebo jí v prohlížeči vypnout).
A to nejlepší nakonec: jak jsem již psal, je velice dobře použitelný i v neregistrované verzi (musíte občas odkliknout otravné okénko) a je k dispozici pro Mac OS X, Windows i Linux.

Charles se sekvenčním výpisem.

Detaily jednoho záznamu.

Profilování požadavku.

Další profilování požadavku.
Pro:
Windows byla dlouhá léta dobrou volbou. Windows XP jsem si vyladil k naprosté spokojenosti, programem XPLite jsem si odinstaloval zbytečný software (moje Windows po instalaci mají něco pod 500 MB), pravidelně je čistil Crap Cleanerem a dobu rozpadu jsem tak prodloužil vlastně donekonečna (Windows, které jsem před Macem používal, byly sec-sakra-dlouho na disku – a věřte mi, šlapaly jak víno).
Proti:
Už mám dost Windows. Bezpečnost a Microsoftí přístup k lidem, Vistí kódování všeho, co se dá (HDMI apod.), věčné díry a potenciální zadní vrátka pro úřady (ano, jsem přirozeně paranoidní)… Díky tomu všemu jsem moc dobře věděl, že je třeba změnit ring.
Poslední distribuce, která mi naprosto učarovala, je Ubuntu. V minulém zápisu jsem vyjmenoval všechny, které jsem vyzkoušel (na které jsem si vzpomněl), ale Ubuntu je podle mně v současné době jednička. Ještě bych zvažoval Kubuntu (s prostředím “KDE“http://kde.org, opět je ale problém s nikdy nekončícím laděním bambiliardy parametrů; navíc KDE dost často zapomíná nastavení a stává se, že musíte začít nastavovat celý svůj profil nanovo) nebo SUSE Linux Enterprise Desktop (sice bych ho musel koupit, tato distribuce není zadarmo, ale zase bych nemusel spoustu věcí řešit, tato distribuce prostě funguje, má dobrou podporu hardwaru a hromada věcí, které bych jinde musel doinstalovávat, je v instalaci zahrnuta od začátku).
Pro:
Prostě mít tak Linux, to bych se v tom mohl pěkně vrtat, až by se ze mně kouřilo (a práce by stála).
Proti:
Linux je zkrátka volba pro moderního geeka. Grafika, který očekává, že může začít pracovat hned po instalaci, asi jen tak vyhovovat nebude.
Pro:
Proti:
Ještě bych přidělal pár hvězdiček, ale chtěl jsem jich mít všude stejně. Nemluvil jsem o bezpečnosti (OS X vychází z BSD, proto by mělo být bezpečné, každopádně chyby jsou všude a bezchybný operační systém neexistuje; na OS X a Linux zatím nejsou viry, otázka je, jestli je to právě tou bezpečností nebo tím, že není tak rozšířený).
Takže když si to srovnáme, vidíte, že má volba byla jasná. A vážně: ani trochu toho nelituji.
Příště si rozbalíme krabici :)
Tedy popravdě to bylo převeliké rozhodování: už léta jsem potřeboval notebook, už léta mě štvaly Windows a hlavně celá politika Microsoftu. Věděl jsem, že se tento operační systém už dávno stal slepou kolejí pokroku, jak bych tak řekl. Jenže jsem se až příliš zasekl na platformě PC, než abych se pustil do nějaké velké změny. Zkoušel jsem to léta: nejdřív Linux všech barev a chutí, pak speciální upgrade motherboardu a procesoru, abych vyzkoušel, co to je ten OS X (to když Jobs překvapil svět informací, že jejich operační systém už léta lze spustit na PC a že se Apple chystá přejít na platformu Intel). Tenkrát – tedy před rokem – mi po startu dával počítač na výběr ze tří možností: Windows, Linux a OS X.
Opravdu jsem se snažil, v Linuxu se mi ale nikdy nedařilo. Možná proto jsem vyzkoušel všechnu možné distribuce od Red Hatu, Suse, Mandrake / Mandrivy, Novellu, Kubuntu až k Ubuntu. Měl jsem ale dost problémů s vývojem Flashe (i když se mi za posledních pár let docela podařilo eliminovat vývojové prostředí Macromedia / Adobe Flashe, dnes všechny své projekty vytvářím v open source programech jako je MTASC, SWFMill, FlashDevelop a podobně).
Další velké problémy byly s grafickými aplikacemi. Nemůžu si pomoct, asi jsem už příliš velká konzerva, ale já se prostě bez Photoshopu neobejdu. Samozřejmě, že jsem zkoušel Gimp, Pixel a další programy, jenže co se dá dělat, není to ono. Já potřebuji layer blending módy (už jsem příliš líný, než abych všechny své bevely a stínky dělal ve speciálních vrstvách), chybí mi CMYK, blokový text a další kiliarda věcí, bez kterých to prostě nejde. A to ještě nemluvím o Illustratoru. Ten se mi sice podařilo nahradit Xarou, která je pro Linux zdarma, ale ta má zase velké problémy s importem a exportem. Koneckonců Xaru jsem používal už někdy od roku 1997, většinu vektorových věcí jsem udělal v ní. Já vlastně ten Illustrator ani moc neznám (to bude asi spíš tím, že jsem víc na pixely než na křivky).
Co se mi ale na Linuxu líbilo, byla možnost neustálého rýpání se v systému. To jsem prostě já: chci vědět, jak systém funguje, kde co můžu poladit (a poškodit) a s čím si lze hrát. To je sice neustálý zdroj obskurní zábavy, ale také přímá cesta do pekla. Člověk se lehce zasekne na den dva na nějakém problému (jakože mu například zrovna přestala fungovat Samba, tedy sdílení adresářů se světem Windows). A práce stojí.
Zatímco jsem si hrál s Linuxem, Windows mi stály na disku a když jsem potřeboval pracovat, přebootoval jsem do nich. No pravda, zkoušel jsem i možnosti emulace Windows Winem, VMwarem i Parallels, ale to prostě na grafiku také není to pravé. Měl jsem starší procesor, který nemá jakýsi virtualizační flag a tak, na rozdíl od mého aktuálního Intel Core Duo, bylo zpomalení emulovaného systému poměrně znatelné.
No a do toho se objevilo pár mých známých, kteří si pořídili Maca. Posílali mi zajímavé linky na svět Applu a mně učarovaly jejich vydesignované produkty a programy. O jejich operačním systému Mac OS X jsem po vizuální stránce příliš jistý nebyl, byl jsem spokojen se svým skinem ve Windows a veškeré jiné okrášlovací postupy mi přišly jak pokusy o amatérský cirkus (o grafice ve Vistě ani nemluvě). Jakub Steiner mi ukazoval, jak rychle lze sestříhat video. Karel Minařík mi zase radil, že jestli se nechci neustále v systému rýpat, že bych si měl pořídit právě jen a jen Maca.
A to nakonec zabralo. Jednou jsem se naštval a řekl si, že už bylo dost ladění. Je na čase začít pracovat a živit rodinu, ehm. Do té doby jsem přemýšlel o nějakém přenosném Dellu (hlavně z důvodu jejich neuvěřitelné Next Business Day záruky, nikdy nemůžu vědět, kdy mi Vojta nalije do klávesnice šťávu). Na něj jsem chtěl nainstalovat cracknutou verzi OS X. Ono by to fungovalo, tedy skoro vše, až na WiFi, Bluetooth a spoustu dalších “zbytečností”. No ale raději jsem poslechl Karla a zainvestoval do Maca…
To jsem zvědav, jestli se mi ta investice vrátí :)
Pokračování zítra.