【新月実装】需【Clojure・ClojureScript】

ab48ee93 anonymous 2016-01-24 17:46
現在HTTPS接続のバグ取り中。「新月@ゆぐちゃんねる」よりもだいぶ快適なのでさっさと正式に公開したいところですが、まだ作業が残っているので我慢我慢…
05d53743 anonymous MGlbrmj//PR 2016-01-25 04:17
2ch互換インターフェースがメモリを食いまくりだったので、専用のコラムを追加してレコードの変換結果をキャッシュすることにしました。朔でも同じ問題が発生してたんですけど、どうやらうまく解決できそうです。
82bb218a anonymous 2016-01-25 07:57
>>05d53743の作業はうまくいって、2ch互換インターフェースの速度が大幅に改善されました。ちゃんと仕上げてからサーバーに乗っけようっと。
511e38b6 anonymous 2016-01-25 10:48
全文検索のためのメモ。
[[新月実装開発部/949e8ce6]]

すっかり忘れてたけどリンクをコピーする機能をメニューに追加しなきゃ。
bcb96ab1 anonymous 2016-01-26 11:10
レコード用のテーブルを変更したら絵文字のあるレスで問題が出たのでMySQLデータベースの文字コードを全てutf8mb4に変更しました。意外なところに落とし穴があるもんです。

How to support full Unicode in MySQL databases
https://mathiasbynens.be/notes/mysql-utf8mb4
f8b7b42c anonymous 2016-01-26 22:44
2ch互換インターフェースからの書き込みを試してみたら、案の定文字化けしましたorz
どうしようかな…
f7acf62b anonymous [sage] 2016-01-27 15:03
やれやれ、ようやくうまくいったみたいです。
2chブラウザの書き込みのエンコードが特殊だったので手こずりました。
あとはダミーの結果ページを返してやれば完成かな。
e31bf0e8 anonymous 2016-01-27 15:11
@markdown
こんな風にringのラッパーを作って対処しました。
柔軟なのはいいけど資料が殆ど無いのはちとしんどいですね。

```clojure
(defn- percent-encode-everything
  [s]
  (cond
    (zero? (count s))
    ""

    (re-find #"^(%[0-9A-F]{2})+$" s)
    s

    (re-find #"^%[0-9A-F]{2}" s)
    (let [match (re-find #"^(%[0-9A-F]{2})(.*)$" s)]
      (percent-encode-everything
        (str
          (nth match 1)
          (percent-encode-everything (nth match 2)))))

    :else
    (percent-encode-everything
      (str
        (format "%%%02X" (int (first (take 1 s))))
        (apply str (drop 1 s))))))

(defn percent-decode-for-2ch-post
  [s]
  (timbre/debug s)
  (percent-decode (percent-encode-everything s) "windows-31j"))

(defn wrap-2ch-post
  [handler]
  (fn [request]
    (if (= (:uri request) "/test/bbs.cgi")
      (handler (assoc request
                 :form-params
                 (->> (clojure.string/split (slurp (:body request)) #"&")
                             (map #(re-find #"^([^=]+)=(.*)$" %))
                             (map #(do {(keyword (nth % 1)) (percent-decode-for-2ch-post (nth % 2))}))
                             (apply merge))))
      (handler request))))
```
4316f3c0 anonymous MGlbrmj//PR 2016-01-27 15:46
書き込み要求へのレスポンスは次のページから拾ってきたのでうまくいきました。

http://meriken.ygch.net/programming/monazilla/05.html

タグへの対応とかは残っているけど、一応これで2chインターフェースの作業は終わりました。性能は申し分ないので非常に満足です。
74b28bac anonymous 2016-01-27 16:52
/headのたびにレコード全体をデータベースから読み込んでいたバグを修正。
道理でメモリをやたらと消費してたわけだ…
e6383baa anonymous 2016-01-27 17:18
需に限らずなのですが、2chインターフェイスの場合、他のスレッドへのリンクは
うんたら/test/read.cgi/……
に変換されているのですが、そのURLをそのままウエブブラウザでアクセスした
時に404を返す形になっていると思うのですが、これ「該当のスレのwebインター
フェイスへのリダイレクト」という形にする事はできないものでしょうか。

2chインターフェイスを2chブラウザで見ている分にはタイトルも併記していますし、
現行仕様で支障がないのですが、何かの勘違いでそのURLだけ伝聞された場合
に何のことやらさっぱりなので。

3ff03c92 anonymous 2016-01-27 17:30
あ、需はそもそも、そういうURL吐いてないか……。
f1b54524 anonymous MGlbrmj//PR 2016-01-27 22:47
>>e6383baa
了解しました。
44eb65db anonymous 2016-01-28 14:02
需をbb2cから覗いてみたら二番目以降の本文が空欄になってしまっていました
datファイルの形式が間違っている事が原因のようです

