goRua -- Gtk+ on Ruby User Agent for 2ch version 0.15-pre $Id: README,v 1.56 2002/09/07 03:38:55 haruyama Exp $ 春山 征吾 haruyama@unixuser.org スレッド: http://pc.2ch.net/test/read.cgi/unix/1008120213/ こちらの書きこみを >> 7 などで表記します. Note: goRua-0.11a 以前におけるセキュリティの問題 goRua-0.11a 以前には,チェックをせずに外部コマンドを 呼し出している箇所がありました. (goRua-0.11a のチェックは不完全だと思われます.) 他の問題も修正した goRua-0.12e 以降をお使い下さい 0. この version の注意点・変更点 ・検索ができるように URLや数字だけでない文字列を右上部のEntryに入れるとスレッド内で検索します 検索にはRubyの正規表現が使えます。 ・板の移動に対処 make update した際、板のURLが変っていることを認識すると セッション、ブックマーク、キャッシュを適当に変更するようにしました。 ・したらばを読めるように bookmarks ファイルに 掲示板なら E http://www.shitaraba.com/bbs/now/ したらばウォッチ@したらば BBS スレッドなら U http://www.shitaraba.com/bbs/now/dat/999688496_1.dat なんだよここパクリじゃん と指定します. スレッドに貼られたURLから飛ぶこともできます。 書きこみは対処してません. ・ read.cgi を使わないように サーバの CPU 使用率を減少させるためツールは read.cgi を使わないことが 以前から推奨されていたので, DAT 直読みをデフォルトにするようにしました ※付属の Makefile で make bookmarks_update とすると 既存の bookmarks ファイルを goRua_bookmarks_translator.rb を使って read.cgi を使わないような bookmarks に変換します. ■ new_2ch_bbsmenu.rb も read.cgi を使わない board_info を作ります. ■ DAT 直読みでもスレッドの差分取得に対応しました. ただし, gzip は使いません. (subject には使える) ■ http://members.jcom.home.ne.jp/monazilla/document/oyster_subjecttxt.html に従った User-Agent をつけるようにしました. User-Agent を独自に設定している場合読めない板があるかもしれません. ■ (board_info ファイルなどで) 指定されてない場合に read.cgi 経由か dat 直読みのどちらで Subject やスレッドを取得するかを制御する設定項目 via_dat を追加しました. ・レスの開始と表示数を制御するスピンボタンを追加しました ・ tab_type 設定項目を追加しました. .goRua_2ch/config ファイルを ご覧下さい 1. goRua とは Ruby/Gtk による 2ch ブラウザです. 現在 ・ 2ch のスレッド一覧,スレッドの取得 ・ スレッドの差分取得 ・ スレッドの内容の表示 が行なえます. 正式な名称として扱われる名前は ○ goRua ○ goRua -- Gtk+ on Ruby User Agent ○ goRua -- Gtk+ on Ruby User Agent for 2ch ○ ゴルァ ○ ゴルァ!! です. (命名者である dellin さんに厚く御礼申しあげます.) 2. パッケージ中のファイル goRua.rb 2ch ブラウザ connect2ch.rb 2ch から subject,thread ファイルを 取得するライブラリ goRua_color_table.rb 名前対 Gdk の色情報のテーブルを持つ HTML で良く利用される 140 色を登録している new_2ch_bbsmenu.rb board_info ファイルを生成するスクリプト goRua_cache_clean.rb しばらくアクセスしていない キャッシュファイルを消すスクリプト COPYING GNU GENERAL PUBLIC LICENSE (GPL) ChangeLog 更新履歴 README このファイル Makefile インストールなどを支援する Makefile .goRua_2ch/ ディレクトリ 「使い方」にて説明 goRua.rb,new_2ch_bbsmenu.rb,connect2ch.rb は GPL で配付しています. 3. 動作環境 EUC を正しく処理表示できる Gtk Ruby/Gtk (0.27 は問題があります ( >> 146), 0.28 の snapshot にも問題のあるものがありました, 0.26 以前ないし 0.28 をお使い下さい) が必要です. モナーフォントが使える X Window System (モナーフォントのページ: http://members.tripod.co.jp/s42335/mona/) モナーフォントがない場合は ~/.goRua_2ch/gtkrc ファイルで フォントの指定を行なってください. ruby-zlib (http://www.blue.sky.or.jp/atelier/) があると gzip ストリームでのファイルの取得や差分取得が行なえます. 使用を推奨します. 0.4.0 に対して http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-ext/2041 のパッチをあてないと Segmentation fault を起すことがあります. 0.5.0 にも問題があります. 最新の 0.5.1 は問題ありません. 4. インストール・設定 4.1 Makefile による方法 Makefile を利用してインストールを行なうことができます. 一般ユーザが自分のホームディレクトリにインストールする場合は, 環境変数 RUBYLIB を (シェルの設定ファイルなどで) 設定した上で % make install とします. root として 実行ファイルとライブラリをシステムにインストールする場合は # make install-files -n BINDIR=/usr/local/bin RUBYLIBDIR=/usr/lib/ruby/1.6 とします. そして 一般ユーザで % make install-env として設定ファイルをインストールします. また, 単に % make とすると 以下のメッセージを出します. ----- make install - 実行ファイル・設定ファイルをインストールし board_info ファイルを更新する make install-files - 実行ファイルをインストールする make install-env - 設定ファイルをインストールする make update - board_info ファイルを更新する make bookmarks_update - read.cgi 形式を利用しない bookmarks に変換する make cache-clean - 30 日以内にアクセスされていないキャシュファイルを消す make uninstall - 実行ファイルを消す make clean-env - 設定ファイルを消す make allclean - 実行ファイル・設定ファイルを消す ----- 4.2 手動で行なう方法・細かい設定 goRua を動かすには ~/.goRua_2ch/ ディレクトリ ~/.goRua_2ch/subject/ ディレクトリ ~/.goRua_2ch/thread/ ディレクトリ ~/.goRua_2ch/board_info ファイル が必要です. ブックマーク用のファイルとして ~/.goRua_2ch/bookmarks ファイル を利用します. ~/.goRua_2ch/sessions ファイル があるとそのセッションを復元します. ~/.goRua_2ch/gtkrc ファイル ~/.goRua_2ch/config ファイル で設定ができます. サンプルの gtkrc ファイルでは Widget に対し Font を設定しています. サンプルの config ファイルに設定できる項目の詳細が書かれています. version を変更した際は 新しい .goRua_2ch/config ファイルに目を通すことを お勧めします. パッケージ中の .goRua_2ch ディレクトリをそのままコピーして ください. connect2ch.rb ファイルが goRua.rb や new_2ch_bbsmenu.rb が読みこめる場所にある必要があります. 環境変数 RUBYLIB に connect2ch.rb ファイルのあるディレクトリを含めるか, connect2ch.rb ファイルのあるディレクトリで起動してください. しばらくは connect2ch.rb もいじることになると思いますので, upgrade のたびに更新をお願いします. ~/.goRua_2ch/board_info ファイル は http://www6.ocn.ne.jp/~mirv/2chmenu.html を 添付の new_2ch_bbsmenu.rb に (以前は http://www.2ch.net/newbbsmenu.html, http://www.2ch.net/2chmenu.html だった.今後も変わる可能性があるので http://www.2ch.net/2ch.html から判断してください.) 食わせて作ることもできます. (たぶん) new_2ch_bbsmenu.rb の引数は URL でもファイル名でもかまいません. 5. goRua の使い方 準備ができたら goRua.rb を起動します. 無事起動したら左上でカテゴリーを選びます. 次にその下のツリーで掲示板を選択します. すると掲示板にサブツリーがつくので展開してスレッドを選択します. すると右に内容が表示されます. 100 を超える発言がある場合は 右上部の '1-','Prev', 'Next' ,'最新'で 操作できます. '1-','Prev', 'Next' ,'最新' は スレッド表示部末尾にもあります. (スレッド一覧が展開されている時に右クリックすると 展開を閉じるようにしました.) 右上部の Entry に 4,1-100,>>1,>>2- などの指定を行なうことで 表示する発言群を指定できます. この指定をすると その後の Prev,Next などの操作も先の指定に 引きずられた形となります. また (h) ttp://... という文字列の場合は goRua で開けそうな場合は goRua でそうでない場合は外部のブラウザを起動します. 発言内容上で右クリックすると メニューが出て, URL (h?ttp://..) や >> 文字列を処理します. 発言内容以外のスレッドの内容表示部では 右クリックメニューで'Prev'と'Next'の操作ができます. 再度掲示板やスレッドを"選択"すると再読込します. (選択されている状態での選択では"非選択"状態になるのでご注意を) スレッドは右上部 '再読込' で同じビューを利用したまま再読込を行います. 'ブックマークの追加' で ブックマークにファイルを追加します. スレッドごとにビューを持ちタブにより切り替えられるようになっています. 選択したいスレッドのタブの上で左クリックをするとスレッドを選択できます. タブの右クリックするとすべてのスレッドの中から選択できます. ×を押すとそのスレッドの表示を消します. 'File'-'全部閉じる'ですべてのスレッドの表示を消します. Subject を読みこんである場合 スレッド のタイトルから検索が行えます. 左上部の Entry に正規表現を入れてください. '検索結果'カテゴリで検索結果が表示されます. 右上部の '新着から表示' が選択されていると (デフォルト) 以前取得したスレッドの情報がある場合スレッド情報を取得した際に その以前の情報の最後から表示します. どのスレッドを閲覧しているかの情報は ~/.goRua_2ch/sessions に 書きこまれます. 起動時にはこのファイルが読むこまれ, 前回みていたスレッドを表示します. 起動時に ~/.goRua_2ch/sessions があると ~/.goRua_2ch/sessions_backup ファイルにバックアップを取ります. 起動時にスレッドを読みこみに行く際掲示板のサーバが落ちているなどの場合 goRua が起動後操作できないことがあります. その際は ~/.goRua_2ch/sessions を移動するか -s オプションを付けて goRua を起動してください. その後 スレッド を見ると sessions ファイルが上書きされます. ご注意を. HPaned を利用して スレッド 選択用・ スレッド 内容表示用 Box の大きさを Window 内で変化できるようになっています. しきいの部分の下部のボタンを左右に動かして調整できます. スレッドを閲覧している際に '書きこむ' でスレッドに書きこむことができます. 掲示板のローカルルールをふまえて書きこみましょう. (いまのところ goRua ではローカルルールは取れません) 5.1 注意点 ・文字化けする モナーフォントを導入するか ~/.goRua_2ch/gtkrc ファイルで 適切なフォントの指定を行なってください. ・ Subject,スレッド取得方式 Subject (スレッド一覧) の取得は subject.txt を, スレッドの取得は read.cgi の raw モードを利用しています (ruby-zlib がある場合.ない場合は dat 直読み). 掲示板にたいして dat 直読みを使うよう指定することができます. ・ ~/.goRua_2ch/board_info ~/.goRua_2ch/bookmarks ~/.goRua_2ch/sessions の形式 2ch の掲示板サーバは時々変更するようなので "subject ファイルの取得に失敗しました. " というエラーが出る場合は, 2ch_bbsmenu.rb にて board_info ファイルを作りなおしてください. 将来, goRua 本体に組みこむかもしれません. A フィールド: 掲示板 (read.cgi,raw モード未対応) B フィールド: 掲示板 (read.cgi,raw モード対応) C フィールド: カテゴリー D フィールド: 仮想掲示板 (bookmarks 用) E フィールド: 掲示板 (したらば) S フィールド: スレッド (read.cgi,raw モード未対応) T フィールド: スレッド (read.cgi,raw モード対応) U フィールド: スレッド (したらば) (sessions ファイルでは S,T のみ有効) bookmarks ファイルで 最後の D フィールドの後に S,T フィールド以外 のフィールドがあると 'ブックマークの追加' がうまくファイルに反映 されません. D フィールドが複数ある場合, goRua 内では最後のものに 'ブックマークの追加' がなされますが, ファイルの上では bookmarks ファイルの末尾に追加するだけなので 整合性がない場合があります. # 将来は整合性を取るかな? bookmarks ファイルの編集は goRua 終了後にエディタなどで 行なってください. ・ Proxy サーバを利用する場合 goRua.rb 中で $proxy_addr,$proxy_port 変数を設定してください. 6. 既知の問題点 ・~/.goRua_2ch/以下に沢山のファイルができる subject や thread の情報がどんどん追加されるため, 沢山のファイルができることになります. 将来 goRua で条件を指定して消すことができるように したいと思います. 現在 添付の goRua_cache_clean.rb によって 30 日以内にアクセスされていないファイルを消せます. Makefile を利用して % make cache-clean としても構いません. ・ 多くの情報を表示しようとするとおかしな表示になる 一度に表示する発言を 100 に制限してるのはこのためですが, それでもおかしく場合があります. Gtk のバグのようです. 今後一度に表示する発言を 100 未満にすることもできるようにすること で対応します. 右上部の entry widget で 1-50 などと指定するとうまくいくかもしれません. ・ 発言内容が折り返されて AA などがうまく見れない または下にはみだす 姑息な手段である程度は対応していますが, もしだめな場合は Window を広げるなどしてください. ・ IPv6 環境でうまくうごかない. IPv6 環境でうまくうごかないとのご報告を頂きました. Net::HTTP 次第だと思われますので 特に対応はしません. ・ 内容が消える Gtk の widget で対応できない文字があると Text や TreeItem のすべての内容が消える場合があります. ある程度は対応して表示されるようにしていますが, 完全ではありません. 7. TODO 上のほうを優先するわけではありません. EUC 以外への対応 オフラインモード (一応実装されたが) プログラムの整理 (また汚なくなってきた) ドキュメントも整理 待ち時間に読み込み中のマーク (砂時計とか,現在は文字列で状態表示) 文字符号参照や表示できない文字にもっと対応 (ある程度行なった) board_info ファイルの goRua 内での更新・その際のキャッシュの移動 (キャッシュの形式を変更するかも, http://www.2ch.net/2ch.html も処理しないとだめかな) たくさん subject を持っているカテゴリの描画が遅くなるのでなにか対処 (カスタマイズ対象に?) などなど..... UI の洗練もそろそろ? 認証が必要になったら, それもやらないと. 8. いいわけ ・発言内容が Gtk::Text なのはなんかへん 簡単にコピーアンドペーストできるようにしたかったので. ・では全部 Gtk::Text にすれば? mailto を見たいときだけ見たかったので. ・ UI がいまいち Gtk についてよくわかっていないので調査して 今後修正していきます. たぶん大幅にかわりそう. (自分個人が使う分には現状でも結構満足ではある) ・そもそもなぜ Ruby/Gtk ? なんとなく. ・すごく富豪的プログラミングですね (富豪的プログラミング: http://www.csl.sony.co.jp/person/masui/fugo.html) まったくそのとおり. 9. 更新履歴 別ファイル ChangeLog としました 10. 参考文献 仕様について: http://members.jcom.home.ne.jp/monazilla/document/index.html http://64.71.134.227/computer/479/monazilla.html http://www.skipup.com/~niwatori/ #メモ: html 化されてないのを読むには offlaw.cgi を使う #しかし変更されたようだが... http://www.fmfm.binboserver.com/tech/rawmode.txt #まだ connect2ch.rb いじるところ多いな... monazilla のメーリングリスト Ruby,Ruby/Gtk について: 「オプジェクト指向スクリプト言語 Ruby 」 (まつもとゆきひろ 石塚 圭樹, アスキー出版局) http://ruby-gnome.sourceforge.net/ http://www.ruby-lang.org/gtk/ja/index.html http://ruby.freak.ne.jp/gtk/ http://home2.highway.ne.jp/mutoh/tips/ Gtk+ について: http://www.gtk.org/rdp/download.html http://www.gtk.org/faq/ 文字符号参照について: http://www.asahi-net.or.jp/~bd9y-ktu/html4rec_f/charset.html (文字符号参照にどこまで対応するかは未定です) http://channel2.tripod.co.jp/etc/check.html