ときどきの雑記帖 RE* (新南口)
コズミックゲーム
iPad 電卓
ペンで式書くと答えが出るiPadに発狂。式からグラフも起こせちゃう | ギズモード・ジャパン
これは使ってみたいな。 iPad持ってないけど(笑)
サはサイエンスのサ
図書館で見かけたのでパラパラと読んでいたら 「新型インフルエンザ」について書かれた回があって、 「パンデミック」にも言及していた。
実際に起きた「パンデミック」では そこに書かれてたようなことが起きていたり あるいは起きなかったり 逆に書かれていない(予想外の)ことが起きていたり。
index
MySQL8.0でSELECT COUNT(*)が低速になる動作は8.0.37で解消されていた! - CyberAgent SRG #ca_srg
へーと思いつつ記事を読んでみて
2024年4月に以下の投稿がされています。
[30 Apr 16:31] MySQL Verification Team
Thank you for the feedback and test case.
Degradation observed by you could be because the select count() must be using the clustered index instead of secondary index.
We have fixed this problem in 8.0.37 throughBug #112767 SELECT COUNT() degraded performance on 8.0 compared to 5.7 .
Please give it a try with 8.0.37 and report a new bug if you still face the problem.[30 Apr 16:31] MySQL検証チーム フィードバックとテストケースをありがとうございます。 あなたが観測した劣化は、SELECT COUNT()がセカンダリインデックスの代わりにクラスタ化インデックスを使用していることが原因である可能性があります。 この問題は8.0.37のバグ#112767 SELECT COUNT()で修正しました。 8.0.37で試してみて、まだ問題に直面するようであれば、新しいバグを報告してください。
「クラスター化インデックス」やら 「セカンダリインデックス」ってどういうものだろうというのが気になった。
- クラスター化インデックスと非クラスター化インデックス - SQL Server | Microsoft Learn
- SQLServerのインデックスについてざっくりとまとめてみた #SQLServer - Qiita
- MySQL :: MySQL 8.0 リファレンスマニュアル :: 15.6.2.1 クラスタインデックスとセカンダリインデックス
わかったようなわからないような…😓
swift
プログラミング言語Swiftが新たなGitHubリポジトリ開設 | TECH+(テックプラス)
2014年の発表から10年を迎えるプログラミング言語の新たな基点を構築する構えだ。
Swiftももう(発表から)10年すか。
気になるプログラミング言語(のひとつ)ではあるのだけど Macには縁がないのでねえ…
Linuxカーネル解読室
Linuxカーネル解読室 再び - VA Linux エンジニアブログ
令和のRuby Hacking Guide…無理かなあ😓
ふれふせん
トラックパッドなどに貼り付けて使える「ふれふせん」 - ITmedia PC USER
これ試してみたいな。 今はふつーの付箋(ポストイット)の四辺をテープで止めてたりするのだけど、 今一つ具合がよろしくないのよね
新刊近刊
金利 「時間の価格」の物語
書店で見かけてちょっと気になっていたのだけど
なかなか厳しいレビューがついてるな
大規模データセットのためのアルゴリズムとデータ構造
各章は伝統的な解決策を示した後、なぜそれが大規模データの場面で機能しないのかを解説しています。
大規模データセットを扱うことはこの先もたぶんないとは思うのだけど
11章 外部メモリによるソート
はちょっと気になる😄
awk
nostalgia
gawkには隠しオプションの--nostalgia
というものがある
(undocumentだけどソースのtexinfoファイルを直接見ると見つけることができる)。
これが最近削除されたのだけど
diff --git a/ChangeLog b/ChangeLog
index 4018214..d43486f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2024-06-10 Arnold D. Robbins <arnold@skeeve.com>
+
+ * main.c (nostalgia): Remved function.
+ [COPYRIGHT_YEAR]: Bumped to 2024.
+ (main): Removed --nostalgia from options and from handling.
+ * NEWS: Updated.
+
2024-06-08 Arnold D. Robbins <arnold@skeeve.com>
* io.c: Remove check for OSF/1. It's too obsolete now.
なぜ今これを? と思ったのだけど、 メーリングリストを見たらその理由がわかった
Bug Report for gawk-5.3.0 : Argument ‘-Wnos’ causes core dump CRASHES.
Description:
If I use “gawk -Wnos” in gawk-5.3.0 program, the core dumped CRASH occured.Repeat-By:
- Use “gawk-Wnos” command on gawk-5.3.0
- The, following result will return.
awk: bailing out near line 1 Aborted (core dumped)
なるほど予期しないところで呼び出されるケースがあると。
なぜ-Wnos
と--nostalgia
に関係が?
と思われるかもしれないけど、
これはGNU getoptの仕様が絡んでいる。
もう少し詳しい説明(解説)を次回以降書くかもしれないし書かないかもしれない
なお
Re: Bug Report for gawk-5.3.0 : Argument ‘-Wnos’ causes core dump CRASHE
I already removed the option, but if you’ll do the ASCII Art, we can put it back. :-)
だそうだ😄
FORTRAN Compiler on IBM 704
しんちょくありません😓
BCD
例の話題のつづき。
まとめは他の方におまかせして。
実際、私は現在開発の言語「ぬこ」を既に10進小数をデフォルトに変更していますし、日本語言語を真面目に作ってますから、口でいうだけなく実践し続けてます。実を結ぶかはともかく、口で言ってるだけの人とは一緒にされたくないし「そんなの意味がない」と言われるのは愉快な気持ちじゃない。
— kmizu (@kmizu) June 12, 2024
どんなものだろうと見てみた。 ツイート(謎)ではリポジトリを明確に示したことはないと思うけど (見落としていたらすまん)、たぶんこれ GitHub - kmizu/nuko: 日本語プログラミング言語「Nuko」
で、コミットを追いかけると 10進浮動小数点数がデフォルトになるように修正 · kmizu/nuko@7cf50fb というのがある。
nuko/src/main/scala/com/github/nuko/Value.scala at main ・ kmizu/nuko ・ GitHub
}
- case class BoxedReal(value: Double) extends Value {
+ case class BoxedReal(value: BigDecimal) extends Value {
override def toString = value.toString
}
変更箇所はたくさんあるけど、おおむね↑のようにDouble(double)を 使っていたところをBigDecimalを使うようにした。ということのようだ。
case class
ところでScalaってこんな書き方できたんですね。
sealed abstract class Value
...
case class BoxedReal(value: BigDecimal) extends Value {
override def toString = value.toString
}
Scalaは大昔(謎)にちょっといじっただけだから その後の言語使用の変化などもよく知らんのだった
- sealed abstract case classがすごい - 今日のごはんは素麺です
- [Scala]case classのコンストラクタを隠蔽する #Scala - Qiita
- ケースクラス | Scala Documentation
- 【Scala】クラス(class)とケースクラス(case class)の違いについてまとめ #Scala - Qiita
- Scalaのシールドクラス/トレイトとパターンマッチ #備忘録 - Qiita
- Scalaのsealedクラス #Scala - Qiita
- trait と abstract class の使い分け ・ GitHub
BigDeciaml
ただちょっと気になった点があって。
具体的な場所を見失ってしまったので ここで例示できないのだけど、 実際に計算するときにはBigDecimalをdoubleに変換してdoubleで演算後 結果をBigDecimalに戻していたり、 リテラルも一度doubleとして読み込んでから その結果をBigDecimalのコンストラクターに渡しているように読めた。
だとすると
BigDecimal (Java Platform SE 6)
public BigDecimal(double val)
double を double のバイナリ浮動小数点値の正確な 10 進数表現である BigDecimal に変換します。 返された BigDecimal のスケールは、(10^scale × val) が整数となるような最小値です。
どこかでひょっこり「誤差」が湧き出てきたりしないだろうか
つまり
import java.math.BigDecimal;
class HelloWorld {
public static void main(String[] args) {
BigDecimal decimal1 = new BigDecimal(0.1);
BigDecimal decimal2 = new BigDecimal("0.1");
BigDecimal decimal3 = new BigDecimal("0.1");
System.out.println(decimal1.compareTo(decimal2));
System.out.println(decimal1.subtract(decimal2));
System.out.println(decimal2.compareTo(decimal3));
System.out.println(decimal2.subtract(decimal3));
}
}
この結果が
java -cp /tmp/kv9qRQr1Ts/HelloWorld
1
5.5511151231257827021181583404541015625E-18
0
0.0
=== Code Execution Successful ===
こうなることからの推測。
- BigDecimal (Java Platform SE 8 )
- クラス java.math.BigDecimal の使用 (Java 2 Platform SE 5.0)
- 17.2 数値関連クラスとそのAPI(BigDecimalクラス、NumberFormatクラス、DecimalFormatクラス、Mathクラスなど)~Java Basic編 #java8 - Qiita
- Java BigDecimal チートシート - A Memorandum
- BigDecimalを扱う共通クラス - システム開発で思うところ
まあこれからも手を入れられていくだろうから どこかで直すつもりなのかもしれない
Roc
現在開発されているRoc langはこの立場ですね
— ぱなっしゅ (@Panache328) June 12, 2024
10進小数デフォルトのほうがメインでパフォーマンスが必要なグラフィック系のアプリケーションなどに関しては2進小数を選択して使えばいいじゃん?って設計者が言ってますhttps://t.co/QEZUEEh0f6 https://t.co/Tonu3Y5JxB
rocという開発中の言語、10進小数がデフォルトらしいので同志(?)として応援したい。https://t.co/dFFpYLeqKx
— kmizu (@kmizu) June 13, 2024
Rocのリポジトリはこれ。
こちらはRustで書かれている模様。 Rustも手を出している余裕がなっしんぐだなあ
cmd.exeでの’,‘の扱い
- コマンドプロンプトのカンマ(,)について
- Excelを使って複数のフォルダーを一括作成するウラ技 ~月別フォルダー作成が捗る! - 残業を減らす!Officeテクニック - 窓の杜
- 組み込みコマンド - DOS/コマンドプロンプト コマンド一覧
- COMMAND.COM - Wikipedia
ふと興味がわいていくつかのコマンドで試してみると、 スペースをカンマにしても動くものがある一方で
>move,1,2
1 個のファイルを移動しました。
>copy,1,2
コマンドの構文が誤っています。
copyコマンドは駄目っぽい。
そこで、これはWindows10のcmd.exeで試したものなので、 command,comのとは別物だろうという点は見てみないふりをして command.comのソースコードを見てみることにした
脱線
で、いきなり脱線してしまうのだけど ソースコードに謎の人名(らしきもの)が
MS-DOS/v4.0/src/CMD/COMMAND/COPY.ASM at main · microsoft/MS-DOS · GitHub
mov [MELCOPY],al ; Not a Mel Hallerman copy
invoke cparse
誰だろうこの人。と思いつつその名前でググってみると
- Walking through MS-DOS the latest featured repository on GitHub | by Robert W. Oliver II | Sourcerer Blog
- What were the names of the 12 engineers who made the IBM PC? - Quora
IBM PCの開発に携わっていた人の一人らしい。
閑話休題。
copyコマンドのソースは そのままcopy.asmにあった(4.0の場合)。
MS-DOS/v4.0/src/CMD/COMMAND/COPY.ASM at main · microsoft/MS-DOS · GitHub
COPY:
; First order of buisness is to find out about the destination
;
; initialize all internal variables
;
ざっくり略
DESTSCAN:
xor bp,bp ; no switches
mov di,offset trangroup:SCANBUF
mov parse_last,si ;AN018; save start of parsed string
invoke CPARSE
PUSHF ; save flags
inc objcnt
test bh,80H ; A '+' argument?
jz NOPLUS ; no
mov [PLUS],1 ; yes
NOPLUS:
CPARSEというサブルーチンでなにかやっているらしい。 そのCPARSEはというと
MS-DOS/v4.0/src/CMD/COMMAND/CPARSE.ASM at main · microsoft/MS-DOS · GitHub
moredelim:
LODSB
INVOKE DELIM
JNZ SCANCDONE
CMP AL,' '
JZ moredelim
CMP AL,9
JZ moredelim
xchg al,[SKPDEL]
or al,al
jz moredelim ; One non space/tab delimiter allowed
test bh,080h ;g has a special char been found?
jz no_comma ;g no - just exit
mov comma,1 ;g set comma flag
no_comma:
JMP x_done ; Nul argument
さらにサブルーチン(DELIM)を呼んでいる。 名前からして「区切り」に関する処理をやっているものと思われる。
MS-DOS/v4.0/src/CMD/COMMAND/TENV2.ASM at main · microsoft/MS-DOS · GitHub
;
; Input: AL is character to classify
; Output: Z set if delimiter
; NZ set otherwise
; Registers modified: none
;
DELIM:
CMP AL,' '
retz
CMP AL,'='
retz
CMP AL,','
retz
CMP AL,';'
retz
CMP AL,9 ; Check for TAB character
retz
CMP AL,0ah ; Check for line feed character - BAS
return
このサブルーチンで「区切り」として扱う文字には,
もあるけど
呼び出し元で蹴っ飛ばしているっぽい?
が、
C:\Users\kbk>copy 1,2
1 個のファイルをコピーしました。
C:\Users\kbk>copy,1 2
コマンドの構文が誤っています。
なんだこれ。
ちなみにcopy以外のコマンドではこのサブルーチンで処理されている(たぶん)
MS-DOS/v4.0/src/INC/PARSE.ASM at 2d04cacc5322951f187bb17e017c12920ac8ebe2 · microsoft/MS-DOS
;***********************************************************************
; $P_Chk_Delim;
;
; Function: Check if AL is one of delimiter characters.
; if AL+[si] is DBCS blank, it is replaced with two SBCS
; blanks.
;
; Input: AL = character code
; DS:SI -> Next Character
; ES:DI -> Parameter List
;
; Output: ZF = 1 if one of delimiter characters
; SI points to the next character
; Vars: $P_Terminator(W), $P_Flags(W)
;***********************************************************************
$P_Chk_Delim proc ;AN000;
push bx ;AN000;
push cx ;AN000;
mov psdata_seg:$P_Terminator,$P_Space ;AC034; Assume terminated by space
and psdata_seg:$P_Flags2,0ffh-$P_Extra ;AC034;
cmp al,$P_Space ;AN000; Space ?
je $P_Chk_Delim_Exit ;AN000;
cmp al,$P_TAB ;AN000; TAB ?
je $P_Chk_Delim_Exit ;AN000;
cmp al,$P_Comma ;AN000; Comma ?
je $P_Chk_Delim_Exit0 ;AN000;
$P_Chk_Delim00: ;AN000;
cmp al,$P_DBSP1 ;AN000; 1st byte of DBCS Space ?
jne $P_Chk_Delim01 ;AN000;
cmp byte ptr [si],$P_DBSP2 ;AN000; 2nd byte of DBCS Space ?
jne $P_Chk_Delim01 ;AN000;
mov al,$P_Space ;AN000;
inc si ;AN000; make si point to next character
cmp al,al ;AN000; Set ZF
jmp short $P_Chk_Delim_Exit ;AN000;
$P_Chk_Delim01: ;AN000;
cmp byte ptr es:[di].$P_Num_Extra,$P_I_Have_Delim ;AN000; delimiter character specified ?
jb $P_Chk_Delim_Exit ;AN000;
xor cx,cx ;AN000;
mov cl,es:[di].$P_Len_Extra_Delim ;AN000; get length of delimiter list
or cx,cx ;AN000; No extra Delim character ?
je $P_Chk_Delim_NZ ;AN000;
mov bx,$P_Len_PARMS-1 ;AN000; set bx to 1st extra delimiter
$P_Chk_Delim_Loop: ;AN000;
inc bx ;AN000;
cmp al,es:[bx+di] ;AN000; Check extra Delim character
je $P_Chk_Delim_Exit0 ;AN000;
loop $P_Chk_Delim_Loop ;AN000; examine all extra delimiter
$P_Chk_Delim_NZ: ;AN000;
cmp al,$P_Space ;AN000; reset ZF
$P_Chk_Delim_Exit: ;AN000;
;;;; jne $P_ChkDfin
;;;; mov psdata_seg:$P_Terminator,al ;AN034;
$P_ChkDfin: ;AN000;
pop cx ;AN000;
pop bx ;AN000;
ret ;AN000;
$P_Chk_Delim_Exit0: ;AN000;
mov psdata_seg:$P_Terminator,al ;AC034; keep terminated delimiter
test psdata_seg:$P_Flags2,$P_Equ ;AN027;AC034;; if terminating a key=
jnz $P_No_Set_Extra ;AN027; then do not set the EXTRA bit
or psdata_seg:$P_Flags2,$P_Extra ;AC034; flag terminated extra delimiter or comma
$P_No_Set_Extra: ;AN027;
cmp al,al ;AN000; set ZF
jmp short $P_Chk_Delim_Exit ;AN000;
$P_Chk_Delim endp ;AN000;
I_NEED
ところでDOSのソースコードを眺めていると
MS-DOS/v2.0/source/DIRCALL.ASM at main - microsoft/MS-DOS · GitHub
i_need AUXSTACK,BYTE
てなマクロが使われているのに気がついた。 ネーミングセンスにLarry Wallっぽさを感じる😄 (今どうしてるんだろうLarryさん)
マクロの定義を追いかけるまでもなくどんなものなのかは 見当がつくのだけど
MS-DOS/v2.0/source/DOSMAC_v211.ASM at main - microsoft/MS-DOS · GitHub
I_NEED MACRO sym,len
DATA SEGMENT BYTE PUBLIC 'DATA'
IFIDN <len>,<WORD>
EXTRN &sym:WORD
ELSE
IFIDN <len>,<DWORD>
EXTRN &sym:DWORD
ELSE
EXTRN &sym:BYTE
ENDIF
ENDIF
DATA ENDS
ENDM
ふむ。
不明なユーザー
Teamsの去年のチャネルで過去情報を確認
— ク ポ犬@たぶんエンジニア (@kubokenkuboken) June 11, 2024
「不明なユーザー」と表示され誰誰がやり取りしているかわからない
ただ「チャネル内で検索」の検索結果だと名前が見れるからギリ判別可能
会社で使っているTeamsでもちらほら見かけるなあ 「不明なユーザー」😓
石の猫
この「なんでこうなってるの?の経緯」の情報がすぐ散逸するんだよ。
— なぎせ ゆうき (@nagise) June 14, 2024
それが明文化して整理して残ったら強いんだけどねえ……🤔 https://t.co/IBi2GuAUQ5
今現在も「これ」で苦労しているし、 逆に自分が「これ」を残しておかないといけないことが いくつかあるんだけどめんd(ry