23:44:56 @orange_in_space@mstdn.nere9.help
2021-01-29 23:44:05 宮原太聖(まち)の投稿 TaiseiMiyahara@matitodon.com
icon

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

23:40:33 @orange_in_space@mstdn.nere9.help
icon

商用トラックドライバーの連続運転時間管理も超厳しかったり、アメリカってこういうところがちゃんとあれでいい感じかも><

23:39:26 @orange_in_space@mstdn.nere9.help
2021-01-29 23:35:45 宮原太聖(まち)の投稿 TaiseiMiyahara@matitodon.com
icon

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

23:39:13 @orange_in_space@mstdn.nere9.help
2021-01-29 23:22:56 宮原太聖(まち)の投稿 TaiseiMiyahara@matitodon.com
icon

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

23:39:05 @orange_in_space@mstdn.nere9.help
2021-01-29 23:04:01 宮原太聖(まち)の投稿 TaiseiMiyahara@matitodon.com
icon

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

13:43:12 @orange_in_space@mstdn.nere9.help
icon

動物だいたい柿食べに来る><

13:40:56 @orange_in_space@mstdn.nere9.help
icon

タヌキも昔は普通にいたのに何年も前の大雪か台風かどっちか忘れたけど天候荒れた時以来きっかり全く見かけなくなった・・・・><

13:37:14 @orange_in_space@mstdn.nere9.help
icon

アライグマは子アライグマならだっこできそうなレベルに警戒心弱いけど><;
子アライグマが来たときにだっこしなかったのすごく後悔してる><;(駆除されまくってこなくなった><;)

13:34:49 @orange_in_space@mstdn.nere9.help
icon

ググったらハクビシンって警戒心強いっぽいけど、タヌキ並み(=見るのも難しい)に警戒心あるのかな?><;

13:20:30 @orange_in_space@mstdn.nere9.help
icon

移動したのか寝たのかわかんないけど、ハクビシン(たぶん)の足音しなくなった><

13:04:26 @orange_in_space@mstdn.nere9.help
icon

混乱><

13:03:20 @orange_in_space@mstdn.nere9.help
icon

断続的に音がずっとしてるって事は一匹じゃなく親子で子ハクビシンが遊んでるとかなのかな?><;

12:52:13 @orange_in_space@mstdn.nere9.help
icon

ハクビシン、飼っちゃダメで追い出したければ業者呼べで費用は自己負担?><;

12:47:15 @orange_in_space@mstdn.nere9.help
icon

ハクビシンはペットとして飼える?飼育の許可・申請、入手方法 | ハクビシン駆除プラス hakubishin-kujyo.jp/hakubishin

"埼玉県の場合、ハクビシンを含む狩猟対象の動物をペットにするために捕獲することは禁止されています。"

・・・・・><

Web site image
ハクビシンはペットとして飼える?飼育の許可・申請、入手方法
12:43:43 @orange_in_space@mstdn.nere9.help
icon

天井引っ掻いて怖がらせてコミュニケーション(?)はとれたけど、どうせ住むならペットになってほしさ><;
そもそもハクビシンかどうかもわかんないけど><; でもネズミよりははるかに大きい動物の足音><
(1ヵ月くらい前?からオレンジの家の別の部屋の天井から音がしてて家族の人がハクビシンかも?って言ってた状況><)

12:38:28 @orange_in_space@mstdn.nere9.help
icon

天井裏にハクビシンかなにかが居る・・・・><;

11:53:31 @orange_in_space@mstdn.nere9.help
icon

・・・><
首都高速道路 一部出入り口廃止へ 地下化工事の本格化に伴い | NHKニュース www3.nhk.or.jp/news/html/20210

11:39:10 @orange_in_space@mstdn.nere9.help
icon

2000年辺りにWindows9xマシンでUSB無いやつそんなに残ってたっけって謎><;
(当時のUSBって今ほど安定してなくて、相性で動いたり動かなかったりって問題はあった記憶はあるけど><)

11:36:25 @orange_in_space@mstdn.nere9.help
icon

2000年3月20日発売のMSAC-US1っていうソニー純正USB接続メモリースティックリーダライタが希望小売価格7,800円だったらしい・・・><

11:23:41 @orange_in_space@mstdn.nere9.help
icon

USB接続のFDDでは使用できませんってわざわざ書くって事は、USBある程度普及してる時期じゃん?><;
素直にUSB接続のアダプタ使う方が当時でも安かったんでは?><;

11:21:42 @orange_in_space@mstdn.nere9.help
icon

今考えると意味不明なものってだけじゃなく、時期を考えると当時でもかなり意味不明なものだったんじゃないの?><; って気が・・・><;

11:16:50 @orange_in_space@mstdn.nere9.help
icon

アダプタの電池残量も取得してるっぽい><

MVC-FD87:取扱説明書 - 取扱説明書ダウンロード | サポート・お問い合わせ | ソニー sony.jp/ServiceArea/impdf/manu

取扱説明書ダウンロード | サポート・お問い合わせ | ソニー
11:12:17 @orange_in_space@mstdn.nere9.help
icon

News and Information "MVC-FD87,MVC-FD92,MVC-FD97" sony.jp/CorporateCruise/Press/

"...また、『MVC-FD87』は別売メモリースティック用フロッピーディスクアダプター『MSAC-FD2MA』を使用することで“メモリースティック”への画像記録が可能です。大容量記録を実現します。"

大容量って事は、アダプタ対応のマビカも厳密なエミュレーションじゃなくアクセスするっぽさ?><

News and Information "MVC-FD87,MVC-FD92,MVC-FD97"
11:09:36 @orange_in_space@mstdn.nere9.help
icon

2001年02月09日 ASCII.jp:ソニー、FDに記録するデジカメ『FD Mavica』3機種を発売 ascii.jp/elem/000/000/320/3206

Web site image
ソニー、FDに記録するデジカメ『FD Mavica』3機種を発売
11:05:34 @orange_in_space@mstdn.nere9.help
icon

Sony Japan | MSAC-FD2MA/FD2M 取扱説明書 | メモリーカード メモリースティック™ | サポート sony.co.jp/Products/memorycard

Sony Japan | MSAC-FD2MA/FD2M 取扱説明書 | メモリーカード メモリースティック™ | サポート
11:05:00 @orange_in_space@mstdn.nere9.help
icon

説明書読んだ感じだと、厳密にエミュレーションしてるわけじゃなく専用ドライバ経由で送受信してるだけっぽい・・・?><

11:03:45 @orange_in_space@mstdn.nere9.help
2021-01-29 10:57:19 おさの投稿 osapon@mstdn.nere9.help
icon

フロッピーより容量の大きいメディアをフロッピーのフリしてごまかすの、セクタ数とかトラック数を偽ってドライブ側に通知すればいけるものなんだろうか。いやシリコンメディアでもHDDとかと同じか。FDDのインターフェイスがそれに対応できるかどうか。

10:57:26 @orange_in_space@mstdn.nere9.help
icon

微妙に関係ないけど、NASA TVで初めてISSからの映像で遅延数十秒程度で関東平野を見れた時に「ほんとに関東平野ってこういう形してたんだ!><」って納得(?)できた><
録画とか写真だと信じないとかではないけど、なんかこう・・・><

10:49:30 @orange_in_space@mstdn.nere9.help
icon

シュレーディンガーの円盤><(雑すぎるボケ)

10:48:49 @orange_in_space@mstdn.nere9.help
2021-01-29 10:46:58 おさの投稿 osapon@mstdn.nere9.help
icon

ハードドライブのガワが硬いのは触って分かるけど、ディスクが硬いかどうかは実際に分解して見たことが無いので分からない。

