トップ «前の日記(2007-02-25) 最新 次の日記(2007-02-27)» 編集

じじぃの日記、ツッコミ可

Twitter: @jijixi_org
Xbox Live: jijixi

初心者が書いた OCaml 入門
Spotlight tips サイト内リンク集
1970|01|02|
2003|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|11|
2011|05|
2012|01|

2007-02-26 [長年日記]

% [あなごる][OCaml] e で 79B

ksk さんのとこで。 えー、どうやってんの、これ?

バイナリ使うインチキは、わしもちょろっと考えてはみたんだけど、どれも 115B を切れそうには思えなかったんであきらめてたんだよな。 あー、すごく気になる……

% [Mac] Terminal.app の tips

実は Terminal.app のウインドウは、コマンド+数字でフォーカスの切り替えができる。 でもデフォルトの状態だと、どのウインドウがどの数字に対応してるかわかんないから、イマイチ使い出が無い。

そんなときはターミナルインスペクタのウインドウタブで『コマンドキー』のチェックを入れると、ウインドウタイトルに、そのウインドウに対応したキーが表示されるようになるので、あとはそれを見て切り換えるようにすれば良い。 ついでにカラータブで見づらくならない程度に透明度を上げておくと、重なって下になってるウインドウのタイトルも読めるようになってなお良い。

わしの場合、キーボードから手を離さずにウインドウを切り替えたいシチュエーションって、端末をいじってるときくらいしか無いので (エディタも端末上で vim だし)、これで十分だったりする。 他のウインドウいじるときは、どっちみちマウス使うことになるんだから、それなら Expose で十分だ。

ちなみに Expose もマウス使うほど直感的じゃないけど、ウインドウ一覧状態にしたあと、tab でアプリケーションごとの選択とか、矢印キーでウインドウ選択とかできるんで、一応キーボードだけで操作できる (決定は Return キー)。 ほんとは矢印キーだけじゃなく、Ctrl+F,B,N,P あたりを使って選択できるなら嬉しいんだけど、残念ながらそれは不可。

% [雑談] 世の中には screen が大好きな人がたくさんいるが

わしはわりとどーでも良いと思っちゃうタイプ。 あ、セッションがブツブツ切れるような環境でリモート操作するときなんかは便利だと思うが、ローカルな操作ではありがたみがよくわからないというか。

複数のシェルを使いたいなら、複数の端末立ち上げれば良いじゃん、と思っちゃうし。 デカイ一つの端末窓を分割して使うくらいなら、小さい手頃なサイズの端末窓を複数使った方が便利だと思うんだけどね。 その方が他のアプリの邪魔にならないし。

端末間の移動はさっきも書いたようにキーボードでできちゃうし、他に screen のありがたみってあったっけ。 キーボードだけでコピペができる? vim 内部ならそもそも必要無いし、その他のシチュエーションって滅多に無いなあ。 せいぜいコマンドの実行結果を日記に貼るときくらいか。

端末の表示エンコーディングをウインドウごとに切り替えられる、とかもあったけど、Terminal.app では必要な状態に設定したウインドウを『別名で保存』で保存しておけば、utf-8 でも euc-jp でも好きに使えるし、あんまり必要無い。

そういや、わしが screen をあまり使う気になれない理由の一つに、Terminal.app のスクロールバッファが意味を為さなくなる、ってのがあるな。 まあ実用上は、screen の側でバッファを操作すりゃ良いんだから良いんだけど、それならそれで必要の無いスクロールバーは消したくなるのが人情。 でも Terminal.app って、それができないのよね。 結局消せないんだったら、スクロールバー使った方がマシじゃん、とか思っちゃうんだよなー。 あと、スクロールバーだったらホイール使えるしさ。

いくつも screen の啓蒙記事を読んだ気がするけど、いまいちわしの心に響くネタが無いんだよな。 それでも、FreeBSD で暮してた頃は結構使ってた (別窓開く分のメモリがもったいなかったから) んだけど、今の環境になって、そこら辺気にする必要が無くなったら、どうでもよくなってしまった。

% [あなごる][Erlang] Little Endian Calculator

短かく書ける自信は無かったけど、ネタ的に bit syntax を使って遊ぶのに丁度良いと思って書いてみた。 380B だった。短縮のための努力を全くしてないせいもあるけど、とにかく長い。

……いやまあ、長さはともかく。 タイムアウトで通らない...orz

なんか何を書いてもタイムアウトなんで、ただでさえ自己満足なのに、さらに自己満足度が高まってるというか何というか(苦笑

なので、何となく bit syntax 使ってる to little endian のとこだけ抜き出して晒してみる。

I=list_to_integer(X),
lists:map(
   fun(A)->io:format("~.16b",[A]) end,
   lists:reverse(
      lists:dropwhile(
         fun(Z)->Z==0 end,
         binary_to_list(<<I:4/unit:8>>))))

ところで、io:fwrite と io:format は名前が違うだけで同じ関数なんだけど、どっちかと言うと fwrite の方が名が体を表わしてる気がする。 ってことで、そっちを主に使ってたんだけど、どうも fwrite より format の方が個人的にタイプしやすいんで、最近は format を使うようになりつつあったり。 ……激しくどうでも良いな。

ほんとは bit syntax のとこを、

<<I:4/little-unit:8>>

にすれば、いきなりリトルエンディアンで持ってこれるんだけど (デフォルトはビッグエンディアン)、それだといらない 0 を落とすのがめんどいので、こんな形に。 そこら辺がんばれば、もっと短くなりそうな気もするんだが。 何はともあれ、bit syntax は他の言語ではあまり見ないちょっとおもしろい機能なんで、いじってると何か楽しい。

本日のツッコミ(全1件) [ツッコミを入れる]
% ksk (2007-02-27 11:47)

> e で 79B<br>まだ詳しくは言えませんが誰か他の人が100Bを切った時点でヒントを公開しようと思っています.<br>Show the way でバイナリを使っている suiginto さんあたりが気づきそうですが….

お名前:
E-mail:
コメント:

トップ «前の日記(2007-02-25) 最新 次の日記(2007-02-27)» 編集

日記ってのは本来、自分で読み返すためにあるもんだよなあ……
もしくは有名人になったら死後に本になったりとかか?

RSS はこちら

jijixi at azito.com