[firefox] JDownloader + FlashGot

FlashGot 経由で JDownloader を使用していると、時々保存ファイル名が正しく伝わらないとがある。
厳密な理由は調べきれなかったが、何となく理由がわかってきたのでその対策を覚え書き。


原因との一つとして、「URLに "["等の一部の記号が含まれるとURLが正しくパースされない」が上げられる。
試しに JDownloader に対してコマンドラインで URL を送ってやると、アンカー("#")以下のアドレスのパースを打ち切っているような挙動を示した。
となると対策は簡単で、これらの文字を全てエンコードして JDownloader に渡してやるだけで事足りる。
と、ここででヤクの毛刈りが始まった……


既存のJDownloader インスタンスに対して、コマンドラインでのURL受け渡すことが何故か出来ないのだ。
新規インスタンスを立ち上げる時には、普通にURLが受け渡されているので、引数は間違っていないはず。
色々調べたけれど、結局原因が分からなかったので、JDownloader のリモートコントロール・エクステンションを利用することにした。


エンステンション設定

  • Setting → Extensions で、"JDRemoteControl" を有効にする
  • Setting → Extension → JDRemoteControl のポートを任意のものに変更(もしくはそのまま)

JDRemoteControlの使い方を調べるのもこれまた一苦労で、結局ドキュメントの類が見つからず、ソースコードを読んで何となく使い方を把握したという。。

JDremoteControlの使い方
WEBブラウザで、"http://localhost:10025/action/add/links/grabber1/start1/ダウンロードしたいアドレス" と入力すると、既存のJDownloaderインスタンスに対し、ダウンロードファイルを指示することが出来る。


