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 :-)

Monday, November 24, 2008

MyHeritage – rodokmen Vaší rodiny snadno a komunitně

V poslední době jsem se zabýval mapováním historie naší rodiny. Zjišťoval jsem informace od příbuzných, s dědou jsme byli v okresním archivu nahlížet do matrik a na nejstarší záznamy jsme si najali profesionálního genealoga. A pak jsem objevil komunitní web MyHeritage – můj výzkum nabral úplně jiný rozměr. Tvorba rodokmenu nebyla nikdy tak jednoduchá a příjemná. A hlavně – pomocí dalších uživatelů jsem se dostal ještě o 100 let více do minulosti!

MyHeritage mě úplně uchvátil – je to robustní komunitní web založený na nejmodernějších webových technologiích se spoustu funkcemi. To se projeví už při tvorbě samotného rodokmenu – vše je drag&drop, vkládání je inteligentní – např. doplňuje příjmení, pomáhá s vytvořením vztahů mezi lidmi, nabízí přidání různých faktů k osobám.

rodokmen.png

První mě zaujalo vkládání rodinných fotek – na fotkách můžete tagovat obličeje a ty se pak zobrazují přímo v rodokmenu. To by ale nebylo nic převratného, takhle to funguje například na Facebooku. Ale na MyHeritage otagujete pár lidí, systém se z toho naučí a další fotky už taguje za Vás! Někdy rozpozná i přímo osobu na fotografii (třeba z rodinné oslavy), někdy jenom označí, že na tomto místě je obličej a vyzve mě k zadání jména. Rodokmen s fotkami vypadá pak skvěle.

Zadával jsem do systému zatím známé údaje a najednou se vedle jedné osoby ukázala taková zelená ikonka – funkce SmartMatch zapracovala. To je asi nejlepší feature této stránky. Systém zjistil, že stejnou osobu už někdo v rodokmenu má a nabídnul mi porovnání rodokmenů – a skutečně! Zjistil jsem, že v roce 1720 bratr mého předka emigroval do Ameriky. Tam založil rodinu a jeho potomek nyní zadal svůj rodokmen na MyHeritage. Ale údaje o otci tohoto bratra se samozřejmě shodují! A to i dál do minulosti. Profesionálnímu genealogovi jsem platil za zjištění takhle dávných informací o jednom člověku 500 Kč. Tady jsem to měl zadarmo na pár kliknutí. Informace od toho genealoga jsem si ověřil, rozšířil a přidal ještě 3 generace předků do minulosti!

smartmatch.png


Procházel jsem webem dál a našel další užitečné funkce – třeba export rodokmenu do PDF. Čekal jsem, že tahle funkce bude placená, ale nikoli. Vše na tomto webu je do 500ti osob v rodokmenu zadarmo. A ty PDF vypadají graficky opravdu pěkně. Rodokmen lze rozsekat na A4 nebo lze vygenerovat jedno velké PDF! A těch nastavení – zvolit jde všechno od zobrazovaných informací po různá témata vzhledu.

U statistik ještě zůstaneme, těch je na webu také požehnaně – pomocí statistik jsem třeba zjistil: kdo žil nejkratší/nejdelší dobu, kdo se nejvíckát vdal/oženil, kdo byl nejstarší/nejmladší při narození dítěte, kdo měl nejvíc dětí, kteří dva partneři měli největší věkový rozdíl, průměrná délka života v mé rodině, nejčastější jména a příjmení mých předků, ...

A to není všechno. Web je třeba plně přeložen do češtiny – a to pěkně profesionálně, nikoliv tak nejednotně jako na Facebooku. Na webu je spousta obvyklých komunitních funkcí – vaši žijící příbuzní jsou automaticky zváni k přispívání do rodokmenu Vaší rodiny(pokud zadáte jejich e-mail). Nebo třeba feed změn na rodokmenu. Nebo třeba kravinky jako najdi 5 mě nejpodobnějších celebrit (podle podobnosti obličeje).

Pokud Vás rodinná historie alespoň trochu zajímá, určitě se podívejte na MyHeritage. Získáte tak skvělý nástroj pro správu Vaší rodinné historie a možná objevíte předky a i žijící příbuzné, o kterých jste neměli ani tušení.

(Můj rodokmen na MyHeritage)

Tuesday, June 10, 2008

Čtvrtý semestr na STM – matematika kam se podíváš

Mám za sebou další semestr na ČVUT FEL STM. Tento semestr byl oproti tomu minulému mnohem víc teoretický a matematický, nebylo to ale tak hrozné. Navíc v tomto semestru proběhla revoluce v podobě nové Fakulty Informatiky. Chcete vědět víc? Čtěte dál!

V tomto semestru se plně začaly projevovat rozdíly mezi jednotlivými obory, společných předmětů je pořád méně. Navíc jsme měli větší volnost ve volitelných a povinně volitelných předmětech. Z toho plyne, že málokdo měl stejné předměty jako já. Proberu nejdřív ty povinné předměty:

