iどさにっき shuffle 〜2007年2月下旬〜

by やまや
<< = >>

2007年2月21日(水)

anarchy golf

_ というわけで、参戦してみた。いっさいズルはなし。

_ example_comでこれまでの記録を7バイト縮めてみた。\ もしかしたらあと数バイトほど小さくできるかもしれないけど、それを越えて小さくするには、圧縮済みデータを外部コマンド経由で展開するしか方法はないと思う。たぶん。

_ exit statusも、一時はいちばんだったんだけど、15分でズルに抜かれた。\

_ invert caseはズルなし gawk なしのものを考えてみたけど、66バイトがが限界。ズルなしでこれより30バイトも縮めるのは到底無理。\

_ 気がつくとあっというまに時間が過ぎてる。時間つぶしにはもってこいだが、やらなきゃいかん仕事があるときにやるもんじゃないな……。


2007年2月22日(木)

きょうのあなごる

_ \

_ awk で参戦する場合の基本 tips。5バイトもある print 文をできるだけ使わない。awk の基本構文は pattern {action} であるが、{action} が省略された場合は {print $0} とみなされる。よって、pattern の中で、$0 に出力したい文字列を代入することができれば print はいらなくなる。{print 42} よりも $0=42 の方が5バイト小さい。あるいは、{action} の中では print せず、$0 に代入だけしていったん {action} を終了し、その直後にすべてにマッチするパターンを置いてそこで出力させる。すなわち、{action;$0="hoge"}1 とすれば {action;print"hoge"} よりも1バイト小さくなる。


2007年2月25日(日)

無題

_ 週末を楽しみに生きているというのに、風邪ひいてその休みを潰すってどうなのかね。金曜日、あんまり具合が悪いものだから早退してきてから日曜の昼すぎまでずっと布団の中。もったいねぇ。

_ 症状といえばひどい頭痛とちょっと喉をやられた程度で、それ以外とくにわるいところがないのがなお悪い。起きあがって何かしようとも思えないほどの頭痛なのに、いつものように腹は減る。何より意識がはっきりしてるので、退屈。

_ ヒマをもてあましたので、今日も あなごる。もっとほかにやることあるだろうと思いつつも、すでに解答が出てる問題のサイズを減らすのはロジックに頭を悩まさずにほとんどひらめきに頼る単純作業に近いので、わりと楽なんだよね。意識ははっきりしてるとはいえ、難しいことは考えたくないから。いつまでも awk でやってていいのかという気もしないでもないが、それは体調が回復してから。

_ つーわけで、いろいろ短縮したけど、中でも tennisbowling scorerHamming Numbersは awk でエントリされてるものだけでなく、全言語を通じていちばん小さいサイズまで減らせた。言語の汎用性の違いが、戦力の決定的差ではないことを教えてやる。ウソですごめんなさい。\


2007年2月26日(月)

1回休み

_ 頭痛はまだちょっと残ってるけど、この程度ならまあなんとかなるだろう、と準備をしていつもの時間に出ようとしたものの、アパートの階段でよろけた。自分では気がついてなかったけど相当弱ってたらしい。最初の3歩でこんな具合なのに、徒歩15分+電車40分+徒歩10分なんて到底無理。あきらめて、今日は休みまーす、とメールを投げてから沈没。

_ 頭痛はまだ残ってるものの、夕方にはだいぶよくなったので、週末にできなかった食料の買い出しやらを車で。が、少しも難しいことはない広い駐車場にバックから車を入れようにもうまくいかずに何度も切り返したり、歩道を歩いてる人がいることに追い抜く寸前まで気がつかなかったり、危ないことこの上ない。もうほとんど復活してるつもりなんだけど、こういうところははっきりとあらわれるなぁ。

_ でも明日にはなんとか復活してると思う。たぶん。きっと。


2007年2月27日(火)

復活

_ 自分はふつーに仕事してるつもりだったけど、相当あぶなっかしかったらしいぞ:-)。

無題

_ きっと忘れるのでめも。あちこちのルート証明書のリストを手に入れる方法。

_ その1。FreeBSD ならば ports の security/ca-roots にあるので、インストールすると /etc/ssl/cert.pem に置かれる。というか、インストールしなくても ports スケルトンにそのまま入ってる。

_ その2。IE でツール-インターネットオプション-コンテンツ-証明書-信頼されたルート証明機関で CA 全部を選択してエクスポートする。ただし、PKCS#7 で DER なのでそのままでは扱えない。以下のコマンドで変換する。

% openssl pkcs7 -print_certs -inform DER -in hoge.p7b -out cert.pem
Firefox は証明書を表示することはできてもエクスポートはできないみたい。どっかにあるんだろうけど。

_ その3。locate ca-bundle.crt を実行すると、どっかに転がってる可能性が高い(ぉぃ。

_ で、このルート証明書のリストはどんなときに使うかというと、サーバと SSL でおはなしするときに、

% openssl s_client -connect host:port -CAfile cert.pem
てな感じで指定する。指定しなくても接続はできるけど、サーバ証明書が正しいかどうかのチェックはできない。これ以外にも SSL ないろんなところで使うけど。


2007年2月28日(水)

無題

_ おっけー、なおった。と思いこんでたのに、朝起きたら頭が痛い。しくしく。いちばんひどいときの割れるような痛さじゃないけど、なんでそうなるかなぁ。そんなに体弱かったっけ。今日もおやすみ。

終わりのうしろ

_ シェルスクリプトでは exit の後は何を書いても無視される。シェルの文法を逸脱した文字列があってもエラーにならない。たとえばこういうスクリプト。

#!/bin/sh
sed 1,/^exit/d $0 | openssl base64 -d
exit
SGVsbG8sIHdvcmxkIQo=
SGV... なんてコマンドはないけど、exit の後にあるから Command not found にはならない。$0 はシェルスクリプトのファイル名なので、sed 1,/^exit/d $0 はスクリプト自身の先頭から exit までの行を削除する。削除した結果残るのは、exit のうしろにある SGV... の部分。これに対して Base64 のデコードをおこなう。実行すると、Hello, world! が表示される。

_ sh に限らず、exit やそれ相当のキーワード以降に出現する文字列はいっさい無視する言語は多い。スクリプトとデータを別ファイルにわけたくない事情があるときは、 この手を使って強引にひとつにまとめることができる。めったに使わないテクニックだけど、まあ、知ってて損はない。

_ ちうわけで、今日のあなごる。 bannerでわしが bash でエントリしたスクリプトで久しぶりにこれをやった。gzip 圧縮したデータをバイナリのままスクリプト末尾にくっつけるという凶悪なことを。よいこはまねしちゃいけません。


<< = >>
やまや