Skip to content
This repository has been archived by the owner on May 29, 2022. It is now read-only.

For Developer's Communication #59

Open
anekos opened this issue Sep 28, 2014 · 41 comments
Open

For Developer's Communication #59

anekos opened this issue Sep 28, 2014 · 41 comments

Comments

@anekos
Copy link
Owner

anekos commented Sep 28, 2014

特定の Issue に関連しない連絡用

@anekos
Copy link
Owner Author

anekos commented Sep 28, 2014

全くタッチできていなくてすみません。
Pixiv の変更絡みの古い Issue は意味ないと思うので閉じておきました。
(設定の問題と思われるものなども)

@anekos
Copy link
Owner Author

anekos commented Sep 28, 2014

正式版云々言っている人もいるので、これで解決できたら、公式に公開したほうがいいかもしれない、と思いましたが、いかがでしょうか.

@anekos
Copy link
Owner Author

anekos commented Sep 28, 2014

http://www.kurinton.net/~snca/blogfiles/ank_pixiv_tool.xpi はとりあえず更新しておきました。

@ginzu
Copy link
Collaborator

ginzu commented Sep 30, 2014

了解しました。
リリース合わせの追加修正とfix/nicoseiのマージを行いましたので、これでFIXということでお願いします。

@anekos
Copy link
Owner Author

anekos commented Sep 30, 2014

タイミングが最悪だったようなので、AMO にだしたのはとりあえず戻しました…。

[pixiv] お知らせ - イラスト・漫画の仕様を変更しました
http://www.pixiv.net/info.php?id=2933

ginzu referenced this issue Sep 30, 2014
※中画像クリック関連は動作しない
@ginzu
Copy link
Collaborator

ginzu commented Sep 30, 2014

画像がダウンロードできるまではできましたが、いくつか手に余る問題が発生してしまいました。
下記2件の解決のため、お知恵を拝借できればと思います。

1. 中画像のAタグを無効化できず、中画像クリックでのダウンロードや内蔵Viewerが使えない

doc.defaultView.wrappedJSObject.jQueryを使って無効化に挑戦しましたが
力及ばず解決できませんでした

解決しました

2. 各画像ごとにあるHTMLの取得が複数回走ってしまう

苦肉の策で_images,_imagesOriginalというグローバル変数を作り、
一度そこに格納したら再度取得しないようにしましたが、
もっとjavascriptらしいスマートな解決策があるはずですよね…

以上です。

【追記】ブック機能というのも追加されたのですね、これはまた別途対応で。

対応しました

【追記2】AnkUtils.createHTMLDocument()で、sourceのHTMLタグのclass値がなくなってしまうのですが、ブック形式で使用したいので、引き継ぎさせられないでしょうか(MDNをさらっと読んでも作り込めませんでした)。

@anekos
Copy link
Owner Author

anekos commented Oct 1, 2014

xpi をこっそり差し替えておきました。
問題点については、今日こちらでも確認するつもりだったんですが、色々していたら時間がなくなってしまいました…。

@anekos
Copy link
Owner Author

anekos commented Oct 1, 2014

追記2

消える場合の HTML ってどんなものでしょうか。
さらっと試したら消えていませんでした。

@ginzu
Copy link
Collaborator

ginzu commented Oct 1, 2014

ブック形式の場合なのですが

ex. http://www.pixiv.net/member_illust.php?mode=medium&illust_id=46271807

original Imageのurlを取得するためにmode=mangaのHTMLをXMLHttpRequestで取得し、
createHTMLDocument()でDOMにして処理を行っています。

取得したHTMLの頭には<html class="_book_viewer rtl">という記述があり、
このrtl or ltrで右開きか左開きかがわかるのですが、
DOM化したあとに doc.documentElement.className で取得しようとすると、
undefined が返ってきて見つからない…という件です。

もしかして値が消えているのではなくclass値へのアクセス手段を間違えている可能性もありますが、
確認いただければと思います。

@ginzu
Copy link
Collaborator

ginzu commented Oct 2, 2014

