Listの中身をまるっとコピーする Listの中身をまるっと別のリストにコピーしたいとき、単純にリストを代入すると参照渡しになってしまいます。 これが配列だと、CopyTo メソッドを使ってやればいいのですが、Listだと同じものがありません。 下の例ではlist1を代入したlist2に追加した内容が、list1にも反映されています。 var list1 = new List<string& […]
LINQ to XML とは LINQ to XML は、.NET Framework プログラミング言語から XML を操作できるようにする、LINQ に対応したメモリ内 XML プログラミング インターフェイスです。 … LINQ to XML の最も重要な利点は、統合言語クエリ (LINQ) と統合されていることです。この統合により、メモリ内の XML ドキュメントに対するクエリ […]
LINQのAggregateとは LINQを使った畳み込み(fold)の方法を紹介します。畳み込みにはAggregateを使います。Aggregateは「集約」や「集める」といった意味を持ちます。 Aggregateはどのような処理かというと、シーケンスにアキュムレータ関数を適用する物らしいです。ざっくり言うと データから1つの要素を取り出し … 取り出した要素と累積値(アキュムレータ […]
LINQでデータを連結させる方法 LINQを使い複数のデータソースを連結させることができます。SQLでいうところのUNIONがLINQでもUnion、UNION ALLに該当するのがConcatです。 まずはUnionで配列を連結させてみます。 // データ string[] data1 = { "太郎", "次郎" }; string[] data2 = { "三郎", "四郎", "五郎" } […]
1つのキーでグループ化 LINQを使ってデータを特定のキー列でグループ化するにはGroupByを使います。 仮にBookというクラスを定義します。 class Book { public string Title { get; set; } public string Author { get; set; } public int Pages { get; set; } public int Ca […]
Yesodでコマンドライン上にログを出力する方法 Yesodでログを出力するには$(logInfo)を使います。 ログはコマンドライン上に表示されます。 getLogR :: Handler Html getLogR = do $(logInfo) "ログです ..." defaultLayout $ [whamlet|<p>logを出力しました ...|] 使い方 […]
Jsonを返すリソース まずは適当なjsonを返すように定義してみます。 getJsonR :: Handler Value getJsonR = jsonToRepJson $ object ["data" .= ("val" :: Text)] 型を Handler Value とします。 jsonToRepJsonでobjectで作ったデータをJsonとして返している… みたいな […]
Viewからの読込 YesodでCSS/Javascripを使用する場合、Shakespearean TemplatesのCassius(CSS) / Lucius(CSS) / Julius(Javascript) を使うことができます。ただし通常のjavascriptファイルやcssファイルを読み込んで使用したい場合は、StaticRを使ってパスを指定できます。 今回は次のjavascript […]
テンプレートからプロジェクトの作成 まずはStackのテンプレートを使用してプロジェクトを作成します。テンプレートにはyesod-postgresを使用します。 $ stack new my-project yesod-postgres PostgreSQLの設定 とりあえず適当にPostgreSQLをインストールしておきます。それから使用するユーザー、データベースを作成しておきます。Yesodの […]
ルートの追加 今回は一覧からデータを削除をできるようにしてみます。まずはrouteを追加します。削除はPOSTで削除対象のIdを受け取り処理します。 config/routes /ArticleDelete ArticleDeleteR POST フォームはInputFormで実装してみます。Idのみの送信なのでこのほうが簡単です、たぶん。 Handler/ArticleList.hs modul […]