Diskrétní matematika – rovnou začneme s tím nejmatematičtějším předmětem. Probíralo se především počítání s čísly omezenými modulem, což se dalo použít v předmětu Bezpečnost přenosu a zpracování dat. Ač jsem se tohoto předmětu hodně bál, tak cvičení byly pochopitelné, psaly se dvě průběžné písemky (což je dobře protože jinak by mi všechno učení zbylo až na zkouškové) a při učení na zkoušku mě překvapily dobře zpracovaná skripta a hlavně sbírka příkladů napsaná „lidsky". Ač na prvních termínech byla docela vysoká úmrtnost, přišla mi takhle matematika lehčí než Úvod do algebry nebo Matematická logika

Bezpečnost přenosu a zpracování dat – zajímavý předmět o šifrách a síťové bezpečnosti. Velká část látky byla stejná s Diskrétní matematikou, protože šifry často počítají v nějakém modulu. Někdy dokonce byla matematika v tomto předmětu rozšířením toho, co jsme znali z DMA. Tyto předměty se tedy pěkně doplňovaly a bylo to takové zajímavé uplatnění teorie v praxi. Naučili jsme se jak jednoduché šifry tak běžně používané šifrovací algoritmy jako RSA, AES, MD5 atd. Jako studijní materiál byly místo skript velmi podrobné slidy. Nebylo úplně snadné algoritmy z nich pochopit, takže se studovalo stylem „najdu algoritmus ve slidech a pochopím ho na Wikipedii". Cvičení moc přínosné nebyly, nebyla na nich žádná motivace. Opět se ale naštěstí psaly dvě písemky v průběhu semestru. Celkově ale tento předmět hodnotím jako nejtěžší v celém semestru, hlavně kvůli spoustě vzorečků a postupů, které bylo nutné se naučit mechanicky nazpaměť.

Vytěžování dat – tento předmět nás učil jak získat ze zdánlivě nesouvisejících kvant dat zajímavé skutečnosti. Předmět se také zabýval neuronovými sítěmi. Velmi přitažlivá témata, ale zpracování špatné. O cvičeních skoro nikdo nechápal, co to vlastně děláme. A na jednom cvičení nám bylo oznámeno, že máme za 14 dní odevzdat semestrálku na reálných datech. Nikdo nevěděl jak na to, práce s programem Rapid Miner byla velmi zdlouhavá, protože nám na cvičeních nebyla pořádně vysvětlena. Spoluprácí s ostatními a metodou pokus-omyl se nějak podařilo semestrálku zvládnout. Jako studijní materiál byly k dispozici jenom slidy, které byly naprosto strašné. Slidy jenom z pár hesel, nebylo vůbec jasné, co je důležité, všude spousta nepochopitelných obrázků. A na internetu se toho o Data Miningu také moc nedozvíte. Tento předmět vyučovala katedra kybernetiky a závěr každé přednášky byla propaganda ve stylu „máme tenhle a tenhle výzkum, pojďte studovat k nám". Zachránilo nás jenom to, že zkoušející u zkoušky nedávali moc pozor...

Profesionální komunikace – takový trochu psychologický předmět o komunikaci mezi lidmi. Cvičení byly povinné a probíhaly formou diskuse. To ani neobtěžovalo a na konci semestru přišel zápočtový test. Před ním jsme museli povinně protrpět přednášku, která nám byla spíše pro smích. Test nebyl těžký, nebylo se na něj potřeba ani moc učit. K dispozici byly poznámky k přednáškám, které mě přišly jako středoškolská látka opepřená pár odbornými výrazy. Problémem testu bylo, že některé otázky byly dost sporné a známka se určovala jenom z tohoto testu. Možná by neškodilo zavést třeba referáty, kterými by šla známka vylepšit.

Teoretická informatika – tento předmět jsem si dal jako volitelný, především protože byl údajně potřebný pro magisterské studium na FELu. S příchodem Fakulty Informatiky už to pravděpodobně bude úplně jinak. Ale rozhodně jsem zvolením tohoto předmětu neprohloupil! Předmět byl takovým pokračováním Datových struktur a algoritmů a zabýval se hlavně grafy. Každé cvičení se psala minipísemka, takže jsem se připravoval průběžně a všechno chápal. Z velmi dobře zpracovaných slidů a cvičení jsem pochopil, že grafové pojmy do sebe krásně logicky zapadají a grafy se dá elegantně řešit spousta algoritmických problémů, například hledání nejkratší cesty. Rychle jsem pochopil věci, které mi byly na střední škole při řešení programovací olympiády vždy záhadou. Na cvičeních, proseminářích, za domácí úkoly a za semestrálku šly získávat body. Což mě bavilo a bodů jsem pak měl ke zkoušce docela dost. Jako semestrálku jsem natočil video o Dijkstrově algoritmu. Tenhle předmět mě prostě opravdu překvapil a bavil.

