ネイティブのエンコーディングから 'UTF-8' に文字列を変換できません (Can't convert string from native encoding to 'UTF-8') の対処法

  UTF-8 なホストに、EUC-JP のターミナルで接続している場合 (export LANG=ja_JP.eucJP してある) に、svn で以下のようにエラーが発生しました。

$ svn st
svn: Can't convert string from native encoding to 'UTF-8':
(svn: ネイティブのエンコーディングから 'UTF-8' に文字列を変換できません:)

  UTF-8 なファイル名をもつファイルで引っかかっているようです。
  この場合は以下のようにして、一時的に ja_JP.UTF-8 にしてあげるとうまくいきます。

$ env LANG=ja_JP.UTF-8 svn st

  もっとも、普通に UTF-8 なターミナルで export LANG=ja_JP.UTF-8 して動かすのが一番だと思いますが、まあこんな状況もあるということで。

Google Code Project Hosting で差分表示が可能になってた

  愛用している Google Code Project Hosting ですが、ソースコードの差分表示が可能になっていたので紹介。
  もしかしたら始めからあったかもしれないのですが、最近気づいたので……

  簡単に、Google Code Project Hosting ですが、Google が提供している、オープンソース向けの Subversion レポジトリのホスティングサービスです。
  具体的に何ができるかは、ヘルプを見てください。

- Google Code FAQ - What's the new project-hosting service on Google Code?
  http://code.google.com/support/bin/answer.py?answer=56507&topic=10381

  まあ、trac のようなものです。

  で、本題ですが、百聞は一見にしかずということで以下をご覧下さい。

  

- Diff of UMain.pas r7 - vimtray - Google Code
  http://code.google.com/p/vimtray/source/diff?old=5&r=7&format=unidiff&path ...

  trac のように綺麗に色分けされて差分表示ができるようになっています。結構便利です。
  また、リポジトリブラウザみたいなのもあって、こちらもなかなか便利です。

  なお、Google Code Project Hosting は Google のアカウントがあれば誰でも利用することができます。
  もちろん、オープンソースのプロジェクト限定ですが。

  Google Code Project Hosting のはじめ方は以下のページが分かりやすくまとまっています。

- Google Code でホスティング+TortoiseSVN の使い方
  http://kawa.at.webry.info/200801/article_5.html

オープンソースになった Fastladder の ER 図を描いてみた

  Livedoor の Fastladder がオープンソースになったということで、勉強を兼ねて ER 図を描いてみました。


  (クリックで大きくなります)

  使ったツールは DBDesigner 4 (日本語版) です。
  DBDesigner 4 では、SQLite 3.x のデータが読めないようなので、SQLite ODBC Driver を使って、ODBC で読み込み、リバースエンジニアリングしました。

  テーブルの定義はソースを見ながら作成中ですが、あまり Ruby が分かっていないので時間がかかりそうです。。。そのうち公開します。

- Fastladder Open Source
  http://fastladder.org/

長い URL を折り返して表示する jQuery プラグインを作りました

  主に Firefox での使用を意識しているのですが、Firefox では長い URL は折り返さない仕様なのでページのレイアウトが崩れてしまうことがあります (Firefox 3 では折り返す仕様になるみたいです)。

  このため MR Tech Link Wrapper というアドオンや、url_breaker+ という Greasemonky スクリプトがあります。

  それらを参考にして、長い URL を折り返して表示する jQuery プラグイン Link Wrapper を作ってみました。

- jquery.linkwrapper.js のデモ
  http://pocari.org/demo/jquery.linkwrapper/

  jquery.linkwrapper.js

  このプラグインは、MR Tech Link Wrapper や url_breaker+ と同じように、<wbr> という非標準のタグを挿入しています。また、Opera は <wbr> に対応していないようなので、&#8203; (ZERO WIDTH SPACE: ゼロ幅スペース) を挿入しています。

# ですので、Opera では URL の文字をコピーすると h t t p : / / w w w のようにスペースが入ってしまいます。

  このプラグインでは、<wbr> の挿入位置ですが、デフォルトでは 1 文字毎にしています。
  1 文字毎はやりすぎな感じもするのですが、まあ綺麗に折り返すために、取り合えずこのようにしてみました。

  オプション (pattern) に <wbr> を挿入する正規表現を指定することで、折り返しの位置を調整することができます。

- 使い方

<script type="text/javascript" src="jquery-1.2.2.pack.js"></script>
<script type="text/javascript" src="jquery.linkwrapper-1.0.3.js"></script>
<script type="text/javascript">
// <![CDATA[
$(function() {
  // オプションを指定しない場合
  $('a.link1').linkwrapper();
  // オプションを指定する場合
  $('a.link2').linkwrapper({ pattern: '(&|\\?)' });
});
// ]]>
</script>
</head>
<body>
<p><a href="http://..." class="link1">http://...</a></p>
<p><a href="http://..." class="link2">http://...</a></p>


  対応しているブラウザですが、IE 6.0、IE 7.0、Firefox 2.0.0.11、Safari 3.0.4、Netscape 7.1、Opera 9.25 で確認したところ問題ないようです。

  以下にソースを載せておきます。
  ライセンスは、jQuery と同様に MIT と GPL のデュアルライセンスにしました。

(function() {
  jQuery.fn.linkwrapper = function(config) {
    config = jQuery.extend({
      pattern: '(.)'
    }, config);
    var pattern = new RegExp(config.pattern, 'g');
    var tag = jQuery.browser.opera ? '&#8203;' : '<wbr />';
    return this.each(function() {
      jQuery(this).html(jQuery(this).text().replace(pattern, '$1' + tag));
    });
  };
})(jQuery);


- ダウンロード
  jquery.linkwrapper-1.0.3.js

  なお、jQuery のプラグインの作り方は、以下のエントリが大変参考になりました。

- ref.: jQuery のプラグインを作成する : ブログの新着記事を表示:Goodpic
  http://www.goodpic.com/mt/archives2/2007/11/jquery.html

- ref.: The wbr tag
  http://www.quirksmode.org/oddsandends/wbr.html

- 追記 (2008-02-05)
  メソッドチェーンができないことに気づいたので、jquery.linkwrapper-1.0.2 をリリースしました。
  これで、以下のようにできるようになります。

$('a.link1').linkwrapper().css('color', '#f00');


- 追記 (2008-03-21)
  jQuery.noConflict(); の時に動作しないのを修正して、jquery.linkwrapper-1.0.3 をリリースしました。