👋 Nový obsah na borekb.cz

Info Tento blog je v "read-only módu" a nový obsah již nebude přibývat. O vývoji píšu na DevBlog.

Jak jsem dělal svůj první VELKÝ web

Zhruba někdy na začátku února jsem začal dělat na projektu, o jakých jsem dřív jenom slýchával – čekalo mě kompletní překopání stránek jedné britské pojišťovácké sítě s 80 pobočkami a stovkami stránek. V pátek byly nové stránky www.coversure­.co.uk konečně spuštěny a v tomto zápisku bych se rád podělil o zkušenosti, které si odnáším.

Nejdřív něco o projektu:

  • Rozsah zhruba 40 top-level stránek a pak 80 sub-webů jednotlivých poboček, každá v průměru 6 stránek (celkově cca 480 stránek poboček).
  • Jsou to opravdu stránky a žádná super-funkcionalita typu webový obchod se nekoná. Online objednávky obstarává Flash, který je na zbytku webu celkem nezávislý.
  • Vzhled byl daný (součástí zadání bylo, že návštěvníci nemají na oko skoro nic poznat).
  • Původním záměrem bylo vylepšit HTML kód pro vyhledávače, ale když se ukázalo, že současný stav snad už ani horší být nemůže, bylo rozhodnuto celý obsah přesunout do nějakého CMS.
  • Personální obsazení: projekt byl one man show
  • Vyhrazená doba: 1 až 2 měsíce.

