今日の畑(100629)

早朝。雨が降りそうだったけど、このチャンスを逃したらいけない気がしたので。

手に入れてベランダに置きっぱなしだったオクラの苗を植えた。今年は島オクラでなくて普通のオクラなので、収穫タイミングがシビアかも。

オクラを植え終わったタイミングで雨が降ってきたので、除草をせずに撤収。

茄子は商品サイズの二倍の大きさに成長していた。

1277813338

甘長美人とインゲンは結構取れた。雨が降ったのでインゲンの収穫は途中でやめてしまった。

1277813344

ミニトマトも色々採れだしてきた。

1277813350

Rのパッケージの internalな関数の文書化

R CMD checkすると、ドキュメントの存在しない関数は警告がでるのだけど、パッケージ内部で使うための関数も引っかかってしまう。

1.1.3 Package subdirectories

if a package pkg contains user-level objects which are for “internal” use only, it should provide a file pkg-internal.Rd which documents all such objects, and clearly states that these are not meant to be called by the user.

gridのRdを読めと書いてあったので読んでみる(R-2.11.0/src/library/grid/man/grid-internal.Rd)。

\name{grid-internal}

\alias{grid.legend}
\alias{grid.multipanel}
\alias{grid.panel}
\alias{grid.strip}
\alias{is.unit}
\alias{layoutRegion}
\alias{viewport.layout}
\alias{viewport.transform}
\alias{layout.heights}
\alias{layout.widths}
\alias{layout.torture}

\title{Internal Grid Functions}
\description{
  Internal Grid functions
}
\details{
  These are not to be called by the user (or in some cases are just
  waiting for proper documentation to be written :).
}
\keyword{ internal }

こんな感じ

Rのパッケージを作る

先週はR版のpit(Config::Pit)をつくっていて、昨日今日でパッケージ化してみたので感じたことのメモ。

パッケージのスケルトンの作成はpackage.skeletonで行える。その際にRdフォーマットというTeXっぽい文書の雛形が作成される。パッケージのインストールはR CMD INSTALLで行うが、その際にドキュメントがちゃんと存在するかチェックされる。Rdフォーマットは R CMD Rd2dviでdviに出力できて、これはさらにpdfに容易に変換できる。Rのpdfがちゃんとしているのはそのため。

Rのドキュメントの充実度の秘密はこのあたりにあるのかと思った。Rはドキュメントのキチンと書かれていることに慣れきっていて、もしドキュメントがいい加減な(ましてや、Exampleのない)パッケージは使うときに相当イライラしますからな。

あと、R CMD checkすると、ドキュメントの存在しない関数は警告がでる。

* checking for missing documentation entries ... WARNING
Undocumented code objects:
  pit_config pit_dir pit_profile_file pit.config pit.load
All user-level objects in a package should have documentation entries.
See the chapter 'Writing R documentation files' in manual 'Writing R

ProductName Rの基礎とプログラミング技法
U.リゲス
シュプリンガー・ジャパン(株) / ¥ 3,675 ()
在庫あり。

「関数プログラミングの楽しみ」が届いた

昨日のHaskell読書会の行き帰りの電車の中で読もうかと思ったけど、そんな軽い本じゃなかった。

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

オーム社 / 4410円 ( 2010-06-23 )


かなり濃いめな感じの本だ。

  • 第1章 二分ヒープ木の楽しみ
  • 第2章 仕様に基づくテスト ??? QuickCheckを使って
  • 第3章 おりがみプログラミング
  • 第4章 Haskellで音楽を記述し解釈する
  • 第5章 融合変換を自動化する
  • 第6章 金融取引契約の書き方
  • 第7章 関数画像
  • 第8章 Lava:関数によるハードウェア記述
  • 第9章 論理プログラミングのためのコンビネータ
  • 第10章 アローと計算
  • 第11章 もっと整ったプリティプリンタ
  • 第12章 ファントム型を楽しむ

第六回Haskell読書会

昨日は第六回Haskell読書会に行ってきた。参加された皆様お疲れ様でした。

演習問題7.5

sumsqreven compose [sum,map (^2),filter even]が間違っている理由を述べよ

という問題で

compose :: [a -> a] -> (a -> a)
compose = foldr (.) id

composeはa -> aという型の関数のリストを引数として取る。

ここで

Prelude> :t (map (^2))
(map (^2)) :: (Num a) => [a] -> [a]
Prelude> :t (filter even)
(filter even) :: (Integral a) => [a] -> [a]
Prelude> :t sum
sum :: (Num a) => [a] -> a

となりsumだけ [a] -> aという型なのでダメ。

sumがなければOKで、これは

:t compose [(map (^2)),(filter even)]
compose [(map (^2)),(filter even)] :: (Integral a) => [a] -> [a]

という型になる。

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

7章で感じたのはfoldr,foldlがさくっと出てきて戸惑うのと、関数合成がさらっと流しすぎなとこ。foldl,foldrは知っているのが前提なのかな?と思った。

SICPの1,2章でも読んでおけば違うかも。

ProductName 計算機プログラムの構造と解釈
ジェラルド・ジェイ サスマン,ジュリー サスマン,ハロルド エイブルソン
ピアソンエデュケーション / ¥ 4,830 ()
在庫あり。

関数合成は他の本を読みましょう。

