■掲示板に戻る■ 全部 1- 101- 201- 301- 最新50 [PR]ぜろちゃんねるプラス[PR]  

perlで立ててみる

1 :test:2003/01/11 16:21 ID:???
どきどき
■このレスへのトラックバック
[ringtone ] http://ringtone-1316218.blogspot.com
[free ringtone ] http://free-ringtone-1185819.blogspot.com
[ringtone ] http://ringtone-1988162.blogspot.com
[free ringtone ] http://free-ringtone-1838278.blogspot.com
[ringtones ] http://ringtones-1676935.blogspot.com
[free verizon ringtones ] http://free-verizon-ringtones-1998586.blogspot.com
[free verizon ringtones ] http://free-verizon-ringtones-1998586.blogspot.com
[free ringtone ] http://free-ringtone-1827260.blogspot.com
[free sprint ringtone ] http://free-sprint-ringtone-1140398.blogspot.com
[free ringtones ] http://free-ringtones-1053792.blogspot.com
[ringtones ] http://ringtones-1658391.blogspot.com
[ringtone ] http://ringtone-1681183.blogspot.com
[free ringtone ] http://free-ringtone-1533032.blogspot.com
[ringtones ] http://ringtones-1233527.blogspot.com
[ringtones ] http://ringtones-1893911.blogspot.com

136 :1:2003/02/14 17:50 ID:???
Fix:
*「悪い」Apacheのサーバーで、差分取得でない時もLast-Modified、Etagが使
われてなかった問題
* スレの初回オープン時にetagが保存されていなかった問題
* 12chで、1行目の最後がヌル文字だった時にエラーとなっていた問題

などの修正を行いました。

137 :1:2003/02/14 23:26 ID:???
ローカルで、バージョン1.68以前のメガビ掲示板も読めるようにしました。以前
実装したcgi読みの方式と、今のデータ直読みとの使い分けの仕組みを作るのが
結構やっかいで、まだテスト中です。

>55
> なんかいちごって、バグが放置されたまま開発が終わってる感じがしました。
> cgiも手に入らなかったし。

遅自己レスですが、手に入りました。まだ鯖が復旧しない状況ではありますが、
読んでみたいと思います。

138 :1:2003/02/15 21:13 ID:???
2chTypeBBS(Ahhan、メガビ等の元になったもの)に対応してみました。これに
伴って、いちごをほぼ同様の扱いとしてみたんですが、復旧しないので、機能す
るかどうかはどうにもわからないです。

139 :1:2003/02/15 23:16 ID:???
AhhanとAround掲示板については、特に登録作業をしなくてもスレ開けるように
してみました(でもできるだけ登録推奨)。

