ときどきの雑記帖 RE* (新南口)
期待はずれの人
(某チェーン店の)パニーニ
2/1から値上げされててぐんにゃり。
ニャイト・オブ・ザ・リビングキャット
2巻の発売日が2/22なんだけど狙ってのことだろうか(笑)
5番のバッテリー
リアルタイムモニター付きRaspberry Pi用無停電電源ボード「UPS HAT For Raspberry Pi」 | fabcross という記事を読んでいて
UPS HAT For Raspberry Piは18650型リチウムイオン電池2本をセットできる拡張ボードで、通常の電源が故障したり、 電圧が極度に低下したりしたときに、バックアップ電源として利用できる。
18650型リチウムイオン電池ってどんなんだったっけと気になって調べたら こんな記事に遭遇した。
リチウムイオンバッテリーと18650バッテリーの違いは何ですか? それらの違いを見分ける方法は?
18650と5番のバッテリーは似ていますが、実際には2つのバッテリーのサイズは異なります。 18650は、長さと直径の両方が5番バッテリーよりもはるかに大きいです。
5番目のバッテリー(実際、5番目のバッテリーの学名は14500バッテリー)のルールは、直径14mm、長さ50mmです。
No. 5バッテリーには、ニッケル水素充電式バッテリー、ニッケルカドミウム充電式バッテリー、アルカリ亜鉛が含まれます。
「5番目のバッテリー」ってナニ? おそらく機械翻訳された記事なんだろうけど どこから持ってきたものでどう書かれていたんだ>原文
- 電池の種類、単1、単2、単3、単4、単5、9Vの四角い電池(006P)、ボタン電池は、英語で何と言うのか?その呼び方と名前 | リース、銀行、証券、保険、貿易、経理、税務、金融のビジネス英語・用語集
- 電池の規格について | 一般社団法人 電池工業会
- 電池種別記号のまとめ | 電池コレクションブログ
- 18650とは (イチハチロクゴーマルとは) [単語記事] - ニコニコ大百科
- 充電式フラッシュライトに乗り換え中 - ケータイ Watch
parseInt
ちょっと前にもJavaScriptのparseIntの振る舞いが~ という話題があった [B! javascript] 【JavaScript】実数から整数への変換に parseInt() を使ってはいけない2つの理由🙅♀️ - Qiita のにまた同じ話題で。
parseInt というと [100, 100, 100, 100, 100].map(parseInt) が [100, NaN, 4, 9, 16] になるみたいなのも有名だよね (有名とは)
— Shinya Kato (@0x19f) February 1, 2022
JavaScriptの怪・その1729:
— 新山祐介 (Yusuke Shinyama) (@mootastic) February 1, 2022
parseInt(0.5) → 0
parseInt(0.05) → 0
...
parseInt(0.000005) → 0
parseInt(0.0000005) → 5
理由: parseInt() は引数をまず文字表現に変換するが、0.0000005の文字表現は "5e-7" だった。https://t.co/NEWarYAh4J
- node.js - Why does JavaScript’s parseInt(0.0000005) print “5”? - Stack Overflow
- JavaScript で parseInt / parseFloat を使わない方が良い理由
Read the Source
まあそれはそれとして、前回話題になったときにv8のソースを読みに行ったけど よくわからなかった(見当違いのところ (numbers/conversions.cc) を見ていた)のだけど、 今回は
V8 (nodejs のjsコア)の parseInt のソース読むと、意図的に Object で型チェックしててその後に String に変換してるんよね。この方法はおそらく後々 String 以外も受け付ける可能性があるかもって事なんじゃなかろうか。https://t.co/6q2r97Wlml
— mattn (@mattn_jp) February 3, 2022
このツイートのおかげで見るべき場所がやっとわかった😄
runtime/runtime-numbers.cc
// ES6 18.2.5 parseInt(string, radix) slow path
RUNTIME_FUNCTION(Runtime_StringParseInt) {
HandleScope handle_scope(isolate);
DCHECK_EQ(2, args.length());
CONVERT_ARG_HANDLE_CHECKED(Object, string, 0);
CONVERT_ARG_HANDLE_CHECKED(Object, radix, 1);
// Convert {string} to a String first, and flatten it.
Handle<String> subject;
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, subject,
Object::ToString(isolate, string));
subject = String::Flatten(isolate, subject);
// Convert {radix} to Int32.
if (!radix->IsNumber()) {
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, radix,
Object::ToNumber(isolate, radix));
}
int radix32 = DoubleToInt32(radix->Number());
if (radix32 != 0 && (radix32 < 2 || radix32 > 36)) {
return ReadOnlyRoots(isolate).nan_value();
}
double result = StringToInt(isolate, subject, radix32);
return *isolate->factory()->NewNumber(result);
}
なるほど。
ところで最初のQiitaの記事のコメント欄、結構やり取りが弾んで(謎)いたのね。
ゲルニカ
データ視覚化の人類史 という本を読んだのですが、 内容はとても面白くて訳もひどい印象はなかったものの、 それでもいくつか気になるところがあったので(ry
ポラリス
p.55
たとえば1628年4月27日、フォン・ラングレンの30歳の誕生日に、 ある水夫が月と北の空の星ポラリスとの間の角度を、 夜中の0時の時点で30.0度と測定したとする。
細かいこと言うと「ポラリス」と「北極星」は 同じものとは限らないし、原文ではおそらく polarisが使われているんだろうけど、 上記のような局面なら「北極星」でいいんじゃないかなあ。
電子式数値積分器
p.305
1947年、初のプログラム可能なデジタルコンピューターの開発に取り組んでいた フォン・ノイマンは、0~9の乱数を生成し、これらをある一定の形式の分布に変換する ENIAC(エニアック=電子式数値積分器)用のプログラムの草案を発表した。
ENIAC - Wikipedia
のElectronic Numerical Integrator and Computer
をそのまま日本語訳しちゃうのは…
あと、「・」もなしにIntegrstor とComputer(の訳語を)つなげちゃうと
「数値積分」する機械なのかと思ってしまった
(電子仕掛けでなくてもIntegrator 積分器ってなにするのかよくわからんか)。
乱数は主に飛行機で落ちる
p.307
ジョージ・マルサグリアは1968年、今となっては有名な「乱数は主に平面に落ちる」という論文の中で、純粋に数学的な考察からこのことを発見した。
これ、書籍のタイトルでもよくあるパターンだけど (日本語では出ていないであろう文献の) タイトルを原題なしに出されると追いかけるのが面倒になるので 止めてほしい。
が、これに関しては「乱数は主に平面に落ちる」で検索しても それほど外れた結果にはなっていなさそう。
印象的にこれを表現したフレーズに Random numbers fall mainly in the planes. (乱数は、主に平面(プレイン)に落ちる)というものがあり、 「スペインの雨は主に平野(プレイン)に降る」(The rain in Spain stays mainly in the plain.)のパロディである[1][2][3]。
それと機械翻訳で適当に(?)作られたページっぽいけど なかなか面白いものがあったり。
ジョージ・マルサグリアは、「乱数は主に平面に落ちる」という論文[2] の中で、線形合同生成の格子構造を確立しました。
ジョージ・マルサグリア (1968)。「乱数は主に飛行機で落ちる」 (PDF) . PNAS . 61 (1): 25–28。doi : 10.1073/pnas.61.1.25。PMC 285899。PMID 16591687。
journal article - Random Numbers Fall Mainly in the Planes
動力
p.309
このグラフィックスハードウェアは40万ドルのグラフィック表示システムと、 カスタマイズされたキーパッドコントロールで構成されていた。これを駆動するための計算には、 1時間あたり500ドルもかかるIBM360/91汎用コンピューターの動力が使用されていた。
「1時間あたり500ドルもかかる」ってのはレンタル・リースでの利用料の話だろうか? あと「汎用コンピューターの動力」ってのもよくわからん。 IBM360って内燃機関とか蒸気機関で動いていたわけじゃないよねえ?
ゲルニカ
p.324
ピカソはスペイン戦争中の1937年4月、ゲルニカのバスク地方への爆撃で命を落とした数百人の犠牲者の悲しみを、 自身の壁画『ゲルニカ』に転送し、爆撃後わずか二ヶ月でこれを完成させた。
この文章だと「ゲルニカ」は爆撃に使われた爆撃機か何かかととれちゃうような。 「悲しみを~転送し」という言い回しも?🤔
ところでよくわからんゲルニカと言えば この作品 ペリリュー ―楽園のゲルニカ―|ヤングアニマルweb のサブタイトルもどこから湧いてきたのか(意図が)よくわからんですね。
他にもあったと思うけど、メモっていたのはこのくらい。
C is for
ENIACについておまけ。
electronic numerical integrator and calculatorの略称。
自分もこう(間違って)覚えていたのだけど、ENIACのCはcomputerのCだったらしい。
ENIAC 75周年:世界初のスーパーコンピュータを記念して | HPCwire Japan
この話では、それまで機密とされていたプロジェクトであるENIAC(正式名称:Electronic Numerical Integrator and Computer)が、 世界初の真空管式、全電子式、プログラム可能なスーパーコンピュータとして、世界に公開された。
ついでに最初期のコンピューターの頭字語による名前のいくつかを見ると
EDVAC(エドバック、英: Electronic Discrete Variable Automatic Computerの略称)
EDSAC(エドサック、Electronic Delay Storage Automatic Calculator[※ 1])は、初期のイギリスのコンピュータのひとつ[1]。
UNIVAC(ユニバック、Universal Automatic Computer[1])は、一連の商用コンピュータのシリーズである。
EDSACのCはCalculatorだった。 イギリス製だから?
Compensating transaction
Go1.18+のジェネリクスで補償トランザクションをシンプルに書く - Qiita
「補償」トランザクションとはなんじゃらほい。 と疑問に感じたので(ry
とりあえずはまず「補償トランザクション」がよくわからんのでそれでググると いくつか使われているとことが見つかる。たとえば
TECHSCORE|マイクロサービスにおけるトランザクション【Saga】 | TECHSCORE BLOG
この場合、Transaction Zが失敗したため、補償トランザクション(Compensation Transaction)をすでにコミット済みの Transaction Y、Transaction Xに対して実行します。Saga Aとしては失敗となります。
なるほど。元の言葉は「Compensation Transaction」というのか。 確かに辞書ひいても「Compensation」の訳に「補償」がある (compensationの意味・使い方・読み方 | Weblio英和辞書)
ところで「補償」って金銭がらみのところで使う言葉でなかったっけという記憶があり、
- 補償の意味。保証・保障との違い。免責補償・補償金|チューリッヒ
- 「保証」「保障」「補償」それぞれの意味を説明できますか?|家計|Money Journal|お金の専門情報メディア
- 補償とは - コトバンク
確認しつつコトバンクの記述を見ていくと
世界大百科事典内の補償の言及
【計測】より
からの記述に気になることが書かれていた。 具体的にはこう。
… またセンサーの特性が測定量以外の,例えば周囲温度の影響を受けるとき,その影響を打ち消した測定値を得るのにも何回かの, あるいは何種類かの測定を行う必要がある。この周囲温度のように測定量以外の,影響を受けたくない物理量の影響を消すことを 補償compensationという。周囲温度の影響を打ち消すときは温度補償という。…
そこで「温度補償」で検索してみると たとえば 温度補償とは | 日本カノマックス株式会社 のようなページが見つかり、その分野(業界)では 「補償」のこういった使われ方をしている(ケースがある)のだとわかった。 なるほどここからなら Compensating transaction - Wikipedia を「補償トランザクション」とするのもありか。
ところで元記事、タイトルや本文では「補償トランザクション」を使っているのはいいけど
補正トランザクション パターン - Cloud Design Patterns | Microsoft Docs に出てくる旅行の予約を例に実装します。
引用先のタイトルなので仕方がないとはいえ 違う訳語をなんの注釈もなしにだすのは?🤔 と思ったり。
- 補正トランザクション パターン - Cloud Design Patterns | Microsoft Docs
- Compensating Transaction pattern - Cloud Design Patterns | Microsoft Docs
- Compensating Transaction - ohbarye
どっちがより良い訳語かは(今回は)考えない。
FIELDWIDTHS
とりあえずコレで良さそうね。
— MURAOKA Taro (@kaoriya) January 22, 2022
cut -c 2,3 | awk '{s+=strtonum("0x" $1)}END{print s}'
strtonumを使うということは実行ファイルの名前はどうあれ、中身はほぼgawk確定なわけで、 だったら切り出しも自前でやれるんじゃなかろうかと (今回のこれはsubstrで切り出しても良いと思うけど)。
9.1.3 String-Manipulation Functions - The GNU Awk User’s Guide
入力のhexファイルてIntel Hex(Intel HEX - Wikipedia)でよいのかな
:100000000C948D050C94D4050C94D4050C94D40553
:100010000C94D4050C94D4050C94D4050C94D405FC
...
:1063440015151518191919191919191919192324B1
:10635400406D22D90A6C0A4A0AEF09080A210A0088
:00000001FF
こんなの。 であればFIELDWIDTHS(による固定長フィールドの切り出し)を使って
$gawk -vFIELDWIDTHS='1:2 2' '{print $1}'
とか(これは計算対象の部分を出力しているだけで計算はしていない)。 でも自分がやるならPerl(Rubyでも可)のunpackでごにょごにょするかな。
- 4.6 Reading Fixed-Width Data - The GNU Awk User’s Guide
- perlpacktut - pack と unpack のチュートリアル - perldoc.jp
銀河の歴史がまた一ページ
宇宙暦799年2月7日12:40 昼食後のビュコック元帥のもとに、副官スールズカリッター少佐が報告をもたらした。#本伝5巻 #神々の黄昏戦役 #ランテマリオ星域会戦
— 今日は何の日@銀英伝bot (@logh_today) February 7, 2022
宇宙暦799年2月8日13時 銀河帝国軍と自由惑星同盟軍の距離が5.9光秒まで接近した。#本伝5巻 #神々の黄昏戦役 #ランテマリオ星域会戦
— 今日は何の日@銀英伝bot (@logh_today) February 8, 2022
宇宙暦799年2月8日13:45 5.1光秒に接近した両軍の間で砲戦がはじまり、ランテマリオ星域会戦が開始された。#本伝5巻 #神々の黄昏戦役 #ランテマリオ星域会戦
— 今日は何の日@銀英伝bot (@logh_today) February 8, 2022
宇宙暦799年2月8日14:15 銀河帝国軍の胴体部にあたるミッターマイヤー艦隊が前進を開始した。#本伝5巻 #神々の黄昏戦役 #ランテマリオ星域会戦
— 今日は何の日@銀英伝bot (@logh_today) February 8, 2022
宇宙暦799年2月8日16時から19時 両軍の戦闘は熾烈を極め、自由惑星同盟軍のデュドネイ分艦隊は3時間で85%を喪失した。#本伝5巻 #神々の黄昏戦役 #ランテマリオ星域会戦
— 今日は何の日@銀英伝bot (@logh_today) February 8, 2022