http://vipprog.net/wiki/専ブラ開発への道.html
2行目以降が、
名前<>メール欄<>年/月/日(曜) 時:分:秒.下二桁(無い板もある) ID:hogehoge0<> 本文 <>
2e227306 anonymous [sage] 2016-01-28 14:48
>>e6383baa
対応しました。

>>44eb65db
指摘ありがとうございます。危ない危ない…+直しておきました。
7df5a51b anonymous 2016-01-28 16:01
>>2e227306
ありがとうございます。
あと>>511e38b6のような他のスレへのリンクが(2chインターフェイス用URLに)変換されないままdatに残ってるみたいなのですが、
古いキャッシュが残っているだけなのでしょうか。
d71f524e anonymous 2016-01-28 23:07
>>7df5a51b
これどうしようか迷ったんですよね。
まあでも一応変換するようにしておきます。
cf5a7e7e anonymous [sage] 2016-01-29 04:16
>>7df5a51b
対応しました。見た目がイマイチ好きになれないんですけど、まあでもないと不便ですよね。
0308d0da anonymous 2016-01-29 10:35
>>cf5a7e7e
ありがとうございます。

確かに見た目が変ですね……。

個人的には2chの見慣れたフォーマットで考えると括弧内を
すべて置き換える形で、

(空行)
スレッドタイトル
2chインターフェイスのスレッドURL
(空行)

となった方が「まだ」しっくりくるのかも……。
とかは思いますが。
ad8edf91 anonymous 2016-01-29 10:55
スレッド上のレスの減があった場合に、
2chインターフェイスのアンカーがそのままになってて、
話のつじつまがあわない状態になってる。

いちいち書き換えてたら折角のキャッシュの意味がなくなり
そうだから、仕様として割り切った方がいいのかな。

55c6f6de anonymous 2016-01-29 11:15
>>ad8edf91
アンカーの変換はリクエストのたびに行ってるので、専ブラのキャッシュを削除して読み込み直せば直せますよ。
875ac928 anonymous 2016-01-29 13:55
>>0308d0da
うーん、これをやるとおかしくなるリンクもあるので微妙ですね。
どうしようかな…
f3f7e913 anonymous 2016-01-29 14:45
いつの間に専用の独自ドメインが……

>>875ac928
見た目が変でも、使えるのだから当面そのままでもいいかもしれません。
気になるのであれば専ブラの方で成形してください。と。

>>55c6f6de
と私も思ったので、雑談スレのdatを直で覗いてみたんですが、ずれたまま
なんですよね…。違うサーバでも見ちゃってるんでしょうか。
fe43ad77 anonymous 2016-01-29 14:55
>>f3f7e913
orz 調べてみます。
新しいドメイン名は自分では結構気に入っていますw
b2f7dd42 anonymous 2016-01-29 19:00
>>f3f7e913
直しておきました。今度こそ大丈夫なはずです。
d47a716e anonymous 2016-01-29 19:09
>>b2f7dd42
ありがとうございます。
私が見てるスレについては直っているみたいです。

見てみるスレを増やして様子をみてみます。
355ea2e9 anonymous 2016-01-30 01:58
>>d47a716e
よろしく~
b2b0788a anonymous 2016-01-30 11:55
閲覧する2chブラウザを増やしてみたのだけど、
android用ブラウザの 2chmate version 0.8.9.3で、スレ一覧を開くと、「404が返ってきたよ」とお返事が。

朔の2chインターフェイスでは同環境下で普通に使えたので、違うURL(subject.txt以外)を参照してしまった
とは考えにくいなぁと。
あと、スレ自体は読めてるんです。

アナライザーでも通さなきゃ、どこのURLを参照して404を返してるのかよく判らないし、需のせいでない可能性も高いとは思うのだけど…。


6d1e8d0e anonymous 2016-01-30 12:07
>>b2b0788a
いろいろ調べてくださってほんとに助かります。
多分ローカルルールか板設定情報を読みに行ってるんでしょう。
追加しておきます。

----

【ローカルルール】
・ローカルルールの設置場所は次の通りです。
http://[サーバー]/[板名]/head.txt

【板設定情報】
・板設定情報の設置場所は次の通りです。
http://[サーバー]/[板名]/SETTING.txt
(各項目の意味はSETTING.TXT解読シヨウーヨをご覧下さい。)

【負荷率情報】
・負荷率情報の設置場所は次の通りです。
http://[サーバー]/_service/
http://meriken.ygch.net/programming/monazilla/14.html
d6cb0cbe anonymous 2016-01-30 12:16
>>b2b0788a
朔が対応しているのはローカルルールだけみたいですね。
ついでだからSETTING.txtも用意しておこうっと。

