Archiv pro měsíc February, 2008

Jak jsem (ne)pochopil REST

S křížkem po funusu ale přece! V tomto článku bych chtěl několika větami okomentovat :lednovou přednášku":http://www­.java.cz/deta­il.do?… Jakuba Podlešáka Java API pro RESTful web services. Po obyčejném blogování se mi už pekelně stýskalo. Od půlky prosince totiž nedělám nic jiného než že se snažím přivést k životu naše kontaktní čočky.

REST

REST chápu jako soubor pravidel pro manipulaci s daty po síti (zpravidla pomocí HTTP protokolu). V RESTu se pracuje se resourci – zdroji. Každý zdroj má svoji unikátní adresu. Pomocí volání adresy zdroje s ním lze provádět operace. Od prostého načtení po vytvoření, modifikaci až po smazání. Kromě zavolání zdroje pomocí adresy (URL) lze do těla požadavku zabalit další data – například pro vytvoření nového zdroje. Data mohou být v různé formě – např XML, JSON, plain text…

REST naopak nedefinuje autentizaci a autorizaci uživatelů. REST je bezstavový.

Jak je to s tou stavovostí RESTu?

A právě o stavovosti RESTu bych se chtěl zamyslet. Na přednášce proběhla vášnivá debata na téma stavovost RESTu. Padly zde názory, že když pracuju s webovou aplikací používající REST a uložím nový zdroj, tak se přece musí jednat o stavové chování. Vždyť se přece změnil stav aplikace.

Výše uvedený názor je nesmysl. Se stavovostí RESTu je to stejně jako se stavostí HTTP protokolu – je nestavový. Uvedu na jednoduchém příkladu. Tím příkladem jsou sessions.

Příklad se sessions

Sessions fungují tak, že server přibalí do odpovědi klienta unikátní idenfikátor, který označuje session id. Toto cookies se pak přenáší při další komunikaci mezi serverem a klientem. Klient session id přibaluje buď do:

  • URL
  • POST dat
  • cookies

A naprosto stejně to funguje i s RESTem. Když budeme mít resource na adrese http://vavru.cz/eshop/vyt­vorit-kosik/, může odpověď vypada například takto – http://vavru.cz/eshop/ko­sik/wsdei9012309a­/. Dostali jsme zpět adresu na nově vytvořený košík. Když pak klient chce s tím to košíkem (každý klient má svůj košík) musí uvést celou adresu košíku. Takže pro přidání nové položky bychom mohli použít například takovýhle odkaz – http://vavru.cz/eshop/ko­sik/wsdei9012309a­/pridat-produkt/ a v těle požadavku specifikovat o jaký produkt se jedná a například počet kusů.

Zdá se vám to jednoduché?

Mně taky. Proto nechápu tolik případů nepochopení ze strany posluchačů. Možná jsem to celé jenom špatně pochopil a chyba je na mé straně. V tom případě prosím nějakého zkušeného RESTovače, aby mě například pomocí komentáře přivedl na správnou cestu.

Celý článek 12 komentářů 28. February 2008

Jak jsme rozjeli VašeČočky.cz

Snad nikdy v životě jsem nestrávil tolik času prací u počítače jako poslední tři týdny. V tomto krátkém čase jsem vdechnul život eshopu VaseCocky.cz – najdete ho na adrese www.vasecocky.cz.

Nemějte strach, že tohle bude nějaký PR článek. Žádné vyjmenovávání úžasných vlastností eshopu, velkých slev apod. Pouze chci popsat jaké ty poslední tři týdny byly. Jednoduše co obnášelo vytvoření a zprovoznění našeho ehopu.

Myslím, že lze těžko nalézt článek, který se by se více hodil na osobní blog, než je právě tento.

Proč kontaktní čočky?

Nikdy v životě jsem nebyl klasickým zaměstnancem. Jako kontaktor jsem posledních 6 let pracoval převážně pro dvě firmy, ale měl jsem i svoje menší soukromé projekty. Nemám rád nedostatek motivace. Životní styl, kdy člověk chodí do nějaké práce, tam 8 hodin něco dělá, a poté se sebere a jede domů. Vidím to všude kolem sebe. Je tu hodně lidí, kteří svoji práci nemají rádi. Píšu to, protože když jste někde zaměstnaný často časem zjistíte, že vlastně stačí, když toho budete dělat o mnoho méně – že to vlastně stačí. A když je nějaký problém, tak jej stačí vhodně okomentovat a poslat odpovědnost za problém o dům dál. Opět jsou to věci, které jsem viděl kolem sebe.

Léta jsem se snažil pracovat nejlépe jak jsem uměl. Snad jsem se za tu dobu i něco naučil. A teď od 1. ledna 2008 přišel přelom. V nové práci teď používám jenom Javu – všechny ostatní moje stávající znalosti zde přímo neuplatním. Mluvím např. o – PHP, ActionScript, AJAX, XHTML, CSS, C#. Nechtělo se mi tyhle znalosti zahodit. Chtěl jsem je dále využívat. A nejlépe tak, že tentokrát nebudu nic programovat pro zákazníky, nýbrž pro sebe.

Již velmi záhy co jsem začal programovat, jsem chtěl mít svojí firmu – software faktory. Dělat weby na zakázku. Postupně jsem tuto myšlenku opustil. Jedna věc je totiž dělat skvělé weby, a zcela jiná (důležitější), je nalézt zákazníky. A právě kvůli tomu jsem si na konec rozmyslel risk v podobě založení firmy, najmutí alespoň jednoho zaměstnance, kanceláří.

Na podzim jsem na setkání spolužáků ze střední školy vedl debatu s Martinem Bláhou na téma založení vlastní firmy. Martin už sice vlastní firmu na vedení účetnictví, ale rád by se vrhnul i do nečeho jiného.

Netrvalo to ani tři týdny a už jsme měli založenou firmu – její jméno je Maternia (webová prezentace se připravuje). V tuto chvíli jsme ještě vůbec netušili co vlastně budeme dělat. Pouze jsme věřili svým schopnostem. Věřili jsme tomu, že jsme schopni se v téhle republice v něčem prosadit. No vlastně naše slova byla ještě mnohem odvážnější :)

V říjnu, listopadu a prosinci jsme učinili několik schůzek, abychom vymysleli, co vlastně bude Maternia dělat. Během prvních schůzek jsme si ujasnili hrubý záměr firmy – chceme něco prodávat na internetu. Toto rozhodnutí mělo tyto základní důvody:

  • Já umím udělat internetový obchod na míru (což považujeme za velkou konkurenční výhodu proti polovičatým univerzálním shopům)
  • Umím zajistit všechno ostatní co s tím souvicí – domény, hosting, reklama…
  • Martin a jeho účetní firma nám může hravě vést účetnictví

Ohromnou výhodou je, že základní věci si umíme udělat sami.

Dostali jsme se do momentu, kdy jsme už jistě věděli, že chceme něco prodávat na internetu, ale ještě jsme něvědeli co.

Padlo spousta nápadů (ty jsou součástí firemního knowhow a nemůžu je prozrazovat :)). Vítězem se nakonec staly kontaktní čočky. Po analýze internetového trhu s kontaktními čočkami jsme jednoduše věřili, že jsme schopni udělat internetový obchod, který bude mít spoustu předností oproti stávajícím eshopům.

V podstatě se dá říci, že zde nebyl žádný internetový obchod s kontaktními čočkami, který by vytvořili profesionálové. Kdyby jsme byly v jiném článku, tak bych uvedl výčet chyb, které mám na mysli. Ale v tomto kontextu by to nebylo fair.

Proč Vaše kontaktní čočky?

Název Vaše kontaktní čočky se nám zdál jako nejlepší z ještě volných domén. To byste nevěřili pro jaké všechny varianty slovního spojení kontaktní čočky jsou obsazené domény. Úplně pro všechny varianty :). Koupili jsme tedy www.vasecocky.cz, variantu s pomlčkou www.vase-cocky.cz a také dvě delší varianty www.vase-kontaktni-cocky.cz a www.vasekontak­tnicocky.cz.

Pár slov o našem eshopu

Chtěli jsme vytvořit eshop, kde by skvěle nakupovalo. Soustředili jsme se zejména na:

Jednoduchý a přehledný design stránek
Méně je často více. Proto na stránky nedáváme zbytečné prvky. Při procesu odeslání objednávky dokonce není zobrazen ani sloupec menu s kategoriemi, protože v té chvílí je nepodstatný. Design má na svědomí skvělý grafik Abe.
Jasnou navigaci a ovládání
Přehledné hlavní a pomocné menu, vhodné nadpisy, vhodné titulky stránek, vhodné url – to všechno jsou věci, kterým jsme věnovali velkou pozornost.
Intuitivní práci s nákupním košíkem
Košík jsme navrhovali s ohledem na intuitivnost ovládání. Proto jsme použili stejně velké písmo jako v ostatním textu (stávající eshopy často používají nečitelné pidipísmo). V košíku lze přidávat (klonovat produkty), odebírat produkty, měnit parametry a množství produktu pomocí AJAXu. Je to velmi rychlé. O výsledku všech těchto akcích je nakupující upozorněn barevnou hláškou.
Citlivé použití AJAXu
Doufáme, že dobrým příkladem je právě popsaná funkce košíku. Dále na stránkách máme Srovnání produktů. Poslední AJAXovou featurou, o které se chci zmínit, je zjišťování aktuálního stavu dané varianty produktu na skladě. Lze ji nalézt na stránce s detailem produktu (např zde – Precision UV (6 čoček)).
Co nejpříjemnější proces odeslání objednávky
Proč by se měl zákazník před odesláním objednávky zaregistrovat? Tuto povinnou registraci najdete na většině eshopů. V našem eshopu nic jako registrace neexistuje. Během objednávky je nutno zadat jenom údaje, které jsou skutečně potřeba. Při osobním odběru zboží je to pouze jméno zákazníka a jeho telefonní číslo (abychom ho mohli upozornit že si může objednávku vyzvednout). I pokud se jedná o jiný druh doručení, při kterém je potřeba vyplnit adresu. Například nevyžadujeme vyplnění e-mailu. Pouze zákazníka upozorníme, že když ho vyplní bude mu zřízen přístup do klientské sekce, kde bude moci sledovat aktuální stav svých objednávek.

Co mi zabralo nejvíce času

Není nad to, když si člověk může projít naprosto všemi cykly tvorby webu:

  • analýza trhu a zvolení podnikatelského záměru
  • návrh fungování webu
  • implementace webu
  • testování webu
  • provoz webu a reklama

Nejvíce času mi zabral druhý bod – návrh fungování webu. Pročetl jsem snad desítky článků na téma přístupnosti. Například i bakalářskou práci Martina Snížka Postup tvorby obchodně úspěšného webu.

Samotná implementace byla ta nejzábavnější část práce na projektu. S dnešními nástroji (Eclipse IDE počínaje a Zend Frameworkem konče) je to opravdu radost.

Pečlivě jsme se věnovali i uživatelskému testování. Měli jsme asi 10 testerů. Byly to lidé z rodiny nebo přátelé. Hodně z nich jsou potencionální zákazníci (nosí kontaktní čočky).

Web je nyní již v provozu a všechen svůj volný čas teď věnuju propagaci. Seznamuju se s reklamními systémy, registruju web do katalogů, do agregátorů zboží.

Na čem je to celé postavené

Eshop je postaven od nuly. Použili jsme:

Závěr

Těžko v souvislosti s naším webem hovořit o nějakém závěru. Ty bude možné udělat až po nějaké větší době provozu. V tuto chvílí nejsme ani týden po releasu.

PS: Objednávky už chodí :)

Celý článek 18 komentářů 10. February 2008

Zajímavé linky 14 - Boulder2ME, obchodně úspěšný web, Czech PHP User Group, Proč ZF

Po delší době se ozývám s dalším článkem. Možná jste si všimli menší frekvence nových článku na blogu. Rozhodně to nebude tím, že bych zlenivěl nebo že by mě to prostě přestalo bavit. Důvodů je několik:

  • Nástup do Avedye je pro mě pořádný kotrmelec. Poprvé v životě jsem javista „na plný úvazek“ a dává mi to teď na začátku hodně zabrat. V Avedyi jsou skvělí kolegové a práce je náročná – a proto ji mám rád.
  • Věc, která mi zabírá poslední měsíc všechen volný čas je internetový business, který se chystáme s kolegou z naší firmy rozjet již za pár dní. Jak jste si mohli všimnout v CV založil jsem s kamarádem firmičku s názvem Maternia. Rád bych se rozepsal o našem podnikání, ale nechci to dělat v tomhle článku. Tato naše nová „zábava“ stála už tým o velikosti 5 lidí měsíc života.

Zajímavé odkazy

Už jsem toho o sobě navykládal dost. A teď už ke slibovaným linkům, které jsou tentokrát vyjíměčně zajímavé:

  • Kolega Honza Šmuk spustil nový web Boulder2ME. Web umožňuje pomocí appletu nadefinovat vlastní mapy do této hry a pak si je stáhnout přímo do mobilního telefonu jako JAD a případně JAR soubor.
  • Velezajímavým dílem je bakalářská práce Martina Snížka s názvem TVORBA OBCHODNĚ ÚSPĚŠNÉHO WEBU, na kterou můžete najít odkaz ke stažení v článku Postup tvorby obchodně úspěšného webu. I když není obsah práce z mého mateřské oboru s velkým zájmem jsem si ji na jeden zátah přečetl. Nezabere to ani dvě hodinky. Při jejím čtení jsem zjistil, že jsem při rozjíždění našeho nového internetového businessu nepostupoval uplně špatně. Našel jsem tam i spoustu užitečných rad. Pokud jste v situaci že přemýšlíte o rozjetí webové stránky a pro vás z nějakého důvodu důležitý její obchodní výsledek je tato práce z rodiny MUST READ.
  • Proběhla druhá akce pod hlavičkou Czech PHP User Group Shrnutí konference zima 2008. Navíc se připravuje akce třetí – Třetí a poslední konference php frameworky.
  • Pěknou úvahu napsal Ronnie v článku Proč si vybrat Zend Framework a proč nevytvářet vlastní framework.

Závěr

Podle analýzy návštěvnosti jsem si všimnul že jste si všimli obráceného pořadí zobrazených článků. Nejstarší články jednoduše byly zobrazeny jako první. I jal jsem se vyzkoumat příčinu…Používám snad nejrozšířenější bloggerský CMS WordPress a nechtělo se mi věřit v nějaký bug na jeho straně. Spíš jsem věřil v útok hackera :) Jaké je rozuzlení? Český hosting nasadil do produkce novou verzi MySQL, která správně nepracovala s klauzulí GROUP BY.

Celý článek Přidat komentář 3. February 2008


Kalendář

February 2008
M T W T F S S
« Jan   Apr »
 123
45678910
11121314151617
18192021222324
2526272829  

Články podle měsíců

Kategorie

Locations of visitors to this page