その1. PHPで配列の直積 複数配列の直積、ワンラインで書けますね。 function array_cartesian_product(array ...$arrs): array { return array_reduce($arrs, fn($acc, $arr) => array_reduce(array_map(fn($v) => array_map(fn($r) => [...$r, $v], $acc),…
前回Iterator2個を先頭から読んで要素同士を組み合わせたすべての値を生成するIteratorを作成した。 terazzo.hatenadiary.org 今回はこれを3個に増やしてみる。
PHPで2個の配列から一つづつ値を取り出した際の全ての組み合わせを取得したい場合はforeachを入れ子にすればいい。 $arr1 = [0, 1, 2]; $arr2 = ['a', 'b', 'c']; $product = iterator_to_array((function ($a1, $a2) { foreach ($a1 as $v1) { foreach ($a2…
お題: Map を Mapに変換するメソッドを作るという話題。 Mapの置換にみるジェネリクス表現 - プログラマーの脳みそ 元の話はJavaなんだけどScalaではできるかどうかやってみた。 バージョンはScala 2.11.2
久しぶりなのでリハビリが必要
jsvcの起動オプションの-outfile/-errfileにファイルパスを指定すると、そのファイルに標準出力/標準エラー出力を吐きだすようになる。但しこのファイルは普通にはローテートされないので、何らかの方法でローテートするようにしたい。例としてTomcat6以降 +…
イントラ案件だけどiPadで動画を見たいという話があったので、videoタグを使ったHTMLページを作り、Safariから動画を視聴できるようにした。 動画自体は社外秘ではないのだけど、サイト内の他のコンテンツは社外秘なので、SSLクライアント証明書を配布してSS…
JMeterをNAT環境で使う機会があったので設定方法まとめた。というかほぼ以下のサイトに書いてあった通りにした。*1 Distributed JMeter Testing Through SSH 今回は接続周りの設定の話しかしないので、インストール方法、テスト計画の設定方法、サーバ上での…
仕事でPHPのコードを編集することがあるのだが、自分が頻繁に使う「トリプルクリックで行選択→ドラッグで数行選択→コピー→別の箇所にペースト」という操作をおこなうと、なぜかペーストした行の次の行のインデントが変わってしまうという現象があり、不便を…
Scalaはパターンマッチ内で正規表現を使ってマッチするかどうかの判定及びマッチした箇所の抽出が出来る。 val regex0 = "(.*)hell".r val input = "nutshell" val result = input match { case regex0(p) => Some(p) case _ => None } assert(result == Som…
お題: 新しい状態を作るにはcopyメソッドで新たなインスタンスを作ります。 そうすると結局お互いに保持している参照が古い状態を指していることになるので、参照を新しいものに付け替えなければなりません。 先の例ではvar属性だったため、再代入することで…
「同じ名前のimplicit defを2つ定義してimportした場合の挙動がScala2.9と2.10で異なる件 - xuwei-k's blog」みて思い出したので確認してみた。Scala 2.9.1 + scalaz 6.0.3で下のようなコードを書いてコンパイルすると "reassignment to val" エラーになる…
お題: 結合テスト中のシステムで、OutOfMemoryErrorが発生しました。UT後ソースコードの変更はしていません。ヒープメモリは足りているようです。原因として何が考えられますか?(筆記解答) 8つの質問で、Java SI業界の現状を知る - レベルエンター山本大…
お題: Sometimes, you want a block to be able to call itself. That means it needs a reference to itself. And that means you have a wonderful opportunity to create a strong reference cycle that will endure till the end of time, or at least t…
アクションに渡すときはパスやクエリストリングはアクションの引数の形に変換する必要がありますが、その変換ルールを定めているのが PathBindable[T], QueryStringBindable[T] といった implicit object です。conf/routes では例えば Int などはではデフォ…
みんな怒ってるのは、使い勝手を変更したからでもオシャレだからでもなくて、端的に使いにくいからだと思うんだよね。 新着エントリのタイトルを1日1500件分ぐらい流し見している程度のユーザとして感想と希望*1を書いていくよ。 ちなみに我慢して使ってたら…
"Play 2.0"もとい"Playframewok 2.0"もとい"Play framework 2.0"で*1、既存のコンポーネントを組み合わせて、新しいコンポーネントを作りたい。 例えば、日付を入力するのに、セレクトボックスで「年」「月」「日」を選んで入力するフォームを考える。 こう…
スタプラわー!(挨拶) 第8回全国戦優勝者です(本当) 携帯ゲームって初めてやったけど運営が伏せたルールをプレイヤーが当てる遊び的な感じですね。 折角攻略法見つけても「あれ不具合だから修正しました」て言われる恐ろしい展開もある。 閑話休題、"Play 2.…
"Play 2.0"もとい"Playframewok 2.0"もとい"Play framework 2.0"です。検索しにくいんだよksg。 使ったバージョンは2.0.3です。 あまり良いやり方じゃない気がするので、良いやり方があれば教えて下さい。 目的 Play 2.0でHTMLテンプレート上でアクションを…
お題: ・nil に対するメッセージ送信が例外にならないこの仕様って、Objective-C以外でほとんど見かけたことがないのだけど、メリットに比べてデメリットが大き過ぎると思う。オブジェクトのメソッドチェインでこの仕様がたまに便利なことはあるけど、ほとん…
そろそろモナド変換子のことを覚えたいなーと思ったものの、見つけたサンプルが状態モナドを例にとっていたので、学習の準備としてひとまず状態モナドの実装を写経してみることにした。Javaで。参考にするページ: 状態モナド遊び - あどけない話 Stateモナド…
お題: 複数個の関数があって、関数を呼び出した結果を使って関数を呼び出して…っていうのを1個の関数にします。 JavaScriptでの非同期関数合成 - monjudoh’s diary 関数の形を見てみます。 // 1を足す function add1(callback,arg){ callback(arg+1); } コー…
Scalaの練習です。お題: 4けたの数について、それぞれの位の数字を大きいじゅんにならべた数から小さいじゅんにならべた数をひくという計算を行います。 1974 について、この計算を 100 回行った答えを書きなさい。 Z会三年生中学受験コース5月のてんさく問…
Listを扱うプログラムを書く時に、match式で::を使ってheadとtailを取り出すことが良くあると思う。 例えば、「二つのList a, bがあり、bがaに前方一致するならaからbを取り除いた残りを戻す」というような処理をmatchを使って書くと*1、こんな風になるかと…
現行でリモートアドレスベースでのアクセス制限を行っているサーバがあるんだけど、新たにSSLクライアント証明書をインストールした端末にもアクセスを許可したいという話があった。ちょっとトリッキーだけどなんかうまくいったので記録。むしろ情報求む。 …
パーサとテンプレートエンジンって丁度動きが逆だよなあと前から思ってたんだけど、てことはパーサコンビネータっぽい感じで文字列テンプレート書けないかと思った。 一応見た感じそれっぽく出来たけど、なんか格好悪い実装になってしまった。真性のScalaユ…
imp_implementationWithBlock()という、BlockからIMPを作り出す関数がiOS 4.3 or Lionから使えるようになったみたいなので、これを使って実行時にインスタンスメソッドを追加する実験例えば、モーダルウィンドウをクローズした時に自動的にstopModalするコー…
話題になってたので読んだよ。この本(や「一般意思2.0」という言葉)についてはいろいろな人が言及していて、とりもなおさずそれはこの本が良い本だっていう証拠だと思う。それを聴いたり読んだりした人が、自分も何かを語らずには居られなくなるような言葉に…
プロセスが使用しているファイルの一覧を取得する。 「c - on iOS/iPhone: "Too many open files": need to list open files (like lsof) - Stack Overflow」によると、fcntlでfdを舐めてパスを取れば良いっぽい。 #include <sys/param.h> #include <sys/fcntl.h> void show_openfiles(</sys/fcntl.h></sys/param.h>…
NSFileManagerの-enumeratorAtPath:を呼ぶと、特定ディレクトリの下を深さ優先でトラバースするNSDirectoryEnumeratorオブジェクトを返してくれるので、それで全ファイルエントリを取得出来るようだ。但し、iTunesで買ったアプリなどは見えない*1。他にも見…