2007年 11月 11日

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

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 の挙動がちょっと違うのがきになるかも。まだあんまりつかってない

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

いろんな言語

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