header image

Ryuzeeについて

mixi Twitter Twitter

携帯対応

QRコード

RING

人気ブログランキング

新着記事

2010/09/03 05:48:35 日記 none Comments

僕がやっている案件(PHP)はもともとテストコードのないレガシーなプロジェクトで、それを改善するためにずっと動作を確認するための結合レベルの自動テストを増やしてきた。
そんな中で僕のところではどうやってテスト用のfixtureを管理しているか事例として紹介したいと思う。

最初にコアとなるfixtureを用意する

みんなが沢山テストを作る前にコアとなるテスト用のfixtureは用意しておく。
さもないと、みんなが好き勝手にfixtureを作ってしまい、あっという間に混乱に陥る。
プログラム本体と同様に、DRYの原則で、同じようなテストデータを繰り返し作ってしまうようなことは避けるべきだ。
最悪なパターンは開発機や本番機のデータを引っこ抜いてきて、それをそのままテストデータとしてごっそり使う方法。流石に居ないと思いたいが、こういうことをやってしまうとテストデータの見通しが悪すぎて、テストが失敗した場合の検証が非効率だし、そもそもデータのロードに時間がかかりすぎる。

共通のfixtureとテストケースごとのfixtureを分離する

マスター系のテーブルとか、ユーザー情報のテーブルのためのfixtureはテストケースごとにバラバラに用意してはいけない。似たようなfixtureがあちこちに造られると、テストの数が増えてからの仕様変更の際にテストデータのメンテナンスだけでえらく時間が取られてしまう。
僕の場合は、共通fixture置き場に基本的なfixtureをテーブルごとに配置した上で、テストケースごとのfixtureを上書きでロードしている。
以下はPHPの場合だけど、基底クラスで、以下のようにCSVの取り込みロジックを作っておいて

protected function getDataSet()
{
    echo __FUNCTION__ . "\n";
    $dataSet = new PHPUnit_Extensions_Database_DataSet_CsvDataSet();

    if(is_array($this->fixture_path)) {
        foreach($this->fixture_path as $path) {
            echo "----" . $path . "\n";
            if ($dir = opendir($path)) {
                while (($file = readdir($dir)) !== false) {
                    if ($file != "." && $file != ".." && substr($file, -4) == ".csv") {
                        $table_name = str_replace(".csv", "", basename($file));
                        echo "===loading $file...";
                        @$dataSet->addTable($table_name, $path . "/" . $file);
                        echo " done!\n";
                    }
                }
                closedir($dir);
            }
        }
    }
    return $dataSet;
}

テストケースのコンストラクタあたりで

public function HogeTest()
{
    $this->fixture_path = array(dirname(__FILE__) . '/../fixture/',
        dirname(__FILE__) . '/./fixture/'
    );
}

なんてやって、fixtureを複数階層に分けてロードしている。
fixtureをYAMLやXMLで持ってても同じことができるんじゃないかな。

fixtureの内容をチェックするためのツールを作る

僕はPHPUnit+Seleniumで結合試験を自動化していて、fixtureはテーブルごとにCSVファイルを用意している。これらのCSVをsetUp()で読み込むようにしているんだが、fixtureのカラム数があっていないと、すぐテストが落ちてしまう。(XMLでfixtureを保持していると楽かもしれないんだけど)
開発中は、当然カラムの追加や削除はあるが、その度にどのfixtureを修正しなければならないかを考えるのは面倒で仕方ない。
なので僕は、全fixtureをDBのスキーマと照合するツールを作っている。これがあればスキーマの変更の怖さはちょっと軽減される。

fixtureを自動生成するようなツールを作る

手で整合性の取れたfixtureを作るのはなかなか大変なので、Excelでfixtureをつくるようにしている。
予め用意しておいたシートに値を入れてマクロを動作させると、fixtureが自動で生成されるかんじ。
こういうツールもプロジェクトの早い段階で用意できていると効率的だろう。

日付や時刻等で、テストの成功・失敗条件に関わるテストデータはfixtureとは切り離す

例えば最終ログインから60日たっていたらAをして、120日たっていたらBをする、というテストケースの場合、fixtureに最終ログイン日時をハードコーディングできない。ハードコーディングしてしまうと、そのテストは実行日によってテスト結果が変わってしまうテストであり、自動テストの条件を満たさない。
このような場合は、fixtureにて識別可能な適当な値を設定しておいて、別途テストの初期化メソッドで値を書き換えるような対応をする。

