くまりゅう日記

もっと過去の日記
[.NET | BeOS | Blender | COLLADA | fossil | mono | monotone | NPR | OpenGL | PeerCastStation | Riko | Ruby | Silverlight | TRPG | XNA | ゲーム | ゲーム作り | プログラム | | 模型]

2021-09-21

日記

わーお、もう9月も下旬だ。書けてたのになぜか上げてなかった。

こないだ新型コロナウィルスのワクチンを2回目受けた。熱は微熱程度にしか出なかったが、頭痛と軽い吐き気でなかなかしんどかった。頭痛もひどかったのは1日だけなんだが、それからしばらく軽い頭痛が続いたわ。 9月に入ってそろそろ抗体も十分出来てるんかな。かといって遊びに行くとかいうこともないが、まあ少しは安心できそうだ。

30MMとか工具を買っていた近くのヤマダ電機からおもちゃコーナーが撤去されてプラモ関連が無くなってしまった……。ここしばらく新製品入らんけど改装してたせいかな?と思ってたんだが、再度改装が入って撤去になった。はー、ほんと使えねえ。 これで江東区で30MM売ってるの俺が知る限りガンダムベースしか無くなってしまった。ガンダムベースまで行くなら秋葉原なり錦糸町に行きますけど……。 あとついでにヤマダ電機の通販サイトで予約してた30MSは発送される気配が微塵もなくて買えていない。使えなさここに極まれり。

[プログラム] Editor.jsとVue.js

イベントサイトに機能追加をしようとした。

ページ編集のWYSIWYGエディタにeditor.jsてのを使ってるんだが、これの新しいプラグインを作りたい。 プラグインで新しいブロックを追加するのは以前もやってたんでそれと同じことをやればいいだけ。 しかし以前は素のDOM操作でせっせとUIを作っていたんだが、さすがにめんどくさすぎるのでライブラリを使いたい。 ということで新しいブロックのUIはVue.jsを使うことにした。いくらか使ったことあるし。

Editor.jsのブロック描画は、DOMの要素を一つ返せばそれを適切な位置に置いてくれるだけなのでVue.jsをぶちこむのも特に難しいこともなくできた。 ……と思ったんだが、操作していると思わぬところでエラーが出て止まってしまう。 夜中まで散々調べたんだがその日はわからんかった。で、後日なんとか解決できた。

現象としては入力フィールド内の文字列を消して空にすると、その後のDOM操作が入った時にnullに対してinsertBeforeしようとしたとかなんとかいうエラーが出てそれ以降ちゃんとVueが動かなくなってしまうというものだ。 入力フィールド内の文字列を少し消しても問題ないし、最初から空の入力フィールドがあっても問題ないが、文字列を全部消した場合だけダメ。複数の入力フィールドがある場合、その一つで消して空にするとそれ以降だめになった。

エラーメッセージで調べるといろいろそれっぽいのは出てくるが、一つピンと来たのは、他のライブラリとかでVueの管理外でDOM書き換えちゃだめよというやつ。そんなことやってないよーとは思ったものの、Editor.jsがなんかやってる可能性は否めない。 ひとまず作ったコンポーネントをEditor.js外で独立して動かしてみたところちゃんと動いてくれた。まあシンプルな作りだしこれが動かなきゃ困るけど、やっぱりEditor.jsとの相性が悪そうという切り分けはできた。

再現してるところでDOMの要素が減ったり増えたりしてないか見てみるが、少なくともVueの管理内の要素が増減してる雰囲気は見られないな。 一応Editor.jsが変なことしてないかDOMを見ていくが、Vue管理内の要素にまでいくつかイベントハンドラを追加しているのがわかった。 イベントハンドラ追加されたくらいでおかしくはならないと思うが、この中で何か余計なことやっていないか見ていくしかないな。

イベントハンドラからEditor.jsのソースを見ていくと、Enterキーを押した時とBackspaceキーを押した時になにやらやってるのがわかった。そのうちEnterキーの処理はブロックの設定で無効化できるし既にそうしている。じゃあBackspaceで何かやってんのか。試しに文字列消す時にDeleteキーで消してみたら症状は発生しなかった。まじか。

Backspaceでは、ブロック内が既に空だったらそのブロックを削除するというのを行っている。ブロックが空だったらというのは、ブロック内のDOMを全部辿ってみて末端ノードが全部空だったらブロックが空としているようなのだが、その走査をする前に正規化と称してNode.normalize()を呼んでいた。normalizeって何やんの、と調べると完全に空のノードを削除するみたいだ。え、なんでそんなことするの?判定するだけなのに破壊的に削除しちゃうの?だめでしょ。

その動作は外から抑制できないので、とりあえずEditor.jsに渡すUIのルート要素のnormalizeを上書きして何もしないように置き換えたら無事動いた。わーお、解決。 つまりバックスペースで文字列を空にした時に、バックスペースで文字列を削除する → バックスペースを押された時のイベントハンドラでブロックが空か判定される → 空判定する時にnormalizeが呼ばれる → 空になってたテキストノードが削除される → Vue.jsが知ってるVirtualDOMとずれるのでおしまい、ということだろう。 開発者ツールで見てても変わったように見えなかったのは空文字列が入ってたテキストノードが消されただけなので見える変化にならなかったんじゃないだろうか。

