[Scala] Re: Mapの置換にみるジェネリクス表現

お題: Map を Mapに変換するメソッドを作るという話題。 Mapの置換にみるジェネリクス表現 - プログラマーの脳みそ 元の話はJavaなんだけどScalaではできるかどうかやってみた。 バージョンはScala 2.11.2

久しぶりなのでリハビリが必要

プロセス置換を使ってjsvcの標準出力をローテートする。

jsvcの起動オプションの-outfile/-errfileにファイルパスを指定すると、そのファイルに標準出力/標準エラー出力を吐きだすようになる。但しこのファイルは普通にはローテートされないので、何らかの方法でローテートするようにしたい。例としてTomcat6以降 +…

iPadのSafariでオレオレSSLクライアント証明書を使っていると動画再生できない

イントラ案件だけどiPadで動画を見たいという話があったので、videoタグを使ったHTMLページを作り、Safariから動画を視聴できるようにした。 動画自体は社外秘ではないのだけど、サイト内の他のコンテンツは社外秘なので、SSLクライアント証明書を配布してSS…

JMeterのリモート実行機能をNAT環境で使う

JMeterをNAT環境で使う機会があったので設定方法まとめた。というかほぼ以下のサイトに書いてあった通りにした。*1 Distributed JMeter Testing Through SSH 今回は接続周りの設定の話しかしないので、インストール方法、テスト計画の設定方法、サーバ上での…

PDT(PHP Development Tools)で複数行ペースト時に次行のインデントが変更される

仕事でPHPのコードを編集することがあるのだが、自分が頻繁に使う「トリプルクリックで行選択→ドラッグで数行選択→コピー→別の箇所にペースト」という操作をおこなうと、なぜかペーストした行の次の行のインデントが変わってしまうという現象があり、不便を…

Scala 2.9でパターンマッチでコンパイルエラー

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で異なる件

「同じ名前のimplicit defを2つ定義してimportした場合の挙動がScala2.9と2.10で異なる件 - xuwei-k's blog」みて思い出したので確認してみた。Scala 2.9.1 + scalaz 6.0.3で下のようなコードを書いてコンパイルすると "reassignment to val" エラーになる…

JavaでOutOfMemoryErrorを出す方法

お題: 結合テスト中のシステムで、OutOfMemoryErrorが発生しました。UT後ソースコードの変更はしていません。ヒープメモリは足りているようです。原因として何が考えられますか?(筆記解答) 8つの質問で、Java SI業界の現状を知る - レベルエンター山本大…

Blocksで不動点関数(Re: リークしない再帰blocksの書き方)

お題: 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…

Play2.0でパラメータを型安全に受け取る

アクションに渡すときはパスやクエリストリングはアクションの引数の形に変換する必要がありますが、その変換ルールを定めているのが PathBindable[T], QueryStringBindable[T] といった implicit object です。conf/routes では例えば Int などはではデフォ…

はてなブックマークの新デザイン

みんな怒ってるのは、使い勝手を変更したからでもオシャレだからでもなくて、端的に使いにくいからだと思うんだよね。 新着エントリのタイトルを1日1500件分ぐらい流し見している程度のユーザとして感想と希望*1を書いていくよ。 ちなみに我慢して使ってたら…

Play2.0で日付入力部品を作る

"Play 2.0"もとい"Playframewok 2.0"もとい"Play framework 2.0"で*1、既存のコンポーネントを組み合わせて、新しいコンポーネントを作りたい。 例えば、日付を入力するのに、セレクトボックスで「年」「月」「日」を選んで入力するフォームを考える。 こう…

Play2.0でセレクトボックスにEnumを貼れるようにする

スタプラわー!(挨拶) 第8回全国戦優勝者です(本当) 携帯ゲームって初めてやったけど運営が伏せたルールをプレイヤーが当てる遊び的な感じですね。 折角攻略法見つけても「あれ不具合だから修正しました」て言われる恐ろしい展開もある。 閑話休題、"Play 2.…

Play2.0でURLに一律でパラメータを付ける

"Play 2.0"もとい"Playframewok 2.0"もとい"Play framework 2.0"です。検索しにくいんだよksg。 使ったバージョンは2.0.3です。 あまり良いやり方じゃない気がするので、良いやり方があれば教えて下さい。 目的 Play 2.0でHTMLテンプレート上でアクションを…

Re: nil に対するメッセージ送信が例外にならない