http://shingetsu.ygch.net/2ch/head.txt
http://shingetsu.ygch.net/2ch/SETTING.txt
9e4ffb8f anonymous 2016-01-30 12:20
>>d6cb0cbe
あ、こっちだったか。どのみち対応していないようだけど…

http://shingetsu.ygch.net/2ch/SETTING.TXT
4a9d6611 anonymous MGlbrmj//PR 2016-01-30 14:44
>>b2b0788a
直しておいたので是非また試してみてください。
75e61f77 anonymous [sage] 2016-01-30 15:43
>>4a9d6611
読み込めましたー!
取り急ぎご報告まで。
0987bf1b anonymous 2016-01-30 16:09
>>75e61f77
それは良かった。報告助かりました。
32bd775b anonymous 2016-01-30 16:12
2chインターフェースのブラケットリンクの変換処理が結構重かったので手を入れたらだいぶ軽くなりました。そういえば朔のは激重でしたね… 明日辺りにサーバーに上げます。
587f5795 anonymous 2016-01-31 07:02
ブラケットリンクの変換はだいぶ速くなりました。よかったよかった。

本番用のデーターベースに重複したレコードが見つかったのでよく考えてみたら、マスターマスターレプリケーションのせいでトランザクションアイソレーションが
思ったように機能していないことが判明。危なかった~
af94f25d anonymous 2016-01-31 16:44
なんか、ygg.ioが503返してるから45.56.121.29:48888でアクセスしたら応答してくれない。
報告がてら、久しぶりに朔の方のゆぐちゃんねる(の新月ゲートウエイ)から書き込み。
c8bf81c9 anonymous 2016-01-31 17:30
すいません、現在mikaちゃんのお漏らしのお掃除中です。
もう少ししたら復帰させます。
13839aff anonymous 2016-01-31 17:33
>>af94f25d
ポートを8880に変えました。そのうちygg.ioに一本化する予定です。
4f1191d3 anonymous 2016-01-31 18:01
ygg.ioの需を復帰させました。こっちに慣れると「新月@ゆぐちゃんねる」は結構ストレスがたまりますね。
f77201e0 anonymous 2016-01-31 18:08
>>4f1191d3
webインターフェイスも2chインターフェイスも需の方が早く感じるのはどうも間違いではなさそう。
9701535f anonymous 2016-01-31 18:55
>>f77201e0
あとは本番でもちゃんと動くといいんですけど、こればっかりはやってみないとなんとも言えないですね。
95c7dd06 anonymous 2016-02-02 08:30
「新月@ゆぐちゃんねる」の朔をなるべく早く需で置き換えたいので、現在一般公開のための準備を進めています。とりあえず必要な作業はこんなところです。

・スレッド情報の更新の効率化。
・タグ機能の追加。
・書き込みフォームの仕上げ。
・画像のサムネイルの作成。
・「新規スレッド作成」ページの追加。

あとはなにかあったかな…
7ffadbd1 anonymous 2016-02-02 08:42
あと追加したい機能はこんなところです。

・スレタイ検索
・全文検索
・ログイン機能
769ef7fc anonymous 2016-02-02 08:43
あ、絵文字対応を忘れてた! 書き込みフォームの作業と一緒にやっちゃおうっと。
921e58da anonymous [sage] 2016-02-02 09:07
需はfeedって吐いてたっけ。

個人的には、無くても現状支障が出てないのだけど。
a726c509 anonymous 2016-02-02 09:16
>>921e58da
そういえばそんな機能もありましたね。
自分では全く使わないんですけど、一応追加しておきます。

・RSSへの対応。
1426498a anonymous 2016-02-02 12:36
ygg.ioへの書き込みがちゃんと伝播されていなかったのでサーバーの設定をいじりました。他のノードとの通信にCloudFlareを挟んでみたんですけど、流石に無理があったみたいです。
c55e5c04 anonymous 2016-02-02 12:44
多分ノードによっては/updateの送信元のIPを隣接ノードのリストと照らし合わせてるんだろうけど、うまくいったりいかなかったりなのでちょっと良くわかりません。
4bc96da3 anonymous 2016-02-03 11:18
昨日は画像のサムネイルを作成するルーチンを実装しました。
あとAAの表示にも対応しました。AAのあるレスは自動的に「MS Pゴシック」か「IPAモナーフォント」で表示するようにしてあります。なかなか懐かしい雰囲気ですw

AA保管庫
https://ygg.io/thread/AA%E4%BF%9D%E7%AE%A1%E5%BA%AB

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

limit: 1536KB

(【新月実装】需【Clojure・ClojureScript】/214/0.5MB)

Powered by shinGETsu.