8章はちょっと難しいので、次回は予習して臨む。

Recovery / Eminem

Eminemも聴きます

ProductName Recovery
Eminem
Aftermath / ¥ 1,347 (2010-06-21)
在庫あり。

seductionは良いですな。あと、Love The Way You Lie

アラーム機能

オススメに入ってた。

ProductName ロジクール プロフェッショナル プレゼンター R800 R800

ロジクール / ¥ 9,980 (2009-10-30)
在庫あり。

アラーム機能は、wiiリモコンのバイブを使えばいいんじゃないかと。プレゼンテーションzenを読めばレーザーポインターの必要なスライドは作らんよね。

ProductName プレゼンテーション Zen
Garr Reynolds,ガー・レイノルズ
ピアソンエデュケーション / ¥ 2,415 ()
在庫あり。

ProductName Wiiリモコン(アオ)(「Wiiリモコンジャケット」同梱)

任天堂 / ¥ 3,800 (2009-12-03)
在庫あり。

アマゾンはこういう組み合わせをすすめてこないな。

Twitter Streaming APIをtweepyでGrowlに通知する

勉強会とかでオフィシャルハッシュタグがある場合に、「タグ付きのtweetがプレゼンしているスクリーンに出ればいいのに」と思ったりしたことはありませんか?

僕はあります。

なので、引数に任意の文字列を渡すとフィルタリングした結果をGrowlに通知するようなものを作ってみた。

$ python tw_stream.py "#worldcup"

twitter growl

参考にしたのは以下のサイト

コード

import sys,os
import tweepy
import Growl
import simplejson
import urllib2
import hashlib
from pit import Pit

class StreamListener(tweepy.StreamListener):
    def __init__(self):
        self.g = Growl.GrowlNotifier(applicationName='TwitterWatcher', notifications=['Watch'])
        self.g.register()
        self.image_dir = os.path.join(os.path.expanduser('~'),".tw_growl")

        if not os.path.exists(self.image_dir):
            os.makedirs(self.image_dir)

    def get_icon(self,url):
        fname = "%s.%s" % (hashlib.md5(url).hexdigest(),url.split('.')[-1])
        cached_image = os.path.join(self.image_dir,fname)
        image = None
        if os.path.exists(cached_image):
            image = Growl.Image.imageFromPath(cached_image)
        else:
            f = open(cached_image,'wb')
            f.write(urllib2.urlopen(url).read())
            f.close()
            image = Growl.Image.imageFromPath(cached_image)
        return image

    def on_data(self, data):
        data = simplejson.loads(data)
        image = self.get_icon(data['user']['profile_image_url'])
        self.g.notify(
            noteType='Watch', 
            title=data['user']['screen_name'], 
            description=data['text'], 
            icon=image,
            #description=image,
            sticky=False)

def main():
    conf   = Pit.get('twitter.com')
    user   = conf['username']
    passwd = conf['password']

    stream = tweepy.Stream(user, passwd, StreamListener())
    stream.filter(track=[sys.argv[1]])

if __name__ == "__main__":
    try:
        main()
    except KeyboardInterrupt:
        print '\nGoodbye!'

明日葉を処分した(今日の畑)

去年から育てていて大きくなったアシタバだったが、いまいち使い勝手が良くないので思いきって処分することにした。

1277412176 1277412171

綺麗さっぱり。肥料を投入して来週末くらいに島オクラかモロヘイヤかそこら辺を植えるかな。

1277412169 1277412174

収穫したもの。茄子はコンスタントに採れてる。トマトはもう少し赤くならないと青臭い。

1277412166

[おまけ]ベランダでも家庭菜園を始めて、二十日大根の芽が出てきてた。

ProductName はじめての野菜づくり12か月
板木 利隆
家の光協会 / ¥ 2,100 ()
在庫あり。

HTML5

HTML5ROCKSというサイトのプレゼンテーションを見ていて、オースゲー!ってなった。

で、スライド

HTML5 ~= HTML  + CSS  + JS APIs

って書いてあったのでそんな感じの書籍を探してみた。

なか見検索によるとこれはマークアップ主体らしい

ProductName 徹底解説HTML5マークアップガイドブック
羽田野太巳
秀和システム / ¥ 3,150 ()
在庫あり。

一方、こちらはレビューによるとW3Cのドラフトについて主にJavaScript部分を和訳したとのことなのでJSの内容らしいが、ちょっと辛口の評価が気になるので立ち読みしてから検討しよう。HTML5ROCKS読んでから。

ProductName HTML5&API入門
白石 俊平
日経BP社 / ¥ 2,940 ()
在庫あり。

残るは8月にでるらしい洋書

ProductName Beginning HTML5 and CSS3: Next Generation Web Standards
Christopher Murphy,Richard Clark,Oli Studholme
Apress / ¥ 3,852 ()
近日発売 予約可

  • Cutting-edge web development techniques with HTML5 and CSS3
  • The new features of HTML5 and how to work with HTML5 and CSS3
  • The new web standards being implemented by all the major web browsers
  • How to work with the new HTML5 structural sections
  • How to create HTML5 and CSS3 layouts
  • How to create transitions and animations without using Flash
  • New web typography solutions
  • A new vision of web development with HTML5 and CSS3

洋書でも買ってみるかな。