新月実装開発部

49fdb310 anonymous 2015-12-13 11:18
@markdown
まだたまにエラーが出るなあ。レコードの転送に失敗してるのかしらん。
```
java.io.EOFException: Unexpected end of ZLIB input stream
java.util.zip.ZipException: invalid distance too far back
```
e58230ac anonymous 2015-12-13 15:14
>>ce639e27
それネットワークが不安定にならない?
ab5d938a anonymous 2015-12-13 16:22
>>e58230ac
e709bb1f anonymous 2015-12-14 04:23
>>539165e8
それはどこにも書いてなかったような…
どうしようかな。
03b62f6c anonymous 2015-12-14 05:14
>>e709bb1f
実装上の問題です。
sakuはjoinが来ると、1ノード追い出します。
https://github.com/shingetsu/saku/blob/25c932c992d5fabdd2bff9cf3302284d7a5bbad2/shingetsu/server_cgi.py#L154
ce98f0b8 anonymous 2015-12-14 06:42
レスの表示に成功したのでテンション上がってきたw
とりあえずクロールで集めたデータをきちんと閲覧できるようにしようっと。

ファイルの数: 1114
レコードの数: 253077
キャッシュサイズ: 5319MB
45c18b45 anonymous 2015-12-14 15:38
>>03b62f6c
ははあ、一番最初に/joinしたノードが追い出されるわけですね。
670404d0 anonymous 2015-12-14 15:45
効率の良いクローラーを書くのむずい
98eaa538 anonymous 2015-12-14 17:33
>>30fbf9b9
朔は隣接ノードの数を制限してるから再度/joinしたときに結局別のノードが追い出される。
e0ee4ae1 anonymous 2015-12-14 17:34
>>5cb62859
一緒に頑張りませう。
30fbf9b9 anonymous 2015-12-14 18:42
>>45c18b45
1. A-B となってるところに X がjoinしようとする
2. A-X となってBが切り離される
3. A-X-B として繋ぎ直す
5cb62859 anonymous 2015-12-14 20:39
こういうの作ってます
http://133.130.115.168/
0322c961 anonymous 2015-12-15 02:31
>>670404d0
結局朔のAPIと/headを使って探索ノードを虱潰しして抜けたレスを探していくしかないという…
a3e4dd78 anonymous 2015-12-15 02:42
>>03b62f6c
確かにそうしないと新しいノードが/join出来無いですよね。
定期的に隣接ノードを入れ替えればいいのかしら。
f834edbb anonymous 2015-12-15 13:30
/haveと/headと/getができたっぽい。
テストは一通りしたけど、さすがにオンラインにするのは緊張するなあ。
d1d8d3bc anonymous 2015-12-15 13:37
> >>7a3ee89b
> http://shingetsu.info/protocol/protocol-0.7.d1
> > /get/ファイル名/時刻引数
> > 「時刻/識別子」指定した時刻と識別子のレコード
[[新月の開発/1fb56e12]]

これ実装するの忘れてた! やばいやばい。
ef6bca7c anonymous 2015-12-15 15:14
/updateができたけどうまくいくかな~
855d46b5 anonymous 2015-12-16 07:11
/updateはちゃんと動くようになりました。
これで/recent以外のプロコトルコマンドは全て実装したことになります。
/recentをちょっと実装してみようかな。
3012f9cb anonymous 2015-12-16 18:17
/recentをちゃんと実装するのに新しいテーブルがデータベースに必要になったので、この機会にデータベースの構造を見なおしてスレッドをクロールしなおしました。ここらへんはデータの再取得がすぐできる新月は非常に便利です。いずれMySQLやPostgreSQLでもテストしたいんですけど、いつやろうかな。
d66e9169 anonymous 2015-12-17 07:42
クローラーができてupdaterも出来てよしUI
と思った矢先他のノードへの通信が出来ない現象が発生してる
saku win node 全部怪しすぎて分からん
sakuはUTF8 ダメ言ってるし
msのエラーページが出てくるし
nodeもうまくいう事聞かんし
とほほ…
fd8227b2 >>5cb62859 2015-12-17 11:49
フロントエンドがだいぶ軽くなった。
今後は安定版のリリースを目指す。それと、フロントエンドは機能追加したりデザインをなんとかする…
805bb9c5 anonymous 2015-12-17 12:36
お、頑張ってますね~
Clojureでの新月の新実装「需」はあともうちょっとでUIの作成に取り掛かれるところまで来ました。
d6be29e3 anonymous 2015-12-17 15:28
>>c6157ad8
ノード間の通信が出来ないから使えないと思う
ブラウザでは普通に動作する
まあ時間かかりそうだし時間のある時にするよ
ff24acd8 anonymous 2015-12-17 19:45
「需」のプロコトルコマンドの実装がほぼ完了しました。
/recentは時刻引数の処理を真面目に実装すると結構面倒くさいです。

