2010年 08月 01日


良くないことを言ってる人に対し、「一言いってやりたい」から言及するみたいなのほんと良くないと思っていて、自分も多々そういうことはあれど「拡散すべき情報か?」を考えると、拡散したら害になることのほうが多く、ならば黙って無視したほうが良いということを思って何もしないのです。

これがもし影響力が高い人に対してであったなら、既に拡散された情報をある程度打ち消すような期待もでき、第三者に「反対意見もある」ということを知らせる良いフィードバックがあるかもと思うわけですが、本来目立つべきでないような、とるにたらないような人がいってることに対して拡散するようなことをすると、本来知らなくても良かったようなネガティブな情報を得ることで「こんな人もいるのか……」と過剰に行動が萎縮されたりするわけです。

あーーーーーーーーーーーーーーー

大学いってたときの記憶が蘇えってほんと嫌だ…… はやく終われ……

とりあえず京都に住んでてよかったなあ…… 東京に住んでたらまじで死んでる……

2010年 08月 02日



土曜日は伏見稲荷へ。なんとなく疲れていたのですぐ帰ってきて寝てた。

日曜日は石清水八幡宮、飛行神社へ。

石清水八幡宮は山にうえにあってケーブルでいったのだけれど、片道だけ買って降りるのは自力で降りればよかったとちょっと後悔した。ここには神職養成所があるらしく、宮司の方は神社本庁の総長と Wikipedia に書いてあった…… 境内にいろんなものあって面白い。ここの竹を使って電球を作ったらしく、エジソン記念碑とか、ベーデンパウエル (ボーイスカウトの創立者) っぽい像とか…… 実際、竹林も素晴しかった。けど、蚊がはんぱなくてつらかった。春が秋に行くべきだと思った。

飛行神社は不思議な神社で、本殿は普通の流造なのに、その前にギリシアの神殿みたいな形のもの (拝殿?) がある。あと鳥居がジュラルミン製らしい。現代っぽさが入ると宗教建築って一気にうさんくさくなる感じがあるけど、なんでだろう。京都府神社庁のリストに載ってないので神社本庁管轄ではなさそう。

2010年 08月 04日

昨年の夏から、リア充の文学的表現としてセミという言葉を使っているのだけれど、脳内置換をかけるのが少しずつ億劫になってきたのでブックマークレットを書いた

昔書いたスクリプトの置換部分を変えただけ

Twitterのリアルタイム検索とかで試すとおもしろい

文学的表現としてというのはもちろん嘘ですし、単に「リア充うざい」と言うと変に誤解してしまう人がいるためにこうせざるを得なくなったのが真実ですが今となってはどうでもいいです。

2010年 08月 06日



2007年9月22日に見た夢にでてきた女の子、いまだリアリティを保ってる

2010年 08月 07日

消費されない作品がある。いくら読んでも何も減らない。何度読んでも新しいことを発見できる。

「絵造り」でカメラを選ぶのってすごい変な感じがするんだけど、そういう発言は割とよく見る気がするし、記事もあるようなないような気がする。いまいちどういうことなのかわからない。オートホワイトバランスの傾向なのかな。レンズの傾向なのかな。前者はどうにでもなるので後者かな。

2010年 08月 08日


土曜日は鞍馬・貴船へ。なんか人が多くて落ち着かなかった。

2010年 08月 09日


頭上に緑があると安心する。

頭上に緑があると安心しすぎる。もっと群衆に紛れて撮らないといけない……

2010年 08月 10日

文乃さんが適度に映像作品になっていると、夜寝るとき困らないのになあと思いました

2010年 08月 11日

MBS の美の京都遺産の保津峡川下りの回で、この前行った大悲閣千光寺がでてきていた。

いつか何もかもを纏めて書ける日がきますように

またいろいろ書いたが下書き行きになった

割り込み耐性低い…… どうやって高めたらいいんだ

2010年 08月 12日

gerry++

