-
概要 tmuxとはターミナルマルチプレクサの略で、主にターミナルで複数のセッション管理ができるツールである。 セッション管理以外にも画面分割をしたり、Vimのキーバインドでターミナル内の文字列をコピー&ペーストができる。 10年以上前に教えてもらって長らくターミナルと組み合わせて使っていたのだけど、最近ではSSHをすることも少なくなり、セッション管理としての用途はほぼ使わなくなってきたものの、画面の分割やコピペはまだまだ重要な機能として使っている。 特に、証跡としてterraform plan結果をガッとコピーしてSlackのテキストスニペットに貼り付けるなどで多用しているし、ターミナルを遡るスクロールにもVimキーバインドが便利なので活用していた。 課題 先述の通り、セッション管理としてはほぼ使っておらず、無くても困らなくなってきた。 なので画面分割とコピペができれば十分なのである。 また、tmuxはどうしても重くなりがちで、zshのcompletion系も相まって、起動が遅かったりする。 他にもVSCodeのターミナルとtmuxの相性が悪かったりするので、VSCodeのターミナルモードをやめることにもなった。 長らくiTerm2+tmuxを使っていたが、数年前にやめてVSCode+tmuxにしつつ、バグったりするのが嫌でこの間までAlactritty+tmuxを使っていた。 AlacrittyもRustで書かれていて動作は軽快だったが、複数ウィンドウを作成できないことからtmuxを抜け出せずにいた。 そこで、Weztermにたどり着いた。 要件 複数ウィンドウを管理できる Vimキーバインドでコピー&ペースト、移動ができる Vimキーバインドで画面の分割ができる 使ってみて まず、WeztermはAlactittyと異なり、アプリケーション側で複数のウィンドウをタブで管理ができる。 つぎに設定ファイルをLuaで記述することができ、かなり柔軟に対応することができる。 結果、下記の設定で、tmuxの画面分割、およびVimキーバインドでコピー&ペーストができるようになった。 $HOME 直下にある ~/.wezterm.lua が設定ファイルなので修正すればOK. -- Pull in the wezterm API local wezterm = require 'wezterm' -- This will hold the configuration. local config = wezterm.config_builder() local config = { -- Font font = wezterm.font { family = 'Hack Nerd Font Mono', weight = 'Bold', }, font_size = 16.Created
Thu, 01 Aug 2024 22:50:49 +0900 -
納車 先週の日曜日、ついに待ちにまったCX-30 20s Retro Sports Editionが納車だった。 納車はいつもの打ち合わせスペースではなく、3階の特別スペースで行われた。 保険の契約や最終納車手続きをiPadで実施するもので、全てシステム化されていたのは流石というところ。 煩雑な手続きにひたすらボールペンで文字を書くというのは、終わりを迎えつつあるのかもしれない。 20s Retro Sports Edition これはノーマルのエディションよりも価格が高い。 その代わりに革張りだったり、ブラックのホイールやフロントパネル、サイドミラーに加えて、BOSEのスピーカーが標準搭載されている。 車で音楽やラジオを聴くのが好きなので、これは嬉しいオプションである。 HONDAのヴェゼルと比較検討したところ、価格が30万くらいヴェゼルのほうが高かったというのはあるものの、最終的にこのオプションで決定したと言っても過言ではない。 ジルコンサンドメタリックというちょっと変わったカラーではあるものの、この渋い色がとても気に入っていて、これにブラックなポイントがついているのが最高にカッコいい。 新車を手に入れたのは人生で初めて。大事に長いこと乗っていきたいと思う。 なお、子供には謎に五右衛門という命名がされている。Created
Mon, 08 Jul 2024 23:35:27 +0900 -
概要 なんとなく思うところがあり、WordPressで運用するメリットもなくなってきたので思い切ってHugoへ移行した。 やはり静的サイトになって軽くなるのが一番良いかなと思っている。 その分使い勝手はわるくなるかもしれないが、Markdown使えるしまぁよいかなと。 静的サイトにしておけば、最悪VPSをやめるもできると思うのでとりあえず満足。 ただ、唯一意味がわからなかったのがGitHub Actionsでデプロイしたときにhugo --minifyでUnable to locate config file or config directoryと出てしまう点だけよくわからず、最終的には hugo --minify --config hugo.toml で指定して回避してる。 これだけは謎い。Created
Fri, 05 Jul 2024 02:37:01 +0900 -
6月8日 10時〜12時 副業先のElastiCacheのアップデート対応と、SendGridの新しいアカウントでSenderAuthenticationの設定を追加。 本業でElastiCache関連は色々対応していたものもあり、余裕を持ってできたし、SendGridの認証は何度も何度もやってきた。なんなら前職でも前々職でも副業でもやってきたので流石に慣れた。 13時〜18時 カーシェアで借りた車で練馬と新宿のショールームに行って、キッチンを見たり玄関扉とかリビング用の扉を見るなどした。結構面白い。 あと、ショールームのお姉さんから、普段気にもしていなかったようなオプションの提案をされて、気づきを与えることで売上に貢献するという手法を学んだ。 18時〜21時 ジムに行って筋トレとランニングと風呂。ベンチプレスを真剣にやろうと思い、とりあえず40kgから始めてみることにした。ランニングは5km走った。 22時〜23時 Meetを使ってメンタリング。某プログラミングスクールの課題が難しいとのことで復習の相手として少しお高めの個別プランで対応。 いろいろな例えを使って説明するのはなかなか骨が折れるが、自分自身の振り返りにもなり、良い体験となっている。 6月9日 10時〜12時 MAZDAに行って書類の手続き。あとは納車待ちだ。楽しみ。 納車日についてはまだ連絡が無いので、いまかいまかと連絡待ちしている。 13時〜18時 電車で移動して、住宅の打ち合わせ。インテリアコーディネーターの人がいるとだいぶ話が早いしイメージもしやすくて助かる。 3色くらいで部屋のコーディネートをするとか、気になった1色が別の1色にも少し含まれていると印象が統一しやすいということを学んだ。 21時〜22時 DBのアップグレードメンテ、RDSのMySQL8移行を実施した。 スナップショットを取得して、取得したスナップショットからアップグレードができることは別のお客さんで実施済みだったのでスムーズに移行できたので良かった。 この土日は一日で3つくらいの大物を対応していった。 お陰で諸々の話がだいぶスムーズに進むことができたので、疲れることは疲れたものの、焦りのようなものが無くなったので終わってはいないものもあるがそれなりの達成感を得る事ができた。 とはいうものの、落ち着いたらどこかで何もしないDayとかは作りたい。Created
Tue, 11 Jun 2024 16:40:15 +0000 -
1/16 (火) 開催!Incident Response Meetup vol.1 @Sansanさんオフィス 前半はいつもの気になった点のメモです。後半が感想。 ハッシュタグは #障害対応 木村 誠明さん(「システム障害対応の教科書」著者) 障害対応→ダメージコントロールの世界 障害対応教育 暗黙知が殆んど、有識者はいつもいるわけではない 教育が難しい 障害対応の目的 システムを直すことではない ユーザ影響の回避、低減 インシデントコマンダーとは 必要な作業を各担当へ割り振り、実施指示を行い全体をリード 復旧要件、復旧仕様を決める システムの復旧が最善の道とは限らない ICと作業担当者は分ける 機械的な判断で人を巻き込む(人の判断をなるべくいれないことで心理的負荷を下げる) 情報をフローとストックにわける フローはタイムライン ストックは障害レベル、事象など WarRoom 障害対応の専用の部屋 物理、仮想は文化による 不慣れなツールは使えない インシデントコマンダーになるには インシデントコマンダーを育てる 作業担当としてオンコール参加、書記、窓口を経て Q&A 体系的に軍事が参考になることも 障害ランクの定義により、報告ラインを定義 ICをスイッチするはある(宣言する) あんどうさん @integrated1453(株式会社ユーザベース) グループ 1200名 エンジニア 70名 オンコールシフト、PagerDuty 記者等に話をすることもあるので、横文字は日本語にしている(ポストモーテム→障害撲滅委員会) BizメンバーのSOSはSlackからPagerDuty→運用当番 SRE Bookの信頼性の階層 monitoringが一番下 検知してからエンジニアのアサインに時間がかかると障害復旧までの時間がかかる 運用当番が手を動かそうとするCreated
Tue, 16 Jan 2024 16:43:49 +0000 -
まず、最初に今年掲げた目標の振り返りをやっていく。 ダイエット: (1/1開始72.3kg, 目標65kg) 1月: 70.1kg(-2.2kg) 2月: 71.1kg(-1.2kg, 前月比+1.0kg) 3月: 68.4kg(-3.9kg, 前月比-2.7kg) 4月: 69.0kg(-3.3kg, 前月比+0.6kg) 5月: 68.9kg(-3.4kg, 前月比-0.1kg) 6月: 67.8kg(-4.5kg, 前月比-1.1kg) 7月: 67.5kg(-4.8kg, 前月比-0.3kg) 8月: 67.1kg(-5.2kg, 前月比-0.4kg) 9月: 65.4kg(-6.9kg, 前月比-1.7kg) 10月: 66.0kg(-6.3kg, 前月比+0.6kg) 11月: 66.5kg(-5.8kg, 前月比+0.5kg) 12月: 66.2kg(-6.1kg, 前月比-0.3kg) 達成率: 83% 65kgに到達したこともありつつ、65kg〜66kgの間を推移していた月だった。 惜しかったなぁという気持ちもありつつ、6〜7kg落とせたので上々だったということにしておく。 読書量年間50冊 1月: 4冊 2月: 3冊, 7 3月: 1冊, 8 4月: 3冊, 11 5月: 1冊, 12 6月: 2冊, 14 7月: 7冊, 21 8月: 2冊, 23 9月: 3冊, 26Created
Sun, 31 Dec 2023 09:06:33 +0000 -
概要 最近、Aurora2(MySQL5.7)だったクラスターをAurora3(MySQL8.0)にアップグレードしたところ、特定のクエリだけが失敗するという事象があった。 ClowdWatchLogsに出力していたerrorログには /tmp/xxx is full! と出力されていた。 Aurora2(MySQL5.7)の時代にはなかったことだったので、Aurora3(MySQL8.0)によるものであることはわかり、それが新しく採用されたTempTableストレージエンジンによるものであることがわかった。 TempTableストレージエンジンとはどういったものか、Aurora3の仕様もあわせて色々わかったので記録をしておこうと思います。 最初に結論 Aurora2からAurora3にアップグレードする際には temptable_max_ram と temptable_max_mmap の値を必ず確認して、必要に応じて調整したほうが良い。 TempTableストレージエンジンとは 詳細な説明は下記を参照してもらうとして、ざっくり説明すると内部一時テーブルを使うようなクエリを実行した場合に、MySQL5.7のときにつかっていたInnoDBテーブルではなくメモリを利用したストレージエンジンとなり、5.7のときよりも効率的にクエリを処理することができるようになったストレージエンジンのことを指す。 https://dev.mysql.com/doc/refman/8.0/ja/internal-temporary-tables.html TempTableストレージエンジンでは temptable_max_ram を上限としてオンメモリで処理されて、それを超えると、temptable_max_mmap を上限として、mmap()システムコールにより、ローカルストレージにファイルを作成して、仮想メモリにマッピングを行う。 ページサイズ単位(Linuxではデフォルト4KiB)でメモリ上にデータがロードされるので、InnoDBテーブルに変換される場合よりも、効率的(可変長)で高速に処理される。 では、temptable_max_mmap を超えたサイズのデータをクエリするような場合はどのような挙動になるか。 MySQL8.0の挙動 Aurora3に関わらず、MySQL8.0の仕様では、temptable_max_mmap を超えると、InnoDBテーブルに書き込むようになる。 つまり、遅くはなるけど処理は継続される。 Aurora3の挙動 Aurora3ではどうなるかというと、ライターとリーダーで挙動が異なる。 ライターはMySQL8のデフォルトの挙動と同じになるが、リーダーの場合は temptable_max_mmap の値を超えると /tmp/xxx is full!とエラーが出力されてクエリが失敗する。 temptable_max_ram と temptable_max_mmap はデフォルト1GiBなので、合計2GiBを超えるようなクエリは失敗して終了してしまう。 原因についてはAWSサポートにも確認してわかっているが、まずAuroraは共有ストレージを採用しており、 そして、リーダーインスタンスは共有ストレージを参照は可能だが、書き込みはできない。 内部一時テーブルを作成するのにあたり、ライターは問題にならないがリーダーインスタンスで、MySQL5.7のときは共有ストレージではなく、ローカルストレージにMyISAMとして書き込みを行う仕様だった。 リーダーインスタンスでは、オンディスク一時テーブルはローカルストレージを使用する MyISAM ストレージエンジンを使用します。これは、読み取り専用インスタンスでは Aurora クラスターボリュームにデータを保存できないためです。 https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.CompareMySQL57.html MySQL8.0.16以降、内部一時テーブルのストレージエンジンを指定していた internal_tmp_disk_storage_engine が廃止されて、デフォルト InnoDB となった。 Auroraでもこの仕様に則り、Aurora2では internal_tmp_disk_storage_engine が適用され、Aurora3では internal_tmp_mem_storage_engineが適用されるようになった。 パラメータグループをみても、Aurora2のときにあった internal_tmp_disk_storage_engine は Aurora3では見当たらず、かわりに internal_tmp_mem_storage_engine のみが存在する。 https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Reference.ParameterGroups.html internal_tmp_mem_storage_engine はメモリを使った内部一時テーブルの処理のみとなり、デフォルトが TempTable で、MEMORY にも変更は可能である。MySQL Created
Thu, 28 Dec 2023 15:02:12 +0000 -
概要 MySQLのLIMITを使ったクエリでは、ORDER BYの結果が変わるというものがある。 https://dev.mysql.com/doc/refman/8.0/ja/limit-optimization.html それについて手元で検証した。 使用する環境 MySQL8.0のDocker。ただし、MySQL5.7でも同様の事象が確認できると思われる。 FROM --platform=linux/x86_64 mysql:8-debian ENV LANG ja_JP.UTF-8 ENV LANGUAGE ja_JP:ja ENV LC_ALL ja_JP.UTF-8 ENV MYSQL_ALLOW_EMPTY_PASSWORD=yes RUN useradd mysqld COPY mysqld_charset.cnf /etc/mysql/conf.d/mysqld_charset.cnf ADD world-db.tar.gz /docker-entrypoint-initdb.d/ CMD ["mysqld"] テストデータ 下記のようなテストデータを作成した。 mysql> select * from item order by created_at limit 20; +----+------+---------------------+ | id | name | created_at | +----+------+---------------------+ | 68 | 0 | 2023-12-20 18:00:00 | | 64 | 0 | 2023-12-20 18:00:00 | | 65 | 0 | 2023-12-20 18:00:00 | | 66 | 0 | 2023-12-20 18:00:00 | | 67 | 0 | 2023-12-20 18:00:00 | | 60 | 0 | 2023-12-20 19:00:00 | | 63 | 0 | 2023-12-20 19:00:00 | | 62 | 0 | 2023-12-20 19:00:00 | | 61 | 0 | 2023-12-20 19:00:00 | | 59 | 0 | 2023-12-20 19:00:00 | | 52 | 0 | 2023-12-20 20:00:00 | | 46 | 0 | 2023-12-20 20:00:00 | | 44 | 0 | 2023-12-20 20:00:00 | | 47 | 0 | 2023-12-20 20:00:00 | | 53 | 0 | 2023-12-20 20:00:00 | | 43 | 0 | 2023-12-20 20:00:00 | | 45 | 0 | 2023-12-20 20:00:00 | | 51 | 0 | 2023-12-20 20:00:00 | | 49 | 0 | 2023-12-20 20:00:00 | | 33 | 0 | 2023-12-20 20:00:00 | +----+------+---------------------+ 20 rows in set (0.Created
Wed, 20 Dec 2023 14:03:31 +0000 -
はじめに これは株式会社マクアケのアドベントカレンダー2023の17日目の記事です。 SREチームに所属する稲村です。 最近は久しぶりにランニングを再開して、よく走るようになったものの体力の衰えを実感しているもうすぐ四十路のおじさんです。 さて、今回はスクラム関連の記事です。 スクラムについては、私は完全なスクラム開発自体はほぼ未経験で、前職でもスクラム風な一部を省略する形でスクラムを実践してきました。 通常、スクラムのプラクティスを省略するのはアンチパターンと言われてスクラムバットと言うそうですが、まずはやってみる精神で進めていた状況でした。 スクラムについては、過去に下記の書籍を読んではいました。 <div class="naaa-product naaa-product-h"> <div class="naaa-product-thumb"> <img decoding="async" class="naaa-product-img-h" src="https://i0.wp.com/m.media-amazon.com/images/I/51YUJzbRtwL._AC_AC_SR250,250_.jpg?w=750&ssl=1" alt="いちばんやさしいアジャイル開発の教本 人気講師が教えるDXを支える開発手法 「いちばんやさしい教本」シリーズ" data-recalc-dims="1" /> </div> <div class="naaa-product-title naaa-product-title-h"> いちばんやさしいアジャイル開発の教本 人気講師が教えるDXを支える開発手法 「いちばんやさしい教本」シリーズ </div> <div class="naaa-product-price"> <div class="naaa-product-price-h"> </div> </div> <div> <div class="naaa-product-action"> <div class="naaa-product-button naaa-product-button-border"> 見てみる </div> </div> </div> <div class="naaa-rating-and-review-h"> <span class="naaa-product-rating"> <fieldset class="naaa-rating" id="6686b532c1057"> <input type="radio" class="naaa-input-star" name="6686b532c1057" value="10" /><label class="naaa-full naaa-label-star" title="3.9 de 5"></label><input type="radio" class="naaa-input-star" name="6686b532c1057" value="9" /><label class="naaa-half naaa-label-star" title="3.Created
Sun, 17 Dec 2023 00:00:44 +0000 -
ダイエット: (1/1開始72.3kg, 目標65kg) 1月: 70.1kg(-2.2kg) 2月: 71.1kg(-1.2kg, 前月比+1.0kg) 3月: 68.4kg(-3.9kg, 前月比-2.7kg) 4月: 69.0kg(-3.3kg, 前月比+0.6kg) 5月: 68.9kg(-3.4kg, 前月比-0.1kg) 6月: 67.8kg(-4.5kg, 前月比-1.1kg) 7月: 67.5kg(-4.8kg, 前月比-0.3kg) 8月: 67.1kg(-5.2kg, 前月比-0.4kg) 9月: 65.4kg(-6.9kg, 前月比-1.7kg) 10月: 66.0kg(-6.3kg, 前月比+0.6kg) 11月: 66.5kg(-5.8kg, 前月比+0.5kg) 達成率: 79% 読書量年間50冊 1月: 4冊 2月: 3冊, 7 3月: 1冊, 8 4月: 3冊, 11 5月: 1冊, 12 6月: 2冊, 14 7月: 7冊, 21 8月: 2冊, 23 9月: 3冊, 26 10月: 3冊, 29 11月: 1冊, 30Created
Tue, 05 Dec 2023 14:34:38 +0000