タグ

ブックマーク / espion.just-size.jp (5)

  • Trac をインストールしてみたよ

    Trac の解説書を書いたので、こちらもあわせてよろしくお願いします。 「入門Trac」と言うを書きました プロジェクト管理システムの Trac を Debian/Sarge なサーバマシンに入れてみました。 どうせ一人で管理しているプロジェクトしかないので、最初は FlexySvn と言う XUL アプリな Subversion browser を入れようと思っていたのですが、PHP5 を要求しやがるので諦めました。PHP4 でも動くように頑張っているみたいなので、そっちを期待しましょう。 で、Trac とは「Wiki(情報共有)」と「BTS(バグ管理)」と「Subversion(ソースコード管理)のフロントエンド」が一体になったなんだか凄そうなシステムです。どう考えても一人で使うようなものではありませんが、セッティングマニアに何言っても無駄! Debian では標準のパッケージが用意

  • Trac で遊んでみたよ その1 - 日本語

    ■ Trac で遊んでみたよ その1 - 日語 Trac 入れてから 1ヶ月位経ちましたが、大分手放せないツールになってきました。チケットとログの連動が便利杉。 さて、そんな Trac ですが、ソースコードブラウザで EUC や ShiftJIS が化けます。これ自体は trac.ini の default_charset を japanese.shift_jis とかにしておけば良いのですが、(勿論 python-japanese-codecs が必要ですが!!) 1つしか指定出来ないので、文字コードが混在している自分のウンコ環境では片方が確実に文字化けしてしまいます。 インタアクト さんの所の配布物に含まれるドキュメントによると、svn:mime-types を指定してやれば解決する可能性が高いらしいですが、全部チェックするのは面倒すぎなので、trac のソースコードをいじって対応し

  • Greasemonkey スクリプトは安全ではありません

    ■ Greasemonkey スクリプトは安全ではありません Webアプリケーションセキュリティフォーラム の奥さんと高木先生のバトルより。 高木先生 ええと、「クッキーが漏洩する程度なので問題ない」と聞こえたような気がしたんですが。 Greasemonkey には超絶便利な GM_xmlhttpRequest があるので、どのウェブサイト上でスクリプトを動かそうが、あらゆるサイトにアクセスする事が可能です。この観点から考えると、クッキーが漏洩するどころの騒ぎではありませんし、スクリプトを有効にするドメインが限られていた所で大した意味はありません。例えば Google Search を便利にするようなスクリプトに、mixi のパスワードを任意の値に変更させるようなトロイを仕込む事も難しくないでしょう(実際に作って試しました*1)。もちろん対象サイト上に、XSS や CSRF の脆弱性がなく

  • 入力文字数の制限を可視化する JavaScript

    ■ 入力文字数の制限を可視化する JavaScript 好評の、読み込ませるだけシリーズ の8番目。 maxlength 属性とかアプリケーション側とかでフォームの入力文字数を制限していても、ユーザにとっては自分が何文字くらい入力したかがわからないと不便そうなので、汎用的なのを作りました。 フォームにフォーカスが当たると、入力した文字数と入力可能な文字数が表示され、リアルタイムに更新されていきます。 動作サンプル コードは次の通りでして、prototype.js(1.5.0くらい) に依存してます。 var VisualLength = Class.create(); VisualLength.prototype = { initialize: function(attribute) { this.fields = ['INPUT', 'TEXTAREA']; this.attribute

  • livedoor Reader でフォルダとレートを共存させる Greasemonkey 用スクリプト

    ■ livedoor Reader でフォルダとレートを共存させる Greasemonkey 用スクリプト livedoor Readerの不満点をいくつか 大体自分と同じだなーとか思いつつ眺めていた。 それで、フォルダ管理しつつフォルダの中身をレート順にするっていうのは Greasemonkey スクリプトで解決可能なので紹介します。作ったの結構前なので良く覚えてないですが、多分こんな感じでいけるかと。 with(unsafeWindow) { Subscribe.Controller.prototype.sort = function(){ var tmp = Config.sort_mode.split(':'); var key = tmp[0]; var option = tmp[1]; this.model.list.sort_by(key); if(option == "re

  • 1