2007年 11月 12日

青春

なんだかんだいって、今までは青春をどこかで感じていたのか、ごくごく最近になって、青春性みたいなものを感じられなくなってきている感じがする。学校的なもの、女学生的なものを身近に感じず、遠くのどこかにあるもう絶対に手が届かない何か、ファンタジーのようなもの、という実感が心に浮いている。

二日連続で夢をみて、二日連続で学校 (高校) がでてきた。

マウスジェスチャ式のランチャ

Photoshop の拡大率をスパっと 100% がどうとかいう話をしてて、ジェスチャできたらいい気がしたので簡単にできる範囲でつくったけど肝心の拡大率 100% のぶぶんを jsx から叩けない気配がして (ヒストリに記録されない) orz

IRC で発言した時間から計算するとここまで作るのに1時間……殆どコピペでつくってるのに時間かけすぎだなぁ…… (逆に、いろいろ作っていると思いたったらコピペでつくれるのはおもしろいかも) RubyCocoa じゃなかったらもっと時間かかって、それが作る前にわかってしまうからそもそも作らないんだけどw

左下にジェスチャ用の箱があらわれて、そこから左クリックしながらドラッグでジェスチャ。ほんとはどこからでも開始したいけど、いい方法がおもいつかない。ホットキーで起動して、っていうのはできるけど、それじゃあんまり意味ないし……

http://coderepos.org/share/browser/lang/ruby/misc/cocoagesture.rb (つづきつくるかわかんないけど、バンドル形式になってない RubyCocoa スクリプトなので RubyCocoa ちょっと触ってみたい人にちょうどいいサンプルかもしれない)

http://ichiro.nnip.org/osx/Expogesture/index.html

こういうのあったんだった。これの場合はマウスの位置だけしか見てない。NSEvent.mouseLocation の監視だけしてるっぽい? 誤爆しそうだよなぁ……

あぷぷ毎に設定できるから問題にならないのかも。どうせジェスチャなんてたかだか数個しか覚えられないし、こういうので十分なのかもしれない。つかってみよう

Chemr / DRb コネクションスレッドでの GC 時におちる

外部から DRb で Chemr にアクセスしてそのうえそのスレッドで GC が発生すると落ちるんだけどどうしたらいいかサッパリわからんよ><

巨大なインデックスもってる chm をひらいて Amalgam 側から Chemr インデックスひこうとすると Chemr が落ちる。でかいインデックスもってるのを Amalgam からひかないようにすれば一応大丈夫だけど、たくさん開いてるとタイミング悪く GC がきたりするし……

該当メソッドだけ GC 禁止してもメソッドから抜けた DRb 内で GC 発生すると死ぬし、アドホックな解決はできなそう。

EXC_BAD_ACCESS (0x0001)
KERN_INVALID_ADDRESS (0x0001) at 0xc009aae4

Thread 0 Crashed:
0    _NSAddExceptionHandlerForLock + 261
1    _NSAppKitLock + 59
2    -[NSEvent dealloc] + 122
3    0x27000 + 6206
4    obj_free + 986
5    gc_sweep + 453
6    garbage_collect + 503
7    rb_gc + 11
8    rb_gc_start + 11
9    call_cfunc + 283

開放されちゃだめなのか開放されてるのかなぁ。

PHPを避ける

PHP を たにんに すすめる というのは ぜったいに ありえない。

2007年 11月 11日

言語

言語は英知の固まりだ

勘違いだけど

時間かけてやれば Haskell だって理解できるのではないかと思ってしまう。勘違いだ。

今日は Wikipedia で圏論の項を一応じっくり読んでみたけどほんと全然理解できない (Haskell を理解する上では必ずしも必要ではないとは言われているけど、やっぱり背景をしっておかないと真に言語設計者の意図は感じとれないと思う)。というのもそもそも数学的なことを考えるうえで必要な教養を全く持ちあわせていないせいなんだけど、数学は独学すると危険な香りがするからうかつに手を出せない感 (だからといって先生に教えてもらう、っていうのは、そういうタチではないのを身を持って知っているので独学でやるしかないんだけど) なんか数学コンプレックスみたいだ。頭悪いの実感するから苦手なんだよなぁ。

  • 具体圏以外の圏がイメージできない
  • 数学的構造を理解できない
  • 写像と関数の違いがわからない
  • というか写像が理解できてない
    • map は写像の map ?
    • でも map って関数じゃん
    • 写像は一部分だけっていうのがある?
      • 制限写像とかって map だけでは書けないよね?
      • 恒等写像は map (\x -> x) だよね
    • 関数になってる写像は全射?
    • 全射でも単射でもない写像ってあるの
  • 値域ってなんだよ
    • 値のとりうる範囲?
    • どうやって指定するんだ。
    • Int = 1 | 2 | ... みたいなの?