まぁまだまだ改善の余地はあるなぁと思うけど、大分楽になってきたのは確か。
とはいえあくまで外側の挙動が担保できるようになっただけなので、内部的なリファクタリングと、メソッドレベルのテストはこれから増やしていかないといけない。

2010/08/27 20:10:34 日記 none Comments

自動テスト環境をWindowsからLinux環境にしたとたんに、テストが通らないものが頻発して、初めて開発者がhtmlの中に機種依存文字である波ダッシュを埋め込んでくれていたのに気づいた。。orz

以下Wikipediaから引用。

Unicodeの仕様書では、U+301C WAVE DASH(波ダッシュ)に、「JIS punctuation」(The Unicode Standard、Version 2.0より引用、「JIS約物」の意)という注釈を施しておきながら、JIS X 0208の波ダッシュの例示字形(“上がって下がる” 形「」)とは異なる形(“下がって上がる”形「」)を印刷してしまった。
このような間違いが発生した理由は、Unicodeの例示字形を検討するグループにいたメンバーの日本語に対する知識が不十分だったために、縦書きの例示字形「」を90度回転すればいいと誤って判断してしまったためである[4]。
この影響を受けて、Microsoft Windows(XP以前)ではUnicodeの波ダッシュ (U+301C, WAVE DASH) は“下がって上がる”形「」で表示される(MS 明朝、MS ゴシック、MS UI Gothicにおけるもの)。それに対し、Unicodeの全角チルダ (U+FF5E, FULLWIDTH TILDE) は“上がって下がる” 形「」で表示されるようになっており、Shift_JISの波ダッシュ (0x8160、WAVE DASH)「」と同一の文字として扱われる。
このようにWindowsは、Shift_JISの波ダッシュ (0x8160、WAVE DASH)「」を、本来割り当てるべきUnicodeの波ダッシュ (U+301C, WAVE DASH) ではなく、Unicodeの全角チルダ (U+FF5E, FULLWIDTH TILDE)「」に割り当てている。一方、Mac OSやMac OS XではShift_JISの波ダッシュ (0x8160、WAVE DASH)「」を本来のUnicodeの波ダッシュ (U+301C, WAVE DASH) に割り当てており、その字形も一般的な波ダッシュの形である“上がって下がる”形「」で表示される(Osakaフォントやヒラギノフォントにおけるもの)。このWindows独自のUnicode割り当てが産んだ非互換性により、波ダッシュ (U+301C, WAVE DASH) が環境によっては文字化けを起こす機種依存文字となってしまっている。

JAVAだけの話かと思ってたが、そうじゃなかったんだな〜。

2010/08/07 06:39:33 日記 none Comments

1. kalturaとは

http://www.kaltura.org/

日本語の機能説明は http://www.kaltura.jp/technology/technology.html

kalturaは、PHPで作成された動画配信プラットフオームで、有償版のバージョンと、CEと呼ばれるオープンソースバージョンが存在する。
動作にはApache, PHP, MySQL が必要だが、要求されるバージョンが比較的細かいのでサーバ構築は少々手間である。最新のバージョンはKalturaCE 2.0.2

kalturaの特徴は、あくまで、「動画配信のためのシステム」である、ということが挙げられる。
Youtubeやニコニコ動画のようなユーザーインターフェイスの部分ではなく、配信基盤に重きをおいており、kalturaに保管した動画のプレイヤーを他のサイトに埋め込むという使い方が前提になっている(ように思える)
例えば、kalturaでは、オープンソースのブログエンジンであるwordpressからkalturaの存在を意識せず動画をアップロードできるようなプラグインや、教育用CMSであるmoodleに講義の動画等をシームレスに登録できるプラグイン等、多くの外部連携モジュールが用意されている。

2. インストール

最初にSnow Leopardにインストールしようとしたが、PHPやMySQLのバージョン要求が細かくて挫折したので、CentOS5.5をVirtualBoxにクリーンインストールした。
なお、以下のモジュールとバージョンが要求されるので、rpmだけで何とかしようというのは若干厳しい。
Apache >= 2.2
モジュールとしては
mod_rewrite
mod_headers
mod_expires
mod_filter
mod_deflate
mod_file_cache
mod_env,
mod_proxy
PHP = 5.2.x
MySQL >= 5.1.37

