2007年 10月 11日

光の路

ひさしぶりに歌詞見たら短くてうけた。これってなんかどっかの唄だとおもってたけど、ほんとに(謎)スカウトソングなのね。

記事タイトルを二段で

どこに設定あるのかわかんなくて困る……デザインと記事の設定ってどういう基準で分割されてるんだろう……

カテゴリテスト

二段にしてもカテゴリとか設定していないと、時刻だけになって殺風景だなぁ。上から読んでいくとき時刻が目線に入るのはちょっと思考を妨げる気がする。逆にカテゴリをちゃんと設定しているなら、どのカテゴリに属しているかが楽に目に入るようになってちょうどいい感じ。


一段

  1. カテゴリとタイトル読む (同列になってる)
  2. えっと、これがカテゴリだっけ……と脳内パーサーが走る
  3. 読むかどうか決める
  4. 本文読みはじめる

二段

  1. タイトル読んで内容を想像する
  2. カテゴリで補完する
  3. 読むかどうか決める
  4. 本文読みはじめる

その場編集は便利なんだけど、RET がきかなくて入力するのがめんどうくさい。Shift-RET なら効く。うちだけなんかなぁ。

Fx 再起動したら RET 効くようになった。
セクションタイトルのスタイルを変えてみた。ここの日記は本文みじかいからあんまこういうブログっぽいのは向かないな

n ly n nazo

#!ruby

require "nkf"

data = DATA.read.split(/¥n/)

def copy(str)
	puts str
	str = NKF.nkf("-s", str)
	IO.popen("pbcopy", "w") do |io|
		io.print str
	end
	str
end

copy(data.shift)
board = `pbpaste`
loop do
	boardn = `pbpaste`
	boardn = nil if  boardn.empty?
	unless board == boardn
		str = data.shift
		copy(str)
	end
	board = `pbpaste`
	sleep 0.3
end

__END__
1
2
3

NSPasteboard はデータ取得がいまいち安定しない。

2007年 10月 10日

当然のこと

そうだなぁ……たかがスクリプト言語ちょろっと書けるぐらいじゃプログラミングできるなんて言わないよなぁ。やだなぁ……やっぱり生きていける気が全くしない。でもやっててつまんない言語なんてやりたくないしなぁ。時期がくるのかな。でも時期があわなかったら、やっぱり、就職先なんてないし、どうしたって、おれの頭じゃだめなことがある。

ヘッドフォン

KOSS UR/40 と AKG-271s は万能選手だなぁ。

「熱さを嫌う若者たちは冷え切った場所へ逃げてゆく」

また徹夜

関係ないうえに違うやつだけど「ニットのセーターのそのふくらみが」もなんか切なげに性的で好きだなぁ。

リリースプロセス

よくわかんないなぁ。変更して「まだあるかもしれない」とおもってリリースしないでいると、「あれどこまでの変更をリリースしたっけ」とか思ってしまう。うーん

ホームページ

まだホームページ (ウェブサイト的な意味の) を家に比喩する人っているんだなぁ。しかもそういうのを記事にして「これからのウェブは」とか言ってしまえるのはすごい。

rubyforge にリリースできない

リリースしようとするとエラーでるなぁ。普通にウェブからやってもエラーでる。rubyforge (gem のほう) は、hpricot とか使って Error: の部分を出すようにすべきだ……

gem って post-installed フックできないのかしら

gerry++

2007年 10月 09日

.

なんだかやっぱり、漠然とした不安がある。

vim の補完

いいかげんどうにかしたいので必死で調べてるんだけどうまくいかない。ちなみに使いにくいのであんまり補完使ってない。

  • C-n しただけではソロでマッチしたとしても絶対に insert (確定) しない

という挙動にしたいだけなんだけど、なんでできないんだろ。ソロでマッチしている場合必ず確定してしまう。

だめだまったくだめだ。

<C-R>=Fun()<CR>

して自力で complete() よべばいいのかなぁとおもったけど、どうやって補完リストとってくればいいのかわからない。

なんでこんな素朴な挙動ができないのかなぁ……

てか complete() もソロマッチだと勝手に補完しやがるな
表示するだけってないのかなほんとに

vim の補完

ソロマッチの insert は諦めた。ほんとどうやってやるんだ……

補完のヒット率をあげるために dict を充実させるようにしようとおもった。で、これもずっと疑問だったんだけど、css とか、キーワードにハイフンを含めたりできるやつの補完ってどう書けばいいんだろう。emacs は記号として認識する範囲を指定する変数があったと思うけど、vim にはないのかな。ヘルプざっとみてるけど、なんか見つけかたが全くわからない。

iskeyword か。
CSS は ftplugin/css.vim で

set iskeyword+=-

してみた

RDoc template Resh gem

gem にしました。

sudo gem install resh

でインストールできます。--template resh のように書くことができるようになりますが、rubygems を読みこんでいないとテンプレート読みこみに失敗するので、RUBYOPT="-rubygems" をつける必要があります。ただし ~/.gemrc の rdoc: とか、RDocTask の書いたりするぶんには、既に rubygems が読みこみされたコンテキストで require が発生するので問題ないです。つまり直接 rdoc コマンドを叩かない限りだいたい大丈夫

今だに光合成ではなく食物で動いているあたり。。。

人間ってだめすぎるな

svn ci のときの

-- この行以下は無視されます --

M    .zshrc

ってでたとき、下の無視されますのところを削除するとそのファイルはこのチャンジセットではコミットしない、みたいな機能があった気がするんだけど、今日ためしてみたらできなかった (TortoiseSVN のコミット画面のチェックボックスみたいなイメージ)。なんだろ。

vim の補完

コメントをもらった。
http://subtech.g.hatena.ne.jp/cho45/20071009#c1191925480
できた! できた! 神すぎる!!!

でもってすこし変更して小文字入力時に常にメニュー出すように (word_complete.vim は捨てた)

set completeopt=menuone,preview
function! CompleteWithoutInsert()
	return "¥<C-n>¥<C-r>=pumvisible() ? ¥"¥¥<C-P>¥¥<C-N>¥¥<C-P>¥": ¥"¥"¥<CR>"
endfunction
inoremap <expr> <C-n> pumvisible() ? "¥<C-n>" : CompleteWithoutInsert()
" 小文字入力で常にメニューだす
let letter = "a"
while letter <=# "z"
	execute 'inoremap <expr> ' letter ' "' . letter . '" . (pumvisible() ? "" : CompleteWithoutInsert())'
	let letter = nr2char(char2nr(letter) + 1)
endwhile
inoremap <expr> <CR> pumvisible() ? "¥<C-Y>¥<CR>" : "¥<CR>"
inoremap . .<ESC>a
inoremap ( (<ESC>a
inoremap [ [<ESC>a
set lazyredraw

なんかこのコードははてなコード記法でハイライトおかしくなるみたいだ。vimcolor だからかな

textarea で TAB おしたときにTABとか入力するようにする。

たまに生で code block 書くときにめんどかった。TAB で移動はつかわないし

	$X("//textarea").forEach(function (t) {
		t.addEventListener("keypress", function (e) {
			if (e.keyCode == 9) {
				e.stopPropagation();
				e.preventDefault();
				var s = t.selectionStart;
				var content = t.value;
				var str = "\t";
				var newstr = content.substring(0, s) + str + content.substring(s, content.length);
				t.value = newstr;
				var pos = s + str.length;
				t.setSelectionRange(pos, pos);

			}
		}, true);
	});