タグ

ブックマーク / blog.shibayu36.org (9)

  • cron周りのベストプラクティス読んだ - $shibayu36->blog;

    WEB+DBPerl Hackers Hubで書かれていた「cron周りのベストプラクティス」を読んだ。かなり参考になった。 経緯としては読みたいって呟いたら感想よろしくと言われたので慌てて読んだ。 @shiba_yu36 「読んだ」なら言ってもいい— songmu (@songmu) 2014年2月24日 @shiba_yu36 マジに謝られても…— songmu (@songmu) 2014年2月24日 @shiba_yu36 マジになって感想エントリを書いてください。— songmu (@songmu) 2014年2月24日 特に参考になったこと batch.pl batch.plは非常に良いと思った。というのもcronとかのスクリプトで非常に簡単な事をやっている場合は適当にplファイルを作っちゃって登録するんだけど、得てしてそういうのはテストが無くてバグってて、しかもcronのロ

    cron周りのベストプラクティス読んだ - $shibayu36->blog;
  • Test::TCPを使ってテスト用にmemcached, app, nginxサーバを立てる - $shibayu36->blog;

    テストをするときに、テスト用のみのMySQLとかmemcachedとか、アプリケーションサーバとかを立てたい時がある。MySQLの場合はTest::mysqldを利用すればすぐできるが、それ以外の場合もdaemonの場合はTest::TCPを使ってすぐにテスト用のサーバを立てることができるので、そのメモ。 テスト用memcachedサーバを作る Test::TCPが渡してくれるportを使って起動 Test::TCPが返すオブジェクトがguardのようなオブジェクトになっていて、スコープが切れるとプロセスを勝手に落としてくれる my $memd = Test::TCP->new( code => sub { my $port = shift; exec "memcached -p $port"; }, ); my $client = Cache::Memcached::Fast->new(

    Test::TCPを使ってテスト用にmemcached, app, nginxサーバを立てる - $shibayu36->blog;
  • Test::Moreのsubtestで困っていること - $shibayu36->blog;

    最近はperlでテスト書く時はTest::Classを使うようにしている。その理由の一つとして、subtestだけのテストだと少しだけ困ることがあるからだ。 具体的には以下の事がある。 subtestは書かれている順に実行されるため、前のテストの状態に依存したコードが書かれがち 特定のsubtestだけを実行するのが面倒 前のテストの状態に依存したコードが書かれがち 僕の中では、テストが前のテストの状態に依存しないようにすべきと思っている。各テストの依存度が増えると、その後テストを追加したいときにコードの見る範囲が増え、テストが書きづらくなってしまうからだ。 しかし、subtestは単に書かれた順にテストが実行されるので、前のテストの状態に依存したコードが書きやすいと思っている。例えば以下の様なコードが書かれがち(少し極端な例だが)。 use Test::More; # insert_en

    Test::Moreのsubtestで困っていること - $shibayu36->blog;
  • perlでforkしたプロセスとの通信を簡単に行う方法が知りたい - $shibayu36->blog;

    今作っているもので、「forkした後、子プロセスの実行の結果を最後に親プロセスに通知し、親プロセスは子プロセス群の状態をまとめて取得する」、ということがやりたいのですが、モダンかつ簡単な方法って何があるんでしょうか? 具体的には use Parallel::ForkManager; $pm = Parallel::ForkManager->new(5); foreach $data (@all_data) { # Forks and returns the pid for the child: my $pid = $pm->start and next; # ... do some work with $data in the child process ... # 実行結果のサマリーを親プロセスに投げておく $pm->finish; # Terminates the child proc

    perlでforkしたプロセスとの通信を簡単に行う方法が知りたい - $shibayu36->blog;
    tekiomo
    tekiomo 2013/04/30
  • Kansai.pmに行ってCinnamonというデプロイツールについて発表しました - $shibayu36->blog;

    http://www.zusaar.com/event/476003 に参加して来て、前作ったデプロイツールであるCinnamonについて発表して来ました。 発表したこと 以前capistranoの奥深さに毎回ハマっているのを怒りを覚えて、もっとシンプルなデプロイツールであるCinnamonをantipopさんと一緒に作ったのでその発表をしてきました。それなりに好印象っぽかったので、発表してよかったです。 スライド Cinnamon - simple deploy tool from Yuki Shibazaki デモで使ったサンプルコード https://github.com/shibayu36/cinnamon-deploy-sample 簡単に紹介すると CinnamonはMinimumというのと、Role x Taskというのを思想として持っている Minimum : デプロイの方

    Kansai.pmに行ってCinnamonというデプロイツールについて発表しました - $shibayu36->blog;
    tekiomo
    tekiomo 2013/02/25
  • 今日覚えたgitのコマンド - $shibayu36->blog;

    git branch --merged masterとかやるとmasterにmergeされたbranchが一覧できる。-rをつければremoteの奴が一覧できる。 git branch --contains (SHA1)とかやるとあるsha1を含むbranchを一覧できる。 これを応用すると git branch --merged origin/master | perl -lnpe '$_ =~ s/[ *]+//;' | grep -v '^master$' | xargs git br -dみたいな感じでmasterにmergeされたlocalブランチをすべて消すことができる。 便利ですね。 ちなみにmaster ブランチにマージ済みのリモートブランチをまとめて削除する git-prune-remote-branch というスクリプトを作った - @kyanny's blogみたいな

    今日覚えたgitのコマンド - $shibayu36->blog;
    tekiomo
    tekiomo 2013/02/11
  • DBIx::QueryLogを使ってちゃんとSQLが流れているかテストする - $shibayu36->blog;

    DBIのconnectのCallbacksなどでSQLを実行している時とかに、実際にSQLが流れているのかチェックしたい時がある。そういう時どうするのがベスト・プラクティスなのかわからないのだけど、DBIx::QueryLogを使ったら一応できたのでメモ。 テストしたい状況 package My::DBI; use strict; use warnings; use DBI; sub connect { my ($dsn, $username, $password) = @_; my $dbh = DBI->connect($dsn, $username, $password, { Callbacks => { connected => sub { my $dbh = shift; $dbh->do("SET NAMES utf8") or warn $dbh->errstr; retur

    DBIx::QueryLogを使ってちゃんとSQLが流れているかテストする - $shibayu36->blog;
  • サーバで動いているプロセスを知るために使ったコマンド - $shibayu36->blog;

    今日会社の開発サーバでhitode君と遊んでて、動いているプロセスを調べていたのでメモ。 動いているプロセスを知りたい 基的。 ps ax ps auxとかすると、メモリ使用量とかいろいろ見れる。 動いているプロセスの関係も含めて知りたい pstreeコマンドでできる。とりあえずどんな感じに実行されているかサマリーを知りたい時は以下のコマンド。 pstree いろいろ折りたたまれているので、それを展開したい時は-cをつける。 pstree -c コマンドの引数とかも表示したい時は-aつける pstree -ac pidを知りたい時は-pつける pstree -acp 表示してみると{}で囲まれているやつがあるけど、これは多分threadなんだろうと思う。linuxではthreadのidはpidのように管理されているみたい。 メモリやCPUを消費しているプロセスを知る topとかでいろいろ

    サーバで動いているプロセスを知るために使ったコマンド - $shibayu36->blog;
  • zaw.zshで最近移動したディレクトリに移動する - $shibayu36->blog;

    zshでanythingのような事ができるzaw.zshが便利だったので、いろいろ調べていたら最近のディレクトリに移動するというのも出来たので、紹介。 cdr まずzshを最新の4.3.15にすると、cdrっていうコマンドが出来てます*1。これを使うと最近行ったディレクトリに移動することができます。 .zshrcには以下のような設定をしておくと良いです。 autoload -Uz chpwd_recent_dirs cdr add-zsh-hook add-zsh-hook chpwd chpwd_recent_dirs zstyle ':chpwd:*' recent-dirs-max 5000 zstyle ':chpwd:*' recent-dirs-default yes zstyle ':completion:*' recent-dirs-insert both zaw-src-

    zaw.zshで最近移動したディレクトリに移動する - $shibayu36->blog;
  • 1