00:02:42

IEEE754自体に依存してると言うより、プラットフォームがNaNをサポートしてないとPython側で吸収しないといけないのがつらいという話っぽい github.com/python/cpython/comm

bpo-46656: Remove Py_NO_NAN macro (GH-31160) · python/cpython@1b2611e
00:44:49

構造体をnewしてコンストラクタで初期化するみたいな気持ちは理解するのに結構時間がかかった記憶がある

00:48:29

thisはレシーバが渡される暗黙の変数ですって言えば済むことなのに、2000年頃の教本は(今もかもしれんが)そういう説明がまったくなかった

00:50:24

最近の若者はPythonとかRustとか書いてるから自然にまあそういうもんでしょってなるのかな

01:03:05

たぬきち起きとんのかワレ

01:04:11

ふぇのまーさんにmikutter Discordの管理者権限付与してから寝て

01:06:04

寝込んでたんか お大事にワレ

01:06:14

@toshi_a rootロール付いてるよ

01:57:18

<script>window.alert("てお")</script>

01:58:24

Mastodonのポストってどのレベルでサニタイズされてるんだろ

02:03:27

<font size=1000>Mastodonのポストが投稿時点でサニタイズされてるのか、それとも表示時点なのかいまいち分かってない</font>

02:08:11

Mastodon API叩いてる限りはエンドユーザはsanitizedなHTMLしか見ないと思ってよさそう docs.joinmastodon.org/api/guid

02:13:09

Mastodonから普通にポストすると<br>とか書いても<br>って見えるからまずここでエスケープが走っていそう(つまりMastodonからはHTMLを通常の手段では配信できない)

02:14:11

やっぱり自分でAP実装作ってertona.netに危険HTMLをぶちこまないと……

02:21:35

トゥルーエンド見てないの

02:22:34

とはいえトゥルー覚えてないな……

02:25:02

アオイチャン4mってマジ?

02:30:17

フィリスが立派な錬金術士になってエルトナに帰ってきただけでもうトゥルーエンドだよ

02:30:19
2024-03-18 02:29:31 お尻めうbotの投稿 meu_bot@otogamer.me

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

02:31:43

エルトナ(意味深)ってなんやねん

02:32:56

エルトナは鉱山の村かしばふのサーバの2択しかない

11:13:43

まいにゅーぎあ

11:34:43

どこか行きたいけど宛てがない

16:06:14

@choro3 行きたい

16:48:55

労働もカスだよ

17:09:10

そろそろ労働について真面目に考えないといけない

17:10:18

人生もな

17:12:45

週3労働よりも週5で3ヶ月働いて1ヶ月休みみたいなパターンの方がいいのでは?と思ってきた

17:17:55

importしたものをprefixなしで使われるとIDEの支援なしに追うのがかなり困難になるのでやめてほしい

17:23:19

そういう点でGoのimportはかなり偉いんだよな。必ずnamespace付きじゃないと参照できないし、importしただけでコードが走って副作用を及ぼすこともない。Rustも後者が微妙だけどそこそこ良い

17:29:00

Goはgo fmtがカラム揃えを強制してくることといい、コードは書く時間より読まれる時間の方が圧倒的に長いんだから読みやすさに振るのが正義という強い思想を感じる

17:34:44

大抵型はトップレベルに展開されるので、import自体に型推論含めてなんの副作用もない言語の方が珍しいとは思う。JS / TSはnamespace強制なのは素晴らしいのに副作用のせいでimportの順序すら自動で並び替えできないのが……

17:35:26

実際importの順序シャッフルしたら壊れるコードがどれくらいあるんだろうという話ではあるが

18:32:55

Rustで
struct A { i: i32 }

fn main() {
let mut a = A { i: 0 };
let ptr = &mut a as *mut A;

let ai = &a.i;
unsafe {
(*ptr).i = 10;
}

print!("{} {}", a.i, ai);
}
とするとリリースビルドでも10 10が出力されるんだけど、Rustはimmutable borrowを証拠にした参照の最適化はしないと思っていいのかな(ナイーブにはaiがimmutable borrowであることを利用して*aiを0に置き換えるような最適化が起きてもおかしくない気がする)

18:34:46

unsafeがどれくらいunsafeなのか知りたいんだけどそういうことを書いてあるドキュメントが見つからない

18:39:26

