Kategorie
Nejnovější článek
- Building a shared library in Haskell
- Real World Haskell se šíří Brnem
- Benchmarky pro quad-core na shootoutu
- fotopaste.cz: webová služba psaná v Haskellu
- Haskell a Ruby on Rails II: sessions
- Google summer of code 2008
- Haskell a Ruby on Rails I.
Archiv
Odkazy
Hledání
fotopaste.cz: webová služba psaná v Haskellu
Tak mé experimentování s weby v Haskellu konečně vyústilo v něco "opravdického" ;) Jde o službu pro hosting fotografií a obrázků. Zatím jde spíše o proof-of-concept, tedy o aplikaci ukazující, že to jde ;-) Její užitek (pominu-li samotnou funkci služby) bude spočívat v tom, že se snad časem ukáže, jak je Haskell pro tyto účely vhodný, zda přinese očekávané výhody (efektivita, stabilita, udržovatelnost) a jaká úskalí se vyskytnou. O získané zkušenosti se tu a tam rozepíši zde na blogu, zajímavé nejspíš bude popisovat i postupy a knihovny použité při tvorbě aplikace.
Momentálně aplikace umožňuje hostovat obrázky a fotografie po dobu 30ti dnů s omezením velikosti cca na 2MB. Automaticky generuje náhled a zmenšenou verzi volitelné velikosti (o šířce 200, 600 nebo 800px), kterou je snadné umístit na různá fóra. Po uploadu je možné obrázek rotovat. Vlastnosti jsou tedy odpovídající plánovanému způsobu použití - přímo z fotoaparátu či disku nahraji na server bez úprav (pokud tedy nefotíte na zbytečně velká rozlišení;) obrázek, kde se zmenší na rozumnou velikost (originál bude dostupný také) a v případě potřeby je ho možné libovolně rotovat po devadesáti stupních.
Tento příspěvek má mít spíš informační charakter, ale zmíním ještě nějaké statistiky.
Tvorba webu trvala včetně "bádání" a hledání knihoven něco mezi víkendem a týdnem. Resp. dělal jsem na tom ve volném čase, kterého nebylo zrovna mnoho, přibližně týden.
Jde o 561 řádků v Haskellu, včetně mezer a komentářů a kódu mimo aplikaci - fastcgi, router, ... (samotná aplikace je 348 řádků včetně mezer a komentářů)
Použité technologie: Haskell (GHC), SQLite3, Javscript, HTML, CSS.
Použité nestandardní knihovny:
Haskell:
JavaScript:
Pro úpravu obrázků je použita utilita convert z balíku ImageMagick. Pro ghc existují bindingy pro GraphicMagick, ovšem vyžadují nejnovější verzi GraphicsMagicku, který nemám v BSD portech, ani v aptu na Debianu a kompilace ze zdrojáků nešla zrovna jako po másle, tak jsem na to zmenšování a rotaci použil externí program.
Javascriptový framework prototype a použitá knihovna na tooltipy působí nejspíš jako kanón na vrabce, ale tímhle jsem se nechtěl zdržovat, tak jsem vzal víceméně první věc, co mi přišla pod ruku (s prototype i wz_tooltip jsem u pracoval dříve, tak není divu, že mi přišly pod ruku jako první;)
Efektivita se na aktuálním hostingu nedá moc posoudit, běží na vytíženém serveru, ovšem na mém počítači to běhá docela svižně.
Jinak pokud máte dotazy nebo nápady na zlepšení (sám jich mám několik v zásobě ;), klidně se podělte v komentářích k příspěvku.
Autor: jh
Červen 2008
Přidání komentáře