2007年 06月 01日

素敵なこととはなにか

女性アーティストが青春くさくない

なんでだろう。不思議だ。もっとこう、恋愛がどうとか言わないで、それ以前について考えてるのがほしい。
バーガーの女性版があるといいのになぁ。


GO!GO!7188 のドタキャンはそれっぽい、けど 557188 は全体的にちょっと違うしなぁ……

2007年 06月 02日

video upload memo

aviutil は最新をつかってはいけない。VP62 との組み合わせだとなぜか音ズレが確実にでる……
flv 変換するための ffmpeg はできるだけ新しいのを使おう。

批判

おおいなぁ。具体的な「もっとこうしたらいいよね」は普通に言えるけど、「これじゃだめ」「とにかくだめ」は、できる人が、手本を見せるときに (うまく言葉で説明できないときに) つかう言葉だと思う。単体で、それだけで使われるものじゃない気がする。よく考えよう……


なんか言うまえに、なんか作ったほうがいいよなぁ……滅多にでてこないアイデアから

2007年 06月 03日

ART-SCHOOL

なんか嫌われすぎでわろたよ。MISS WORLD すごい好きなのになぁ。でもわかんないでもなかったりするする。

2007年 06月 02日

Proxy Desktop

が終了できないとか言われて、あからさまにあやしい名前のプログラムだなぁと思った。(フォルダを別プロセスで開くようにしておくと、explorer.exe がたちあがりまくっておかしくなることがあるみたい (XP SP2))

2007年 06月 03日

法律は

法律は、みんなの同意がないと、意味がない。少なくとも「法は守らないといけない」がないといけない。
立法がおかしすぎて、「そんな法律なら守らなくていいや」ってなってしまうのが、一番危険なのに

ピッチコントロール

ピッチあげて男性ヴォーカルを女性化するみたいなのがはやってるっぽい。foobar2000 に DSP いれて聴いてみてるけどおもしろいなぁ。

http://acropolis.lokalen.org/2006/10/foobar2000/my-foobar2000-components

foo_dsp_touch と libmmd.dll +2-3 ぐらい? 耳わるくて音のたかさよくわかんない


スピッツがやたら違和感がないけど、メレンゲはちょっと中島みゆきっぽくてこわくなってしまう。ストレイテナーが意外にいける。

2007年 06月 04日

かがみ

鏡で自分の顔見たらゲシュタルト崩壊したのか「誰こいつ?」と素で思った。

現実逃避

はぁやばいわ。もうすこしで学校がはじまるというかレポートだしてないのを今きづいた……

rc

どこまでコマンドの機能にするか (rails みたいに初期化だけ)
どこまで rake のタスクにするか
rake/gem に依存していいのか
インストーラへの適用はどうするか
よんでないソースがおおい

2007年 06月 05日

あしあと

はてダに足跡があったら、とてもこまるね

2007年 06月 06日

yume

夢が楽しすぎて、ずっと寝てた。学校いきたくない……ずっと寝ていたい。

AF

50mm/1.4 のAFがなんかかなりズレるなぁ……こんなもんだっけなぁ。AFにたよるとボケまくっちゃう。うーん

2007年 06月 07日

レポート

レポートを書いているときは、なんかすごく嫌なことを考えていると思う。「まあこんなものでいいだろう」みたいな。

ウェブサイト作成とかだと「こんなもの」の基準が少し違う。どうしてもやらないといけないことが課題と別にある。

レポートを書いて、それが既存の知識とか応用にリンクしない。だからつまらない。

ユングのアレみたいな考えかただと、自分たちは既に繋がりあっているはずだけれど、そういう無意識方向に掘り下げていくのではなく、自分たちが作りだしたもの(例えばインターネット)を使って高レベルに繋がろうとしているのは、なんだか無駄な気がして面白い。

.pbxproj いぢり

ファイルの追加を適当にやってみたけどこれでいいのか謎すぎる。オブジェクトに id がついているけど、Xcode がどうやってあれを求めているのかわからないので SHA1 ハッシュとって最初の24文字を使うようにしてみたけど、なんだかなぁ。どっかにフォーマットのリファレンスがあるかなぁと思ってぐぐっていたけれど、ないっぽい。

require "digest/sha1"
require "osx/cocoa"
include OSX

