Junior / Royksopp

今回はエモーショナル度は若干低めだが、安定してたので、まぁまぁよかったが、、、、

ProductName ジュニア
ロイクソップ
EMI MUSIC JAPAN(TO)(M) / ¥ 2,500 (2009-03-18)
在庫あり。

ライブだとかなりよくなるんじゃないかな。行きたいなぁ富士ロック。娘が3歳にしてロックに目覚めてくれれば教育の一環としてしょうがなくついていくところなんだけどなぁ。

というわけで今はDepeche Modeの新譜が気になるのであった。

ProductName サウンズ・オブ・ザ・ユニバース デラックス盤(DVD付)
デペッシュ・モード
EMIミュージックジャパン / ¥ 3,500 (2009-04-22)
近日発売 予約可

システムバイオロジー的な世界観

ちょっと来月の頭に講演をしなきゃいけなくなったので、色々と考えていたら 、僕のシステムバイオロジー的な世界観というものは、古代インドの宇宙観にわりと近いのではないかという結論に達した。

world

  • 臓器は生体を支え
  • 細胞は臓器を支え
  • タンパク質は細胞を支え
  • ゲノム(核酸)はタンパク質を支える

つまり、ゲノムは蛇であり、量子化学的世界とはこの世の全てを取り巻くトラパーの波であり、真理なのであった。

ProductName システムバイオロジーの展開―生物学の新しいアプローチ (Springer reviews)

シュプリンガー・フェアラーク東京 / ¥ 4,200 ()
在庫あり。

ProductName 交響詩篇エウレカセブン DVD-BOX (初回限定生産)

バンダイビジュアル / ¥ 52,500 (2009-03-27)


日本文化を英語で紹介する事典

面白いのでちょこちょこと読んでる。

ProductName 日本文化を英語で紹介する事典
杉浦 洋一,ジョン・K ギレスピー
ナツメ社 / ¥ 2,079 ()
在庫あり。

パラパラめくって目についたところを読むのがいい感じ。

一方、「日本語が亡びるとき」は読み飽きてしまったのであった。

ProductName 日本語が亡びるとき―英語の世紀の中で
水村 美苗
筑摩書房 / ¥ 1,890 ()
在庫あり。

年末ばあさんが遊びに来た時に欲しそうにしてたので5月の連休にでも帰った時にあげようかな。こういうネタはあんま興味ないことに気がついた。

Bamboo+Inkscapeが快適

娘とお絵描きをして遊ぶために買ったんだけど、最近はメモをとるのに使っている。難点をいえば、USBのケーブルが邪魔。どうにかならんもんかね。

ProductName WACOM Bamboo Fun CTE-450/W0

ワコム / ¥ 13,629 (2007-09-14)
在庫あり。

Inkscapeが便利

list

参考

MooseでLispを実装してみる(List)

やさしい Lisp の作り方 by Java and by C#を参考に書いてみる。リストの構成にはシンボルが出てこない。

list

名前を付けるということがちょっと分かったような気がした。

シンボルは Lisp の最も重要なデータタイプの一つです。「記号」とか単に「名前」または「識別子」とも呼ばれていました。

シンボルは (1) 1 個以上の値を持つことができる、(2) シンボル名により唯一性が保障されます。(2) の唯一性とは同じ名前のシンボルは同じであることを表しています。もっと正確に言えば、同じ名前のシンボルは、ある等価関数によって必ず T を返す、つまり等価であることを保障します。

とりあえず、動くとこを見たかったので、色々端折ってる。

Atom

package Moosp::Atom;

use Moose;

__PACKAGE__->meta->make_immutable;

no Moose;


1; # End of Moosp::Atom

Number

package Moosp::Number;

use Moose;

extends 'Moosp::Atom';

sub str {}

no Moose;

1; # End of Moosp::Number

Integer

package Moosp::Integer;

use Moose;

extends 'Moosp::Number';
with 'Moosp::Sexp';

has 'value' => (is => 'rw',isa => 'Int');

sub add {
  my ($self, $i) = @_;
  my $new_value = $self->value + $i->value;
  __PACKAGE__->new({value => $new_value});
}

sub subt {
  my ($self, $i) = @_;
  my $new_value = $self->value - $i->value;
  __PACKAGE__->new({value => $new_value});
}

sub mul {
  my ($self, $i) = @_;
  my $new_value = $self->value * $i->value;
  __PACKAGE__->new({value => $new_value});
}

sub div {
  my ($self, $i) = @_;
  my $new_value = int($self->value / $i->value);
  __PACKAGE__->new({value => $new_value});
}

sub ge {
  my ($self, $i) = @_;
  if ($self->value >= $i->value){
    return Moosp::T->new();
  }
  else {
    return Moosp::Nil->new();
  }
}

sub str {
  my $self = shift;
  return $self->value;
}

__PACKAGE__->meta->make_immutable;
no Moose;

1; # End of Moosp::Integer

Cell

package Moosp::Cell;

use Moosp::Nil;
use Moose;

has 'car' => (
          is => 'rw',
          default => sub{ Moosp::Nil->instance }
);

has 'cdr' => (
          is => 'rw',
          default => sub { Moosp::Nil->instance }
);

__PACKAGE__->meta->make_immutable;

no Moose;

1;

List

package Moosp::List;

use Moose;
use Moosp::Nil;
extends 'Moosp::Cell';