Programové rozhraní operačních systémů – povinně volitelný předmět, prakticky zaměřený. V první části se programovala libovolná aplikace v C++ s GUI a Thready. Výhodou bylo, pokud byla aplikace spustitelná na Linuxu i na Windows. Pracovalo se v trojčlenných teamech, takže to docela šlo. My jsme programovali SMTP Server. Druhý úkol byl zajímavější – opět v teamech nabourat připravený POP3 server a pomocí buffer overflow spustit na napadeném PC vlastní kód. Bylo k tomu potřeba disasemblovat binární kód v C++ a přijít na slabé místo programu. Docela náročný úkol, ale touto zajímavou cestou jsme se naučili, jak programy pracují na úrovni operačního systému a jak psát programy v C++ bezpečně. Co nás štvalo, byla přísnost hodnocení prací cvičícího T. Luska. Jinak ale hodnotím tento předmět kladně.

Další předměty – kromě naposled povinného tělocviku jsem si zapsal povinný letní kurz, kam jedem v létě a všichni se na kurs těšíme. Dále jsem chodil na přípravu na zkoušku CAE. Platilo se sice 2000,- za semestr, ale stálo to za to. Angličtina to byla skutečně kvalitní. Musíme mít také nějaké humanitní předměty, takže jsem chodil na Filosofii. Byla to docela flákačka, i když občas se strhla zajímavá filosofická debata.

Celkově tedy hodnotím tento semestr rozhodně kladně. V předmětech bylo hodně teorie, ale vždy bylo jasné, jak se dá teorie použít v praxi. Obecně mě těší, že se dá škole věnovat míň a míň času a můžu teď při škole i pracovat. V prvním semestru jsem chodil do školy každý den. Ve druhém semestru čtyři dny. Ve třetím a čtvrtém semestru tři dny. No a nyní mám rozvrh na další semestr (přednášky nepočítám) vtěsnaný do dvou dnů! A protože mám už docela dost kreditů, vypadá to, že poslední semestr se vejde do dne jednoho :-)

A jak to vypadá s budoucností STM? Jisté je to, že zanikne. Není jisté to, co tento program nahradí. V únoru děkan fakulty odvolal celé vedení katedry počítačů kvůli tomu, že připravovali Fakultu Informatiky. Tento krok vyvolal hlasitou reakci studentů. Je ostuda, že Praha oproti Brnu, Ostravě nebo Bratislavě pořád fakultu informatiky nemá. Hlavně díky podpoře studentů to tedy vedení katedry počítačů nevzdalo a děkan se s námi alespoň začal bavit. Plán nové fakulty má i podporu rektora ČVUT. Pokud akreditace dopadne dobře, nastoupíme na magistra rovnou na Fakultu Informatiky a otevře se také bakalářský obor, kam studenti STM automaticky přestoupí. Studenti oboru Výpočetní technika na programu EaI budou moci přestoupit volitelně. Vedení FELu navíc vypracovalo program Otevřená informatika. Je více zaměřený na hardware a kybernetiku, ale i "softvéráři" si tam najdou svoje. Je škoda, že se takhle dělí síly. Pevně doufám, že to s Fakultou Informatiky dopadne.

Monday, March 17, 2008

Google Talk - jak dát ICQ sbohem pomocí Jabberu

Už to bude víc než 6 let, co používám ICQ pro rychlou textovou komunikaci (instant messaging). Můžu tedy říct, že vím o tomto protokolu hodně. V poslední době už mě ICQ přestává bavit a postupně přecházím na otevřený komunikační protokol Jabber. Co mě na ICQ vadí? Jaké má Jabber výhody? Proč používám jabber klienta Google Talk? Čtěte dál.

Začal jsem ICQ používat v době, kdy o něm vědělo jenom pár lidí. V té době byl instant messaging relativně novinka a ICQ bylo jedno z prvních. Český národ je odjakživa spořivý a když se objevila možnost bezplatné náhrady smsek, ICQ se začalo rychle šířit. Později lidé už byli zvyklí a nechtěli přejít na nic jiného. To je podle mě důvod, proč je v České republice tato síť nejpoužívanější (v současné době okolo 2 miliónů uživatelů). V ostatních zemích tomu vůbec tak není, lidé používají mnohem vyspělejší protokoly (nejvíce Windows Live Messenger).

Mnoho lidí argumentuje nesmyslnými licenčními podmínkami provozování ICQ. Podmínky jsou sice vtipné, ale uživatele se nijak nedotýkají. Kdyby se jimi společnost vlastnící ICQ (AOL) řídila, rovnou může celé ICQ vypnout. Co mě na ICQ nejvíc vadí je jeho zastaralost a uzavřenost. ICQ byla ze začátku bomba, ale jeho vývoj těžce pokulhává. Mluvím tu především o oficiálním klientovi, který je velký, zatížený reklamou, nevkusnou grafikou a nepotřebnými funkcemi. Přijde mi, že přechod z verze 5 na verzi 6 byl spíš downgrade než upgrade. Z klienta zmizelo spoustu funkcí, mimo jiné tvorba vlastních statusů. Přibyly takové kraviny jako nativní otevírání odkazů v Internet Exploreru. Uzavřenost protokolu je také problém – ICQ běží na několika oficiálních serverech, které mají samozřejmě výpadky. Společnost AOL si pak může dělat co chce – např. přibližně před rokem se šířil vir, který pomocí ICQ posílal kamarádům odkaz na sebe. Jak to vyřešilo AOL? Vypnulo posílání odkazů v celé síti! Naprosto neprofesionální přístup.