2010年 08月 13日


環境光が明るいと日記書けないので、会社で日記書くのはむり。と会社でかく

2010年 08月 14日

zsh で C-r したときスペースを補完語として入力できないという状況を回避するバッドノウハウ

zsh で C-r しているとき、スペースを補完語に使いたくても、スペースを入力した瞬間に bck-i-search: を抜けて、コマンド先頭にスペースが挿入されてしまうという状態になっていた。望む希望としては、スペースを入力したら、スペースも補完語として挿入されてほしい。

これはどうやら、自分で bindkey " " magic-abbrev-expand-and-insert というように、スペースキーに対して独自定義の関数を定義しているとそうなってしまうらしい。

zle_hist.c によると、bck-i-search の間のキー入力はハードコードで分岐していて、既に決まっているものについて書きかえるしかない。

なんとなく magic-space を上書きしてやったら、望む挙動になった。

# abbr
typeset -A abbreviations
abbreviations=(
	"L"    "| \$PAGER"
	"G"    "| grep"

	"H"     "$HOME/project/Hatena-"

	"HE"    "lib/**/Engine/"
	"HM"    "lib/**/MoCo/"
	"HA"    "lib/**/App/"
	"HC"    "lib/**/Config.pm"

	"HEAD^"     "HEAD\\^"
	"HEAD^^"    "HEAD\\^\\^"
	"HEAD^^^"   "HEAD\\^\\^\\^"
	"HEAD^^^^"  "HEAD\\^\\^\\^\\^\\^"
	"HEAD^^^^^" "HEAD\\^\\^\\^\\^\\^"

	# typo
	"lkm"  "lm"
	"it"  "git"
	"gitp"  "git"

	"mysql" "mysql -unobody -pnobody -h"
)

