数列圧縮変形版

2008-09-26で提案されている変形版をsumimさんがSqueakを使って華麗に解いていたので、Scalaでマネしてみた。 abstract class Compact { def ::(l: Compact): Compact =CompactList(l,this) def ::(l: Int): Compact } case class CompactList(car: Compact,…

Scheme どう書く?的をScalaで書いてみた

Scheme どう書く?的 - higepon blogより 整列済みの number のリストがある。'(1 3 4 5 6 12 13 15)このようなリストで数が連続している部分は '(1 2 3) -> '(1 . 3) のように両端のみを書くような記法を導入する。最初の例のリストであれば以下のようにな…

GNU Screenを複数人で共有する

GNU screenには複数のターミナルから1つのセッションを共有する機能が付いている。これを使えば作業内容の確認や指導、共同作業が遠隔地から行えるようになる。1. Aさん: screen -S でセッションに名前を付けて起動 2. Aさん: C-a :multiuser onで外部から…

“Lisp as an Alternative to Java”のお題を Scalaで

“Lisp as an Alternative to Java”のお題を Squeak Smalltalk で - Smalltalkのtは小文字です経由 scala勉強中に付き、上記サイトで面白い問題を発見したので早速やってみました。思ったより時間がかかったけど関数脳の良いトレーニングになった気がする。問…

scalaでテーブル出力

リストから表を生成する - kmizuの日記より scala-user MLに投稿されていた問題で、入力: 1, 2, 3, 4, 5, 6, 7 のようなリスト 出力: <table> <tr> <td>1</td> <td>2</td> <td>3</td> </tr> <tr> <td>4</td> <td>5</td> <td>6</td> </tr> <tr> <td>7</td> <td>&nbsp;</td> <td>&nbsp;</td> </tr> </table> となるようなプログラムを作成せよというもの(出力はNodeSeqなので出力を整形する…

MACの画面キャプチャ

MAC

Command + shift + 3 全画面キャプチャ(ファイル) Command + shift + 4 一部キャプチャ(ファイル) Ctrl + Command + Shift + 3 全画面キャプチャ(クリップボード) Ctrl + Command + Shift + 4 一部キャプチャ(クリップボード)

screenのウィンドウに名前を付ける

ウィンドウが増えてくるといちいち一つずつ切り替えて行くのも大変だ。 そこで、各ウィンドウに名前を付けてそこにダイレクトで飛べると便利だ。 .screenrc caption always "%{= wk} %-w%{=bu dr}%n %t%{-}%+w %= %{=b wb}%y/%m/%d(%D) %{=b wb}%c" ステータ…

screenを縦に割る(横分割)

横分割に対応したバージョンをインストール $ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/screen co screen $ cd screen $ cd src $ ./coufugure $ make $ sudo make install C-a | 横分割 C-a S 縦分割 C-a tab リージョン移動 C-a X カ…

サイズが0のファイル名を表示

ls -al | awk '$5==0 {print $8}'

拡張子を除去

フォルダ内の例えばhogehoge.txt.org => hogehoge.txtのファイル名変換を一度にやる。find *.org -print | sed 's/.org//g' | xargs -t -l1 -iarg mv -f arg.org argなげぇ。。。

scalaのobject

scalaのobjcetって現状だとオーバーライドできないのね。残念。 ProtoUserのメンバとかオーバーライドしたいのに。 一応、将来サポート予定だそうです。

liftのローカライズ

lift内には様々なありもののモジュールがありそれらを使えば例えばユーザー登録の仕組みなどは簡単に作れるのだがそのままだとエラーメッセージなどが英語のままで困る。またサイトを国際化対応で考えているならばエラーメッセージなどは外部ファイルにまと…

Makefileのデバッグ

他人が書いた複雑なMakefileをデバッグするときは次のようにするとシンボルなどのデバッグログが出せて便利。warningはファイル名と行番号も出してくれるぞ。 HOGE = hogege $(info hoge $(HOGE)) $(warning hoge- $(HOGE))出力例: hoge hogege Makefile:6:…

LiftRules.addAroundで追加したaroundがなぜか2度呼ばれる

liftにはaroundと呼ばれるリクエスト処理をハンドルする為の機構が用意されていて、こんなコードで例えばログを残すことができる。と、公式サイトには書いてある。 (参照: http://liftweb.net/index.php/HowTo_hook_into_the_lift%27s_request_processing_cy…

scalaだと

http://d.hatena.ne.jp/scinfaxi/20080727/1217119532|titleよりscalaだとこうか。 object Cat { def speak = println("にゃー") } object Dog { def speak = println("わん") } List[{def speak}](Cat,Dog).foreach{a=>println(a.speak)} 型安全って安心

scala.io.BufferedSourceクラスのバグの修正

ちょっと直してみた。(まだバグがあるかもしれないけど) liftwebの日本語処理がおかしいときはお試しあれ。(自己責任でお願いします。。。) Index: BufferedSource.scala =================================================================== --- Buff…

Scalaのライブラリにバグ?

scala.io.BufferedSourceなのだが、入力ストリームの1文字が2バイト以上の時にうまくうごかないかも。 というのもdecodeした後のバッファと変換前のバッファを同じサイズで確保しているので、 val byteBuffer = ByteBuffer.allocate(buf_size) var charBuffe…

scala.io.BufferedSourceクラスのバグの検証コード

Scalaのライブラリにバグ? - 玲瓏庵 の検証コード。 val buf = new StringBuilder; for(i <- 1 to 2000) { buf.append("あ"); } for(i <- 1 to 2000) { buf.append("a"); } buf.append("E"); val s = Source.fromInputStream(new ByteArrayInputStream(buf.…

MAC OS Xの外部ディスプレイ

MAC

今更WindowsからMACに乗り換えたのだが、やはり基本的なところの動きがすばらしいですな。例えば壁紙とかの画面の設定を外部ディスプレイ毎に覚えといてくれるのね。昔使ってたWinマシンなんぞ、スリープから復活させたときに外部ディスプレイが死んだりして…

フォームの処理 - lift

http://liftweb.net/index.php/Hello_Darwin#my_first_formより写経する。 フォームを作る。 helloFrom.html <lift:surround with="default" at="content"> <h1>Hello Form</h1> Hello <lift:HelloForm.who /> <br/> <form> <label for="whoField">Who :</label> <input type="text" name="whoField"/> </form></br/></lift:helloform.who></lift:surround>

Scalaでマネする。

与えられた木から、子→親への対応を作るという問題なのだが、これが簡単そうで実はなかなか奥が深そうだ。 いくつか回答を眺める中で、その中で、与えられた木から、子→親への対応を作る - MEMO:はてな支店が良く出来ていたので、練習がてらScalaで真似して…

動的ページを作る - lift

src/main/webapp/にhtmlファイルを作る。ファイル名はなんでもOK。 ただし、UTF-8で保存しないとなぜかjava.lang.OutOfMemoryErrorが出る。 <html xmlns="http://www.w3.org/1999/xhtml"> <body> <h1>日本語も使える</h1> <lift:snippet type="HelloWorld:howdy" /> </body> </html> HelloWorldクラスは、sandbox.lift.hellodarwin.snippetに次のように定義されている。 class H…

静的ページを作る - lift

テンプレートから作成したプロジェクトをベースにして変更を加えていくことにする。 src/main/webapp/ に.htmlを置けばhttp://localhost:8080/ファイル名でアクセスできる。 トップページのサイトマップに追加するにはbootstrap.liftweb.Bootクラスに val en…

eclipseでlift使う

http://liftweb.net/index.php/Using_eclipse_hotdeploy を見ながら進める。eclipse scala pluginを入れておく。 mvn eclipse:eclipseを実行しmavenプロジェクトをeclipseプロジェクト化する。次に mvn -Declipse.workspace=<path-to-eclipse-workspace> eclipse:add-maven-repoで、mave</path-to-eclipse-workspace>…

scalaのwebフレームワークliftを試す

scalaでwebやる場合、既存のjava用のwebフレームワークを使うのもダサいので、 scala用に作られたliftを使うのがよかろう。ということで試す。 公式サイトを読む限りRuby on RailsやseasideやErlywebなどの良いとこ取りなイメージ。 Maven入れる http://mave…

最近読んだ本でよかったやつ

ビューティフルコード (THEORY/IN/PRACTICE)作者: Brian Kernighan,Jon Bentley,まつもとゆきひろ,Andy Oram,Greg Wilson,久野禎子,久野靖出版社/メーカー: オライリージャパン発売日: 2008/04/23メディア: 大型本購入: 30人 クリック: 617回この商品を含む…

Scalaメモ

自分用メモ(まぁ基本的にこのblogは自分用メモの集合でしかないが・・・) 仮引数に=>が使われていると名前渡しになる。そうじゃないと値渡し(その場で評価される。) Exampleでは無限再帰ループを例にしていた。 セミコロンが省略できる時がある。 1. 問…

Scala By Exampleの和訳

和訳を見つけた。http://www29.atwiki.jp/tmiya/pages/23.html

Scala試す

Scala特徴 以下wikibediaより。 * 静的型付け関数型言語のため、開発生産性が非常に高い * 静的型付けのため、コンパイル時点でのエラー(特に型関連の)検出が得意である。また、型(クラス)をJavaなどと比べてより容易に作ることができ、また、型を使った…

データベース・リファクタリング作者: スコット W アンブラー,ピラモド・サダラージ,梅澤真史,越智典子,小黒直樹出版社/メーカー: ピアソンエデュケーション発売日: 2008/03/26メディア: 単行本購入: 10人 クリック: 211回この商品を含むブログ (53件) を見…