Profile cover photo
Profile photo
Hiroyuki Kurokawa
About
Hiroyuki's posts

Post has attachment
[haskell][yesod] TypedContentを利用してクライアントが要求するフォーマットでレスポンスを返す
Yesod Advent Calendar 2016 の6日目の記事です。 RESTfulなAPIを提供する場合、クライアントの都合にあわせて、フォーマットを変えてレスポンスを返したいケースがあります。サーバー上で管理しているDBから、表現だけをHTML, JSON, XML, CSVなどに変更して返すイメージです。例えば、人物情報(名前、年齢、性別など)の一覧を返す際には以下のようなデータが返されることになります。 HTML <table border> <tr> <th> name </th> <th> ...

Post has attachment
[emacs] emacs上のgrep関連機能、複数ファイルの一括置換手順のまとめ
emacs上でgrep関連の機能を利用する際のTIPSをまとめておきます(よく忘れて調べ直すので…)。 grepコマンドのオプション 指定ディレクトリ以下のファイルを再帰的に検索 -R DIR    シンボリックリンクを辿る -r  DIR    シンボリックリンクは辿らない 検索対象ファイル名をフィルタする --include=GLOB    GLOBにファイル名を指定する。"*.cpp"のようにワイルドカード(*,?,[...])を指定可能 検索対象から指定ファイル・ディレクトリを除外する --exclu...

Post has attachment
[cygwin] cygwin64セットアップメモ
自分向け備忘録。 cygwin64 環境をセットアップする際の手順をまとめておきます。 設定 ssh-agent関連 ssh-agentの重複起動を防ぐ ssh-agentのために秘密鍵セットアップ ~/.ssh/ ※group/otherのrw権限は削除 ssh-agentがパスワードを覚えてくれなくなった問題への対処 pingのエラー回避 ユーザーのアカウント名、ホームディレクトリの変更 /etc/passwdを編集する GNU screen でlessやvimの終了後に画面クリアをしない方法 改行コード...

Post has attachment
[haskell][yesod] YesodにおけるRESTfulなJSON API実装チュートリアル
HaskellのwebフレームワークであるYesodにおいて、RESTful APIを実装する手順を紹介します。Haskell上のデータ構造をJSONテキストに変換する、逆に、JSONテキストをパースしてHaskell上のデータ構造を生成する、といった処理が非常に簡単に実現できます。加えて、コードを書かなくてもバックエンドのDBとのORマッピングが可能になっており、効率的に開発することができます。 準備: json-sampleというプロジェクト名でYesodのscaffolding siteをセットアップす...

Post has attachment
[haskell][yesod] stack対応版Yesod tutorial
Haskellのwebサービスフレームワークに Yesod というフレームワークがあります。そしてYesodに触れたことのない開発者向けに書かれたチュートリアルの一つに Yesod tutorial があり、手順に沿っていくだけで簡単なwebサービスを動作させることができ、Yesodで何ができるかを簡単に理解できるようになっています。 ただ残念なことに、この Yesod tutorial の記載は内容が古く、stackを利用した現行の手順とマッチしなくなっています。stackに対応している最新環境(Yesod...

Post has attachment
[haskell][yesod] stack exec -- yesod devel で devel.hs: getAddrInfo: does not existというエラーになる問題の対処方法
Widnwos環境での現象: windows上でyesodのscafolding siteをセットアップし、さあ起動!ブラウザから接続確認してOKとなるはずが、なぜか「The application isn't built」という表示が出てしまいました。 このときターミナルには以下のようなログが出力されていました。 % stack exec -- yesod devel
Yesod devel server. Type 'quit' to quit
Application can be accessed at...

Post has attachment
[yesod][haskell] stack new xxx-project yesod-???で生成できるyesodのtenplatesの説明
現状、stackで指定できるyesod関連のtemplatesには以下のものがあります。どのtemplateに何が用意されているのか、知りたかったのですがどこにも説明されていないようなので、調べてまとめてみました。 % stack templates | grep yesod
yesod-hello-world
yesod-minimal
yesod-mongo
yesod-mysql
yesod-postgres
yesod-postgres-fay
yesod-simple
yesod-sqlite 以下...

Post has attachment
[haskell][gcc][win] Windows版Haskell Platform付属のgccでC++11のコードをコンパイルする方法
Windows版のHaskell Platformにはmingwが同梱されておりgccが含まれています。現在自分のPCにはHaskell Platform 2014.2.0.0をインストールしているのですが、これに付属されているgccでC++11のコードをコンパイルしようとすると、以下のようなエラーになってしまいました。 % gcc -std=c++11 cpp11.cpp
cc1plus.exe: error: unrecognized command line option '-std=c++11' -s...

Post has attachment
[haskell][yesod][sqlite] Persistentパッケージ利用時にテーブルにインデックスを生成する方法
PersistentパッケージにはMigration機能が備わっており、自動的にテーブルを生成してくれます。スキーマ変更を行った際にも、変換が可能な限りテーブル内のレコードを保持したまま新しいスキーマに変換してくれます(Migration機能については 過去のエントリ でまとめています)。 自分が利用する上で、インデックスやトリガーを生成する手順が紹介されておらず困っていたのですが、rawExecuteという関数を用いることで自由にDDLを発行できることがわかりました。以下その手順とサンプルを紹介しておきます...

Post has attachment
[haskell][stack] stack exec ghciで”Couldn't match expected type"エラーが発生する問題の対処
先日、haskellのパッケージ管理をcabalからstackに移行して「便利〜!」と感動していたところなのですが、stach exec ghciでソースをロードしようとすると"Couldn't match expected type: xxxxx"とエラーが発生する問題に遭遇しました。 ネットの情報を参考に解決することができたのでその手順をまとめておきます。 問題: stack buildは成功するにもかかわらず、stack exec ghci xxx.hs(xxx.hsはbuild対象のファイル)がエラー...
Wait while more posts are being loaded