不具合報告は関連するissueを探してそこに書くか、新規にissueを立てて行ってください。
また2.0preは最新のコードではありません。

@anekos
Copy link
Owner Author

anekos commented Oct 2, 2014

たしかに消えていますね…。
良い解決方法が思いついたら、報告するか実装します。
とりあえずは、単純なテキストとしてマッチするくらいしか思いつかないですね。

あと、ここの不要なコメントは削除しました。

@ginzu
Copy link
Collaborator

ginzu commented Oct 2, 2014

すみません、追記2の中に書いたつもりで書いてませんでしたが、
現在ブック対応のコードではHTMLをテキストマッチして判断するように書いていて(※)、
現状のコードで9/30対応の機能はすべて実装済みになっています。

ただ、テキストマッチだと一文字増えたり減ったりといったちょっとした変化にも弱いので、
できればDOM操作で取得できるようにしたい…という話になります。

※右/左開きを判断して適度にソートして見開き情報を付加し、
 見開きView&見開きナンバリング保存できるようにしてあります

Repository owner locked and limited conversation to collaborators Oct 2, 2014
@ginzu
Copy link
Collaborator

ginzu commented Oct 4, 2014

3rd party cookieを無効にするとR18作品以外もアクセスできなくなったようです。
前に付けた例のオプションで回避可能ですが。

ginzu referenced this issue Oct 7, 2014
※DLマーク挿入先の調整
@ginzu
Copy link
Collaborator

ginzu commented Oct 7, 2014

特に問題はなさそうなので、ここでいったんFIXということでお願いします。

#59 (comment) の課題2については
マンガ形式の大画像を開くためのHTMLを全部なめずにすむようにして
サーバへの負荷についての懸念が改善したので(04bf78d 4edc784)
おいおい考えていくという事にしたいと思います。

@anekos
Copy link
Owner Author

anekos commented Oct 10, 2014

ありがとうございます。
マージして再度 AMO にだします。

ginzu referenced this issue Nov 4, 2014
・twitter: :large指定がない画像あって、その場合:origがつかない
@ginzu
Copy link
Collaborator

ginzu commented Nov 4, 2014

twitterの画像ダウンロードでオリジナル画像が保存できないパターンが発生しだしたようなので対応しました。
masterへのマージをお願いします。

ginzu referenced this issue Nov 4, 2014
・twitter: デバッグ用コードの追加
@anekos
Copy link
Owner Author

anekos commented Nov 4, 2014

マージしました。
しかし、全然レビューとおらないですね。
10/10 にアップロードしたんですが…。

@ginzu
Copy link
Collaborator

ginzu commented Nov 4, 2014

もうすく一ヶ月ですね…。

ところでAMOのユーザレビューで紹介されていた、githubリポジトリからアドオンをインストールするアドオンというのは面白いですよね。
いろんなこと考える人がいるんだなぁと思いました。

@anekos
Copy link
Owner Author

anekos commented Nov 9, 2014

ちょっと反応が遅れましたが、レビュー完了したようですね。

github

GitHub Extension Installer ですか。
引き続きレビューが遅いようであれば、これを併せて紹介するのもいいかもしれませんね。

@anekos
Copy link
Owner Author

anekos commented Nov 9, 2014

ちなみに、こんな事いわれてしまいました。
面倒くさそうですね。

However, I have the following issues which should be addressed before your next update:

1) Your add-on performs a lot of synchronous SQL on first run, which leads to nearly a second of IO pause for me. Please use asynchronous SQL wherever possible.

@ginzu
Copy link
Collaborator

ginzu commented Dec 20, 2014

firefox35のリリースが迫っていると聞き、
AMOが2.0.1のままだと35にアップデートした後に動かなくなるので、
AMOが指摘していた(と思われる)起動時のDBアップデート処理を非同期化してみました。
a98479f

現状、2点ほどどうかな?と思っているところがあります。

  1. インデックスの追加/削除を非同期化していない
  2. DB更新中に、他のイベントからのDB操作を明示的にブロックするコードを作り込んでいない

