Friday, August 27, 2010

Jak používat Facebook bez webu facebook.com

Facebook (FB) v dnešní době jede. Kdo na něm není, ochuzuje se o spoustu zajímavých informací nejenom od svých kamarádů. Na Facebooku mi ale vadí čas strávený na jejich webu. Využívají spoustu sociálních technik, které uživatele nutí být na webu co nejdéle = větší zisk z reklamy. Uživatel tak snadno podlehne "lajkování" stránek "které by se mu mohly líbit", "friendování" přátel, "které by mohl znát", hraní blbostí, které hrají jeho kamarádi atd. Tím ale já nechci trávit čas - chci sledovat, co je nového, komentovat, občas něco na FB napsat, chci chatovat přes Facebook chat, chci číst notifikace a chci vidět, jak se blíží eventy, kterých se účastním. A to jde v pohodě i bez webu facebook.com.

Nejdřív to nejdůležitější - sledování feedu vašich přátel. Objevil jsem skvělou webovou službu HootSuite. Ta umožňuje sledovat feedy z různých webových služeb na jedné stránce vedle sebe. Já přes to sleduji Facebook, Twitter a LinkedIn. Konkrétně u FB jde dělat všechno co na webu - náhledy fotek, komentování, lajkování. Publikování toho taky hodně umí - vygeneruje např. náhled odkazu. A hlavně si můžu vybrat, do jakých sítí chci publikovat, takže nemusím do všech sítí publikovat stejný obsah.

Facebook Chat používá dnes více lidí než ICQ. Jeho webové rozhraní je ale příšerné. Často se to odpojuje, někdy zpráva nedojde, někdy víckrát, hrůza. Naštěstí jde FB chat přidat do libovolného Jabber klienta. Já používám instant messenger Digsby, který už má FB chat zabudovaný (a spoustu dalších IM sítí). Pak vůbec neřeším, na jaké IM síti uživatel zrovna je.

Facebook Events (odmítám český překlad události, jsou to akce) jsou taky užitečná  věc. Organizace akcí je jednoduchá a jasně pak vidím kdo jde a kdo ne. Dají se jednoduše zorganizovat i masové akce. Abyste viděli, kdy akce bude a co se bude dít nemusíte chodit na facebook.com. Facebook umožňuje sdílet akce ve formátu iCal. Tomu rozumí různé kalendáře, já používám Google Calendar. FB akce mám pak přehledně ve svém kalendáři (a automaticky i ve svém Android mobilu). Odkaz na exportování akcí do iCalu najdete dole na facebookové stránce s akcemi. Nebo to lze taky provést přes službu FBCal, ta umí do Vašeho kalendáře přidat také narozeniny vašich kamarádů.

Poslední nutnou věcí jsou notifikace - je důležité vědět, když vás někdo otaguje na fotce, když vás někdo požádá o kamarádství, nebo reaguje na váš comment. Zde je nastavení jednoduché, Facebook umožňuje notifikace zasílat na e-mail, takže zamiřte do nastavení Facebooku.

Uvedenou čtveřici nástrojů používám už přibližně měsíc a jsem velmi spokojen. Neztrácím čas na webu facebook.com a přitom nepřicházím o nic, co Facebook nabízí. Tyto nástroje jsou v lecčems i lepší - ve feedu vidím i Twitter a LinkedIn, Facebook chat mám spolehlivý a integrovaný do IM a kalendář akcí mám více přehledný a synchronizovaný s mobilem.

Friday, June 11, 2010

Videa a fotky z celého roku v USA

Jsem zpátky z USA, kde jsem studoval na Kansas State University. Hodně jsem toho zažil a viděl a o mnohém vypovídají videa, která jsem natáčel. Zde jsou ty nejzajímavější z celého roku:













































No a jestli vás zajímají fotky, tak ty jsou všechny na mojí Picasse.

Wednesday, April 21, 2010

Wordpress jako CMS? Proč ne!

Dostal jsem zakázku vytvořit víceméně statické stránky, musejí ale být později administrovatelné přes web bez mé pomoci. Přemýšlel jsem, jestli to udělám v CakePHP, ale nakonec mi přišel jednodušší nějaký Content Management System (CMS). Hodně jsem slyšel o Wordpressu, ale to je systém především na správu blogu nebo internetového magazínu. Půjde nasadit i na statický web? Přišel jsem na to, že jde a velmi dobře.

Wordpress je open-source systém, který běží na PHP a MySQL, takže ho nainstalujete na každý běžný server. Instalace byla až trapně jednoduchá. Nakopíroval jsem tam soubory, zobrazil stránku v prohlížeči a Wordpress mě vedl vším nastavením za ručičku. Defaultně se ale Wordpress chová jako blogovací systém, na první stránce máte seznam posledních blogpostů. Jde tomu ale snadno pomoct. Wordpress podporuje dva typy příspěvků - Posts a Pages. Vás zajímají Pages, statické stránky. A v poslední verzi Wordpressu lze v nastavení zvolit jednu Page jako výchozí - seznam posledních blogpostů je pryč. Opět přes webové nastavení Wordpressu odstraníte widgety typické pro blog (archiv příspěvků, poslední kometáře) a přidáte widget se seznamem statických stránek, který bude vaše menu. A máte základ vaší webové stránky hotov.

