Results for tag "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";

[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パラメータがあったらデコードしちゃいますが・・・

[モバイル]QRコードで携帯サイトに誘導する際の注意点

雑誌やPCサイトにQRコードを掲載して、携帯サイトに誘導する場合は、効果測定ができるようにしておかなければいけません。先日、某フリーペーパーに運営している公式サイトが載りましたが、QRコードで読み取れるURLがサイトのトップページでした。

例) http://example.jp/

これだと、どこからアクセスしてきたのかがまったく分かりません。
雑誌ごとにランディングページを準備する事でPVを集計する事はできますが、時間や人的リソースに余裕が無い場合もあります。

QRコードの場合、URLをクリックすればダイレクトアクセスが可能なので、多少URLが長くても利便性は損ないません。そこで、

http://example.jp/?qr=雑誌名

のようにダミーのパラメータを付与しておく事で、ログ分析をすれば、どの雑誌を見てアクセスしてきたのか手っ取り早く分かるようになります。ユニークIDも取得しておけば、実際に入会したかもトレースできるので、優良媒体の判断にも役立ちます。

気象データ配信システムの障害原因

ITpro – 三つの障害が連続発生、気象データ配信システムのダウンの経緯が判明

この障害に巻き込まれてたのでメモ。
ふんだりけったりですね。

システムの冗長化は色々考えるべき点が多いので難しいんだけど、ポイントとしてはサーバ、ネットワーク、ディスクの冗長化なのかな。

関わっているシステムでも気象データ配信システムと同じような構成を取っているものがあるんだけど、RAID搭載とはいえ共用ディスクが1台な事とか、ネットワークが冗長化されていないなどSPOFが結構ある気がする。

NICのbondingで運用系、待機系サーバそれぞれから共用サーバに2本ずつ接続し、1本がコケてももう1本で稼動するようにして、なるべく待機系に切り替えさせないといった、解決方法はありそう。