Apacheの2GB転送制限

ApacheでWikiのファイルをtar.gzで固めたファイルを転送しようとしたら、アクセス権限は正しいのに「Forbidden You don’t have permission to access XXX on this server.」が出てしまう。何やらよくわからんので、冒頭をいくらかコピーしてみたら、これは問題ないようだ。ごにょごにょやっているうちに、どうやらファイルサイズの問題らしいことが判明。

なんだが、「Apache ファイル サイズ 制限」とかで検索してもアップロードでのサイズ制限のことしか出てこない。

とりあえず、目的のファイルは2.9GBあるのだが、限界のファイルサイズを特定しようと、空データで指定サイズのファイルを作成してみることに。touch コマンドで空ファイルを作成できるので、サイズ指定オプションもあるかもと思ったが、Vineのtouchコマンドにはなかった。

そこで、別の方法を探すことに。

Solaris や Windows なら mkfile や fsutil コマンドがあるようなのだが、こちらもなかったので、次の dd コマンドを使う方法を試した。

「bs=1M count=2048」として2GBバイトのファイルを作成した時点で転送拒否となった(count=2047まではOK)。

ということで、「apache 制限 2GB」とすると、いくつか見つかった。

2.2以前ではでかいファイルは扱えないらしい。

確かに、見直すとエラーログにもそのような記述で残ってましたわ…。

[error] [client XXX.XXX.XXX.XX] (75)Value too large for defined data type: access to XXX failed

Apacheにコンパイルオプションを指定して構築し直したり、上位バージョンをインストールすれば対応できそうだけど、ひとまずデータを分割してサイズを縮小してみることにした。

ところで、上のリンクのvdrさんのところで、perlのtruncate関数を使って指定サイズのファイルを作成する方法が紹介されていた。こちらのほうがddを使うより早い(指定値はコマンドラインでなく -e 内部に記述した)。

touch foo.txt
perl -e 'truncate "foo.txt", 2*1024**3'

truncateの第1引数はファイルハンドルのみでなく、上の例のようにファイル名でもいいようだ。

ハマリ役

ドクターハウスのシーズン1を観てたら、エピソード14の「医師免許をかけた嘘 (Control)」で、24のニーナ(サラ・クラーク)が。

さらに観てたら、会長役かでボストン・パブリックのハーパー校長(チー・マクブライド)も。

どちらもシーズン越えて馴染んでいた元番組(と言っていいのか…?)での声優さんと別なもんで、違和感が(^^;;。

この前、日曜洋画劇場で「16ブロック」をやってた。レンタル落ちのDVDも買ってたんで特に必要ないと思ったが、なんとなく録画してみたら吹き替えが野沢那智!やっぱりブルース・ウィルスは彼じゃないとテレビで観てる気がしないね~。「うぁぁ~ぅっ」「あぅ」「クソッ」とかのダイハードあたりで出そうなところは特に。

モス・デフのほうは、もう少し軽い感じの吹き替えがよかったような感じも。DVDにはなかったかと思ってたら日本語吹き替えも当然の如く入ってたが、こちらは野沢那智じゃなかった。そう言えば、名前のスペルを見直したらブルースのほうは Willis だからカタカナで書くとウィリスか。

野沢那智の声だけを聞いてたら、どうしてもナッシュにも聴こえますなぁ~。で、ナッシュと言えばジョーの青野武

なぜか、クロスオーバーイレブンの津嘉山正種の声も浮かんでくる。今日一日のエピローグ。アジムスOPも頭に響いて参ります。

おー、来春2010/1/4~1/8に復活ですか。今年の夏のは聞き逃したようだけど、正月のは聞けるかな?

「今日と 明日が 出会うと き、クロス オーバー・イレブン。」 ―昔は夜中のような気がしてたな。亡くなった高良茂の「ぶっちぎりトゥナイト」やら「シャープと共に」沖縄単独の番組だったのか。「♪シャープで楽しい我が家」

とくると、「ジェットストリーム」。量販店でCDを買ったら、城達也のナレーションはろくになくてがっかりしたな。伊武雅刀の担当は終わっちゃったんですね。

さらに、「奈々子のドリームコール」で寝た子を起こす子守歌ですか。

いかん。脳内GCしてしまった…。

指十字のサイン

人差し指と中指を絡めるジェスチャーに「ラッキー!」だと言ったら、「鍵かける」って意味じゃなかったっけ?との話。

そんなのもあった気がするね、と、調べてみたら、西欧では「指十字」で幸運を祈るサインなんだとか(cross fingers for luck, cross one’s finger)。特にキリスト教との関連があるというわけでもないらしい。

似たので、人差し指と中指を揃えて前に曲げると引用符だと。

日本では、「エンガチョ、鍵かーけた」「バリヤー」でしたね。

エンガチョ自体で「鍵をかける」スペイン語だとの話も。

この語を探そうとしたけど、ちょっと見つからなかった。

SQLiteで正規表現

登録されているIDで、「9-35」「7-128」のようにベース番号と個別番号がハイフンで繋がれているものがあって、個別番号は桁指定は特になく、ゼロ埋めなどもされていない。

このIDの中で同じベース番号での最大の個別番号を取り出したりしたいのだが、これはどうするか。

(データベースを作成し直して各番号を別項目として登録するのが、まっとうな対応の気はするが…)正規表現での値抜き出しがSQLiteでもできないか調べてみる。

どうも現在のところは正規表現ライブラリを別で用意して、それを拡張として読み込む形になるらしい。

また、それが使えるようになったとしても、マッチ箇所にのみmaxを適用するというようなことができるのか不明。

ということで、ID項目を個別の番号項目に分けることも考えたが、とりあえず決め打ちで3桁ゼロ埋めで更新して対応しようかと思う今日この頃…。

[追記]
ベース番号とハイフンの桁は固定なので、それ以降を substr で抜き出してやればいいのではと試してみたが、

sqlite> select max(substr(id,4,100)) from foo;
99

目論見の動作はしたものの、SQLiteの比較が文字列で行なわれるので、数値での最大は求まらない(200番台のデータがあっても、上記のように99が最大となってしまう)。結局ゼロ埋めだかの桁揃えは必要なのだった…。

と思ったら、次のように文字列をabs()やround()の算術関数に渡すと数値として比較してくれるらしい。

sqlite> select max(abs(substr(id,4,100))) from foo;
260.0

小数点以下の「.0」を除くには、他だとcint()などの整数化関数が使えるものもあるようなのだが、こちらのSQLiteでは使えないので、強引に文字列末の2文字を削除:

sqlite> select substr(max(A),1,length(A)-2) from ...;

とりあえずは、こちらでいいかな?(※「WordPressでSQLがうまく書けない」問題のため上記は省略した記述になっていますm(__)m)。

リンク

携帯サイトのアクセスキー設定

HTMLのAタグにaccesskey属性を付加する。アイコン画像を表示する際には、各キャリアの絵文字を使用する。