Debug- Official Website -


犬土偶日記

海の近くに住みたい

Debug日記の使い方

話題:Webプログラミングとか

2009年08月03日

久しぶりの快晴

最終更新日: 2009年08月04日 00時48分25秒

今日は朝からパチ屋へ行くつもりだつた。今週もスロ地獄だ。狙ひは緑ドンの528番。第2候補は529番。ダメなら530番。しかし、朝起きれなかつた。夕方まで爆睡。昨日らいんの湯で長時間過ごしたせゐで余分に疲れたのかもしれない。まあ起きれなかつたのなら仕方が無い。今日は休みだ。ちなみにZ店のサイトのデータを見たら524が9000枚以上出てゐた。予想が外れたらしい・・・と思つたら何と528が6000枚オーバー。どうも6つぽい感じがする。分からんけどな。打たない日に限つて予想が当るのか。明日は529を狙つてみよう。起きれないだらうけど。

外に出て畑を見た。トマトはもうダメだ。弟が早く処分しろと言ふ。未練がましくそのままにしてゐたが、やはりどう考へてももう無理だらう。トマトだけでなくキュウリも死亡濃厚だ。既に半分ぐらゐ萎れてしまつてゐる。キュウリももう収穫できないかもしれない。オクラだけは順調。と思つたら新しくついた実に粉みたいなのがついてゐた。アブラムシか?何かの卵か?手で払つたら全部取れた。虫に食はれた葉もあるが、葉を食つた虫はゐなかつた。夜の間に来るヨトウムシかもしれないが、カマキリが1匹ゐたので既にカマキリの餌食になつたのかもしれない。一応実を取つてからスプレーの薬を噴霧しておいた。もう萎凋病で全滅間際の悲惨な状態だが、写真を撮つたので載せてみる。泣けてくる。

トマト1 トマト2 オクラ1 キュウリ オクラ2

Debug 5th Liveの映像がダウンロードできなかつた問題を解決することにした。パチ屋で長時間過ごす地獄のやうな生活だつたので修正する暇が無かつた。ファイルに直リンすれば良いだけの話なのだが、ダウンロードログを取るためにCGIを使つてゐた。ファイルを置いてあるディレクトリはパーミッションを変へて普通にアクセスしただけでは落とせないやうにし、CGIプログラムにファイルを要求するとアクセスログを記録してからファイルを読み出してUAに送り出すといふ仕組み。何も問題は無いはずだつた。しかし何故か401MBの映像ファイルだけDLできなかつた。46MBのライブ音源MP3は落とせたし、実験のためにUPしたファイルも落とせた。なのに映像ファイルだけ落ちない。ファイルサイズに問題があるらしい。同じWMVのファイルで小さいのをUPして試したら落ちて来たし。といふわけで、このファイルサイズの問題を何とかすることにした。どこで制限が掛かつてゐるのか分からない。サーバーの設定なら俺には手が出せない。ただ、.htaccessの設定で変へることができるなら大丈夫だ。しかし標準出力のサイズ制限を指定するのなんてあつたかな。ググつてみたが見つからなかつた。.htaccessは関係ないかもしれない。CGIの仕様の問題だらうか。そんなの聞いたことも無い。Perlの仕様かもしれない。そんなのも聞いたこと無いけど。何が原因で出力サイズの制限を受けてゐるのかサッパリ分からないので手の施しやうが無い。ちなみに、CGIプログラムの最終段階のファイル出力部分はかうなつてゐる。$fileはファイル名、$filesizeはファイルサイズ。@fileはファイルの内容を読み込む配列。openするファイルのパスはセキュリティ上問題があるかもしれないから適当に変へてある。

#■ ファイル送出 or エラー

unless($file){
    print "Content-Type: text/plain;charset=EUC-JP\n\n"; print "Not Found"; exit;
}else{
    print "Content-Type: application/octet-stream; name=\"$file\"\n";
    print "Content-Disposition: attachment; filename=\"$file\"\n";
    print "Content-Length: $filesize\n\n";
    open(FILE, "../../*****/$file");
    @file = <FILE>;
    close(FILE);
    print @file;
    exit;
}

Content-Typeがapplication/octet-streamになつてゐるのはダウンロードさせるため。ファイルの種類を調べてそれに合つたMIME-TYPEを指定するとダウンロードしようとした人のPC内で関連付けられてゐるアプリで実行されてしまふ。まあURLを右クリックして「対象をファイルに保存」でOKなんだが、DebugサイトのSOUNDのページではformのsubmitボタンを使つてゐるのでそれもできない。application/octet-streamなら強制DLできる。それにファイルの種類をプログラムから調べる手間も省ける。最初はopen直後にprint <FILE>;とやつてゐた。ファイルを読み込んでそのまま書き出すといふやり方。それで上手く行かなかつたので、一度配列に全部読み込んでから書き出す方式にして、それでも上手く行かずに投げたのがこの状態。結局プログラムではなく、どこか別の場所で出力サイズの上限が設定されてゐるのではないかといふところで一旦保留してゐたのだ。ちなみに配列ではなくスカラーに読み込むと失敗する。バイナリファイルに改行といふのも変だが、Perlの場合はファイルハンドルからスカラー変数に読み込むと最初の改行までの1行を読み込む。配列に読むと全行読む。バイナリファイルをスカラーに代入すると何故か全部は読めない仕組み。

