Results for category "Web"

オブジェクト至高プログラミング

今週検証したコードに感銘を受けたので記録しておく。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
class Hoge{
    function __construct() {
        $this->aaa();
        $this->bbb();
        // ひたすら己のメソッド実行
    }
    function aaa(){
        // 100行以上
    }
    function bbb(){
        // 100行以上
    }
    // こんなメソッドいっぱい!
}
new Hoge();
?>

コンストラクタにひたすらメソッドを書いてnewするだけ。最強!!

[Perl]画像用data URL schemeを作る

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use strict;
use warnings;
use IO::File;
use MIME::Base64;
 
# 対象ファイル
my $file = $ARGV[0];
 
# 拡張子から画像のMIMEタイプを取得
my $mime = $1 if $file =~ /\.(gif|jpe?g|png)$/;
$mime = 'jpeg' if $mime eq 'jpg';
 
# $dataに画像ファイルの中身を取得
IO::File->new($file, 'r')->read(my $data, (stat($file))[7]);
 
# BASE64エンコードして改行を除去
my $base64 = encode_base64($data);
$base64 =~ s|\n||g;
 
# data URL scheme(RFC2397)を表示
print "data:image/$mime;base64,$base64";

IIS5+レガシーASPでメモリを食いつぶす

IIS5+レガシーASPが稼動しているサーバで、SQL Serverをつついて結果を返すアプリが正常に表示できない障害が発生した。
原因は未だ不明だけど、以下のASPを動かすとDLLHOSTの実メモリ、仮想メモリを食いつぶした後、inetinfoが同様にメモリを食いつぶす事象が発生した。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<%
On Error Resume Next
 
Dim file
Dim objFSO
Dim objTS
Dim line
 
file = "ここで存在しないファイルパスを指定する"
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTS = objFSO.OpenTextFile(file, 1 , True)
 
Do Until objTS.AtEndOfStream = True
    line = objTS.ReadLine
    Response.Write(line & "<br>")
Loop
 
objTS.Close
Set objTS = Nothing
Set objFSO = Nothing 
%>

ファイルの存在チェックを行ってループに入る前に終了させれば回避できるが、こういったASPがどっかに眠っているのだろうか。
IIS5のメモリリーク防止パッチを適用しても改善されなかった。

PVを増やす10+αの方法

(1) クローラーのアクセスを含める
それが人であるかどうかなど区別する必要はない。今後ロボットに参政権が与えられるまで我々は戦う。

(2) 画像、スタイルシート、Javascriptも含める
ログに1行書かれていたらそれはPVだ。

(3) リダイレクト専用ページもリダイレクト先のPVに含める
リダイレクトページのおかげで君たちは正規のページを見れている。

(4) エラーページへのアクセスを含める
そのページが見られないのが分かるのは誰のおかげか?もっと評価すべき。

(5) RSSフィードを含める
コンテンツそのものじゃないから含めるのは間違い?コンテンツが更新された事を知らせるコンテンツだろう。

(6) フレームを多用する
「Web界王拳」特許出願中

(7) 中の人のアクセスを含める
毎日、一生懸命メンテナンスでアクセスをしている社員をわが社は大切にします。

(8) HTTPステータスコードを考慮しない
もう1度言うが、ログに1行書かれていたらそれはPVだ。

(9) リクエストメソッドを考慮しない
PUTやHEADは攻撃の可能性があるからGETとPOSTに限定すべき?ハッカーだって人だろ?

(10) ユニークユーザを意識しない
PVって知ってるか?ページを見た数だ。

(11) 1秒毎にリロードする
(12) 手当たり次第メールを送る
(13) 入力フォームを見つけたらURLを書き込む
うちの方針が気に食わない?じゃあ来なくていいよ。

上記方法は、あなたにとって社会的信用失墜の危険性を高めます。

[Perl]ドコモのiメニュー検索のキーワードを取得する

ドコモ2009夏モデルのリファラー出力記念。
ドコモのiメニューで検索した時の検索キーワードを取得します。(たぶん)
$uriの値は実際はちょっと異なります。

1
2
3
4
5
6
7
8
9
10
11
12
use strict;
use warnings;
use Perl6::Say;
use URI;
use URI::Escape;
use URI::Query;
 
my $uri = 'http://docomo.ne.jp/?key=%41%42%43';
 
my $query = URI->new($uri)->query;
my $key = (URI::Query->new($query)->hash)->{key};
say uri_unescape($key);

ドコモのドメインじゃなくてもkeyパラメータがあったらデコードしちゃいますが・・・