normalizeを無効にするのは特に困らなさそうだしこれでいいか。他にnormalizeやってるところがないか探したけど、たぶん関係なさそうなところで使われてるだけだったので大丈夫そうだ。 いやー判定するためだけに破壊的に変更するのは勘弁してほしいな。我ながらよくこんなの解決できたもんだ。

あとはせっせと中身作り込むだけ。途中まで出来てたのもあってさほど難しいことはなく出来たけど(バインディングの更新タイミングでちょっと悩んだ)、編集したものを表示する側はまたRubyで別に書くからめんどくさいのよな。 Editor.jsは最近ReadOnlyモードというのが追加されててこれを使えば編集時と同じに表示できるはずなんだけど、最近の機能なんでこれ前提にするのは大変だからやってねえ。いつかは考えよう。

[模型] リキテックスのバーニッシュを試す

プラモのトップコートとしてリキテックスのハイグロスバーニッシュを検討してる話を以前書いたが、サテンバーニッシュ(半光沢)とパーマネントマットバーニッシュ(つや消し)も買っていくらか使ってみた。 サテンは40ml入りが売っていたがパーマネントマットバーニッシュは120ml入りしかなかったのでちょっとでかいがそれにした。しかしこれレビューはいっぱいあってもみんな模型の関節の渋み調節にしか使ってないので本来の用途については全く参考にならない。

使った感じとしてはハイグロスと同じく十分使えそうな雰囲気。 マットは結構しっとりとした質感で、例のごとく塗った直後は白っぽくなってしまうんだが乾くとあまり白っぽくならずに落ち着いた感じになった。 色パールの上につや消しをかけてみたらなかなか高級感がある。 サテンもまあ同じような感じで安っぽさはなく落ち着いてくれる。

乾燥は速いので20~30分もすれば軽く触れるようになるが、さすがにちょっと力かけるのは躊躇われる感じ。組み上げるのはもうちょっと置いた方がいいかもしんない。と思いつつやっちゃうんだが。 あと厚めに吹いたせいもあってかやはり可動部はいくらか削れてしまう。まあこればっかりは仕方なく、本来はちゃんと十分時間置いてから組むべきだろう。

プロスプレーで吹いてみたんだが、めちゃくちゃすぐ詰まるのでやはり向いてなさそうだ。普通のハンドピース(0.5mm)ではそこまで詰まるわけでもないので相性悪いのだろう。 ファレホのメカカラーバーニッシュだとプロスプレーでもそこまで詰まらずに吹けた気がするので、乾燥が速いのが影響してそうだ。アクリジョンも詰まりまくって使えないと判断したし。 ノズル内部でちょっと固まっちゃった時にニードルもないから押し出されることもないし、空気の向きもノズルの向きと違うので上手く吹き飛んでくれないんだろうな。溶剤でもそう簡単に溶けねえし。

あとで思いついたがファレホのフローインプルーバー買ってたんだった。これ入れたら詰まりづらくなるかなあ。乾くのに時間かかっちゃうだろうか。と、試したところ確実に詰まりづらくなった。乾くのは少し時間かかるっぽいけどそこまで大きな違いはなさそう?アクリジョンの筆用の薄め液でもいいのかもしれない。

0.2Mpaくらいで吹いてたが、少なくともサテンとマットは薄めずに原液では濃すぎるようだ。0.5mmのハンドピースでは吹けはしたが若干糸を吹いてしまった。リキテックスなので薄め液は水なんだけど、水で薄めて弾いちゃったら嫌だなあと思ってアクリジョンのエアブラシ用薄め液を入れてみたが無事吹けた。まあ特に問題なさそうに見えるしこれでいいか。 粘度は高いくらいなのでちょっと薄めても垂れずに一気に厚めに吹けるのも良い。

ハイグロスバーニッシュは別途ちょっと吹いてみたが弾かれるような形になりやすい。表面張力が強いから光沢が出やすいのかな?厚く吹けば回避できるけど原液でも柔らかいので垂れやすいのでちょっと難しい。ハイグロスじゃなくてグロスの方が使いやすいかもしんない。持ってないから知らんけど。

ハイグロスは試しにちょっと使っただけなのでちゃんと評価できたのはサテンとマットだが、2体程塗ってみた感じでは悪くないんじゃないでしょうか。 つや消しもスムースで綺麗だし、ちゃんと時間おけば十分固くなる。乾燥が速めとはいえすぐ組むと関節周りで削れちゃったりするのはやっぱ仕方ないかな。 1時間ほど置けばそこそこ安心して組める程度には乾くんだけど、すぐ組みたい時に1時間はどうだろうなあ。 ファレホのメカカラーバーニッシュだと1時間ではまだ不安が残る感じだったのでそれに比べれば十分早いんだが。

今のところはもうしばらくリキテックスのバーニッシュを使ってみようか。


ページのトップへ | トップ «前の日記(2021-08-17) 最新 | 編集 | kumaryu.net by kumaryu