S tím, že webová stránka beží na Wordpressu jsem najednou získal spoustu věcí navíc:

  • pěkné a přehledné administrační rozhraní
  • web je přístupný vyhledávačům a je validní
  • jednotlivé stránky mají pěkné URL
  • snadné nahrávání souborů a obrázků
  • přístup k rozsáhlé databázi pluginů a užitečných widgetů
O pluginech se rozepíšu více. V průběhu vývoje si zákazník vzpomene, že chce na stránkách třeba kalendář. Stačí projít databázi pluginů a vybrat si nějaký z mnoha kalendářů. Já si vybral jeden dobře vypadající a včetně administrace. Pluginy jsou otestované, funkční a ušetří vám spoustu práce. Pokud chcete Wordpress používat jako CMS, doporučuji plugin CMS. Předělá administrační rozhraní tak, že je orientován na Pages. Posts jsou potlačeny. A přidá do admin rozhraní další vychytávky typické pro správu CMS. 

Říkáte si, že to je všechno pěkné, ale chcete mít pod kontrolou design stránky? Wordpress na to myslí. Především má databázi témat, kde jedním klikem obléknete Váš web do pěkného hávu. Někdy ale chcete se na designu vyřádit sami. Nejlepší je vybrat si podobné téma Vašim představám a upravit ho. Můžete to dělat  přes skvělé administrační rozhraní, na soubory přes FTP nemusíte vůbec šáhnout. Až na úpravu témat potřebujete znalost HTML, CSS a trochu PHP programování. Na ostatní činnosti to vůbec není potřeba. Takže vytvořit web s Wordpressem zvládne i středně pokročilý uživatel webu bez programovacích znalostí.

S Wordpressem jsem spokojen, web je snadno rozšiřitelný a ušetřil mi spoustu času. Ne nadarmo ho k září 2009 používalo 202 miliónů webů na celém světě a to číslo pořád roste. Podívejte se, jak můj web nakonec vypadá a tady je screenshot z administračního rozhraní:



Thursday, March 25, 2010

Jak levně procestovat USA

Už jsem ve Spojených Státech tři čtvrtě roku a mám za sebou hodně cestování. Před začátkem školy jsme viděli New York City, na podzim jsme podnikli road trip do Kalifornie, před Vánoci autem na východní pobřeží, po Vánocích snowbordování v Coloradu a na jarní prázdniny road trip na Floridu. Jsme studenti a tak se každý ušetřený dolar hodí. V tomto článku se s Vámi podělím o mé poznatky - jak si za levno užít Ameriku.

Co vidět
Amerika je obrovská země. Plně si to uvědomíte jenom na vlastní oči. A je tu toho spoustu k vidění. Nejzajímavější jsou obě pobřeží, ale i ostatní části Ameriky stojí za to. Doporučil bych především národní parky a města.
Národní parky jsou překrásné a jejich návštěva vyjde levně. Pokud plánujete víc národních parků, vyplatí se koupit roční permanentku za $100. Dají se tam napsat dva lidi, takže bude platit až pro dvě auta. Jinak zaplatíte okolo $25 za auto do jednoho parku. Kromě národních parků zde najdete i státní parky, které stojí pakatel nebo nic a také skrývají krásné poklady.
Americká města jsou v lecčems podobná a mě osobně po chvíli mrakodrapy omrzely. Jsou ale města, která mají přesto svůj charakter a stojí je za to navštívit. Z těch měst, která jsem navštívil to jsou: New York City, San Diego, Los Angeles, Las Vegas, Washington DC., New Orleans.
Vyhnul bych se turistickým atrakcím jako velké zábavní parky, vodní světy atd. Pro studenta jsou předražené. Najdou se ale výjimky jako Kennedyho Vesmírné Centrum na Floridě. Naopak muzea jsou mnohem levnější a ve Washingtonu DC jsou úplně zadarmo!

Čím cestovat
Ač ceny letenek jsou docela nízko, vyhnul bych se létání, pokud to není nutné např. z časových důvodů. Nejlépe Ameriku poznáte autem. Celá infrastruktura je na autech postavená, takže i když někam přiletíte, stejně si budete muset půjčit auto. Autu nahrává výborný systém dálnic, levnější benzín a opatrnější řidiči a tím pádem bezpečnější jízda. Benzín je 2-3x levnější než v ČR. Vzdálenosti jsou mnohem větší, ale řidiči to ani tak nepřijde. Nastavíte rychlost na palubním počítači, sundáte nohy z pedálu a držíte volant rovně :-) Další výhoda je, že uvidíte spoustu států po cestě, nikoliv jenom tu nejvíc profláklou oblast.
Jak auto sehnat? Na kratší dobu si můžete auto půjčit, je to docela levné. Pokud jste v USA déle, určitě se vyplatí auto koupit. Můj kamarád koupil Forda Tauruse v dobrém stavu za přibližně $4000 a pravděpodobně ho za trochu menší cenu na konci prodá. Máte pohodlí vlastního auta a výrazně ušetříte. Dojet někam autem je vždy výhodnější než tam letět. A veřejná doprava kromě největších měst prostě není.