Dobře, nelíbil se mi oficiální klient, začal používat multiprotokolový klient Miranda. Miranda je skvělá – pomocí volně dostupných pluginů si ji můžete plně přizpůsobit k obrazu svému. Přizpůsobení chce hodně času a trpělivosti na nastavování. To mě jako geekovi nevadí, běžné uživatele to asi odradí. Co mě ale vadí – i po stažení několika Miranda Packů, sáhodlouhém nastavování a ladění to nefunguje úplně dobře. Objevují se malé chybky, občas klient spadne. To se dá přežít. Co se ale přežít nedá, je pokud chcete pluginy nebo celou Mirandu upgradovat. Ukáže se, že pluginy jsou nekompatibilní a celá Miranda se sesype. Z toho důvodu jsem už dva roky používal pořád stejnou Mirandu, kterou jsem se bál upgradovat. Dlouho mě také vadila nemožnost posílání souborů v ICQ síti.

Díval jsem se tedy po jiném řešení a objevil jsem otevřený protokol Jabber. Otevřený znamená, že každý si může pustit svůj Jabber server. Jabber můžete začít používat tak, že se zaregistrujete např. na stránkách jabber.cz. Tento server podporuje také transport do jiných sítí, můžete tedy komunikovat i s lidmi např. z ICQ. Potom si stáhnete nějakého volně dostupného klienta. Nejlepší klient na Jabber je pravděpodobně Psi. Ani tento klient se mi ale moc nelíbí, není úplně dotažený do konce a obsahuje opět zbytečné funkce. To je důvod, proč už jsem na Jabber nepřešel dávno.

googletalkclient.gifUž dlouho používám Gmail a občas jsem používal i v něm zabudovaný chat. Vyzkoušel jsem, jak by se chatovalo pomocí programu Google Talk. Po jeho instalaci se chatování přeneslo do jiné dimenze. Google Talk je jako všechny služby Googlu – velmi jednoduchý na použití a vyladěný do detailů. Nemá žádné zbytečné funkce, umí prostě dobře chatovat. Spolupracuje s Gmailem, kde se všechna konverzace ukládá. Pokud v Gmailu vyhledáváte, automaticky se vyhledává i ve vašich chatech. Google Talk má příjemný jednoduchý design, je nenáročný na paměť, oznamuje nové maily na Gmailu. Chatování běží na Jabberu, spojíte s kýmkoli z této sítě (nebo i přes Jabber transport s jinými sítěmi). Také kvůli němu jsem začal používat Google Apps for your domain. Tato služba umožňuje využívat služby Googlu jako mail, kalendář nebo chat na vlastní doméně. Moje Jabber ID (JID) nyní není něco jako nick@reklamafirmy.com, ale pěkně me@destil.cz.

Google talk klient může klamat velmi jednoduchým vzhledem. Ale překvapí Vás, když začnete doopravdy s někým chatovat. Pokud má protějšek taky Google talk, můžete mu bezplatně zavolat. Volání je mnohem lepší než přes Skype – protokol, který jsem taky donedávna občas používal. Nezatěžuje vaši linku jinými uživateli, vše je automaticky nastaveno, zpoždění je minimální, přenos hlasu je plynulý a hlas zní přirozeněji. Rovněž posílání souborů je pěkně vyřešeno – běží pěkně rychle a má spoustu vychytávek. Např. pokud posíláte obrázek, zobrazí se přímo v chatovacím okně. Navíc tohoto klienta zvládne nainstalovat opravdu každý.

Google talk je proto podle mě nejlepší klient pro Jabber. Spousta mých kamarádů už Jabber také používá, ICQ tak můžu s čistým svědomím opustit.

Tuesday, January 29, 2008

Třetí semestr na STM – nejpraktičtější ze všech

Mám za sebou další semestr na FEL STM – tentokrát to byl velmi praktický semestr a ani to nebolelo. Navíc se v jeho průběhu rozhodlo o budoucnosti celého programu STM. Zajímá Vás jaké to bylo a bude? Čtěte dál!

V tomto semestru se cesty studentů na STM rozdělily na 4 obory. Největší zájem byl o obor Web&Multimedia těsně následovaný oborem Softwarové inženýrství. Menší zájem byl o obor Manažerská informatika a na obor Inteligentní systémy nastoupilo jenom okolo 15ti studentů. Tento obor by mohl být zajímavý, ale bohužel byl zřízen „na poslední chvíli". Já jsem si vybral cestu oboru Softwarové inženýrství s tím, že si nepovinně zapíšu některé předměty týkající se webu z Webu&Multimédií. Vyhnu se tak grafickým předmětům, které jsou ve W&MM povinné. Většina předmětů ale byla společná pro všechny obory.

