ThinkPad T14 Gen3 のサスペンド問題

前回の続き ThinkPad T14 Gen3 の Ubuntu がサスペンドすると正常に復帰しない。 画面が消えたまま。10秒くらい待ってると点灯するけど数秒でまた消える…というのを繰り返し。 X が起動してると何もわからないので、コンソールでサスペンドを試すとこんなメ…

ThinkPad T14 Gen3 の Linux 化

ThinkPad T14 Gen3 Intel版を購入 2016年10月に買った ThinkPad T460s をずっと使ってたんだけど、6年前のPCだとさすがに処理が遅く感じることもあったんで、そろそろ新しいのが欲しくなったんで、ThinkPad T14 Gen3 を買った。 安かったんでAMD版にしたんだ…

MySQLに独自charsetを追加する

MySQL に独自 charset を追加できる…という話はずっと前に聞いたことあったけど、やったことなかったんでやってみた。 詳しくは MySQL :: MySQL 8.0 リファレンスマニュアル :: 10.13 文字セットの追加 を。 マルチバイト charset は C でプログラムを書いて…

MySQLのシノニム

sakaik さんが MySQL: desc は explain !? - sakaikの日々雑感~(T)編 という記事を上げてたのを見て、そういや最近はほかにどんなのがあるんだっけ…と思って調べてみた。 以下はMySQL 8.0.29 の sql/lex.h から抽出したもの。字句解析上のシノニム。 <> !…

GitLab Pages

GitHub Copilot がなんか気味悪いんで、GitLab に移行しようかなーと。 まあ、もともと前職で GitLab を使ってて GitHub よりも良かったんで、そのうち移行しようと思ってたので良い機会ではある。 とりあえず GitHub Pages で管理してた tmtms.net のコンテ…

Ubuntu 22.04 でメールサーバーを作ったのでメモ

令和にもなって自分でメールサーバーを作ってみたのでメモ。 OS は Ubuntu 22.04。 パッケージ更新後に自動的に再起動 メールとは関係ないけど apt で再起動が必要な更新があった場合は自動的に再起動するようにした。 /etc/apt/apt.conf.d/50unattended-upg…

LinuxでシフトJISが使えた

ふと、最近の Linux って EUC-JP ロケール使えるんだっけ? と思ったんで調べてみた。環境は Ubuntu 22.04。 EUC-JP ロケール locales パッケージが入ってない場合はロケールはこれだけ: % locale -a C C.utf8 POSIX locales と language-pack-ja をインスト…

Firefox バージョン100 アップデート直後の起動時の画面をもう一度出す方法

Firefox がバージョン100になった。めでたい。ということで、アップグレード後の再起動でこんな画面が出た。 へー…と眺めてたら消えてしまったんで、もう一度見てみたいと思ったがもう出てこなかった。 Firefox -P で起動して新しいプロファイルを指定したら…

Emacsでタグジャンプ

いまだに Emacs を使ってるんだけど、タグジャンプ機能をまともに使えるようにしたのでメモ。 今までは全体がだいたい頭に入ってるような環境で開発してたのであまり必要なかったんだけど、最近全容がよくわかってない環境で開発してて、タグジャンプ機能が…

Migu 1MフォントからASCIIだけを抽出する

とある事情により Migu 1M フォントから ASCII 文字だけを抽出したフォントを作ってみたのでメモ。 もとの migu-1m-regular.ttf から 0x80 以降の文字を消してもいけるんじゃないかと思ったんだけど、それだとなぜかフォントファイルのサイズが大きいままだ…

Emacsで異体字とか色付き絵文字とかを表示できるようにしてみた

いまだに Emacs を使ってるんだけど、最近フォント周りを調べてみたのでメモ。 異体字セレクタ Emacs は異体字セレクタに対応してないとずっと思っていたんだけど、実は単にフォントの問題で、ちゃんと異体字セレクタに対応したフォントを使えば異体字を表示…

MySQLの正規表現がGrapheme Clusterに対応していた

「竈門禰󠄀豆子」を MySQL に保存できるとかできないとかいう話題を見て、そう言えば MySQL の Grapheme Cluster 対応ってどうなってるんだっけ…と思ってググってみたら、MySQL 8.0.28 のリリースノートにこんな文を見つけた。 International Components for …

Fiddle で Ruby から C ライブラリを使う

rkremap を作ってるとき、最初は FFI を使ったんだけど、そういや Fiddle だと Ruby 標準だからそっちの方がいいかな…と思って Fiddle で作り直した。 ということで忘れないうちに Fiddle についてまとめておく。 Fiddle Fiddle を使うと Ruby から C のライ…

rkremap: キーボードデバイスの自動検出

https://blog.tmtms.net/entry/202201/rkremap の続き。 blog.tmtms.net Rkremap.new 時に引数でキーボードデバイスファイルを指定しないといけなかったんだけど、USB や Bluetooth キーボードとかデバイスファイル名がわからない場合に調べるのが面倒なので…

Linux用キーリマッパー rkremap を作った

11月から仕事で Mac を使うようになって2ヶ月ちょっとたつけど、いまだにショートカットキーが Ctrl キーではなく Command キーであることに慣れない。 慣れないのは仕事以外で普段使ってる Linux と異なるからだと思うんだけど、普通に考えて Mac のショー…