S kým cestovat
Cestovat sám je nuda, chce to kamarády. Jejich volbu nechám na Vás. Přišli jsme na to, že ideální počet lidí na road trip jsou čtyři. Čtyři se v autě vejdou pohodlně a benzín vyjde levně. V pěti už by to bylo mačkání, jak s kufry tak na sedačkách. Dvě nebo víc aut bych nedoporučoval, protože čim víc lidí, tim se hůř domlouvá kam se pojede. Být ve čtyřech se vyplatí i kvůli ubytování - viz níže.

Kde spát
Pokud cestujete do oblasti, kde je teplo, doporučuji stan. Stan koupíte levně nebo Vám ho někdo půjčí. Ušetříte výrazně. Většina národních a státních parků má vyhrazená místa na kempování. Zaplatíte okolo $5 za auto a máte místo v lese se sedačkou a grilovacím krbem. Blízko měst se dá spát také v kempech. Vyjde to levněji než motel a občas to jde i zadarmo. Kempy totiž večer zavírají a otvírají až kolem osmé ráno. Pokud přijedete za tmy a pak si přivstanete, tak není nikdo kdo by po vás chtěl zaplatit.
Ale ne vždy to ve stanu jde a je také dobré se vysprchovat a zasurfovat na internetu. Na to jsou ideální motely. Osvědčilo se nám střídat noc ve stanu s nocí v motelu. Po celé Americe je síť motelů Motel 6. Mají nízké ceny a přijatelné vybavení pokojů. Jsou u každého většího města. Dostanete pokoj s koupelnou a dvěmi velkými postelemi. Tam se pohodlně 4 lidé vyspí. V tomto případě Vás to vyjde kolem $15 na jednoho. Bohužel ve většině motelů 6 se platí za wi-fi $3 na jeden počítač. Nejdřív proskenujte okolí, často chytíte internet od vedle zdarma. Jinak si to kupte na jeden počítač a potom přes kabel připojení nasdílejte na další počítače.
Někdy ale budete chtít bydlet v centru velkého města a nasát atmosféru. Tam motely 6 nejsou, ty jsou u dálnic. Volba tedy padá na hostel. Nejdřív si zmapujte terén na internetu. Nevěřte moc internetovým cenám, téměř vždy jsou v reálu vyšší. Normální cena je okolo $20 na noc na osobu. Budete ale v pokoji pro 6-10 lidí na palandě. Berte raději hostely patřící do nějaké skupiny, třeba Hostelling International. U no-name hostelu vás může čekat nějaké špinavé překvapení. Většina hostelů ale nabízí snídani a wi-fi zdarma a můžete tam potkat super lidi. Na pár nocí ve velkých městech se to určitě vyplatí.

Co jíst a pít
Nejvíc se rozhodně vyplatí fast-foody. Jsou všude, je to levné a víte, co můžete čekat. Jídlo je tučné, takže toho nemusíte jíst tolik. Když si vybíráte, soustřeďte se na tzv. Value Meals. Vždy se vyplatí dát si dva nebo tři value meals než normální menu. Třeba v Burger Kingu mají Whopper Jr. za $1, který se velikostí rovná normálnímu Whopperu v ČR. Ve Wendy's mají Jr. Bacon Cheesburger za $1.30. V McDonaldu mají dvě jablkové taštičky za $1. Dívejte se po speciálních akcích, třeba v Arby's mají 5 malých jídel za $5. Z toho se mohou najíst dva lidi. Dobrý nápad je také Subway - footlong bageta za $5. Pokud si tam necháte dát všechnu zeleninu, nemůžete to skoro sníst (a Subway je taky trochu zdravější). V Little Ceasars mají velkou pepperoni pizzu za $5 - z toho se taky nají dva lidi. Občas se vyplatí nakoupit suroviny ve Wallmartu a udělat si večeři na ohni nebo namazat bagetu.
Pijte vodu! To je velký rozdíl oproti Evropě, voda je ve všech fast-foodech zdarma. Stačí říct "cup of water" a dostanete vodu zdarma (pokud řeknete "water" dostanete placenou balenou vodu). Nápoje si také můžete neomezeně doplňovat. Proto se nevyplatí menu (obvykle stojí $6) - dva value burgery jsou víc než jeden normální, hranolky stejně nechcete a vodu máte zdarma. A máte večeři i s pitím za $2. S alkoholem se dělají hrozné obštrukce, dejte na to pozor. Musí Vám být nad 21 a musíte mít pas. Nakupujte v Liquor Store, protože pivo z Wallmartu má snížené procento alkoholu. Vyplatí se víno v takové velké krabici s pípou za $13. Stačí pro 4 lidi a je dobré. Popíjejte ale jenom na pokoji nebo v přírodě kde si jste jistí, že nikdo nepřijde.

