山水閣でお食事

先々週は急遽祖母の米寿祝いをやることになり、帰省。山水閣でお食事会

1283252180

ゴールデンウィークで見た時よりも弱ってた。足悪くすると一気に老けるね。

先付け。鮎の干物、ミョウガの寿司。造り(魚(忘れた)と牛肉)

1283252174 1283252192

チーズ入りの茶碗蒸し、絶品。イワナの塩焼き

1283252162 1283252156

しゃぶしゃぶ

1283252186

ご飯

1283252198

昼の食事会は運転手で飲めなかったので、帰りに月井酒店で大那の純吟のひやおろしと澤姫買ってホテルでぐびぐびやった。

1283252168

最大回避ヒープ

最大回避ヒープ。この章ではjoinの仕方を色々工夫する。他にラウンドロビンヒープとかねじれヒープなどがある。

data Ord a => Tree a = Null | Fork Int a (Tree a) (Tree a) deriving (Show)

isEmpty :: Ord a => Tree a -> Bool
isEmpty Null = True
isEmpty (Fork n x a b) = False

minElem :: Ord a => Tree a -> a
minElem (Fork n x a b) = x

deleteMin :: Ord a => Tree a -> Tree a
deleteMin (Fork n x a b) = merge a b

insert :: Ord a => a -> Tree a -> Tree a
insert x a = merge (Fork 1 x Null Null) a

merge :: Ord a => Tree a -> Tree a -> Tree a
merge a Null = a
merge Null b = b
merge a b
          | minElem a <= minElem b = join a b
          | otherwise              = join b a

join (Fork n x a b) c = Fork (n + size c) x aa (merge bb cc)
                        where (aa,bb,cc) = orderBySize a b c

orderBySize a b c
            | size a == biggest = (a,b,c)
            | size b == biggest = (b,a,c)
            | size c == biggest = (c,a,b)
    where
      biggest = size a `max` size b `max` size c

size Null = 0
size (Fork n x a b) = n

ProductName 関数プログラミングの楽しみ

オーム社 / ¥ 4,410 ()
在庫あり。

いきなり最初の章から面白い。

*Main> insert 5 $ insert 4 $ insert 3 $ insert 2 $ insert 1 Null Fork 5 1 (Fork 2 3 (Fork 1 4 Null Null) Null) (Fork 2 2 (Fork 1 5 Null Null) Null)

Senior / Royksopp

予約したもの

ProductName Senior
Royksopp
Wall of Sound / ¥ 1,809 (2010-09-13)
近日発売 予約可

ProductName AR三兄弟の企画書
川田十夢
日経BP社 / ¥ 1,470 ()
在庫あり。

ProductName そこまで言うか!
勝間 和代;堀江 貴文;西村 博之
青志社 / ¥ 1,575 ()
近日発売 予約可

ProductName メタプログラミングRuby
Paolo Perrotta
アスキー・メディアワークス / ¥ 2,940 ()
近日発売 予約可

「スマートグリッド革命」を読んだ

スマートグリッドってのは今の電力網に毛が生えたようなもんかなと思ってたけど、全然違った。今後電力は再生可能エネルギーの割合が増えていって、プロシューマーという生産者と消費者が一緒になったような状態(ネットでいえばP2Pみたいにサーバー的なものがない感じか)での電力を有効に機能させる仕組みみたいなものなのね。となるとIPv6が前提か。

ProductName スマートグリッド革命――エネルギー・ウェブの時代
加藤 敏春
エヌティティ出版 / ¥ 1,995 ()
在庫あり。

文章が硬くて読みにくかったけど、一通り読めた(普通の内容だったら飽きるけど)

  • 供給が一方的に需要に合わせるという従来の電力ネットワークの考え方は受給双方に負担を強いる
  • ユーエネルギー
  • ピークオイルの近未来での到達
  • エコポイントは、利子を生まないので保有メリットがないうえに、有効期限がある
  • メトカーフの「エナーネット」
  • 電気自動車は破壊的イノベーション
  • スマイルカーブ現象
  • グーグルパワーメーター
  • Hohm
  • テスラ・モーターズ

電力をうまく貯めるために、バッファとしての電気自動車の電池は有効。本書では太陽光発電ばかりが取り上げられていたが、屋根とか庭に風車があるとかもいいんじゃないか。

あと知りたいのはスマートグリッドとコンパクトシティ構想は補完すんのか?とかそういうあたり。

