36.9℃
Misseyこんな機能あるんだ(元ポスト https://social.mikutter.hachune.net/@osa_k/112089112819611695 )
ルートビアはBarq'sがうまい https://www.coca-cola.com/us/en/brands/barq-s
そもそも自転車は常に二段階右折をしなければならない、なるほど…… https://www.keishicho.metro.tokyo.lg.jp/kotsu/jikoboshi/bicycle/menu/rule.html#:~:text=%E5%8F%B3%E6%8A%98%E3%81%AE%E6%96%B9%E6%B3%95
重い本が少なくとも5冊は積まれてるはずだけど、引っ越しのタイミングで既読管理が壊れたのでどれを積んでるのか分からなくなった
Goは書いてあることがそのまま実行されて、それで後から読む人が不安にならないことに特化した言語だからね
ていうかRecursive Typeで怒られるのはそもそもGoで普通に型名を書くと(参照ではなく)実体としてメモリ確保されるからであって、Genericsは関係ないのでは?Cでもそういう再帰的な型は作れないし、作りたいならポインタを使って間接参照させる必要がある
1.18以前はinterfaceの中に単独で書ける型名はinterfaceのみで、それはembedded interfaceとして扱われていたけど、Genericsのサポートのためにinterfaceじゃない型名を書いたときの意味が全部定義されたらしい。力技すぎて草 https://go.dev/ref/spec#General_interfaces
Union Typeを使って「値を見てみるまでどっちの型か分からない」状態だと変数の型を見て分岐する処理が必要になる(もし必要ないならinterfaceにくくればよい)が、Goはランタイムに型を見る能力が乏しく、特にUnion Typeの制約を意識したmatch節のような物を書く手段がないから、結局フィールドの宣言でGenericsのtype constraintを書いても無意味ってことなのかな
Type parameterを導入することで「型名だけすげ替えた構造体を定義するテンプレートがほしい」というありがちな要件に対応しながら、match節はサポートしないという意思決定によって抽象化はあくまで振る舞いによってなされるものであり(i.e. interface{}の持つメソッド)、型そのものではないという立場を維持してるのかな
型に対するmatchが書けないということは帰納法が書けないということだから、型パズルをやるのはだいぶ厳しそう
文字列リテラルのprefixで何かが起きるみたいなやつ、知らないと何が起きてるか調べられない(検索できない)ので学習するのがきつい
知ってる人にすべて聞けるならいいけど、自習してて s"${foo}" みたいなのが出てきて自力で解決するの無理じゃない?って話です
このアカウントは、notestockで公開設定になっていません。
printfのフォーマット指定子が分かりづらいのはそうとして、でもリテラルの特殊構文と違ってprintfのドキュメント見ればいいんだなっていうのはすぐ分かるから……
GTK3のドキュメントもよく分からんしRuby-GNOMEのドキュメントもほとんど何も書いてないのですべてが闇の中。適当に検索するとC++バインディングのドキュメントが引っかかるのでそれ見ながらmikutterいじってた気がする
member initializer listって聞いて思い浮かべてたやつはlist-initializationだった。C++なんもわからん
https://en.cppreference.com/w/cpp/language/constructor
https://en.cppreference.com/w/cpp/language/list_initialization
C++のコンストラクタでFoo() : name("miku"), age(17) {} みたいに書くのがmember initializer list、vector<int> v{1, 2, 3}; みたいに書けるのがlist-initialization
Gtk.TreeViewのTreeってツリーメニューのことだと思ってたけど、もしかして配列の代わりに赤黒木で要素を管理してるからTreeViewなのか!
https://gitlab.gnome.org/GNOME/gtk/-/blob/gtk-3-24/gtk/gtktreeview.c?ref_type=heads#L14117
高速に動くvisible_rangeみたいな関数を作りたかったら要素を赤黒木みたいなやつで管理するしかないよなーと思ってソース見てみたらそのまんまで笑った
いや赤黒木は単純にこういうrange queryに高速に答えるために管理してるだけっぽいな(それはそれとしてモデルはTreeModelとして木構造になってる)
理由はよくわからんが、赤黒木を使ってrange queryの高速化をしてるウィジェットがTreeViewしか存在しておらず、むしろこっちのほうが例外っぽい
これ先頭へスクロールするアニメーションのコードにしか見えないんだけど、なんでスクロールロックになってるんだ? https://dev.mikutter.hachune.net/projects/mikutter/repository/main/revisions/e807e8103ed978c7c2a2aabb318655650003aeda/diff/core/mui/cairo_timeline.rb
なんもしないと挿入した要素の高さ分だけTreeViewが自動的にスクロールして、表示されてる内容が変わらないようになってるってことかな
昔の記憶がまったくないんだけど
> 追加された message がTL表示領域外であっても subparts 高さの演算が走っている?
https://dev.mikutter.hachune.net/issues/1528
ってGTK3以前からそういうもんじゃなかったっけ……
@teobot Netlifyに/a.htmlというファイルを置くと/aでもアクセスできてしまうみたいなんだけど、この機能を切る方法ってない?
@teobot これほんと?X-Content-Type-Optionsってブラウザにしか効かなくない?
このアカウントは、notestockで公開設定になっていません。
CPython 3.11以降はコードの単純化のためにIEEE754が必須になったらしい? https://stackoverflow.com/a/70189136