CROSS2013でシステム運用についてのセッションがあるから来るといいよの話

有料イベントですが、CROSS 2013 というイベントが1月18日にあります。

http://www.cross-party.com/

そこでひとつセッションオーナーになってまして、パネルディスカッションぽいことをやるのですが、それはともかくとして夕方以降にはプレミアムモルツ飲み放題タイムがあります。サントリーからでかいタンクでやってくる美味いプレモルを飲みまくりながらそのへんのソフトウェアエンジニアとしゃべりまくるという素敵な時間になると思われるので、ぜひ来ると良いのではないかと思います。

[Read More]

2012アクセスランキング

そろそろ年の瀬なので、このblogの今年のアクセスランキングをまとめてみました。

10. ペアプロ合コン開催しました #pp_con

9. URLの最大文字数

8. #tuningathon #4に参加しました

7. IDManagerからKeepassXにデータ移行するxslt

6. webサーバをチューニング

5. javaでftp接続テストプログラム(commons-ftp)

4. sshで自動切断されないようにkeepaliveパケットを送る

3. iconvで変換できない文字を飛ばす方法

2. mod_rewriteのRewriteCondで、SetEnvIfの環境変数を利用する

1. auto negotiationの仕組み

今年のネタ2本しか入ってない(´・ω・`)

[Read More]
Others 

邪道jenkinsを検証してみたよ

2012年末の昼下がり。

原稿を書かなければならないのですが、追い詰められているがゆえに違うことをしてます。

最近は邪道Jenkinsがマイブームでして、ちょろっと検証してみました。
3時間くらいいじっただけなので、詳しい方からツッコミいただけると幸いです。

[Read More]

Play frameworkでisucon2アプリを書く-8

このエントリはPlay frameworkひとりアドベントカレンダーの23日目です。

今日は /admin を実装します。

今日も今までと同じ流れでいきましょう。

  1. 元コードを見てcontrollerのinput/outputとviewのinput/outputを確認
  2. modelを作る
  3. viewを作る
  4. controllerを作る(TODOでよい)
  5. 表示確認
  6. controllerを作りこむ
get '/admin' => sub {
    my ($self, $c) = @_;
    $c->render('admin.tx')
};

post '/admin' => sub {
    my ($self, $c) = @_;

    open(my $fh, 'root_dir . '/../config/database/initial_data.sql') or die $!;
    for my $sql () {
        chomp $sql;
        $self->dbh->query($sql) if $sql;
    }
    close($fh);

    $c->redirect('/admin')
};

modelいらない、viewたいしたことない、というわけで、controllerをがんばりましょう。
といってもファイルからSQLを読み込んでがーっと流すだけです。

[Read More]

Play frameworkでisucon2アプリを書く-5

このエントリはPlay frameworkひとりアドベントカレンダーの20日目です。

今日は /ticket/ を実装します。

昨日までと同じ流れでいきましょう。

  1. 元コードを見てcontrollerのinput/outputとviewのinput/outputを確認
  2. modelを作る
  3. viewを作る
  4. controllerを作る(TODOでよい)
  5. 表示確認
  6. controllerを作りこむ

viewを仮実装する場合、注意点がひとつあります。
それは viewのファイルサイズに制限がある ということ。

[Read More]

Play frameworkでisucon2アプリを書く-4

このエントリはPlay frameworkひとりアドベントカレンダーの19日目です。

今日は /artist/ を実装します。

controllerを移植

例によって元コードを見ます。

get '/artist/:artistid' => [qw(recent_sold)] => sub {
    my ($self, $c) = @_;
    my $artist = $self->dbh->select_row(
        'SELECT id, name FROM artist WHERE id = ? LIMIT 1',
        $c->args->{artistid},
    );
    my $tickets = $self->dbh->select_all(
        'SELECT id, name FROM ticket WHERE artist_id = ? ORDER BY id',
        $artist->{id},
    );
    for my $ticket (@$tickets) {
        my $count = $self->dbh->select_one(
            'SELECT COUNT(*) FROM variation
             INNER JOIN stock ON stock.variation_id = variation.id
             WHERE variation.ticket_id = ? AND stock.order_id IS NULL',
            $ticket->{id},
        );
        $ticket->{count} = $count;
    }
    $c->render('artist.tx', {
        artist  => $artist,
        tickets => $tickets,
    });
};
  • artist.idでartistからartistを取得
  • artis.idでticketからticketを取得
  • ticketごとにカウントを取得

さて、ticketごとのカウントをviewにどう渡すか困ってしまいました。。
とりあえず動けばいいので、力技ですがHashMapで渡すことにしましょう。

[Read More]