Tyto rady jsme dodržovali na našem posledním road tripu z Kansasu na Floridu a se vším všudy (doprava, jídlo, ubytování, vstupy, Kennedy Space Center) nás to vyšlo přibližně na $400 na jednoho. A že jsme si to užili! (video: část 1 / část 2)

Tuesday, August 18, 2009

Amerika a Američani

Jsem ve Spojených státech už skoro dva týdny. Měl jsem možnost poznat Manhattan v New Yorku a Manhattan v Kansasu – první typické velkoměsto, druhé typické maloměsto. Vypozoroval jsem několik zajímavostí o Americe a Američanech, o které bych se rád podělil.

Plýtvání, plýtvání, plýtvání

To mě zarazilo nejvíc. V USA se plýtvá vším a na každém rohu. Plýtvá se například:
- auty: rodiny mají minimálně aut jako lidí, klidně i dvojnásobný počet aut než lidí
- místem: města jsou rozlehlá, ulice široké, zahrady obrovské
- elektřinou: všude je klimatizace, moc se nezhasíná
- benzínem: všichni mají velké bouráky a pickupy
- vodou: Každé spláchnutí na záchodě sebere tak 5 litrů vody
- jídlem: V restauracích lidé většinou jenom něco nakousnou, nechají to na stole a jdou si pro něco jiného.

Jídlo

Jídlo v USA je dobré. Neměl jsem ještě nic co by mi nechutnalo. Chutě jsou výrazné, dost jídla je odtučněné, ale dohání se to cukrem. Běžná praxe ve většině restaurací a fast-foodech je all-you-can-eat bufet. Přijdete do restaurace, zaplatíte jednu taxu a můžete jíst co se do vás vejde. Včetně neomezeného pití. Je to skutečně nezvyk oproti ČR. Ke každému jídlu je spousta příloh, salátů, omáček, dortů, neomezené zmrzliny atd. Jídlo je levné, dobré a je ho opravdu hodně. Musím se tu začít krotit a pořádně sportovat :)

Stereotypy platí

Koukáte na americký film a říkáte si, že ve skutečnosti je určitě všechno jinak? Ve většině případů to opravdu tak je. Třeba černoši: Mluví svým nezaměnitelným slangem, mladí se přes den flákají u basketu a večer v kroužcích po ulicích, když jedou po městě mají naplno zapnutý hiphop, když se hádají s bělochem, běloch je automaticky 'rasist' atd. Jdete po městě a všude vidíte předměty, místa a lidi "jako ve filmu". Ze začátku jsme se tomu smáli, teď už nám to ani nestojí za zmínku.

Pohodlnost

Různé vynálezy sloužící k pohodlí jsou někdy až absurdní. Dostávají mě záchody – ve škole je máme na fotobuňku, takže se po tom co vstanu automaticky spláchnou. Ale to samé se stane když se předkloním, takže mě to jednou osprchovalo :) Nebo někde místo umyvadla jsou jenom dvě díry ve zdi. Tam strčíte ruce a automaticky vám je to namydlí a ze všech stran umyje. Znáte McDonalds drive-thru? Tady mají drive-thru banku. Všechno co potřebujete v bance vyřídíte z auta. Mohl bych pokračovat... Ale něco se i hodí – třeba u každého sportoviště je voda na pití zdarma – to přijde vhod.

Přátelskost

Američané jsou hodně přátelští. Lidé se dívají do očí, i neznámí se zdraví, ptají se 'How are you?', v pohodě si pokecáte s prodavačkou v obchodě, se servírkou, s bankovní úřednicí. Lidé jsou usměvavaví a snaží se maximálně pomoci a vyhovět. Možná to i trochu přehánějí, sama ta bankovní úřednice nám říkala že někteří lidé jsou až 'creepy friendly'. Obecně tu je přátelkost povrchnější, máte spousty "kamarádů", s kterými každý den prohodíte pár slov na chodbě.


Celý článek by mohl vyznít jako kritika USA, ale není to tak. Je to jiná kultura a rád tuto kulturu poznám. Všeho je hodně, všechno je větší, všude koukají příležitosti k aktivitě a lidé jsou přátelštější. To vidím jako největší plus, je skutečně velmi jednoduché se s někým seznámit a neztratit se tu.

Sunday, May 24, 2009

CakePHP: jak upéct PHP aplikaci snadno a rychle

Už od ledna tohoto roku si hraji s PHP frameworkem CakePHP. Kvalitních PHP frameworků je několik, já jsem hledal něco rozšířeného a s minimální dobou nutnou k pochopení. Byl jsem frameworkem příjemně překvapen a už mám za sebou dvě PHP aplikace v tomto frameworku. V tomto článku popíšu ty nejlepší featury Caku a uvidíte, že to je piece of cake.

CakePHP je hodně podobný frameworku Ruby On Rails (ROR). Částečně z něho vychází, ale není to úplná předělávka, protože jazyk PHP má svoje specifika stejně jako jazyk Ruby. Základní principy jsou ale stejné. Především to, že framework má konvence pro pojmenovávání všeho - tříd, tabulek v databázi, sloupců v databázi, proměnných atd. Důležité je ale říct, že vývojář nemusí tyto konvence dodržovat. Když je ale dodržuje, ušetří si tím spoustu práce. Když je všechno pojmenované tak jak má, nastoupí spousta užitečných vlastností, které sami autoři v dokumentaci označují jako "magie". Většina podobných frameworků je založena na návrhovém vzoru Model-View-Controller, stejně tak Cake. Cake poměrně dost vývojáře nutí MVC používat, což je jedině dobře. Dřív jsem si to psal sám a ač jsem se o MVC snažil, mnohdy jsem ulítnul někam jinam. Výhoda těchto konvencí je jasná - kód je pak přehledný a snadno pochopitelný pro jiného vývojáře. Framework tak odstraňuje vlastnost PHP, kdy je jednu věc možno "naprasit" spoustu způsoby a kód je pak velmi nepřehledný. Abych to shrnul - Cake přebírá hlavní výhody Ruby On Rails, ale je to PHP (něco co znáte) a také odpadají problémy s hostingem.

Když jsem s Cakem začínal, překvapila mě podrobná dokumentace CookBook (kuchařka). Není to strohá referenční příručka ale ani spousta zbytečného textu ala Microsoft Help. Je to pěkně stručně psané a u všeho jsou příklady, které lze hned kopírovat a použít. Celá příručka je dobře hiearchicky rozdělená a dobře se čte. Navíc framework má za sebou hodně silnou komunitu. Na serveru Bakery je spousta článků které popisují konkrétní příklady a problémy z praxe a jak je vyřešit v Caku. Takových serverů je víc: Když jsem něco nechápal, vždy se stačilo zeptat Googlu.

Jak začít? Byl jsem až překvapen jak to je jednoduché. Stáhnete si distribuci, zdrojáky nakopírujete na localhost. Spustíte program do příkazové řádky, který se jmenuje "cake". Nebojte nemusíte si pamatovat žádné příkazy, program se na všechno ptá a vy jenom odpovídáte. Nastavíte přístup k databázi, název a cestu k vašemu projektu a cake vygeneruje potřebné adresáře a soubory. Cake podporuje snad všechny myslitelné databáze, má nad databází objektovou abstrakci, takže změna databáze znamená pouze přepsání jednoho slova v konfiguraci. Máte už v databázi nějaké tabulky? Super, tak pro ně uděláme web. Cake stejně jako ROR podporuje metodu zvanou scaffolding. Stačí pro každou tabulku vytvořit controller a model a tadá, máte vygenerovaný kompletní CRUD (create read update delete) nad tabulkou. A to včetně stránkování a pěkného defaultního vzhledu. Jak vytvořit controller a model? Předpokládejme že vaše tabulka se jmenuje users. V adresáři controllers/ vytvořte soubor users_controller.php s obsahem:

<?php

class UsersController extends AppController {

var $scaffold;

}
?>

a v adresáři models/ vytvořte soubor User.php s obsahem:

<?php

class User extends AppModel {
}
?>

Nyní v prohlížeči zadejte http://localhost/users a budete koukat. Alespoň já jsem koukal jako puk. To, co mi vždy trvalo spoustu hodin a hrozně mě nebavilo tady už je hotové. A pokud jste udělali něco špatně, například špatně nastavili přístup k databázi, Cake vás nenechá na holičkách. Vypíše pěknou a přesnou chybovou hlášku, kde je napsáno v jakém souboru na jaké řádce máte co upravit. A jak vidíte z URL, Cake se také stará o pěkné adresy pomocí mod_rewrite. Pěkné, nemyslíte?

Scaffolding je ale pouze tak na ukázku. Vy potřebujete mít plnou kontrolu nad view, modely a controllery abyste mohli napsat plnohodnotnou PHP aplikaci. V jiných frameworcích musíte všechno psát od nuly, v Caku ne. Opět nastupuje skvělý program pro příkazovou řádku "cake". Na příkazové řádce se přesuňte do adresáře vašeho projektu. Poté zadejte příkaz "cake bake" (upéct koláč:D). A můžete vyrábět modely, controllery a view jak na běžícím páse. Program se vás ptá na podrobnosti a vy odpovídáte. Nejdřív je dobré upéct modely. Zde se vás program zeptá na vztahy mezi modely (tabulkami). Cake podporuje základní vztahy belongsTo (N:1), hasMany(1:N), hasOne (1:1) a hasAndBelongsToMany (N:N). To určitě nadefinujte u všech tabulek, později to ušetří hodně práce. U modelů se vás program ještě zeptá na omezení pro jednotlivá data - např. minimální a maximální počet znaků, ale jsou i složitější vzory jako "email", "číslo kreditní karty" atd. Vytvoření modelů proto trvá déle, ale controllery a view máte během chvilky. Pak zadejte do prohlížeče http://localhost a budete koukat podruhé. Máte hotový web nad celou databází, včetně CRUDu všeho. A to včetně vztahů mezi tabulkami! Tzn. Ve formuláři pro vytváření knihy bude rovnou <select> pro vybrání ke kterému autorovi patří. A když si prohlížíte autora rovnou uvidíte seznam souvisejících knih! Zkuste si zadat něco špatně do formuláře - jé ona funguje validace formulářů podle těch kritérií co jste zadali při tvorbě modelu! A koukněte do kódu. Je to všechno přehledné a připravené k úpravě. Tenhle způsob mi hrozně vyhovuje - nemám prázdný projekt kde musím studovat dokumentaci jak se to dělá a podle toho něco tvořit - tady už mám základ hotový a jenom upravuji pěkný přehledný kód a tím se rovnou učím "jak to dělat".

A to jsem možnosti Caku jenom nakousl. Obsahuje další samozřejmé věci - např. správu layoutů, můžete definovat layouty pro různá zobrazení. Správu přihlášení pomocí komponenty Auth - pokud máte databázi správně pojmenovanou (tabulka users, pole username a password), nemusíte ani nic nastavovat, stačí v controlleru definovat metody login() a logout(), vytvořit view pro logovací stránku a tadá, máte přihlašování a odhlašování. Nebo podpora lokalizace, když všechny texty opouzdříte funkcí __ (dvě podtržítka), jste připraveni na lokalizaci webu. Funkce funguje tak, že když najde jazykový ekvivalent, použije ho a když ne, vypíše to, co jste funkci zadali.

Líbí se mi také různí pomocníci, tzv. Helpery. Třeba HtmlHelper generuje pěkné a validní XHTML. Třeba zadáte příkaz $html->image('cake.png') a ono to vytvoří validní HTML obrázek s tím, že se nemusíte starat o URL obrázku i poté, co z localhostu přejdete na na nějaký hosting. Nebo FormHelper je úžasný. Formulář v Caku napíšete asi takhle:

echo $form->create('Building');

echo $form->input('name');

echo $form->input('address');

echo $form->input('public');

echo $form->input('accessible_from');

echo $form->input('company_id');

echo $form->end('Submit');

Tento kód vygeneruje validní XHTML formulář a políčka přizpůsobí typům z tabulky buildings. "name" je string, takže to bude běžný <input type="text" />. "public" je boolean takže to bude checkbox. "accessible_from" je datum takže to bude kalendářík. "company_id" je cizí klíč takže to bude <select> z výběrem existujících companies. Nutno říct že i texty jako nadpisy formulářových políček nebo texty chybových hlášek se inteligentně vygenerují podle databáze. Jak tento formulář vypadá můžete vidět zde.

A poslední věc kterou musím zmínit - jak v Caku získáváte data z databáze? Zapomeňte na SQL, to je moc složité :-) Řekněme, že chceme získat autora který má příjmení Herbert a všechny jeho knihy. V controlleru AuthorsController ve funkci view() napíšeme pouze tento příkaz:

$this->set('author',$this->Author->findBySurname("Herbert"));

Tato funkce vytvoří ve view proměnnou $author obsahující pole dat, které potřebujeme. Funkci findBySurname jsme nikde nedefinovali, máme jenom v databázi tabulku authors a sloupec surname. Cake poskládá SQL dotaz a to včetně všech joinů. Vše vrátí jako přehledné pole.

V souboru views/authors/view.ctp (view pro detail autora) pak už jenom vypíšeme pole foreachem:

echo $author['Author']['firstname'];
echo $author['Author']['surname'].'<br />';
foreach ($author['Book'] as $book)
{
echo '<b>'.$book['title'].'</b><br />';
echo $book['anotation'].'<br />';
}

A to jsem pouze nakousnul jenom ty nejvýraznější featury. CakePHP toho umí mnohem víc a jak budete web tvořit, budete je postupně objevovat. Nutno říct, že spousta věcí jde v Caku generovat, ale nemusíte nic z toho používat. Reálné projekty mají často specifika, na které třeba Cake nemyslí. Nevadí, vše je možné rozšířit a napsat po svém. Ale pak samozřejmě budete psát víc kódu. Například já jsem pracoval v projektu s PostGISem, který má vlastní SQL funkce, které Cake nevygeneruje. Vlastní SQL samozřejmě můžu použít, ale musím si potom například psát vlastní validaci.

Chcete vidět CakePHP v praxi? Pomocí něho už jsem vytvořil dva projekty - GPS hru Catch&Run a systém pro evidenci elektrických zásuvek Juice My Laptop. Catch&Run už je plně přizpůsobený web mým potřebám. Juice My Laptop je ještě v začátcích, je to z velké části vygenerované Cakem. Juice My Laptop jsem celkem tvořil asi 3 hodiny. A z toho hodinu jsem tvořil databázi a zadával vztahy mezi tabulkami. Nesrovnávám CakePHP s jinými PHP frameworky, protože s nimi nemám dostatek zkušeností. Ale s Cakem jsem naprosto spokojený.

No a třešnička na závěr - v celém projektu se tvorba webu přirovnává k pečení koláče. Pekařské termíny se prolínají dokumentací. Není nad to se při čtení dokumentace zasmát :-)

Tuesday, February 17, 2009

Patý semestr na STM – praktický a zábavný

Mám za sebou další semestr na ČVUT FEL STM – byl ve znamení praktických pokročilých předmětů, zahájení práce na bakalářce a objevení skvělého International Student's Clubu. Nastal také posun v přípravě nových programů – Fakulty Informatiky a Otevřené Informatiky na FELu. Tak jdeme na to.

V tomto semestru už se hodně projevily konkrétní zájmy jednotlivých studentů. Máme už poměrně velkou volnost ve výběru předmětů, tak spoustu mých kamarádů studovalo hodně odlišných předměty. To je ale určitě dobře, každý by měl dělat hlavně to, co ho baví.

Povinný předmět byl Semestrální projekt. Tady trochu selhala organizace, nikdo nám o tom nic neřekl. Chtělo by to třeba jednu přednášku o bakalářkách a tomto projektu. Ale poradili jsme si a informace zjistili sami. Většina z nás už si v září našla vedoucího práce pro bakalářku a zvolila si téma. Tento projekt jsme pak pojali jako zárodek bakalářky. Většina mých kamarádů nemusela ani nic dělat a dostala kredity zadarmo s tím, že bakalářku budou dělat příští semestr. Já jsem u svého vedoucího musel vypracovat podrobné zadání a analýzu bakalářky jako přehledný dokument. Takže docela pohoda, bavilo mě to.

Další povinný předmět z oboru Softwarové inženýrství se vlastně skládal ze dvou předmětů – Řízení SW projektů a Realizace programových systémů. Předměty měli společné dvojcvičení a přednášky oddělené. Měli jsme pracovat na softwarovém projektu, který na rozdíl od předmětu z třetího semestru měl mít funkční výstup. V týmech nás bylo docela dost, takže se nikdo extra nenadřel. Náš tým měl za úkol kontrolovat kód jakéhosi ovladače na bezdrátovou kartu pro Linux. Bylo nás hodně, tak jsme se rozdělili na „management" a „programátory". Já jako příslušník managementu jsem kódu moc nerozuměl, ale stačilo, abych vytvořil a přednesl pár prezentací. Zkoušky pak byly dvě, oboje z teorie, která je v tomto předmětu celkem intuitivní a dá se dobře naučit. Těmto předmětům by se dalo přezdívat „důl na kredity", měli jsme dokonce možnost nechat si uznat projekt tvořený v tomto předmětu jako Semestrální projekt (viz výše).

Dál budu psát o povinně-volitelném předmětu Tvorba mobilních aplikací. Byl to snad nejzajímavěji pojatý předmět, co jsem kdy studoval. Probíhal totiž formou hry. Na začátku jsme se rozdělili na týmy po 7 mi lidech. Každý měl na starosti jednu mobilní aplikaci. A byly to aplikace vskutku zajímavé – GPS navigátor, interaktivní čtečka QR kódů, rozpoznávání obrazců nakreslených v prostoru Wii ovladačem, zpracování infračervených signálů, rozpoznávání zvuků mobilním telefonem, Bluetooth lokalizátor a skládačka fragmentů obrázků stažených z internetu. Cvičení byla víceméně konzultační a pro testování našich aplikací. Bylo na nás, jakou platformu a provedení si zvolíme (záviselo to především na telefonu, který každý vlastnil). No a v zápočtovém týdnu proběhla velká hra. Běhali jsme s mobily po škole po připravených stanovištích a soutěžili s ostatními týmy. Klíčem k úspěchu byla daná mobilní aplikace – jak byla rychlá, jestli byla bez chyb, jestli měla intuitivní uživatelské rozhraní. Výsledky ve hře potom ovlivňovaly hodnocení studenta. Zkouška byla nepovinná ústní a když člověk překonal strach a přišel, mohl si známku jenom vylepšit.