10:47:15 @orange_in_space@mstdn.nere9.help
icon

うん><;

10:45:49 @orange_in_space@mstdn.nere9.help
icon

英語ネイティブな人にとってはハードディスクって略語の方は違和感がある語感(?)なのかな?><;

10:44:22 @orange_in_space@mstdn.nere9.help
icon

HDDの英語圏での略称がハードドライブなの・・・・謎><(語彙力)

10:21:27 @orange_in_space@mstdn.nere9.help
icon

ソースネクスト製品お値段がビックリだけど、例えばゲーム用メモリクリーナーって21世紀の今でも一目瞭然に効果がある(ので自分でつくって自分で使ってる)けど、まともなGUIつけたシェアウェアにしたら1000円以上でも買う人それなりにいるのかな?><;(ソースネクスト製品を買いそうな層とゲームやってる人ってなんかイメージ一致しないけど><;)

10:07:44 @orange_in_space@mstdn.nere9.help
icon

今もあるのか・・・><;

パソコン高速化ソフト 驚速 for Windows 10|ソースネクスト sourcenext.com/product/pc/sok/

Web site image
驚速 for Windows 10|パソコンソフト:パソコン高速化|ソースネクスト
10:06:45 @orange_in_space@mstdn.nere9.help
2021-01-29 10:04:34 おさの投稿 osapon@mstdn.nere9.help
icon

驚速SSD、ソースネクストがなぜ?とか一瞬思ってしまった。

10:06:41 @orange_in_space@mstdn.nere9.help
2021-01-29 10:03:22 まちカドおるみん御嬢様の投稿 orumin@mstdn.maud.io
icon

PS5のすごいSoC、驚速SSDや3D音響を盛り込みながらコスト削減 | 日経クロステック(xTECH) xtech.nikkei.com/atcl/nxt/colu

Web site image
PS5のすごいSoC、驚速SSDや3D音響を盛り込みながらコスト削減
10:05:23 @orange_in_space@mstdn.nere9.help
icon

分数の計算の宿題がやりたくなさすぎて、分数専用計算機アプリを即興で自作したくらい数学苦手><;

10:03:02 @orange_in_space@mstdn.nere9.help
icon

宿題は不正してるじゃんかという><;

10:02:05 @orange_in_space@mstdn.nere9.help
><;
icon

オレンジは激怒した。必ず、かの研究不正を正さねばならぬと決意した。オレンジには統計学がわからぬ。オレンジは、数学の落ちこぼれである。PCをいじり、数学の宿題をPC任せにして回避して来た。けれども研究不正に対しては、人一倍に敏感であった。

09:54:46 @orange_in_space@mstdn.nere9.help
icon

なんとか細胞問題の時は、世間で大騒ぎになる前に賢い人に教えてもらったけど数学なんもわからんでも理解できる話だったので「なるほど!><」ってなった><(?)

09:51:12 @orange_in_space@mstdn.nere9.help
icon

論文読む時、統計の部分は「(なに言ってるんだかなんもわからん><;)」ので読み飛ばして「(査読つきの論文らしいしたぶん不正はないんでしょ知らんけど><;)」なのでこういうの全く気づけないかも><;

1人の人間が論文の不正を暴こうとしたとき何が起こったのか? - GIGAZINE gigazine.net/news/20210129-rep

Web site image
1人の人間が論文の不正を暴こうとしたとき何が起こったのか?
08:04:23 @orange_in_space@mstdn.nere9.help
2021-01-29 08:03:55 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

どちらかと言うと主に主張したかったのは「アカン事態においては容赦なくクラッシュさせろ」ですが、まあ「アカン事態」の伝播を抑制できるようなモジュール化が可能ならそうした方が良いというのは一般論として間違ってはいない

08:02:54 @orange_in_space@mstdn.nere9.help
2021-01-29 08:02:13 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

(まあ要所要所の言葉とか概念の共有は全然できてなかった気がするけど……こればかりは言語とかランタイムとかの前提を共通化しないとこれ以上の説明が難しそうではある)

08:02:44 @orange_in_space@mstdn.nere9.help
2021-01-29 08:01:04 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

まあとりあえず途中で思っていたほど考えが大きく離れているわけではないようで安心した (さすがに本気でわかりあえない話題かと思った)

08:02:29 @orange_in_space@mstdn.nere9.help
icon

まとめると「いざとなったらクラッシュさせることができてその影響が広範囲に及ばないように、処理はきれいに適切に分割して書こうね!><;」
って事かも?><;

08:00:41 @orange_in_space@mstdn.nere9.help
2021-01-29 08:00:00 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

Rust で panic するときも諸々のデストラクタは一応実行されるので。
(デストラクタが勝手に実行されるとマズい場合はそれ用の機能があるので型レベルでそれを使う)

07:59:54 @orange_in_space@mstdn.nere9.help
icon

・・・・・><;

07:59:46 @orange_in_space@mstdn.nere9.help
2021-01-29 07:59:26 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

いやクラッシュは文脈の中断であって OS レベルでの即座の実行終了を意味してないんですって

07:58:45 @orange_in_space@mstdn.nere9.help
icon

でも、スレッドの内部でもダメっぽいとなったら順々に出来る限りの処理ができるように多重な構造になってるし、出来そうな終了処理は必ず試行するように書いてる><
全く待たずにいきなりスレッドごとkillする事はまず無いかも><

07:56:01 @orange_in_space@mstdn.nere9.help
2021-01-29 07:53:33 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

そんなんプロセスかスレッドかの違い、ほとんど同じじゃないですか (メモリ空間を共有してるくらいで) (もっとも、共有されたメモリ空間が汚染されていないことを保証してくださいという話にはなるけど)

07:55:04 @orange_in_space@mstdn.nere9.help
icon

既存のフレームワークを利用しないで書く太古の(?)GUIも(というか最低限のGUIフレームワーク自作みたいな感じの時も)、わりとそういう風に書くのが普通かも?><(じゃないと操作不能になりやすいし><)

07:53:04 @orange_in_space@mstdn.nere9.help
2021-01-29 07:47:37 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

フレームワークがないだけでシステムプログラミングだのベアメタルだのミッションクリティカルだの言われるのは納得いかないけど、とりあえず GUI 環境が特殊であるというのは確かっぽい

07:52:59 @orange_in_space@mstdn.nere9.help
2021-01-29 07:46:57 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

GUI フレームワーク内とかいう環境が超特殊で癖があるだけだと思いました

07:52:39 @orange_in_space@mstdn.nere9.help
icon

なのでプロセス内でも、スレッドもだけど構造自体適切に分割してって・・・・><;

07:51:19 @orange_in_space@mstdn.nere9.help
2021-01-29 07:46:35 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

まるごと破棄可能な単位を用意して独立した文脈で実行するの、実質サブプロセスと同じじゃないですかそんなの。

実際 OS の GUI システムとプロセスがメッセージパッシングなり何なりで「通信」することで動作しているわけで。

07:45:06 @orange_in_space@mstdn.nere9.help
icon

場合にはよるけど、そうかも><;

07:44:38 @orange_in_space@mstdn.nere9.help
2021-01-29 07:41:59 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

結局不整合をまるごと破棄できるプロセスという単位を再度抽象化した存在としてスレッドを利用しているだけに見える

07:44:31 @orange_in_space@mstdn.nere9.help
2021-01-29 07:41:29 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

それ「スレッドをクラッシュさせてる」んじゃないんですか……?

07:43:51 @orange_in_space@mstdn.nere9.help
icon

ダメもとでもリソース解放する処理を実行するか?とかの話をとりあえず横においておくと、
つまりGUIアプリとそれ以外のアプリ(?)では、よほどの事がない限り実行を続けなければならないとされる部分の内包度?が違うってことになるのかも?><;

