レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。
B11のスレ
コッソリ・ヒッソリと・・・
API→read.cgi→SCを自動切り替えするAPIパッチ(B11)のスレです
本家、R2.11.8以下、MOD、MOD-tw 用
(for MacOSXはスノレパ on VMwareの-R2.11.8とMOD-twで動作を確認)
https://drive.google.com/folderview?id=0B6-I3SBvsil8Tm9OY3ZteXplOE0
jarとjsの修正のタイミングが異なる場合があるので格納場所は別とします
2chAPI>v2c_api_patch.jar>xxxxxxxxx.zip : v2c_api_patch_B11.jar と v2c_api_patch_B11_forMac.jar
2chAPI>script>system>readcgi.js>xxxxxxxxx.zip : readcgi.js と script/system/readcgi_aux.js
zipファイルをdl・解凍し、できたファイルをV2Cの所定の場所に格納してください
v2c_api_patch_B11.jar :Oracle Java6,7,8用
v2c_api_patch_B11_forMac.jar .:Apple Java6用
script/system/readcgi.js :+に添付されているjs(htmlからdatを生成する)を転用し必要に応じて修正
script/system/readcgi_aux.js .:B11用 API → read.cgi(html)切替チェック、過去ログチェック
B10をベースに以下の修正をしてます
・API→cgiの自動切り替え、cgi→scの自動切り替え
・dat生成部分を+に添付のreadcgi.jsをパクって外出しjsに
→今までパッチ内にあったhtmlからdatを生成する処理をjs化して外に出しました
・赤枠部分を設定に追加 http://i.imgur.com/TOuoJBm.png
今使ってるAPIパッチをバックアップして、
このAPIパッチの名前を今使ってるAPIパッチの名前に変更して下さい
尚、浪人とかBEは自分使ってないんでノーテストです
動作
API、read.cgi、scのチェック状態に従ってdatファイル、htmlを取得します
① API → read.cgi(html) → sc(dat) :全てチェックの場合
② API → read.cgi(html) :APIとread.cgiをチェックの場合
③ read.cgi(html) → sc(dat) .:read.cgiとscをチェックの場合
※ API → scのパターンはありません
scのdatを取得できた場合は、.netのレスを全て捨てて、scのdatからsc独自のレスを除去しスレを表示し直します
scのdatを取得できた場合の目印は、idや端末記号の後ろに「.net」と付きます
scのdatを取得できた場合は、.新規で取得したスレ表示の場合でも全レス既読の状態となります
既知の障害
SCから取得してつくったdatの相性が悪いとjs実行エラーになります
ログにエラーメッセージが出力されます、最悪の場合は以降に全てのjsが動かなくなります
ホワイトアウトに関して
APIモードで取得/read.cgiモードで生成したdatを既存のdatに追加する処理を行う際、データの整合性チェックをします
この時に整合性エラーとなった場合に、全レスの取り直しを行ってるようで
これがホワイトアウトの原因となっているようです
このチェックはAPIモード、read.cgiモード等のモードに関係なく行われています
そのためどちらのモードでもホワイトアウトが発生し得ます
(主にredacgi.jsでのdat生成時の取りこぼしたゴミの存在)
readcgi.jsを毎回〜をチェックした場合は生成したdatをコンソールログ(v2clog.txt)に出力します
頻発するようだったらこれをチェックして生成されたdatの内容を確認して下さい
またこれをチェックした場合は毎回readcgi.jsのコンパイルを行うのでjsのデバッグも可能です
readcgi.jsを毎回〜をチェックした場合の出力結果です
http://i.imgur.com/IaEEAd9.png
青枠がB11.1の(昨日リリースした) readcgi.js
赤枠がB10のreadcgi.js
ホワイトアウトの今のところ分かってる原因は赤枠の最終行の </div> ではと思われます
書き込み時のUAに関して
APIモード、API優先モードの場合はユーザーエージェント(書き込み)のUAが使われます
read.cgiモードの場合はユーザーエージェント(CGI書き込み)のUAが使われます
書き込み時のUAは表示>ネットワークのログから確認できます
現状の最新B11.1とjsはググルドライブ内にありますが
B11 + 2016/07/24(日) 23:58公開のreadcgi.js でも機能的には全く同じなので
2016/07/24(日) 23:58公開のreadcgi.jsを既に入れてる場合はB11.1を敢えて入れる必要はないです
readcgi.js入れ替えたらちゃんと取得してくれるようになった
ありがてえありがてえ
大事なのを入れ忘れ
ドライブにも同じのが入ってます
更新履歴
◆ 2015/07/25 更新
・APIパッチ(B11.1)
v2c_api_patch_B11.jar 2016/07/25 19:49:37
v2c_api_patch_B11_forMac.jar 2016/07/25 19:49:43
・readcgi.js
readcgi.js 2016/07/24 23:40:37
readcgi_aux.js 2016/06/19 21:38:06
本スレにあった1000行ったスレをAPI+read.cgiで取得した時に画面がホワイトアウトする件
現状では仕様ってことでお願いします
ネットワークのログを追いかけてみたら、いろいろとチェックを入れたら回避できるのかもしれないのですが
1) 現状の動きに干渉して異常動作となるのが怖い
2) チェックが増えすぎると1000行かない状態でのAPIモードの最大のメリットの速度面で不利が生じる
が考えられるので1000行ったスレの更新はまあ敢えてすることじゃないだろうってことで
今のままとします
以下は処理の流れなんで?だったらスルーで構わないです
1000まで行って実際はdat落ちしてるスレを更新した場合は流れ的に
① APIモードでリクエスト
② 2レスしかないdatが返ってくる
③ その2レスでローカルのdatを作り直して(壊して)しまう
④ dat落ちと判定してread.cgiモードに移行
⑤ 壊れたローカルdatをクリア
⑥ read.cgiモードでリクエスト(但しレスの件数だけは生きていて1002以降をリクエスト)
⑦ 取得したdatをV2C本体に返す
⑧ V2Cがdatの整合性チェックでエラーと判定、ログを先頭から取り直すようパッチに指示(read.cgiモードのホワイトアウトと同じ動き)
⑨ APIモードでリクエスト
10 2レスしかないdatが返ってくる
11 その2レスでローカルのdatを作る
12 dat落ちと判定してread.cgiモードに移行
13 ローカルdatをクリア
14 read.cgiモードでリクエスト(全レスリクエスト)
15 取得したdatをV2C本体に返す
16 V2Cがdatの整合性チェックでOKと判定、以降正常処理
の流れになっていて⑥から⑨のところでread.cgiモードと同じくdatの追加時に不整合でホワイトアウトしています
B11系では特殊なことをやってるんでチョイチョイ嵌ること
B11系はB10と異なり動作するのにスクリプトが必要となります
そのjsが>>1 の
2chAPI>script>system>readcgi.js>xxxxxxxxx.zip : readcgi.js と readcgi_aux.js
になります
でこのjsを特定の場所に格納する必要があります
普段からスクリプトを使ってたら慣れてるんでなんのことはないと思うのですが
普段スクリプトを使ってないとここで嵌ると思います
「readcgi.jsがscript/systemに存在しません」と「readcgi.auxがscript/systemに存在しません」のエラーが出た場合
スクリプト(readcgi.js と readcgi_aux.js)が特定の場所に格納されていません
① ヘルプ>V2Cについて で保存用フォルダがどこかを調べる
http://i.imgur.com/y7gAIuR.png の赤線の部分に書かれてます
② 保存用フォルダの中に script フォルダがあるか確認する、無ければフォルダを作る
③ script フォルダの中に system フォルダがあるか確認する、無ければフォルダを作る
④ system フォルダを開いて、readcgi.js と readcgi_aux.jsをそこにコピーする
⑤ V2Cを再起動する
これで「〜がscript/systemに存在しません」のエラーは解決すると思います
B10系の頃のファイル名に意図的に「_B11」を追加しています
B10があるフォルダにコピーしてもそのままでは使えません
① v2cjar.txt(Win/Linuxの場合)/info.plist(MacOSXの場合)を修正する
② jarの名前から「_B11」を取り除いて名前を修正する
のどちらかの修正が必要です
(個人的にはWin/Linuxの場合は①、MacOSXの場合は②の修正が簡単かと思います)
スマートフォン版
掲示板管理者へ連絡
無料レンタル掲示板