No a tady jsou v bodech mé hlavní zážitky a zkušenosti:

  1. „DreamWeaver-driven development“ – tak bych nazval to, co se u nás ve firmě praktikovalo předtím. Pokud víte, že nadpis má být H1 a nikoliv obrázek, můžete se tady vydávat pomalu za SEO odborníky. Rovněž až doteď jsem považoval znalost, že fotky mají být JPEG zatímco jednoduchá grafika GIF nebo PNG, za samozřejmost, zatímco teď to považuji za skill. Chci tím říct to, že ze současného kódu stránek se nedalo použít vůbec nic. Bohužel.
  2. Složitost webového vývoje. Při přechodu na CMS jsem si znovu musel uvědomit, jak je webový vývoj komplikovaný. Zde je přibližný rozsah technologií a produktů, které bylo potřeba zkrotit a donutit k poslušnosti:
    • PHP
    • MySQL
    • CMS (Drupal)
    • HTML + CSS
    • JavaScript plus nějaký framework
    • IIS na Windows 2000
    • ISAPI_rewrite
    • DokuWiki
    • regulární výrazy (málem bych zapomněl!)

    (Za pozornost stojí, že ačkoliv to jsou „jen“ obyčejné stránky, množina technologií je prakticky stejná jako u něčeho komplikovaného, třeba u e-obchodu.)

  3. CMS vs. HTML. Celý projekt začal jednoznačnou ideou použít nějaký CMS. Výhody byly na snadě: vizuální konzistence díky šablonám, lepší udržovatelnost, nezávislost URL na fyzickém umístění souborů atd. atd. Všechny tyto výhody teď máme, ale přesto mám trochu nepříjemný pocit, že jsme něco podstatného ztratili – ztratili jsme jednoduchost. Z jednoduché HTTP komunikace „chci soubor xy.htm“ – „tady ho máš“ se stal komplikovaný proces, na jehož cestě stojí řada technologií a v každé z nich může být potenciálně chyba. Náš systém momentálně funguje a skutečně všechny běžné činnosti drasticky usnadňuje, ale pokud v budoucnu budeme chtít udělat nějaké zásadnější změny, už nestačí jenom koupená licence DreamWeaveru. Budou potřeba lidi s patřičnými znalostmi, bude potřeba daleko důkladnější testování atd. atd. Když se nad tím zamyslím, tohle je trochu paradox: CMS se nasazuje kvůli nižším nákladům na udržovatelnost, ale je to právě CMS, který nutně některé náklady na udržovatelnost zvýší. „Bohužel“, pro velké weby nevidím jinou cestu.
  4. Drupal. Ani jednou jsem nelitoval, že jsme zvolili právě tento CMS. Nikdy se příliš nepletl do cesty a taky mě přakvapilo, jak snadno do něj šlo přidat funkcionalitu potřebnou pro rozsáhlejší web (pár dobře mířených zásahů zvýšilo jeho flexibilitu dost výrazně).

    Na druhou stranu jsem si občas říkal, že svět zatím na svůj ideální CMS čeká. Co si nalhávat – CMS je v podstatě dost primitivní záležitost, základní funkcionalita se dá napsat za pár večerů (a kupa lidí to bohužel dělá), a na to, že je v Drupalu několik let vývoje obdivuhodně velké komunity lidí, by to mohlo být lepší. Hlavní je ale jedno – Drupal svůj úkol bez problémů splnil.

  5. JavaScript. Tenhle projekt byl mým úplně prvním vážnějším setkáním s JavaScriptem a musím říct, že právě při jeho psaní jsem si uvědomoval, co lidi od Ruby myslí tím „programování může být zábava“. Pokud se někdy s JavaScriptem potýkáte, určitě se podívejte na knihovnu jQuery, která i mně jakožto úplnému začátečníkovi umožnila velmi rychle psát mocný, cross-browser kompatibilní kód.

    Tip: pokud hojně používáte JavaScript, otestujte svůj web na pomalém počítači. JavaScript problém s výkonností a čeho si na rychlé vývojářšké mašině ani nevšimnete, může normální návštěvníky dost otravovat.

  6. Nástroje. Na všechny důležité úlohy byly použity zdarma dostupné nástroje, jejichž kvalitou jsem byl příjemně překvapen:
    • PDT (PHP Development Tools pro vývojové prostředí Eclipse) – z mého pohledu naprosto skvělý nástroj pro PHP vývoj. V minulosti jsem jich zkoušel hodně a Zend Studio bylo tehdy v podstatě jediným opravdu komfortním vývojovým prostředím, proto mě velmi příjemně překvapilo, že PDT zvládá v podstatě to samé. Co člověk nejvíc potřebuje je (a) doplňování kódu (v podstatě shodné se Zend Studiem, takže bez výhrad), a za (b) find in files, což v Eclipse standardně je. Jediné, co mi výrazněji vadilo, je absence zalamování řádků – to je pro editování textových dokumentů dost podstatné a bohužel je tenhle feature request už hodně dlouho oddalován, takže ani v Eclipse 3.3 se řádky zalamovat nebudou.
    • Firefox. Mnohokrát jsem si uvědomil, jak je tento browser z kodérského pohledu úplně v jiné lize než IE nebo Opera, hlavně kvůli mnoha vývojářským rozšířením. Firebug je naprostá bomba a radši si nechci představovat, jak bych některé chyby hledal bez něj.
    • HeidiSQL – velmi pohodlný administrační nástroj pro MySQL (narazil jsem taky na slibně vypadající projekt TurboDbAdmin, ale ten je zatím příliš nevyspělý)
    • Nejlepší tester regulárních výrazů, jaký jsem našel, je http://www.sol­metra.com/scrip­ts/regex/ . Nemá problém s escapováním speciálních znaků a pěkně ukazuje naplněné pole $matches.
  7. Done vs „done done“. Tohle je velmi zajímavé – na 90% funkčnosti jsem se byl schopen dostat pomalu za stejnou dobu jako z 90 procent na 100. Někdy v půlce února jsem si říkal, jak jsem po pouhých 14 dnech daleko, a šéfům se to samozřejmě líbilo. Naopak za posledních 14 dní jsem neudělal skoro žádný viditelný pokrok, ale bez provedených drobných úprav by se prostě web nedal vypustit do světa. V této souvislosti mě nemohla nenapadnout kapitola z výborné (zatím nevydané) knihy The Art of Agile Development, nazvaná Done Done.
  8. Business vs kvalita. Tenhle bod se mi dost špatně formuluje, proto radši příklad: hned ze začátku jsem dostal zcela natvrdo rozkaz, že nesmím optimalizovat pro různé prohlížeče. „Vyber si IE 6 nebo IE 7 a stránky připrav pro něj. Na ostatní prohlížeče kašli, normální lidé hledající pojištění tyhle prohlížeče nepoužívají.“ Na otázku „a jak to víš“ přišla očekávatelná odpověď „to prostě vím“. Sice mi to nedalo a stránky se dobře zobrazují i ve Firefoxu, ale dobře to demonstruje, že někdy pro evidentní technologické nedostatky může existovat dobrý důvod, a to šéfovo rozhodnutí. Tohle je třeba důvod, proč v Opeře blbne horní menu – nemám důvod ani povolení šťourat se v tom, proč Opera počítá šířku tohoto menu jinak. Já vím, že je to neprofesionální, ale přesně to jsem myslel oním business vs. kvalita. Update: Dal jsem si 10 minut na opravení, usoudil jsem, že čisté CSS řešení tak rychle nenajdu, a nakonec jsem to fixnul pár řádky JavaScriptu. Teď může být i zbylých 0.02% návštěvníků Coversure spokojených.

    Dalším příkladem z této kategorie jsou některé CSS nečistosti, např. u vyhledávacího formuláře je k layoutu použita tabulka. Dřív bych se s tím piplal až bych to vypiplal, ale teď musel být postup jiný: obvykle jsem si dal třeba hodinu na to, abych našel CSS řešení, a když se nepovedlo, prostě jsem to vyřešil jinak.

  9. Dokumentace. Osobně považuji dokumentaci za podobně důležitou vlastnost, jako je samotná funkčnost systému, takže jsem se hned na začátku musel porozhlédnout po nějakém dokumentačním nástroji. Volba padla DokuWiki, a přesto že má toto řešení k ideálu dost daleko, považuji Wiki za jednu z nejlepších dokumentačních možností.
  10. Ne vždy to byla zábava. Speciálně jsem si užíval okamžiky customizace Drupalu a JavaScriptového vývoje, ale jak se projekt posouval kupředu, přicházely na řadu nudnější a nudnější práce – bylo potřeba přemigrovat veškerý obsah (a že ho bylo!), bylo potřeba přesunout celý systém z localhostu do testovacího prostředí na sever (už poněkolikáté v životě jsem instaloval PHP a i tentokrát mě to zle potrápilo), bylo potřeba doladit kupu drobných detailů a tak. Abych byl upřímný, ke konci už jsem se docela těšil, až to budu mít z krku.
  11. Release byl horor drama. Věděl jsem to od začátku – musí přijít okamžik, kdy staré stránky zhasnou a nahradí je nové. Taky jsem si uvědomoval, že ten krok s sebou nese docela hodně rizik. Když se to tak vezme, v podstatě se nejednalo o jeden projekt, ale o projekty tři: (1) Připravit a customizovat CMS, (2) Vytvořit HTML+CSS šablony a (3) Přemigrovat obsah. Každá z těhle fází s sebou nese rizika pro release: první může způsobit kompletní nefunkčnost webu, druhá může negativně ovlivnit vzhled generovaných stránek a třetí může způsobit nevoli poboček, pokud bude nějaká chyba v obsahu. Posledních zhruba 14 dní jsem byl proto právem nervózní a testoval jsem, co se dalo. Přesto nebyl release bezproblémový.

    První nápor support telefonátů přišel hned po spuštění, kdy se ozvala řada poboček s požadavky na změnu tohohle nebo támhletoho. S tím jsme ale tak nějak počítali, horší bylo, že kompletně přestalo fungovat napojení Flashe na naši databázi. Tehdy jsem si prožil určitě nejtěžších pár hodin ve své krátké kariéře a už jsme byli jen krůček od návratu ke starým stránkám, což by bylo slušné fiasko. Pak se naštěstí podařilo opravit chybu v konfiguračním souboru ISAPI_rewrite a všechno zas začalo fungovat.

    Až večer mě Hanka upozornila, že ten den byl pátek 13. Kdybych to věděl dřív, do ničeho bych se nepouštěl :)

  12. Obtížnost ladění. Jen tak pro zajímavost, zde je stupnice toho, co se jak obtížně ladí. První jde nejsnáze, poslední nejhůře:
    1. čistý PHP kód – pohoda, dobrá podpora v nástrojích
    2. JavaScript – docela pohoda, když člověk používá Firebug
    3. kód Drupalu – to už jde ztuha; viděl jsem sice postupy, jak Drupal debugovat v PDT, ale většinou mi přišlo jednodušší se uchýlit k příkazu ‚print‘
    4. regulární výrazy – ty jsou asi ze zcela jiné galaxie. Absolutní chuťovka je odhadovat, co asi udělá HTTP request, když se prožene pravidly v httpd.ini nebo .htaccess souboru.