ゲートウェイのウェブページの作成をサーバーで行うかクライアントで行うかかなり迷ったんですが、結局クライアントサイドでClojureScriptで作成することにしました。これでページ間の遷移がかなりスムーズになるはずです。URLの問題はHTML5のpushState()で解決する予定です。

Manipulating the browser history
https://developer.mozilla.org/en-US/docs/Web/API/History_API
c6157ad8 anonymous 2015-12-17 21:47 1450356472.jpg (132KB)
>>d66e9169
Chromeとかでレスポンスを調べてみたらいいんじゃないでしょうか。
bc2be153 anonymous 2015-12-18 00:41
>>d6be29e3
ノードを動かしているPCのブラウザからならちゃんとテストできますよ。

> ブラウザでは普通に動作する

朔がリクエストのヘッダを見て弾いているのかもしれませんね。
6d4f62c0 anonymous 2015-12-18 01:35
>>d6be29e3
それ心当たりある
sakuはcontent-typeヘッダーをつけていないのにgzip圧縮したレスポンスを返してくるんですが、対処してますか?
13724a8f anonymous 2015-12-18 03:55
>>ca58f444
ここは新実装のスレなので、朔の話はこっちのほうがいいんじゃないかな。
[[新月の開発]]
2806bd49 anonymous 2015-12-18 05:28
>>ca58f444 です
>>6d4f62c0 の言う事が関係してました

リクエスト時に accept-encoding が指定されていないとsakuが >>d66e9169 のエラーを出して応答しなくなるようです
ずっとnode側の問題だと思ってやってたからすごく時間を無駄にした気がする
ca58f444 anonymous 2015-12-18 09:31
なんかエラー出たので報告

sakuのトレース(抜粋)
環境:win7 pyhton3.5 saku4.6.1

Exception happened during processing of request from ('127.0.0.1', 51759)

AppData\Local\Programs\Python\Python35-32\lib\http\server.py", line 931, in send_head
    return self.run_cgi()
shingetsu\LightCGIHTTPServer.py", line 253, in run_cgi
    cgiobj.start()
shingetsu\basecgi.py", line 103, in start
    self.run()
shingetsu\server_cgi.py", line 69, in run
    self.do_recent(path)
shingetsu\server_cgi.py", line 246, in do_recent
    fp = self.output()
shingetsu\server_cgi.py", line 194, in output
    return TextIOWrapper(fp, 'utf-8', 'replace')
AttributeError: 'BodyFilter' object has no attribute 'readable'
c7edc22a anonymous 2015-12-18 12:29
>>8086a12e
修正しました
8086a12e anonymous 2015-12-18 14:52
@markdown
>>2806bd49
本当だ。プロトコルの説明書にはaccept-encodingが必須とは書いてないからこれは変だね。
```python
        # HTTP_* headers require by SAKU
        env["HTTP_ACCEPT_LANGUAGE"] = \
            self.headers.get("Accept-Language", "")
        env["HTTP_ACCEPT_ENCODING"] = \
            self.headers.get("Accept-Encoding", "")
        env["HTTP_HOST"] = self.headers.get('host', '')
        env["HTTP_REFERER"] = self.headers.get("Referer", "")
        if 'X-Forwarded-For' in self.headers:
            env['HTTP_X_FORWARDED_FOR'] = self.headers['X-Forwarded-For']
```

https://github.com/shingetsu/saku/blob/5eaec8229dc33bbb42aac05847370011040de840/shingetsu/LightCGIHTTPServer.py

> ただし、gzip 形式で圧縮したメッセージをノードに送信する場合、 通信相手ノードはリクエストのメッセージヘッダを解析し、 ノードがgzip形式で圧縮されたメッセージを解釈できるかどうか 判断しなければならない。