Programování v jazyku v C++ byl čistě programovací předmět. Během semestru jsme nemuseli skoro nic dělat a o to byl pak těžší začátek ledna. Museli jsme odevzdat docela složitou semestrálku v C++, která musela být zkompilovatelná nejpřísnějšími kompilátory. Osobně jsem s jazykem C prožil spoustu bezesných nocí a vzpomínal na krásnou Javu. Možná by pomohlo, kdybychom na cvičení byli motivováni něco dělat díky bodům za aktivitu. Jinak byl ale předmět dobře připraven a materiály byly kvalitní. V zápočtovém týdnu se psala velká písemka, která byla de facto zkoušková. Měla dvě části – klauzurní a klasifikovanou část. Klauzurní se hodnotila jenom má zápočet/nemá a za klasifikovanou byly body na zkoušku. Vše bylo programování v C++ na papír, na což jsme dost nadávali. V klauzurní části jsem měl nějakou malou chybu, která by se hned po spuštění programu projevila. Papír bohužel spustit nejde. Naštěstí se vše dalo zachránit na opravném termínu, ale byly to horké chvilky. Obecně předmět hodnotím kladně, donutil mě naučit se v C++ a při neodfláknuté semestrálce se dal dát ze semestru.

Úvod do softwarového inženýrství je povinný předmět mého oboru. Při absolvování jsem váhal, jestli jsem si obor zvolil dobře. Předmět nás měl naučit analýze pomocí UML a vyzkoušet si práci v týmech. V 5tičlenných týmech jsme měli provést kompletní analýzu složitějšího softwarového projektu. UML nás ale nikdo neučil. Nakonec jsme sklouzli k tomu, že jsme psali texty, které byly „manažerské" a kreslili diagramy, které „vypadaly fakt dobře". Ale nikdo by podle nich žádný softwarový projekt nestvořil. Navíc v půlce semestru byl také klauzurní test (je/není zápočet), který některým týmům snížil počet členů. Na konci semestru se nám podařilo vygenerovat 100stránkovou pochybnou ale dobře vypadající dokumentaci. Zkouška pak byla docela v pohodě, protože sami zkoušející pořádně neovládali UML. Zkoušku složil nakonec ten, kdo byl sebevědomý a řekl: „Chci jedničku". Tento předmět mě skutečně nepřesvědčil, že analýza je u větších projektů potřeba a že to není jenom ztráta peněz a lidských zdrojů.

Tvorbu webových aplikací 1 jsem si zapsal nepovinně. Tento předmět mě velmi bavil. Byl jeden z mála, kde se na cvičeních něco dělalo. Učili jsme se klasickou kombinaci webových technologií XHTML+CSS+JS+PHP+MySQL. Učili jsme se ale vše pěkně tak, jak se v současné době má na webu programovat. I já, který s těmito technologiemi pracuji už dlouho jsem se něco přiučil – např. vychytávky v JavaScriptu, správné použití Model-View-Controlleru v PHP nebo použití šablon. Jako semestrálku jsem předělal moje fórum na destil.cz, což se hodilo. Navíc nepovinná bodovaná aktivita byla vypracovat článek na české Wikipedii o webových technologiích. To je myslím výborná myšlenka – studenti se něco naučí a zároveň pomohou rozšířit největší encyklopedii světa. Tento předmět mě opravdu moc bavil a díky bodům ze semestru jsem ani nemusel na zkoušku.

Počítačové sítě byl nejtěžší předmět tohoto semestru. V průběhu jsme museli absolvovat dvě praktické úlohy a naprogramovat dvě síťové aplikace. Praktické úlohy byly zajímavé – konfigurace Linux a Cisco sítě. Navíc v se síťovalo v týmech, kde vždy byl alespoň jeden, kdo tomu rozumněl. Programovací úlohy byly horší. První byla přenost souboru pomocí TCP. To v Javě není aní tak těžké, ale serverová strana se po nás chtěla vícevláknová se současným obsluhováním více klientů. Kdo Javu a vlákna moc neovládá, měl problémy. Takové věci by se podle mě neměly učit v Počítačových sítích. Druhá úloha byla ještě těžší – implementovat přenos souboru pomocí UDP protokolu, ale s detekcí a opravou chyb pomocí algoritmu "plovoucího okénka". Nikdo nám neřekl jak na to a samotný algoritmus je poměrně komplikovaný. Museli jsme toho opravdu hodně vygooglit a strávit několik nocí programováním a ještě mnohem víc nekonečným laděním...Opět si myslím, že programování by se mělo probírat jinde. Zkouška byla hardcore. Práce v semestru na ní neměla skoro žádný vliv a otázky byly velmi těžké, žádné ABCD. Navíc přednáškové slidy byly velmi nedostatečné – pouze seznam pojmů, nikoliv jejich vysvětlení. Nikdo moc takovou obtížnost nečekal a na prvních termínech byla úmrtnost okolo 70%. Potom se většina předmětu zalekla, začala googlit významy pojmů a vše vypracovávat na stm-wiki. Vedení vyšlo vstříc a další testy udělalo lehčí. Nakonec až na ústním dozkoušení se mi podařilo jedničku vybojovat, ale rozhodně to nebyla procházka růžovým sadem. Předmět hodnotím ale spíše kladně, naučil jsem se něco o vláknech, automatech (v Javě) a náročná zkouška mě donutila se něco o sítích doopravdy naučit.

