少し必要になったので書きました。 xargs に渡すことを考慮して ¥0 でセパレートしています。空白のファイル名を考慮してやっていますが、実際に空白を含むファイル名に出会っていないのでうまくいくかは分かりません。
綺麗に一覧出力したい場合は puts "#{file} で。あとサブディレクトリも対象にしたい場合はオプションを -Rv にすればよさそうです。
#!/usr/bin/env ruby
r = ARGV[0].to_i
`svn ls -v`.split(/¥n/).each do |line|
items = line.split(/¥s+/)
rev = items[1]
file = items[7]
print "#{file}¥0" if rev.to_i > r && file
end
SVN 管理しているディレクトリでリビジョン 2500 以降のファイルを一覧で出力する場合。
$ ruby ~/ruby/svn_ls.rb 2500
Backlog の引用はコメントを全部引用するので、後で行単位で削除する必要があります。試しに選択した文字列を引用するグリモンを書いてみました。文字列を選択して、選択範囲を引用するボタンをクリックするとコメントに引用文字列を挿入します。
ただ HTML 上に空白があったりすると、見た目通りの引用ができなかったりします。コメントの引用のみ対応ということで。
バージョンは 1.3.2 です。サンプルの $(document) を慣例的に書いていて知りませんでした。
$(document).ready(function() {
});
$().ready(function() {
});
コードを読むとすぐに答えがあって、過去を遡ると 1.0 からその挙動(に近い)で常識っぽいです。
init: function( selector, context ) {
// Make sure that a selection was provided
selector = selector || document;
$(document) が使われている理由はよく分からないです。 明示的?
次世代 O/R Mapping フレームワーク。
APT によるアノテーションチェック、 SQL チェック、テーブルのカラムごとを Java オブジェクトで扱いタイプセーフを推し進めています。 AOP は実行時にしか動作確認できなかったけれど、コンパイル時に検証が行え静的な言語のメリットを活かせている印象です。
それから SELECT はすべて SQL で書くポリシーみたいです。ちゃんと SQL 流そうよという意志が伝わってきました。さくさくやるためには IDE のサポートが必要そうです。
後はリレーションを Java オブジェクトにマッピングしない、遅延ローディングをサポートしない、裏でごそごそやるのではなく、やっていることをコードで押し出す指向っぽくてこっち系好きです。
構築している部分のデータの扱い方の話がすごいなー。プレゼンの見せ方がうまいなーと見ていて関心ばかりしていました。背景が暗くなって一部だけ明るくハイライトする Keynote の機能?ツール?よかったです。
あと細かいところに気をつかってサーバー、クライアントに負荷を与えないようにするチューニングお話もありました。
自宅サーバーで運用。使っているフレームワークのメリットなどを一部ずらずらと。
用事があってじゃんけん大会の途中で帰りました。一回も勝てませんでした。
関係者の皆様お疲れ様でした。
Seasar 2.4.39 + Cubby 2.0.1 で動作確認しました。
Cubby で国際化対応を考えたい場合 MessagesBehaviour インターフェースを実装したクラスを用意すればよいようです。今回は ResourceBundle の取得以外はそのまま処理を利用したいので DefaultMessagesBehaviour を継承しました。
public class ExampleMessagesBehaviour extends DefaultMessagesBehaviour {
/**
* {@inheritDoc}
*/
@Override
public ResourceBundle getBundle(final Locale locale) {
Locale newLocale = getLocale(locale);
return super.getBundle(newLocale);
}
private Locale getLocale(Locale locale) {
// locale を取得するコード
// HttpSession session = ThreadContext.getRequest().getSession();
return locale;
}
}
DefaultMessagesBehaviour が定義されているところを継承したクラスに変更します。
<!-- messages behaviour -->
<component class="example.ExampleMessagesBehaviour">
<property name="baseName">"messages"</property>
</component>
これでアプリケーションにリクエストを要求するごとに、リソースを入れ替える処理のできあがりです。最後に messages_xx.properties を用意します。
あと getBundle が呼ばれる時点では Seasar から DI はされないので、もしコンポーネントを利用したい場合は SingletonS2Container から取得するなどしないといけないです。
ビルド版を取りに行くのが面倒なので、最新バージョンを自動インストールするスクリプト(ワンライナー)を書いてみました。ごり押しです。
$ curl http://build.chromium.org/buildbot/snapshots/chromium-rel-mac/LATEST | \
xargs -I{} wget http://build.chromium.org/buildbot/snapshots/chromium-rel-mac/{}/chrome-mac.zip && \
unzip chrome-mac.zip && cp -rf chrome-mac/Chromium.app /Applications/Chromium.app && \
rm -rf chrome-mac && rm chrome-mac.zip
wget でなくてもいいのですけど、ファイルダウンロードは wget というおれおれルールがあるので、 mac ports からインストールしておきます。あと、もし使う人がいたら構成がいつ変わるか分からないので自己責任でお願いします。
拡張がないことも影響があると思いますけど、 Mac 版も描画がすごく速いです。
連休なんで東海地方を少しだけうろうろしてました。とくに印象に残ったのはうなぎパイの工場見学。浜松のお土産といえばうなぎパイ。
時間にしてみれば 15 分ぐらいで見学は終わるのですが、うなぎパイが生地からコンベアに乗って、箱詰めされていくまでの行程を直接見ることができました。社員の人も下から上から見られていてサボることが一切許されない大変な環境そうでした。そうそう、入り口で名前、住所を書くと人数分のうなぎパイをただでもらえます。欠品の有効活用?こういうサービスが心を捉える気もします。
つくっている行程を撮ろうと思ったけどやっぱり撮影禁止なんで無理でした。撮ってる人いましたけど。。
連休中は高速道路料金も安くなったせいもあって、九州だったり北陸ナンバーもみました。みんな活用しているんだなあと思いつつ、工場に入るまで渋滞で 30 分ぐらいかかって、まさかのうなぎパイ渋滞。やっぱり電車がいいと思いました。でも車でないとこういうところにも来られないですね。
遊びで Seasar で Web アプリケーションをつくっています。そのなかでデータ変換しようと、簡単なツールをつくって main から実行しようと
SingletonS2ContainerFactory.init(); ItemService itemService = SingletonS2Container.getComponent(ItemService.class);
こんなコードで実行してみたところ init のところで実行エラー。
java.lang.UnsupportedOperationException: createRequestComponentDeployer
原因は Provider が標準の DefaultProvider を利用していて、 request/session スコープのものを取り込むときに発生するものでした。 自分で管理していないところで使われていたので、 init する前に Provider を切り替えてあげたところ、うまく動きました。
ComponentDeployerFactory.setProvider(new ExternalComponentDeployerProvider()); SingletonS2ContainerFactory.init(); ItemService itemService = SingletonS2Container.getComponent(ItemService.class);
ComponentDeployerFactory#setProvider は S2ContainerServlet からも利用されていました。なるほどなるほど。
タイトルと URL をコピーする Ubiquity コマンド - Ussy Diary(2009-06-22)
以前は関数を利用するだけで、とくに気にもしていなかったのですが、 JavaScript でメッセージ出力するものを見直してみたところ、多少ずるしてすっきり書けました。
var regexp = /\{(\d)\}/g;
function format() {
var args = Array.prototype.slice.apply(arguments);
var s = args.shift();
return s && s.replace(regexp, function() {
var index = arguments[1];
return args[index] || function() { throw new Error("arguments[" + index + "] is undefined.")} ();
});
};
console.log(format("Hello {0}!", "JavaScript"));
console.log(format("Hello {0}!{1}", "JavaScript"));
Hello JavaScript! Error: arguments[1] is undefined.
以前より理解が進んでいるのかなと少し安心しました。 JavaScript のバージョンが 1.6 以上なら arguments の変換も Array.slice(arguments); でいけるのですが、 IE がまだまだ 1.5 なので駄目でした。
それから Array#join も速いみたいということで使っていましたが、最近は書かなくなりました。