全力で怠けたい

怠けるために全力を尽くしたいブログ。

pixela4go が v1.10.0 にバージョンアップしました。

pixela4go が v1.10.0 にバージョンアップしました。

Pixela v1.29.0、および現時点での最新ローンチ機能である「月曜日始まりのグラフ」 に対応するバージョンアップとなります *1

v1.10.0 アップデート内容

patreon.com で 2024-12-04 にアナウンスされた「月曜日始まりのグラフ」に対応しています。 ↓こんな感じで使えます。

   client := pixela.New("YOUR_NAME", "YOUR_TOKEN")

    input := &GraphUpdateInput{
        ID:            String(graphID),
        StartOnMonday: Bool(true),
    }
    result, err := client.Graph().Update(input)

既存のたくさんのグラフを一発で「月曜日始まり」にする方法

個人的には「週明け = 月曜日」という感覚なので、「月曜日始まりのグラフ」は神アップデートだと感じています。

しかしながら、既存のグラフ (結構たくさんある) を全部更新するのは少々面倒だなあ……という気がしないでもなかったのですが、既存のグラフをワンライナーで一括して「月曜日始まり」にする方法があったので、結果的には全然面倒ではありませんでした。

拙作 pa がインストールされていれば、すべてのグラフを一発で「月曜日始まり」に変更できます。

$ pa graph get-all --username=<username> --token=<token> \
    | jq -r .graphs.[].id \
    | xargs -I@ pa graph update --id=@ --start-on-monday --username=<username> --token=<token>

現場からは以上です。

*1:現時点での Pixela の最新バージョンは v1.30.0 になりますが、グラフを描画する際に指定できるオプションが追加されたものとなりますので、pixela4go のほうでは特に対応はなく、現時点では今後の対応の予定もありません

Slack のハドルミーティングで画面共有ができなくなる事象の解消方法。

はじめに

Mac の Slack でハドルミーティング中、画面共有ができなくなった。 こちらの事象を解消した際の手順を記載する。

バージョンなど

  • macOS: Sonoma 14.5
  • Slack: 4.40.128 *1

事象

Slack のデスクトップアプリでハドルミーティング中に画面共有しようとすると、Mac の System Settings で画面録画へのアクセスを許可するよう求めるエラーメッセージが表示された。

System Settings > Privacy & Security > Screen & System Audio Recording を見ると Slack に対してアクセスがすでに許可されているように表示されているし、権限を ON => OFF => ON のように切り替えても効果がない。 たしか数日前までは問題なく画面共有できていた気がするし、はっきりとは覚えていないが画面録画のアクセス許可を変更した記憶はなく、直近では Slack をアップデートしたりといったこともなかったと思う。

↓Slack の公式サイトで紹介されている方法をすべて試したり、ネットで同様の事象を解消したといったような方法を試したが、解消しなかった。

slack.com

apple.stackexchange.com

事象を解消した方法

Slack のデスクトップアプリのアンインストール / インストールや、画面録画の権限の ON / OFF、権限自体の削除などいろいろ試しても解消しなかったが、以下の手順を行ったところ事象が解消した。

よく分からないけど、Slack のデスクトップアプリをアンインストールした後で Mac の OS の再起動を入れたのがよかったのかもしれない。

  1. System Settings > Privacy & Security > Screen & System Audio Recording を表示し、Slack の権限を削除する (- ボタンを押すほう)
  2. Slack のデスクトップアプリをアンインストールする
  3. Mac の OS を再起動する
  4. Slack のデスクトップアプリをインストールする*2
  5. Slack のデスクトップアプリを起動 > ハドルミーティング開始 > 画面共有する。権限付与するようにメッセージが表示される
  6. System Settings > Privacy & Security > Screen & System Audio Recording を表示し、Slack の権限を ON にする
  7. Slack のデスクトップアプリを再起動する

*1:何回か Slack をインストールし直したが、最後に事象が再現したバージョン

*2:App Store からインストールした

pixela4go が v1.9.0 にバージョンアップしました。

pixela4go が v1.9.0 にバージョンアップしました。

Pixela v1.28.0 に対応するバージョンアップとなります。

v1.9.0 アップデート内容

Pixela v1.28.0 で追加された /graphs/<graphID>/pixels API エンドポイントに対応しています。 ↓こんな感じで使えます。

   client := pixela.New("YOUR_NAME", "YOUR_TOKEN")

    input := &pixela.GraphUpdatePixelsInput{
        ID: pixela.String("GRAPH_ID"),
        Pixels: []PixelInput{
            {
                Date:     pixela.String("20180101"),
                Quantity: pixela.String("1"),
            },
            {
                Date:     pixela.String("20180102"),
                Quantity: pixela.String("2"),
            },
        },
    }
    result, err := client.Graph().UpdatePixels(input)

現場からは以上です。

AWS Lambda 関数のランタイムを Go 1.x => provided.al2 に移行する方法。

はじめに

Lambda 関数のランタイムを Go 1.x => provided.al2 へ移行する方法を記載する。

2ヶ月ほど前、AWS から「Amazon Linux AMI のメンテナンスサポートが 2023 年 12 月 31 日に終了するため、AWS Lambda での Go 1.x ランタイムのサポートも終了する」旨が通知されていた。

既存の Lambda 関数はサポートが終了する 2023/12/31 以降も実行できるようだが、サポートが終了するランタイムをあえて使い続ける理由もないので、Lambda 関数が使うランタイムを Go 1.x => provided.al2 へ移行した。その際に行ったことを記載していく。

お客様の AWS アカウントに現在 Go 1.x ランタイムを使用する 1 つ以上の Lambda 関数があることを確認しましたので、ご連絡いたします。

Amazon Linux AMI のメンテナンスサポートが 2023 年 12 月 31 日に終了するのに合わせて、AWS Lambda での Go 1.x ランタイムのサポートを終了します [1]。Lambda は、provided.al2 ランタイムを使用して Go プログラミング言語を引き続きサポートします。provided.al2 ランタイムを使用すると、AWS Graviton2 プロセッサのサポートや、より小さなデプロイパッケージとより高速な関数呼び出しパスによる効率的な実装など、go1.x ランタイムに比べていくつかの利点があります。詳細については、ブログ記事 [2] を参照してください。

Lambda ランタイムサポートポリシー [3] で説明されているように、Lambda での言語ランタイムのサポートの終了は 2 段階で行われます。2023 年 12 月 31 日以降、Lambda は Lambda 関数で使用される Go 1.x ランタイムにセキュリティパッチやその他アップグレードを適用しなくなり、Go 1.x を使用する関数は、テクニカルサポートの対象外となります。さらに、Go 1.x ランタイムを使用する新しい Lambda 関数を作成できなくなります。2024 年 1 月 30 日以降、Go 1.x ランタイムを使用して既存の関数を更新することができなくなります。

2023 年 12 月 31 日までに、既存の Go 1.x 関数を provided.al2 ランタイムにアップグレードすることをお勧めします。

サポートの終了は機能の実行には影響しません。関数は引き続き実行されます。しかしながら、AWS Lambda チームによるメンテナンスやパッチ適用がされない、サポートされていないランタイムで実行されることとなります。

Go 1.x => provided.al2 への変更

Go 1.x から provided.al2 へ移行するために必要な作業は、次のとおり。

  • 実行ファイルの名前を bootstrap にする
  • 使用するランタイムを Go 1.x => provided.al2 に変更する (当たり前だが)
  • aws-lambda-go のバージョンを v1.18 以降にアップグレードする。 もともと v1.18 以降を使っている場合は不要

Go 1.x ランタイムを使用している Lambda 関数の確認方法

$ aws lambda list-functions \
    --function-version ALL \
    --region <リージョン> \
    --output text \
    --query "Functions[?Runtime=='go1.x'].FunctionArn"

