富山に帰るにあたって,いつも通りに上越周りの切符を買ったのが10月23日,その日中越地震が起き,買い換えたのが数日後.ほくほく線復帰の報を知ったのが11月1日.また買い換えたのが11月2日.
都合3回切符を買ったわけだが,結局,払い戻し手数料らしきものは一銭もかかりませんでした.
上野-富山間を買ったとき,「自由席ですが,東京からでなくていいですか」と訊かれたので,どんなに混んでいるのかと思いきや.
ガラガラ.
しかも,全席自由席(除くグリーン車).
じゃあ,ほくほく線が混んでいるのかと思いきや.
いつも人並みが乱れる乗換え口に人はまばら,1つしかない自由席禁煙車両も好きに使ってくださいといわんばかりにガラガラ.
そんなもんか,と思った.
大体見てみたいものは作ったかな~と思うので,いよいよファイルを選べるようにする.
まず,modeが選択されてなかったら日付と処理モードを選ぶ初期画面を表示するのだ.最初,それを初期画面表示メソッドとしてinitというのを作っていたのだが,入力にエラーがあったときはエラー表示と共に,選んだモードなんかは保持した上でもう一度初期画面が出ると便利だなぁなどと考えていたら,条件やら何やらが面倒になってきた.
それと,「何月何日から何月何日までの範囲で入力してください」と表示させないとどこから見られるか分からないやと,過去ログファイルの表示に頭を悩ませる.Dir.entriesを使えるとラクなんだけど,セキュリティエラーがでるのでまた悩む.
どうにかロジックを組んで,画面を表示させていざ,過去ログ選んでみたら,おっとまたセキュリティエラー!!
そうなのである.外部からの入力を使ってのファイル操作はセーフレベル1ではできないのだ.だめだ,こればかりは他の方法って訳に行かない.
うんうん唸って,悩んだ挙句,怖かったけど,入力文字列をチェックした上で,禁断のuntaint.こうなると,上述の最古ファイル~最新ファイルを得るためのメソッドにDir.entriesを使わないのもなんだなぁと思い,結局,いろんなものを書き換えた.
前に書いた最新ログ取得メソッドlastlogは,
def lastlog
logfilename = Dir.entries(LOG_DIR).sort[-3]
if /^access_log_\d{8}$/ =~ logfilename
logfilename.untaint
logfilename = LOG_DIR + logfilename
end
return logfilename
end
となった.
一番古いログファイルを得る方はしたがって,
def oldestlog
logfilename = Dir.entries(LOG_DIR).sort[2]
if /^access_log_\d{8}\.gz$/ =~ logfilename
logfilename.untaint
logfilename = LOG_DIR + logfilename
end
return logfilename
end
となる.
最新・最古ファイルが決まると初期画面が決められる.
def init(log="", date="", mode="")
/(\d{4})(\d{2})(\d{2})/ =~ lastlog()
last = [$1, $2, $3]
/(\d{4})(\d{2})(\d{2})/ =~ oldestlog()
old = [$1, $2, $3]
print <<EOF
<form action="#{SCRIPT}" method="get">
<fieldset>
<legend>ログファイル選択</legend>
<p>#{old[0]}年#{old[1]}月#{old[2]}日~#{last[0]}年#{last[1]}月#{last[2]}日から選択</p>
EOF
if log == "last" || log == ""
print <<EOF
<label><input type="radio" name="log" value="last" checked>最新</label>
<label><input type="radio" name="log" value="old">過去ログ</label>
<label><input type="text" name="date" size="10">(半角数字,YYYYMMDDという形式で入力すること)</label>
EOF
else
print <<EOF
<label><input type="radio" name="log" value="last">最新</label>
<label><input type="radio" name="log" value="old" checked>過去ログ</label>
<label><input type="text" name="date" size="10" value="#{date}">(半角数字,YYYYMMDDという形式で入力すること)</label>
EOF
end
print <<EOF
</fieldset>
<fieldset>
<legend>モード選択</legend>
EOF
print '<label><input type="radio" name="mode" value="view"'
print " checked" if mode == "view" || mode == ""
print ">アクセスログ</label>\n"
print '<label><input type="radio" name="mode" value="error"'
print " checked" if mode == "error"
print ">エラーログ</label>\n"
print '<label><input type="radio" name="mode" value="trace"'
print " checked" if mode == "trace"
print ">サイト内遷移</label>\n"
print '<label><input type="radio" name="mode" value="robot"'
print " checked" if mode == "robot"
print ">クローラー挙動</label>\n"
print <<EOF
</fieldset>
<input type="submit" value="実行">
</form>
EOF
end
やっと部品ができたので,呼び出し側のメインプログラムを以下のように書き換える.
cgi = CGI.new
mode = cgi.params["mode"].to_s
log = cgi.params["log"].to_s
if mode == ""
header_out("ログ/モード選択")
init()
footer_out()
else
if log == "last"
file = lastlog()
else
date = cgi.params["date"].to_s
unless /^\d{8}$/ =~ date
header_out("入力エラー")
print "<p>半角数字で8桁(YYYYMMDDの形式)を入力してください.</p>\n"
init(log, date, mode)
footer_out()
exit
else
date.untaint
end
file = "#{LOG_DIR}access_log_#{date}.gz"
unless FileTest.exist?(file)
header_out("ファイルがありません.")
print "<p>日時の指定が範囲内か確認してください.</p>\n"
init(date, mode)
footer_out()
exit
end
file = "|/usr/bin/gunzip -c #{file}"
end
case mode
when "view"
log_view(file)
when "error"
errorlog_view(file)
when "trace"
trace_view(file)
when "robot"
trace_robot(file)
else
header_out("モードエラー")
print "<p>有効なモードを取得できません.</p>"
footer_out()
end
end
いちおう,動いてるみたい.
じゃ,あとは,集計のことを考えるか.
Tさんより留守電が入っていた.
「18時半,駅前の●●です」
……
……
……
目的語はなんだよ!!
●●ってどこだよ!!
自動的に消滅するメッセージだってもうちょっと詳しいぞ!!
友人NKに「原作はすごいことになっててさっぱり分からん」と言われたので,そうかぁ,と思って本屋に行ったら,最新刊が出ていた.
へぇ......ウソップ離脱かぁ.意外だねぇ.(ん?ロビンも離脱してる事になるのか?)
あの船から誰か1人降ろすとしたら――う~ん,私ならゾロ降ろすけどなぁ.困んなそうだし(いろんな意味で).
あ,ゾロ嫌いなわけじゃないです.ウィルスメール送んないでね(はぁと).
え~と,嫌いじゃない証拠に.ゾロの話を.
ずっと思ってたんですが,百八煩悩鳳って,三十六煩悩鳳の3つ合わさったヤツだよね(漢字あってんのか?).
3本の斬撃が一点収束する.
ヤマトの主砲みたい.
......
ごめんなさい,もうしゃべりません.
One piece (巻35) (コミック)
上越新幹線,電光掲示板でブリジストンの宣伝をしていた.
「ブリザック,雪道でも○○!。」
最後の句点が気になって仕方がありません.
- 姉
- 兄ちゃんと会ったりせんの?
- 私
- いや?どこに住んどるか知らんし.
- 姉
- 品川に通っとるんじゃないの?
- 私
- そうなん?御徒町かと思っとった.
- 姉
- 会おうと思ったら会える距離なんにねえ.
- 私
- 自分だって東京に住んどったら会っとらんと思うよ.
でも,この人なら用事なくても会っとるかもしれんなあとも思った.呼びつけて.
用事があって,職場に電話を掛けたことがある.
知らない人が出て,むこうも「あんた誰」みたいな態度を隠さない.名前を尋ねてみたものの「Nです」というその名前に聞き覚えがない.10月移動でやってきた新人かと見当をつけ,今誰がいるかと訊いて,代ってもらった.
あとで分った話だが,Nというのは部長でした.
この場合,部下を忘れた上司と上司を忘れた部下,どちらが罪深いでしょうか,神様.
(ちなみに,課長の名前も忘れました)
アクセスログを集計するとしたら何が分ったらいいかなあ.ユーザーエージェントはWebalizerで提供されているからいらない.
やっぱ,個々のhtmlファイルへのアクセス数か.もちろん,Webalizerでも分かるには分かるんだが,画像だとか外部スタイルシートだとか要らない物もいっぱいあるからなぁ.ディレクトリごとの集計もしてみたいな.
そんなとこかなぁ.
待望のFireFox正式版が出ました.しかし,混んでてまだダウンロードできてません.実のところ,待ちきれずにPR版は使っているんですがね.
ブックマークの操作性が気に入っています.あと,何よりも軽いところが.でも,ときどきネットバンキング等で使えないときがあって困ります.つーか,UAで跳ねないでくれよ,
ちっくしょ~というときがありますので,時々だましてます.
そういや,集計の前に,処理ファイル(つまるところ,何月何日のログか)を表記する部分を作ろうと思っていたのを忘れてた.(なんせ,このために<h1>の次が<h2>を飛ばして<h3>だったのだから)
def date_out(file)
/(\d{4})(\d{2})(\d{2})/ =~ file
date = [$1.to_i, $2.to_i, $3.to_i]
print <<EOF
<h2>#{date[0]}年#{date[1]}月#{date[2] - 1}日午前3時~#{date[0]}年#{date[1]}月#{date[2]}日午前3時の記録</h2>
<hr>
EOF
end
どうしようか迷ったんだけどねぇ.ちゅうのは,午前3時~午前3時のところ.今のところはそういうスパンでログファイルをくれてるみたいなんだけど,いつもそうなのかは分かんないし,といって,アクセスがなければ記録されないんだから,中身からも割り出せないし,ファイル自体の作成時刻は午前4時57分でまったくズレてるし,ということで妥協した.
『武装錬金』をパラパラと見ました。
キャプテン・ブラボーという人が出てきますね?
この人を見たときに私が思い出したのは,キャプテン・アメリカ等のアメコミキャラではなく,ジャン=ピエール・ポルナレフでもなく,超絶倫人ベラボーマンでした.
以来,「ベラボー!」という声が頭の中を離れません.
どうにしてください.
武装錬金
超絶倫人ベラボーマン 【PCエンジン】
数週間前のことだが,飲み会でイタリア料理屋に行った。
その席で係長曰く.
「今日はお茶漬けがないのと(とKさんを見),日本酒がないのが(と私を見て),心配だったんですよね」
いや,別にとりたてて日本酒が好きなわけではないんだが.お子様だからあまりアルコール度の高くないカクテルの方が好きなのに,なんだってそんな誤解が生じているのだろう?
Kさんはの方以前,係長に「おごるからなんでも注文していいよ」と言われ,いきなりお茶漬けを食べたらしい.
うちの斜め前には酒屋がある.
前から一度入ってみようと思っていたのだが,そもそも,うちで飲むことをあまりしないので,ずっと延ばし延ばしにしていた.(これにも誤解があって,家には日本酒の瓶がズラリと並んでいると信じて疑っていないと言われたことがある)
今日,フラリと入ってみた.
(上述の舌の根も乾かぬうちになんなんだが,)日本酒を買おうと思って入ったのに,あまり種類がない.よく分らなかったが,冷やに良いマークが入った物を(私はほぼ冷やしか飲まない)買ってみた.
そして,久々におでんを食べた.
これで晴れて月でも出てりゃ良かったのにと思う秋の夜.
買った日本酒,720mlだったんですが,私はたいてい1合弱ぐらいしか飲まないので,当然余る.でも,日本酒って開けちゃうとダメになるんですよね.だから,ちょっとずつ飲もうと,徳利に入れて準備完了.
PCを立ち上げてみて某チャットの開催を知り,久々に参加してみようと23時に突入したところ,楽しくて,3時ぐらいまで眺めてしまった.その間,口寂しくなるたびに徳利に継ぎ足していったら,なんかほとんどなくなってしまった.おかしい.いつの間に.
ところで,私は二日酔いというものが分らないんですが,どういう状態になるんでしょうか?よく,大声出されて頭を押さえているという描写があるけど……??
今現在頭がぼんやりしているこの状態のことなのか?でも,どっちかって言うと寝不足なだけな気がする.
二日酔いにはコーヒーがいいと聞くので紅茶を飲んでみました.(もちろん関係ない)
んなわけで,ひさびさにチャットをやっていたわけなんですが,なんでかしらないけど,文字を書いている途中で句読点やかっこを書こうとすると勝手に全角英数字しかはいらなくなったり,普通のかな入力になったりして(私は家では親指シフター),えらい苦労しました.
それで,途中からローマ字入力にしたれとおもって切り替えてみたら,普段はごく普通に家では親指シフト,職場ではローマ字入力のバイリンガル(?)なのに,自分が何を打ちたいんだか分らなくなるという現象にぶち当たりました.
やっぱり,急に変えるのは難しいってことか.
カモン,体力勝負な日々.
カモン,イベントスタッフな日々.
おお,この日が来るまでに体力をつけておきたかった.
誰か,私に腕力をください.
昨日,ちょっと遠出をしようとして自転車置き場に行ったら,あら,不思議.自転車がありません.
盗まれた?
しかし,アホな私は時々「自転車で出かけたのに,それを忘れて歩いて帰ってくる」という特技を発動するので,置き忘れたのかもしれません.
そこで,心当たりの道沿いで自転車を物色しながら歩いている(怪しい)と,携帯が鳴っているような気がします.いや,鳴っています.
「あのですね,PC同士を繋ぐにはどうしたらいいですか?」
いや,Iよ,私はPCサポートじゃないんだが.
そして,自転車は見つかりませんでした.
自転車は見つからないので,盗難届を出してみました.まあ,見つからんだろうなあ.もう一度買うかなあ.自転車ってけっこうするよなあ.ま,いっか.そろそろ雪の季節だし.
って,東京,自転車に乗れなくなるほど雪降らないよ!!
うわ~,なんか損した感が倍増しになった.
昨日のことですが,いつもなら自転車で行くところにバスで行こうと思ったわけだ.ところが,バスの乗り方が分らなかった.
まず,停留所が見つからない.片割れは見つかるんだけど,私の行きたい方向の停留所が見つからない.探し続けて,バス停2つぐらいを歩き,ようやく停留所を見つけた.
ところが,今度はバスが止まらない.止め方という物があるのか?ねえ,あるのか?
そんなわけで,昨日は出かけるのをあきらめてしまった.
今日は,そこで,駅前までわざわざ出かけ,みんなが並んでいるところにチンとしていた.
乗れたよ!
おめでとう,自分!
そんなわけで,出かけていった先の映画館で見るつもりが全くなかった『ハウルの動く城』を観てしまった.(ちょうどいい時間のがなかったんで)
普通におもしろかった.やっぱり,映画を観るなら日曜日の夜に限る.
惰眠をむさぼっていたところ,携帯のバイブ音が聞こえたのに奇跡的に気づいた.ペペロンチーノ係長(仮名)である.
- 係長
- おいよ,俺.待ち合わせ場所,変更.
- 淙穂
- どこに行けばいいんですか?
- 係長
- 日本橋高島屋入り口.4時半.
- 淙穂
- 入り口って1つなんですか?
- 係長
- な~ん,狭いからすぐ分っちゃ.
頭をひねりながらえっちらおっちら指定の時間に指定の場所へ.係長の姿はない.携帯でTEL.
- 淙穂
- あの~,高島屋にいるんですけど.
- 係長
- おま,どこにおんがんよ.
- 淙穂
- 地下ですけど.
- 係長
- 地下ぁ?なんで地下におんがんよ!
- 淙穂
- 地下鉄で来たからですよぅ!
それで,1階に上がってみたところ,1階にも入り口はいくつかある.
そりゃそうだよな~.デパートに入り口が1つしかなかったら,なんだ,消防法にだって引っかかるだろ.女性が飛び降りられなくてパンツが普及したりするだろ,なあ?
だいぶ前に買ってだけおいた無線LANルーターを接続しようと,昨晩,重い腰を上げた.
しかし,無線以前の問題で,説明書の通りやっても有線ポートすらつながらん.
この間,情報を得るためにLANケーブルを差し替え直してインターネットに接続し……とやっていたのだが,これがまた面倒である.
ADSLモデムのDHCP機能がバッティングしているかもしれないというので,無効にしようとするが,設定の仕方を忘れ去っており,NTT東日本のページを漁る.しかも,そこで見つけてから,その方法が書いてあるマニュアルを手の中に握っていたことに気づき,脱力する.それでもまたできない.
久々の大はまり.悪戦苦闘の末,ふて寝する.
そして,朝,改めて立ち上げ直したが,状況が変らん.
付属CDロムの中の詳しいマニュアルを探し,デフォルトゲートウェイを設定しろという記述を見つけた.んでwinipcgfを実行などと書いてあるんだが,そんな物はない.しばらく,そこでまたはまる.
やっとこさ見つけた設定の画面を見ていてふと気づく.
PCはLANの中なんやから,IPは自動構成じゃなくて決めうちで行かんとダメなんじゃ?
ええ,IPとサブネットマスクとデフォルトゲートウェイを設定したら,つながりました.
そして,また気づいた.
昨日,USBケーブルを買ってきたんですが,これでプリンタをネットワークプリンタにできるので,USBケーブルは余ってしまう.
……私にはストレートケーブルが足りないわ!
いや,それもルーターに付属してたっけ.
……メソメソ……
なんか,まだはまってますよ.
問題点は,ADSLモデムの設定画面に行けなくなったこと.IPがバッティングするからかと思って,ルーターの方をずらしてみたけど繋がらず.
そして,無線LANで繋ぎたかった,我がMURAMASA君はアクセスポイントには繋がってるみたいなんだけど,DNSサーバーを見つけられず,WWWは使えない.まったく……
昨晩は,アホなことばかりしていた.
まず,風呂にお湯を入れて,15分のタイマーが鳴ったので,止めに行ったら,栓をしてなかった.
次に,気を取り直して,栓をしてからお湯を入れたら,タイマーをかけ忘れて,お湯があふれかえっていた.
さらに,湯船につかって,お湯がさらにあふれてから,先に身体なり髪なりを洗えば湯が有効に使えたことに気づいた.
最後に,腕時計をはずさずにお風呂に入っていたことに気がついた.
疲れているんですか,私は.
- I君
- 懲戒免職と諭旨免職の違いってなんですか?
- Sousui
- なぜ,それを私に訊くんだ?
- Yさん
- (横から)知ってそうだからだよ.
素直に受け取るべきか,それとも,深読みするべきか.
YさんとバイトのTさんが,名簿のチェックをしている.
- Tさん
- この人,書類にはこういう字を書いているんですけど,リストではこうなんですよ.
- Yさん
- うわ~,変った字だねえ.
- Tさん
- 同じ漢字なんですかね?
- Yさん
- 調べとくよ.うちの課に漢字マスターいるから.Sousuiさ~ん!
- Sousui
- (私かい!)
- Tさん
- え?Sousuiさんって英語ぺらぺらなんじゃないんですか?
- Sousui
- (どっからそんなガセネタが~!しかも,今,関係あるのか,それ!)
ちなみに,辞書ならぬ身なので,分るべくもありませんでした.簡体字っぽかったし.
こないだから悪戦苦闘しております,無線LAN構築.(実家で構築したときはこんなに困らなかったのに)
実は,有線で繋ぐPCからはインターネットに接続できるようになったものの,じゃあ,無線の設定しようか,と設定画面を出そうとしてはたと気づいた.おかしい,ADSLモデムの方の設定画面が出ない.
しばらく弄くっていて,ADSLモデムの方の設定画面が出るようになったら,今度はアクセスポイントの方の設定画面が出ない.
格闘すること,数日.
あ゛.IPの3つめまで一緒にしとかなきゃいけないんだったっけ.
がーーー,設定合わせたら出たよ,あっさり.IPがADSLモデムとアクセスポイントでバッティングしてるんだと最初に勘違いしてたのが敗因だったな.
で,現在,無線LANのほうの設定をして,繋がったはいいんだが,なんと,WEPを使うと繋がらない.マジか.ただでさえ無線LANはセキュリティに気を遣わなきゃならんのに.
なんか,疲れました.ええ,ホントに.
『イメージ・シンボル辞典』を家で見てぇ!!!!!!
NKが持ってるんだよなあ,確か.貸してくれんかなあ.遠いから無理か.
あ~,どうすっかなあ,前から欲しかったし,買っちまおうかなぁ.
ある日,『Yahoo!MAPS』を見たら,ページ上部にこんな広告が出ていた.
もう迷わない!志望大学&学部選びのポイントを完全ガイド!
ねらったのですか,ねえ.