00:00:14

わたしもQtのナイスな機能で楽したい

00:00:56

現実はnodeguiの謎挙動に悩まされることの方が多いけど

01:30:34

どうやって絵文字対応すればいいのか全くわからん

01:40:30

https://github.com/twitter/twemoji-parser

Twemojiのパーサーを見付けたので闇の実装が始まりそう

GitHub - twitter/twemoji-parser: A simple library for identifying emoji entities within a string in order to render them as Twemoji.
01:41:55

Ripcordが画像として埋め込みしてるっぽいのでTenChaもその類になりそう

01:42:49

*⃣

01:44:56

いやまて闇の実装しなくてもいけるかも

01:46:56

そう、Twemojiのフォントを組み込みすればいいんだ(

01:47:26

ライセンスが複雑になる音がするねぇ

01:47:41

いや、待て合法的にやる手段がある

01:47:49

動的参照だ

01:48:03

「このフォントは?」
「そこにあったので使ってますね」

02:00:05

💯

02:01:46

やっぱ闇に手出す必要があるかもしれない

02:01:58

0️⃣

02:06:49

PostViewにもフィルター付けないと

02:09:56

<big>てす</big>

02:10:00

!?

02:10:10

Qtってこんなことできたのか...

02:14:39

マジ?

02:16:17

んー

02:17:25

<img src="./1f9e1.png">

02:17:31

うわぁ...

02:18:32

面白い機能を発見したのでこれを利用していこうか

02:19:13

QLabelはリッチテキスト的な記法で色々できる、楽だけどTenChaを刺せる

02:19:26

強いて言えばこれで脆弱性を作る方が難しい

02:22:29

<a href="http://example.com">ゆーあーるえる</a>

02:22:59

URLが対応できる...

02:24:26

<script>console.log('test');</script>

02:24:44

??????????????/

02:26:33

<test></test>

02:26:56

<noscript>test</noscript>

02:27:02

????

02:27:30

<script>window</script>

02:28:52

<sup>test</sup>test<sub>test</sub>

02:28:59

わお

02:31:55

<img src="./1f9e1.png" width="10" height="10">

02:32:02

わーお

02:32:49

荒技で絵文字ができる

02:33:14

ローカルのリソースしか取れないので刺さらないけどね

02:35:14

Renoteガード

02:35:51

ノーコメントで

02:38:49

なんで

02:39:38
2020-04-15 02:39:07 レイエスの投稿 eizi2002@misskey.dev

<a href="https://github.com/coke12103/TenCha"><font size="7">茶</font></a>

GitHub - coke12103/TenCha: 2009年のMisskeyクライアント
02:39:41

.

02:40:44

これは気合しかない絵文字

02:41:40

スクリプト系は刺さらないけど装飾系は結構容赦なく刺さる

02:42:05

この方法で実装できますよ?

02:42:48

絵文字はTwemojiもカスタム絵文字も無理矢理埋め込むので

02:43:02

やってることは変わらないです

02:43:33

絵文字対応のバージョンから./.tmpに絵文字キャッシュする感じにしていこうかな

02:43:54

できるだけCDNにアクセス飛ばしまくりたくない

02:44:57

キャッシュの仕様も考えないとなぁ

02:46:15

EmojiのIDどう管理しようかな

02:47:35

通しでリスト作ってそれに応じてキャッシュしていくか

02:48:17

そんな残骸残る方法使わないです

02:48:33

全部自分のフォルダ直下で管理する旧クラ方式を採用する

02:49:09

それWindows相手には正しくない

02:51:10

そもそもポータブル仕様で動くアプリなので残骸を残す挙動は一切するつもりない

02:52:04

@d_flat_aug7@misskey.io Misskeyクライアントなんてもので./を汚染するの大罪だと思うんだ

02:53:26

J a c k p o t

02:56:25

そもそも普通はブラウザのキャッシュに任せるのでなぁ...

03:00:36

TwiemojiParser
- constructor
- parse

03:00:57

んでこれとは別にキャッシュを書く必要が...

03:05:54

./tmp
- tmplist.json
- *.png

03:16:26

Misskeyを壊す人本当にクライアントに刺さる

03:29:45

{
[
{
"id": "数字",
"match": "文字",
"filename": "文字"
}
]
}

03:45:49

うわぁ...

03:45:59

likeとか変換しなきゃいけないのか...

03:56:09

キャッシュ用関数にTwiemojiかMisskeyのカスタム絵文字かってのを判定させるようにした

04:25:41

L4D2配信見付けて作業用BGMにしようとしたんだけどめっちゃL4D2やりたくなるので10秒で諦めた

04:26:59

絵文字の実装終わったら6時間ぐらいやります

04:27:35

やべぇマジでL4D2死ぬほどやりたいんだけど

04:35:46

ファイル名をuuidにしちゃだめかな

05:28:09

頭使い過ぎて頭が頭

05:36:39

a<img src="./1f9e1.png" width="14" height="14">a

05:37:07

A<img src="./1f9e1.png" width="14" height="14">A

05:37:18

A<img src="./1f9e1.png" width="12" height="12">a

05:37:38

a<img src="./1f9e1.png" width="10" height="10">a

05:38:20

A<img src="./1f9e1.png" width="9" height="9">a

05:38:49

A<img src="./1f9e1.png" width="4" height="4">a

05:39:24

AAA
A<img src="./1f9e1.png" width="14" height="14">a
AAA

05:40:11

AAA
A<img src="./1f9e1.png" width="9" height="9">a
AAA

05:59:56

さっさと終わらせてL4D2するはずがリッチテキストパーサーを書くはめににゃって無いてる

06:02:17

改行とリンクをどうにかするだけだけど

06:11:58

postview, timeline

06:12:47

たいまもくもくしたい

06:18:26

うわーーーーーーーーーーーーーーーーーーーー

06:24:38

noteのテキスト変換するべきなのだろうか...

06:24:41

うーん

06:34:56

あーーーーーーーーーーーーーーーめんどくさいーーーーーーーーーーーーーーーーーーーー

06:36:49

うわーーーーーーーーーーーーーーーん

06:48:29

💯

06:50:00
2020-04-15 06:48:29 печенье тортの投稿 c0_ke@misskey.dev

💯

06:51:25
2020-04-15 06:48:29 печенье тортの投稿 c0_ke@misskey.dev

💯

06:51:49

うわーーーーーーーーーーーーーーーーーー

06:51:54

動かないーーーーーーーーーーーーーー

06:52:05

:falkon:

06:57:21
2020-04-15 06:52:05 печенье тортの投稿 c0_ke@misskey.dev

:falkon:

06:58:00
2020-04-15 06:52:05 печенье тортの投稿 c0_ke@misskey.dev

:falkon:

07:00:00

なんでーーーーーーーーーーーーー

07:07:28

*⃣

07:09:25

*⃣

07:11:20

*⃣

07:12:08

:test:

07:13:59

心が折れそう

07:19:52

遅いと思いつつ動かすことを優先してしまっている

07:20:21

投稿の切り替えに4秒かかる

07:20:26

アホでは

07:20:55

あ、これだめなやつだ

07:26:53

(コ`・ヘ・´ケ)

07:27:16

:falkon

07:27:22

:falkon:

07:27:48

盛大にやらかした

07:35:08

:falkon:

07:37:32

:falkon:

08:06:20

🐡( '-' 🐡 )フグパンチ!!!!🐡( '-' 🐡 )フグパンチ!!!!

08:06:45

...一応動きはした

08:06:57

実用上ありえないぐらい問題あるけど

08:07:06

なんと言っても重い

08:11:02

QtでEmojiって難しい

08:23:23

あーあーあーあーあーあーあーあーあーあーあーあーあーあーあーー

08:23:33

添い寝したい

08:24:43

もうマジ無理

08:57:01

💯

09:00:23

:falkon:

09:01:09

一応絵文字対応したけどこれ大丈夫なのかな

09:01:30

:xtu:

09:02:17

SVGの絵文字出ない...

09:02:25

変換書くか...

09:07:23

絵文字パーサーちゃんと動くけどいいのかなこれ...

09:09:44

Webじゃないので1回は絵文字が当たらない場合がある...

09:25:15

胃が痛いです

09:34:22

あーあーあーあーあーあーーああーあーー

09:42:01

a
a
a

09:43:36

*⃣0️⃣📑

09:44:56
2020-04-15 09:43:36 печенье тортの投稿 c0_ke@misskey.dev

*⃣0️⃣📑

09:47:35
2020-04-15 09:43:36 печенье тортの投稿 c0_ke@misskey.dev

*⃣0️⃣📑

09:53:40

*⃣

09:53:48

0️⃣

09:59:25

0️⃣*⃣📑

09:59:36

やりましたわ!

10:01:34

てす

10:02:15

ぬえ?

10:03:05

絵文字のためにQtのLabelのリッチテキスト装飾を使うために絵文字をキャッシュする所から作ってます...

10:06:44

微妙に置換されないのなんなの

10:07:25

❤️⌨⛩🍭

10:08:24

tesu

10:08:54

sute

10:09:05

置換ーーーーーーーーーー

10:12:55

がんばれわたし...

10:13:07

やった!

10:13:16

やってない...

10:16:10

a-a-a-a-a-

10:16:24

ぬあー

10:25:59

やったーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

10:29:43

v('ω')v(。>﹏<。)(Δ・x・Δ)(=^・・^=)(。>﹏<。)🐡( '-' 🐡 )フグパンチ!!!!

10:30:15

別のバグ作ってて死んだ

10:32:41

(=^・・^=)(。>﹏<。)🐡( '-' 🐡 )フグパンチ!!!!(Δ・x・Δ)v('ω')v(。>﹏<。)v('ω')v(コ`・ヘ・´ケ)

10:32:57

あーーーーーー

10:33:01

理解した

10:33:13

もうやだ

10:33:45

絵文字リリース死ぬほど難しい

10:51:12

🐡( '-' 🐡 )フグパンチ!!!!

10:51:35

一応動くんだけどなんもわからない

10:52:23

GIFとSVGなぁ...

10:52:49

あとHTMLっぽい記法が無に飲まれるのなぁ...

10:52:51

a-

10:52:57

厳しい

10:55:10

疲れたので添い寝したい

10:56:25

Qtなんですよ

10:56:48

HTML方式で装飾できるのでimgを埋め込みしている

10:57:16

ローカルしか埋め込みできないのでキャッシュの実装もあり厳しい

10:57:36

あとね、わたしがやってるのQtであってQtじゃない

10:58:11

デフォルトで用意されたレイアウトでも崩れるnodeguiとかいうものなので

11:00:13

Qtの通り動いてたらわたしこんなに苦しんでない

11:04:22

わたしはカスタム絵文字作ってるわけじゃなくてTwemojiの方からやってるんですよ

11:04:33

そもそもデフォで絵文字がちゃんと出ないので

11:04:38

そこすら画像になってる

11:07:02

添い寝ーーーーーーー

11:08:52

作業終わった後添い寝してくれる人がほしい

21:11:24

9時間前のわたしの絵文字実装が正しいのかわからない

21:13:22

絵文字キャッシュ、本気でキャッシュのなんたるかを知らないで作っているのであぶないコードの可能性がありそうで怖い

21:14:07

ファイル名がUUIDだったりするなど何も考えてない実装をしている

21:17:21

それとTenChaって基本知識がない人間が作ってるせいもあって画像のキャッシュが貯まり切るまで安定して絵文字が表示されない、という最悪の仕様を作ってしまっている

21:18:14

Noteを作る時パーサーにキャッシュ叩かせてるんだけどHTL, LTL, STL, GTLの4つが取り合うのでこうなんかもう地獄

21:18:26

Noteを共通化しないとこれ地獄

21:20:38

そもそも絵文字をキャッシュするのが正しいのかわからない

21:23:11

そもそもキャッシュなんて自前で作るものなの?

21:31:16

あ...

21:31:36

最悪のバグをみつけた

21:31:52

インスタンスごとの絵文字被りを想定していない...

21:32:05

はい書き直します

21:32:10

...

21:32:57

というかなんで同じIDの絵文字がインスタンスごとで違うのあるの

21:33:19

その可能性完全に忘れてたわ

21:39:14

:ie:

21:40:18

はい、ID被った絵文字はちゃんと出ない。

21:40:39

これはどうすりゃええねんって気持ちになってくるな

21:40:49

あ、URL

21:40:55

よしいける

21:47:14

あーーーーーーーーーーー

21:47:46

URLで判定するとプロキシ変わって再キャッシュされるやつなんじゃないのこれ

21:51:46

てす

21:51:57

すて

21:52:30

URL判定正しかった説あるな?

21:53:39

何度投稿しても2重キャッシュされないので多分成功

21:53:57

.

21:54:54

キャッシュが貯まり切るまではTwemojiとカスタム絵文字のリクエスト飛ばしまくるけどね

21:55:05
2020-04-15 21:39:06 おしまいの投稿 coke@mstdn.y-zu.org

このアカウントは、notestockで公開設定になっていません。

21:55:12
2020-04-15 21:39:06 おしまいの投稿 coke@mstdn.y-zu.org

このアカウントは、notestockで公開設定になっていません。

21:55:21

:ie:

21:55:25
2020-04-15 21:55:21 печенье тортの投稿 c0_ke@misskey.dev

:ie:

21:56:17

.

21:58:35

投稿には同じインスタンスの絵文字しか含まれない
投稿の作成時には投稿のEmojiの配列から参照を行う(URL判定で返す)
絵文字の置換は文字列で行う

これで問題なさそう

21:59:14

他インスタンスの絵文字を投稿に含められたりするとこれ地獄になるけどね

21:59:20

だって置き換えできないじゃん

22:00:13

:ie::ie: (mstdn.y-zu.org産) が同時に含まれる場合なんかこのシステムは盛大にバグる

22:01:09

基本投稿ごと、ユーザーごとにパースをかけてるので引用なんかなら大丈夫

22:01:15
2020-04-15 22:00:56 takimura@​:misskey:​.dev​​:spi:の投稿 cv_k@misskey.dev

2009年にはほぼ用いられなかったPC上での絵文字表示に対応する2009年のクライアント

22:01:33

わたしだってこんな苦行対応したくないけどMisskeyだからしょうがないでしょ

22:02:46

対応しないと豆腐だらけなんですよこのSNS

22:03:17

ちなみにこんな感じの狂った置換をしている

22:04:41

これ自動にするとこうなる

22:05:27

やってみる

22:06:07

てす

22:06:26

うんまあだろうと思った

22:06:35

こうなった

22:08:02

autoだと貫通する上幅指定されてないので他の文字が容赦なく被ってくる

22:09:13

そもそもGIFが動かないやつだ

22:09:47

そう、QLabelの画像埋め込みはアニメーション非対応なのである...

22:10:19

ちょっとした2009年要素

22:11:57

ただHTMLっぽい記法がパーサーに飲まれて虚無に消えるって症状が代わりに出たのでそれはどうにかしたい

22:12:19

あくまでぽい記法が無に消えるだけなんだけどそれは結構問題な気がする

22:13:29

<spin></spin>は飲まれますね...

22:14:50

&lt;spin&gt;&lt;/spin&gt;

22:14:58

なるほど?

22:15:07

エスケープしてやると飲まれない

22:18:12

💢

22:24:08

URLにも微妙に反応するようになった

22:24:31

✌️(´・_・`)✌️v('ω')vv('ω')vv('ω')v✌️(´・_・`)✌️(Δ・x・Δ)(Δ・x・Δ)v('ω')v(Δ・x・Δ)(=^・・^=)(。>﹏<。)(Δ・x・Δ)(。>﹏<。)(=^・・^=)

22:24:46

あ、やべ

22:30:07

自分の名前がエスケープされてしまっていた

22:37:50

てす

22:38:12

わーーーーーーーーーーーーーーーーー

22:38:40

回転 spin

22:38:57

エスケープ成功

22:39:26

v('ω')v(=^・・^=)(。>﹏<。)v('ω')v🐡( '-' 🐡 )フグパンチ!!!!(コ`・ヘ・´ケ)✌️(´・_・`)✌️(=^・・^=)(。>﹏<。)(Δ・x・Δ)(。>﹏<。)(。>﹏<。)(コ`・ヘ・´ケ)

22:39:40

だいぶ挙動がマシになってきたぞ

22:40:28

@vvvvvv1vvvvv@mstdn.jp Milkteaが元ネタだったり

22:41:18

MFMパーサー多分書けるけど面倒というお気持ち

22:41:50

TenChaは様々なクライアントのプレースホルダーをパクっているので色々パターンがある

22:44:26

QLabelのお陰で色々と雑に絵文字実装ができたけど文字装飾もできるっぽいのマジで魔窟

22:44:47
2020-04-15 22:44:18 takimura@​:misskey:​.dev​​:spi:の投稿 cv_k@misskey.dev

何も選択していない状態でリノートを選ぶとクラッシュする issue

22:44:57

ぬるぽしてやがる...

22:51:19

てす

22:51:34
2020-04-15 22:51:19 печенье тортの投稿 c0_ke@misskey.dev

てす

22:52:11

直した

22:52:17

絵文字と共にリリースかなこれ

22:53:04

絵文字の実装に自信ないんだけどリリースしていいのだろうか

23:00:15

投稿の長さが一定じゃなくなったので当然の権利のようにwrapの機構が使えなくない最悪のバグが生まれました

23:01:30

絵文字追加とバグ修正の代償にもっと最悪のバグを作ってしまった...

23:02:20

いや、まだだ

23:02:24

まだ舞える

23:12:49

なんか上手くいった...?

23:13:16

マジで?

23:13:28

これもしかして問題のアレ直った?

23:13:59

え?え?

23:14:03

マジ?

23:14:06

直った?

23:14:11

サイズ代わんない

23:15:20

サイズが代わらない!!!!!!!!!!!!!!!!

23:15:24

直った!?

23:16:14

URLをAで埋め込みするようにしてそれ以外をwrapするようにしたら直ったっぽさ

23:48:48

コミュニティはないほうがいいよ

23:49:49

コミュニティがあるとコミュニティの空気を読む義務が発生して死ぬので

23:51:12

空気に左右されずにコード書いて発狂できるの大事

23:52:59

LTLがあると辞める的な主張になるの、結局は自分らがでかい鯖にいるのが原因だと思うんだ

23:53:10

なんで分散型なのに分散しないんですか?

23:54:30

でかい鯖にいて、システム的に存在するのが仕様のLTLに居座って、リモート宛の空リプにキレるってそれ自業自得でしょ

23:58:46

まあそんなことはどうでもいいんだ。TenChaの絵文字実装はこれでいいのか