ご確認よろしくお願いいたします。

(補足)
2.については特に作り込まなくてもblockingが行われるようです。
DB更新中にイラストページを開くとfirefoxが固まるので、たぶんそういう事だと思います。

@ginzu
Copy link
Collaborator

ginzu commented Dec 20, 2014

1.の、インデックスの追加/削除も非同期処理の中に移動しました。
f72dff8

@anekos
Copy link
Owner Author

anekos commented Dec 20, 2014

ありがとうございます。

固まるのはちょっといやですが、そこを対処するのも大変かつコードが残念な感じになりそうなので、仕様ということで良いと思います。
バージョンアップ時だけなので、めったに発生しないはずですし。

@anekos
Copy link
Owner Author

anekos commented Dec 20, 2014

関係ないですが、xpi 作るのに混乱がおきているようなので、自動ビルドするようにしてみました。
色々しらべるのも面倒で、cron でやっていますが…。

http://ank-pixiv-tool.snca.net/

リストアップされるのは、master と master にマージされていないブランチとなっています。
(古いのは、例外としたほうがいいですかね…)

@ginzu
Copy link
Collaborator

ginzu commented Dec 21, 2014

お疲れさまです。

古いブランチについては、ブランチが沢山並走することもあまりないと思うので、そのままでよいかと思います。

それとは別に、
masterにマージしていない段階はうっかり致命的なバグを残したままcommitしてしまうことがあるので、
fix/やfeatrue/などの区別もファイル名に付けておいて、
「そういうものがついているファイルは開発中のもので大きな不具合が残っているかもしれないから、それでもよければどうぞ」
的な一文を書いておくのはどうでしょうか。

※よく考えたら、単にmasterとそれ以外って区分けで十分ですね。

@anekos
Copy link
Owner Author

anekos commented Dec 31, 2014

ありがとうございます。
遅くなってしまいましたが、おおまかな、ネーミングについての説明と注意書きを追加しました。

@ginzu
Copy link
Collaborator

ginzu commented Jan 24, 2015

お疲れさまです。

install.rdfでminVersionが4.0となっていますが、
これを上げてしまっても構わないでしょうか。

例えばPromise.jsmを使いたいので4.0→25.0にしたい、
みたいな感じです。

@anekos
Copy link
Owner Author

anekos commented Jan 24, 2015

はい、かまわないです。
今の Firefox はどんどんバージョンアップしていきますし、必要とあらば上げてしまったほうが良いと思います。

@ginzu
Copy link
Collaborator

ginzu commented Jan 24, 2015

了解しました、ありがとうございます。

@ginzu
Copy link
Collaborator

ginzu commented Feb 5, 2015

なんというか、何の気は無しにbranchを作っていたら、自動ビルド一覧がゴチャゴチャになってきました。
自分で「並走は無いだろう」とか言っていたのにすみません…。

@ginzu
Copy link
Collaborator

ginzu commented Mar 29, 2015

■DBのテーブル変更は不要?

お疲れさまです。

pixiv対応で、作品の更新を検出するロジックを作り込みました。

サムネのURLに更新年月日時分秒が入っているので、イラスト保存時にその値をDBに記録して、
ダウンロード済み確認時にその値と同一かどうかを確認する流れです。
この値の記録をするため、historiesテーブルにupdatedカラムを追加しました。

そのあと、これだけだとankpixivのアップデート以降に記録したものしか更新を検出できないので、
datetimeカラムから保存日時を取ってきて、サムネの日時と大小比較を行って先に進んでいるかどうかを確認するロジックを追加しました。


しばらく使っていて、後者のロジックがあれば前者はいらないんじゃないか?と思ったのですが、
良く考えるとdatetimeカラムの値が多分localtimeなので、使うlocaleによっては正しく動作しないんじゃないかという気もします。

それで、以下のどちらかにしたいと思っているのですが、

  • DBのテーブル変更はしないで、datetimeカラムだけで行く
  • DBのテーブル変更をして、datetimeカラムの利用はオプションにしておく ←現在はこっち