Technologie XML byl hodně v pohodě předmět. Na cvičení se nemuselo nic dělat a semestrálka zabrala tak jeden den. Bylo pro ní přesně dané zadání podle kterého se postupovalo. Při tvorbě jsem se dozvěděl něco o užitečnosti XML, jeho validace, transformace a přístupu ke XML v Javě. Zkouška probíhala pomocí elektronického testu psaného z domova, který šel s pomocí kamarádů na ICQ bez problémů zvládnout.

Databázové systémy byl také velmi jednoduchý předmět. V semestru jsme trochu začali dělat na semestrálce, takže pak samotná tvorba semestrálky ani nebolela. Opět dobře připravený template na semestrálku, který se jenom vyplňoval. V předmětu jsem se dozvěděl jak pracovat s databází Oracle, pokročilé SQL dotazy a výhodu obrázkového E-R modelu. E-R modelem lze jednoduše databázi "nakreslit" a vše pak jednoduše exportovat do SQL. Zkouška pak byla relativně jednoduchá vzhledem k mým předchozím zkušenostem s SQL.

Datových struktur a algoritmů jsem se docela bál. Látka byla poměrně složitá – grafové, rekurzivní a jiné algoritmy s důrazem na co nejmenší efektivitu. Měli jsme ale skvělého cvičícího – pana Chludila. Mrzí mě, že jsme neměli cvičení víc. U více předmětů se totiž projevil nedostatek místností pro katedru počítačů – cvičení jsme měli zkrouhlé na půlku a místo toho jsme měli prosemináře (trochu praktičtěji založené přednášky). Zpátky k panu Chludilovi – srozumitelně nám dokázal vysvětlit i komplikované algoritmy a dokonce nás dokázal pro ně „nadchnout". To se málokomu podaří. Na každém cvičení se psala malá písemka, ale to bylo jenom dobře, aspoň jsme pak na cvičení věděli o co jde. Semestrální práce byla krátká ale zábavná – mělo se zpracovat jedno téma z předmětu libovolným způsobem. Jediná podmínka byla co největší názornost. Dalo to pojmout třeba s humorem a natočitvideo. Vznikla tak výborná databáze materiálů pro učení. Zkouška byla jedna z těžších. Já jí proplul, když jsem šel zkusit předtermín a měl docela štěstí na otázky.

Anglickou konverzaci jsem si zapsal, abych se vyhnul druhému jazyku. Měli jsme na ní rodilého mluvčího pana Cooka, který byl typicky americky trhlý, dozvěděli jsme se i něco zajímavého a občas anglicky promluvili.


Když semestr shrnu tak jsem s ním byl vcelku spokojený – všechny předměty byly praktické, nabyté zkušenosti mohu využít rovnou v praxi. K tomu patřilo obrovské množství semestrálek, které se měly všechny odevzdávat začátkem ledna. Měli jsme tedy krušný začátek ledna, ale nakonec se všechno stihlo. Semestrálkami jsme se toho také hodně naučili. V semestru se mi obecně nelíbilo flákání na cvičeních (které by nám usnadnilo zkouškové) a naopak nedostatek cvičení na zajímavých předmětech (které byly jenom chabě nahrazovány prosemináři). Výsledkem semestru jsem ale byl mile překvapen. Kromě semestrálek jsem se ani moc nenadřel a ačkoli jsem to nijak neplánoval, dokončil jsem semestr se samými jedničkami a těším se na tučné prospěchové stipendium :-)


A co k slibované budoucnosti STM? V průběhu semestru jsme se dozvěděli, že nebude žádný magisterský program pro STM a STM zanikne! Byl to pro nás docela šok, zvlášť když před minulými volbami nás každý ujišťoval, ať se ničeho nebojíme. Nebude to ale zas tak hrozné. Elektrotechnická fakulta se nakonec nerozpadne na dvě(Elektrotechnika x Informatika), vedení se dohodlo na kompromisu. Bude restrukturalizované celé studium a vznikne nový bakalářský obor Informatika. Ten nebude separátní jako teď STM, nebudou dva studijní programy. Tento obor nebude mít společný první ročník s ostatními obory jako teď na EaI. Informatika bude převážně kopírovat STM, ale bude tam o pár víc teoretických a elektrotechnických předmětů navíc. Pořád to podle mě bude nejlepší volba pro studium informatiky v Praze.

No a na tento program bude navazovat regulérní magisterské studium. Tato změna nastane právě, když náš ročník dostuduje STM bakaláře. Bude nám umožněn plynulý přechod na tohoto nového magistra. Stačí, když si do konce bakaláře zapíšeme dva teoretické předměty navíc. Obavy z toho, že naše studium skončí po bakaláři jsou tedy zažehnány.

PS: Moji kamarádi z FELu začali tento rok provozovat e-shop s tričky s geekovskou tématikou, sám nosím RTFM tričko a Have you tried turning it on and off again tričko a musím uznat, že stojí za to!

Saturday, June 23, 2007

Druhý semestr na STM - suma sumárum

Právě jsem úspěšně zakončil 2.semestr bakalářského programu Softwarové technologie a management na ČVUT Fakultě elektrotechnické . Především zájemcům o tento studijní program chci podrobně tento semestr v tomto článku popsat a zhodnotit. Začnu u jednotlivých předmětů:

Technologie pro web a multimedia: Myslel jsem, že když už tolik let dělám webové stránky, že mi tento předmět nemůže nic nového přinést. Byl jsem příjemně překvapen. Naučil jsem se, jak psát stránky validní, accesibilní a přístupné pro internetové vyhledávače. Dokonce i v HTML jsem se naučil některé nové tagy a poznal krásy formátování jenom za pomoci CSS. Předmět nebyl těžký, byl velmi prakticky zaměřený a kromě několika lehkých testů stačilo udělat jako semestrálku validní HTML stránku, která bude splňovat tato kritéria . Předmět mě konečně dokopal k profesionalizaci mých osobních stránek, mojí semestrálku můžete vidět na webu destil.cz .

Struktura a architektura počítačů: Tohoto předmětu jsem se bál, protože nejsem žádný odborník na hardware a myslel jsem, že se bude jednat o Elektrotechniku pro informatiky 2. Opět jsem byl příjemně překvapen. Zajímali jsme se o číslicový návrh logických obvodů, jak realizovat logické operace pomocí hradel. To samo o sobě zajímavé není, ale nabyté zkušenosti jsme měli možnost ihned otestovat v laboratoři. Obvod jsme nejdřív navrhli v programu Xilinx a pak nahráli do malého přípravku, který měl tlačítka a diody. Velmi nás to bavilo, tak jsme s kamarádem předmětu zasvětili i trochu volného času a navrhli jenom pomocí obvodů malou hru Ping pong pro dva hráče, kde jezdí diodky tam a zpátky a hráč musí "odpálit" blikání správným stisknutí tlačítka. Jezdění se zrychluje a ještě jsme zobrazovali score na sedmisegmentovém displeji. Bylo velmi poučné se dozvědět i něco o tom, jak to v počítači funguje na nižší úrovni, že počítač není krabice plná magie :)

V druhé části semestru jsme brali počítání v různých číselných soustavách, což by měla být základní znalost každého dobrého informatika. Na laboratořích jsme programovali v Assembleru, což bylo také zajímavé. Assemble se dost podobá vyšším programovacím jazykům a přitom jsme měli přehled, co se děje v procesoru. Psali jsme různé prográmky co většinou zobrazovaly něco na displeji a rovnou program zkoušeli na reálném přípravku. Předmět byl docela lehký, protože na cvičeních se snadno daly získat body za aktivitu. Za laboratorní úlohy a písemky byly další body a nakonec to dopadlo tak, že jsem na zkoušku vůbec nemusel a měl jedničku už ze semestru.

Programování v jazyku Java: Bylo trochu škoda, že laboratorní cvičení bylo jenom jednou za 14 dní. Zvlášť pro ty, kteří viděli Javu poprvé mohlo být těžké to všechno pochopit. Mě osobně ale předmět bavil ze všech nejvíc. Probíraly se především velmi praktické věci v Javě – GUI, práce se sítí, vlákna a objektový přístup. Cvičení probíhala tak, že cvičící psal kód nějakého uceleného programu (slovník, hra Life, jednoduché malování, jednoduchý webový prohlížeč), my to psali s ním a on vše komentoval, proč a jak to tak píše. Tento přístup se mi zdál hodně dobrý, hodně jsem se toho naučil. Na programy napsané ve škole navazovaly domácí úkoly, které nám pomohly upevnit získané znalosti. K zápočtu byla ještě potřeba semestrálka – mohli jsme jí dělat ve dvojici a pustili se do většího programu – hře Bomberman po síti. Při psaní semestrálky jsem se toho naučil asi nejvíc. Ve zkouškovém se psala písemka, která byla docela těžká, ale díky dostatku bodů ze semestru ztráta bodů ani moc nevadila.

Objektové modelování: Na tento předmět jsem se těšil, ale naopak jsem byl zklamán. Byl velmi chaoticky organizován a místo učení objektového přístupu a popis problémů pomocí UML diagramů před nás byl postaven pekelný program Daskalos. Tento program byl vyvinut fakultou a je určen jenom pro studiní účely. Má umožňovat objektový návrh systému a automatické generování UML diagramu. Je ale neskutečně chybový a ne-blbuvzdorný. Pokud student zkoušel v Daskalu pracovat metodou pokus-omyl, se zlou se potázal, jeho snažení většinou skončilo zničením dosavadní práce. Vedlo to proto k paranoidímu zálohování každé změny. Navíc se pro popis metod objektů používal jazyk Smalltalk. Neexistuje k němu žádná pořádná dokumentace, pochopit jeho syntaxi byl opravdu boj. Ani přednášky nám moc nepomohly, přednáška o Smalltalku byla až na konci semestru! Cvičení byla většinou konzultační ohledně našich semestrálek, nic moc nám cvičící s Daskalem neporadili. Naštěstí bodové hodnocení bylo nastaveno mírně a na konci se ještě psal primitivní test, takže získat dobrou známku nebyl problém. Jenom mě štve, že mi tento předmět skoro vůbec nic nedal.

Právní aspekty podnikání: Tento předmět byl také trochu strašák – žádná cvičení, jenom přednášky a pak zkouška. Z takové nudné věci jako právo se ale nakonec vyklubala docela zábavná záležitost, hlavně díky osobě přednášejícího – pana Šejnosty. Je to vždy optimistický a vtipem sršící právník, který jinak nudné zákony prokládal příklady ze své právnické praxe a scénkami přímo se studenty. Často dokázal rozesmát celou posluchárnu. Na zkoušce se psal docela obsáhlý test, z něhož 80% otázek bylo zveřejněno předem. Následovala ústní zkouška, která byla moje nejvtipnější zkouška na FELu. Ten, kdo měl odvahu a šel bojovat o lepší známku, měl to v kapse. Ukázka jedné ústní zkoušky:

Šejnost: Chcete tu dvojku?
Keymaster: Ne
Šejnost: Tak mi tedy řeknete, co je to veřejně prospěšná společnost
Keymaster: hmm.... mmm... to je ta společnost, která...
Šejnost: Ha! dostal jsem vás, nic takového neexistuje, právě jsem si to vymyslel!
Keymaster: No vy jste mě nenechal domluvit, ja jsem chtěl říct že to je společnost která neexistuje
Všichni vybuchli smíchy
Asistentka: Tak teď vás dostal...
Šejnost: Za jedna.

Tvorba elektronické dokumentace: V tomto předmětu jsme se měli učit, jak psát odborné práce v programu OpenOffice. Vtipné bylo, že byl vyučován katedrou Elektrických pohonů a trakce, která asi na FELu už nemá co učit. Museli jsme přednášet dvě prezentace a zpracovat dva odborné články. Bylo toho zbytečně moc, klidně by stačil jeden článek a prezentace. Moc jsme se toho nenaučili, předmět byl spíš na obtíž, do prezentací a článků jsme museli násilně vkládat povinné objekty jako grafy, tabulky, vzorce a grafiku a to nám zabralo dost volného času. Ale zase kdo vše odevzdal a odprezentoval, neměl s jedničkou problém.

Bezpečnost v elektrotechnice: Tento předmět byl ryze formální a archaický. Vedení si myslí, že každý student elektrotechniky by měl absolvovat vyhlášku 50. Podle mě to je pro nás zbytečné, protože nikdy žádné zásuvky zapojovat nebudeme a největší napětí, se kterým se setkáme bude ve zdroji počítače. Naštěstí to bylo jenom pár cvičení a dostal to každý, i když se na to vykašlal. Jsem tedy teď Osoba poučená podle vyhlášky 50 :)

Anglický jazyk 2-2: V letním semestru jsem absolvoval nejvyšší úroveň angličtiny, která se na FELu dá studovat. Bylo to dost podobné minulému semestru, nekvalitní materiály, ale kvalitní cvičící. Spousta docela použitelných odborných slovíček a gramatika na úrovni FCE. Celkem lehce jsem angličtinou proplul a mám ji už na celé studium odškrtnutou...

Matematická logika: Nejtěžší předmět tohoto semestru. Cvičení byla jenom jednou za 14 dní, nešlo nic získat ze semestru, šlo se rovnou na zkoušku. Na předmět jsem celý semestr kašlal, ale byl jsem překvapen že na cvičeních alespoň tuším, oč jde (narozdíl od algebry z minulého semestru). Látka nebyla tak těžká a my měli dobrou cvičící. Na zkoušku jsem se učil asi týden a vše v pohodě pochopil. Nestačilo ale pochopit jenom příklady a matematické pojmy. Logika je celá o odvozování a definování a v písemce záleželo doslova na každém písmenku. Snažil jsem se většinou definice popisovat vlastními slovy a to mi moc neprocházelo. Zkoušku na první pokus neudělalo přes 50% studentů, já jsem s odřenýma ušima dostal dvojku. Podle mě ale předmět nakonec dopadne výrazně lépe než algebra.

Když bych to měl nějak dát dohromady tak tenhle semestr byl lehčí než ten minulý. Ubylo neinformatických předmětů, často jsme se učili velmi praktické věci. Na přednášky jsem sice chodil, ale s kamarády jsme si koupili switch a většinou se to zvrhlo v malou LAN party :) V tomto semestru už jsme si mohli sestavovat vlastní rozvrh, takže jsem mohl chodit do školy jenom pondělí až středa. Opravili nám před FELem minigolf, který jsme často chodili někdy i místo přednášek zadarmo hrát. Prostě jsem se nějak výrazně nenadřel a zkouškové dopadlo tak, že mám nárok na druhé největší stipendium. No není ta vysoká škola pohoda?