Blogプログラミング・IT関連。知っていると便利なこと、気になって調査したこと、はまったけど解決できたことなど。serverに接続してウィンドウを開こうとすると、以下のようなエラーが表示され困っていました。192.x.x.x:0.0クライアント側のDISPLAY環境変数は正しい、サーバー側でxhostによりクライアントが登録されていることも確認、にもかかわらずエラーになる状態です。[環境設定]を開くと「セキュリティ」タブの中に「ネットワーク・クライアントからの接続を許可」というチェックボックスが存在していることに気がつきました。Yesodを読んでいます。本エントリにはBasicsの章について自分の理解をまとめておきます。Worldサンプルコード(helloworld.hs)を起動するにはコマンドラインから単に以下のコマンドを実行すればよい。HelloWorldコンパイル後ウェブサーバーが起動される。起動されたウェブサーバーにアクセスするには、ブラウザに以下のURLを入力する。http://localhost:3000/Routing以下のようなコードでrouteを定義する。GET|]上記のコードは、次のことを意味している。"HelloWorld"アプリケーションはrouteを1つ持つこのrouteを"HomeR"と呼ぶ。"R"はresourceを表すものに付与する接尾辞。従うべきconvention。Functionを用意する。World!|]という引数を渡している。Foundation全てのYesodアプリケーションはfoundationデータ型を持つ。このデータ型はYesod型クラスのインスタンスでなければならない。以下のような項目を制御する。generatorYesodはヘブライ語で"foundation"という意味らしい。"@{...}"で囲まれた部分はYesodが自動的に正しいURL文字列に変換した上でクライアントにレスポンスデータとして返される。siteを利用することを強く推奨する。prototypingに相当する恩恵がえられる。Yesodを最初から読むことにしました。本エントリで主に自分が重要だと感じたポイントをメモにして残しておきます。IntroductionYesodおよびHaskellを用いるメリットは以下の通り。StringsHaskellStringには以下の制限があるため、HaskellはOverloadedStringsという仕組みを用意している。wordを消費するなどのパフォーマンスの問題ByteStringsやHTMLなど、文字列っぽいデータを扱いたいことがある型IsString型のインスタンスにはText(Stringより効率がよい)、StringおよびHtmlなどがある。"hello"のように宣言されたデータの型が一意に決まらなくなるため、明示的な型指定が必要になることがある点に注意が必要。Families複数の異なる型の関連を記述する。Tree(AST)を構築する。Haskell(TH)関数と認識する。Haskell(TH)のちょっとした拡張。以下のように"["と最初の"|"の間にquasi-quoteの名前を記述し、contentsを"|"の間に記述する。Yesodのサンプルではコピペ(動作確認)を容易にするためにQQを多様しているが、実際の開発においてはhamletFileなどを用いて外部ファイルを参照することを奨める。Basicsの章以降は別エントリで。MacPortsでパッケージインストール時にバージョンを表すサフィックスを外す方法MacPortsでは複数のバージョンが存在するパッケージをインストールすると、バージョンのサフィックスがついたファイルが/opt/local/bin/以下に配置されうれしくありません。ruby19パッケージをインストールすると、以下のファイルが存在する状態になります。foundというエラーになってしまいます。found.意図したコマンドを実行するためにシンボリックリンクを張りたくなりますがわざわざ手動で設定するのは面倒ですよね。こんなときにはportコマンドで以下の手順を実行すれば、該当のパッケージでインストールされたファイルに対してもれなく自動でシンボリックリンクを設定してくれます。active.上記のコマンド一発で、以下のシンボリックリンクファイルが生成されます。ruby186といった複数バージョンのrubyのパッケージを全てインストールしておき、サフィックスなしのコマンドで起動するバージョンを選択できるようになります。ruby20で選択可能なバージョン一覧を表示できます。'ruby19'.で、現在選択されているバージョンが表示されます。ruby19からruby20への切り替えの様子。