CentOS5.5系のPHPは標準では5.1系なのだが、kalturaはPHP5.2系を要求する(PHP5.3も標準では動作しない)ので、デフォルトでインストールされることが多いapacheとPHPとMySQLは利用せず、XAMPP for Linuxを利用した。
詳細については http://www.kaltura.org/kaltura-ce-setting-prerequisites-centos-55-wxampp に記載があるので、その通りやれば良い。

XAMPP 1.7.1のインストール

wget http://cdnbakmi.kaltura.com/content/files/xampp-linux-1.7.1.patched.tar.gz
tar xvfz xampp-linux-1.7.1.patched.tar.gz –C /opt

MySQLの設定

/opt/lampp/etc/my.confに以下を追記

lower_case_table_names = 1
thread_stack = 262144

シンボリックリンクを作成

既にapacheやPHPが導入済みの場合は、一旦apacheを停止した上で

mv /usr/bin/php /usr/bin/php_org
mv /usr/bin/mysql /usr/bin/mysql_org

としてリネームした上で、以下のようにシンボリックリンクを作成する

ln –s /opt/lampp/bin/mysql /usr/bin/mysql
ln –s /opt/lampp/bin/php /usr/bin/php

XAMPPを起動する

起動スクリプトは、/opt/lampp/lamppにあるので

cp /opt/lampp/lampp /etc/rc.d/init.d/lampp
/sbin/chkconfig --level 2345 lampp on
/etc/rc.d/init.d/lampp start

以上ができたら、XAMPPのインストール結果をブラウザで確認する

Curlのインストール

アプリケーション内で外部コンテンツを取得するのにcurlを利用しているので、curlをインストールする

yum install curl

memcachedのインストール

キャッシュのために、memcachedを利用している。無くても動作するが以下の手順でインストールする

rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
yum install memcached
/sbin/chkconfig --level 2345 memcached on
/etc/init.d/memcached start

メールサーバ(SMTP)の設定

kalturaはアカウント登録時にパスワードをメールで送信するので、メールサーバは必須。
CentOS5.5であれば標準のpostfixをそのまま利用すれば良い。
※評価の際にどうしてもメールの送信ができない場合は、何も設定せず、リターンメールを頑張って読めばOK

JREのインストール

リコメンデーションあたりで、JAVAのBIライブラリを利用しているのでjdkのインストールが必要だ。
Oracleが提供するもので問題ないが、openjdkでも動く。バージョンはいずれの場合も1.6以上。

yum install java-1.6.0-openjdk

Pentahoのインストール

BIツールらしい。初めてしった。

mkdir /usr/local/pentaho
cd /usr/local/pentaho
wget http://sourceforge.net/projects/pentaho/files/Data%20Integration/3.2.0-stable/pdi-ce-3.2.0-stable.tar.gz/download
tar xvfz pdi-ce-3.2.0-stable.tar.gz -C /usr/local/pentaho
mv data-integration pdi

必要なユーザーの作成

sudo useradd etl –d /home/etl
cd /home/
sudo chown etl:etl etl

SeLinuxを無効化する

/etc/sysconfig/selinux を開き、

SELINUX=disabled

とする

稼働状況の監視用にxymonを導入する