magic-abbrev-expand () {
	local MATCH
	LBUFFER=${LBUFFER%%(#m)[-_a-zA-Z0-9^]#}
	LBUFFER+=${abbreviations[$MATCH]:-$MATCH}
}

# BK 
magic-space () {
	magic-abbrev-expand
	zle self-insert
}

magic-abbrev-expand-and-insert () {
	magic-abbrev-expand
	zle self-insert
}

magic-abbrev-expand-and-insert-complete () {
	magic-abbrev-expand
	zle self-insert
	zle expand-or-complete
}

magic-abbrev-expand-and-accept () {
	magic-abbrev-expand
	zle accept-line
}

magic-abbrev-expand-and-normal-complete () {
	magic-abbrev-expand
	zle expand-or-complete
}

no-magic-abbrev-expand () {
	LBUFFER+=' '
}

zle -N magic-abbrev-expand
zle -N magic-abbrev-expand-and-magic-space
zle -N magic-abbrev-expand-and-insert
zle -N magic-abbrev-expand-and-insert-complete
zle -N magic-abbrev-expand-and-normal-complete
zle -N magic-abbrev-expand-and-accept
zle -N no-magic-abbrev-expand
zle -N magic-space # BK
bindkey "\r"  magic-abbrev-expand-and-accept # M-x RET できなくなる
bindkey "^J"  accept-line # no magic
bindkey " "   magic-space # BK
bindkey "."   magic-abbrev-expand-and-insert
bindkey "^I"  magic-abbrev-expand-and-normal-complete
2010年 08月 15日




2010年 08月 16日



土曜日は植物園に。日曜日、橿原神宮に行こうと思っていたのに、起きたのが14:30ぐらいで遅すぎたのでやめた。変わりに、平安神宮、京都市立美術館、京都市立美術館別館にいった。毛筆で記名を求められて、普段鉛筆やペンさえ持たないのでかなりあせりつつ書いたら「筆遣いが~」と言われて嬉しい半分死にたくなった。別館のほうでは写真展を見た。一通りいくつか見たうえで、やっぱまともな組写真をやりたいなあと強く思った。

2010年 08月 17日

もともと自分は Ruby 厨であるが、最近 Ruby は書き捨てのプログラムを書くのために使うにすぎず、ウェブアプリの言語としては Scala に注目しており、環境としては Perl を最も高い頻度で利用している。ねじれている。

Ruby はそれでも直感的にアルゴリズムに記述するのに最も優れていると感じていて、Google Developer Days の DevQuiz も、なんとなしに Ruby で書きはじめたりした。その他それなりに安定して中規模のアプリケーションを書くには Perl が最も安心できて、素直で自由に書けると感じている。とはいえ Perl は自由すぎるし、実行時まで何もかもが解らなくて、それなりに大きく継続運用するアプリケーションを書くときに不安があり、Scala に強い興味を持っているが、Scala を使う機会があんまりなかったり、環境整備がいまいちなのであんまり積極的に使っていない。ねじれている。

git-branch-recent の高速化

.git/refs 以下の mtime を見ることで高速化をした。clone 直後はもしかするとズレたりするかもしれないので heavy バージョンも -s をつけることで実行できるようにした。

#!/usr/bin/env ruby -Ku

require 'pathname'
require "optparse"

class GitRecentCommand
	Ref = Struct.new(:hash, :name, :time, :rtime, :author, :subject)

	def dot_git
		@dot_git ||= Pathname.new(`git rev-parse --git-dir`.chomp)
	end

	def self.run(argv)
		self.new.option(argv).run
	end

	def initialize(opts={})
		@opts = {
			:strict  => false,
			:max_num => 20,
		}.update(opts)
	end

	def option(argv)
		opts = @opts
		argv = argv.dup
		OptionParser.new do |parser|
			parser.instance_eval do
				self.banner = <<-EOB.gsub(/^\t+/, "")
					Usage: #{$0} [opts]

				EOB

				separator ""

				separator "Options:"
				on("-s", "--strict", "Running on strict mode (very heavy)") do |foreground|
					opts[:strict] = true
				end

				on("-n", "--number NUMBER", "Number branch to show") do |num|
					opts[:max_num] = num.to_i
				end

				parse!(argv)
			end
		end
		self
	end

	def run
		details = @opts[:strict] ? recent_branches_strict : recent_branches_fast
		details = details.sort_by {|ref| ref.time }.last(@opts[:max_num])

		remote_master = nil
		rtime_width = name_width = author_width = 0
		details.each do |ref|
			name_width    = ref.name.size   if ref.name.size   > name_width
			author_width  = ref.author.size if ref.author.size > author_width
			rtime_width   = ref.rtime.size  if ref.rtime.size  > rtime_width
			remote_master = ref.hash        if ref.name == 'origin/master'
		end

		details.each {|ref|
			ref.instance_eval {
				out = "\e[32m% -#{name_width}s\e[39m % #{rtime_width}s %s \e[31m% -#{author_width}s\e[39m %s" % [
					name,
					rtime,
					hash[/^.{7}/],
					author,
					subject
				]
				puts (hash == remote_master) ? "\e[7m#{out}\e[0m" : out
			}
		}
	end

	# search recent branches by file mtimes
	def recent_branches_fast
		refs = []
		refs.concat Pathname.glob(dot_git + 'refs/heads/**/*')
		refs.concat Pathname.glob(dot_git + 'refs/remotes/**/*')

		branches = refs.reject {|r| r.directory? }.sort_by {|r| r.mtime }.last(@opts[:max_num]).map {|r|
			ref = r.read.chomp
			if name = ref[/ref: (.+)/, 1]
				(dot_git + name).read.chomp
			else
				ref
			end
		}
		retrieve_branch_details(branches)
	end

	# search recent branches by retrieving whole branch information
	def recent_branches_strict
		branches = `git branch -a`.gsub!(/^\*?\s+|\(no branch\)\s*/, "").split(/\n/).map {|i|
			i.split(/ -> /)[0]
		}
		retrieve_branch_details(branches)
	end

	# retrieve branch details information from branch names
	def retrieve_branch_details(branches)
		details = []
		IO.popen("-", "r+") do |io|
			if io.nil?
				args = [ "show", "--pretty=format:%H\t%d\t%ct\t%cr\t%an\t%s", *branches ]
				args << "--"
				exec "git", *args
			else
				while l = io.gets
					next unless l =~ /^[a-z0-9]{40}/
					hash, refs, time, rtime, author, subject = * l.chomp.split(/\t/)
					refs.gsub!(/^\s*\(|\)\s*$/, '')

					refs.split(/\s*,\s*/).each do |ref|
						is_remote = ref[%r{refs/remotes}]
						ref.gsub!(%r{refs/(remotes|heads)/}, '')
						details.push Ref.new(hash, ref, time.to_i, rtime, author, subject)
					end
				end
			end
		end
		details
	end
end

GitRecentCommand.run(ARGV)
2010年 08月 18日


gerry++

2010年 08月 19日

gerry++

2010年 08月 20日





gerry++

2010年 08月 22日

金曜日、帰宅後すぐに寝てしまい、夜中の2時ごろ起きてしまった。その後寝付けず、朝までぼーっとしたあと、土曜日午前中は橿原神宮へ。かなり遠かった。思ったより広くて、規模的には明治神宮みたいな感じだった。人が少ないので落ち着いていてよかった。神宮はどこも構造的にそうなのか、本殿は直接見えなかった。平安神宮・近江神宮・明治神宮はどこも似たような感じがする。初代天皇の神宮にしては創建が明治で120年ぐらいしか経ってなく、そんなに古くない。橿原神宮 (1890)→明治神宮 (1920)→近江神宮 (1940) と創建されてて、そんなに間があいてるわけじゃないぽい。

2010年 08月 23日


2年前に嵐山を歩いたとき、適当に歩いていたらついた場所があって、そこが印象に残っていたので、記憶を頼りにいってきた。事前に Google Map であたりをつけていったのだけれど、ストリートビューが大変役に立った。

どこだったか行ってみるまでわからなかったけど、嵯峨天皇の皇后の陵だった。地名がわからなかったので地形をみてさがした。参道までの道も、参道も雰囲気が良い。山の中にある陵はどっかにワープできそう (と2年前も思ったの) だった。

陵 (天皇の墓) は積極的に行こうとは思わないけれども、京都だとそこら中にあるので割と目につく。大抵、石造りの神明鳥居と白砂利だけなのでなんか不思議な感じがする。

2010年 08月 24日

gerry++

2010年 08月 25日


古代人ですら理解、実感していた、人間は自然のもので、人間の造るものもまた自然のものであるということを、我々は忘れているのだ。大きな驕りである。

gerry++

2010年 08月 28日


2010年 08月 30日




土曜日は植物園、太田神社、上賀茂神社にいったあと、鞄屋巡りで三条・新京極あたりをうろうろした。creareきき 桔梗商店 などなど。

結局、今まで使っていたのよりもひとまわり大きいのを買った。生地が薄くてちょっと不安な感じだけどしばらくつかってみる。ボストンバックみたいな見掛けだけどショルダーの帯がある。

日曜日は、二条城にいったことがないと思ったのでいってきた。「あんまり面白くなさそうだなー」と思っていたので行かなかったのだけれど、行ってみたら実際あんまり面白くなかった。大政奉還の舞台というのは興味深いけれど、それだけだった。京都御苑歩くほうが楽しい (し、コストかからない)。

あと、なんとなく記憶の中にあった「二条城」というのがあって、だだっぴろい白砂利の中に、あんまり高くない建物がたっている場所なのだけれど、その記憶は「二条城」ではないことがわかった。じゃあどこなんだろう…… 修学旅行か何かでいった覚えがあるので、日光か、奈良か、京都だと思うのだけれど、よくわからない……

2010年 08月 31日