Slovo závěrem: Jsem vděčný, že jsem si mohl takhle rozsáhlý web zkusit. V jiných firmách bych možná na projektu podobného rozsahu dělal v týmu, což by mě svým způsobem ochudilo o náhled do projektu v jeho komplexnosti. Výsledek je skoro přesně takový, jak jsem si ho představoval, takže spokojenost, a dokonce ani plánovaná doba se moc neprotáhla: celé se to zvládlo skoro přesně za 2 měsíce. No a teď už se můžu těšit na další projekt, který bude tentokrát ve Flashi – myslím, že tam to bude taky velmi zajímavé.

Zařazeno do kategorií |
Tomáš fejfar (Po, 2007-04-16 01:13):

Smekam. One-man show v takovemhle rozsahu. Dobra prace.

pinus (Po, 2007-04-16 03:04):

Ja vidim v Opere rozsypany obsah – zalozka „News“ je pod zalozkou „Advice“.

Jinak spousta odvedene prace, rozsah je velky.

Kaderas (Po, 2007-04-16 04:53):

Koukám, co lze za pomoci Drupalu vytvořit. Já našel tedy alespoň malou chybičku, odtud se nelze dostat na hlavní stránku, neboť logo odkazuje na index.htm :-)

Pinus: To je tak, když se komentuje, aniž by se co četlo…