07:40:31 @orange_in_space@mstdn.nere9.help
2021-01-29 07:36:33 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

そもそも GUI アプリケーションは暗黙に動くレイヤーがあるので前提の共有が面倒すぎる……

07:39:45 @orange_in_space@mstdn.nere9.help
icon

うん><;
あと、そもそも少なくともWindowsの場合は実際の処理はよほど軽量で単純なもの以外はGUIスレッドで動かすのはお行儀悪いって事になってるし、(古典的な実装では)場合によっては処理するスレッド作り直しかも><;

07:36:44 @orange_in_space@mstdn.nere9.help
2021-01-29 07:36:01 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

それ結局コアのロジックはちゃんと殺してるってことじゃないですか

07:35:15 @orange_in_space@mstdn.nere9.help
icon

ファイル読み込んだら問題なく使えたって話も、ちゃんと内部で初期化するように作ってるので(というか一旦破棄して作り直すので)、再起動した時とほぼ変わらず動かせるって事かも><

07:32:51 @orange_in_space@mstdn.nere9.help
icon

オレンジのアプリの書き方だとそれが内部で分割されてて、アプリ単位よりも部分ごとに止められるってだけかも><
「その部分(/アプリ)はバグってるんだから実行しない方がいい」って意味なら、アプリ終了(またはクラッシュ)させたあともう一回実行するのも同じでしょ?><

07:29:29 @orange_in_space@mstdn.nere9.help
2021-01-29 07:28:57 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

私は「OS によるプロセス実行を即座にやめさせろ」と言っているのではなく「汚染されたおそれのある実行文脈を破棄しろ」と言っているわけで、文脈が破棄されたあとメッセージを表示して終了するくらいの遺言は普通にあるべきだと思います

07:29:10 @orange_in_space@mstdn.nere9.help
2021-01-29 07:27:40 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

「ダメだった」と伝えたあとユーザに何も通常の操作を許さず終了するなら、実質クラッシュじゃないですか?
CLI プログラムのクラッシュだって abort 前にメッセージを表示しますよ

07:24:53 @orange_in_space@mstdn.nere9.help
icon

いや、無事だって主張してるんじゃなくアプリは終了せずに処理は中止して「ダメだった!><」ってユーザーに伝えてるんだけど・・・><

07:23:37 @orange_in_space@mstdn.nere9.help
2021-01-29 07:19:05 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

何が起きたかもわからないのに「俺は無事です」と主張するプログラム、普通に信用できないんですが……

07:23:18 @orange_in_space@mstdn.nere9.help
icon

それはよくわからないけど、GUIを持つアプリはGUIが全く操作不能になることだけは絶対に避けなければならない(最悪でもいかなるときにも終了ボタンは機能しなければならない)って発想で作ってた><(GUIアプリをCとかで書くのが辺り前だった頃の古い本ならわりと近いことが書いてあったかも><)

07:18:52 @orange_in_space@mstdn.nere9.help
2021-01-29 06:59:57 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

そういえば Win 9x でブルースクリーンから復帰できるやつを思い出した (もちろん復帰してもファイルの保存などはできない)

あれ復帰する意味あるか?????

07:17:46 @orange_in_space@mstdn.nere9.help
icon

よくわからないけど、受けとることすら不可能だったら外側で例外が最終的なキャッチ(ポケモンキャッチ?)されて「なんだかよくわからないけどこの機能はダメっぽい>< 出来る限りの終了処理はしてみた><(その状況のデバッグ用データ)」みたいな感じになるかも><
でもアプリは終了させない><(実用的な処理はなにもしてないけど生きていてGUIは使用できる><)
ように作るようにしてる><

07:12:51 @orange_in_space@mstdn.nere9.help
2021-01-29 07:12:11 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

mstdn.nere9.help/@orange_in_sp

> 関門の向こうから受け取ったものが「ダメっぽい><」となったら

これ「ダメっぽいデータが来ることを想定している」ので「想定」の範疇じゃないですか、想定していない状況の話ではないですよね……

Web site image
orange (@orange_in_space@mstdn.nere9.help)
07:10:11 @orange_in_space@mstdn.nere9.help
icon

想定していない状況というか、想定していない状況が起きるかもしれないので、関門の向こうから受け取ったものが「ダメっぽい><」となったら「これこういう風にダメっぽい><」ってデバッグ情報話して、「ダメっぽいので出来ない><」ってエラーだす><
でも、アプリは終了させない><
そのために内部データ形式に「これぶっ壊れてるフラグ」をつけたり、壊れてるときにはアクセスしてはいけない部分にアクセスすると例外吐くようにしてる><
で、扱う側はチェックしたり例外受け取って「この処理出来ないっぽい><」ってなる><
でもアプリは終了させない><

07:04:21 @orange_in_space@mstdn.nere9.help
2021-01-29 07:03:04 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

想定していない状態が発生したということは、プログラムを書くときに開発者が置いた前提と実世界が食い違っていたということで、それって既に「間違った前提で書いたコードが見掛け上正しく動いてるだけ」ですよ

07:02:21 @orange_in_space@mstdn.nere9.help
icon

デバッグ実行してるから><;

07:02:05 @orange_in_space@mstdn.nere9.help
2021-01-29 07:00:58 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

なんで既に仕様通りに動いていないプログラムを見て「や、でも終了処理とリソース解放だけはちゃんと行われているはずだ!」と信用できるんですか……

07:01:45 @orange_in_space@mstdn.nere9.help
icon

発狂してる部分とそこから影響受ける部分の機能は、ちゃんと機能せずに止まるかも><
それと無関係の部分が生きてるだけで><

06:59:57 @orange_in_space@mstdn.nere9.help
2021-01-29 06:57:57 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

「正常ですという顔をして裏では発狂していて、ユーザの想定しない悪行を為している」とか絶対許さないマンですよ私は!

06:59:44 @orange_in_space@mstdn.nere9.help
icon

いや、でも、終了処理はきちんと行われるし、メモリリークとかリソース解放の失敗とかは基本的に起きないよ?><;

06:57:51 @orange_in_space@mstdn.nere9.help
2021-01-29 06:57:25 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

なんだよ根本から噛み合ってねえじゃねえか!!!w

06:57:46 @orange_in_space@mstdn.nere9.help
2021-01-29 06:57:18 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

それ、まさしく私が許したくない状態ですが……

06:56:48 @orange_in_space@mstdn.nere9.help
icon

文脈難しいけど、オレンジが書くアプリだとたまになる現象っぽい気がしなくもないかも?><;
アプリ自体はクラッシュしないでエラーメッセージは出るけど、その後、アプリの実用上なにも出来ない状態になったり><;
(アプリの正常終了とか、場合によってはファイルの保存だけ出来たり、逆に保存すら出来ないけど新たなファイルを読み込むと何事もなかったように正常動作するとか><;)

06:52:00 @orange_in_space@mstdn.nere9.help
2021-01-29 06:51:29 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

で、「一部の (意味ある) 値の参照が許されなくなったけど続行してね!」というのは通常不可能なので、文脈そのものを破棄するというデフォルトは合理的でもあるわけです。
そうしないオプションが提供されているとしても、デフォルトでは文脈の破棄になるのは妥当。

06:51:55 @orange_in_space@mstdn.nere9.help
2021-01-29 06:50:17 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

「文脈を巻き込まず一部のデータだけパージすればええやん」というのはまあ理屈の上では正しいんですが、実用性は微妙だと思うんですよね。
そもそもプログラムが動作するうえで、ふつう参照する値の全てには意味があるので (意味のない参照なら消せよとなる)。
「一部の値は参照すら許されない状態になったけど続行してね!」とかかなり過酷で不自然な状況で、これを正しく実装するのって通常のエラー処理どころではないコストがかかりますよ