さて、ここまで準備出来たら後は簡単。
適当なスクリプト言語等でURLのエンコード + JDRemoteControlへの指示を記述し、FlashGotでそのスクリプトを指定してやるだけだ。
Rubyだとこんな感じ

  require 'open-uri'
  require 'uri'
  encoded_url = URI.encode(ARGV[0], /[^-_.!~*'()a-zA-Z\d;\/:@+$,]/n)
  open("http://localhost:10025/action/add/links/grabber1/start1/#{encoded_url}")

実際は、上記のスケルトンにファイル名の置換などの便利機能を追加して使用している。

[cygwin] Cygwin で scrAPI を使用するとエラーが発生する

cygwinで scrAPIを使用すると下記のエラーが発生する

Scraper::Reader::HTMLParseError: Unable to load /lib/ruby/gems/1.8/gems/scrapi-1.2.0/lib/scraper/../tidy/libtidy.dylib (Scraper::Reader::HTMLParseError)

これは、scrapi に添付されている libtidy.so が linux 専用の為らしい TwitterArchiveFilter を cygwin 上で動かす - すぱいだー日記。

対策は下記の通り

% cd /lib/ruby/gems/1.8/gems/scrapi-1.2.0/lib/tidy
% mv libtidy.dll libtidy.dll.linux
% mv libtidy.so libtidy.so.linux
% cp /usr/bin/cygtidy-0-99-0.dll /lib/ruby/gems/1.8/gems/scrapi-1.2.0/lib/tidy/libtidy.dll

CruiseControl.rb で Continuous Integration


・準備
http://rubyforge.org/frs/?group_id=2918 より最新版のパッケージを取得し、$/HOME で解凍

% cd ~/
% tar xvzf cruisecontrol-1.4.0.tgz

以上で終了!!
Railsアプリなので、RubyGemsが必要。
 必須ではないが、Rakeが入れてあると更に便利


・プロジェクトを登録

% cd cruisecontrol-1.4.0
% ./cruise add プロジェクト名 --url  --username <ユーザー名>  --password <パスワード>

※ Mercueialを使用するときは、 --source-control hg を指定する


以下のディレクトリ構造でファイル群が生成される

$HOME/.cruise .. cruisecontrolのデータディレクトリ
  + projects/プロジェクト名 ... 登録したプロジェクト
    + work ... 指定したsvnリポジトリをチェックアウトしたもの

※ $HOME/.cruise を変更するには、環境変数 CRUISE_DATA_ROOT を定義する


・設定ファイルの編集
$HOME/.cruise/projects/プロジェクト名/cruise_config.rb がビルドタスクの設定ファイル
シェルスクリプトを走らせる場合は、下記のように記述する

Project.configure do |project|
  project.build_command = './foo.sh'     #※ $HOME/.cruise/projects/project-name/work がカレントディレクトリ
end


・サーバー起動

% LANG=C ./cruise start

daemonとして起動するときは、

% LANG=C ./cruise start --daemon


http://localhost:3333 でプロジェクトビューに。

メールの設定をする

ローカルにメールサーバーが立ち上がっていない場合は、下記の設定を行う。

・~/.cruise/site_config.rbでSMTPを設定

ActionMailer::Base.smtp_settings = {
  :address => "xx.xx.xx.xx"
}

※変更後は、CruiseControlを再起動する必要がある


・メールヘッダを変えるには
ユーザーが変える手段は用意されていないので、ソースを直接変更する

app/models/build_mailer.rb 4行目

@subject = "[CruiseControl] #{subject}"

の部分を変更する

Subversionの更新時のタイムゾーン修正

Subversion更新ログの +0900 部分がシカトされているので、無理矢理補正

lib/source_control/subversion/revision.rb

        @author, @time, @message, @changeset = author, time, message, changeset
+        @time = @time.new_offset(Rational(9,24)) if @time
      end

■参考
http://journal.mycom.co.jp/articles/2007/03/28/CruiseControlrb/index.html

http://w.koshigoe.jp/study/?[CI]%20CruiseControl.rb

[Mercurial] ssh経由で mercurial を使う

下記のように記述する

% hg clone ssh://user-name@target-address//path/to/repository

scp、trampとか、皆微妙に記述法が違うのは何とかならないものか……

  • 参考

http://sh1.2-d.jp/b/2007-10-18-00-05.html

[CentOS] CentOS に Mercurial をインストール

ディレクトリ構造は、[Solaris] Solaris に rubygems をインストール - プログラム番長のヲボエガキ を参照

% tar xvzf mercurial-1.5.tar.gz
% cd mercurial-1.5
% make all
% python setup.py install --prefix=$HOME/cent

~/.bashrcに下記を追記

export PYTHONPATH=/usr/lib/python2.4/site-packages:/home/s-masayu/cent/lib64/python2.4/site-packages

[Solaris] Solaris に rubygems をインストール

インストール先を $HOME/solaris/ とした場合
CentOSSolarisを同じ$HOMEで使用しているため、以下のような構造にしている

$HOME
  + cent
     + bin
     + lib etc...
  + solaris
     + bin
     + lib etc...
% ruby setup.rb config --prefix=$HOME/solaris

下記のファイル群ができる

$HOME/solaris/bin/gem
$HOME/solaris/lib/rubygems/.+

~/.bashrcに下記を追記

export PATH=$HOME/solaris/bin:$HOME/solaris/rubygems/bin:$PATH
export GEM_HOME=$HOME/solaris/rubygems
export RUBYLIB=$RUBYLIB:$HOME/solaris/lib

■参考
http://www.masahiko.info/it/archives/000980.html




CM

http://lunar.aqua-ws.jp/ では、下記のサーヴィスをご提供しております。
http://lunar.aqua-ws.jp/salon.html
  「時間がなくって……」「自宅療養中でも綺麗になりたい」
  ご安心下さい。あなたのおそばにトップスタイリストがお伺い致します。
  まずはお気軽にお電話にてご予約ください。
http://lunar.aqua-ws.jp/bridal.html
  あなたの晴れ舞台のためにお手伝いさせてください。
  より上質のヘアメイク、レンタルドレスをお手軽価格でご提供しております。
http://lunar.aqua-ws.jp/cancer.html
  病に立ち向かっていても、美しくありたい。
  抗がん剤による脱毛や円形脱毛症時に最適なウィッグを。フィッティングは医療
  機関までお伺いいたします。
http://lunar.aqua-ws.jp/wig.html
  いつもと違うあなたに変身しませんか? 気になるアイテムを心ゆくまで
  お試しください。個室をご用意してお待ちしております。
http://lunar.aqua-ws.jp/restoration.html
  育毛・養毛のためのエステをぜひお試し下さい。育毛剤の販売も行っております。

[Ubuntu] Ubuntu に rubygems をインストール

RubyOnRails - Community Help Wiki を参考に

% sudo aptitude install rubygems

~/.bashrcに下記を追加

export PATH=/var/lib/gems/1.8/bin:$PATH
%sudo gem install rubygems-update
%sudo /var/lib/gems/1.8/bin/update_rubygems     note: this will clean out your gems!
% gem --version
1.3.6

■参考
Ubuntu/Ruby - TOBY SOFT wiki
http://blog.netblue.jp/2010/03/07/ruby-gem1-3-6-update-problem-on-ubuntu-9-10/