Results for tag "プログラム"

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

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

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]ATNDの参加者IDをTwitterでフォローする

30分ででっち上げたのでXMLのパースとかTwitterIDの正規表現とかいろいろ問題がありますが、何となく動いたので。
ATNDのID = TwitterのIDじゃないので誤フォローもありえます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use strict;
use warnings;
use Net::Twitter;
use LWP::Simple;
use XML::Simple;
use URI::Escape;
 
# TwitterのID/PW
my $twitter = new Net::Twitter(
    username => 'username',
    password => 'password',
);
 
# ATNDのイベントID
my $event_id = 1;
 
my $uri = "http://api.atnd.org/events/users/?event_id=$event_id";
 
my $xml = LWP::Simple::get($uri) or die "cannot get content from $uri";
my $data = XML::Simple->new->XMLin($xml);
 
for (@{$data->{events}{event}{users}{user}}) {
    $twitter->create_friend(uri_escape_utf8 $_->{nickname}) if $_->{nickname} =~ /[A-Za-z0-9_]+/;
}

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のメモリリーク防止パッチを適用しても改善されなかった。

[Perl]localtimeで日本時間にならない場合の対処

Perlのlocaltime関数を使って、以下のようなコードで日本時間を出力しようとしても、何らかの原因(海外から取り寄せたサーバでタイムゾーンが違うとか)で正しく出力されない場合がある。

▼環境によってはうまく動かないコード

1
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time + 32400);

この場合、gmtime関数を使えば、必ずグリニッジ標準時を返すので以下のコードで環境に依存せずに日本時間が出力可能になる。

▼環境に依存しないコード

1
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = gmtime(time + 32400);

▼動作確認用コード

1
2
3
4
5
6
7
8
9
use strict;
use warnings;
use Perl6::Say;
 
say gmtime time;
say gmtime;
say gmtime time + 32400;
say localtime time;
say localtime;

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