Mac で日本語ThinkPadキーボードを英語配列で使う

これは SmartHRアドベントカレンダー の20日目の記事です。 qiita.com SmartHR に入社して50日が経ちました。社内では tommy と呼ばれています(社内では Slack 名で呼び合う文化で、tmtms だと呼びにくいので tommy にした)。 会社の PC は MacBook Pro なの…

ruby-mysql

これはMySQLアドベントカレンダーとRubyアドベントカレンダーの12日目の記事です。 qiita.com qiita.com ruby-mysql は Ruby だけで書かれた MySQL 用のクライアントライブラリです。 今は Ruby から MySQL を使う場合は普通は mysql2 を使うだろうから、た…

転職した

これは「Rubyist近況[1] Advent Calendar 2021」の6日目の記事です。 adventar.org 自称 Rubyist なので近況を書きます。 2021年10月末で30年ほど勤めた富士通グループを退職しました。 11月からは SmartHR という会社で働いてます。 3年ほど Ruby は仕事で…

MySQL の認証プロトコル

認証がプラグイン化された最近のMySQL(5.5くらい?)の認証時のプロトコルをちゃんと理解してなかったので調べてみた。 基本的にはこんな感じ クライアントが接続するとサーバー(mysqld)から次の内容のパケットが送られる: プロトコルバージョン: 現在のとこ…

Linux で X よりも低レイヤでキーマップを変更する

まとめ USB 接続の ThinkPad トラックポイントキーボードで、半角/全角 を Esc、CapsLock を Ctrl として使うには、/etc/udev/hwdb.d/10-tmtms.hwdb というファイル(ファイル名は何でもいい)を次の内容で作って: evdev:name:Lenovo ThinkPad Compact USB Key…

MySQL で max_allowed_packet を超過した場合

MySQL で max_allowed_packet を超過した場合にどうなるんだっけ…と思って試してみた結果。 サーバーの max_allowed_packet をクエリが超過した場合 MySQL 5.6 サーバー起動 % docker run --name mysql56 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d mysql:5.6 --…

広告のエロ画像をブロックしたい

ウェブの広告は別にいいんだけど、エロ画像の広告は見たくない。 エロ画像広告を見かけたらその画像の URL のサーバー名を記録しておいて、HTTP リクエスト時に実際のサーバーにアクセスしないようにすれば良さそう。 たとえば、サーバー名の名前解決で 127.…

Postfixでオレオレ認証を作る

Postfix で SMTP 認証するには、Cyrus SASL と Dovecot SASL のどちらかを使用できる。 Cyrus SASL は、Postfix のビルド時に SASL ライブラリを組み込む必要があるが、Dovecot SASL は特殊なライブラリは必要ない。 Dovecot SASL はネットワーク通信で、通…

sudo su とかしてる人はだいたいおっさん

sudo に -s がついたのは 1995年、-i は 2004年なので、sudo su とかしてる人はだいたいおっさん。— とみたまさひろ (@tmtms) 2021年5月21日 テキトーに書いたこれが「ややウケ」だった。 そういや自分が sudo 使い始めたのは20年以上前で、うろ覚えなので調…

1ベイのQNAPのディスク交換

我が家では1ベイのQNAP(TS-121)を 2TB HDD で使ってるんだけど空きがなくなってきたんで、4TB HDD に交換することにした。 ダメだったやつ Linux PC に新旧両方の HDD を繋いで dd if=/dev/sdb of=/dev/sdc で丸ごとコピーすればいいかと思ってやってみた。…

MySQL 8.0.24 の文字コードまわり

2021/4/20 にリリースされた MySQL 8.0.24 について私が気になったものについて。 まあ文字コードまわりだけなんだけど。 utf8 を utf8mb3 として出力する Client applications and test suite plugins now report utf8mb3 rather than utf8 when writing ch…

Postfix 3.6

4/29 に Postfix 3.6 がリリースされたので、その変更点などを。 3.5 と 3.6 のパラメータの差分はこちら。 デュアルライセンス whitelist / blacklist が allowlist / denylist に変更 内部プロトコル変更 TLS まわり compatibility_level が Postfix のバ…

Ruby の Socket.tcp を知った

Ruby で TCP のクライアントとしてサーバーに接続するには TCPSocket.open(TCPSocket.new)を使うもんだと思ってたんだけど、最近 Socket.tcp というのもあることを知った。 どうやら 1.9.2 で追加されたらしい。10年以上も気づかなかった…。サーバー側の Soc…

UPDATE1文だけでもデッドロックするという話

デッドロックは複数のトランザクションが複数のレコードをロックする場合にタイミングによって発生する。 トランザクションAがレコード1をロック→成功 トランザクションBがレコード2をロック→成功 トランザクションAがレコード2をロック→2のロックの解放待ち…

MySQLマニュアルの差分

MySQL 8.0.x はパッチレベルのリリースで機能追加がされていくんだけど、マニュアルは常に 8.0 の最新版しか公開されてない。 MySQL は OSS だけど、MySQL のマニュアルは自由なライセンスではないしリポジトリも公開されてない。 ライセンスは自由でなくて…