Just another Ruby porter,

〜2011年1月中旬〜


<Prev(,) | Next(.)> | Recent(/)>> | RDF

2011-01-11 (Tue)

ZHAM ALPHA 6

Description:
LZHAM (LZ, Huffman, Arithmetic, Markov) is a general purpose lossless data compression library that borrows many ideas from LZMA but purposely makes several key tradeoffs that favor decompression speed over compression ratio. LZHAM's compression ratio is currently approximately .5-1.5% less than LZMA, but decompresses approximately 2-3x faster on a Core i7.
LZHAM's decompressor is intended to be particularly fast on embedded devices, handhelds and game console platforms.

2011-01-12 (Wed)

PayPalからのメール

ふとgmailでis:unreadしてみたら、PayPalからのメールがいっぱい出てきた。
どうもフィルタで問答無用でPayPalからだったらarchiveしていたようだ。
なんでこんな設定にしたんだろう?って これだな。たぶんこのときに設定したんだな。ずっと放置していた。
あれ、アカウント消されてなかったんかい。
まあ、メールも大した内容じゃないからよかったが。


2011-01-13 (Thu)

Old Magician

問題読まなくてもoutput見れば何を表示すべきかわかる。
要は黒の個数の偶奇で決まるので2つめの数字だけで見ればいい。
と、えらそうに書いているが気づいたのは締め切り2日前だったという。


2011-01-14 (Fri)

svnadmin dumpとxzとの相性のよさ

Rubyのsvnリポジトリをsvnadmin dumpしたら26GBにもなって驚いた。
素のリポジトリは786MBなのになんでこんなに大きくなるんだ?

それはそれとしてgzip, bzip2, xzで圧縮してみたらちょっと信じられない結果に。

% ls -oh ruby-svn.dump*
-rw-r--r-- 1 eban  26G 2011-01-14 10:08 ruby-svn.dump
-rw-r--r-- 1 eban 4.9G 2011-01-14 23:14 ruby-svn.dump.bz2
-rw-r--r-- 1 eban 7.1G 2011-01-14 20:40 ruby-svn.dump.gz
-rw-r--r-- 1 eban 139M 2011-01-14 19:30 ruby-svn.dump.xz

xzはどうなってんの、これ?信じ難いのでmd5sumとってみた。

% time md5sum ruby-svn.dump; time xz -dc <ruby-svn.dump.xz | md5sum
506c2161bfdbfeacb399d0dead52e567  ruby-svn.dump
md5sum ruby-svn.dump  90.35s user 14.61s system 39% cpu 4:26.06 total
506c2161bfdbfeacb399d0dead52e567  -
xz -dc < ruby-svn.dump.xz  56.67s user 5.15s system 87% cpu 1:10.56 total
md5sum  56.73s user 4.49s system 86% cpu 1:10.55 total

合ってるよ。すげー。って、xzで伸長したほうが速いんだな。
このくらいのサイズの差があるとIOのreadよりも計算のほうが速いってことか。
いろいろと予想外だ。


2011-01-15 (Sat)

Character distance

例によって:

73B gets.chars{|c|a=$_.index(c);$_[a]="\0";puts c+": #{B-a}"if B=$_.index(c)}
64B i=-1;gets.chars{|c|$_[i+=1]=0;puts c+": #{A-i}"if A=$_.index(c)
59B i=0;gets.chars{|c|puts c+": #{A-i+1}"if A=$_.index(c,i+=1)}
56B gets;puts$&+": #{A+1}"if A=$'.index($&)while sub! /./,""
55B gets;($_=$';puts$&+": #{A+1}"if A=$_.index($&))while/./
54B gets;puts$&+": #{$'.index($&)+1}"if($_=$')[$&]while/./
52B gets;puts$&+": #{A+1}"if A=($_=$').index($&)while/./

gsubではできないと思い込んでしまったなあ。あとはこれか。

51B gets;puts$&+": #{A+1}"if(A=($_=$').index$&)while/./

2011-01-16 (Sun)

iriver T30 プレイリスト

まったくもって今更ではあるけど、iriver T30でプレイリストが使いたくなった。
ぐぐったら Playlist format for iriver T50がヒットした。
なぜかUTF-16BEなんだな。ほぼバイナリでちょっと面倒。

とりあえず、全曲をプレイリスト化するスクリプトを作成。
引数にマウントしたディレクトリを指定するとカレントディレクトリにplaylist.plaを作る。

# coding: UTF-8

playlist = nil
Dir.chdir(ARGV[0]) do
  playlist = *Dir.glob("**/*.{mp3,ogg}")
end

n = playlist.size

open("playlist.pla", "wb") do |f|
  f.print [n, "iriver UMS PLA"].pack("Na508")
  playlist.each do |file|
    file = "/" + file
    f.print [File.dirname(file).size + 2, file.tr('/','\\').encode("UTF-16BE")].pack("na510")
  end
end

いちおうT30でPlaylistsフォルダに置けば読めた。ファイル名は拡張子を.plaにすればなんでもよさげ。
m3uファイルを作ってPlaylistsフォルダに置いてみたが、さすがに無理だった。


2011-01-17 (Mon)

iriverのプレイリスト形式

512バイトのあたまにある2バイトでディレクトリの長さ的なものが本当に使われているか実験してみた。
id3tagをつけないとファイル名を表示するようになるが、まさにこの表示する名前は長さで決まっていた。
0にすると絶対パス的なものになる。ものすごく長くなって非常にうっとうしい。

T30自身でファイルを消すとなぜか再生モードがリセットされてしまう。
一方プレイリストにも独立した再生モードがあるんだけど、こちらはちゃんと保持される。
プレイリストを使い始めたきっかけはリセットされるのがうっとうしいからだったりする。


2011-01-18 (Tue)

toggleCASE

ふと思いついた方法で縮むかと思ったが、例外がありあまり縮まなかった。
非常に惜しいんだけど、上位の二人はこっち方面じゃないのかな。


2011-01-19 (Wed)

ssh -X

あるときからssh -XしてもDISPLAYが設定されない状況が続いてしばらくほっといたんだけど、
どうもUbuntuがサーバだとだめみたいという感じだった。3台ともだったので。
で、今日試したら3台ともokだった。どこかの更新でなおったのか?なんだったんだろうな。


2011-01-20 (Thu)

strikethrough_H_H_H_H_H_H_H_H_H_H_H_H_Hbackspace converter FIXED

正規表現だけかと思ったが、leonidさんの>を含めるかどうかで1B違うというのはなかなか気づかない。
うまいな。と思ったらPerl陣はみんな気づいていた。


<Prev(,) | Next(.)> | Recent(/)>> | RDF


WWW を検索 jarp.does.notwork.org を検索

わたなべひろふみ
Key fingerprint = C456 1350 085F A320 C6C8 8A36 0F15 9B2E EB12 3885
Valid HTML 4.01!