06:48:13 @orange_in_space@mstdn.nere9.help
2021-01-29 06:47:11 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

必ずしもそれだけの問題ではなく、たとえばポインタと型情報であるとか、配列とインデックスであるとか、そういう「組み合わせてはじめて整合性が定義される」ようなものはよくある (というか整合性はそもそも複数のデータの集合について規定されるのが普通) ので、インデックスの計算でトチって配列を変更しなかったとか、インデックスは正しく算出できたけど配列の作成でトチったとか、そういう状況ではやっぱり「汚染」は伝播している

06:44:42 @orange_in_space@mstdn.nere9.help
icon

よくわかんなくなってきたけど、だからこそ副作用をなるべく無くすように書くとかそういう話があれかも?><

06:43:27 @orange_in_space@mstdn.nere9.help
2021-01-29 06:39:19 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

で、デフォルトで汚染されていると想定する連鎖が最終的にどこまで広がるかというと実行の文脈全体なので、だからこそ「起きえないことが起きたら文脈を破棄しろ」という話になっている

06:43:20 @orange_in_space@mstdn.nere9.help
2021-01-29 06:38:26 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

や、まあ特定のスナップショットについては当然これは可能なんですけど、改変される可能性のあるプログラムについてこのようにブラックリスト形式で汚染を排除していくのはデザインとして正しくないと感じます。
特定の汚染が特定の場所に伝播しないという保証があるなら、安全側に倒してデフォルトで汚染されていると想定するべき。

06:43:04 @orange_in_space@mstdn.nere9.help
2021-01-29 06:37:11 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

はい、適切に分割してください。

ただ、その「汚染範囲を小さくする」を誰が行うかの話で、「この変数は、こことここと、この部分に影響してます!」とかいうオプトインな列挙方式でうまく汚染を隔離できると思うなよという思想の話ですね

06:35:01 @orange_in_space@mstdn.nere9.help
icon

よくわかんないけど、それでいうところの汚染範囲がなるべく小さくなるようにも同一プロセス内であってもなるべく適切に分割すべきかもかも><

06:32:37 @orange_in_space@mstdn.nere9.help
2021-01-29 06:28:15 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

それでも、「起きえないことが起きた」ときプログラムは最善の努力として「自分が悪影響を及ぼした範囲を更地にすることで『うっかり汚染された領域に踏み込む』ことを阻止する」責任があると考えているけど

06:32:32 @orange_in_space@mstdn.nere9.help
2021-01-29 06:26:56 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

不整合や仕様外動作に汚染された領域を破棄する手段として通常は文脈の破棄しか用意されていないという話と、仕様外動作を仕様に含んでいるかのように振る舞うことは根本的におかしいというデザインの話が混ざっていたか

06:30:51 @orange_in_space@mstdn.nere9.help
icon

ついでに言うと、モノリシックカーネル vs マイクロカーネル論争でも、マイクロカーネルが好き><;(ハイブリッドも可)

06:29:12 @orange_in_space@mstdn.nere9.help
icon

信用する範囲がプロセスあるいはアプリケーション全体で一枚岩構造だと、プロセスごとコケさせるかアプリケーションごとコケさせるしかなくなるので、それをモノリシック的って言葉で説明しようとした><;

06:27:06 @orange_in_space@mstdn.nere9.help
2021-01-29 06:25:15 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

もちろんプロセスより細かく分割することもできて、その場合何か起きたら Result<_, _> なりで実行時エラーとして通知することになるんですが、それって「信用していない」ということなので、信用していないコードのクラッシュに巻き込まれるべきであるという話はしてないです…… (やっぱり「クラッシュ」という言葉がアカン気がしてきた)

06:26:17 @orange_in_space@mstdn.nere9.help
icon

オレンジの説明が下手すぎただけなのか、だんだんやっと意図が通じ始めてる気がする><;

06:24:47 @orange_in_space@mstdn.nere9.help
2021-01-29 06:23:30 そすうぽよ :poyo: :sabakan:の投稿 prime@mstdn.poyo.me
icon

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

06:24:41 @orange_in_space@mstdn.nere9.help
2021-01-29 06:22:24 そすうぽよ :poyo: :sabakan:の投稿 prime@mstdn.poyo.me
icon

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

06:24:00 @orange_in_space@mstdn.nere9.help
icon

だとしたらオレンジがいうようにプロセス単位だけじゃなくさらに適切に分割していってって話とも矛盾しないかも><

06:22:35 @orange_in_space@mstdn.nere9.help
2021-01-29 06:20:11 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

「クラッシュ」という言い方が悪かったのかな。「実行文脈の破棄」と正確に表現すべきだったかもしれない (最も自然な選択としてクラッシュではあるけど)

06:22:25 @orange_in_space@mstdn.nere9.help
2021-01-29 06:19:28 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

そのオブジェクトの整合性が保たれているという条件が、そのオブジェクトを使う側の整合性条件に含まれていないのならば、そうです。

06:22:01 @orange_in_space@mstdn.nere9.help
icon

オレンジが言いたいことにかなり近い気がする><

06:21:21 @orange_in_space@mstdn.nere9.help
2021-01-29 06:19:23 Ryuseiの投稿 mandel59@pleroma.ryusei.dev
icon

まあ今の技術上は、整合性の境界としてプロセスを考えるのが自然だからプロセス単位でクラッシュさせてるわけだけど

06:21:19 @orange_in_space@mstdn.nere9.help
2021-01-29 06:18:09 Ryuseiの投稿 mandel59@pleroma.ryusei.dev
icon

整合性がオブジェクトで閉じてるなら、オブジェクトレベルでクラッシュして、他のオブジェクトにクラッシュが波及しないみたいな仕組みでもいいわけじゃん?

06:21:16 @orange_in_space@mstdn.nere9.help
2021-01-29 06:17:17 Ryuseiの投稿 mandel59@pleroma.ryusei.dev
icon

その論法が認められるなら例外キャッチして復帰してもよくない? みたいにならない?

06:21:11 @orange_in_space@mstdn.nere9.help
2021-01-29 06:15:48 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

mastodon.cardina1.red/@lo48576

それについてはこれなので……

Web site image
らりお・ザ・何らかの🈗然㊌ソムリエ (@lo48576@mastodon.cardina1.red)
06:18:22 @orange_in_space@mstdn.nere9.help
icon

非常用のシステムはダメもとで多重化させるものかも><

06:17:24 @orange_in_space@mstdn.nere9.help
2021-01-29 06:13:29 kb10uyの投稿 kb10uy@mstdn.maud.io
icon

ファイルの処理で行くと、例えばファイルを開いてる途中に JVM が狂ってしまったとして、コード側ではどこかが狂ったということはわかっても JVM が、というのがわかるとは限らないし、そんな状況だったら finally 節が実行されるかも怪しいですよ

06:14:43 @orange_in_space@mstdn.nere9.help
icon

さっきのこれも、つまりファイル開いていようがなんだろうが、とりあえずまるごと止めればいいというのであれば、計算機ごとシャットダウンさせればいいんじゃね?>< 一部のファイルが壊れたりファイルシステムごと壊れたりするかもしれないけど、って言いたい><
mstdn.nere9.help/@orange_in_sp

Web site image
orange (@orange_in_space@mstdn.nere9.help)
06:08:20 @orange_in_space@mstdn.nere9.help
icon

わりとさっぱりわからないけど、オレンジ以外の人はfinally節にファイル閉じたりリソース解放する処理を書かないのかも?><
そんなわけ無いでしょ?><