wget http://cdnbakmi.kaltura.com/content/files/centos5.i386/xymon/perl-rrdtool-1.2.18-1.rhel5.i386.rpm
wget http://cdnbakmi.kaltura.com/content/files/centos5.i386/xymon/librrdtool2-1.2.18-1.rhel5.i386.rpm
wget http://cdnbakmi.kaltura.com/content/files/centos5.i386/xymon/rrdtool-1.2.18-1.rhel5.i386.rpm
wget http://cdnbakmi.kaltura.com/content/files/centos5.i386/xymon/xymon-4.2.3-1.rhel5.i386.rpm
wget http://cdnbakmi.kaltura.com/content/files/centos5.i386/xymon/xymon-client-4.2.3-1.rhel5.i386.rpm
rpm -Uvh ./*.rpm

xymonの設定をapacheに追加

/opt/lampp/etc/httpd.confを開き、以下の1行を追加

Include /etc/httpd/conf.d/hobbit-apache.conf


lamppを再起動

/etc/rc.d/init.d/lampp restart

xymonの設定

/etc/sysconfig/xymon-client1を開き、

HOBBITSERVERS="localhost"

としてサーバ名を設定
自動起動の設定を行い、xymonを起動する

/sbin/chkconfig --level 2345 xymon on
/sbin/chkconfig --level 2345 xymon-client on
/etc/rc.d/init.d/xymon restart
/etc/rc.d/init.d/xymon-client restart

バーチャルホストの設定

kalturaは標準のインストーラーによるインストールでは、バーチャルホストでの動作を想定している。
そのため、ローカル端末での評価の場合は、hostsに適当なホスト名を設定するか、またはDNSの設定を行うことが望ましい。※一応設定せずに、インストーラで動作URLに127.0.0.1を設定しても動作はした。

インストールパッケージの入手

kalturaのサイトにアクセスしてユーザー登録を行って最新のインストーラーをダウンロードする( http://www.kaltura.org/project/community_edition_video_platform )か、またはsubversionで取得する。
今回はSubversionで以下のように取得した。

svn checkout http://www.kaltura.org/kalorg/kalturaCE/trunk

インストーラーの起動

上記で入手が終わったら

php install.php

としてインストーラーを実行すれば良い。あとは指示に従えばインストールは完了する。

3.ちょっと使ってみる

インストール完了後はhttp://(host名)にアクセスすると、以下のようなスタート画面が表示される。

新たな動画投稿者の作成

標準では動画投稿権限をもつユーザーはいないので、スタート画面に表示されている「Add New Publisher」をクリックしてログインし、投稿者を作成する。
なお、作成した段階でKMCにログインするためのパスワードが登録したメールアドレス宛に通知される。

Kaltura Management Consoleへのログイン

startページからKaltura Management Console(KMC)にログインする。
動画の掲載や、プレイリストの作成、埋め込み用のタグの取得はすべて、このKMCの中で行うことになる。(API連携しない場合)

デフォルトでいくつかサンプル動画が入っている。

コンテンツをクリックすると、プレビューと埋め込み用のタグが表示される。

あとは試しに、適当なhtmlページを作ってタグを埋め込んでみればよい。

4. Wordpressとの連携


Wordpressからkalturaをシームレスに扱うことができるプラグインが提供されている。
All in one Video pack プラグイン をWordpressにインストールしてあげれば良い。
※Wordpressとの連携の設定をする際に、特にkaltura側の認証がなく自動でkaltura側に新たなユーザーが作成されるように見えるが、だとすると誰でも公開されているkalturaを利用できることになってしまい問題がある。kaltura側で外部連携に関する何らかの制限がかけられると思うのだが、現在のところやり方がわからない。

5. ということで。。。

まだまだ色々触ってみないと分からないんだけど、動画配信用のプラットフォームをさくっと作りたい、という場合には良いのではないだろうか。
引き続き、携帯対応のあたりと、アクセスコントロール、APIの仕様について調べていこうかと思う。

2010/06/20 13:55:11 日記 2 Comments

なんでこんなことをやっているかというと、1年2か月の現役生活を引退したLenvo S10eというネットブックをサーバ転用するため。自宅にUSBのCDROMドライブなんてものは無いし、そもそもネットブック本体にはCDROMドライブもついていないので、USBメモリからブートするか、ネットワークからブートするしかないんだよね。

で、USBブートイメージの作りかたは2つ試してみたが、どちらでもいけるのでそれぞれ紹介。

dd for Windowsを利用する方法

  • http://www.chrysocome.net/ddからdd for Windowsをダウンロード
  • 適当に解凍する
  • 今回はCentOSをインストールするので、CentOS用のディスクブートイメージをftp://ftp.riken.jp/Linux/centos/5.5/os/i386/images/diskboot.imgからダウンロードする
  • あとはフォーマット済のUSBメモリをPCに挿して、以下のようなコマンドを打つ
  • (USBメモリを刺したドライブはEドライブ)
    dd if=c:\tmp\diskboot.img of=\\.\e:
    rawwrite dd for windows version 0.5.
    Written by John Newbigin <jn @it.swin.edu.au>
    This program is covered by the GPL.  See copying.txt for details
    24576+0 records in
    24576+0 records out

  • あとはUSBメモリをネットブックに挿して、BIOSの設定でUSBメモリを起動順の先頭に設定した上で起動する

UNetbootinを使う方法

これを使うとインストール用のCDROMイメージをUSBメモリに変換して、Bootableにしてくれる。ddって何?みたいな場合にはわかりやすい。

  • http://unetbootin.sourceforge.net/からダウンロードする
  • ダウンロードしたファイルを起動すると以下のような画面が出る
  • 適宜設定して、OKをクリックすると、USBメモリに起動イメージを作成する
  • 作成が終わったら、USBメモリをネットブックに挿して、BIOSの設定でUSBメモリを起動順の先頭に設定した上で起動する

ネットブックは音もそこそこ静かだし、ディスクは160Gくらい積んでいるし、CPUは省電力のAtomで、普段閉じておけて場所をとらない、という意味で、実はサーバ用途として十分使えるのではないかと思う。

2010/06/08 15:48:45 日記 none Comments

普段仕事で使っているネットブック(Lenovo S10e)のあまりのしょぼさにしびれを切らして、MacBookProを買いました。
購入したのは、MacBook Pro 2400/13.3 MC374J/A

APPLE MacBook Pro 2.4GHz 13.3インチ MC374J/A

APPLE MacBook Pro 2.4GHz 13.3インチ MC374J/A

定価:¥ 114,800

Amazon価格:¥ 109,000

カテゴリ:エレクトロニクス

発売日:2010-04-15


kakaku.comだと今日時点での最安値は100,000円丁度だけど、僕はヤマダ電機で109,800円にポイント18%(クレジットカードで買うと2%低くなるらしいが、交渉したらサービスしてくれた!)で購入。ポイントが約20,000円ついたので、併せてディスプレイも購入(19,800円)。良い買い物だった(と思う)

I-O DATA フルHD対応 21.5型ワイド液晶ディスプレイ(ブラック) LCD-MF221XGBR

I-O DATA フルHD対応 21.5型ワイド液晶ディスプレイ(ブラック) LCD-MF221XGBR

Amazon価格:¥ 19,546

カテゴリ:エレクトロニクス

発売日:2009-03-20


とりあえず早速仕事で使うためにセットアップしたので、インストールしたものをメモ。

インストールしたもの

Xcode

gccとか使う必要があるし、iPhoneアプリ開発に必要とのことで、Snow LeopardのインストールDVDから追加インストール

Dropbox

いわずと知れたオンラインストレージツール。これがあるからWindowsからのデータ移行はかなり楽だった。

Evernote

これもWindowsで使っていたのでそのまま移行した。

VirtualBox

WindowsだとVMware Playerが無償で用意されているんだけど、Macにはなくて、VMware fusionを購入するしかない、ということだったので、とりあえずこれで代用。仮想OSは元々使ってたUbuntuはそのままWindowsからコピーしたら動作したけど、Windows7Ultimate(X64)はコピーして起動したところブルースクリーンが毎回出るような状況だったので、再度インストール。Windows7にはOffice2010を突っ込んでおいた。

Thunderbird

Mac標準のメールがあるみたいだけど使い慣れているので。ネットで調べるとProfileのフォルダごとコピーしてprofile.iniを書き換えれば動くようなことが書いてあったけど、何度やっても起動時にアカウント作成するように言われてしまったので、これを期にIMAPに移行した。iPhoneからもネットからも読むのでまぁこれで良いか。

Firefox

とりあえず開発に使うので入れておいた。古いWindowsマシンから保存しておいたパスワードだけは移行したかったので、パスワードエクスポート用のプラグインを突っ込んでデータを同期。ブックマークは全部はてなで管理しているから特に問題なし。

Chrome

最近メインなので入れた。extensionいっぱい入れても軽いのはWindows版と変わりない。

夜フクロウ

Windowsの時はTweenを使っていてこれがなかなか使い心地が良かったのでにたようなのを探していたんだけど、@kurikazuさんからこれを教えてもらったので使ってみたら良かった。

FreeMind

マインドマップ書くために使う。なんかMacのアプリケーションのインストールはパッケージファイルをダウンロードして、ダブルクリックして指示に従えば終わりみたいなんだけど、こいつだけは、アーカイブを解凍してできたフォルダごとアプリケーションの中に入れなければ動作しなかった。

App Cleaner

アプリケーションの削除に使う定番ソフトということで入れてみた。まぁ便利そう。

TweetDeck

夜フクロウの前に入れてみた。iPhoneではこれを使っているが、仕事しながらみるには画面領域が広すぎて邪魔なんだよね。

Remote Desktop Connection for Mac

家にあるWindowsサーバ系の開発環境に接続するために導入。普通にWindowsにつながるが、キーボードの操作はMacにあわせないといけないのでこれは違和感はあるなぁ。キーバインド変更できるのかな?あと、Windows版だとスマートサイジング機能で画面を縮小表示できるんだけど、Mac版はできないのかな?ちょっと調べてみたけど分からなかった。

OpenVPN

家のサーバ群はVPN経由でないと接続できないようにしてあるので入れた。Windowsで使っていた設定ファイルはすべてそのまま使える。

OpenOffice

Technetのサブスクリプションに加入しているんだけど、Mac版のOfficeは提供されていないので、とりあえずOpenOfficeで代用。KeyNote使いたいからiWorks買うかどうか悩む。

その他

利用しているイーモバイルのカードがExpress Cardなんだけど、Macはスロットが無い、ということで、仕方ないのでExpress CardをUSBに変換するアダプタを買った。

SANWA SUPPLY ADR-EXUSB エクスプレスカード変換アダプタ

SANWA SUPPLY ADR-EXUSB エクスプレスカード変換アダプタ

定価:¥ 2,310

Amazon価格:¥ 1,343

カテゴリ:エレクトロニクス

発売日:2008-03-31



1400円くらいなので仕方ない。白ロムのイーモバイル用USBを買う手はあるが、オークションでも5000円くらいはしていた。イーモバイルは2年縛りの間に機種変更(買い増し)しようとすると一旦解約して違約金払って再度加入することになるのだが、この制度は頭に来る。しょっちゅう営業電話かけて来るので今度文句言ってみたいw。
あと、ディスプレイを購入したが、MacBook ProにはDVI端子はなくて、MiniDisplay Portなので、接続するために、ここでも変換アダプタを購入する羽目になった。これはAmazonで2,100円だった。

PLANEX Mini Displayport ->DVI端子変換アダプタ (MacBook MacBook Pro MacBook Air) PL-MDPDV01

PLANEX Mini Displayport ->DVI端子変換アダプタ (MacBook MacBook Pro MacBook Air) PL-MDPDV01

定価:¥ 2,520

Amazon価格:¥ 2,100

カテゴリ:エレクトロニクス

発売日:2010-02-19


使用感

もともと持ち運びで使っていたネットブックの代替だから、性能面では文句のつけようが無い。その分重量は2kgくらいあるらしいので、ネットブックの倍になった。毎日持ち運ぶので肩こりが悪化しそうな気はする。家で使っているDellのStudio17(Core2Duo P8600 メモリ4G)と比べても動作は快適に感じる。ただディスプレイが13.3インチで解像度が1280x800なので、ちょっと狭さは気になる。大きさはこのままで、解像度が1920あたりまで行けると相当良いんだけどなぁ。
とはいえ当分楽しくいじり倒せることは間違いない!

2010/06/02 15:44:57 日記 none Comments

現在のGoogle Readerの使い方

僕は普段RSSを読むのにGoogle Readerを以下のように使っている。(書いてみるとイマイチだな)

  • タイトルからその場で読みたいと思う奴はそのままブラウザで開く。開いた後はモノによってははてなブックマークで自分でタグを付けてブックマーク
  • とりあえず後で読めば良いやと思う奴はスターを付けておく。スターを付けたアイテムは1日に1回自動で固定タグをつけてはてなにブックマーク
  • それ以外の奴はまとめて既読にする

今の使い方の問題

で今の使い方には問題がある。

  • 後から読もうと思ってる記事がどんどん溜まっていく
  • 消化しきれなくなって一括削除w

どう解決するか

  • まとめ読みする
  • 楽して一気に読む
  • 電車の中でiPhoneで読む
  • ゴロゴロしながらiPadで読む

もう当たり前だけど、まとめ読みできる準備して、空いた時間に場所を限定せず一気に処理できるようにすれば良い。
まとめ読みするには、Instapaperというサービスを使うのが良い。(日本だと「あとで読む」が同じようなサービス)

ということで・・・

Google Readerでスターを付けた奴をInstapaperに自動で追加するスクリプトを作りました。

仕様は

  • PHP5で動作。PEARのHTTP_Requestを利用
  • Google Readerにログインしてスターがついたアイテムを取ってきて
  • feedbunnerとか転送URLの場合は、実際のURLに変換したうえで、アイテムをInstapaperに追加して
  • Google Readerのアイテムからスターを外す

という感じ。
これをcronに仕込んでおくと、自動でInstapaper側に、余計なデザインとかが削除された本文のみの状態で蓄積される。
朝会社行く前あたりと、帰宅する前あたりにcronが動作するようにしておくとよいかも。
iPhoneで見るとこんな感じ。

ソース等

ソースはこちらからダウンロードできます。
ライセンスはMITライセンス。
好きにいじくってください。

2010/05/07 04:37:30 日記 none Comments

ソフトウェア開発には12の原則があるということにたどり着いたらしい。

2010/04/18 17:59:11 日記 none Comments

書いておかないと忘れるので。

コマンドプロンプトで、

%変数名:置換前文字列=置換後文字列%

とやると文字列が置換できる。

たとえば

echo %cd%
c:\Users\ryuzee\Documents

のような感じでパスは\表示されるが、これを/に置換するのは、

echo %cd:\=/%
c:/Users/ryuzee/Documents

のようになる。

いや、まぁCygwin使えばよいんだけど。

2010/04/13 06:36:01 日記 none Comments

忘れそうなのでメモ。

Excelで特定文字列を改行に置換する

TracでExcel出力したレポートをそのままお客さんに提出したりするんだけど、wiki記法の[[BR]]なんかはやっぱり改行に変換したいよね。
Linuxになれていると、置換のときに\nを入力すると置換してくれそうに思うんだが、ExcelではNG。
Excelの場合は、変換文字列に、「CTRLキー+J」を入力する。見た目は空白だけど、これで改行コードが入っているので一括置換できる。

Excelに貼り付けている画像をまとめて取り出す

Excel2007限定の話だけど、やり方は簡単。
まずファイル名の拡張子を、xlsxからzipに変える。その上で、そのzipファイルを普通に解凍してしまう。
解凍すると、xl/mediaディレクトリの中にファイルが連番で保存されている。

こんな感じ。

2010/04/11 06:44:07 日記 none Comments

Mike Cohn氏のポスト「Managing Risk on Agile Projects with the Risk Burndown Chart」より適当要約。

短いイテレーション、1つのことへの集中、自動テストの助け、頻繁な顧客へのデリバリが、多くのプロジェクトが直面するような大きなリスクを避けてくれる。
従って、アジャイルな開発を行っている場合は、微細に渡るようなリスクマネジメントは不要である。
以下では簡単にリスクを計測する方法(これはJohn Brothersが2004年のAgile Timesで言及した)である「リスクバーンダウンチャート」を紹介する。


上の図のように、考えられるリスク、そのリスクが実現してしまった場合に失う時間、そしてリスク発生可能性について記述しておく。
この資料は第1スプリントのスプリント計画ミーティングの際に作成しておくことが望ましい。また新たなリスクが発覚したときや、リスクのサイズが変更になった場合は速やかに更新する。

あとは、バーンダウンチャートにプロットしていけばよいのだが、お勧めとしては、トップ10リスクの合計の数値をプロットすればよいだろう。
サンプルのバーンダウンチャートは以下の通りだ。

普通のリリースバーンダウンチャートと同じくスプリントが進めば、バーンダウンはリニアに下がっていくだろう。このリニアの線を赤で引いている。

リスクバーンダウンが右肩に下がっていかない場合は、チームは次のスプリントでリスクに対応する時間を確保することになる。

このようにリスクバーンダウンチャートはリスクを可視化する分かりやすい方法である。

 

日記 PHP オープンソース インストールマニアックス IIS Trac MySQL Perl Linux Agile・生産性向上 wordpress フリーソフト 自宅サーバ 書評 ブックマーク phpMyFaq TraM Plugin 早起き Delphi apache CakePHP Firefox Ruby eclipse セキュリティ プラグイン アジャイル mojavi Subversion Ajax/Web2.0 SQLServer Zope サーバ フレームワーク phpBB 仮想化 PostgreSQL OpenVZ scuttle CMS 文字化け 自宅 翻訳・日本語化 ApacheDS LDAP Excel 生産性向上 CodeIgniter XAMPP hacks taskfreak 修正 言語ファイル Ajax SBM ダウンロード HTML::FillInForm mod_security 情報共有


ads

読まなきゃモグリ