お題: ・nil に対するメッセージ送信が例外にならないこの仕様って、Objective-C以外でほとんど見かけたことがないのだけど、メリットに比べてデメリットが大き過ぎると思う。オブジェクトのメソッドチェインでこの仕様がたまに便利なことはあるけど、ほとん…

Javaで状態モナド

そろそろモナド変換子のことを覚えたいなーと思ったものの、見つけたサンプルが状態モナドを例にとっていたので、学習の準備としてひとまず状態モナドの実装を写経してみることにした。Javaで。参考にするページ: 状態モナド遊び - あどけない話 Stateモナド…

「JavaScriptでの非同期関数合成」を継続モナドで

お題: 複数個の関数があって、関数を呼び出した結果を使って関数を呼び出して…っていうのを1個の関数にします。 JavaScriptでの非同期関数合成 - monjudoh’s diary 関数の形を見てみます。 // 1を足す function add1(callback,arg){ callback(arg+1); } コー…

Z会三年生中学受験コース5月のてんさく問題を Scala で解いてみた

Scalaの練習です。お題: 4けたの数について、それぞれの位の数字を大きいじゅんにならべた数から小さいじゅんにならべた数をひくという計算を行います。 1974 について、この計算を 100 回行った答えを書きなさい。 Z会三年生中学受験コース5月のてんさく問…

ListとStreamの両方でheadとtailにmatchさせる

Listを扱うプログラムを書く時に、match式で::を使ってheadとtailを取り出すことが良くあると思う。 例えば、「二つのList a, bがあり、bがaに前方一致するならaからbを取り除いた残りを戻す」というような処理をmatchを使って書くと*1、こんな風になるかと…

Apache2.2でリモートアドレスベースでの制限 "または" SSLクライアント証明書による認証を行う

現行でリモートアドレスベースでのアクセス制限を行っているサーバがあるんだけど、新たにSSLクライアント証明書をインストールした端末にもアクセスを許可したいという話があった。ちょっとトリッキーだけどなんかうまくいったので記録。むしろ情報求む。 …

文字列テンプレートを型安全にする

パーサとテンプレートエンジンって丁度動きが逆だよなあと前から思ってたんだけど、てことはパーサコンビネータっぽい感じで文字列テンプレート書けないかと思った。 一応見た感じそれっぽく出来たけど、なんか格好悪い実装になってしまった。真性のScalaユ…

Blocksをメソッドとして追加する

imp_implementationWithBlock()という、BlockからIMPを作り出す関数がiOS 4.3 or Lionから使えるようになったみたいなので、これを使って実行時にインスタンスメソッドを追加する実験例えば、モーダルウィンドウをクローズした時に自動的にstopModalするコー…

『一般意思2.0』読んだ

話題になってたので読んだよ。この本(や「一般意思2.0」という言葉)についてはいろいろな人が言及していて、とりもなおさずそれはこの本が良い本だっていう証拠だと思う。それを聴いたり読んだりした人が、自分も何かを語らずには居られなくなるような言葉に…

使用しているファイルの一覧を取得する

iOS

プロセスが使用しているファイルの一覧を取得する。 「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>…

ファイルの一覧を取得する

iOS

NSFileManagerの-enumeratorAtPath:を呼ぶと、特定ディレクトリの下を深さ優先でトラバースするNSDirectoryEnumeratorオブジェクトを返してくれるので、それで全ファイルエントリを取得出来るようだ。但し、iTunesで買ったアプリなどは見えない*1。他にも見…

プロセスの引数を取得する

iOS

前回の続き。KERN_PROCARGS2で引数の情報も取得出来た。但し自分(mobile)がオーナーのプロセスのみ。rootで動ければ全部取れるかも。KERN_PROCARGSの方も試してみたけどiOS上ではうまく動かない(エミュレータなら環境変数まで取れたけど。)KERN_PROCARGS2は…

プロセスの一覧を取得する

iOS

前に書いたOS X用のプログラムがiOSでも普通に動いたわ。 さすがUNIXマシン。 #include <sys/sysctl.h> #include <pwd.h> #define MIB_NAMELEN 4 void show_processes() { int mibname[MIB_NAMELEN] = { CTL_KERN, KERN_PROC, KERN_PROC_ALL, 0}; // all processes struct kinfo_p</pwd.h></sys/sysctl.h>…

アプリケーションが使用しているデフォルトキーを調べる

一般的なCocoaアプリケーションでは、各アプリケーションのメニューの「環境設定」で設定した値は、ユーザーデフォルトデータベースに格納され、次回起動時にはその値を読み込んで使用することで、アプリケーションの挙動をユーザ毎に変更できるようにしてい…