シャワーあびてたら突然仕事の解法閃いた
ボンクラプログラマー
頭とお腹が弱い。
最近は個人鯖の @shibafu528 がメインです。
⚠️ CW設定のない下品な発言が非常に多いです。これは仕様ですのでご了承下さい。
ℹ️ spam対策でフォロー承認制にしています。上の一文が構わないという方ならお気軽にどうぞ。
FINAL FANTASY XIV 関連の著作物は
(C) SQUARE ENIX CO., LTD. All Rights Reserved.
シャワーあびてる間にvalgrindかましてFloraRPC動かしといたんだけど、possibly lost: 2,567,238,900 bytes in 2,685 blocks とかいう愉快な出力出てわろてますよ
possibly lost: 99,124 bytes in 1,862 blocks
よし勝ったわ
1回分の大きな通信を実行した後のメモリ消費が修正前後で変わらなかったので、さて何でだろうともうちょっと調べたところ、どうも俺が勘違いして呼び出していたのは完全なコピー操作ではなくて、ライブラリ内での参照カウントインクリメントだったっぽいな。
本来はコピーコンストラクタおよび代入演算子で適切に処理されてるところ、何かのエッジケース用なのか用意されてる手動実行用関数叩いちゃってたんだよな
これ同じことやってた気がするなぁと思いながらgrepかけてたら、やっぱり受信バッファだけじゃなくて送信バッファもおもらしてらーよ
FloraRPCのリポジトリのsubmoduleで入れてるvcpkgめっちゃ古かったので大変なことになっていた
opensslをvendoringするのだいぶよくないと思うんだけど、まあ、都合です
vcpkgは実質的にWinとMac用に使ってる、それでもあんまり道理が通るとは思えんがな…
やっぱりシャニの女は楽器だったか
シャニマスの音が出るドラムの作り方 - ニコニコ動画
https://www.nicovideo.jp/watch/sm38116573
@toshi_a -Aってauto-correct-allか。たぶんマージがだるくなるけど、deferredは既におかしいので仕切りなおしたほうがいいかもしれん
ストリーミングの場合総量はやばくなることがあるけど、一度に操作できないと困る単位はたかが知れているので、MapViewOfFileでウィンドウをマップする戦法は有効
#FloraRPC v0.1.10 をリリースしました。
全ての送受信データがメモリリークしていた深刻なバグが直りました。すごいよね、どうしてこんなことに…
現代、大量のメモリを積んでいるしElectronベースのやつに比べたら起動時点のフットプリントが小さいので、多少連続稼動しても大した消費じゃないのが気づけなかったポイントっぽい
@toshi_a (fork属性ついてるダウンストリームにPRってできるんだっけ…)
やるきだそうと思ったがbundle installを叩いたところで尽きてしまった
This account is not set to public on notestock.
はてなブログに投稿しました #はてなブログ
掲示板を立てた - あっきぃ日誌
https://akkiesoft.hatenablog.jp/entry/20210123/1611391818
CGI掲示板置いて使う時代、俺CGIが何なのかどう使うのか分からなくてホームページサービスに付随してた掲示板借りてたな。
あっきぃのブログを読みながら、FTPクライアントのテキストモードなつかし〜〜〜wwちゅってる
CMake自体Makefileを作るのだから、適切にRubyに関する情報とインストール先の情報を引き継げれば正当はなず
……いや、gemspecのextensions、こいつCMakeFiles直接食えるやん!
spec.extensions = %w[ext/cplugin_impl/CMakeLists.txt]
みたいなこと書いて、こんなCMakeLists.txtを置けばbundle installできた
gtk plugin消すとMastodon pluginがロードできなくなって色々書き換えないといかんのがだるい
/core/boot/mainloop.rb:13:in `stop': No live threads left. Deadlock? (fatal)
rb_gc_register_address/rb_gc_unregister_addressで制御できるのかな
このメインループ処理、mikutterがまだGtk.mainを使えると思ってた頃のやつから引っぱってきたので、現在のDelayerの時限処理に対応できない気がする
不思議なことに保留イベントの存在を確認する手段が無い。タイムアウト付きでイベントループに潜ることはできる。
Plugin::CPlugin.enqueueはQTimerを0秒でキューするだけのC関数
あ、これ結局のところRuby-GNOMEを使わず任意の言語・任意のGUIツールキットでmikutterのガワ書けるかの検証です
しかしなガワを真面目に書くにはgui pluginのアーキテクチャを完全理解してる必要がある
結局のところPluggaloid eventを適切にハンドルし、発信できるかが全てなので、それさえできる道具であれば適用可能
Pluggaloidがリモートイベント発行できるようになれば、C-extension以外のアプローチが安全に取れると思うので何卒
QApplication::exec()実行するとき、たぶんrb_protectしたほうがいいんだろうな…
C++だとテンプレートでPlugin.callのラッパーが楽勝で作れるの生産性たかいな
GUIをRuby以外で書くことの可能性はGUI不毛の地の制約に縛られないことだけど、難点は開発が面倒になり、パッケージングが面倒になり、git勢が血を見ることになる
RubyはJSONとHTMLを書き出すためにしか使われてないのでGUIアプリが書けない
なんかdeveloper.twitter.comのアプリ管理画面デザインかわったな
しばらくMacにひきこもってたので久々にmikutter起動したら、Twitterが見えてSobaChaが凍ってた
C拡張を使うプラグイン、自分自身がCソースを用意してるのが珍しいだけで、利用自体はずっとやってるよなという当たり前を思い出した
GUIツールキット適当にググって、日本語が打てるかという評価軸が入ってるのを見てアッ!!!!!!!!!!!になったよね