- blogs:
- cles::blog
AMD が Zen 3 アーキテクチャの Ryzen 5000 を発表
amd
ryzen AMD が Zen 3 アーキテクチャの Ryzen 5000 を発表していたのでメモ。
最近、CPU 業界は AMD が非常に元気なので、僕も久しぶりに Ryzen で PC 組んだりしました。いつもならばすぐに Intel が攻勢に出て勢力が逆転するのですが、Intel はプロセスの微細化で苦戦が続いているのか、残念ながら第 10 世代の Core も大きく性能が伸びたような感じはしませんでした。Zen 3 が予定どおりの性能を発揮するとなると、AMD の優位はしばらく続くことになりそうです。
AMD、Zen 3採用の「Ryzen 5000シリーズ」発表 シングルスレッド性能でもIntel第10世代超え - ITmedia NEWS
Zen 3はクロック当たりの処理命令数(IPC)を前世代機から最大19%向上。電力効率も改善し、L3キャッシュも倍増した。16コア/32スレッドの最上位モデル「Ryzen 9 5950X」は、シングルスレッドの性能でも米Intelの最上位モデル「Core i9-10900K」を上回るという。
ヘッジトリマーを買い換えた
工具
gardening 実家の庭を手入れするためのヘッジトリマーが壊れてしまったようなので、これまで使っていた Makita MUH3651 の後継である MUH3652 に買い換え。とりあえず工具系のものはマキタにしておけば間違いないと思っています。
この機種はプラスチックのゴミ受け(チップレシーバ)が付属していないので、てっきり後付け不可なのかと思っていましたが、カタログを調べてみると単に標準付属していないだけのようです。別途、A-62125 を購入すれば問題なく後付けできます。
みずほが週休最大4日制を導入
労働環境
covid19 みずほ銀が、週休3日制や4日制を正式に採用するようなのでメモ。
当然のことながら週休 2 日を標準として、勤務が1日経る毎に 20% ずつ給料が減るという体系になっています。
みずほ、12月から週休最大4日 3休なら基本給8割、4休は6割 | 共同通信
新型コロナウイルス感染拡大を踏まえた新たな働き方に対応する。週休3日以上の本格導入はメガバンクで初めて。基本給は週休3日で従来の80%程度、週休4日で60%程度になる。
int arr[n]; はいつからできるようになったのか
c
programming C プログラミングを教えていときに「int arr[n]; のような感じで、配列の宣言時に変数が使えるのか?」と質問を受けたので、昔習ったとおり「できない」と答えたのですが、「実はこの書き方でもコンパイルが通ってしまうのですが・・・」と追い打ちをかけられたので、その理由を調べてみたら意外な結末を迎えてしまったのでその顛末をメモ。
C 言語も日々進化しているので、自分の知識も定期的にアップデートしなければならないことを実感しました。
† 今回のサンプルプログラム
単純な例だと以下のようなコードでしょうか。
var.c
† コンパイルしてみると・・・・
確かに gcc で何もオプションを付けないとコンパイルが通ってしまいます。
おそらく言語仕様の問題だという勘所は掴めたので std と pedantic を付けて順番に試してみます。
そうすると、c99 や c11 ではエラーが出ず、c90 だとエラーが出ることが分かりました。
エラーメッセージにvariable length array と書いてあるんで、これ variable length array と呼ばれている機能なんですね。
それはともかく、c99 と 20 年前の仕様から許されていたことにびっくり。
よく考えたら 20 年前は僕も大学生でしたので、そのときに習っていた C は c90 相当だったわけですね。
† 仕様書を調べて見る
というわけで、これは仕様に当たるしかないということで ISO の C 言語仕様を見比べてみることにします。
- [C90] ISO - ISO/IEC 9899:1990 - Programming languages — C
- [C99] ISO - ISO/IEC 9899:1999 - Programming languages — C
- [C11] ISO - ISO/IEC 9899:2011 - Information technology — Programming languages — C
とりあえず、仕様書で配列の宣言( Array declarators )の該当部分を調べていきます。
まず C90 を見てみると、明確に constant expression と書かれていて、[ ] 内は定数しか許されていないことが分かります。
[C90] §6.5.4.2 Array declarators
1 The expression delimited by [ and ] (which specifies the size of an array) shall be an integral constant expression that has a value greater than zero.
これに対して C99 の方は整数型 ( integer type ) とは書いてありますが、constant という表現は無くなっており、文法的にも [ ] 内に許される式が constant-expression から assignment-expression に変更されていることが確認できました。通常の整数の演算は assignment-expression に含まれているので、このことから配列の宣言に変数を使うことができることが分かります。また、第4項の後半にサイズが定数でない場合には variable length array (可変長配列)になるという記述が追加されていました。
[C99] §6.7.5.2 Array declarators
1 In addition to optional type qualifiers and the keyword static, the [ and ] may delimit an expression or *. If they delimit an expression (which specifies the size of an array), the expression shall have an integer type. If the expression is a constant expression, it shall have a value greater than zero.
4 (略) If the size is an integer constant expression and the element type has a known constant size, the array type is not a variable length array type;otherwise, the array type is a variable length array type.
さらに、C11 は C99 と同様の定義になっているのですが、先ほどの第4項がちょっと変更されていて、なぜか conditional feature になっています。
要はオプションなので、使えるかどうかはコンパイラ依存ということで、微妙に地雷のような感じがするのは僕だけでしょうか。
Visual Studio でこの機能が使えないのはこの辺りにヒミツがありそうです。
ちなみに §6.10.8.3 には _ _STDC_NO_VLA_ _ というマクロが定義されていて、これが 1 の時は VLA はサポートされてないということになるようです。
[C11] §6.7.6.2 Array declarators
4 (略) If the size is an integer constant expression and the element type has a known constant size, the array type is not a variable length array type; otherwise, the array type is a variable length array type. (Variable length arrays are a conditional feature that implementations need not support; see 6.10.8.3.)
思った以上に根が深い問題でした。。。。。。
シェーバーの刃を交換した
家電 使っているシェーバーはほぼ 10 年前のラムダッシュなのですが、このシェーバーの刃はなかなか優秀で、使っていてこれまで破れたことがありません。ただ、これも善し悪しで、交換の次期がよく分からないんですよね。交換目安は内刃1年、外刃2年ですが、前回交換したのは記録が残っていないので詳細はわかりませんが、おそらく4~5年くらい前だったと思われます。
† やはり刃を交換すると全然違う
刃を交換してみて気づいたのは、切れ味はもちろんのこと「音が違う」ということ。
バッテリーもそれなりに劣化しているはずですが、今のところそれほど不便も感じませんので、もうしばらく活躍して貰おうと思います。
double 型の変数には -0.0 が代入できる
c 久しぶりに c でプログラムを書いていたら double 型の変数に -0.0 が代入できることに気づいたのでメモ。
通常はあまり使わない変な値を入れて実行してみるとこんな感じになります。
example.c
実行結果
† 詳細は IEEE 754 で
ほとんどのプログラミング言語の実数の扱いは IEEE 754(最新版は IEEE 754-2019 - IEEE Standard for Floating-Point Arithmetic)に基づいています。
このため、内部的には符号部、指数部、仮数部の組み合わせで1つの値が表現されます。
したがって、よく考えたら -0.0 というのは普通に存在できるんですね。
これに対して int や long などの整数型の負値は2の補数表現なので、-0 は存在しません。
800 万円かけても身長を伸ばしたい?
medical 海の向こうアメリカで約 800 万円払うと身長を伸ばす手術が受けられることがニュースになっていたのでメモ。
身長が低いというコンプレックスの人は多いですからね。
800万円で背を伸ばす手術。「15センチ高くなる」に予約殺到 | Forbes JAPAN(フォーブス ジャパン)
ラスべガスのあるクリニックが、今の身長を伸ばせる脚延長術を発表した。財布には、人生最大の打撃を与えることになるかもしれないが、本来より15センチばかり背が伸びた自分に変身できるというのだ。
かくいう僕も 162cm しかないのですが、個人的にはあまり気にしたことがないです。。。
800 万あれば、国内では工学系の学位が普通に取れたりすると思います。
U 字型のポップガードに交換してみた
covid19
teleconferencing マイクにはこれまで円形の比較的大きなポップガードがついていたのですが、やはりちょっと邪魔なのでコンパクトな U 字型のポップガードに交換してみました。
効果はどの程度変化したのか分かりませんが、とりあえずマイクで画面に死角ができたり、Web 会議中に資料を取ろうとしてうっかりポップガードに手があたってしまうという頻度はかなり少なくなくなりました。
- 換気口に風よけカバーを設置 (2)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(1090)
3 . svn でコミットしたらエラーが出たので(956)
4 . シャープの空気清浄加湿器のキュルキュル音対策は PTFE テープで(945)
5 . RT810 の DHCP サーバを WPAD に対応させる(885)
Academic[574]
Book[155]
Diary[522]
Disaster[101]
Foodlogue[1425]
Game[284]
Goods[805]
Healthcare[341]
Hobby[32]
IT[1195]
Military[343]
misc.[1570]
Mobile[510]
Music[38]
Neta[106]
News[95]
Photo[391]
RealEstate[120]
Security[1178]
SEO Contest[36]
Software[634]
Tips[1886]
Travelogue[1238]
Web[675]
Work[193]