06:04:22 @orange_in_space@mstdn.nere9.help
icon

例えばファイルを扱う処理であれば、言うまでもなく途中で何らかの理由不明な問題が起きたらとりあえずファイルを閉じるだけはする処理は書くかも><
ていうかそれ否定したら例外方式の環境のfinally節は何のためにあるんだよって事になるかも><

06:01:11 @orange_in_space@mstdn.nere9.help
2021-01-29 06:00:36 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

その「理由は不明ながら」が既に破綻していて、そんなものを書けること自体がデザインとしておかしくないですか?

05:59:20 @orange_in_space@mstdn.nere9.help
icon

想定された種類の例外であればそれに対処する処理を書くべきだし、それ以外の例外であれば「理由は不明ながらもその部分は使用できなかった場合」の処理を書くべきかも><

05:56:56 @orange_in_space@mstdn.nere9.help
2021-01-29 05:56:11 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

例外は「想定されたエラー (明示的に throw されるもの)」と「本当に誰も想定していなかったエラー (意図せぬ場所から propagate されてきたもの)」が混ざるので、失敗や不整合の表現としてはあまり優れた手段ではないという感覚がある

05:54:26 @orange_in_space@mstdn.nere9.help
icon

例外じゃない方式のシステムではどうなってるのか知れないけど、例外方式のシステムではそのために例外があるんでは?><
で、疑う部分には例外の処理するかも><
処理した上で上に伝えるのであれば更なる例外投げたりかも>< 何もせずに呼び出し元にそのまま例外素通りさせるんじゃなく><

05:50:43 @orange_in_space@mstdn.nere9.help
2021-01-29 05:49:04 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

プロセスという概念で誤解を与えた気はしてきた。
orange 氏の言う適切に失敗を表現する境界を与えろというのはその通りで、でもそれって単に「自分ではない他人が狂っていました」をハンドリングする手段でしかないですよね。
私が死ねと言っているのは「私自身が狂っていることが判明しました」の場合です。

そんで、依存先モジュールが「私自身が狂ってました」と自己申告してきたときユーザがその影響から隔離される手段はちゃんと存在していると考えてください

05:48:41 @orange_in_space@mstdn.nere9.help
icon

内部の分け方が不適切だからプロセス単位になっちゃってるんでしょ?>< って言ってる><
それをどうにか伝えようとモノリシックって言葉使った><

05:46:30 @orange_in_space@mstdn.nere9.help
icon

全行全命令で検知できるようにとは言っていない><
内部を適切に分割していけば、その分割単位ごとにその部分がコケた時の対処ができるでしょ?>< って言いたい><
なんで一ヶ所コケた時にプロセス単位でしか考えないのか?>< って言ってる><

05:42:18 @orange_in_space@mstdn.nere9.help
2021-01-29 05:39:33 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

mstdn.nere9.help/@orange_in_sp

この「仕様が破られたことが検知できたのでエラーを返す」という仕様は、つまり潜在的に「あらゆる関数は実装ミス由来の挙動まで想定して戻り値型を返せ」という話ですよね。
もっと言えば、いかなる関数も Result<RealReturnType, ImplementationBug> 型を返せという。

Web site image
orange (@orange_in_space@mstdn.nere9.help)
05:33:32 @orange_in_space@mstdn.nere9.help
icon

で、仕様が破られた事が検知できたんでしょ?><
だったらクラッシュさせずにユーザーへのエラー表示も含めた出来る限りの終了処理をすべきでは?><

05:30:57 @orange_in_space@mstdn.nere9.help
2021-01-29 05:30:05 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

アプリケーションは「画像化するモジュールが仕様通り動作する」を仕様としており、画像化するモジュールは「内部のデータ構造が有向非巡回グラフである」を仕様としており、その仕様が破られたなら、アプリケーション全体としても仕様違反じゃないですか?

05:28:44 @orange_in_space@mstdn.nere9.help
icon

それで言うと中止すべきなのは画像化する処理(のためのデータを扱う処理)であってアプリケーションそのものでは無いでしょ?><

05:26:54 @orange_in_space@mstdn.nere9.help
2021-01-29 05:23:41 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

mstdn.nere9.help/@orange_in_sp

これは「不整合の漏出を防げ」案件 (<mastodon.cardina1.red/@lo48576>) で、アプリケーションの内部的な不整合が OS の不整合にならないなら OS はクラッシュする必要がない。

たとえばアプリケーションが画像化しようとしていた有向非巡回グラフだと思っていた構造が実は巡回していた場合、復帰や修正を試みずクラッシュするべき。
でも、その構造が有向非巡回グラフであることは OS にとっての invariant ではないので OS がクラッシュする必要はない。

一方、アプリケーションが利用しようとしていた低レベル機能、たとえばメモリまわりとかドライバまわりの機能の扱いで不整合を発生させてドライバが狂った状態になったとしたら、これ以上ドライバが狂った状態でハードウェアを駆動しないよう OS がドライバを殺すなり OS ごと死ぬなりするべき。

Web site image
orange (@orange_in_space@mstdn.nere9.help)
Web site image
らりお・ザ・何らかの🈗然㊌ソムリエ (@lo48576@mastodon.cardina1.red)
05:26:04 @orange_in_space@mstdn.nere9.help
icon

その例で言うと、狂ってるのは42に1を足す処理の部分か計算機そのもののどちらが狂ってるわけであろうから、その部分をスキップさせてエラーを通知して出来る限り穏便に済ませる処理を書くか、計算機をシャットダウンさせる処理を書くべきかも><
単位がアプリケーションというかプロセスって発想ってモノリシック的かも><

05:22:26 @orange_in_space@mstdn.nere9.help
2021-01-29 05:17:25 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

「狂っていると判断することに期待する」はたぶん捉え方が逆で、「狂っていないことを期待する場所で何かがおかしかったら全てを諦める」というのが私の考えに近い表現ですね。

let a = 42;
let b = a + 1;
assert!(a == 42);

みたいなのがあったとして、この assert で a が 43 になってたらエラーとして復帰したいですか?
私はそんなのナンセンスだと思うので a == 42 でなかったらさっさとクラッシュしてほしいです

05:19:56 @orange_in_space@mstdn.nere9.help
icon

アプリケーションが自らが狂ったと判断するときに、アプリケーションがその旨悲鳴をあげて主張することができて、それを検知したOSが即座に終了処理をせずに計算機をシャットダウンさせる事が可能なシステムで、シャットダウンさせるようにすべき って主張であればオレンジは納得するかも><
そんな環境使いたくないけど><

05:14:43 @orange_in_space@mstdn.nere9.help
icon

オレンジ的に言いたいのは、なんで狂人が自分が狂っていると判断することに期待するんだろうって事かも><
狂人かもしれない部分と狂人か判断する部分は別物(別人)であって、その部分が不明な理由で狂っていると判断することが想定可能なのであれば、その狂った部分を回避、例えばできる限り穏便に終了処理を試みるとか、その部分無しに復帰可能であれば復帰させる処理をすべきかも><

05:08:49 @orange_in_space@mstdn.nere9.help
2021-01-29 05:05:57 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

信用のないプログラムなんて書けなくて、なぜなら信用しないコードが正しく動いているか検査するコード、その検査は本当に信用できますか……という終わりのない再帰が待ち受けているとか、コンパイラがバグってて不正なコードが吐かれるケースは実際あるけどどう対処するんですかとか、証明や型を付けたとして証明器や型検査が正しく動作しているとどう保証するんですかとか、そういう問題があるから。
そういうところのレイヤーには「ある程度の信用」なしには乗ることができない

05:08:43 @orange_in_space@mstdn.nere9.help
2021-01-29 05:03:32 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

