雑記

2000|01|
2003|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|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|
2007|01|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|09|11|
2009|02|03|05|06|07|08|10|11|12|
2010|01|03|04|05|06|07|08|09|10|
2011|05|06|09|10|
2012|03|07|09|12|
2013|01|02|04|05|07|08|10|11|
2014|04|05|08|10|12|
2015|01|05|
2016|09|
2024|06|
2025|01|

2007-08-01 [長年日記]

[Ruby] カッコとプラス

いきなり問題です。以下の式のを評価したとき、$1には何が入るでしょう?

"12345abc" =~ /^(\d)+/

"12345"だと思った人。それは私が元々書きたかったプログラムの結果です。

"1"だと思った人。私もこれに気づいたときにはそうなるんじゃないの?と思いました。さらに$2 = "2", $3 = "3", ...とか。

というわけで、答えは上のいずれでもなく、"5"でした。

憶測ですが、括弧のカウンタがあって、上記の例では$1に「\d」にマッチする結果を代入する、という評価が直後の「+」によって繰り返されるが、括弧のカウンタはインクリメントされない。とかいう実装なんでしょうか。そう考えると実装としては素直か(えらそう)。

ではこれを踏まえて次の問題。以下の式のを評価したとき、$1には何が入るでしょう?

"12345abc" =~ /^(\d{2})+/

答えは"34"。2個ペアの数字を先頭から順に評価するので、"34"の後ろの"5a"はマッチしないと。

で、素朴な疑問として、こういう仕様で何かうれしい場面ってあるんでしょうか?なんかありそうな気がするんですがそれに思い至らない自分が悔しくて。

最後に問題。"12345abc"から"45"を取り出す正規表現は?


2007-08-06 [長年日記]

[FreeBSD] リモートメンテナの救世主、shutdown系コマンドの"-n"オプション

quotaをいろいろいじってから設定をリセットしようと、

# rm /fs/quota.user
# touch /fs/quota.user
なんて馬鹿なことをやると簡単にOSがハングアップします。どうもディスクへの書込みが発生した時点でquotaのチェックに行こうとしてクォータファイルの整合性が取れずに固まるようです。

で、rebootやhalt, shutdownは内部でsyncを呼んでキャッシュをディスクに書き込もうとするので、上記のような状態になると普通の方法では実行できません。そんな時のためのオプションとして、これらのコマンドには"-n"というのがあるようです。マニュアルには「This option should probably not be used.」なんて書いてありますが、電源スイッチによる強制終了よりはましですし、なにより現地に行かなくて済むという点で、リモートメンテナンスには欠かせないオプションです。

と紹介風に備忘録を書いてみる。ハングアップさせたのも、"-n"オプションを知らずに現地訪問したのも私です_| ̄|○


2007-08-16 [長年日記]

[FreeBSD][IE] squirrelmail の添付ファイル周りの不具合解消

squirrelmail-1.4.10a + IEという組み合わせで、添付ファイルに日本語名を使うとダウンロード時の保存ダイアログで文字化けする。「squirrelmail 添付ファイル 文字化け」で検索するといくつか情報が出てくるのですが、古いバージョンでの話だったり、ちょっと怪しい情報だったりしたので、本腰を入れてソース解析。

最終的なパッチはこちら。パッチは短いのですが、そこに到達するまでが長かった。

このパッチにより、手元の環境では以下の問題が解消しています。

  • 日本語名の添付ファイルをダウンロードしようとすると、保存ダイアログのファイル名が文字化けする
  • 日本語に限らず、長い名前のファイルを添付して送信しようとしたときに、ファイル名に余計なスペースが入る
  • 拡張子が例えば「.doc」である添付ファイルを開こうとすると、ダンプと思しき文字列が表示される

このパッチではMacOS + IE という組み合わせで問題が残るような気がしますが、検証環境が無い&Safari等他のブラウザに副作用が出そうなので放置の方向で。mime.phpに対するパッチもisIEで場合わけしなくてもFirefoxでは動作することは確認したのですが、他のブラウザまで検証している暇が無いのでお茶を濁してます。

本日のツッコミ(全1件) [ツッコミを入れる]

- myam [「squirrelmail 添付ファイル 文字化け」あたりで検索していて、漂着しました。 もしかして私の存じているお..]