140 :1:2003/02/16 02:14 ID:???
Ahhanのスレ整形がうまくいってなかったことに気づいたので修正しました。
難しすぎるねんあっはんも〜(怒

141 :1:2003/02/16 11:49 ID:???
Fix: jbbs@したらばで、スレHTMLのdatへの整形がうまくいかない場合があるの
を修正。ためしにローカルにdatがあれば見てほしいんですが、2ちゃんのdat形
式になってない方が多いんではないかと。

@したらばではeucが使われてますので、Win環境だとそのまま見ることはできな
いわけです。Vimでは、Vim自体は文字コードの変換は基本的に行わず、iconvラ
イブラリを呼び出して変換させています。これにはfileencodingsというオプ
ションが用いられます。そのオプションに設定されている文字コードのリスト
を、最初から順にトライしていき、失敗すれば次、また次と、変換できるまで繰
り返します。

設定値を見るには

:echo &fencs

とします。私の場合は

ucs-bom,iso-2022-jp-3,utf-8,ucs-2le,ucs-2,euc-jisx0213,euc-jp

となっています。設定の仕方は

:set fencs=ucs-bom,iso-2022-jp-3

といった感じでコンマ区切りで行います。

これをちゃんとやっていても失敗する場合があるのです。例えば ` といった、
eucにない文字が含まれている場合です。こういう場合の対処はちょっと難しい
ので今回は説明を見送ります。

142 :1:2003/02/16 11:58 ID:???
現在開いているスレ、スレ一覧のキャッシュファイルを簡単に開く方法がありま
す。それぞれのバッファには b:cachename という名前でファイルのパスが保持
されています。これを使って、次のようにタイプします。

:sp <C-R>=b:cachename<CR><CR>

やってみてください。

143 :1:2003/02/16 16:50 ID:???
ローカルルールの表示ってどうやればいいんだろう?

144 :1:2003/02/16 18:23 ID:???
Tip: 他の2ちゃんブラウザと異なり、スレウィンドウを複数開いてタブで表示切
り替え、ということが仕様上非常に困難で、おそらく実装できないと思います。
そこで、次のような "Vim way of doing things" を覚えていただくと便利にな
るんではないかという提案です。

各スレ、スレ一覧は固有のバッファとして管理されており、通常のファイル編集
時と同様に <C-O>, <C-I> といったVim本来の移動コマンドで履歴を行き来する
ことができます。

:ju

とタイプすることでジャンプ履歴とともに、現在の履歴位置を確認することがで
きます。 また、buffer コマンドにより表示を切り替えることもできます。

:ls とタイプすると各バッファの番号と名前が表示されます。目的のバッファが
見つかれば(ここでは 1 とします)

:1b または :b1

とすることで表示できます。別ウィンドウで開くには

:sb1

とします。

スレの場合に関しては、通常は画面左下の履歴画面(<C-H> で移動)から選択す
ることをお勧めします。

145 :1:2003/02/16 21:03 ID:???
>143
センタリングなんかどうでもいいのにやってしまった。まだローカルで実験中で
す。
ttp://www.geocities.com/nanoninee/img/localrule.png

146 :1:2003/02/16 22:38 ID:???
いちおう、アップしときました。ローカルルールが見れるのは今のところ、2
ちゃん、その互換板、したらば、jbbs@したらばです。板を開いた時だけしか表
示しません。

147 :1:2003/02/16 23:29 ID:???
まちBBSでも見れますね。カウンターの部分はダメですけどね。

148 :名無しさん@0ちゃんねる:2003/02/16 23:32 ID:???
>>145
お、すごい。なんか表示されてますね。
(HTML通り表示ってのはさすがにきついかな)

149 :1:2003/02/16 23:45 ID:???
>148 あれ、ieで見たら下の方の文章はセンタリングされてない? おかしい
な。

ちなみにレイアウトに関しては<center>タグしか見てないんですよね。太字とか
もできなくはないかもしれないんですけど…。

150 :1:2003/02/16 23:50 ID:???
2つ以上の改行は圧縮するようにしてみました
ttp://www.geocities.com/nanoninee/img/localrule2.png

151 :1:2003/02/17 00:30 ID:???
スレのタイトルをVimのタイトルバーに設定することってできるんだろうか?
ちょっと考え込んでみよう…。

152 :1:2003/02/17 00:31 ID:???
と言っといていきなりだけど、イベントを使えばできそう。

153 :1:2003/02/17 01:13 ID:???
あそっか、イベントを使うとちらつきが気になるからやりたくなかったんだ。
う〜ん、どうしよっかな。

154 :1:2003/02/17 11:08 ID:???
>153 やっちゃいました。

ずっと気になってるのが、ngwordで、複数行とか、正規表現で指定する方法が自
分でもわかってないんですよね。今んとこ完全リテラルなマッチングしかできな
くて。ちょっと実験してみます。どこかで。

155 :1:2003/02/17 11:42 ID:???
おおよそ理解できました。

通常、ngwordの設定は1行ごと、整形表示後の文字列に対して設定します。例え
ば、見たくないコテハンをあぼーん対象にしたければ、

From:山崎渉

みたいな感じで書くわけです。ただこれだと、残念なことに(w 私自身がこの
レスを見れないことになってしまうわけです。そこで、より厳密を期すために正
規表現でのマッチングもできるようにしました。ちょっとややこしいかもしれま
せんが説明します。

上でも言ったように、通常はそのままの文字列にマッチするよう、正規表現をオ
フにしてあります。これは、Very nomagicというオプションを使うことで実現し
ています。これを解除する、つまり通常の正規表現を使えるようにするには、次
のようにmagicオプション(\m)を文字列の前に置きます。

\m^\d\+ From:山崎渉\V

順に、マジック(\m)、行頭(^)、1つ以上の数字の連続(\d\+)、半角スペー
ス2つ、あとはマッチしたい名前、という具合です。最後に、それ以降の行が正
規表現として扱われないよう、\V で正規表現をオフにしておきます。

156 :1:2003/02/18 00:26 ID:???
あめぞう系は無理だろうと思ってたんですが、着手してみました。三河版系のみ
です。「横レス」のカコイイ表示を思いつかないのと、あと書き込みがかなり難しそ
うな感じです。
ttp://www.geocities.com/nanoninee/img/amezo_test1.png

157 :名無しさん@0ちゃんねる:2003/02/18 00:27 ID:???
>>150
そこの(ローカルルール)ウインドウだけ、背景をメロン色にするとかは出来ないですか?
あとHTMLのフォントカラーだけを見て文字のカラーを設定するとか。

あんまりVim知らないので、無茶ばっかり逝ってたらすみません。

158 : :2003/02/18 00:29 ID:???
>>158
おー!がんばりますねw
ところで1さんはコテハンつけないんでつか?

159 :1:2003/02/18 00:32 ID:???
>157 色ですか…。なるほど。考えてみます。考えるだけに終わるかもしれませ
んが(w

>158 多分つけないと思います…。多分。

160 :1:2003/02/19 00:57 ID:???
一部、Jbbsのスレのdatへの変換がうまくいってなかったようです。>141でFixと
言っておきながら申し訳ないです。まぁいつものことなんですが。

161 :1:2003/02/19 15:10 ID:???
Bug: ちょっと稀なケースとして、閲覧したことのあるスレで、そのスレバッ
ファがロードされている間に、削除人さんによってあぼーんが行われたとき、更
新チェックを行うと少し変なことになります。あぼーんが行われた後の
ETag、Last-Modifiedの値がスレバッファに設定されてしまって差分取得ができ
ないという現象が起きます。マスオさんありがとう。

162 :1:2003/02/19 15:17 ID:???
>161 おそらく修正できたのではないかと思います。

163 :1:2003/02/19 15:54 ID:???
Fix: うっかりテストを忘れてたんですが、しいく以外のHilight Multiの板でも
書き込みできるようにしました。

164 :1:2003/02/19 22:12 ID:???
あれ、透明あぼーんができなくなってる…

165 :1:2003/02/19 22:27 ID:???
ついでなんで、連続あぼーんもできるようにします。

166 :1:2003/02/19 23:03 ID:???
しました。じつは連続あぼ−んはずっとやりたいと思ってたので良かったです。

やり方は、v もしくは V キーでビジュアル選択モードに入り、j とか k とか
<C-F> とか適当な移動コマンドであぼ−んしたい領域を選ぶ。領域を逆方向に広
げる(狭める)には o キーを押してみてください。逆サイドにカーソルが移り
ます。で、その状態で x または d を押すとノーマルあぼ−ん(ただの折り畳
み)、透明あぼ−んにそれぞれなります。

対応してるのはレスのあぼーんだけです。スレの方は未定。

167 :1:2003/02/19 23:05 ID:???
少しでもビジュアル領域がレスに被っていればあぼーん対象となります。レスと
みなされるのは、例えばこのレスだと 167 の上のハイフンの行がありますね。
ここからが167レス目となります。

168 :1:2003/02/20 01:30 ID:???
Fix: メガビでスレ一覧の取得ができない場合があったのを修正。最初に
板_newb.txt が取得可能かどうかをheadリクエストでチェックするんですが、そ
の時のLast-Modifiedの値とかが残っちゃっててまずいことになってました。

169 :1:2003/02/20 17:40 ID:???
milkcafeが読み書きできるようになったと思います。ここはスクリプトがjbbs
だったりしたらばだったりメガビだったりややこしい。

170 :1:2003/02/20 18:31 ID:???
なんか最近ビルドしたGvimだとクリップボードにコピーできないっぽいのでダウ
ンロードしないでください(6.1.340)。
# 逆はオッケーなんだけどなぁ…。

171 :1:2003/02/20 19:24 ID:???
Vim Tip: グローバル・コマンド(g, v)の使い方。スレ内で、任意の文字列(例
えば .jpg)を含む行のみを抽出したい時、このようにします。

:v/\.jpg/d _

説明::v はパターンにマッチしない行に対してコマンドを実行せよ、という意
味のグローバルコマンドです。スラッシュの間がパターンです。d は行の削除を
するコマンド。_ は、ブラックホール・レジスタと言いまして、んーと、ちょっ
と割愛します。

元に戻すには、:undo か、R で再読み込みするとよいでしょう。応用として、パ
ターンを含む行のリストを作りたい場合、このようにします。

:let @a = ''
:g/\.jpg/y A
:new|put a

説明:まずレジスタ a を空にする。パターンを含む行を y コマンドでヤンク
(コピー)し、a レジスタに追加(大文字で書くと追加、小文字だと上書き)。
新しいバッファを開き、レジスタ a の内容を吐き出す。

172 :1:2003/02/20 20:47 ID:???
スレ一覧の整形があまりにも遅いので(当方Pentium150MHz)原因を探ってた
ら、perlの -e とか stat の処理がかなり重いということがわかりました。dat
がローカルにあるかどうかを調べる箇所を、Vimの組み込み関数に置き換えたら
ちょっと速くなりました。よかったよかった。

173 :1:2003/02/20 22:26 ID:???
検索機能を付けてみたいです。かなり。

174 : @管理人 ★:2003/02/20 23:58 ID:???
>>172
>当方Pentium150MHz
ツワモノですねw。

ちょっと質問があるのですが、外部からの不正cgi(bbs.cgi)呼び出しを防ぐ手段として
リファラが、

・{BBSRoot}にマッチ
・Monazillaにマッチ

以外は防ごうと思ってるんですが、こちらのやつはリファラを送ることとかってできますか?
出来ないようでしたら、リファラでのガードは考え直そうと思ってます。
(2ちゃんぶらうざってMonazilla〜のリファラを送ってくるってことでいいんでしたっけ?)


175 :1:2003/02/21 00:49 ID:???
>>174
> >>172
> >当方Pentium150MHz
> ツワモノですねw。
恐れ入ります(w

> ちょっと質問があるのですが、外部からの不正cgi(bbs.cgi)呼び出しを防ぐ手段として
> リファラが、
>
> ・{BBSRoot}にマッチ
> ・Monazillaにマッチ
>
> 以外は防ごうと

どうも、お気遣いありがとうです。リファラというか、User-Agent と Referer
両方指しておられるようですね。書き込み規制のお話ですか。

もともと2ちゃんで読み書きするのに必要なことですのでそのふたつは既に
Chaliceの時からリクエスト・ヘッダに付けるようになってます。

こんな感じです。

POST http://tolkien.s7.xrea.com/test/bbs.cgi
Referer: http://tolkien.s7.xrea.com/jikken/index.html
User-Agent: Monazilla/1.00 Malice/1.0
Content-Type: application/x-www-form-urlencoded
[...]

ですので、仰るような規制に対してはまったく問題ないと思います。

176 :1:2003/02/21 02:10 ID:???
う〜ん。むずい。同じスレならグループ化するとか、連続したスレなら連続して
表示するとか、できんもんかなぁ…
ttp://www.geocities.com/nanoninee/img/search_test.png

177 :1:2003/02/21 08:26 ID:???
>>116
> 各ウインドウ位置・サイズを保存→復元することって出来ないんでつか?

遅レスですが、このブラウザのウィンドウサイズが設定可能かどうか、という意
味だったとしたら、現時点では無理なんですよね。あとスレ一覧とか板一覧の位
置をオプションで変更可能にすることなんかも、技術的にちょっと無理じゃない
かと思います。

高さに関しては、よく考えたら構造的にスレ一覧と履歴とプレビュー窓ぐらいし
か設定可能でない(他は高さ不定になっている)ので、それぐらいなら新たにオ
プションを作ってしまえばいいことかなと思います。

ちなみに縦3列にするオプションは一応あるんですが(malice_startupflags に
'3cols' を追加)、幅の設定に関してVimは得意ではありませんのでお勧めでき
ませんです。

178 :1:2003/02/21 10:12 ID:???
ということで、以下のオプションで高さ調節ができるようになりました。

malice_winheight_threadlist
malice_winheight_history

適当な数値を let コマンドで設定してください。プレビュー窓の高さはもとも
とVimの previewheight オプションを使ってますので、それで調節してください
(setコマンド)。

179 :1:2003/02/21 10:22 ID:???
確信犯の使い方が間違っていたかもしれないと思う今日この頃。あえて訂正もいたしますまい。

180 :1:2003/02/21 14:23 ID:???
レス忘れ。

>>174
> (2ちゃんぶらうざってMonazilla〜のリファラを送ってくるってことでいい
> んでしたっけ?)

多分そのように考えていいと思います。Monazilla〜を付けないとsubjectをGET
できないサーバーがあったりするらしいので、普通どのブラウザでも付けている
ものだと思います。

181 :1:2003/02/21 17:40 ID:???
検索にはgrepを使うのがいちばんいいと思うんですが、なかなかWin版でEUCも
SJISも扱えるバイナリって手に入らないですよね。自分は持ってないです。そこ
がネックですねぇ。Perlでやるとかなり重くなりそうだし…

182 :1:2003/02/22 01:14 ID:???
結局perlで実装しました。思ったほど遅くもない感じです。これまでのスレ整形
の無駄な部分もわかったのでよかったです。

使い方:s キーを押すと検索パターン(正規表現)と検索対象の入力を促すメッ
セージが出ます。両方とも直接perlに渡します。ので前者はperlの正規表現をあ
る程度知っておいた方がいいかもしれません。ただの単語でももちろんかまいま
せん。検索対象には、一般的なワイルドカード(* と ?)が利用できます。複数
指定するには半角スペースを空けてください(e.g.: dat*unix* dat*php*)。

まだできたてなので不完全な部分が多々あります。現時点ではdatの検索のみと
なっています。

183 :1:2003/02/22 13:01 ID:???
namazuをインストールしてdatの検索をやってるという方おられます? 別に聞
いてどうしようというわけじゃないんですが。emacsの方なら結構使ってそうかな。

184 :1:2003/02/23 01:08 ID:???
Fix: sjis環境で、eucエンコードのスレをHTML化できなかった(vice versa)問題
を修正。あと、同じくHTML化で、パス形式に対応してない場合に正しいアンカー
が表示されなかった問題に対応してみました。

185 : @管理人 ★:2003/02/23 01:13 ID:???
>>175>>180
ありがとんございます。
規制は次バージョンくらいからになりそうですが、参考になりました。

>>183
参考までに私はnamazuインストールしてないです。
(というかdat検索自体ほとんどしないですね。)

186 :1:2003/02/23 14:31 ID:???
HTML化の部分はややこしくてこれまで手を付けてこなかったんですが、ようやく
わかるようになったので集中的にやろうと思います(もともとChaliceに実装し
たのは自分だったりするんですが…なんでだろ〜)。

使い方をドキュメントしてなかった気がするので書いておきます。

& キーでカーソルのあるレスをHTML化し、ブラウザで開きます。もしカーソル行
に >>n-m 形式のリンクがあればそちらを表示します(AA系のスレでよくありま
すよね)。

コマンドラインで行う場合は、

:Malice2HTML 1-10
:Malice2HTML >>1-10
:Malice2HTML 1 10

上のいずれの形式でも同じ結果になります。

187 :1:2003/02/23 17:29 ID:???
Fix: 1レス目がASCII文字オンリーの場合、文字コードの認識ができなかった問
題を修正。

188 :1:2003/02/24 04:28 ID:???
こういうのをデコードする手順を撮影してみました。
http://tolkien.s7.xrea.com/test/read.cgi/jikken/1043331322/241

ttp://www.geocities.com/nanoninee/img/filtering1.png
ttp://www.geocities.com/nanoninee/img/filtering2.png
ttp://www.geocities.com/nanoninee/img/filtering3.png
ttp://www.geocities.com/nanoninee/img/filtering4.png

フィルタリングという機能を使います。バッファの内容を外部プログラムに渡し
て処理させ、その結果を得るというものです。小さなプログラムを組み合わせて
複雑な処理を行うというUnix的な思想ををそのままWin環境でも実現できるのが
素晴らしいところです。

189 :1:2003/02/24 20:10 ID:???
>>1,4,6 みたいなリンクもプレビューできるようになりました。ハイフンとコン
マの併用も多分問題ないと思います。

190 : :2003/02/24 23:29 ID:???
>>188
お。。。なんかすごい。。

191 :1@w3m on cygwin:2003/02/25 14:55 ID:???
textareaの書き込みにはgvimが起動されるのか…。カコイイ


192 :1:2003/02/25 17:46 ID:???
こういうのでもプレビュー表示できるようになりました。ずっと前2ちゃんの
read.cgi開発スレで、こういう指定もできるようにしようという話があったよう
な…
ttp://tolkien.s7.xrea.com/test/read.cgi/jikken/1042269693/1,3-4,7-9

ちなみに結構難しいのでバグがあったりするかも知れません。

193 :1:2003/02/25 17:51 ID:???
ついでに、gvimのクリップボードの問題が直ったみたいなのであげておきまし
た。gvimのバイナリのみです(6.1.358)。

194 :1:2003/02/26 13:18 ID:???
スキンっていうか。まぁ表示をちょっと変えられるだけですが。
ttp://www.geocities.com/nanoninee/img/skin_test.png

195 :1:2003/02/26 13:24 ID:???
ん…、日付とIDって別々の色にできた方がいいんかな?

196 :1:2003/02/26 13:50 ID:???
こういうのは良いかも。ぞぬのスクリーンショットを参考にしてみました。
ttp://www.geocities.com/nanoninee/img/skin_test2.png

やり方はもうちょい頭を整理してから書きます。

197 :1:2003/02/26 14:38 ID:???
まず、Vimのスクリプトがどのように読み込まれるかということから説明します。

スクリプトの読み込みには、runtimepath というオプションが使われます。私の
設定はこのようになってます:
c:/home/.vim,c:/home/src/vim/runtime,c:/home/.vim/malice,c:/home/.vim/after

.vim の所は vimfiles に読み替えてください(Cygwin版のVimと共有したいので
Unixスタイルにしているのです)。これらのコンマで区切られた各ディレクトリ
の下のディレクトリ構造は決まっています。colors, ftplugin, plugin, syntax
などのディレクトリを置き、その中に用途に合ったスクリプトファイルを入れて
おくのです。

Vim起動時には各 plugin/ ディレクトリ内の .vim ファイルが読み込まれます。
ファイルタイプの設定時には各 ftplugin/, syntax/ ディレクトリからそのファ
イルタイプ名.vim、例えばスレッドであれば malice_thread.vim という名前の
ファイルが読み込まれます。

この読み込まれる順序は runtimepath オプションに定義されている順となりま
すので、標準で設定される動作、文法強調などをカスタマイズしたい場合は、最
も最後に読み込まれるランタイム・ディレクトリ内にファイルを置けば良いわけ
です。

198 :1:2003/02/26 15:09 ID:???
上記の点を踏まえて、いわゆるスキンのようなものを作るには、適切な
runtimepath の値を設定した後、以下の2つのファイルを作成してください。

after/plugin/skin.vim
after/syntax/malice_thread.vim

プラグインの方は拡張子が vim であればどんな名前でも良いです。サンプル
コード:

after/plugin/skin.vim:

if !has('perl')
 finish
endif

perl << END_PERL
sub to_text {
 my ($anum, $name, $mail, $date, $comm) = parsedat(@_);
 return $anum ? "--------\r$anum $name [$mail]\r $comm\r\r DATE:$date\r\r" : '';
}
END_PERL

" EOF

199 :1:2003/02/26 15:10 ID:???
after/syntax/malice_thread.vim:

if !has('perl')
 finish
endif

syntax match MaliceThreadArticleHeader transparent "^\d.*"
\ contains=MaliceThreadNumber,MaliceThreadFrom,MaliceThreadMail
syntax match MaliceThreadNumber display "^\d\+" contained containedin=MaliceThreadArticleHeader
syntax match MaliceThreadFrom display "\%(^\d\+ \)\@<=\(.*\)\( \[\)\@="
\ contained containedin=MaliceThreadArticleHeader
syntax match MaliceThreadDate display "^\t\+DATE:.*" "contained containedin=MaliceThreadArticleHeader
syntax match MaliceThreadMail display "\%( \)\@<=\[.*\]$" contained containedin=MaliceThreadArticleHeader

" EOF

試しにやってみてください。syntaxコマンドの詳細についてはよく知りませんの
で説明は後回しにします。これから勉強してみます。

200 :1:2003/02/26 15:30 ID:???
言葉を尽くしていなかった気がするので補足しますと、runtimepath に設定でき
るディレクトリ名は何でもいいんです。が、慣習的に、標準のものの上書き用に
使うディレクトリとして、after という名前のディレクトリをいちばん最後に
もってくることが多い、ということなのです。まぁそのようにして頂くと良いか
なと思います。

201 :1:2003/02/26 15:43 ID:???
>>198
>  return $anum ? "--------\r$anum $name [$mail]\r $comm\r\r DATE:$date\r\r" : '';

どうでもいいけどタブ文字は \t を使えばいいですよね。失礼。

202 :1:2003/02/27 00:33 ID:???
dat検索を実装した頃に、たまたまこういうのを見てしまったわけですよ。うわ
すげーなーと、こんなのが動的に生成できたらカコイイなと、ずっと思ってて、つい
に着手しました。まぁとりあえずインデントは無理だと思いますが。
ttp://zuelfish.s20.xrea.com/cgi-bin/NamazuMusume/data/1367.html

203 : :2003/02/27 23:19 ID:???
>>202
そういえばWebProg板にあったねそういうの。
(「こんなの作ったんですが」スレだっけ?)
見た目は確かにカコイイでつね。

204 :1:2003/02/28 01:22 ID:???
まじっすか? 自分はUnix板のNamazuスレで見たんですが。ひょっとしてソース
公開されてました?

205 :1:2003/02/28 14:18 ID:???
上のNamazuのシステムとはまた別のものみたいですね。しかしかなり高度なもの
ですな。公開してほしいもんだ。rubyだそうですが。

206 :1:2003/02/28 17:15 ID:???
damepo
ttp://www.geocities.com/nanoninee/img/recursivesearch_test.png

207 :1:2003/03/01 02:22 ID:???
ちょっとましになったかな〜。上のようにずらずらずらと無関係なレスが並ぶこ
とはなくなったような…。でもまだまだ理解できない要素が多いっす。てか不適
切なサンプルを選んでしまった気が。
ttp://www.geocities.com/nanoninee/img/recursivesearch_test2.png

208 :1:2003/03/01 02:23 ID:???
よくみたら全然ダメじゃん!

209 :1:2003/03/01 16:10 ID:???
依然syntaxコマンドの勉強はしていないんですが、スキンについて。複数のもの
を使い分ける方法です。とりあえず実例だけお見せします。

210 :1:2003/03/01 16:11 ID:???
after/plugin/skin.vim

if !has('perl')
 finish
endif

let g:malice_skinname = 'hoge'

if g:malice_skinname == 'test'
 function! s:Dat2Text()
  perl << END_PERL
  sub to_text {
  my ($anum, $name, $mail, $date, $comm) = parsedat(@_);
  return $anum ? "--------\r$anum $name [$mail]\r $comm\r\r\t\t\t\tDATE:$date\r\r" : '';
  }
END_PERL
 endfunction
elseif g:malice_skinname == 'hoge'
 function! s:Dat2Text()
  perl << END_PERL
  sub to_text {
  my ($anum, $name, $mail, $date, $comm) = parsedat(@_);
  return $anum ? "--------\r$anum $name $mail\r $comm\r\r\t\t\t\tDATE:$date\r\r" : '';
  }
END_PERL
 endfunction
endif
call s:Dat2Text()

211 :1:2003/03/01 16:11 ID:???
after/syntax/malice_thread.vim

if !(has('perl') && exists('g:malice_skinname'))
 finish
endif

if g:malice_skinname == 'test'
 syntax match MaliceThreadArticleHeader transparent "^\d.*"
\ contains=MaliceThreadNumber,MaliceThreadFrom,MaliceThreadMail,MaliceThreadBrokenArticle
 syntax match MaliceThreadNumber display "^\d\+" contained containedin=MaliceThreadArticleHeader
 syntax match MaliceThreadFrom display "\%(^\d\+ \)\@<=\(.*\)\( \[\)\@="
\ contained containedin=MaliceThreadArticleHeader
 syntax match MaliceThreadDate display "^\t\+DATE:.*"
 syntax match MaliceThreadMail display "\%( \)\@<=\[.*\]$" contained containedin=MaliceThreadArticleHeader
elseif g:malice_skinname == 'hoge'
 syntax match MaliceThreadArticleHeader transparent "^\d.*"
\ contains=MaliceThreadNumber,MaliceThreadFrom,MaliceThreadMail,MaliceThreadBrokenArticle
 syntax match MaliceThreadNumber display "^\d\+" contained containedin=MaliceThreadArticleHeader
 syntax match MaliceThreadFrom display "\%(^\d\+ \)\@<=\(.*\)\( .*$\)\@="
\ contained containedin=MaliceThreadArticleHeader
 syntax match MaliceThreadDate display "^\t\+DATE:.*"
 syntax match MaliceThreadMail display "\%( .* \)\@<=.*$" contained containedin=MaliceThreadArticleHeader
endif

212 :1:2003/03/01 16:16 ID:???
それぞれの出力関数とそれに対応するシンタックス定義のブロックに名前を付け
ておいて、pluginの冒頭部分で名前を切り替えればおっけーという寸法です。

perlのコードをVimスクリプトに組み込むにはちょっと工夫が必要みたいで、上
のようにVimの関数内に入れてやる必要があります。同名のVim関数にしておい
て、どれか1つが定義されるようにするとよいです。

213 :名無しさん@0ちゃんねる:2003/03/01 20:30 ID:???
そのうちソフ板に立てたほうがいいかもね。
ここじゃ使ってくれる人が少なすぎるから・・・

214 :1:2003/03/01 21:23 ID:???
>213
広める意図はありませんのでそういうことはしないです。と言うのは、ライセン
スとか配布条件の問題とかを解決せずダークなまま放置してますんでね。まずい
んですよ。

215 :1:2003/03/02 13:32 ID:???
たまには貼っておきます(自サイトなのにhを抜いてるのはレファラで弾かれないためです)
ttp://www.geocities.com/nanoninee/vim/malice.htm

今回は

* 12chにもhead.txtにあたるものがあることに気づいたので対応
* 板名をSETTING.TXTから得るようにしてみた。ついでにスレタイに板名を付加して表示
* Mini Thread という掲示板 (http://www.flashcgi.net/) に対応

そんな感じでしょうか。dat検索は開発途上です。

216 :1:2003/03/02 17:52 ID:???
>>144の続きのような感じで。

Vimのコマンドラインには補完機能というのがありまして、ファイル名などの一
部を入力すると候補一覧を示してくれます。たとえば、

:buffer tolkien<Tab>

と入力すると、既に開いているバッファから tolkien という文字列を含むもの
の一覧を出してくれます。こんな感じです。

ttp://www.geocities.com/nanoninee/img/cmdline_cmpl.png

スレの場合はわかりにくいですけど、スレ一覧を選ぶには便利かなと。カーソル
キー(左右)で次々と候補を切り替えます。

217 :1:2003/03/02 20:26 ID:???
すいません、URLがpath形式で無い場合、2chのスレであっても12chで無いかどう
かチェックしに行くようになっちゃってます。今日中に修正します。

218 :1:2003/03/03 14:59 ID:???
>214
> 広める意図はありませんので

ていうかもともとモ板系以外に進出する意思は皆無だったんですよね。いまさら
思い出したように言うことでもないですけど…。ちょっとした出来心でスレ立て
テスト(&立て逃げ)するつもりが思いのほか暖かいレスを付けていただいたも
んで…。居座るにいたる(

Changelogがわりに、前スレです
ttp://www.ah.wakwak.com/~yosk/cgi-bin/read.cgi?dir=danger&thp=1035091237&ls=25

219 :1:2003/03/03 16:11 ID:???
スレ内で>>nとか一般のURLにジャンプする機能があると便利な時がありますよ
ね。次のように、スキンの件で登場したカスタマイズのやり方で実現することが
できます。

after/ftplugin/malice_thread:

nnoremap <silent> <buffer> <C-Tab> :call <SID>NextLink('next')<CR>
nnoremap <silent> <buffer> <S-Tab> :call <SID>NextLink('prev')<CR>

function! s:NextLink(flag)
 let linkpat = '\(\<\%(h\?ttps\?://\|www\)\|\(>>\?\|>>\?\)\(\d\+\|[0-9]\+\)\)'
 if 0
  let flag = ''
  if a:flag ==# 'prev'
  let flag = 'b'
  endif
  call search(linkpat, flag.'W')
  call cursor(line('.'), col('.'))
  call winline()
 else
  let cmd = a:flag ==# 'prev' ? 'N' : 'n'
  let @/ = linkpat
  call AL_execute('normal! '.cmd)
  "call AL_del_lastsearch()
 endif
endfunction

220 :1:2003/03/03 16:18 ID:???
>219 if 0 としてあるブロックは、search関数を使って探すんですが、挙動が
少々よくわからないところがあって。なんかカーソル位置がちゃんとマッチした
位置に行かないような気がするのでオフにしてあります。

else以降は n または N というノーマルコマンドで探します。これはVimのジャ
ンプ履歴に動作が残りますので、後で <C-O> や <C-I> で行きつ戻りつできま
す。

<C-Tab> で前方に、 <S-Tab> で後方に検索しますが、これは使いにくければ適
当に変更してください。(<C-Tab>というのは打ちにくいですけども、タブ文字
は実際には <C-I> なので、移動コマンドとバッティングしてしまうので使えな
いんです)

221 :1:2003/03/04 09:31 ID:???
新しくメガビとかの掲示板を見つけたときに、いちいち設定ファイルに書いて再
起動するのが面倒なので、コマンドで登録できるようにしました。

:MaliceRegistHost bbstype host1 [host2]

という書式です。コマンド名は :*Regi<Tab> とすれば補完されるでしょう。
bbstype には megabbs, ahhan, 12ch, hilight, around が有効です。このうち
ahhan, 12ch, hilight, around は(てかメガビ以外全部かよ。今気づいたよ)
スレURLを与えられた場合は自動的にホスト登録、スレオープンしますのであま
り必要は無いかと(登録せずにいきなりスレ一覧の方を開こうとしても無理です
が)。

メガビはcgiのパスとhtmlとかのファイルを置くパスが違う場合があるので、そ
の場合は

htmlpath cgipath

の順で登録してください。一応自動的に探すようにはなってるので必須ではあり
ません。

なおファイルには登録しないので継続的に利用するには regist.brd ファイルに
書いておく必要があります。書式は

[bbstype]
host

です。具体例としてはこんな感じ

[megabbs]
www.d-w-b.com/bbs

222 :1:2003/03/04 09:34 ID:???
>221
> メガビはcgiのパスとhtmlとかのファイルを置くパスが違う場合があるので、そ
> の場合は

それ以外のシステムで、サーバーの都合上やむを得ずcgiを別ディレクトリに置
いてあるようなケースには対応してないです。まぁ必要を感じればやります。と
思います。

223 :1:2003/03/04 10:20 ID:???
範囲指定付きでの利用もできるコマンドをまとめておきます。

v または V でヴィジュアル選択を開始、移動コマンドで選択領域を広げて…

* 書き込みキー (i, I, a, A) で引用付き書き込み
* & でHTML化
* x, d でノーマル、透明あぼーん

224 :1:2003/03/04 11:34 ID:???
メガビも自動認識できるようになったぽいです。あくまでもスレURLを与えた場
合のみです。たとえば、クリップボードにURLをコピーしておいて <C-N> とか、
スレ内にURLが貼ってあった場合はプレビュー処理の過程で。

最近困ってるのが、12chで、2ch互換モードのみで運用してる場合。どうにもこ
うにもという感じで、困難をきわめております。スレ表示じたいはできるんです
が、単純に2ちゃん形式として扱うとまずいんですよねぇ。

225 :1:2003/03/04 13:46 ID:???
いちごフカーツしたみたいですね。やっと実験ができる。

226 :1:2003/03/04 20:15 ID:???
HTML化したほうが見やすい場合があります。AAなどはもちろんですが、こういう
タグを利用したものもそうです。上がVimで下がieでの表示です。コードを確認
してないのでよくわかりませんが、スレ整形時に生のスペースは消してしまうよ
うなんで、こういうことになります。何か対策が必要かも。
ttp://www.geocities.com/nanoninee/img/compar_indent1.png
ttp://www.geocities.com/nanoninee/img/compar_indent2.png

ちなみに上のはhimajinさんの板一覧にも載ってないんだけど、2ちゃん互換なの
で板名がわかる上に、ローカルルールも表示してくれるんですね。自分でやっと
いて言うのもなんですが、ちょっと驚きました

227 :1:2003/03/04 23:20 ID:???
対応しますた>いちご
思ったとおり、ほぼA-round掲示板と同様な感じです。どうでもいいことです
が、したらば鯖でs-jijsの掲示板は初めて見たかも。たぶん。

書き込みもできます。スレ立てもできるんじゃないでしょうか。前に立てたこと
ある気がするので。

板一覧も、URLは覚えてませんが、トップを表示した時に左のフレームに表示さ
れるやつです、整形表示できると思います。

228 :1:2003/03/04 23:32 ID:???
板一覧は、malice_menu_url オプションを使います。普段はhimajinさんの「か
ちゅ〜しゃオンライン更新用」とか、2ちゃんの板メニュー形式のURLを登録して
おいて、いちごなどは一時的にコマンドラインで登録、R でリロード、
malice/cache/bbsmenu ファイルの内容を malice/other.brd にコピペ、という
方法を取るのが、少々面倒ですが、よいんではないかと思います。

229 :1:2003/03/05 15:19 ID:???
折角なんで、スレだけでなく板を開いた時もBBSタイプを自動認識できるように
したいです。スレと違ってURLの形式からは割り出せないので難しいでしょうけ
ど。

230 :1:2003/03/05 17:42 ID:???
Improvement: 板オープン時に、12ch、2ch互換、メガビ、Ahhan、Aroundのいず
れであるかを判断するようにしてみました。

231 :1:2003/03/05 20:04 ID:???
>>226
> スレ整形時に生のスペースは消してしまうようなんで、こういうことになりま
> す。何か対策が必要かも。

でけたようです。生のスペースどころか改行の前後の空白文字をごっそり消して
いたのが原因でした。
ttp://www.geocities.com/nanoninee/img/indented.png

232 :1:2003/03/06 00:27 ID:???
Fix: キャッシュリスト作成時(スレ一覧で C)に、既得のdatがゼロだと永久
ループになってしまうバグを修正

233 :名無しさん@Vim:2003/03/06 15:05 ID:???
すいません、メガビで書けなくなってるようです

234 :!:2003/03/06 19:00 ID:???
どうやら1つ機能修正すると1つエンバグするのが仕様になっているようです…

235 :1:2003/03/06 19:01 ID:???
あ、なんかシフトキーを押してしまったみたいです…

236 : :2003/03/06 23:37 ID:???
>>234
ワラタ

108KB
続きを読む

名前: E-mail(省略可)
READ.CGI - 0ch+ BBS 0.7.5 20220323
ぜろちゃんねるプラス