「信用を裏切られたときのことを想定してエラーハンドリングを書くべきだ」というのは定義上ナンセンスで、それって「信用」してないだけじゃないですか。

05:08:31 @orange_in_space@mstdn.nere9.help
2021-01-29 05:03:06 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

実用的なプログラムは必ずそういう「そこは信用します」というレベルを程度の差こそあれ持っていて、「そこは信用しますレベル」は invariant がどれだけあるか、どれだけ強い条件かで決まってくる。
で、その信用を裏切られたときクラッシュ以外の行為に意味がない、という話です

05:07:15 @orange_in_space@mstdn.nere9.help
icon

成功したって事は成功したかも?><;
それで例えば"123"って文字列を投げて整数型の123じゃなく420とかが返ってきちゃったかどうか? って実行時には検査しないかも><
というか現実的にその整数型にパースするやつが実行時に狂ったかどうか調べるのは現実的じゃないかも><

05:03:14 @orange_in_space@mstdn.nere9.help
2021-01-29 05:01:50 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

その「内部を区切ってお互いを信用しない」はモジュール間連携の話で、それは確かに私も同意なんだけど、それをどこまでやるかという話ですよね。
たとえば文字列をパースして整数にする処理が成功した後に「や、ライブラリは『文字列を整数にできた』と報告してきたけど、本当にそれって正しいのか……?」と疑いますかと

04:58:56 @orange_in_space@mstdn.nere9.help
icon

ソフトウェアがモノリシック的かどうかって事になるんだと思う><
クラッシュさせるって事はある一部分に問題があった時に全体を信用しないって事になるかも>< なぜかアプリケーション単位(プロセス単位)で><
クラッシュさせない方の考え方は、内部を区切って行ってお互いを疑いまくり期待しないでおいて、頼んだ先がダメだったら出来る限りのこと、例えばファイルを閉じたり色々なリソースを解放したり、可能であればエラーダイアログを出したりエラーログを書き出したりとか、なるべく穏便な終了処理を試みるかも><

04:52:12 @orange_in_space@mstdn.nere9.help
2021-01-29 04:50:02 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

たとえばあなたは C++ 標準ライブラリのあらゆるバグを想定して検査をかけますかと。まあ普通はかけない。
何故検査をかけないかというと、ライブラリが仕様通りに動作すると暗黙に信用していて、かつライブラリが狂っているときは自分も狂っていることになるという一連托生状態を受け入れているから。

04:52:09 @orange_in_space@mstdn.nere9.help
2021-01-29 04:49:03 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

で、通常は依存ライブラリというのは自分並に信用しているので、依存ライブラリやモジュールが狂っているのは即ち自分が狂っているのと等価に扱うべき

04:52:04 @orange_in_space@mstdn.nere9.help
2021-01-29 04:48:26 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

で、狂人に「あなたは狂人ですか?」と尋ねるのは根本的に作りがおかしくて、『わたし』の側で「こいつ狂人じゃん!」と気付くのは常に『わたし』側で実装された処理の責任

04:51:58 @orange_in_space@mstdn.nere9.help
2021-01-29 04:47:33 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

blog.cardina1.red/2019/12/19/d

> つまり、プログラムが不整合状態になったとき、プログラムは全体として既に想定を満たさない状態で動いている可能性があり、その結果として発生する処理やデータも基本的に無意味である[6]。 その無意味な処理で無意味なデータを解釈して「復帰」しようとする行為も、当然無意味である。

04:51:54 @orange_in_space@mstdn.nere9.help
2021-01-29 04:46:19 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

他人が狂人だったらオメーが自衛しろ、自分が狂人かもしれなかったら死ね、と言っています (言葉が悪い)

04:44:18 @orange_in_space@mstdn.nere9.help
icon

微妙に納得いかない><;
狂人に「狂っているか?」と聞いてまともな返事が得られると期待すべきでは無いかも><
多重チェック出来るのであればすべきかも><
そこまでの手間をかけられるのであれば、あるセクションが(理由を問わず)実行不可能だった場合を想定するように書く手間を惜しむのは謎かも><

04:39:18 @orange_in_space@mstdn.nere9.help
2021-01-29 04:36:18 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

あと読もうとしているデータのスキーマ次第

04:39:15 @orange_in_space@mstdn.nere9.help
2021-01-29 04:35:44 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

見分けがつかない場合もあるでしょうし、あるいは正しく設計すればそもそもそんなことが起き得ない書き方もできるでしょうね。それは言語の表現力とユーザの設計次第。

04:38:25 @orange_in_space@mstdn.nere9.help
2021-01-29 04:34:33 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

blog.cardina1.red/2019/12/19/d

端的にはコレです

> * プログラムが完全に掌握しているはずのデータが誤っていれば、 panic せよ
> * プログラムのバグが原因なら、 panic せよ
> * 環境や外部データに問題があるなら Result を返すべし
> * エンドユーザに問題があるなら Result を返すべし
> * ありえないことが起きたなら panic せよ

04:32:47 @orange_in_space@mstdn.nere9.help
icon

検出可能かというかファイル内容の不整合と見分けがつくのかが謎かも・・・><

04:30:43 @orange_in_space@mstdn.nere9.help
2021-01-29 04:28:39 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

たとえばですが、
「jsonファイルがフィールド a と b を持っている」
という想定があったとして、「a や b がなかったり余計な c があったりするファイルを読んだ」は「想定可能なエラー」なんですよ。この場合クラッシュすべきでない。

で、じゃあどういう場合にクラッシュすべきかというと、
「json ファイルがフィールド a と b を持っていてそれを読んだのに、返すオブジェクトで a の値を設定し忘れた」とかそういう「デシリアライザが仕様違反を犯している場合」です。
この場合「デシリアライザが『こういうデータを読みますよ』と (仕様で暗黙に) 表明したデータ以外を返す」というのは仕様外動作なので、そこから復帰しようとすべきでない。

04:30:40 @orange_in_space@mstdn.nere9.help
2021-01-29 04:26:09 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

そうじゃない!!

04:30:37 @orange_in_space@mstdn.nere9.help
2021-01-29 04:25:43 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

ファイル等の読み込みの場面は、ファイルが正しいフォーマットである事に期待する事自体が危険だと思うかも・・・><

04:29:13 @orange_in_space@mstdn.nere9.help
icon

なんでファイル等の読み込みの場面でオレンジが神経質に考えるかというと、そこが型付けの場面で静的な型に収まっている世界と収まっていない世界の境界になるので、静的に型付けされていない側は徹底的に疑って期待しないかも><

04:25:43 @orange_in_space@mstdn.nere9.help
icon

ファイル等の読み込みの場面は、ファイルが正しいフォーマットである事に期待する事自体が危険だと思うかも・・・><

04:23:58 @orange_in_space@mstdn.nere9.help
2021-01-29 04:22:12 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

それは単に仕様の問題で、もちろん「実装のバグも仕様として想定されたエラーと見做す」という仕様にしてもいいんですよ、そのコストが本当に得られるものに釣り合うなら。

04:18:46 @orange_in_space@mstdn.nere9.help
icon

その処理を中止するのとアプリがクラッシュするのは全然違う事かも><(UNIX文化圏では同じになっちゃうのかもしれないけど)

04:16:18 @orange_in_space@mstdn.nere9.help
icon