だめだこれやめたほうがいい泥沼になっていく。数学勉強してる人にバカにされる。おめーみたいなバカが理解できるわけねーだろってゆわれる。(ぼくは高校数学すらほとんどやってない。具体的にいうと高校二年の文理選択のときに全ての数学科目を捨ててる。)

人生がたりない

時間ないよなぁ。例えば、いくら金持ちだったとしても、世界中の国のあらゆる場所のよいところを知ることはできない。住んでみないとわからないことがあまりにも多いからだ。金で時間は絶対に買えない。金で経験は買えない。

時間たりないなんていうくらいなら、ずっとやりつづけろとは思うけれど、そういうのもできない。だめ人間すぎるのだなぁ……


それにしても、本当に大学は無駄だった。ひきこもって独学してたほうが数百倍素晴らしい生活ができたよなぁ。DAIGAKUSEI むかつく。みんな死ねばいい。DAIGAKUSEI だけじゃない。もっと広い範囲で、全くあわない人たちは多すぎる。今の季節の夜に外へ出て鼻腔を広げ冷たい空気とともに秋の匂いを肺一杯に感じるようにしている人達と一緒にいたい。それができないなら死んだほうがマシだ

なんかこう

脊髄反射でニヤニヤしながら「それって違うよね~w」みたいなのをいうやつは頭が本当に悪い。たとえばおれとかだ。それを他人がやっているのを見ると自分を見てるみたいで余計むかつく。直したい。

洗濯機へ消えていった女の子

洗濯機へ消えていった女の子が悩んでいた間、君はいったい何をしていたっていうんだ?

IMG_61360081

Enumerable#inject

実際、なんかネタメソッドとか思っている人もいくらかいるのかもしれないのだけれど、inject は慣れると使いまくるメソッドの一つである。

あと inject を知っていると関数型言語をやるときに生きてきておもしろい。fold とか

ふときづくと

Safari も Mail.app もつかっていない。

今起動してる app

  • Terminal.app
  • Chemr.app
  • Console.app
  • Ttunderebird.app
  • iTunes.app
  • GranParadiso.app

Dashboard も Expose も殆ど使わない。ぜんぜんマカーじゃないですね。

osx.iusethis.com を使わないとのろわれるといううわさなので登録してみた。(copipe)
http://osx.iusethis.com/user/cho45

単射・全射

はてキだと単射は 1:1 で対応がとれているやつって書いてあるなぁ。わかりやすいけどそういうことなのか。

http://ja.wikipedia.org/wiki/%E5%85%A8%E5%B0%84 に図があった。わかりやすい……

autocomplpop.vim

ns9tks さんが既につくっていたのか>< 恥ずかしながら知らなかった。オプションとかが充実しててすばらしすぎる。どう考えても life changing

http://www.vim.org/scripts/script.php?script_id=1879

入れた! しかしちょっと気になったので一箇所だけ修正してみた

--- autocomplpop.vim.orig       2007-11-11 16:26:40.000000000 +0900
+++ autocomplpop.vim    2007-11-11 16:22:20.000000000 +0900
@@ -192,7 +192,7 @@
 
     if pumvisible()
         " a command to restore to original text and select the first match
-        return "\<C-p>\<Down>"
+        return "\<C-p>\<Down>\<C-p>"
     elseif a:nRetry > 0
         " In case of dividing words by symbols while popup menu is visible,
         " popup is not available unless input <C-e> (e.g. 'for(int', 'a==b')

オリジナルだと表示されてすぐ C-n だけだと最初の候補を選択してくれない (二回おして最初の候補が補完される)。なんかでも環境によるのかもしれない。うちだとこうするとうまくいく。( VIM - Vi IMproved 7.1 (2007 May 12, compiled Oct 7 2007 05:51:43) ) なんか他の部分となんかなってるのかもしれない。

あとは lazyredraw だけ別設定してチラつきおさえた (Mac の gvim だと hjkl おしっぱのカーソル移動がみえなくなって不便だけど gvim とか滅多につかわないからそんなに不便じゃない) それと ignorecase を一時的に変更できるみたいなのでデフォの ignorecase を元にもどした。

あと、補完候補表示したまま RET おして改行できないので以下のコードを復活させた

inoremap <expr> <CR> pumvisible() ? "\<C-Y>\<CR>" : "\<CR>"

vim.org

vim.org のレートって &rate=... つきのリンクはれるyouna

あとスクリプトダウンロードのところで http://www.vim.org/scripts/download_script.php?src_id=n になるんだけど、これだと wget するときいちいちファイル名を変更しないといけなくてめんどい……

Rails hype 156cm

Rails は hype っていうのを hyde と誤読して、身長を多くみつもること? 背伸び? 自分を大きくみせようとすること? とか考えてきたら、あんがいまちがってなかった。

Spotlight (Mac 的な意味じゃなくて)

