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 のマニュアルは自由なライセンスではないしリポジトリも公開されてない。 ライセンスは自由でなくて…

MySQL徹底入門第4版からの差分

2020年7月に出た「MySQL徹底入門 第4版」という本は MySQL 8.0.20 をベースとしてたんですが、ご存知の通り MySQL 8.0 はパッチリリースでどんどん機能が追加されてったりするんで、同じ 8.0 でも最新版とは機能の差分が出てしまってます。 ということで、自…

Ubuntu で Vuetify を始めるためのメモ

Node も npm も Yarn も Vue もよくわかってないけど見様見真似でやった。どうせ忘れるのでメモ。 Node.js のインストール OS の nodejs が入ってる場合はなんだかわからないけど依存関係でエラーになったので削除しておく。 sudo apt remove nodejs https:/…

MySQL Parameters のデータの作り方

これは MySQL Advent Calendar 2020 の 25日目の記事です。 MySQL Parameters というページのメンテをしてます。 MySQL Paramters は MySQL のバージョン間の差分を表示できるものです。 現在次のバージョンを比較できます。 5.0.96 5.1.72 5.5.58〜62 5.6.3…

Ruby Net::SMTP

Ruby Net::SMTP これは 富士通クラウドテクノロジーズ Advent Calendar 2020 と FUJITSU Advent Calendar 2020の 5日目の記事です。 会社のアドベントカレンダーですが、記事の内容は会社とは関係ありません。 nagano.rb #6 で発表したネタです。 SMTP SMTP …

MySQL 8.0.22 で `ORDER BY ?` のプリペアドステートメントがフリーズする原因

tmtms.hatenablog.com の続き。 C API だと ORDER BY ? のプリペアドステートメントでクライアントがフリーズするというのを書いたんだけど、Go だと問題ない という話があったので、MySQL のプロトコルを追ってみた。 プリペアドステートメントを発行すると…

CentOS 7 の mysql コマンドでの日本語入力

某所で CentOS 7 で mysql コマンドで日本語入力ができないという話を見かけた。 mysql> プロンプトで日本語を入力しようとしても確定すると消えてしまうらしい。 自分は Ubuntu で普通に入力できてるので調べてみた。 結論からいうと、これはロケールの問題…

MySQL 8.0.22 DNS SRV レコードサポート

MySQL 8.0.22 の新機能で DNS SRV レコードのサポートというのがあったので試してみた。 https://dev.mysql.com/doc/refman/8.0/en/connecting-using-dns-srv.html MySQLサーバー3台 (a.example.com, b.example.com, c.example.com)とそれに接続するためのク…

MySQL 8.0.22 のプリペアドステートメントの非互換

MySQL 8.0.22 のリリースノートによるとプリペアドステートメントまわりに非互換があるらしい。 https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-22.html For a prepared statement of the form SELECT expr1, expr2, ... FROM table ORDER BY ?,…

オープンソースの定義について

OSS

こんな Togetter が話題になってた。 togetter.com オープンソースソフトウェアはOSIに認められたオープンソースライセンスで配布されるソフトウェアのことであり、それ以上でもそれ以下でもない これに違和感が。「オープンソースの定義(OSD)」に準拠したラ…

MySQL の接続まわりのエラー

MySQL で Host '〜' is blocked because of many connection errors が出るのってどういうときだっけ…とふと思ったので接続周りを調べてみた。 クライアントごとの連続接続失敗によるブロック マニュアル https://dev.mysql.com/doc/refman/8.0/en/blocked-h…

MySQL Parameters - プラグインとコンポーネントを有効にして Variable も追加

MySQL Parameters というページを公開してたら @tmtms still love this https://t.co/388NNoxxfr but would be so cool to have group_replication parameters too ;-)— lefred (@lefred) 2020年7月24日 と言われたんだけど、mysqld --no-defaults --help --…

Miアカウントに「+」が含まれているとパスワードをリセットできない

諸般の事情によりMiアカウントを作った。 Miアカウントについてはこの辺参照。 win-tab.net メールアドレスで作れるんだけど、この手のやつはローカルパートに "+サービス名" をつけて作ってるので、今回も ほげほげ+mi@gmail.com で作った。 スマホで入力し…

Xiaomi Redmi Note 9S のクイック設定パネルのリセット方法

1ヶ月ほど Redmi Note 9S を使ってて、クイック設定パネルのアイコンの並び替えができないことに気がついた。 どうやら通常は「編集」というアイコンがあるらしいんだがそれがない。 どうも初期セットアップ時に Google アカウント連携して設定を引き継ぐと…

Xiaomi Redmi Note 9S

先月新しいスマホ Xiaomi Redmi Note 9S を買った。 2018/8/6 に HTC U11 life を買って2年弱。おサイフケータイと防水がついてる日本仕様なのは良かったが、そのためかアップデートが全然されない。 買った時は Android 8 だったんだけど、そのうち Android…