unsoundなのはいいとしてその帰結がどうなるのか分からん。unsoundなコードはどう壊れても文句を言えない?

18:41:27

というかコード全体で&mutは1つしか存在してないと思うんだけど

18:44:10

あと&mutを2つ以上生やすだけでおかしくなるならThe bookの例もダメということになりそう doc.rust-lang.org/book/ch19-01

18:47:56
2024-03-18 18:44:23 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red

原則として、 unsafe ブロックは「コンパイラには検査できない書き方をするが、ブロック内でコードが満たすべき性質を破らないことを開発者が保証する」というものなので、 unsafe ブロック内に入れようが駄目なものは駄目

18:50:06

「コードが満たすべき性質」がなんなのかが分からん。split_at_mutはunsafeを使わないと書けないパターンなので、これが安全であるなら「コンパイラが通す型」!=「コードが満たすべき性質」のはずだけど、じゃあ具体的に何を満たしていればよくて何をviolateしちゃいけないのか

18:57:14

このケースだとこれかな

> Moreover, the bytes pointed to by a shared reference, including transitively through other references (both shared and mutable) and Boxes, are immutable; transitivity includes those references stored in fields of compound types.
doc.rust-lang.org/reference/be

Behavior considered undefined - The Rust Reference
19:02:19

split_at_mutの第一引数は&mut [i32]だけどこれでr食われるの?

19:06:41

あーーーーなるほど

19:25:35

@qnighy なるほど一理ある……。時間があったら読んでみます。とはいえ本当にやりたいのはView typesがないことによるエラーの迂回なのでそっちが一段落してからにします

19:39:51

こういうのがコンパイル通らないの本当に困ってるんだけど、Gameをimmutableな部分とmutableな部分に分割して常にバラバラに持ち運ぶしかないのかな……
struct Game {
players: Vec<i32>,
score: i32
}

fn add_score(game: &mut Game, player: i32) {
game.score += player;
}

fn play_turn(game: &mut Game) {
for player in game.players.iter() {
add_score(game, *player)
}
}

19:43:42

関連があるデータの意味でstructに入れた瞬間にmutabilityに関しても運命共同体になるのがとても厳しい

19:45:37

タプルにすらできない強く関連した2つの変数をあちこちに引き回さないといけないの、かなり気持ち悪くない?

19:51:08

皮膚日光浴

19:52:18

東京脱出しな

19:52:38

ECS is 何

19:53:30
ECS (Entity Component System)について
19:59:42

ナイーブにやるとComponent poolがさっきのGameになって同種の競合が発生しそうな気がするけど大丈夫なんかな

20:01:45

結局状態更新の時にimmutableに触られるものとmutableに触られるものをComponentで切り分けることにはなるが、Entityを通した間接参照の形でグループ化できるからちょっとはマシくらいか

20:03:49

これって要するにメモリアロケータを作ってるのでは?まあガチのゲーム開発なら必要だけど……

20:29:04

特にゲームとして考えると、インクリメンタルに状態を更新するよりも「現在の状態」をimmutableに固定したままで「次の状態」を別のバッファに書き出すようにしたほうが、処理順の違いで結果が変わるみたいな現象が発生しづらくていいという面があるのでmutableな状態を特に分離して持っておく設計は妥当な気もしてきた

20:36:05

アトリエやったことない人におすすめするなら今はライザ一択なんだよな

20:37:37

ライザ1は良くも悪くも王道RPGの作りなのでかなりとっつきやすいし面白いですよ

20:39:15

ライザは分岐ないよ

20:43:49

フルート攻撃

20:46:08

アニメのクラウディアが弓使いになってたの許してないよ

20:47:58

ライザと冒険に出たい!ってなってから弓の練習し始めておいお前……まさか……ってなった

20:54:33

やっぱりフルートで戦うのはどうあがいても狂人だからな

21:00:52

盗賊を殴り殺すロロナ
銃弾を握り締めて殴るくーちゃん
フルートを投げるクラウディア

21:36:28

生産緑茶とは

21:38:02

クソコラ生産マシンと化したとしぁ

21:39:19

smhnユーザは弾いてなかったっけ

21:47:35

今日なんもできてない

21:53:59

チケットあるんですか

21:55:26

なんか回線が不安定でsshが安定しない

21:57:40

ていうか今ちゃんとmikutterが動く環境が……

22:28:07

@teobot Rustでn要素の0からなるVecを作る方法を教えて