2011年6月5日日曜日

Dojoでリモートのライブラリとローカルの自作コードを両立させる方法

Dojoでネット上にあるライブラリと,自前サーバにある自作コードを両立させて使う方法をメモしておきます.

まずは,状況設定です.「http://ajax.googleapis.com/ajax/libs/dojo/1.4/dojo/dojo.xd.js」に置かれているものをライブラリとして使うことにします.一方,次の図の「war/js/rfj」ディレクトリに置かれている「ScrollBar.js」を自作コードとして使うことにします.


この状況下で「ScrollBar.js」ファイルで定義されている「ScrollBar」クラスを「war/scroll_bar_test.html」ファイル内で使うためには,次のようなコードを記します.

<script
  type="text/javascript"
  src="http://ajax.googleapis.com/ajax/libs/dojo/1.4/dojo/dojo.xd.js"
  djconfig="parseOnLoad: true,
    baseUrl: './', modulePaths: {'rfj': 'js/rfj'}">
</script>
<script type="text/javascript">
dojo.require("rfj.ScrollBar");

dojo.addOnLoad(function() {
  var scrollBar = new rfj.ScrollBar();
);
</script>


ポイントは,最初のscript要素にあるdjconfig属性の値にあります.ローカルのコードが置かれている場所を「baseUrl: './', modulePaths: {'rfj': 'js/rfj'}」という記述で指定します.

baseUrlには,自作コードへのパスを記す際の起点となるディレクトリをこの記述が記されたHTMLファイルから見た相対パスで記します.今回は,「war/scroll_bar_test.html」ファイルがあるのと同じディレクトリを起点とするので,「./」を指定しています.

modulePathsには,Dojoでいうところのモジュールを置いてあるディレクトリのパスを記します.このパスは,baseUrlで指定したディレクトリからの相対パスとなります.「ScrollBar」クラスが定義されている「ScrollBar.js」ファイルは「war/js/rfj」ディレクトリにあるので,そのディレクトリを「war/scroll_bar_test.html」ファイルのあるディレクトリからの相対パスで記すと,「./js/rfj」となります.

2011年6月4日土曜日

FirefoxにてDIV要素を連続でドラッグ&ドロップできない問題

FirefoxにてDIV要素を連続でドラッグ&ドロップできない問題に遭遇しました.一応解決したので,メモしておきます.

DIV要素を水平にドラッグ&ドロップできるようにしたつもりでしたが,一旦ドロップして再度ドラッグしようとすると,そうならずに半透明になった要素がマウスポインタの動きに合わせて追随してくるという問題にFirefoxで遭遇しました.つまり,次の図のような感じです.


結局,下記のようにCSSを変更すると期待通りの動作をするようになりました.

.scroll_bar-handle {
  position: absolute;
  height: 16px;
  top: 0px;
  background-color: red;
  -moz-user-select: none; /* これを追加 */
}


Firefoxでは,要素に対して操作が行われると,それが選択対象となるようです.続けて選択対象の要素に対して操作を加えようとすると,その分身が表示されます.そして,本体に加えられた操作がその分身に対して適用されるようになるみたいです.その設定を無効にするのが,CSSに新たに加えた1行となります.他のブラウザ(といってもChromeだけですが)では,当初から期待通りに動作していたので,この問題(その仕様を知らなかった僕に問題があるのですが)はFirefoxに固有のもののようです.

2011年2月11日金曜日

Eclipse HeliosにGoogle Plugin for Eclipseをインストールする方法

Eclipse HeliosにGoogle Plugin for Eclipseをインストールしたので,その方法をメモしておきます.今回のインストールは[1]のページを参考にしました(というかそのとおりに行いました).
  1. 「Help」→「Install New Software...」を選択
  2. 「Add」を選択
  3. 「Name」に「Google Plugin for Eclipse」を入力
  4. 「Location」に「http://dl.google.com/eclipse/plugin/3.6」を入力
  5. 「OK」を選択
  6. 「Plugin」を選択
  7. 「SDKs」を選択
  8. 「Next」を選択
  9. 「Next」を選択
  10. 「I accept the terms of the license agreements」を選択
  11. 「Finish」を選択
  12. 「Restart Now」を選択
[1] Google Plugin for Eclipse 3.6 (Helios) Installation Instructions

2011年1月10日月曜日

Apache Antをインストール

Apache Antをインストールしたので,その手順をメモしておきます.なお,インストールした環境は,Windows 7+JDK1.6+Cygwinです.
  1. Apache Antのサイトから最新版(現時点では1.8.2)をダウンロード
  2. $ unzip apache-ant-1.8.2-bin.zip
  3. $ mv apache-ant-1.8.2 /opt/ant
  4. 環境変数JAVA_HOMEが設定されているか確認.されていなかったら設定する.
  5. 環境変数ANT_HOMEに「C:\Cygwin\opt\ant」を設定.
  6. 環境変数PATHに「%ANT_HOME%/bin」を追加.

2011年1月7日金曜日

Rubyでレコメンドエンジンを作成

Rubyでレコメンドエンジンを作ってみました.といっても,元々Perlで書かれたものをRubyで書き直しただけです.元のプログラムはWEB+DB PRESS Vol.57の記事[1]で解説されていたものです.今回はソースファイル三つとデータファイル一つです.それらは次のリンクからダウンロードできます.

recommend01.rb
recommend02.rb
recommend03.rb
tags.txt

実行方法と実行結果は,以下のとおりです.

$ ruby recommend01.rb
0.32659863237109
0.408248290463863
0.8
$ ruby recommend02.rb tags.txt
7: 1.00 シリコンバレーから将棋を観る
8: 0.32 「ほんとうのプロダクトアウト開発」 — マツダはなぜ,よみがえったのか?
11: 0.32 Googleを支える技術
1: 0.26 実践ハイパフォーマンスMySQL 第2版
14: 0.07 Perlプログラマのレベル 10
13: 0.00 Perl で CSS セレクタ
2: 0.00 編集距離(Levenshtein Distance)
12: 0.00 HTML::TreeBuilder + CSSセレクタがいい感じな件
6: 0.00 γ符号,δ符号,ゴロム符号による圧縮効果
3: 0.00 最長共通部分列問題(Logest Common Subsequence)
5: 0.00 YAPC::Asia 2009 1日目 「Perlで圧縮」の資料
9: 0.00 Burrows Wheeler Transform と Suffix Array
4: 0.00 YAPC::Asia 2日目 「はてなブックマークのシステムについて」
15: 0.00 ETech 2006 レポート
10: 0.00 モノリスでジャガーをスキャンしたらじゃがボックルが届いた
$ ruby recommend03.rb tags.txt
7: 1.00 シリコンバレーから将棋を観る
8: 0.32 「ほんとうのプロダクトアウト開発」 — マツダはなぜ,よみがえったのか?
11: 0.32 Googleを支える技術
1: 0.26 実践ハイパフォーマンスMySQL 第2版
14: 0.07 Perlプログラマのレベル 10


参考資料
[1] 伊藤 直也: レコメンドエンジン開発に挑戦—関連記事を導き出すしくみを知る, アルゴリズム実践教室 第2回, WEB+DB PRESS, Vol. 57, pp. 156-164, 2010-08

関連資料
[2] MacPortsでrb-mecabをインストール
[3] Rubyでベイジアンフィルタを作成

2011年1月4日火曜日

MacPortsでMecabをインストール

MacPortsでMecabをインストールしたので,メモしておきます.Mecabはフリーの形態素解析ツールです.

$sudo port install mecab
$sudo port install mecab-ipadic-utf8
$sudo vi /opt/local/etc/mecabrc
--
dicdir = /opt/local/lib/mecab/dic/ipadic-utf8
--


今回のインストールは,ページ[1]を参考にしました.

参考記事
[1] Rubyの形態素解析「MeCab」で文章から名詞を抽出してみる

MacPortsでRubyをインストール

MacPortsでRubyをインストールしたので,メモしておきます.

$ sudo port install ruby
$ sudo port install ruby19


Rubyは素人でよくわからないので,とりあえずバージョン1.8とバージョン1.9の両方をインストールしました.この場合,コマンドは1.8がrubyで,1.9がruby1.9になるみたい.