Copernicus はマウストラッキングしてスクリーンとれるけど、どことってるのかよくわからない。

ので、ある範囲だけ明くする RubyCocoa スクリプトのサンプル

#!ruby -Ku

require "osx/cocoa"
include OSX

class MainView < NSView
	def drawRect(rect)
		super_drawRect(rect)

		NSColor.blackColor.set
		NSRectFill(bounds)

		NSColor.clearColor.set
		point = NSEvent.mouseLocation
		x, y = point.x, point.y

		width  = 512
		height = 384
		NSRectFill([
			x - width / 2,
			y - height / 2,
			width,
			height
		])
	end
end

class Test < NSObject
	def applicationDidFinishLaunching(n)
		screenFrame = NSScreen.mainScreen.frame
		rect = screenFrame

		@window = NSWindow.alloc.objc_send(
			:initWithContentRect, screenFrame,
			:styleMask, NSBorderlessWindowMask,
			:backing, NSBackingStoreBuffered,
			:defer, 0
		)
		@window.opaque             = false
		@window.hasShadow          = false
		@window.level              = 1000 # NSScreenSaverWindowLevel
		@window.ignoresMouseEvents = true
		@window.alphaValue         = 0.8


		@view = MainView.alloc.initWithFrame(rect)

		@window.contentView = @view

		@window.frameOrigin = [0, 0]

		# いでよ
		@window.makeKeyAndOrderFront(nil)
		@window.orderFrontRegardless

		point = NSEvent.mouseLocation
		Thread.start do
			loop do
				sleep 0.01
				np = NSEvent.mouseLocation
				unless np == point
					@view.needsDisplay = true
				end
				point = np
			#	@view.display
			end
		end
	end
end

app = NSApplication.sharedApplication
app.delegate = Test.new
app.run

これだとマウスをはやく動かしたときに Copernicus のキャプチャにうつりこんじゃうんだよなぁ (それにこのスクリプト自体がかなり重い)。やっぱ自力でキャプチャアプリ書くしかないのかなぁ。速度求められるアプリケーションはむずかしいよお

Spotlight (Mac的な意味で)

Spotlight 検索を直接使うことはないけど locate は使うなぁ。これってたぶん連動してるよね?

してないですね。なに勘違いしていやがる

2007年 11月 10日

apt-get bvi / port install bvi

vim の -b とかでやるバイナリモードは使いにくいとかいうレベルじゃないので id:amachang に Shibuya.js のときにきいた bvi をいれた。TAB で ASCII のほうと hex のほうとでいったりきたりできるのがおもしろい。

undo の挙動がちょっと違うのがきになるかも。まだあんまりつかってない

まる

http://www.nicovideo.jp/watch/sm1489464

これすごいなー。ちょっと腹の底からグっとこみあげてくる感動があるなぁ。こういう技術っていいなぁ。


こういうのみるたびに、コーディングってライブ感がなくてすげー地味だなーって思ってしまう。ライブコーディングとかも、わかる人にはわかる、っていうレベルの面白さだもんなぁ。わかるひとだけわかるっていうがどっちかっていうと好きだから (大衆受けしても大抵ろくなことにならないから) いいんだけど、たまにちょっと切なくなる。

映像的なプログラミングだってもちろんあるわけだけど、どうもそういうふつーにウケる、みたいなのをやる気にならない。表面的な面白いことと裏側的な面白いことを組みあわせたらいいんだろうけど、表面的な面白さにしか気付かない人を見るとかなり切なくなるし話かけられるのも嫌だし、それだったら最初っから難解で気付く人が気付けばいいと思えてしまう。なんかおれは気持ち悪くひねくれてるいるんだなぁ……


うえの動画だって、おれは絵のことを良く知っているわけじゃないから、知っていればわかるような面白さに気付けていないんだろうなぁ。

Emacs lisp (elisp) による blosxom クローン

(誠に誠死ね申しわけありませんが、blosxom を便利につかえるようにする .el ではありません)

http://coderepos.org/share/browser/lang/elisp/blosxom.el.cgi/blosxom.el.cgi

一応だいたいうごくところまで書いてみました。日本語表示できないけどどこで化けてるかわからないからもういいや><

ライセンスを same as Vim とかにしたかったけど Vim のライセンスが GPL とかじゃなかったのでやめた。

実行しているところを ttyshare にあげたかったのだけど、描画させながらゆっくり実行させる方法がわからなかった (*scratch* で insert-file して eval-current-buffer すると一瞬でおわってしまう)。というかひさしぶりに Emacs 起動したら C-h とかきかなかったりして全然操作できなかった。ことあるごとに C-[ 押して混乱してしまうw

いろんな言語

少しずつプログラミングのエッセンスみたいなのが見えてくる気がする。ある言語の設計がなぜそうなっているかとか、そういうことを、他と比較することで少しずつ理解できる感じがする。