で、出力サイズの制限に関してGoogleで色々調べたのだが、全然それらしいものに辿り着けない。もしかしたら全然見当違ひのことをしてゐるのかもしれない。しかし原因が他に見当たらないのだ。ファイルを複数に分割してUPし、DLした後で結合して貰ふといふのも一瞬考へたが、それは面倒臭過ぎるだらう。UPろだでテレビ番組の動画を丸上げするやうなところではXxx分割なんてのが使はれたりすることがよくある。さういふ微妙にアングラな感じのに慣れてゐる人は何ともないだらうが、健全なインターネッターには酷だらう。そこまでしてDebugのライブ映像なんか見たくないだらうし。できれば直に落とせるのが良い。出力バッファのサイズとかさういふ問題なのかな。一度に書き出さずに小刻みに、しかも1回の作業でできないものか。バイナリファイルだけど全行読むまで行単位でスカラーに代入しつつ書き出してみようかと思つた。

#■ ファイル送出 or エラー

unless($file){
    print "Content-Type: text/plain;charset=EUC-JP\n\n"; print "Not Found"; exit;
}else{
    print "Content-Type: application/octet-stream; name=\"$file\"\n";
    print "Content-Disposition: attachment; filename=\"$file\"\n";
    print "Content-Length: $filesize\n\n";
    open(FILE, "../../*****/$file");
    while(<FILE>){
        print;
    }
    close(FILE);
    exit;
}

whileのループでPerl特有の激烈に省略した記法を使つてゐる。whileの条件式を$line = <FILE>とし、ループ内でprint $line;とした方が他の言語に馴染んでゐる人には分かりやすいかもしれん。同じことだけど。省略すると暗黙の了解で$_といふ変数に代入される。printの引数を省略すると$_が自動的に使はれる。といふわけで、FILEといふハンドル名で開かれてゐるファイルを、全部読み終るまで1行づつ読みながら書き出して行く。これなら1回で書き出されるサイズは1行分になる。これでどうかなと思つた。試してみたら見事に落とせた。良かつた。といふわけで、ずいぶん遅くなつたがDebug 5th Liveの映像を見たいやつはDLすれば良いよ。 http://orca.xii.jp/debug/sound/dl.cgi?file=5thLiveMovie

夏用の服でも買はうかと思つてヨシヅヤに行つてみた。でも3階の本屋で立ち読みしただけ。その後に三洋堂に行つてさらに立ち読み。そして本を1冊買つて帰宅。飯を猛烈に食つて日記を書いてゐる。もう0時半。夕方起きたばかりだから今日はまだ何もしてゐない感じがする。明日パチ屋へ行くためには早く寝る必要があるんだらうが、全然眠くない。明日もパチ屋へ行かないんだらうな。といふか、今月は1回も行かないなんてことになるかもしれん。先月の鬼稼動の反動が一気に来さうな気がする。休み始めるとアホみたいに休むからな。秋に種子島に行くためにはもう少し稼がないとダメだから盆の極悪営業までは行つた方が良いんだらうと思ふ。でも行きたくないな。俺が行かない日は連日9000枚クラスの出玉があるのに俺が行く日はショボいからな。狙はれてる。報はれん。どうでもいい。ウンコ食つて死ね。久しぶりにFXでもやらうかなと思つてももう相場が動く時間は終りだ。読書とギターの練習をして眠くなつたら寝よう。

話題:Webプログラミングとか

Info.
公開日時2009年08月04日 00時33分58秒
最終更新日2009年08月04日 00時48分25秒 (更新回数: 2)
本文文字数4970文字 (タグ込み)
URLhttps://orca.xii.jp/debug/diary/diary.cgi?id=dogoo;date=20090803
RSS1.0https://orca.xii.jp/info/diary-dogoo.rdf
Comments

コメントはありません。

コメント投稿フォーム
文字色              
  • 名前を省略すると「名無しDebugger」になります。
  • メールアドレスの入力は任意です。
  • 海外からのコメントスパム対策のため、表示された漢字の読みを必ず入力してください。
  • 本文は必須項目です。投稿する場合は必ず記入してください。タグは使えません。
  • 改行が1つ入力された場合は強制改行として処理されますが、2つ以上連続する改行は段落の終了として処理されます。
  • 本文の行頭に「>」のある文は引用としてマークします。引用でない部分の冒頭に「>」は付けないでください。
  • コメントの削除は管理者若しくは日記執筆者しかできません。書き込む時は注意しましょう。
  • 全部記入が済んだら投稿ボタンを押す前に一度読み直して推敲しましょう。