No a nyní ke strašáku tohoto semestru – Administrace webového serveru. Předmět vypadal vskutku zajímavě – naučím se jak spravovat webový server Apache. Předmět ale byl mnohem těžší, než jsem si myslel. Cvičení byla ryze praktická – vždy jsme přišli k rozbitému webovému serveru, museli jsme ho spravit a potom vykonat sadu konfiguračních úkolů. Pro linuxové guru to nebyl problém ale já s linuxem zas takový kamarád nebyl, tak jsem pár prvních cvičení zápasil s banalitami jako jak kopírovat text z Firefoxu do mceditu a zpátky. Pak už mi to trochu uteklo a každé cvičení jsem stihnul jenom pár prvních úkolů. Dělala se semestrálka ve formě wiki článku týkající se předmětu a bylo nám nabídnuto, že jí můžeme i prezentovat a pak dostaneme body navíc. Ač jsem o to prosil cvičícího jednou osobně a dvakrát mailem, prezentace mi nebyla umožněna. Zkouška probíhala stejně jako cvičení – rozbitý server, úkoly, 3 hodiny. Pak byla ještě písemka z teorie a pouze a pouze na součtu z praxe a teorie záviselo hodnocení. Učil jsem se skutečně hodně, rozjel jsem si server na svém linuxu gOS, chodil jsem i do školy kde jsem si to zkoušel na místním Gentoo Linuxu. Ale z prvního termínu zkoušky jsem dostal za E, což jsem nemohl přijmout. Zasekl jsem se na problému, kde byly úmyslně špatná práva na přístup k adresáři o dvě úrovně výše než psala chybová hláška. A na tomto problému závisely i další úkoly. Strávil jsem další 4 dny Apachem a nyní můžu říct, že umím vcelku obstojně nakonfigurovat Apache server. Druhý termín mě ale opět zklamal. Vše jsem nastavil a fungovalo mi to v prohlížeči. Hodnocení ale neprováděl člověk ale automatický skript. Ten měl v sobě chyby a za skoro funkční konfiguraci mi přidělil polovinu bodů. Po teoretickém testu jsem se domáhal spravedlnosti u cvičícího, který toho evidentně měl po celém dnu dost. Moje připomínky ale uznal a dostal jsem se alespoň na známku C. Suma sumárum: V tomto předmětu jsem se naučil hodně, ale organizace nebyla zvládnutá a spoléhání na strojové hodnocení tak komplexní záležitosti jako je nastavení serveru není dobrý nápad.

Tento semestr byl pro mě také hodně humanitní, chtěl jsem si to už odbýt. Historie 1 byla pohodička kde stačilo vytvořit jednoduchou prezentaci a když jsem poslouchal, dozvěděl jsem se zajímavé kapitoly z historie 20.století. Etika byl zajímavý předmět vedený římskokatolickým knězem. Na cvičení jsem pouze poslouchal, neškodilo by víc aktivity přenést na studenty. Hodina se potom většinou zvrhla na diskuzi všichni proti cvičícímu na téma Potraty/Eutanázie/Konzumní sex :-) Ale i přesto dokázal pan Slámečka chytře oponovat. Jako tělocvik jsem si tento semestr dal Lezení na stěně a poté, co jsem přemohl počáteční strach z výšek, mě to velmi bavilo.

Poslední předmět o kterém budu psát je Rétorika, což byl mimořádně povedený humanitní předmět. Byl o tom, co jsme se nikdy na střední neučili a byla to chyba – o lidské komunikaci. Také o sebeprezentaci a pochopení gest a jiné neverbální komunikace. A vynikající paní Pinková to dokázala pojmout jednoduchými hrami mezi námi studenty, kde jsme přímo na sobě zkoumali různá gesta a prováděli různé hlasové rozcvičky, úpravy dýchání atd. Bylo to velmi vtipné a poučné. Každý také několikrát během semestru musel přednášet před publikem na zvolené téma, což bylo velmi přínosné, zvlášť když následovala diskuze o přednostech a nedostatcích dané prezentace. Překvapilo mě, že se paní Pinková nebála i ožehavých témat a např. na hodině před Vánoci nám vysvětlila (a předvedla!) některé ženské a mužské neverbální signály sloužících obvykle ke svádění opačného pohlaví. Prostě předmět jak má být :-)

Ještě něco málo o tom, jak se to vyvíjí s Fakultou informatiky. Ta získává reálnější obrys, konečně je rozhodnuto o prostorách, FI bude mít pronajaté patro v krásné nové budově Národní technické knihovny. FI má nový web, ale stejně pořád fakulta není schválena. Magisterský program určitě nebude a bakalářský bude schválen až v dubnu. V té době bude mít většina středoškoláků rozhodnuto a nová fakulta bude těžko shánět studenty. Věřím ale, že se počáteční zmatky zvládnou a FI bude jednička pro studium informatiky v Praze.

V současné době lépe vypadá program Otevřená Informatika na FELu, který už je kompletně schválený. Já na něj budu nastupovat na magistra. Je více hardwarově zaměřený, ale každý si tu najde svoje. Bohužel tento program je zde na úkor programu STM, který je v propagaci a i jinde zatlačován do pozadí. Neví se, jak dlouho tento program bude ještě přijímat nové studenty.

A svůj blogpost bych chtěl zakončit názorem na International Student's Club. Do tohoto semestru jsem o něm nevěděl a docela toho lituji. Myslím totiž, že členství v ISC dodá studiu tu správnou šťávu! Když jste členové, stanete se tzn. Buddies. Staráte se o mezinárodní studenty, kteří přijíždí na naší univerzitu. Já jsem si vybral dvě Američanky, které jsou hrozně super. Pomohl jsem jim s papírováním, provedl je po Praze a nyní už mě čeká jenom chodit s nimi na party a jezdit na výlety :-) Je to samozřejmě nepovinné, ale je to skvělá příležitost jak zlepšit angličtinu a poznat lidi z celého světa. Zrovna včera byla „Integration party" v pražském P.M. baru, kde jsem potkal spoustu lidí a ještě dostal večeři od ISC zadarmo :-)