class XcodeProject

	class Group
		def initialize(proj, id)
			@proj, @dic = proj, proj[id]
		end

		def [](key)
			@dic[key]
		end

		def inspect
			"#<Group #{self["name"]}>"
		end

		def add_file(type, path, tree)
			id = Digest::SHA1.hexdigest(path)[0, 24].upcase
			@proj.plist["objects"][id] = NSDictionary.alloc.initWithDictionary({
				"isa" => "PBXFileReference",
				"lastKnownFileType" => type,
				"path" => path,
				"sourceTree" => tree,
			})
			@dic["children"] = NSArray.alloc.initWithArray(@dic["children"].to_a << id)
		end
	end

	attr_accessor :objects
	attr_reader :rootObject, :plist


	def initialize(bundle_path)
		@plist_path = "#{bundle_path}/project.pbxproj"
		@plist = NSPropertyListSerialization.objc_send(
			:propertyListFromData, NSData.alloc.initWithContentsOfFile(@plist_path),
			:mutabilityOption, NSPropertyListMutableContainersAndLeaves,
			:format, nil,
			:errorDescription, nil
		)

		@objects = @plist["objects"]
		@rootObject = self[@plist["rootObject"]]
	end

	def [](obj_id)
		@objects[obj_id.to_s]
	end

	def groups
		mainGroup = self[@rootObject["mainGroup"]]
		Hash[*mainGroup["children"].map {|i|
			g = Group.new(self, i)
			[g["name"].to_s, g]
		}.select {|i| i[1]["isa"].to_s == "PBXGroup"}.flatten]
	end

	def save
		File.open(@plist_path, "w") do |f|
			f.puts @plist
		end
	end
end

proj = XcodeProject.new("testcocoa.xcodeproj")
p proj.groups
proj.groups["Classes"].add_file("text.script.ruby", "path.rb", "<group>")
proj.save

なんかコードかくより

コード自体を書くより、どうコード書くかで悩んでる時間のほうが圧倒的に多い……
がんがん書きたいのになぁ。どうしたらいいんだろう。経験するしかないのかなぁ (デザパタはこういうのを埋めるのにいい感じだけど、どのデザパタ使うかでさらに悩む)
拡張性とか、他の要素とかを頭悪いくせに最初から考えるのがダメなんだろうけど、むずい。

2007年 06月 08日

  • サボッター
  • ヤボッター

学校がつまらないと、書きたいことが多くなる。良いことだろうか。良いことだということにしよう。つまらないことも役に立つことがあるんだろう。それでも、できるだけ、つまらないことはやらないで生きなければならない。

今だに、

表現

表現を考えるのを忘れてたようだ。だめだめだなぁ。
綺麗なものを忘れている気がする。心を穏やかに、日々の善行を考えよう。日々の善行って、意識して実践したことないやそういえば

2007年 06月 07日

Xcode template

erb 変換するより既存のテンプレートつかえよとかいうアレなので Xcode のテンプレ変換を Ruby で書きなおししようと思っていくらか書いてみたけれど、テンプレートのリネーム規則が wkwkrn 状態でこまる……あと IDENTIFIER の変換規則がわからないのでスペースをアンスコにするだけとかアレなことを

そういえば Xcode を AppleScript から操作できるみたいで、これでファイルの追加とかもできそうな予感だけれど、どうなんだろう…… AppleScript が書けない……

rbosa で書けそうな感じではあったけれど、どうやってファイルを追加したらいいかわからなかった。むずい。plist 読みかきしたほうがはやいなぁ (コーディングも、実行速度も)
plist 直は互換性で将来まずそうだけど……

2007年 06月 08日

論理学

論理学の講義がいまだに記号の説明だったので寝てしまったのだけれど、途中でおきると、小さい音でらきすたのアレが聞こえてきて、後ろのヲタっぽい人たちがニヤニヤしているのを見た。PC の音量を確認したけどミュートになっていたし、ヘッドフォンも頭につけない限りミュートになっているので俺じゃないはずだ。


とかやってまた寝たりしたのだけれど、どうやら講義がおわってみると、それは夢だったらしかった。その講義でおれはそもそもPCを開いていなかったし、後ろの席にすわっていた人たちは別にヲタじゃなかった。さらに、おきる直前に黒板を見たときは、小さな文字でいろいろごちゃごちゃと書いていたのに、起きたあとに黒板をみてみると、文字が大きく、みやすかった。そういえばあの先生はわりと読みやすくかくよなぁと思ったので、起きる直前に見た黒板も夢だったらしい。夢と現実が混ざりすぎて混乱した。

ib_action

ib_action :buttonPressed { |sender| ... }

とか書けたんだ……

2007年 06月 10日

ペヤングソースやきそば

スパイスとふりかけが入ったふくろがあるけど、キザキザのはいっている位置が違うことがある。いっきに二つともあけられる方向のほうがアタリだと思う。

obj.to_plist, OSX.load_plist

こんなのあったんだ……

rubycocoa

できてるところまでチェックイン。インデントの設定とかを完全に忘れてた。2スペースインデントらしいのでそっちの流儀にあわせた (スペースインデントすることよりも、全体で統一されていないことのほうがまずい) newcocoa と rb_nibtool.rb 相当のことはできるはず、だけれど、テンプレの Rakefile を書いていないのでうまみがすくない。

テストを tests/ においたほうが良いっぽい。とりあえず既存のテストを AutoRunner するだけにしとこう。

  • Rakefile 書いてない
  • Xcode 関連も書いてない

窓からはいってくる風の匂いが素敵すぎる

2007年 06月 11日

やーやー

夢の中に可愛い女の子がでてくるせいで起きられない。

2007年 06月 10日

rubycocoa Rakefile

一番簡単なテンプレにだけとりあえず Rakefile を追加。内容はほとんど [Rubycocoa-devel 906], [Rubycocoa-devel 907] のコピペ。
引数なし rake でビルドからアプリケーション起動までやるようにしてみて、ためしに Hello World を Console.app に表示するやつを作ってみたけど、Interface Builder で繋ぐ部分だけ GUI であとは CUI でできるようになって結構気持ちいい。Interface Builder でアクションとか設定するより Ruby 定義から update するのが便利だなぁ。

rubycocoa create AppController.rb とかやるとクラス定義ふくんだ (awakeFromNib とかを定義ずみの) スケルトンつくれるともうちょい楽かなぁ。

  • standalonefy.rb くみこみ
  • package (.dmg) つくるタスクかく
  • publish するタスクかく

ChangeLog

そういえば書いてない。commit log とは別に書かないといけないのかな。svn log すると ChangeLog 形式のログがでてくるけれど、これはコピペで svn と ChangeLog どっちも書いてるのかなぁ。あとあとさかのぼって書いてもいいのか謎

コピぺらしい。なるほど

2007年 06月 11日

vim changelog

changelog のときは \o おすと追加される

let g:changelog_timeformat = "%Y-%m-%d"
let g:changelog_username   = "SATOH Hiroh <cho45@lowreal.net>"

を追記した

日記

某イラスト系のアレで日記となのってるところがあるけれど、あれ (どれ) は日記じゃなくてブログだと思う。

rubycocoa create

なまえがまずい気がする。いいかなぁ。( http://rubycocoa.svn.sourceforge.net/viewvc/rubycocoa?view=rev&revision=1834 )

rubycocoa new Sample
cd Sample
rubycocoa create --action hello AppController
vim AppController
rubycocoa update English.lproj/MainMenu.nib AppController.rb
open English.lproj/MainMenu.nib # instantiate / connect
rake add AppController.rb
rake # launch

create したら同時に add したほうが忘れなくていいかな。
rake create, rake update をつくって委譲するみたいな感じのほうがよさそう。rubycocoa ってながいのと補完が効かない (ruby, ruby1.9 が PATH にあるので一発ででてこない) のと、どっちつかったらいいか謎いのが不親切。

  • add するときプロジェクト内にファイルが既に存在するかチェックしないとまずい

あーだめだなぁ。rake create -a hello AppController.rb とかやると、タスクが実行されるまえに -a を Invalid Option って判断して終了してしまう。

2007年 06月 12日

シングルタスク・シングルスレッド・シングルプロセス

プログラミのことが気になってるときはほんとプログラミのことしか集中できない。それはそれでいいのだけれど、他の場合だとちょっとまずい。写真撮りたいと思ってるときはプログラミできない。これって数日から数週間持続してしまうから、その間にとりのこされたりする。

いつだってやりなおせるかもしれないけれど、自分は自分に対してそんなに期待できないし、やりなおすモチベーションが沸いてくるかに疑問を持っている。だから選択は最初にまず慎重でなければならなくて、さらにそれがダメなときに一段階落ちておける場所がないといけない。裏切らない選択肢はあるけど、それもあんまり信じられない。実際それを実行してどうなるか疑問だ。生きているだけが全てではない、とは思うけれど、実際自分は物を感じているから。

昨日の就寝時間

そういえば4:30まで寝れなかった。

2007年 06月 11日

rake tasks for rubycocoa

http://rubycocoa.svn.sourceforge.net/viewvc/rubycocoa?view=rev&revision=1836

if ["update", "add", "create"].include? ARGV[0]
  # dupe rake
  ARGV.map! {|a| a.sub(/^¥+/, "-") }
  Rake.application[ARGV[0].to_sym].invoke
  exit
end

こんなん書いてしのいでみた。なんてキモいんだろう。これで rake から create したときは add も同時にされるようになり、add のときに Xcode project ファイルを指定する必要がなくなり、update のときもテンプレで最初から入ってる nib を更新するようになった。

rubycocoa new Sample
cd Sample
rake create +a hello AppController # ハイフンにすると rake が解釈しちゃうのでしかたなく……
vim AppController.rb
rake update AppController.rb
open English.lproj/MainMenu.nib
rake

update は updatenib とかいうタスク名にしないとわけわかんない気がする

rubycocoa 側の機能にするか、rake タスクにするかで悩むけれど、rake タスクにしとけば自分でいぢれるようになるので rubycocoa 側はそんなにいろんなことしなくていいかなぁと思う感じにしてみている。なので rake タスクも Rakefile 直書きでライブラリとかにしてない。

2007年 06月 12日


カヤック星人は CCPL だと聞いたのですが、どのライセンスだろう。

setter

@textfield.stringValue += "aaa"

とか書けて楽だなぁ

2007年 06月 14日

Xcode TemplateInfo.plist

ってなんなんだろ。いま単純に消してしまっているけど、なんかたぶん設定が書かれるんだよなぁ。

FilesToMacroExpand だけ処理すればよくて、あとリネーム規則がかかれるっぽいけど、どっかに詳しい説明がないかなぁ

project.pbxproj は FilesToMacroExpand になくても強制的に変換されるっぽい

http://rubycocoa.svn.sourceforge.net/viewvc/rubycocoa?view=rev&revision=1838

OS X のデスクトップアイコンサイズを 24x24 にした

なんか広くなった気がする。

2007年 06月 15日

買ったの

電化製品を買って手元にあるのに、開封しないで終末まで待てるのって、なんかすごいよなぁ。自分だと絶対そっこうで開封するなぁ。そして徹夜でいぢくる。

時の見る夢++

これはかっこよすぎる

Xocde lproj

lproj を追加するときは nib を右クリックしてアレするみたいだけど、plist の中身を見てのなかなかよくわからない構造になっててどうしたらいいのかなぞい。
add のときに lproj だったら特別な処理が必要だよなぁ。lproj 内の nib スキャンしてほげほげとかやんないとだめかなぁ。滅多に追加しないから Xcode でやればいい気もする。


あと nib を dictionary(?) つかって更新するようにタスクを書いてあるけど、これ Rakefile に書いてしまうと Xcode でビルドしたときまずい。というか Xcode と IB だけで開発するとき (nibtool つかわない) って多言語化はどうやってるんだろう……

Cocoa

チートシートつくってみたけど、メソッドが多すぎてぜんぜんはいらない。
http://lab.lowreal.net/test/pdfkit.png (PDFKit のリファレンスをひこうと思うときは、なぜかいつもネットワークにつながらない場所にいるので)
スクラップブックにいれとけばいいだけだけど!!

2007年 06月 16日

昨日の昼食はマックテリヤキポテトセット
夜はついったオフ


今日の昼食は冷やし中華

焼き肉@鎌倉

あじさいは雨降ってないとつまらない。

2007年 06月 17日

ペヤング with 発泡酒

昼食

ひやむぎ

夕食

カレー マカロニサラダ ワイン

2007年 06月 18日

あぁ……

学校か

2007年 06月 17日

userChrome でプロキシ設定きりかえ

FoxyProxy を(たいして機能をつかっていないのに、複数プロキシをきりかえたいというだけで) つかっていたのだけれど、やめた。
普通にステータスバーから切り替えさえできればいいので (なんか FoxyProxy だとこれができないのだ。設定画面が Cmd-W で閉じれないし)、userChrome で prefs をいぢるようにした。

(function () {
	const prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
	var proxySetting = [
		function Disable () {
			prefs.setIntPref("network.proxy.type", 0);
		},
		function LocalSocks () {
			prefs.setIntPref("network.proxy.type", 1);
			prefs.setCharPref("network.proxy.socks", "localhost");
			prefs.setIntPref("network.proxy.socks_port", 10080);
		},
		function School () {
			prefs.setIntPref("network.proxy.type", 1);
			prefs.setCharPref("network.proxy.http", "");
			prefs.setIntPref("network.proxy.http_port", 8081);
		},
	];
	const ID = "status-bar-proxy-uc";
	var statusbar = document.getElementById("status-bar");
	var panel     = document.createElementNS(kXULNS, "statusbarpanel");
	var iconimg   = <><![CDATA[
		data:image/png;base64,
		iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAACzGlDQ1BJQ0Mg
		UHJvZmlsZQAAeJx9kEtoE1EUhr87WgRpFTRWKQp3VbNoy9C6qC6Upta0VmIY
		U/tAkHRyk4ydTMY7k/jAhQjiRrC6FDc+cCUupQsXLoQuRAqKuhHBpVhBENyI
		xMUkzUirFwa+Oefe/5z/h45k3vddQ0LFC7WVTsmZ2Tm55Q0ddNEJkLcDfySb
		PQGQ932XdefnewTA2/6N+/89XXpmdg6EBBKliA8AifmIx4HEhdAPQZwBEnY5
		XwDhA306Z42CuAdsK8V4PsYFFdggngBHbF+HYOSA8bpdCkGsAqZXcDww9gLD
		hcCugHEPjJszs3MyWjOchMP7YNOrdm0ugCePYXdvu5bcA7umYWmoXfthIQDR
		vRIUhwYBEJ0p6PjUaPzohS134PftRuPXg0bj90PY9BFeuHZN15sZCfEaIh8A
		JNLKU9qxpZVOyayuFh1XxSLduB35jfRgyWrRvzjKBIBhuD8O01th8jrc/Qz7
		n8LOZ5DtgtxBjKu0vlBdDAFGq/4l7ZTKoRw0zUHZLwdNc0iO+L6r5Gi14tdC
		peWEZw/0ybzrSu2UymEgtQqUrqvCABW31vK7HehU3tQpoBeMogrGmizOFfJH
		J4EBEG8K6ugY0AdisegcmwCSwMuiPjYVsdjhhBO5iI3Dnps50WS8auZkpMmq
		H6asln5QPzXWqp/LH88CPSAOLVQnLaAbjOTlcm46YpG7XB7NNPk5s7goHDwU
		HhKLNCn68dFUKeLg4OKQRuGh0DgELGx40yUbY0maL3h8QeNwnhoKicVpUhmu
		9a0pSPOD+c18Z943H5lfF3tqyXbnmj7r2Cu3vpNFodd0m93mTpG+TZURXFxK
		KCprnoLYprHtit5iT1vJXrn1Xd3I/Iy5VLFJ/cyjCFhA41BH4RKgGIlN+1d6
		Cnf5yvM97VnvNi+dedu5fOWvrKrrXKk1V3//t+/F36s/zbABaFPXSTsAAAB3
		SURBVCjPrZFBFcAgDEO/DR4WcFYR4IT78ICNyekuMKCD28KF14Y0pPAnAkJC
		CLumo6AoSiaScbZ9oygV3yp+pfTXfqr5eXYXt54apBGSIUi/xINCsgrWg1gP
		6y/qnMf1UpRMIqOUXQ7j3N+oZpVi22MX8bSLIx4U5UEkYy3cDgAAAABJRU5E
		rkJggg==
	]]></>.replace(/¥s/g, "");

	var img = document.createElementNS(kXULNS, "image");
	img.setAttribute("src", iconimg);

	var menu = document.createElementNS(kXULNS, "menupopup");
	var sett = document.createElementNS(kXULNS, "menuitem");
	sett.setAttribute("disabled", "true");
	menu.appendChild(sett);
	proxySetting.forEach(function (f) {
		var mi = document.createElementNS(kXULNS, "menuitem");
		mi.setAttribute("label", f.name);
		var command = function (e) {
			if (menu.hidePopup) menu.hidePopup();
			sett.setAttribute("label", "Cur: "+f.name);
			// reset
			["http", "ssl", "ftp", "gopher"].forEach(function (p) {
				prefs.setCharPref("network.proxy."+p, "");
				prefs.setIntPref("network.proxy."+p+"_port", 0);
			});
			f();
		};
		if (!arguments.callee.called) { command(); arguments.callee.called = true }
		mi.addEventListener("command", command, false);
		menu.appendChild(mi);
	});

	panel.appendChild(img);
	panel.appendChild(menu);
	panel.setAttribute("tooltiptext", "Change proxies");
	panel.addEventListener("click", function (e) {
		menu.showPopup(panel, -1, -1, "popup", "bottomleft", "topleft");
	}, false);

	var t = document.getElementById(ID)
	if (t) t.parentNode.removeChild(t);
	panel.id = ID;
	statusbar.appendChild(panel);
})();

インストールしていたアドオンが一個へった。

http://lab.lowreal.net/trac/browser/c/userChrome/proxy.uc.js

2007年 06月 18日

朝食

カレー
腹が痛い

昼食

午後の紅茶スペシャルミルクティー
チキンカツサンド

gem update --system した。

Mac は gem cleanup もした。

夕食

やさいいため カレースープ ごはん 焼酎

Thunderbird userChrome.js

Firefox と実行環境がちょっと違うっぽい。Cc, Ci, kXULNS とかが定義されてないので自分で定義しておく必要がある (Fx だと定義済みのコンテキストになってる)

うーん。メニューへの追加方法がわからない。menuitem がない。どうなってるんだろ。userChrome.js をちょい変更したらプロキシのやつは改変なしで動いた。
http://lab.lowreal.net/trac/browser/c/userChrome/proxy.uc.js

毎日がつまらないんだよ

gerry++

2007年 06月 19日

アレェ。なんで xcodebuild で plist が読めないよ! とか怒られるんだろう。ML のテストがとおらないのもこれのせいっぽいなぁ。

というかテストの書きかたがわるいよなぁ。せっかく Ruby でかいてるんだから require して new しまくったほうがいい予感だ。

xcodebuild がだめなのは別の問題だ。てか ML のテストはうちの環境だと再現しない?

テスト変更
http://rubycocoa.svn.sourceforge.net/viewvc/rubycocoa/trunk/src/framework/tool/rubycocoa/test/test_rubycocoa.rb?r1=1846&r2=1845&pathrev=1846

テスト失敗したときのエラーメッセージがもうちょいマシになるはず……

2007年 06月 20日

朝飯なし
昼食やきうどん
夕食いざかや

今やきとり+発泡酒

朝飯おにぎり
昼食チキンラーメン オレンジジュース

夕食焼き鳥親子丼 明太子キャベツ タコきゅうり梅干し 発泡酒

間食 チキンラーメン without お湯

require "net/telnet"

t = Net::Telnet.new("Host" => "localhost", "Port" => 4242, "Prompt" => /repl> ¥z/n)
t.cmd ""

DATA.read.each do |l|
	t.cmd l do |s|
		puts s
	end
end

__END__
var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
prefs.setIntPref("network.proxy.type", 0);
2007年 06月 21日

朝食 おにぎり みそしる

昼食 ハムタマゴサンドイッチ 午後の紅茶スペシャルミルクティー

夕食 梅生姜ご飯 ハム キャベツめんたいこ キャベツとかのあぶらあげつつみ

2007年 06月 22日

間食 チキンラーメン

朝食 おにぎり みそしる
昼食 チキンラーメン

夕食 カレイ キュウリツナコーン ナスショウガ ヒジキポテト

夕方いつのまにか寝てた


otsune さんと goya さんとあと男二・三人と女性一人とビルの中を歩いてた。otsune さんはエスカレータの動く方向を逆にする能力があった。goya さんはフィルムをよくわからない方法で一瞬で現像してた。どっかのビルのどっかの部屋の女の子がいた。

gerry++

2007年 06月 23日

別になんでもなくて

混乱 混乱

朝食 なし
昼食 ザルソバ

Daikanyama UNIT
普通に入れた
パナソニックのヘッドフォン娘がいる
てか女子率たかいよ。ここは日本なのだろうか
地下だからか電波入らない
リアルツインテールとかいつぶりに見ただろう。って違った。サイドポニーだな。初めてみた
なんかf/4で露出保補正-1.5ぐらいで写真とりたい


最初がGood Dog Happy Menてのはアレだなぁ

すきっぱらにアルコール

夕食 冷シャブ

2007年 06月 24日

朝食 なし
昼食 パスタ (トマト+バジル)

GDHM

ニコニコ動画で合唱曲のやつとか聞いてておもったけど、GDHM ってそういう系の匂いがちょっとするのかなぁと思った。

2007年 06月 25日

smilevideo

なんか再エンコの基準がよくわからない……nicowiki.com だと合計 600kbps 以下なら大丈夫みたいなんだけどなぁ
VP62 でエンコするとローカルで flv が再生できなくなるのはなんなんだろ。avi のままだと再生できるから flv コンテナ作るときにダメっぽいんだけど

ffmpeg が FLV4 に対応してないのかな。変換後のファイルひらくと 46 4c 56 01 になってる。01 がバージョン番号だとすれば (flv のフォーマット仕様ってどこかにあるんでしょうか) まずいよね。ただうまくいくときもあるしよくわからない。(04 に変えてもローカルで再生できるようになったりはしないけど……ffdshow+mplayerc or VLC)

一回 invalid_v1 とかでたりするけど、あとでもっかい見てみると見れたりする。再生すると (?) 補完されるのかもしれない。なぞだ。

そういえば同じファイルでも、再エンコされたりする。よくわかんねー
該当部分のソースコードを公開してほしい。時間の無駄感ただよう

別にエラーでたから補完されるってわけでもなさそうだなぁ。flv をダウンロードしてみると同じファイルのままっぽい。
配信一発目のとき変なことになるのかなぁ。サーバが

2007年 06月 24日

夕食 ナスと豚肉とピーマンのみそいため あと忘れた

2007年 06月 25日

間食 バナーナ

2007年 06月 24日

gerry++

2007年 06月 25日

朝食 ひぢきおにぎり
昼食 カロリーメイトチーズ 午後の紅茶スペシャル

おまえ……

レポート書けないのを笑いごとだと思ってるだろ。

夕食 焼き鳥 (つくね、ねぎま) ひぢきタマゴ焼き ダイコンとパプリカのサラダ

2007年 06月 26日

間食 バナナー

2007年 06月 25日

vim のファイル名補完

そういえば :e とか :w とかいろいろななとき、vim だとファイル名の補完が DOS っぽくぐるぐるまわるけど、zsh みたいに共通部分だけ補完にはできないのかなぁ。めんどい

2007年 06月 26日

朝食 なし
昼食 ダイコンパプリカチーズスパゲティ


間食 チップシターのりしお

diff memo

begin
require "rubygems"
rescue LoadError
end
require "diff/lcs"

s1 = <<EOS
aaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbb
dddddddddddddddddddddddddd
eeeeeeeeeeeeeeeeeeeeeeeeee
aaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbb
dddddddddddddddddddddddddd
eeeeeeeeeeeeeeeeeeeeeeeeee
aaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccccccccc
dddddddddddddddddddddddddd
eeeeeeeeeeeeeeeeeeeeeeeeee
ffffffffffffffffffffffffff
EOS

s2 = <<EOS
aaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbb
dddddddddddddddddddddddddd
eeeeeeeeeeeeeeeeeeeeeeeeee
aaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbb
dddddddddddddddddddddddddd
eeeeeeeeeeeeeeeeeeeeeeeeee
aaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbb
dddddddddddddddddddddddddd
eeeeeeeeeeeeeeeeeeeeeeeeee
fffffffffffffggggggggggggg

zzzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzzz
EOS

#require "pp"
#Diff::LCS.sdiff(s1.to_a, s2.to_a).each do |l|
#	case l.action
#	when "="
#		puts " " + l.old_element
#	when "!"
#		puts "-" + l.old_element
#		puts "+" + l.new_element
#	when "+"
#		puts "+" + l.new_element
#	when "-"
#		puts "-" + l.old_element
#	end
#	#pp l
#end

diffs = Diff::LCS.sdiff(s1.to_a, s2.to_a)
require "erb"

include  ERB::Util
File.open("test.html", "w") {|f| f.puts ERB.new(DATA.read, nil, "%>").result(binding) }

__END__
<style type="text/css">
.diff {
	line-height: 1.33;
	font-size: 90%;
	width: 100%;
}

.diff del {
	display: block;
	background: #fdd;
	text-decoration: none;
}

.diff ins {
	display: block;
	background: #dfd;
	text-decoration: none;
}

.diff th {
	color: #888866;
	background: #EEEEDD;
	text-align: right;
	padding: 0 0.5em;
	border-style: solid;
	border-width: 0 0 1px 1px;
	border-color: #998 #d7d7d7;
	width: 2em;
}

.diff td {
	font-family: monospace;
}
</style>
<table class="diff" cellspacing="0">
	<thead>
		<tr>
			<th>old</th>
			<th>new</th>
			<th>content</th>
		</tr>
	</thead>
	<tbody>
	<% diffs.each do |c| %>
		<% case c.action
		   when "=" %>
		<tr>
			<th><%=h c.old_position + 1 %></th>
			<th><%=h c.new_position + 1 %></th>
			<td><%=h c.new_element %></td>
		</tr>
		<% when "!" %>
		<tr>
			<th><%=h c.old_position + 1 %></th>
			<th></th>
			<td><del><%=h c.old_element%></del></td>
		</tr>
		<tr>
			<th></th>
			<th><%=h c.new_position + 1 %></th>
			<td><ins><%=h c.new_element%></ins></td>
		</tr>
		<% when "+" %>
		<tr>
			<th></th>
			<th><%=h c.new_position + 1 %></th>
			<td><ins><%=h c.new_element %></ins></td>
		</tr>
		<% when "-" %>
		<tr>
			<th><%=h c.old_position + 1 %></th>
			<th></th>
			<td><del><%=h c.old_element %></del></td>
		</tr>
		<% end %>
	<% end %>
	</tbody>
</table>

書くほどでもないなぁって思ってるといつのまにか失くしてしまう……

2007年 06月 27日

スプートニクの恋人

読みおわった。高校のときに読んで以来で、特に読もうと思って買ったわけではないのだけれど、小田急がとまってしまったときに暇潰しのために買った。

なぜスプートニクの恋人を買ったのかといえば、ミュウの観覧車のシーンが印象的だったから (他の作品で観覧車がでてくると、よくこのシーンが頭にうかぶぐらい) そして、結末を忘れていたこと (すみれは帰ってきた、というシーンが「あった」というのが、はたして本に描写されていたことなのか、自分で続きを想像したことなのかがわからなくなっていた)

読んでも全然わかんない作品だなぁ。最後にすみれから電話があるけど、あれがすみれなのかよくわからない。あのすみれは主人公自身な気もする (そういう表現もあるけど)、ミュウの半身がどっかにいってしまったように、主人公の半身もどっかにいってしまった (そして帰ってきた) という感じがする。じゃあ最初からずっとすみれは主人公だったのか、というと違うだろうし、よくわからない。

「半身」みたいな話は確か海辺のカフカでもどっかに書いてあった気がする。

はあ、もっとしっかりしないとダメだなぁ……
どうすれば良いのだろう

朝食 オニギリ みそしる
昼食 ツナサンド 午後の紅茶ミルクティー
夕食 ハンバーグ パイナップル

Good Dog Happy Men - the GOLDENBELLCITY ep1

B000QTD2Y6the GOLDENBELL CITY ep1/ Good Dog Happy Men

3部作の最初。1曲目からカッコイイ。

でもかなりスルメ系だと思われるので、一ヶ月ぐらい聞き込もうと思う。雨と仲良くはアルバム全体で通しで聞いてみるとすごく良く感じるなぁ。

2007年 06月 28日

朝食 赤飯おにぎり みそしる
昼食 チキンカツサンド 午後の紅茶ミルクティー
夕食 ブタキムチ

plusplusbot on IRC

http://lab.lowreal.net/trac/browser/chokan/trunk/plugins/plusplus.rb

プラグイン用のディレクトリをとれる API がいるなぁ……

2007年 06月 29日

間食 チキンラーメン without おゆ

2007年 06月 28日

vimperator の command を userChrome.js で拡張する

/*
 * [
 *     0: [all names of this command],
 *     1: usage,
 *     2: short help
 *     3: helptext
 *     4: function (arguments in this order: args, special, count, modifiers)
 *     5: completefunc
 * ]
 */
setTimeout(function () {
	// for reloading uc.js
	if (g_commands._orig_g_commands) {
		g_commands = g_commands._orig_g_commands.concat();
	} else {
		g_commands._orig_g_commands = g_commands.concat();
	}
	showStatusbarMessage("Loading Additional Commands...", STATUSFIELD_URL);

	const prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
	var proxySetting = [
		function Disable () {
			prefs.setIntPref("network.proxy.type", 0);
		},
		function LocalSocks () {
			prefs.setIntPref("network.proxy.type", 1);
			prefs.setCharPref("network.proxy.socks", "localhost");
			prefs.setIntPref("network.proxy.socks_port", 10080);
		},
		function ArrogationCharlotte () {
			prefs.setIntPref("network.proxy.type", 1);
			prefs.setCharPref("network.proxy.http", "charlotte");
			prefs.setIntPref("network.proxy.http_port", 5432);
		},
		function ArrogationLocal () {
			prefs.setIntPref("network.proxy.type", 1);
			prefs.setCharPref("network.proxy.http", "charlotte");
			prefs.setIntPref("network.proxy.http_port", 5432);
		},
		function School () {
			prefs.setIntPref("network.proxy.type", 1);
			prefs.setCharPref("network.proxy.http", "proxy");
			prefs.setIntPref("network.proxy.http_port", 8081);
		},
	];

	g_commands.push([
		["proxy"],
		["proxy {setting name}"],
		"Change proxy settings.",
		"",
		function (args, special, count) {
			var name = args;
			for (var i = 0; i < proxySetting.length; i++) {
				if (proxySetting[i].name.toLowerCase() == name.toLowerCase()) {
					proxySetting[i]();
					showStatusbarMessage("Loading Setting " + name, STATUSFIELD_URL);
					break;
				}
			}
		},
		function (filter) {
			g_completions = [];
			g_substrings  = []; // これやらないと変な補完される?
			proxySetting.forEach(function ($_) {
				if ($_.name.toLowerCase().indexOf(filter.toLowerCase()) == 0) {
					g_completions.push([$_.name, ""]);
				}
			});
			return g_completions;
		}
	]);

}, 500);

vimperator は Chrome Window のグローバル変数を汚染しまくる。(g_commands とか g_ からはじまるやつはグローバル変数。g_substring を補完関数で初期化しないと変な補完がされる。なんてこった)

拡張が実行される順序がよくわからないので setTimeout してる。

help は g_commands から自動生成されているので、うえのがちゃんとロードされると、ヘルプページの最後に :proxy の説明がでてくるよ!

2007年 06月 29日

vimperator のコマンドラインで C-[ がきかないのをなおす userChrome.js

Mac だけなのか、それとも「おれの」Mac だけなのか、あるいは Windows でもそうなのかしらないけど、コマンドモードで C-[ がきかなくてイライラするので userChrome.js で対処する。まじめにやるならパッチかいたほうがいいとおもうけど、chrome 展開したのをインストールとかよくわからないので

setTimeout(function () {
	if (!keyToString.mod) {
		var _orig_keyToString = keyToString;
		keyToString = function (evt) {
			var ret = _orig_keyToString(evt);
			return (ret == "<C->") ? "<C-[>" : ret;
		};
		keyToString.mod = true;
	}
}, 500);

C- のあとのは C-v C-[ で入力。

.vimperatorrc つかえよ

http://lab.lowreal.net/trac/browser/config/.vimperatorrc
.vimperatorrc も実は setTimeout で実行されるんだぜ…… (だからなんだ

vimperator つかってなおかつ URL バーを表示させているとき、URL バーから C-[ で脱出するための .vimperatorrc

:js <<EOF
(function () {
	var urlbar = document.getElementById("urlbar");
	if (!urlbar.urlbar_escaped) {
		urlbar.urlbar_escaped = true;
		urlbar.addEventListener("keypress", function (e) {
			if (keyToString(e) == "<C-[>") {
				setCurrentMode(MODE_NORMAL);
				hah.disableHahMode();
				focusContent(true, true);
			}
		}, true);
	}
})();
EOF

下の keyToString を適用ずみで
URL オートコンプリートは Fx デフォのほうがいい…… <Cmd-L>fli<TAB><RET> でふりっかーだもんなぁ

朝食 おにぎり みそしる ブルーベリー
昼食 ぶたきむぶたきむ グレープフルーツジュース
夕食 タラコレタススパゲティ サラダ

2007年 06月 30日

朝食 なし
昼食 ザルソバ
夕食 カレー・ナン
間食 お好み焼き