ときどきの雑記帖 RE* (新南口)
炎のアルペンローゼ
アブラゼミ
今季初遭遇。 ただし、片方の羽がだいぶ欠けた状態で地上に転がっているところ(生きてはいた)。 鳥にでも襲われた?
perl 5.38.0
出たらしい。
perldelta - what is new for perl v5.38.0 - Perldoc Browser
REG_INF has been raised from 65,536 to 2,147,483,647
Many regex quantifiers used to be limited to U16_MAX in the past, but are now limited to I32_MAX, thus it is now possible to write /(?:word){1000000}/ for example. Note that doing so may cause the regex engine to run longer and use more memory.
内部表現変えたってことかな?
New regexp variable ${^LAST_SUCCESSFUL_PATTERN}
This allows access to the last succesful pattern that matched in the current scope. Many aspects of the regex engine refer to the “last successful pattern”. The empty pattern reuses it, and all of the magic regex vars relate to it. This allows access to its pattern. The following code
if (m/foo/ || m/bar/) { s//PQR/; }
can be rewritten as follows
if (m/foo/ || m/bar/) { s/${^LAST_SUCCESSFUL_PATTERN}/PQR/; }
and it will do the exactly same thing.
ふむ。
LDゲーム
「タイムギャル」「忍者ハヤテ」「宇宙戦艦ヤマト」の3作をSwitch向けに移植した「タイトー LDゲームコレクション」が12月14日に発売! | Gamer
「サンダーストーム」ってヘリコプターのゲームもあったよなあ と思って調べると別のメーカーの作品だった😄
『サンダーストーム』(THUNDER STORM)は、1984年5月[注 1]に日本のデータイーストから稼働されたアーケード用3Dシューティングゲーム。 日本国外では『Cobra Command』というタイトルで稼働された。
そして色々なプラットフォームで出ていたらしい(知らなかった)
懐かしのLDゲームがWindows版として復活。「サンダーストーム for Windows/X68030/60」が自転車創業より5月4日に発売
firefox address bar
firefox address bar tips :: tilde.institute
新刊近刊
ChatGPT
オライリーからも出るらしい。
ルールズ・オブ・プログラミング
これも(日本の)オライリーの本。
内容紹介
商業的成功を収めたゲームスタジオのプログラミング哲学!
『ゴースト・オブ・ツシマ』『怪盗スライ・クーパー』などで著名なゲーム制作スタジオ、 Sucker Punch Productionsの共同創設者であるChris Zimmermanによる、プログラミングのベストプラクティスについて綴った本。 全部で21のルールから成り立っており、すべてのプログラマーが知っておくべき本質的な知恵と、 熟練したプログラマーにとって示唆に富む洞察を含んでいます。また、コードを書く際だけでなく、 デバッグの際に有用な知識にも多く触れています。
原著は…と調べてみるとブラウザーの履歴にあったので、はてどこでと思いつつさらに調べると
ちょっと前に気になっている本として挙げたもの で挙げている本の中にあった(鳥頭)
にしても、2023-1-17に出た原著の翻訳本が同じ年の8月かあ。
The rules in this book include:
- As simple as possible, but no simpler
- Let your code tell its own story
- Localize complexity
- Generalization takes three examples
- Work backward from your result, not forward from your code
- The first lesson of optimization is don’t optimize
- A good name is the best documentation
- Bugs are contagious
- Eliminate failure cases
- Code that isn’t running doesn’t work
- Sometimes you just need to hammer the nails
Looks Good To Me
MEAPなんでまだ執筆途中の本だけど
Major congrats to @AdrienneTacke on publishing her book "Looks Good to Me: Actionable Advice for Constructive Code Reviews" with @ManningBooks!! 🎉🥳 I've learned so much from Adrienne over the years, and her content is always top notch. Very excited to start reading this today!… pic.twitter.com/7vKlh5gCEk
— Brian H. Hough | brianhuff.eth (@BrianHHough) June 21, 2023
待ってればこれも翻訳されそうだなあ。知らんけど (という使い方でよい?)。
ついでにMEAPの売れ線を眺めてみる。
BestsellersJuly 2, 2023
- “Looks Good to Me” Manning Early Access Program badge
- Grokking Algorithms, Second Edition Manning Early Access Program badge
- Simple Object Oriented Design Manning Early Access Program badge
- Essential TypeScript 5, Third Edition Manning Early Access Program badge
- Road to Kubernetes Manning Early Access Program badge
- Automating API Delivery Manning Early Access Program badge
- Lead Developer Career Guide Manning Early Access Program badge
- C++ Bookcamp Manning Early Access Program badge
- Acing the System Design Interview Manning Early Access Program badge
- Learn AI-Assisted Python Programming Manning Early Access Program badge
他にもいくつか興味をひくタイトルがありますな。
only matching
grepで行全体を正規表現にマッチした部分のみに置き換えるのって面倒だな、と思ってChatGPTに聞いたら、マッチ部分のみを出力する-oオプションを教えてくれた。前からあったっけ。
— 満鉄附属地エリカちゃん (@xylnao11) July 9, 2023
ここで言及しているgrepは GNU grepのことだろうと思うけど(GNU grep以外に実装しているものがあるのかは知らない)、 結構昔からあったよなあ。ということで調べてみた。
から適当に選んで確かめていったところ、2.5で入ったということがわかった。
NEWS
Version 2.5
- The new option --label allows to specify a different name for input
from stdin. See the man or info pages for details.
- The internal lib/getopt* files are no longer used on systems providing
getopt functionality in their libc (e.g. glibc 2.2.x).
If you need the old getopt files, use --with-included-getopt.
- The new option --only-matching (-o) will print only the part of matching
lines that matches the pattern. This is useful, for example, to extract
IP addresses from log files.
2.5のリリース時期はともかくいつ頃入ったものかというと
ChangeLog
2001-11-19 Bernhard Rosenkraenzer <bero redhat.com>
* src/grep.c: Add --only-matching (-o) switch (see NEWS)
* doc/grep.texi, doc/grep.1, NEWS: Document changes
* configure.in, lib/Makefile.am: Don't use internal getopt if
we're on a system that provides a working getopt function
ps
つづき。 なんかよくわからんけど busyboxのpsはifdefで大きく二つに分かれていて、 その片方のコードではwオプションやwwオプションを 受け付けていた模様。
busybox/procps/ps.c at 2d4a3d9e6c1493a9520b907e07a41aca90cdfd94 · mirror/busybox
/* if w is given once, GNU ps sets the width to 132,
* if w is given more than once, it is "unlimited"
*/
GNU ps
ってのがよくわからんけど。
busybox/procps/ps.c at 2d4a3d9e6c1493a9520b907e07a41aca90cdfd94 · mirror/busybox
int ps_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int ps_main(int argc UNUSED_PARAM, char **argv)
{
procps_status_t *p;
llist_t* opt_o = NULL;
char default_o[sizeof(DEFAULT_O_STR)];
#if ENABLE_SELINUX || ENABLE_FEATURE_SHOW_THREADS
int opt;
#endif
busybox/procps/ps.c at 2d4a3d9e6c1493a9520b907e07a41aca90cdfd94 · mirror/busybox
#else /* !ENABLE_DESKTOP */
int ps_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int ps_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
{
procps_status_t *p;
int psscan_flags = PSSCAN_PID | PSSCAN_UIDGID
| PSSCAN_STATE | PSSCAN_VSZ | PSSCAN_COMM;
unsigned terminal_width IF_NOT_FEATURE_PS_WIDE(= 79);
enum {
OPT_Z = (1 << 0) * ENABLE_SELINUX,
OPT_T = (1 << ENABLE_SELINUX) * ENABLE_FEATURE_SHOW_THREADS,
OPT_l = (1 << ENABLE_SELINUX) * (1 << ENABLE_FEATURE_SHOW_THREADS) * ENABLE_FEATURE_PS_LONG,
};
FORTRAN Compiler on IBM 704
LA4170 PXD ,B 4F13921 set N to acc
*'**'
LA4180 ARS 18 ' 4F13922
STO LAMBDA+8,A STO S(N+2) IN LAMBDA+3(L+2)+2 4F13923
ORS LAMBDA+9,A STO -(N+2) IN LAMBDA+3(L+3) 4F13924
CAL STRSTR 4F13925
SLW LAMBDA+7,A STO SPOP IN LAMBDA+3(L+2)+1 4F13926
CAL ADSPOP 4F13927
ORA FSBITS 4F13928
ORA FNBITS 4F13929
SLW LAMBDA+10,A STO SPOP IN LAMBDA+3(L+3)+1 4F13930
LA4320 TXI **,A,-9 4F13931 CM4100/CM4200/CM4300 3L = 3L + 9
LA4320にあるTXI **,A,-9
のジャンプ先は
自己書き換えにより
CM4100
CM4200
CM4300
のいずれかになる。
そのCM4100などはどうなっているかというと
CM4100 TXI CM4101,A,-3 LA COUNTER MODIFICATION ROUTINES 4F13956
CM4101 SXD 3LBAR,A 4F13957 3LBAR = 3LBAR + 3
*exit level-analysis
CM4102 SXD CBAR,B 4F13958
TXI CM4104,B,-1 4F13959
CM4104 SXD NBAR,B 4F13960 N = N + 1
CM4105 *** MS010,0 4F13961 TXH/TXL
*
MS020 CAL ADSTAR 4F13962
TRA MS030 4F13963
*
*
CM4200 TXI CM4201,A,-3 4F13964
CM4201 SXD 3LBAR,A 4F13965
TXI CM4303,C,-1 4F13966
*
CM4300 TXI CM4301,A,-6 4F13967
CM4301 SXD 3LBAR,A 4F13968
TXI CM4303,C,-1 4F13969
CM4303 SXD ABAR,C 4F13970 A = A + 1
TXI CM4102,B,-1 4F13971
よく見るとCM4100、CM4200、CM4300 のいずれで入っても、 以下のような流れで出口 (というか次のループへの入り口)は MS010かMS030のいずれか(これはまた自己書き換えで変わる)になる。
CM4100
CM4100 |
CM4101 |
CM4102 |
CM4104 |
CM4105 |
MS010/MS030 |
CM4200
CM4300 |
CM4301 |
CM4303 |
CM4102 |
CM4104 |
CM4105 |
MS010/MS030 |
CM4300
CM4200 |
CM4201 |
CM4303 |
CM4102 |
CM4104 |
CM4105 |
MS010/MS030 |
こんな感じ。
飛び先のMS010やMS030はというとこう。
*
MS010 CAL ADPLUS SET OP TO ADDITION 4F13478
*
MS030 SLW E+1 X 4F13479
STZ FNBITS CLEAR FUNCTION NAME INDICATOR 4F13480
STZ FNCTR CLEAR FUNCTION ARG COUNTER. 4F13481
STZ G CLEAR RECEIVING CELL. 4F13482
CLS L(0) SET E = -0 4F13483
STO E X 4F13484
LXA L(6),2 SET IR2 FOR SIX CHARS. 4F13485
*
MS040 CAL CHSAVE CHAR IN CHSAVE, IF ANY, TO AC. 4F13486
TNZ MS041 X 4F13467
TSX C0190,4 CHSAVE EMPTY, GET NEXT CHAR. 4F13488
MS020というラベルは位置的にはこの辺りにあっていいはずだけど CM4105の直後にあるのは、 ソースコード(あるいは実行コード)の物理的な位置としてはここになるけど プログラムの流れ上の意味でいうと (ループの)前処理的なことをしているから。なのだろう。たぶん。
- ‘)‘でAをデクリメント&&Cを書き換え → 実際には’)‘はない → Nをデクリメントするタイミングで調整?
*'('
L32000 PXD ,B 4F13932 set N to decr part of acc
ARS 18 4F13933 move to address part
STO LAMBDA+8,A STO 5(N+2) IN LAMBDA+3(L+2)+2 4F13934
ADD L(1) 4F13935
TXI L33130,B,1 -(N+2) TO -(N+1) 4F13936 N = N - 1
*
*'/' '*'
L33000 PXD ,B 4F13937 set N to decr part of acc
ARS 18 4F13938 move to address part
STO LAMBDA+11,A STO S(N+2) IN LAMBDA+3(L+3)+2 4F13939
ADD L(1) 4F13940
SSM 4F13941
TXI L33090,B,1 -(N+2) TO -(N+1) 4F13942 N = N - 1
L33090 STO LAMBDA+9,A STO -(N+1) IN LAMBDA+3(L+3) 4F13943
*'(' '/' '*'
'ここに来たときのアキュムレーター
'from L32000 SSMなし
'from L33000 SSMあり
L33130 SLW ALPHA,C STO -(N+1) IN ALPHA+A 4F13944
CLS L(0) 4F13945
STO LAMBDA+6,A 4F13946
SLN 1 4F13947
*'(' '/' '*'
LA3000 CLS ALPHA-2,C 4F13948
STO LAMBDA,A STO C(ALPHA+A-2) IN LAMBDA+3L 4F13949
CLS NBAR 4F13950
ARS 18 4F13951
SLW ALPHA-1,C STO -N IN ALPHA+A-1 4F13952
SLW LAMBDA+2,A STO S(N) IN LAMBDA+3L+2 4F13953
STO LAMBDA+3,A STO -N IN LAMBDA+3(L+1) 4F13954
TXI LA4170,A,3 4F13955 3L = 3L - 3
*goto
* ')'
MS220 LXD ABAR,4 PERFORM LEVEL ANALYSIS FOR ) 4F13589
*endmk
MS230 LXD ABAR,4 PERFORM LEVEL ANALYSIS FOR ENDMK, 4F13596
* '('
MS260 ALS 30 ( TO SYMBOL WORD 4F13630
SLW E+2 X 4F13631
TRA LATXL GO PERFORM LEVEL ANALYSIS FOR ( 4F13632
今日の遠い目
McKusickによる「FreeBSD成功の30年」 他の多くのオープンソースと違って、FreeBSDは単一の独裁者やサポート企業が存在せず、最初からグループとして発足した。当初からコミュニケーションツールが整備され、リモートワークの集団として成長したことが大きな要因。https://t.co/Bkmmk0NbGI
— 新山祐介 (Yusuke Shinyama) (@mootastic) July 6, 2023
30周年かあ。 PCで動くUNIXとしてはLinuxよりFreeBSD 使おうとしてたんだよね。会社では。
暑い
暑いのでジュってなったボール作りました。#ガンダム #zbrush pic.twitter.com/Lc5f5jjJdB
— 佐藤和由 (絶滅屋) (@kijyuu313) July 10, 2023
夏のネットミーム定番になったソロモン攻略時のボールを #zbrush で作りました。
— 佐藤和由 (絶滅屋) (@kijyuu313) July 10, 2023
一度普通にボールを作った後にグニャグニャ曲げてます。
これは出力してちゃんと組み上げたいと思ってます。#ガンダム pic.twitter.com/UKn701F3X6
タローマン
タローマンがNHK深夜のフィラー映像に登場します!
— 藤井亮 @TAROMAN (@ryofujii2000) July 11, 2023
ゆったりと、よく眠れる映像になっています。(編集中何度も寝落ちしました)
『おやすみタローマン』
初回 NHK総合 7月18日(火)午前2:20〜午前3:00 (40分)
※フィラー映像とは、番組終了後に延々と流れる風景などのアレです。 pic.twitter.com/SuhDuiIQTn
新山さん
宮田織物株式会社。いまだ現役の SHARP MZ-80Kを使ってパンチカードを作成している。https://t.co/eRfwEMU53X
— 新山祐介 (Yusuke Shinyama) (@mootastic) July 10, 2023
コードレビュー時に優先すべきこと (最初ほど優先):
— 新山祐介 (Yusuke Shinyama) (@mootastic) July 9, 2023
1. APIの仕様
2. 実装の正確さ、効率、セキュリティ
3. ドキュメンテーション
4. テストの量と質
5. スタイルhttps://t.co/Mh1SWT4qwq
熟練したソフトウェア開発者が語る、コードの複雑さについて:
— 新山祐介 (Yusuke Shinyama) (@mootastic) July 8, 2023
- 愚直なコードのほうが、「賢い」コードよりもずっといい
- 近道だと思ったものは、長期的にみると近道でないこともある
- 自分の主観でリファクタリングしてしまう開発者に注意
etc.https://t.co/bqNjZZqQ3v
新山さん、アレとかアレのアカウントも作ってたりするんだろうか?