Kategorie

Nejnovější článek

Archiv

Odkazy


Hledání




Haskell a Ruby on Rails II: sessions

Jak jsem psal, k tomuhle obskurnímu spojení jazyků mě vede nutnost konečně zjednat pořádek v jednom projektu. Novinkou je, že jsem od hostingu dostal informaci, že by nám kromě railsů mohli další fastcgi klidně rozjet, takže mé odvážné představy se začínají pohybovat směrem k realitě ;) To je důvod, proč malinko přeskočím. Minule jsem popsal nejzákladnější hello world. Existuje několik dalších věcí, které jsou vyřešeny a o kterých bych mohl psát, ovšem teď začíná být potřeba řešit věci zbývající. V podstatě jde jen o sessions. V tomto příspěvku bych se pokusil shrnout, v čem je problém, nastínit pár řešení a hlavně nechat prostor pro diskusi a případné nápady.

O co tedy jde?

Sessions (aneb familierně "sešny") uchovávají např. informace o přihlášeném uživateli. Jde mi zejména o nutnost kontroly práv ve službách, které budou psané v Haskellu.

Prohlížeč poskytuje přes cookies tzv. session id, což je unikátní klíč, ke kterému je přiřazen obsah sešny (asi bych mohl říkat sezení, ale hlavně, že si rozumíme). Defaultně si RoR ukládá obsah sešen do souborů s názvem tvořeným klíčem. Není problém je ukládat do SQL databáze nebo do memcached a není problém z haskellem vytvořeného fastcgi se k sešnám dostat (osobně používám jako úložiště SQL databázi, memcached je ale z uvedených úložišť nejefektivnější, mluvíme-li o rychlosti).

Ok, tak v čem je problém?

Data uložená v sešně jsou v ruby reprezentována hashem plným objektů (ostatně v ruby se nic jiného než objekt ani nevyskytuje ;). Data samotná se ukládají v binární podobě. Používá se standardní rubovské (odporné slovo to "rubovské", ale nemůžu si pomoct..) marshalování. A dekódování uložených dat sezení je právě problém, o kterém mluvím. Samozřejmě není to problém neřešitelný, spíše přemýšlím o tom, jak to udělat s co nejmenší námahou ;)

Možnosti řešení...

A otázka pro zkušené čtenáře zní: máte lepší nápad? Případně, které z řešení byste doporučili? A má to vůbec celé cenu? ;) Ale jo, věřím, že má. Kombinace s ruby je trochu těžkopádná, ale zkouším vytvářet reálné weby kompletně v haskellu (nějaký proof-of-concept snad někdy brzo rozjedu a něco k tomu napíšu).

Autor: jh Červen 2008


Dva komentáře k článku „Haskell a Ruby on Rails II: sessions“

KdoViKdoJsem Says: 19. 6. 2008, 0:48

No, nebudu se zapojovat do hlubsi debaty ohledne mozneho vlastniho reseni. Jen poznamenam, ze muzes serializovat objekty do YAML (patri mezi Standard Library)

require “yaml”

my_object = Array.new(3) # priklad pouze :)

puts my_object.to_yaml

Implementace v Haskellu bude nekde k nalezeni :).

KdoViKdoJsem Says: 19. 6. 2008, 0:49

*Implementace YAML

jh Says: 19. 6. 2008, 1:08

Vida, to zni docela dobre. Pro YAML implementace v Haskellu jsou, to vypada jako docela schudne reseni.

Přidání komentáře