http://shingetsu.info/protocol/protocol-0.7.d1
506094cd anonymous 2015-12-18 17:00
やっと通信終わった
これからUI(`・ω・´)ゞ
41561c10 anonymous 2015-12-18 18:38 1450431511.jpg (83KB)
「新月@ゆぐちゃんねる」のユーザーインターフェースを「需」に移植中。
見た目は殆ど変わらないですが、需はいわゆるシングルページWebアプリケーション(SPA)なので動作はかなり速くなっています。
e037b0bd anonymous 2015-12-19 03:28
>>c7edc22a
乙です乙です
dbb00625 >>5cb62859 2015-12-19 13:02
添付ファイルをサポートできた
リポジトリはここ https://github.com/yuuki0xff/mika
一応デバッグ用のdockerコンテナも用意しています。誰かテストしてくれる人いますか?
80b4b0f8 anonymous 2015-12-19 15:19
>>d0dbe869
それは残念

そういや、使い方が書いてないのでここに書いておきますね。
dockerとtsc(typescriptのコンパイラ)とscssが必要

./docker/build.sh
tsc ./static/*.ts
scss ./static/*.scss
./core/settings.pyをテキストエディタで開き、NODE_NAME変数を設定
80番ポートを開放

あとは./docker/control.sh autoを実行してhttp://localhost/にアクセスすると…使えるようになっているはず
ログは./log/に溜まっていくはずです。
停止は./docker/control.sh kill all
d4bbd0c9 anonymous 2015-12-19 21:20
>>d0dbe869
このノードからChrome 47で書き込みしてみたけど、書き込み後に画面がリフレッシュされないね。
9f2e61ac anonymous 2015-12-19 23:19
>>d4bbd0c9
修正しました。
>>923b1b94
しばらく動かしていれば見えてきませんか?
d0dbe869 anonymous 2015-12-19 23:35
>>dbb00625
これでしたっけ。頑張ってますね~
http://133.130.115.168/
ぜひ試してみたいけど時間がないのが残念…
c119ba32 anonymous 2015-12-20 06:17
>>80b4b0f8
Pythonとtypescriptか〜

> http://133.130.115.168/

このノード、うちの環境からは見えないけどどうなってるんだろう…
923b1b94 anonymous 2015-12-20 06:37
>>c119ba32
あ、これはうちの朔や合からは見えていないってことね。
d7be1f6e anonymous 2015-12-20 06:48
「需」のページ遷移の処理を大幅に改善しました。
reagent.coreのイベントの通知の処理がきちんと文章化されていなかったので手間取りましたが、これで一安心です。
1dad7196 anonymous 2015-12-20 14:41 1450590099.png (8KB)
ゆぐちゃんのUIを踏襲しつつ一から作ってみた
df4677e5 anonymous 2015-12-21 23:55
>>1dad7196
頑張れ~
dfabfa0d anonymous 2015-12-23 11:05
支援!
9f7cd51b >>5cb62859 2015-12-23 19:30
マテリアルデザインにしてみた。もう力尽きたので今日の作業はおしまい
http://133.130.115.168/
2d9d8234 anonymous 2015-12-24 06:50
>>9f7cd51b
これは期待。
a2f8af16 anonymous 2015-12-25 00:05
デザインって難しいな
707e1932 anonymous 2015-12-25 01:26 1450974360.jpg (79KB)
「需」はスレッドの表示処理の部分を開発中です。
データはほとんど未加工のままJSONでクライアント側に投げています。
基本的な方針は決まったのであとはコードをガリガリ書くだけです。
3f24631d >>5cb62859 2015-12-25 14:57
デザインが固まってきた。ついでに十字キーでスクロールできないバグを9b90448で仕込んでおきました。
次は残念な状態のサーバサイドを直します
074ac3bb anonymous 2015-12-25 18:28 1451035693.jpg (45KB)
「需」はようやくスレッド内でのページ切り替えができるようになりました。
必要な部分だけをJSONで読み込んでいるので、切り替えは非常に高速です。
reagentでの開発もだいぶ慣れてきました。Reactのラッパーなんですが、非常に新鮮です。

https://reagent-project.github.io/
https://facebook.github.io/react/
5dcd315b anonymous 2015-12-27 22:32
「需」のユーザーインターフェースの作り込みは順調に進んでいます。
次はアンカーの処理で、その後で書き込みかな。
1から作るとけっこう大変ですけど、このふたつが終われば一応朔の代わりに使えるので辛抱のしどころですね。
5fcbe65e anonymous 2015-12-29 01:22
「需」の普通のアンカーの実装がほぼ完了しました。
かなり面倒くさかったんですが、「新月@ゆぐちゃんねる」のより使いやすくなりましった。問題は逆参照アンカーなんですが、これはデータベースに専用のテーブルを作ることにします。
a46afb96 anonymous 2015-12-31 02:43 1451497397.jpg (74KB)
「需」の逆参照アンカーの実装も終わりました。
正月休みのあいだに「ゆぐちゃんねる」の試験運用を開始したいけどちょっときついかな~
6f22cc49 anonymous 2015-12-31 13:18
>>a46afb96
2ch interface相当機能は実装済みなのかな?
d5d1422e anonymous 2015-12-31 20:34
>>6f22cc49
まだですけどそんなに手間はかからないはずです。
まあ今のshingetsu.ygch.netはそのままで、「需」を試しにygch.netに乗っけてみるだけなんですけどね。
01a8fff1 anonymous 2016-01-01 00:00
あけおめ
e35e367c anonymous 2016-01-01 10:08
🆕🈷🌑
d8c65cef anonymous 2016-01-05 17:15
>>01a8fff1
ことよろ~
d15a7a46 anonymous 2016-01-06 16:33 1452065630.jpg (57KB)
正月休みのあいだずっと「需」の書き込み画面の設計をどうするか悩んでいたのですが、結局デスクトップPCでは書き込みフォームを別ウインドウでひらいて、モバイル版では普通にページ遷移する、というように切り替えることにしました。オプションでreCAPTCHAも使えるようにする予定です。使い勝手に直接影響する部分なのかなかなか難しいですね。
90c0d03f anonymous 2016-01-08 02:41
>>ddf5ddd7
お互い頑張りましょ~
45d264af anonymous 2016-01-08 08:10
「需」の書き込みフォームのクライアント側がreCAPTCHAや添付ファイルの部分も含めて一応動くようになりました。相変わらずユーザーインターフェースは面倒くさいです。あとはサーバー側で新しいレコードを作成して隣接ノードに通知を出すようにすればいいだけです。明日の楽しみにとっておこうっと。
ddf5ddd7 anonymous 2016-01-08 09:52
いい加減開発再開しないとな…
816de301 anonymous 2016-01-08 13:06
>>45d264af
着々と進んでるようで何より。応援してます

キャプチャ認証があるってことは需からの無差別スパムはほぼなくなりそうだね
狙ってこられたらそりゃ対策は難しいんだろうけど
f91b97ba anonymous 2016-01-08 13:14
>>816de301
reCAPTCHAはかなり強力だから狙われても大丈夫だと思う
ちなみに自分のはスクリプトの軽い対策だから狙われたら一瞬

でも新月では他ノードからの攻撃の対策の方が重要な気もするな
どうしようか
82ee1a8b anonymous 2016-01-08 15:30
>>f91b97ba
そうなんだ。もうすでにある程度簡単に突破できるのかと素人ながらに思ってたけど
それならreCAPTCHAだけ実装すればフォームからのスパムは気にしなくてよさそうですね

>>0458fe35
悪意のあるノード対策としても手動削除しやすい管理環境ができると良いよなぁ
6bd4f2c8 anonymous 2016-01-08 17:27
「需」からの書き込みテスト。
0458fe35 anonymous 2016-01-08 23:00
ベイジアンフィルターは誰も実装してないのかな
管理者が手動削除すると学習していったりすると便利そう
d6629442 anonymous 2016-01-09 02:44
ようやく「需」から書き込みができるようになりました。
細かいところの作りこみはこれからですが、これで一安心です。
今日はここまでにして博論にとりかからないと…
d08cdb6f anonymous 2016-01-09 03:23
reCAPTCHAは、ゆぐちゃんねるのスパムフィルタを緩めに設定するために使う予定です。他ノードからの攻撃の対策はベイジアンフィルタのほかにもいろいろ考えています。削除結果の共有も含めてなるべく使いやすくしたいですね。
4dc13a0e anonymous 2016-01-09 17:37
このエラー、今まで出てなかったので不思議だったんですよね。
新実装ということなら納得です。
730858a6 anonymous 2016-01-09 21:05
リトライは間隔を開け、回数制限を付けて下さい 当方の実装が変なレスポンスを返しているのか、無限にリトライされてます
82e0bf42 anonymous 2016-01-10 14:54
mikaのページに文字コードの指定を追加していただけるとありがたいです。
iPhoneで文字化けしていました。
48071db6 anonymous 2016-01-10 17:26
>>82e0bf42
対処しました
51b3e5ad anonymous 2016-01-11 03:11 1452449496.png (32KB)
新しいスレッドは自動では取得しないもののワンクリックで取得出来るようにしました
173cc175 anonymous 2016-01-11 21:25
「需」もある程度形になってきたので新しくスレを立てました。

[[【新月実装】需【Clojure・ClojureScript】]]
9dfd0fb2 anonymous 2016-01-13 01:46
最近mikaがネットワークから孤立するすることが多くなっていたようだ
それにしても、update通知が届かなかった書き込みはほとんど拡散されないですね
d8ff8cec anonymous 2016-01-13 03:15 1452622502.png (34KB)
今更ながら画像表示対応
これから優先順位の低い作業メインでいくつもり
804a07a5 anonymous 2016-01-13 03:18
確かノード名に"server_cgi"が含まれてるんでしたっけ。
自分の実装を直しておきます。
013c7fc9 anonymous 2016-01-13 03:54
>>804a07a5
助かります
mikaの隣接ノード管理の不具合は開発中の1.0.0で修正済みです。今は時間がないので、応急処置をして孤立しないようにしました
a7790c7d anonymous 2016-01-13 06:51
>>2d6b9a9a
現在の安定版 v0.3.1はこれ
133.130.115.168:80/stable/server_api
f381d40a anonymous 2016-01-13 07:26
>>a7790c7d
手動で追加しておきました。
8343ece9 anonymous 2016-01-13 08:20
>>f381d40a
ありがとうございます
2d6b9a9a anonymous 2016-01-13 15:09
mikaの公開ゲートウェイのノード名ってなんでしたっけ?
探索ノードにそれらしいのが見つからない…
1761e9d4 anonymous 2016-01-14 04:54
開発がすごくいい勉強になってる気がする
fcdb9c36 anonymous 2016-01-17 00:22
イベントドリブンだからトランザクションが大変
同じ書き込みが重複しまくってる
112786f1 anonymous 2016-01-17 00:37
>>a7790c7d
ygch.netより軽くて良さそうだね
個人的には朔のUIが一番だけど、レスが下から上に流れる方が使いやすそう
baa924ad anonymous 2016-01-17 01:58
>>0cfd7315
積み上げ型っていうらしい
2chはスレッドフロー型
ac54c092 anonymous 2016-01-17 01:58
>>60b2d9eb
肝心のノード名を書くのを忘れてた。
133.130.115.168:80/devel/server_api
295b1471 anonymous 2016-01-17 09:27
>>fcdb9c36
それ自分もハマった。1つの書き込みについて5回ぐらい違うノードから/update命令が来るから、きちんと捌かないとエライことになる。
21cc7c2c anonymous 2016-01-17 09:47
ygch.netも需に移行すればだいぶ軽くなるはず!
朔はレスの数が多いとちょっと重すぎです。
0cfd7315 anonymous 2016-01-17 10:10
mikaの最新のレスが一番上に来てるのはなかなか興味深い設計だと思う。
これとか書き込み時刻の表示が相対時刻になっているのとかはFacebookを意識してるのかな?
まあいまさら2chにとらわれる必要もないよね。
60b2d9eb anonymous 2016-01-17 10:56
これも探索ノードに追加しておいた。
dfdc61e5 anonymous 2016-01-17 11:13
スレッド「フロート」じゃね。スレッドが流れる(flow)んじゃなくて浮いている(float)から。

https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E3%83%95%E3%83%AD%E3%83%BC%E3%83%88%E5%9E%8B%E6%8E%B2%E7%A4%BA%E6%9D%BF
337e65da anonymous 2016-01-18 07:17
この公開ゲートウェイが取得漏れが頻繁に起こる問題を直しました
原因は設定ミスでした
133.130.115.168
19846885 anonymous 2016-01-18 14:35
dat形式対応しようとしたら案の定文字化けしますた
変換面倒だorz
3a6d762c anonymous 2016-01-18 16:43
こちらも負けじとdat形式対応
スピードもなかなか出ていい感じ
7f3a8e29 anonymous 2016-01-23 07:12
>>082b18b7
対応完了。MySQLでは大文字と小文字を区別せずに検索することをすっかり忘れていました・・・

念の為、133.130.115.168から/get/thread_E887AAE4BD9C7063/や/have/thread_E887AAE4BD9C7063などのリクエストが来ていないか確認していただけないでしょうか?
81d803f3 anonymous 2016-01-23 07:20
乙ですおつです。しばらく様子を見てみます。

Top of this page. | <<last 0 1 2 old>>

limit: 15360KB

(新月実装開発部/256/0.8MB)

Powered by shinGETsu.