Suicide (Po, 2007-04-16 05:51):

Jo tak tohle s tím nařízením „žádná optimalizace, IE používaj všichni“ jsem se setkal několikrát. Nějvětší švandu jsem zažil když jsme přišli poprvé k jednomu majiteli firmy a ten nám dal půlhodinovou přednášku o tom, jak je internet a webové stránky důležité .-). Měli jsme sice nutkání mu říct něco o tom, že my jsme už surfovali když von ještě tahal kačera nebo něco podobného, ale přeci jenom náš zákazník náš pán, poslušně jsme si to vyslechli. Jo a ještě si vzpomínám, jak hlavní důraz byl kladen na to aby na těch stránkách byl zablokované kliknutí pravým tlačítkem, to už bylo vážně moc. :-)))

krteQ (Po, 2007-04-16 06:41):

U toho HeidiSQL se mi libi suggest nazvu tabulek a sloupcu. Skoda ze neumi zkraceny aliasy tabulek (bez AS), a hlavne vubec nepodporuje funkcnosti z Mysql5, stava se tim pro me nepouzitelny :( Jinak doporucuju SQLyoq nebo nastroje primo od MySQL. Bohuzel zatim nemaji suggest :(

Ivo Toman (Po, 2007-04-16 06:57):

Každopádně gratuluji k odvaze jít do takového projektu s CMS, který není vaším výtvorem. Také používám opensource pro menší projekty, ale toto bych s drupalem asi neriskoval :)

Borek (Po, 2007-04-16 12:44):

Já bych zase za příliš odvážné považoval programování vlastního CMS. Prověření Drupalu na tisících webech považuji za dostatečnou záruku.

Filosof (Po, 2007-04-16 07:33):

Hézkýý :-) btw. to NESMÍM optimalizovat mě zaujalo.. to, že Ti na to nedá dostatek času – fajn – někdy se nestíhá – ale optimalizace jako taková není otázka dní, ale spíše hodin (i u projektu této velikosti).. mám pocit, že by zasloužil nahradit.. no comment..

btw. http://www.co­versure.co.uk/…xis­ting2.htm nefunguje odkaz back2homepage dole

Filosof (Po, 2007-04-16 07:35):

btw. vyplatí se nechávat v hlavičče takový množství stylů a JS souborů? Vzhledem k počtu requestů na server…

Borek (Po, 2007-04-16 12:49):