ご意見ありましたらお願いします。

@anekos
Copy link
Owner Author

anekos commented Apr 1, 2015

お疲れ様です。

Pixiv の時刻表示はそもそもどうなっているんでしょうね。
わざわざユーザにあわせているのでなければ、

new Date().getTimezoneOffset()

を使うことで、あわせることは可能だと思います。
(ユーザーが locale を変えたことがあると、だめですが、それについてはもう手遅れですね…)

@anekos
Copy link
Owner Author

anekos commented Apr 1, 2015

updated を保存することで、他にメリットがあると追加も良い気がします。
そうでなければ、コードが若干複雑になってしまうのが気になるのでは、と思いました。

@ginzu
Copy link
Collaborator

ginzu commented Apr 5, 2015

ありがとうございます。

updatedカラムは追加しない方向で検討したいと思います。


updatedを保存する利点としては以下の2つくらいでしょうか。

  • PCのtimezoneに左右されずに判定できる
  • 一致不一致で判定しているのでサムネのURLがYYYYMMDDを含まない形に変更されても対応できる(かもしれない)

前者はDBからとってきたsavedの日時をローカルタイムからJSTに変換することで対応し、
後者はまあいつあるかわからない変更を今から考える必要もさほどないので、
DBの構成を変更するリスクは避けることにしたいと思います。

それから、更新判定用に追加したコード中でDBのupdatedカラムに関わる部分の割合は小さいので(db insertとdb fetchの2か所の数行くらい)、
updatedカラムのある/なしは、今回の変更の複雑度にはあまり影響がない感じになっていると思います。

@anekos
Copy link
Owner Author

anekos commented Apr 18, 2015

ブランチマージしました。
ついでに、de ロケールの更新をしました。

@ginzu
Copy link
Collaborator

ginzu commented Apr 18, 2015

対応ありがとうございます。
ロケール更新(twとde?)は非同期版の方にも反映しておきます。

一点、自動ビルドのページな話のですが、masterへのマージ完了後も、mergeし終わった中途のbranchのxpiが5個ぐらいそのまま残ってしまっているので、後で整理して頂ければと思います。

@ginzu
Copy link
Collaborator

ginzu commented May 24, 2015

お疲れさまです。

①開発ブランチのmasterへのマージと、②AMOの方についてのご相談です。

①I/Oの非同期化を進めていた開発ブランチですが、それについての変更がひと段落した2/24のcommitから3ヶ月経過して特に問題らしい問題が起きていないのと、あとFirefoxのreleaseも開発ブランチでターゲットにしていた38まで進んだので、masterへのマージの検討をお願いします。
zh-TWとdeのロケールファイルは取り込み済みです。

②AMOに置いてある版が、Firefox35以降では動かない版なので、アップデートの検討をお願いします。

お忙しいところお手数おかけしますが、よろしくお願いします。

@anekos
Copy link
Owner Author

anekos commented May 25, 2015

ありがとうございます。

申し訳ないのですが、時間がないのでそちらでマージしていただけないでしょうか。
あと、ginzu さんが問題なければ、AMO に作者として登録するのも良いかと思っています。

現実として、私は追えていないので、私がやるほうが問題が起きそうですし。
そもそも、私はもうコミットしていませんし。

AMO への登録などは簡単なので、こちらでやれると思いますが、マージとかは難しいです。

いかがでしょうか。

@anekos
Copy link
Owner Author

anekos commented May 25, 2015

レスポンス遅くなった上に、こういう返事ですみません…。

@ginzu
Copy link
Collaborator

ginzu commented May 25, 2015

了解しました。

masterへのマージを行ってREL-2.1.0としました。
また不要になったginzu系branchがたくさん残っていたのでそれらの削除も行いました。

AMOへの手続きは、今回についてはお願いしたいと思います。
開発者登録の話はたしか以前にも頂いていたと思いますが、ちょっと考えさせてください…。

@anekos
Copy link
Owner Author

anekos commented May 26, 2015

AMO へはアップロードしておきました!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants