6/30 (日)
[Linux] CentOS 7 が EOL を迎える
CentOS 7 は今日 End-of-Life を迎えて、アップデートが停止となった。 手元の CentOS 7 は Rocky Linux 9 への移行を実施中。
6/20 (木)
[Azure] Azure Virtual Desktop のライセンス
Azure Virtual Desktop のライセンスは、内部商用目的(internal commercial purposes)と外部商業目的(external commercial purposes)の2種類がある。
- 外部商業目的は Windows 10/11 Enterprise Multi-Session を使う時に月内にアクセスしたユーザー数に応じた従量課金が使え、利用料金が Azure の費用に上乗せされる。
- 内部商用目的では従量課金が使えず Microsoft 365 や Windows Enterprise ライセンスを購入することになる。 これは Azure 費用ではなく、別途 Microsoft の代理店と契約して使う必要がある。
Azure Virutal Desktop の目的は、Azure 環境内に複数の開発者が使える Windows を用意することだ。 Windows Server 2022 Datacenter の VM を立てると 2 ユーザーまでの RDP 接続が可能だが、開発者が N 人いるなら N/2 台の Windows Server が必要にになり効率が悪い。 Windows 10/11 Enterprise マルチセッションを使って 1 台のサーバーに N 人が共存できるはずだが、マルチセッションを使うのは Azure Virtual Desktop を選択する必要がある。 ただ内部開発者向けに使うのは「内部商用目的」に当たるので、従量課金は使えないようだ。
参考
- Microsoft Learn | Azure Virtual Desktop のライセンス
6/14 (金)
[Movie] ブルー きみは大丈夫
109シネマズ港北で「ブルー きみは大丈夫」(原題: IF)の字幕版を見る。 109シネマズ港北で2番目に広いスクリーンで最終上映回を見たが、生まれて初めて客は自分一人というのを体験した。
原題の IF は Imaginary Frineds の略のようで、2023年12月 に見た「屋根裏のラジャー」と似ている。
6/7 (金)
[Movie] コードギアス 奪還のロゼ 第2幕
チネチッタで「コードギアス 奪還のロゼ 第2幕」を見る。 5月に見た第1幕に続きだが、TV の30分番組のスタイルで第1幕は4話分あったが第2幕は3話分になっていた。
最終上映回を見たが、劇場の6割近くが埋まっていた。 凄い客入りだ。
6/3 (月)
[Python] Python2 から Python3 へ移行
Python2 のコードを Python3 へ変換したが、その際に実施したことをメモする。
No | 内容 | プログラム例 | |
---|---|---|---|
1 | Python2 では引数を括弧で囲っても囲わなくてもよかったが、Python3 は括弧で囲わないとエラーとなる。 | Python2 |
print 'abc' |
Python3 |
print('abc') |
||
2 | Python2 の整数には int 型と long 型の区別があったが、Python3 では long 型がなくなり int 型が Python2 の long 型と同じ値域になった。 そのため文字列型から長整数型への変換は修正が必要になった。 | Python2 |
long(str) |
Python3 |
int(str, 10) |
||
3 | 8進数の表現方法が変更となった。 | Python2 |
0600 |
Python3 |
0o600
|
||
4 | Python2 では同一ディレクトリに存在する .py がインポート検索の対象となったが、Python3 では明示的に表現しないと同一ディレクトリの .py を取り込めないように変更になった。 同一ディレクトリにある .py を取り込む場合は、"." をつける。 | Python2 |
import Foo |
Python3 |
import .Foo
|
||
5 | tempfile モジュールは Python2 ではデフォルトがテキストモードだったのが、Python3 ではデフォルトはバイナリモードになったのでテキストモードを追加する必要がある。 | Python2 |
with tempfile.NamedTemporaryFile(dir='/tmp') as tmpf: |
Python3 |
with tempfile.NamedTemporaryFile(mode='w+t', dir='/') as tmpf:
|
||
6 | StringIO モジュールは廃止は、io モジュールのサブモジュールに変更になった。 | Python2 |
import StringIO |
Python3 |
from io import StringIO |
||
7 |
commands モジュールは廃止となった、subprocess モジュールに変更する。
|
||
8 |
subprocess.POpen() は Python2 ではデフォルトがテキストモードだったが、Python3 ではデフォルトはバイナリモードになったのでテキストモードにするには text=True を追加する必要がある。
|
||
9 |
dict 型オブジェクトに対する has_key 演算子が廃止になった。
|
Python2 |
key has_key dict |
Python3 |
key in dict |
||
10 |
is を == に置換する必要がある。
|
||
11 |
unicode 型は廃止されたので、str 型に変更する。
|
||
12 |
raw_input は廃止されたので、input に変更する。
|
||
13 |
URL エンコーディング/デコーディングは urllib.parse モジュールを使うように変更する。
|
Python2 |
urllib.quote() |
Python3 |
urlib.parse.quota() |
||
14 |
encode('utf-8') の戻り値が str 型ではなく binary 型に変更する。
|