参考サイト

MySQL でテーブル定義情報を表示する方法。

MySQL でテーブル定義情報を表示する方法を記載する。

MySQL のバージョン。

mysql> SELECT VERSION();
+-----------+
| version() |
+-----------+
| 8.0.34    |
+-----------+
1 row in set (0.00 sec)

テーブル内のカラムに関する情報を表示する方法

DESCRIBE ステートメント

DESCRIBE <テーブル名> を実行すると、指定したテーブルのカラムに関する情報を表示できる。

mysql> DESCRIBE servers;
+-------------+----------+------+-----+---------+----------------+
| Field       | Type     | Null | Key | Default | Extra          |
+-------------+----------+------+-----+---------+----------------+
| ID          | int      | NO   | PRI | NULL    | auto_increment |
| Name        | char(35) | NO   |     |         |                |
| CountryCode | char(3)  | NO   | MUL |         |                |
| District    | char(20) | NO   |     |         |                |
| Population  | int      | NO   |     | 0       |                |
+-------------+----------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

DESCRIBE の省略系の DESC もある ((DESC ステートメント自体が SHOW COLUMNS ステートメントのシノニムである)) DESC のほうがタイプ数が少なくて済むので、普段使いするにはこちらのほうが楽だろう。

後述する SHOW CREATE TABLE とは違い、テーブルの制約やパーティションに関する情報は表示されないが、カラムに関する情報を得るだけならばこちらで十分ではある。

SHOW CREATE TABLE ステートメント

SHOW CREATE TABLE <テーブル名> を実行すると、指定したテーブルを作成する CREATE TABLE ステートメントを表示できる。

DESCRIBE ステートメントはテーブルのカラムに関する情報のみを得られたが、こちらはテーブルの制約やパーティションに関する情報を得ることができる。 また、任意のテーブルと同じ構造のテーブルを別名で作成したい、といったときにはこちらのほうが楽だろう。

mysql> SHOW CREATE TABLE city;
| Table | Create Table                                                                 |
| city  | CREATE TABLE `city` (
  `ID` int NOT NULL AUTO_INCREMENT,
  `Name` char(35) NOT NULL DEFAULT '',
  `CountryCode` char(3) NOT NULL DEFAULT '',
  `District` char(20) NOT NULL DEFAULT '',
  `Population` int NOT NULL DEFAULT '0',
  PRIMARY KEY (`ID`),
  KEY `CountryCode` (`CountryCode`),
  CONSTRAINT `city_ibfk_1` FOREIGN KEY (`CountryCode`) REFERENCES `country` (`Code`)
) ENGINE=InnoDB AUTO_INCREMENT=4080 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
1 row in set (0.00 sec)

参考サイト

GoLand でコード補完が一切効かなくなってしまったときの対処方法。

はじめに

GoLand でコード補完が一切効かなくなってしまったときの対処方法を記載する。

GoLand のバージョン: 2023.2.3

対処方法

GoLand を再起動する

GoLand を再起動することにより、コード補完が効くようになることがある。

キャッシュをクリアする

GoLand のキャッシュをクリアすると、コード補完が効くようになることがある。

GoLand はコード補完を行うためにプロジェクトファイルをキャッシュしているが、ときどきキャッシュが壊れることがあるようで、結果としてコード補完が効かなくなることがあるらしい。 GoLand のキャッシュを削除 & 再起動することでキャッシュが再作成され、コード補完が効くようになる。 自分の経験上では、これで 100% 解決している。

  1. GoLand のメニューから File > Invalidate Caches...を実行する
  2. Invalidate Caches ダイアログにて、クリアするキャッシュにチェックを付けて、Invalidate and Restart ボタンを押す
  3. GoLand が再起動されてインデックスの再作成が始まるので、再作成が完了するまで待つ

JetBrains 製の他の IDE の場合

JetBrain 製の他の IDE でも、同じようにしてコード補完の問題に対処できる。

参考