2025年12月03日(水) [長年日記]
■ [c++] C++で宣言に書く指定子の順序
C++の宣言に書く指定子の順序に言及した文書が https://github.com/cplusplus/draft のWikiにあったのでメモ。
- Specification Style Guidelines (github.com/cplusplus)
In a decl-specifier-seq, the decl-specifiers should be written in the following order:
- friend / typedef / storage-class-specifier / virtual
- inline
- constexpr
- explicit-specifier
- const
- volatile
- unsigned / signed
- short / long
- other type-specifiers
2025年11月27日(木) [長年日記]
■ [python] datetimeオブジェクトへ明示的にタイムゾーンを付与する
以前にシステムローカルのタイムゾーンを付与する方法をメモした。
明示的にタイムゾーンを指定したい場合はどうしたらいいか。datetime.astimezone()だとうまくいかない。
>>> import datetime >>> dt = datetime.datetime(2023, 1, 1) >>> dt.isoformat() '2023-01-01T00:00:00' >>> dt.astimezone(datetime.timezone.utc).isoformat() '2022-12-31T15:00:00+00:00'
日付が変わってしまった。datetime.replace()を使うとうまくいく。
>>> dt.replace(tzinfo=datetime.timezone.utc).isoformat() '2023-01-01T00:00:00+00:00'
2025年11月22日(土) [長年日記]
■ [db] PostgreSQLでデータベースをコピーする
久しぶりにPostgreSQLを使っている。バージョンは18.0。
CREATE TABLE文を使って手軽にデータベースをコピーできることを知ったのでメモ。次のようにすれば、src_dbのコピーとしてdst_dbを作れる。
create database dst_db template src_db;
ただし、別のユーザーが接続中だとエラーになってコピーできないので注意。
マニュアルには次のような説明があった。
また、実際のところCREATE DATABASEのテンプレートとして名前を指定することで、クラスタ内の任意のデータベースをコピーできます。 しかし、この機能は、(まだ)汎用目的の「COPY DATABASE」能力を意図したものではないことを理解しておいてください。 コピー操作の間、他のセッションから元のデータベースに接続することができないという点は大きな制限です。 CREATE DATABASEは、その起動時に他の接続が存在する場合失敗します。 コピー操作中は元のデータベースへの新しい接続を許しません。
2025年05月28日(水) [長年日記]
■ [windows] WSLが起動しなくなったが復旧した
気づいたらWindowsが再起動していた。原因不明(原因を知る方法あるのかな?)。
その後WSLを起動しようとしたら次のエラーが出力され起動できなくなっていた。
ディスク 'C:\Program Files\WSL\system.vhd' を WSL2 にアタッチできませんでした: 指定されたファイルが見つかりません。
エラー コード: Wsl/Service/CreateInstance/CreateVm/MountDisk/HCS/ERROR_FILE_NOT_FOUND
不穏なメッセージだ…。C:\Program Files\WSL\system.vhd は存在していない。
検索すると、復旧はできるようだった。WSLの次のissueが参考になる。
このissueのこのコメントにあるように、GitHubからWSLのmsiファイルをダウンロードして、その中に含まれるsystem.vhdを C:\Program Files\WSL\ へコピーすればよい。
wsl --version コマンドで確認するとWSLのバージョンは2.5.7.0だったので、https://github.com/microsoft/WSL/releasesから wsl.2.5.7.0.x64.msi をダウンロードし、msiexecコマンドを使い次のようにしてmsiファイルをどこかへ展開し
start /wait msiexec /a wsl.2.5.7.0.x64.msi targetdir="C:\tmp\dokoka" /qn
展開先の PFiles64\WSL\system.vhd を C:\Program Files\WSL\ へコピーした。今の所これで問題なく復旧したように思われる。
msiexecの使い方は次のページを参考にした。
2025年03月28日(金) [長年日記]
■ [ruby] test-unit-runner-junitxmlのリポジトリをtest-unit公式配下に移した
6年前にリリースしたtest-unit-runner-junitxml というtest-unitのtest runnerのリポジトリを、https://github.com/test-unit 配下に置かせてもらうようになった。
次のissueがきっかけ。