sub BUILD {
  my ($self, $car, $cdr) = @_;
  $self->car(Moosp::Nil->instance);
  $self->cdr(Moosp::Nil->instance);
  return $self;
}

sub serialize {
  my $self = shift;
  my $str = "(";
  $str .= $self->car->serialize;
  if (ref($self->cdr) eq 'Moosp::Nil') {
    $str .= ")";
  }
  elsif (ref($self->cdr) eq 'Moosp::List') {
    $str .= " " . $self->cdr->serialize . ")";
  }
  else {
    $str .= " . " . $self->cdr->serialize . ")";
  }
  return $str;
}

1; # End of Moosp::List

test

my $int3 = Moosp::Integer->new(value => 3);
my $int5 = Moosp::Integer->new(value => 5);
my $list = Moosp::List->new();
$list->car($int3);
$list->cdr($int5); # (3 . 5)

my $list2 = Moosp::List->new();
$list2->car($int3);
$list2->cdr($list);  # (3 (3 . 5))

print $list2->cdr->car->value # cadr -> 3

CdSセンサとArduinoで遊ぶ

当初思ってたよりも、意外にヘビーに読んでる。

ProductName Arduinoをはじめよう (Make:PROJECTS)
Massimo Banzi
オライリージャパン / ?円 ( 2009-03-27 )


先週秋月でCdSを購入してきたのでちょうどいいサンプルを。

#define LED 13
int val = 0;

void setup(){
  pinMode(LED, OUTPUT);
}

void loop() {
  val = analogRead(0);

  digitalWrite(LED, HIGH);
  delay(val);

  digitalWrite(LED, LOW);
  delay(val);
}

明るさに応じて点滅の間隔が変化する。

1239454286

ProductName Arduinoをはじめようキット

スイッチサイエンス / 3980円 ( )


rpy2とsoaplibでつくるRのウェブサービス

soaplibにはCherryPyが組み込まれているので簡単にウェブサービスがつくれる。さらにrpy2を使えばRのウェブサービスがお手軽に構築できて便利。

インストールの手順はwikiを参照

以下のコードをsoapr.pyというファイル名で保存する。これは与えた数字の数だけRがrnormして返すという簡単なサービス。

from soaplib.wsgi_soap import SimpleWSGISoapApp
from soaplib.service import soapmethod
from soaplib.serializers.primitive import String, Integer, Array, Float
import rpy2.robjects as robjects

class RService(SimpleWSGISoapApp):

    @soapmethod(Integer,_returns=Array(Float))
    def rnorm(self,num):
        r = robjects.r        
        y = r.rnorm(num)
        return [i for i in y]

if __name__=='__main__':
    from cherrypy.wsgiserver import CherryPyWSGIServer
    server = CherryPyWSGIServer(('localhost',7789),RService())
    server.start()

実行するとサーバが立ち上がりhttp://localhost:7789/soapr.wsdlにアクセスするとwsdlを出力する。

テスト用のクライアント

>>> from soaplib.client import make_service_client
>>> from soapr import RService
>>> client = make_service_client('http://localhost:7789/',RService())
>>> print client.rnorm(5)
[-0.40538156526399999, 0.45889158855099998, -0.67243766066699995, 2.6881017757299999, 0.113257266309]
>>> print client.rnorm(3)
[-0.16610789340500001, 0.66591497139099998, -1.74812066455]

参考

PyPI recent updates

CPANのアップデートは追いかけているのに、PyPIのアップデートを追いかけないのは如何なものかと思い、PyPI recent updatesをLDRで購読した。

が、他に誰も購読してないが、なんか購読するサイト間違ってる?

ProductName みんなのPython 改訂版
柴田 淳
ソフトバンククリエイティブ / ?円 ( 2009-04-11 )


09.04.11 追記

間違ってた。RSS autodiscoveryだとhttp://www.python.org/をさすようになってた。

MooseでLispを実装してみる(NilとT)

やさしい Lisp の作り方 by Java and by C#を参考に書いてみる。進行中のメモなのであちこち修正するかも。というか修正しまくりで全然進まないのでメモることにしたという。もう少しまとまったらLISPをみんなで勉強しよう!に投稿したい。

ちなみにMooseでlispなのでMoosp(ムースプ)だ。

まずNilとTはMooseX::SingletonでSingletonにした。

package Moosp::Nil;

use MooseX::Singleton;
with 'Moosp::Sexp';

sub str {"NIL"}

__PACKAGE__->meta->make_immutable;

no MooseX::Singleton;

1;

Tも一緒。

package Moosp::T;

use MooseX::Singleton;

extends 'Moosp::Atom';
with 'Moosp::Sexp';

sub str {"T"}

__PACKAGE__->meta->make_immutable;

no MooseX::Singleton;

1;

javaでlispだとSexpはインターフェースなのでMoose::Roleのクラスにしてみたけどこれでいいのかはわからない(まだ最後まで動かしてないので)。

package Moosp::Sexp;

use Moose::Role;

requires 'str';

sub print { 
  my $self = shift;
  print $self->str;
}

sub serialize {
  my $self = shift;
  return $self->str;
}

no Moose::Role;
1;

Moosp::Atom

package Moosp::Atom;

use Moose;

__PACKAGE__->meta->make_immutable;

no Moose;
1; 

モダンperl入門が手放せない

ProductName モダンPerl入門 (CodeZine BOOKS)
牧 大輔
翔泳社 / ¥ 2,940 ()
在庫あり。