オレンジ的には不整合を見つけた場合にはユーザーに知らせるべきではある一方でクラッシュするべきでは無いと考えるかも><
たぶんそのアプリの実行してる時間の差で意識が違うんだと思う><
CLI中心の人にとってはUNIX哲学の通りひとつの事しかさせないのでクラッシュ自体を重大とは捉えないかも><
GUI中心の発想や失敗したら人が死ぬ分野の発想では、クラッシュして止まること自体を重大に考えるので、クラッシュさせるのは最後の最後の手段と考えるかも><
(失敗したら人が死ぬ分野の場合は、なんらかの(例えば物理的な)更なるバックアップがない状況ではそもそもクラッシュさせるという選択肢はとらないかも><)

04:09:34 @orange_in_space@mstdn.nere9.help
2021-01-29 04:00:09 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

私が言いたいのは

* I/O エラーは想定可能であり、常に復帰や適切なエラーハンドリングを試みるべき
* 逆に内部的な不整合や実装自体の仕様違反を原因とする問題に気付いたら、速やかに明示的なクラッシュをするべき
* バグは「エラー」ではない
* 不注意や人間のキャパを越えたエラー仕様で例外をキャッチし損ねてクラッシュするのは言語仕様が駄目

あたりです

04:08:10 @orange_in_space@mstdn.nere9.help
2021-01-29 04:06:06 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

「エラーが値である Rust ではメソッドチェーンや通常の関数でエラーからの復帰を書けるのに対して、例外が戻り値型と別の存在になっている言語では構文レベルで特殊な扱いが必要になる」というエラーハンドリングの言語由来の複雑性の違いを例示したかったやつです

04:07:31 @orange_in_space@mstdn.nere9.help
2021-01-29 04:04:51 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

喩えが悪かった、それはそう……すまねえ

04:07:27 @orange_in_space@mstdn.nere9.help
2021-01-29 04:04:24 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

これ <mastodon.cardina1.red/@lo48576> のことを言ってるのなら、これはマジで単なる例で、 <mastodon.cardina1.red/@lo48576> と対比しただけです (I/O エラーを問答無用で無視する実装が正しいかは別の問題)

Web site image
らりお・ザ・何らかの🈗然㊌ソムリエ (@lo48576@mastodon.cardina1.red)
Web site image
らりお・ザ・何らかの🈗然㊌ソムリエ (@lo48576@mastodon.cardina1.red)
04:07:03 @orange_in_space@mstdn.nere9.help
2021-01-29 04:03:03 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

「ネットワーク越しに不正なデータが来た」は「予期した形式でないことを検出した」に入るべきで (つまり「不正なデータをロード時に検査するべき」を含意する)、その場合クラッシュするのはおかしい

04:06:50 @orange_in_space@mstdn.nere9.help
2021-01-29 04:02:00 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

これは単に語法の問題で、

「ローレベル I/O の失敗でクラッシュすべきでない」
「データを読もうとして予期した形式でないことを検出したときクラッシュすべきでない」
「デシリアライザが仕様と食い違うデータを正常だと認識して読んでしまうのはユーザに責任のない実装のバグであり、速やかにクラッシュすべき」

あたりです (全部両立する)

04:02:58 @orange_in_space@mstdn.nere9.help
icon

想定外の状況ではクラッシュするけどIO関連のエラーの場合にはサイレントにデフォルト値を読むって奇妙すぎる実装では?><
もし、例えば設定ファイルかなんかでファイルが作られていない状況のみを想定してるとしたら、しっかりあらかじめファイルの存在を確認すべきであるし、手抜きせず『設定ファイルが無い例外』を別に定義してそれを投げるべきでは?><

03:58:51 @orange_in_space@mstdn.nere9.help
icon

だとしたらIO由来のエラーでもクラッシュすべきでしょ?><

03:58:08 @orange_in_space@mstdn.nere9.help
2021-01-29 03:57:33 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

や、言い方が悪かったかもしれないけど私はクラッシュするべきでないとは最初から主張してないんです、過去こんな記事も書いたように……

Panic を恐れるべからず - 何とは言わない天然水飲みたさ
blog.cardina1.red/2019/12/19/d

03:58:01 @orange_in_space@mstdn.nere9.help
2021-01-29 03:56:52 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

それはユーザに責任のないバグで invariant の破壊なのでさっさとクラッシュするべき、むしろその場合は逆に復帰を試みるべきでない

03:54:46 @orange_in_space@mstdn.nere9.help
icon

そもそもload_fooが成功しちゃってなおかつ必要なデータがjsonファイルに記述されていなかった場合、または必要な項目が記述されていなかった場合に例外を吐くようにload_fooが書かれていた場合どうするのか謎><

03:49:31 @orange_in_space@mstdn.nere9.help
icon

例外握りつぶしまくり書けばよいと言いたいんじゃなく、もっとちゃんと安全優先に書く方がよくね?><
って言いたい><
mstdn.nere9.help/@orange_in_sp

Web site image
orange (@orange_in_space@mstdn.nere9.help)
03:43:31 @orange_in_space@mstdn.nere9.help
icon

jsonにあるデータを読みなおかつデフォルト値があるようなものであれば、ファイルシステムのエラーと、jsonとして読めるか?のエラーと、jsonの中のデータとアプリ側が想定する型等と不整合があるか無いか? の3つかも?><
その上で、読めなければ握りつぶしてデフォルト値で済ませられる程度のものであれば、例で言う所のjsonのファイル名渡してる関数にデフォルト値を渡したり、先にデフォルト値を書いておいてその関数内で例外全て握りつぶせばよくね?><

03:36:14 @orange_in_space@mstdn.nere9.help
2021-01-29 03:34:19 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

いやべつに low-level I/O error と invalid data を区別してもしなくてもいいんですが (それはエラー型の設計次第)、区別したところで catch すべき例外が2種類に増えるだけで話の本質にはあまり影響しないので

03:33:12 @orange_in_space@mstdn.nere9.help
icon

なんでIO関連のエラーとファイルの中身が想定外になっている事への対処がまぜこぜっぽい話になってるのか謎・・・><

03:30:04 @orange_in_space@mstdn.nere9.help
icon

オレンジが書く場合はまずデフォルト値で初期化してからそこに上書きでファイルから読んだ情報を書いていくようにするかも><

03:28:25 @orange_in_space@mstdn.nere9.help
2021-01-29 03:10:36 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

ここで

v = null;
if(auto w = load_foo("foo.json")) {
v = w;
} else {
v = default_foo();
}

みたいなのとか

v = null;
try {
v = load_foo("foo.json");
} catch (IoException e) {
v = Foo.default();
}

みたいな書き方をしないといけないの、そりゃプログラマが雑にエラーを扱おうとするのも致し方なしみたいな感じになってくるし、それって言語側が「正しいことを書きやすく、正しくないことを書きづらく」のデザインに失敗しているというだけの話なのではと

03:25:17 @orange_in_space@mstdn.nere9.help
icon

デコードしてしっかり型つけして読み込む(?)って話なのか、読み込み時のIOのエラーの話なのかさっぱりわからない・・・・><

03:20:31 @orange_in_space@mstdn.nere9.help
icon

逆にこういう風にしないで互換性どうやって保つのか謎><

03:19:07 @orange_in_space@mstdn.nere9.help
icon

そもそも、実行時に何らかのファイル等のデータをデコードする最中に記述されているデータの不整合を見つけた場面にでは、そのシステム標準の例外のシステム等を頼るべきでは無い気がする派><
期待しないというか、ファイルは壊れてて当たり前的な><

03:14:59 @orange_in_space@mstdn.nere9.help
icon

オレンジはデコーダというかパーサというか何らかのフォーマットな文字列でデータを読み書きするやつを作る時には、
既知の項目のはデコードするけど記述が無ければ無いとする(必ずあるとは期待しない)、未知の項目は読み飛ばして例外は出さず、未知のデータがあったという情報のみ残す(単にスルーの場合もある)、
ってしてるので実行時に例外だしてコケる事まず無いかも><

