早朝。雨が降りそうだったけど、このチャンスを逃したらいけない気がしたので。
手に入れてベランダに置きっぱなしだったオクラの苗を植えた。今年は島オクラでなくて普通のオクラなので、収穫タイミングがシビアかも。
オクラを植え終わったタイミングで雨が降ってきたので、除草をせずに撤収。
茄子は商品サイズの二倍の大きさに成長していた。

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

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

早朝。雨が降りそうだったけど、このチャンスを逃したらいけない気がしたので。
手に入れてベランダに置きっぱなしだったオクラの苗を植えた。今年は島オクラでなくて普通のオクラなので、収穫タイミングがシビアかも。
オクラを植え終わったタイミングで雨が降ってきたので、除草をせずに撤収。
茄子は商品サイズの二倍の大きさに成長していた。

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

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

28062010 R
R CMD checkすると、ドキュメントの存在しない関数は警告がでるのだけど、パッケージ内部で使うための関数も引っかかってしまう。
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 }
こんな感じ
27062010 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
27062010 Haskell
昨日のHaskell読書会の行き帰りの電車の中で読もうかと思ったけど、そんな軽い本じゃなかった。
かなり濃いめな感じの本だ。
27062010 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]
という型になる。
7章で感じたのはfoldr,foldlがさくっと出てきて戸惑うのと、関数合成がさらっと流しすぎなとこ。foldl,foldrは知っているのが前提なのかな?と思った。
SICPの1,2章でも読んでおけば違うかも。
関数合成は他の本を読みましょう。
8章はちょっと難しいので、次回は予習して臨む。
26062010 music
Eminemも聴きます
seductionは良いですな。あと、Love The Way You Lie
25062010 work
オススメに入ってた。
アラーム機能は、wiiリモコンのバイブを使えばいいんじゃないかと。プレゼンテーションzenを読めばレーザーポインターの必要なスライドは作らんよね。
アマゾンはこういう組み合わせをすすめてこないな。
勉強会とかでオフィシャルハッシュタグがある場合に、「タグ付きのtweetがプレゼンしているスクリーンに出ればいいのに」と思ったりしたことはありませんか?
僕はあります。
なので、引数に任意の文字列を渡すとフィルタリングした結果をGrowlに通知するようなものを作ってみた。
$ python tw_stream.py "#worldcup"

参考にしたのは以下のサイト
コード
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!'
去年から育てていて大きくなったアシタバだったが、いまいち使い勝手が良くないので思いきって処分することにした。

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

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

[おまけ]ベランダでも家庭菜園を始めて、二十日大根の芽が出てきてた。
24062010 HTML5
HTML5ROCKSというサイトのプレゼンテーションを見ていて、オースゲー!ってなった。
で、スライドに
HTML5 ~= HTML + CSS + JS APIs
って書いてあったのでそんな感じの書籍を探してみた。
なか見検索によるとこれはマークアップ主体らしい
一方、こちらはレビューによるとW3Cのドラフトについて主にJavaScript部分を和訳したとのことなのでJSの内容らしいが、ちょっと辛口の評価が気になるので立ち読みしてから検討しよう。HTML5ROCKS読んでから。
残るは8月にでるらしい洋書
Beginning HTML5 and CSS3: Next Generation Web Standards洋書でも買ってみるかな。