これも読めばいいのかな。

ProductName グーグルのグリーン戦略=グリーン・ニューディールからスマートグリッドまで=
新井 宏征〔(株)情報通信総合研究所〕
インプレスR&D / ¥ 1,785 ()
在庫あり。

「関数プログラミングの楽しみ」を読み始めた

プログラミングHaskell 9章の練習問題やってないとかいいつつなぜか関数プログラミングの楽しみが手元にあるのであった。

ProductName 関数プログラミングの楽しみ

オーム社 / ¥ 4,410 ()
在庫あり。

プログラミングHaskell 9章

明後日のHaskell読書会は9章なんだけど、練習問題やってない。

堕落だ。

ProductName プログラミングHaskell
Graham Hutton
オーム社 / ¥ 2,940 ()
在庫あり。

あと、浜松の遠さに驚いた。というか浜松なめてた。八百徳いけるか?

Sphinxで日本語pdfをつくる

rst2pdf で reStructuredText から PDF を生成するで日本語pdfが生成できるようになってもSphinxでは

[ERROR] pdfbuilder.py:120 BuildEnvironment instance has no attribute 'modules'
....
if self.config.pdf_use_modindex and self.env.modules:
AttributeError: BuildEnvironment instance has no attribute 'modules'
FAILED

とかいうエラーが出る(Sphinx1.02,1.03 + rst2pdf-0.15)

この場合にはrst2pdfの新しい版をsvnでインストール(0.16.dev-r2311をいれた)

あとはSphinxで日本語PDFを生成するの通りにやればうまくいく

ProductName エキスパートPythonプログラミング
Tarek Ziade
アスキー・メディアワークス / ¥ 3,780 ()
在庫あり。

中身は全然進んでないのに、出力だけは色々できるようになった ;-)

Flaskでprocessing.jsを使う

staticディレクトリにprocessing.jsを置いて

from flask import Flask

app = Flask(__name__)

@app.route("/")
def processing():
    response = """
<html>
<head>
<title>Processing Sample</title>
<style  type="text/css">
body {margin:0; padding:0;}
</style>
<script type="text/javascript" src="static/processing-0.9.7.js"></script>
<script type="text/javascript">
window.onload = function() {
  var canvas = document.getElementsByTagName('canvas')[0];
  var codeElm = document.getElementById('processing-code');
  var code = codeElm.textContent || codeElm.innerText;
  Processing(canvas, code);
};
</script>
<script id="processing-code" type="application/processing">
void setup()
{
  size(window.innerWidth, window.innerHeight);
  background(102);
  smooth();
}

void draw() {
if (mousePressed == true) {
    variableEllipse(mouseX, mouseY, pmouseX, pmouseY);
    }
}

void variableEllipse(int x, int y, int px, int py)
{
  float speed = abs(x-px) + abs(y-py);
  stroke(speed);
  fill(random(0,255),random(0,255),random(0,255))
  ellipse(x, y, speed, speed);

}
</script>
</head>
<body>
<div>
<canvas width="400" height="400"></canvas>
</div>
</body>
"""
    return response

if __name__ == "__main__":
    app.run()

processing.js

参考

ProductName Built with Processing[Ver. 1.x対応版] -デザイン/アートのためのプログラミング入門
田中 孝太郎,前川 峻志
ビー・エヌ・エヌ新社 / ¥ 2,940 ()
在庫あり。

Visualizing Data chapter 7 (TreeMap)

processingを使ってデータの視覚化をするための基礎的な本。なのでprocessingでアート的なことをやる本とはちょっと違うかも。

ProductName Visualizing Data
Ben Fry
Oreilly & Associates Inc / ¥ 3,852 ()
在庫あり。

スキャッタープロットとかネットワークを題材に「より効率的にデータを表現する」ということを考えていく。僕は、データとヒトの目という中途半端なデバイスをうまくつなげるミドルウェアのようなものはどういうものが良いのかということを考えていくための教科書的なものと位置づけて読んでる。

7章はズームして掘っていけるようなTreeMapを実装する。TreeMapならMatplotlibでももちろんできるけど、インタラクテイブ性をもたすならProcessingがいいかも。 あとこの本はコードの断片の説明というかたちが多いので別途サンプルコードをダウンロードしながら読む必要がある。 僕はjavaとprocessingがまだ拙いので、単に写経していくだけでは動かず、悩むことが多かったため、なかなか読み進められていないが、良書の予感はする(びしびしと)。