03:09:48 @orange_in_space@mstdn.nere9.help
2021-01-29 03:08:18 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

たとえば Rust で「load_foo("foo.json") が失敗したらデフォルトの値とする」とかだと

load_foo("foo.json").unwrap_or(Default::default)

みたいな感じでごく普通のメソッド呼び出しで済むので、例外が伝播されるとか catch すると実行が分岐して代入文が2つに増えるとかそういうのがないんですよね。欲しい挙動を書くだけという……

03:08:08 @orange_in_space@mstdn.nere9.help
icon

・・・><;

02:58:41 @orange_in_space@mstdn.nere9.help
icon

ほのぼの動物ニュース><(バランス><;)

"食事中に突然フリーズ ムササビくんに何があった?(2021年1月28日)" を YouTube で見る youtu.be/wduRsozqj0I

Attach YouTube
02:53:43 @orange_in_space@mstdn.nere9.help
icon

><;
って書いたつもりが多重投稿になって弾かれたっぽさ><;

02:51:18 @orange_in_space@mstdn.nere9.help
icon

文字列でどうにかするのはアレなので・・・って内容かと思って読んだ><;(英語力ヤバイ><;)

02:49:48 @orange_in_space@mstdn.nere9.help
icon

oh><;

02:49:09 @orange_in_space@mstdn.nere9.help
2021-01-29 02:47:12 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

stringly typed, 文字列による型付け的お気持ちです

02:45:49 @orange_in_space@mstdn.nere9.help
icon

強い型付け><

02:44:17 @orange_in_space@mstdn.nere9.help
2021-01-29 02:35:17 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

とりあえず "stringly typed" という概念だけ今日は覚えて帰ってもらいましょ

Stringly Typed
wiki.c2.com/?StringlyTyped

02:31:50 @orange_in_space@mstdn.nere9.help
icon

><;

02:31:40 @orange_in_space@mstdn.nere9.help
2021-01-29 02:30:55 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

これはダサいマジレスなんですが、下を見るとキリがないので下を見て安心するのはやめた方がいいと思う……

02:30:16 @orange_in_space@mstdn.nere9.help
2021-01-29 02:29:22 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

まあ †ビジネス† の世界では実行時の誤りの発覚がないことよりも差分の小ささの方が正義なのかもしれないが……それは私の知ったことではないし私の関わりたくない領域の話なので

02:30:03 @orange_in_space@mstdn.nere9.help
icon

動的型つけ環境の「変更に強い(変更した結果何が起きるかわからない)」と同じかも?><;

02:29:04 @orange_in_space@mstdn.nere9.help
2021-01-29 02:28:37 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

正しくない指標を用いて開発や成果物を改善しようとすると何が起きるかの一例ですね

02:28:59 @orange_in_space@mstdn.nere9.help
2021-01-29 02:28:03 らりお・ザ・何らかの🈗然㊌ソムリエの投稿 lo48576@mastodon.cardina1.red
icon

ところでこれはエアリプだけど、型などでガッチリ仕様を表現せず文字列でデータを表現して持ち回る理由としては、「文字列なら enum variant の追加等と違って型そのものやその利用箇所への影響が少ない (≒コード変更なしでコンパイルが通る) ので、見掛け上の変更と影響範囲を小さくできる」などがあります。
もちろん正しく動くとは言ってない。

02:27:57 @orange_in_space@mstdn.nere9.help
icon

こういうの見ると、他人に見せて恥ずかしくないコードの世間一般の基準みたいなのが謎になる><;
(オレンジは「恥ずかしくて出せない><;」ってコードたくさんある><)

02:20:05 @orange_in_space@mstdn.nere9.help
icon

ていうかなんで文字列で処理してるんだろ?><;(このコード書いた人だけじゃなくこの周辺を設計した人自体ヤバくね?><;)

02:08:06 @orange_in_space@mstdn.nere9.help
icon

自信ついた><;
オレンジは某銀行の(底辺な?)コードよりはましなコード書けるっぽい><;
mstdn.nere9.help/@orange_in_sp

Web site image
orange (@orange_in_space@mstdn.nere9.help)
02:06:45 @orange_in_space@mstdn.nere9.help
icon

最終区分で、 Saisyu_KBNって命名!?><;

02:05:04 @orange_in_space@mstdn.nere9.help
icon

"getFront_Saisyu_KBN"

saisyu?><;

02:01:59 @orange_in_space@mstdn.nere9.help
icon

すごい機関のコードとか「きっとすごい感じに書いてあるんだろうな><」と思って読むとわりと普通にそこら辺にあるOSSなコードとどっこいどっこいだったりして、なんか自信つく感が><;

01:59:16 @orange_in_space@mstdn.nere9.help
icon

どんな風に書いてるコードかちょっと読んで見たかった><;

01:48:00 @orange_in_space@mstdn.nere9.help
icon

なんかまた不穏?><; って思ったけど、そうじゃなくお仕事のコードを全部githubに間違って公開した人が居たって話っぽい?><

00:44:29 @orange_in_space@mstdn.nere9.help
icon

これ><

魚ギョッと釣りグミ|発売日:2020年3月16日|バンダイ キャンディ公式サイト bandai.co.jp/candy/products/20

Web site image
魚ギョッと釣りグミ|発売日:2020年3月16日|バンダイ キャンディ公式サイト
00:43:15 @orange_in_space@mstdn.nere9.help
icon

型抜きで思い出したけど、型抜き的なゲーム性があるお魚のグミ(名前忘れた)、あれも超おいしい><

00:35:15 @orange_in_space@mstdn.nere9.help
icon

型抜きむしろ型抜きせずに食べる用ロングスティック版とか出してほしい><;

00:33:01 @orange_in_space@mstdn.nere9.help
icon

駄菓子の型抜き、大好物なので型抜きせずにそのまま食べる><;

00:32:06 @orange_in_space@mstdn.nere9.help
2021-01-29 00:12:28 あっきぃの投稿 akkiesoft@social.mikutter.hachune.net
icon

マジか…

祭りの「型抜き」、消滅の危機 家庭用でなんとかカバー(朝日新聞デジタル) - Yahoo!ニュース
news.yahoo.co.jp/articles/296e

00:25:45 @orange_in_space@mstdn.nere9.help
icon

Java版ならちょっと離れればドラウンドもデスポーンするけど、統合版は家の近所の水溜まりにドラウンドがどんどん貯まってってドラウンドの声が轟音のようになったりもする><;

00:22:29 @orange_in_space@mstdn.nere9.help
icon

統合版の一番怖い所は、モンスターがデスポーンしにくい仕様で、ドラウンド(水中ゾンビ)が湧きやすくて、しかもよくわからない落とし穴のような深い水溜まり地形が多く生成されるので、その水溜まりに落ちたらドラウンドが10匹くらい居て死亡ってパターンが多いことかも><;

00:19:10 @orange_in_space@mstdn.nere9.help
icon

統合版(=Java版以外の大半)、わりと細かい挙動が違うので、わりとノウハウが違う><

00:11:43 @orange_in_space@mstdn.nere9.help
icon

オレンジは、ワールドのワイプわりとだいじょうぶな人><

00:10:37 @orange_in_space@mstdn.nere9.help
icon

ejocraftの現行のワールド、ずっとログインしてないけどどこに何があってどう道が繋がってるかほとんど覚えてる><
前のワールドもかなり覚えてる><;

00:02:46 @orange_in_space@mstdn.nere9.help
icon

ejocraftの現行ワールドのトラップも、例えばえじょさんの家の地下にあるスケスポトラップはバージョンアップしたら動かなくなる><
(泡で持ち上げるシンプルな構造に改造する必要がある><)