今日の畑(110306)

暖かかったのでチャリでぶらっと畑に顔をだしてみた

1299498189

ジャガイモの芽はまだ出てなかったがソラマメの花は結構咲いていた。

1299498195

浅葱収穫できるかなぁと期待して来てみたのだけどまだまだだった。

1299498176 1299498183

秋に比べて生え方が全然違うので収量期待できる(これが秋)

1286359096

東の麓

山形の酒

1299498254

なかなか

作付け状況をcanvasを使って表示

毎度Photoshopをいじるのも面倒なのでcanvasで出来るようにしてみた。

html

<html lang="ja">
<head>
<title>Allotment</title>
<style type="text/css">
canvas { border: 1px solid #999; }
</style>
</head>
<body>
<canvas id="allotment" width="500" height="500"></canvas>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="allotment.js"></script>
</body>
</html>

js

$(document).ready(function() {
var cv, ctx;
var allotment_data = [
    {name:"なにもうえてない",  x:10,  y:10,  width:480, height:120, color:"#CCCCCC"},
    {name:"浅葱",  x:10,  y:140,  width:140, height:120, color:"#66CC66"},
    {name:"ニンニク",  x:160,  y:140,  width:80, height:120, color:"#993300"},
    {name:"春菊",  x:250,  y:140,  width:80, height:120, color:"#339933"},
    {name:"ジャガイモ",  x:340,  y:140,  width:150, height:120, color:"#CC6600"},
    {name:"ソラマメ",  x:10,  y:340,  width:70, height:150, color:"#339933"},
    {name:"エンドウ",  x:10,  y:270,  width:70, height:60, color:"#339933"},
    {name:"ジャガイモ",  x:90,  y:270,  width:400, height:110, color:"#CC6600"},
    {name:"ミョウガ",  x:90,  y:390,  width:400, height:100, color:"#CC9966"}
];

initCanvas();
drawCanvas();

function initCanvas () {
    cv = $("#allotment").get(0);
    if (!cv) { return; }
    ctx = cv.getContext('2d');
    if (!ctx) { return; }
}

function drawCanvas () {
    var alt;
    ctx.save();
    ctx.font = "20px";;
    for(index=0; index<allotment_data.length; index++){
    alt = allotment_data[index];
    ctx.fillStyle = alt.color;
    ctx.fillRect( alt.x, alt.y, alt.width, alt.height);
    ctx.fillStyle = "#000";
    ctx.fillText(alt.name, 12 + alt.x, 32 + alt.y);
    }
    ctx.restore();
}

});

まぁまぁの出力

allotment

区画のデータはSQLiteかなんかで管理してJSONで取り出せるようにしよう。

REGZA 42Vを購入

2週間くらい前にバチッと音がして突然アクオスがお亡くなりになってからテレビ無し生活を送っていた。

ノートパソコン2台とiPadあるし、子供は順応した(僕はテレビほとんど見ない)のだが、若干一人耐え切れずにギブった。

色々調べて42Z1でいいやと。

運動も兼ねて近所のコジマにチャリで行って価格交渉したら、ネットの最安値とそれほど変わらなくて、壊れたアクオスの引き取り手数料とかコジマポイントを考えるとコジマのほうがお買い得だった。それから明日までフェアをやってるらしくて、500Gの外付けHDDを付けてくれたのでコジマで購入した。

Javascriptで末尾最適化関数

Javascript The Good Partsの4章の最後にメモ化関数があるので、末尾最適化関数を書かねばならんだろうと。

Function.prototype.tail = function () {return [this, arguments];};
Function.prototype.call_with_tco = function () {
  var c = [this, arguments];
  var escape = arguments[arguments.length-1];
  while(c[0] !== escape)
    c = c[0].apply(this, c[1]);
  return escape.apply(this,c[1]);
};

var tcoptimizer = function (f) {
    var s = f.toString();
    var t = s.match(/function\s+\((.+?)\)\s+{\s+(.+)\?\s+(.+?)\((.+?)\)\s+:\s+([a-zA-Z_]+)/);
    var f_str = "var func_ = function (" + t[1] + ", k_) { " + t[2] + " ? func_.tail(" + t[4] + ", k_) : k_.tail(" + t[5] +");};";
    eval (f_str);
    return func_;
};

var id   = function (x) {return x;};
var sum  = function (n,acc) { return n > 0 ? sum(n-1,acc+n) : acc;};
//console.log(sum(10000,0));
console.log(tcoptimizer(sum).call_with_tco(10000,0,id));

firebugでfunctionで始まる文字列をevalしたらSyntaxエラーになったのでvarからevalしてある。これは謎だがとりあえず動くようになった。しかしid関数とcall_with_tcoメソッドがちょっとよろしくないのでラップしてみる。

var tcopt = function (f) {
    var id   = function (x) {return x;};
    var func_ = tcoptimizer(f);
    return function() {
    var slice = Array.prototype.slice;
    var args = slice.apply(arguments);
    args.push(id);
    return func_.call_with_tco(args);
    };
};

var sum  = function (n,acc) { return n > 0 ? sum(n-1,acc+n) : acc;};
//console.log(sum(10000,0));
var tco_sum = tcopt(sum);

console.log(tco_sum(100,0));

すると

TypeError: k_ is undefined

ってエラーが出るのだが理由がよくわからん。

k_ define error


静岡ではJava Script The Good Patsの読書会をしています。興味があれば気軽に参加を。

ProductName JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス
Douglas Crockford
オライリージャパン / 1890円 ( 2008-12-22 )


近所の本屋でコミックスを初めて買った

聖☆おにいさんだけどねー

ProductName 聖☆おにいさん(3) (モーニングKC)
中村 光
講談社 / 580円 ( 2009-03-23 )


ProductName 聖☆おにいさん(4) (モーニングKC)
中村 光
講談社 / 580円 ( 2009-10-23 )


あと、ビューティフルデータを立ち読みしててradioheadのビデオの解説してたので興味を持った。

もう、コレの話が出た時点で欲しいんだけど堪えた。

「個性派おもしろ野菜のつくり方」を読んだ

あんま流通にのらないけど自分で育てるのは楽しそうな野菜はないかなぁと思い読んでみた。見慣れない野菜なのでちょっとしたレシピが付いているのが良かった。

  • ルッコラ
  • 芽キャベツ
  • カリフラワーロマネスコ
  • ルバーブ
  • ツルムラサキ
  • パクチー
  • 紅芯大根

興味を引いたのはこんなもんだが、特にカリフラワーロマネスコは育ててみたい野菜としてのプライオリティが上がった。

romanesco

Words And Pictures / NU:TONE

聴きやすい曲が揃っている。

ProductName Words And Pictures
NU:TONE
HOSPITAL / 1700円 ( 2011-02-28 )


  • The First Time (Ft. Natalie Williams)
  • One (Ft. Sophie Paul)
  • Wild Life (NuTone Remix) (Unicorn Kid)
  • Shine In (feat. Natalie Williams)

がお気に入り

高揚感が気持よく、途中に入るシンセブリブリ攻撃で盛り上がる歌モノチューン。アンセム決定かな。

個人的には、アゲ気味よりはこういうベースラインが黙々と続くほうが好き。

WWW::Mechanize::FirefoxとWeb::Queryを組み合わせてみた

htmlをロードした後にgetJSONでJSON取ってくるようになっているので3秒ほど待たせてある。WWW::Mechanize::Firefoxの$mech->synchronize使えばいいのかなと思ったんだができなかったためにやっつけでsleepさせたのであとでちゃんと調べる。

use WWW::Mechanize::Firefox;
use Web::Query;
use Encode;

my $mech = WWW::Mechanize::Firefox->new();
$mech->get('http://blog.kzfmix.com/404');
sleep(3);
my $q = Web::Query->new_from_html($mech->content);
$q->find('.tags a')->each(sub {
                my $i = shift;
                printf "(%d) %s\n", $i+1, encode('utf-8', $_->text);
              });

で、タグの名前がリスト表示される

(1) AIR
(2) AMOP
(3) Android
...
(218) 電子工作
(219) 静岡
(220) 高山

そもそもここらへんから始まった話で、最初は他の言語にもmechanizeの実装あるからそれ使えばいいんじゃないのかなぁという助言で終わるかなと思っていたのだけど、対象のサイトのhtmlみたらjavascript使いまくって組み立てられていた。で、そういう場合にスクレイピングするにはどういう方法があるのか色々調べて勉強になったので個人的には満足だけど、あのおじさんにはできない仕事であることが判明した。ということはあの人達丸投げしてくんのかな?

というか丸投げする気が満々だったので、いちおうどういう目的でどういう事をやろうとしていて、どこら辺が技術的に難しいと考えてるのか資料にまとめて事前に送れば会議に出るか考えてやる、って返答しといたけど、絶対やらんと思うなぁ(昔からそうだったし)。

地方からの戯言

設計も実装もテストも行わないシステム部の社員が存在したり、

wwwwって笑い事じゃないなぁ。

「もっとわかる薬物速度論」を読んだ

7章が良い。体裁としては7章を説明するために6章まで割いて基本的なことから説明してるんだけど、結局7章の内容を少し読み進めては1-6章のどこかを読みなおすという、ちょっと読んでは復習と理解の確認のために前の章を探すというスタイルになってしまうので、これは非常に手間だ。

あとそういう読み方を想定している割には目次が貧弱な気がした。校正もうちょっと丁寧に入っていれば必読書なんだろうけど。

で、7章を丁寧に読めばある薬剤が、肝固有クリアランス律速で消失するのか、血流律速で消失するのか、薬物間相互作用を受けやすいのか、吸収の良し悪し、蓄積の懸念あたりに関して大雑把な手がかりを得られるようになる。

自分のフィールドはコンピュテーショナルケミストリー、ケモインフォマティクス、バイオインフォマティクスだけど、構造最適化プロジェクトに関わっていると、DMPKのデータを解釈して理想とするプロファイルとの不一致はどこから来ていて、それを解消するためには合成的にどういう方向に向かえばいいのかというあたりに深く関わらないといけない。QSPRとか言って物性があーだこうだとパラメータこねくり回すだけじゃなくて、もっとin vivoとin vitroの関係を捕まえたうえでQSPRとして合成方針にフィードバックしたいなぁと思っている。

そういうヒトも読んでおいて損はない。7章の最後に書いてありますが、非臨床だったらパラメータをモデル動物のそれに置き換えればどうように議論できるので。

ProductName もっとわかる薬物速度論
加藤 基浩
南山堂 / 1995円 ( 2010-10 )


  • AUC = A/α + B/β
  • fb増加するとKpも増大
  • 経口クリアランスとその理解