学習がてら、HaskellのWebフレームワークであるYesodと、セッション管理をサポートするライブラリであるserversessionを組み合わせて動かしてみました。 今回は、stackのtemplateであるyesodweb/simpleを利用して、redissessionというプロジェクト名にしました。 今回は、SessionストレージにRedisを使いたかったので、serversessionというライブラリを使いました。 (このライブラリは長いことメンテナンスされていないようですが、今回はHaskellでのセッション周りの実装例を見てみることが目的なので、気にせず進みます。) まずは、package.yamlにserversessionパッケージの情報を追記します。 フロントエンドとしてYesod、バックエンドとしてRedisを使用するので、serversession-front
To continue our series on Haskell in production, we have an interview with Jezen Thomas, the CTO of Riskbook. Riskbook is a marketplace that connects reinsurance brokers and underwriters, and Haskell has been working out quite well for them. In the interview, we talk about how Haskell can be a blessing when introducing changes to the codebase, what libraries and extensions they use in their projec
問題意識 モダンというと曖昧ですが、想定しているのはNode.jsのnpmで、pugやsassやtypescriptなど使い勝手の良いalt言語を自動ビルドしながら開発する感じです。 悲しいことに、Haskellのフロントエンド開発は忌避されがちです。 バックエンド(サーバー側)をHaskellで実装する場合、フロントエンド(クライアント側)はどう開発すれば面倒くさくないのでしょうか? もし、SPAのようにJSON APIを介してバックエンドとフロントエンドを分離するなら、Haskellはバックエンドだけ、フロントエンドはnpmでビルド可能な自由な言語という選択ができます。 例えばservant+elmはいい感じですね。 この場合は、あまり問題にはなりません。 しかし、SPAは一般に管理ファイルとコード記述量が多くなります。 したがって、小規模でブラウザの動的処理が少ない場合は、SPAにし
HaskellのウェブアプリケーションフレームワークYesodの入門書! 『Haskellで作るWebアプリケーション 遠回りして学ぶYesod入門』発行 技術書典シリーズ、8月の新刊
Posted on March 19, 2018 authored by Shinya Yamaguchi Last Updated March 19, 2018 はじめに 今回は Yesod を使っているマニア向け情報です。 Yesod にはサブサイトという機能があり、Yesod Book の Creating a Subsite で一通りの使い方が説明されています。 簡単に言えば、異なる Yesod アプリケーションで共通のコンポーネント (認証システム等) を利用するために使えるようです。 scaffolded site を使っている人は yesod-static パッケージで提供されている Static 型をサブサイトとして利用していることでしょう。 Yesod のバージョンが 1.6 に上がった影響により Yesod Book の内容がそのままでは動かなくなっていたため、コードを
Posted on January 27, 2018 translated by Kotaro Ohsugi authored by Michael Snoyman Original post: Upcoming Yesod breaking changes 2018年 1月 11日 Michael Snoyman 私が作ったライブラリの破壊的変更点について話をしてきましたが、Yesod をその変更から取り残したくはありませんでした。yesod-core は 2014年からバージョン1.4 で安定しています。しかし、私のパッケージエコシステムにおける MonadUnliftIO の変更は Yesod にも影響してくるでしょう。問題は、どの程度かということです。 知らない人のために補足しておくと、MonadUnliftIO は monad-control と exceptions にそれぞれ
この記事はHaskell(その3) Advent Calendar 2017の22日目の記事になります. 「ああ,Haskellで仕事できたらどれだけ幸せか!」 おそらくHaskell好きな方にはこういった方が多いと思います. ですが,実情としてC++やC#, Pythonといった主力勢力の多い企業や団体の中で,一人Haskellを推していったところで焼け石に水. なぜでしょうか?それは,Haskellが共通言語ではないからです. これはみなさんご承知でしょう. なので,社内・社外の勉強会を利用するわけですが,如何せん,すでに他言語で書かれているものを置き換えたり機能追加するのはやはりハードルが高いわけです. なぜでしょうか? 彼らはきっとこういうでしょう. 「だって,Pythonの方が慣れてるし」 慣れ. そう,つまり慣れなのです! 私たちだって,英語は読み書きできるけれど,日常の多くの
Clojurian時々Haskellerでラブライブ!ファン(海未🏹&曜⛵推し)のlagénorhynque (a.k.a. カマイルカ)です。 Opt Technologies所属で、普段は広告運用に関わる社内向けプロダクトをPHP, TypeScript, Clojureで開発しています。 最近までにClojureをプロダクトに導入したり、Haskell/Elmプロダクトの開発者を募集したりと、社内でもClojureやHaskellといった言語への注目度がこれまで以上に高まっています(断言)。 そこで今回は、今年11月から新たに始まったClojure勉強会clj-nakanoでの課題を題材に、HaskellでのWeb API開発に入門してみることにしました。 ちなみにclj-nakanoといえば、Clojure開発者Rich HickeyのClojure/conj 2017でのキーノ
ゲーム販売webアプリケーションSYAKERAKEを支える技術, HaskellとYesodで作られています Haskell (その3) Advent Calendar 2017 - Qiitaの3日目の記事です. この前「Haskellで書かれたwebサービスって何がある?」と聞かれて, HackageとかStackageのようなHaskellに関連したサービスぐらいしかパッと出せませんでした. なので, webアプリケーションであるSYAKERAKEがHaskell製であることと, これを構成するライブラリなどを書いていこうと思います. SYAKERAKEがどういうサービスかはサイトを見ていってください. 半分このサービスの宣伝です. お許しください. この記事を読むことで, 小規模ながらもプロダクションレベルのwebアプリケーションがHaskellで作れるということがわかっていただけ
Yesod Advent Calendar 2016|18日目です。 Yesodは型安全を追求した実にHaskellらしいWebアプリケーションフレームワークですが、DBアクセスにも型安全が徹底されています。 DBに格納するモデルを定義するのが config/models ファイルです。 stackのテンプレートを使って作った models ファイルは次のようになっています。 User ident Text password Text Maybe UniqueUser ident deriving Typeable Email email Text userId UserId Maybe verkey Text Maybe UniqueEmail email Comment json -- Adding "json" causes ToJSON and FromJSON instances
makeSessionBackend _ = Just <$> defaultClientSessionBackend 120 -- timeout in minutes "config/client_session_key.aes" 上記は120分になっています。 なお、値を 0 するとセッションが一瞬たりとも維持されなくなるので、事実上セッション管理がされなくなります。タイムアウトしなくなるわけでないのでご注意を。 セッション管理を行わないようにする 場合によってはYesodのセッション管理を使いたくない場合があると思います。 この場合、Foundation.hsのmakeSessionBackendでNothingを返すようにします。 修正前
stackのテンプレートから生成したYesodアプリは、設定ファイル群が config ディレクトリに格納されています。 その中に settings.yml というファイルがあり、これは環境変数から値を取ったり、直接値を書いたりできる設定ファイルです。 今回はこのファイルに設定を追加する方法を紹介します。 config/settings.ymlの内容 デフォルトではsettings.ymlの内容は次のようになっています(DBにSqliteを使う場合。コメントは省いてあります)。 static-dir: "_env:STATIC_DIR:static" host: "_env:HOST:*4" # any IPv4 host port: "_env:PORT:3000" # NB: The port `yesod devel` uses is distinct from this value
Yesod Advent Calendar 2016を通してたくさんの知見が得られたことを嬉しく思います。 Yesodは素晴らしいフレームワークです。Haskellらしい厳密さに対するこだわりに満ちていて、Webアプリ内でのリンク切れは起きません。DBアクセスにも型安全にこだわり抜かれていて、常に、「何かに守られている」感覚でプログラムすることが出来ます。 しかし・・・型安全を捨てねばならない時もあります。昨今のクライアント側はReactで構築することが多く、この場合、WebサーバはAPIのみを提供すれば充分。型安全なHTMLの出番はなくなります。 この場合、Yesodの旨味はかなり無くなりますが、それでもそれなりに意味はあって、私がリリースしたWebアプリの場合、データ量が多いページを非力なスマホで表示する際に、Reactでは遅すぎて辛かった時に、hamletでHTMLを組み立てる方針に
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く