Tohle je síla i slabina našeho systému současně. Množství CSS a JS souborů velmi usnadňuje stylování obsahu nebo vkládání skriptů jen do určitých stránek (například vytvořím soubor ‚/…/css/advice­+.css‘ a ten se automaticky aplikuje na všechny stránky s URL začínající ‚/advice‘), ale množství HTTP requestů mě samozřejmě zneklidňuje.

Drupal má vestavěnou podporu pro serverové sloučení všech CSS a JS souborů do jednoho, ale to z nějakého důvodu nefungovalo, nejspíš díky našim ISAPI_rewrite pravidlům. Mám to nicméně v to-do listu a budu se tomu věnovat, až se vyřeší jiné, naléhavější záležitosti.

Anonymous (Po, 2007-04-16 08:01):

Dobrá práce, jen ten design je prostě moc „business“. Taky mi prijde zbytečný, aby „franchises“ byli v jiný šabloně než homepage. No a pak bych si trochu postěžoval na FLASH, zkrátka nemam ho rád :o) ale to jen můj osobní názor. Jinak přesná, úhledná práce, klobouk dolů. Btw, jak se člověk dostane k výrobě takovýhohle webu?:)

Borek (Po, 2007-04-16 12:55):

Re „design moc business“ – to bylo dané

Re „jiná šablona pro franchises“ – tahle část vůbec není pod CMS. Rovněž rozhodnutí seshora.

Re „flash“ – nebudem v tom dělat web, ale speciální aplikaci pro pojišťovácké brokery. Flash se mi celkem líbí hlavně kvůli ActionScriptu (moc pěkný jazyk!), ale Flash má i své podstatné nevýhody – hlavně výkon, absenci frameworků a tak.

Re „jak se člověk dostane k výrobě takovýhohle webu?“ – odjede do Anglie, dělá 2 měsíce ve skladu a pak se nechá zaměstnat ve firmě, která takovýhle web spravuje.

Jiří Urban (Po, 2007-04-16 13:59):

Už se těším až se kouknu na ten použitý software. Weby vytvářím už poměrně dlouho, ale zatím jsem si vystačil s PSPadem a PhpMyAdminem… To by mohla být příjemná inovace. Doufám, že nebudu zklamán :)

Libor (Po, 2007-04-16 20:17):

Díky za mnohá moudra, viz. např. bod 3 nebo 7.

Dráča (Út, 2007-04-17 15:06):

Moooc pěkná práce :) Dík za odkázek na Firebug… Už dlouho používám Web Developer Toolbar, ale tohle přesně mi chybělo :)

btw… Zdravím po těch letech :)

Borek (St, 2007-04-18 08:57):

No nazdár, to je neskutečný, koho člověk nepotká přes blog :)

Jakub (St, 2007-04-18 16:09):

Dobrá práce. Gratuluju.

Anonymous (Čt, 2007-04-19 16:43):

diky hlavne za ty odkazy na pouzite nastroje – clovek vzdy najde neco noveho

Roman (Ne, 2007-05-13 19:08):

Poslal ma sem Havran a som rad ze si sa podelil o svoje skusenosti. Zajedno vidim vela paralel s niektorymi projektami ktore som robil (trebars nedavno sme prerabali jeden velky portal a dve hodiny pred startom som zufalo uvazoval o moznosti ze ho nepustime v ohlasenom termine) alebo skusenost ze poslednych 10 percent je najtazsich ;-).

Tiez som rad. ze konecne vidi aj nazor od ineho cloveka ako odomna na fakt, preco som spokojny s masinou nataktovanou na 733 MHZ.…alebo to ze Drupal je sice pekny CMS ale… (nikdy som ho nepouzival a nerad by som s tym zacinal, som jeden z tych co si nakodil CMS „sam za par noci“ ;-))

Jeden z mojich argumentov preco sa mi Drupal (alebo hocaky iny skupinovo vyvijany open-source) nepaci je, ze na nom pracuje az prilis vela ludi ;-))

Anonymous (Čt, 2012-08-23 23:51):

Dobrá práce stihnout toto za 2měsíce.

Komentáře jsou uzavřeny (blog je v read-only módu). Pokud mě chcete kontaktovat, můžete mailem.