@ikeji pinfとか(グローバル変数、てか定数)の話は、いろいろか考えた挙げ句に
「何度も同じ数値(無限大とかNaNとか)を作るのはさすがに無駄じゃね?」
となって、BigDecimalから勝手にそう変えたんだよね。
それをあとから、現BDメンテナのむらけんさんから「あーFlyweightパターンだよね」と一言で説明されて、なるほど、共通語彙って便利だなーと身に染みました。
というエピソードも思い出した。今なら遅延して作りたい。
Notices by 斎藤ただし (tadd@best-friends.chat), page 9
-
斎藤ただし (tadd@best-friends.chat)'s status on Tuesday, 29-Aug-2023 12:59:37 JST 斎藤ただし -
斎藤ただし (tadd@best-friends.chat)'s status on Tuesday, 29-Aug-2023 09:31:12 JST 斎藤ただし @ikeji いやちがうか、うん、あってる気がしてきた。だめぽ……
-
斎藤ただし (tadd@best-friends.chat)'s status on Tuesday, 29-Aug-2023 09:31:12 JST 斎藤ただし @ikeji えーそうだっけ?と思ってRHGと過去の自分を読み返してたけど、やっぱ違う気がする。
後者はグローバル変数用?
https://github.com/tadd/decimal/blob/master/decimal.c#L146そしていまは、さらに何も分からん。
-
斎藤ただし (tadd@best-friends.chat)'s status on Tuesday, 29-Aug-2023 01:10:09 JST 斎藤ただし @ikeji どう違うのかすら思い出せなくてひ弱すぎる自分。
In conversation from best-friends.chat permalink -
斎藤ただし (tadd@best-friends.chat)'s status on Tuesday, 29-Aug-2023 01:01:42 JST 斎藤ただし @ikeji なるっほど、なんか聞いたことある気がして調べたらruby/gc.cにはあった。いや気のせいかもしれない。
とりあえず全人類に分かりやすいところで、rb_gc_markする、としておこう。
In conversation from best-friends.chat permalink -
斎藤ただし (tadd@best-friends.chat)'s status on Tuesday, 29-Aug-2023 00:31:21 JST 斎藤ただし @ikeji ピンはなんとなく分かる、了解。「マーク」でいい気もするけど、M&Sじゃない時に使うとおかしい話になるんだっけ。もしかしたら「ピン」のほうがいい言葉なのかも。
In conversation from best-friends.chat permalink -
斎藤ただし (tadd@best-friends.chat)'s status on Tuesday, 29-Aug-2023 00:18:19 JST 斎藤ただし @ikeji なるほど。ごめん、だいぶスタックが巻き戻るかも。
いけじが昔「リーク」と書いたのは、isConnectedの方でGCじゃない、であってるかな。つながってないのに意図せず参照しているのが残る場合はリークと言われる(そして実際困りそう)、という。そこに自分は、前者がfalseならGCされてしまう、けどその代わりに「リーク」が防げる小技として、WeakRefが使えないかな?と思ったのが昨日の投稿(前話してたメモリリークとDOMのイベントやつなんだけどさ……)、でした。
が、ここまでですら俺が誤解している気がしてきた。
In conversation from best-friends.chat permalink -
斎藤ただし (tadd@best-friends.chat)'s status on Tuesday, 29-Aug-2023 00:10:55 JST 斎藤ただし @ikeji なんだかやっぱり、これが関係する気がしないでもない https://dl.acm.org/doi/10.1145/3591244
In conversation from best-friends.chat permalink Attachments
-
斎藤ただし (tadd@best-friends.chat)'s status on Tuesday, 29-Aug-2023 00:03:44 JST 斎藤ただし @ikeji うーむむ、なるほど、そっか。
自分が想像できてたのは、リスナ内でのノードのisConnectedが、true→falseに遷移してノードは無意味になる、ってケースだけだったのが分かってきた。true→false→trueもあるか。新しく自分で作ったのはfalse→trueになるでしょ、というのは分かるんだけど、それはtrue→falseの遷移がないから区別できるような気が薄っすらとしていた。ここも間違ってるかも。
In conversation from best-friends.chat permalink -
斎藤ただし (tadd@best-friends.chat)'s status on Monday, 28-Aug-2023 23:49:06 JST 斎藤ただし @ikeji ほう、なるほど、深淵が近づいてきた音がする…….。
自分が書いた「画面上のtextareaとは関係しない状態になる」までは真だけど、それ以後は分からん、という話かな?In conversation from best-friends.chat permalink -
斎藤ただし (tadd@best-friends.chat)'s status on Monday, 28-Aug-2023 23:46:11 JST 斎藤ただし @ikeji 「GCされる」はこれだよね。ごめん、自分が混乱してたっぽいな……ボタンと勘違いしてたんだけど、textareaがGCされちゃう話だった。
自分の話とは関係なく(ノードがなくならない前提)、ということで、どのあたりまで合ってるか聞きたい。
そのtextareaノードがもしisConnectedでなくなったら、画面上のtextareaとは関係しない状態になるし、画面上にあるテキストはもはやセーブされない。
けどオブジェクトとしては生きてるから、実行時エラーにはならない。
という理解をしてるんだけど、ここまでは合ってるだろうか。In conversation from best-friends.chat permalink -
斎藤ただし (tadd@best-friends.chat)'s status on Monday, 28-Aug-2023 23:42:05 JST 斎藤ただし @ikeji うんうん、これは了解。別の方でツリー見間違ってたかもすまん、見直す
In conversation from best-friends.chat permalink -
斎藤ただし (tadd@best-friends.chat)'s status on Monday, 28-Aug-2023 23:32:58 JST 斎藤ただし @ikeji おー合ってた、よかったサンクス。その辺を自分が分かってなかったのが、一番足りてなかったんだと思う。
In conversation from best-friends.chat permalink -
斎藤ただし (tadd@best-friends.chat)'s status on Monday, 28-Aug-2023 23:32:20 JST 斎藤ただし @ikeji あとすまぬ、Rubyの方はまったく知らない……。
In conversation from best-friends.chat permalink -
斎藤ただし (tadd@best-friends.chat)'s status on Monday, 28-Aug-2023 23:32:19 JST 斎藤ただし @ikeji というか、あれだな。「GCされる」っていう意味も多義的だしあやふやだよね。
RubyでもJSでも、ユーザーが使うつもりで参照してるオブジェクトがいきなりなくなったら(それこそWeakRefみたいな特殊な例を除けば)単に処理系のバグだよね。自分は今は、それは気にしてなくて、いけじもそうなんじゃないかと思ってる。
で、JSのDOMに関してもそうだけど、documentにつながってたノードが勝手に繋がらなくなって、結果おかしくなる、って話だと思う。これをいけじは「GCされる」と表現してる、であってる?In conversation from social.076.moe permalink -
斎藤ただし (tadd@best-friends.chat)'s status on Monday, 28-Aug-2023 23:30:56 JST 斎藤ただし @ikeji なるほど、何となく分かってきた。textareaがもはやdocumentにつながってないとしてもclicked相当を処理する意味があるし、他にもそういう場合があるよ、ってことであってるかな?
In conversation from best-friends.chat permalink -
斎藤ただし (tadd@best-friends.chat)'s status on Monday, 28-Aug-2023 23:22:50 JST 斎藤ただし @ikeji あと後半は分かるんだけど、それは
```
let foo = weakRef.deref();
if (foo)
doSomething(foo);
```
という話?だとするとたしかに、だいぶ話が違ってきそう。自分は いけじが、 `if (weakRef.deref()) doSomething(weakRef.deref());` というのを短縮して書いた、んだと思っていた。
In conversation from best-friends.chat permalink -
斎藤ただし (tadd@best-friends.chat)'s status on Monday, 28-Aug-2023 23:21:40 JST 斎藤ただし @ikeji えっと、こないだ書いた?.とか。
In conversation from best-friends.chat permalink -
斎藤ただし (tadd@best-friends.chat)'s status on Monday, 28-Aug-2023 23:14:11 JST 斎藤ただし @ikeji うむ、なので空になっても困らないコードに自動変換する(のはできないのかな)、という話をしているつもりだった。うまく伝わってなくて申し訳ない。
あとは、今のJSだと空になることはない、も分かってないや。WeakRefオブジェクト自体がundefinedにならないのは分かるんだけど、derefした後の保証はないんじゃないかって思ってた。In conversation from best-friends.chat permalink -
斎藤ただし (tadd@best-friends.chat)'s status on Monday, 28-Aug-2023 12:37:01 JST 斎藤ただし @ikeji なるほどーねー、具体例助かりますく。
WeakRefってderefしなくちゃいけないのか、Proxyみたいな透過的なもんだと勘違いしてた……(というくらいの初心者です)で、考えてたのは、自動挿入以外の変換とか検査とかも含めて静的になんかできないかなー、だった。
そのコードでやりたいこと、何になるんだろうなー。素人で分からなさすぎる。
もし死んでたらほっとけばいい、なら、?.でもNullオブジェクト(総受け)でも、どうにでもできそうだけど、どうなんだろう?In conversation from best-friends.chat permalink