@ledsun blog

無味の味は佳境に入らざればすなわち知れず

Laravelの門を叩く

あらためてLaravelの門をくぐろうとしてdocker runコマンドの--pullフラグにつまずく - @ledsun blogの続きをします。

curl -s 'https://laravel.build/example-app?php=82' | bash

を実行します。

[+] Running 0/0
 ⠋ selenium Pulling                                                                                                                                 0.1s
 ⠋ redis Pulling                                                                                                                                    0.1s
 ⠋ meilisearch Pulling                                                                                                                              0.1s
 ⠋ mysql Pulling                                                                                                                                    0.1s
 ⠋ mailhog Pulling                                                                                                                                  0.1s
error getting credentials - err: exec: "docker-credential-desktop.exe": executable file not found in $PATH, out: ``
[+] Building 0.7s (3/3) FINISHED
 => [internal] load build definition from Dockerfile                                                                                                0.0s
 => => transferring dockerfile: 2.74kB                                                                                                              0.0s
 => [internal] load .dockerignore                                                                                                                   0.0s
 => => transferring context: 2B                                                                                                                     0.0s
 => ERROR [internal] load metadata for docker.io/library/ubuntu:22.04

エラーが起きています。 docker-credential-desktop.exeでググります。 【メモ】Docker Desktop for Windowsで”docker-credential-desktop.exe: Invalid argument” | Takeshi Yonezu を見つけました。

Issue #12355でコメントされている対応方法のうち、2つが簡単でエラーを解消することができています。

  • $HOME/.docker/config.jsonを削除してしまう。
  • $HOME/.docker/config.jsonを編集して、{"credsStore": "desktop.exe"}を{"_credsStore": "desktop.exe"}にする。

Docker Desktopの残骸のようです。 rm ~/.docker/config.jsonします。

curl -s 'https://laravel.build/example-app?php=82' | bash

をもう一度実行すると、すごい勢いでいろんなイメージをpullして環境構築されていきます。 普段使っているRuby on Railsに比べると大分豪快です。

つづいて指示に従ってcd example-app && ./vendor/bin/sail upを実行します。

6379ポートがかぶっています。

エラーが起きています。

Error starting userland proxy: listen tcp4 0.0.0.0:6379: bind: address already in use

ローカルで動いているRedisとポート番号が被っています。 初手でRedisまで連れてくるんですね。

sudo service redis stopして、もう一度

80番ポートが被っています。

WindowsApacheを起動しているのを忘れていました。 一旦ここまでです。

WSL2のUbuntuでdocker run --pullが使えてました

WSL2のUbuntuでdocker run --pullが使えない - @ledsun blog でした。 試しにMacOSで試してみます。

~/hello_laravel[1]►curl -s 'https://laravel.build/example-app' | bash
latest: Pulling from laravelsail/php82-composer
3f4ca61aafcd: Pull complete
460703cf6140: Pull complete
eba06349db87: Pull complete
9130a4183abd: Pull complete
c5985e9936b4: Pull complete
dd46959f6994: Pull complete
5683f482de2e: Pull complete
fcd5aae60867: Pull complete
b88374f492c2: Pull complete
4a9a84d9852e: Pull complete
928b5139ef08: Pull complete
39d385eafcdc: Pull complete
4f4fb700ef54: Pull complete
07fd347431c3: Pull complete
0e9ac5262ee9: Pull complete
Digest: sha256:c489811fc30df249b5061463e9886a53a1bf6c0674fd923e145764c3e963e216
Status: Downloaded newer image for laravelsail/php82-composer:latest

   _                               _
  | |                             | |
  | |     __ _ _ __ __ ___   _____| |
  | |    / _` | '__/ _` \ \ / / _ \ |
  | |___| (_| | | | (_| |\ V /  __/ |
  |______\__,_|_|  \__,_| \_/ \___|_|

   WARN  TTY mode requires /dev/tty to be read/writable.

動きそうです。 バージョンを確認しておきます。

~/hello_laravel►docker --version
Docker version 20.10.12, build e91ed57

MacOSではDocker Desktopを使っています。 WSLではUbuntuに直接Dockerをインストールしました。 この違いが原因なのでしょうか?WindowsにもDocker Desktopをインストールしてみましょう。 Download Docker Desktop | Dockerからインストーラーをダウンロードします。

WSLがインストールされていることを認識していそうです。

こんな感じでインストールが進んでいきます。

ログアウトします。

同意を求められます。

そういえばDocker Desktopは有料化したんですね。 仕事で使う時はライセンスに違反していないか注意が必要です。

チュートリアルがあります。

ターミナルがあったので試しにコマンドを打ってみました。

--pullフラグを認識しています。

あれ?前回試した時ってこんなエラーメッセージでしたっけ? 試したコマンドが違いました。 docker run --pull hello-worldでした。

同じエラーメッセージが出るっす

バージョンもビルドも一緒ッス

Docker Desktopをアンインストールするっす。

アンインストールします。

docker run --pull使えてました

がびーん

WSL2のUbuntuでdocker run --pullが使えない

Laravelの門をくぐろうとしてdocker runコマンドの--pullフラグにつまずく - @ledsun blog のつづきです。

AIに相談してみます。

version1.3以上が必要だそうです。

ずいぶん昔から使えるフラグのようです。 自分の環境に入ってるdockerが何かおかしそうです。 ていうかこんなことまで知ってるんですね・・・すごい。

WSLにDockerをインストールする - @ledsun blog をみると、ちょっと前ですね。 再インストールしてみましょうか。

Install Docker Engine on Debian | Docker Documentation を参考にします。

ledsun@MSI:~/hello_laravel$ sudo apt-get update
Hit:1 https://cli.github.com/packages stable InRelease
Get:2 https://dl.google.com/linux/chrome/deb stable InRelease [1811 B]
Hit:3 https://deb.nodesource.com/node_18.x focal InRelease
Ign:4 https://download.docker.com/linux/debian jammy InRelease
Get:5 https://dl.google.com/linux/chrome/deb stable/main amd64 Packages [1075 B]
Hit:6 https://packages.redis.io/deb jammy InRelease
Hit:7 http://archive.ubuntu.com/ubuntu jammy InRelease
Err:8 https://download.docker.com/linux/debian jammy Release
  404  Not Found [IP: 13.32.50.48 443]
Get:9 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Get:10 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [114 kB]
Get:11 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [99.8 kB]
Get:12 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [831 kB]
Get:13 http://archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 Packages [566 kB]
Get:14 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [785 kB]
Get:15 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 c-n-f Metadata [14.6 kB]
Reading package lists... Done
E: The repository 'https://download.docker.com/linux/debian jammy Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

なんかエラーがでます。 参考にするページを間違えていました。 Install Docker Engine on Ubuntu | Docker Documentation でやり直します。 インストールするとdocker runコマンドが使えました。

ledsun@MSI:~/hello_laravel$ sudo docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

ということは・・・

ledsun@MSI:~/hello_laravel$ sudo docker run --pull hello-world
"docker run" requires at least 1 argument.
See 'docker run --help'.

Usage:  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Run a command in a new container

ダメでしたー。 ちなみにバージョンは20に上がりました。

ledsun@MSI:~/hello_laravel$ docker --version
Docker version 20.10.23, build 7155243

Laravelの門をくぐろうとしてdocker runコマンドの--pullフラグにつまずく

https://laravel.com/docs/9.x/installation#getting-started-on-windows を参考にします。

Dockerはすでにいれてあります。 curl -s https://laravel.build/example-app | bashを実行します。

ledsun@MSI:~/hello_laravel►curl -s 'https://laravel.build/example-app' | bash
unknown flag: --pull
See 'docker run --help'.
bash: line 17: cd: example-app: No such file or directory
bash: line 19: ./vendor/bin/sail: No such file or directory
bash: line 20: ./vendor/bin/sail: No such file or directory

Get started with: cd example-app && ./vendor/bin/sail up

エラーがでます。 実行されるシェルスクリプトを見てみます。

docker info > /dev/null 2>&1

# Ensure that Docker is running...
if [ $? -ne 0 ]; then
    echo "Docker is not running."

    exit 1
fi

docker run --rm \
    --pull=always \
    -v "$(pwd)":/opt \
    -w /opt \
    laravelsail/php82-composer:latest \
    bash -c "laravel new example-app && cd example-app && php ./artisan sail:install --with=mysql,redis,meilisearch,mailhog,selenium "

cd example-app

./vendor/bin/sail pull mysql redis meilisearch mailhog selenium
./vendor/bin/sail build

CYAN='\033[0;36m'
LIGHT_CYAN='\033[1;36m'
BOLD='\033[1m'
NC='\033[0m'

echo ""

if sudo -n true 2>/dev/null; then
    sudo chown -R $USER: .
    echo -e "${BOLD}Get started with:${NC} cd example-app && ./vendor/bin/sail up"
else
    echo -e "${BOLD}Please provide your password so we can make some final adjustments to your application's permissions.${NC}"
    echo ""
    sudo chown -R $USER: .
    echo ""
    echo -e "${BOLD}Thank you! We hope you build something incredible. Dive in with:${NC} cd example-app && ./vendor/bin/sail up"
fi
docker run --rm \
    --pull=always \
    -v "$(pwd)":/opt \
    -w /opt \
    laravelsail/php82-composer:latest \
    bash -c "laravel new example-app && cd example-app && php ./artisan sail:install --with=mysql,redis,meilisearch,mailhog,selenium "

でエラーが出ているみたいです。 確かめてみましょう。

ledsun@MSI:~/hello_laravel►docker run --rm \
                                   --pull=always \
                                   -v "$(pwd)":/opt \
                                   -w /opt \
                                   laravelsail/php82-composer:latest
unknown flag: --pull
See 'docker run --help'.

やはりここです。 Dockerのバージョンがちがうのでしょうか?

ledsun@MSI:~/hello_laravel[125]►docker --version
Docker version 19.03.12, build 48a66213fe

docker run — Docker-docs-ja 20.10 ドキュメント には--pullフラグはありませんでした。 ということはDockerコマンドが古すぎるわけではなさそうです。 新しすぎるのでしょうか?

ググってもよくわからないです。 Installation - Laravel - The PHP Framework For Web Artisans をホストしているのは公式なのでしょう。 ということはそのソースコードGitHubにありそうです。 探してみましょう。

https://github.com/search?q=org%3Alaravel+build でさがしてみました。

The build website という表示が臭いです。

このリポジトリにはIssueはありません。 PullRequestを探してみます。

Always pull the latest install image by jessarcher · Pull Request #12 · laravel/sail-server · GitHub ですね。 まさにこのオプションを追加しています。 4ヶ月も前にマージされています。 問題があるならすでに他に気がついている人がいそうです。 となると、期待するdockerの環境に違いがありそうです。

PullRequestから参照されているhttps://docs.docker.com/engine/reference/commandline/run/#-set-the-pull-policy---pullを見てみます。

--pullフラグの説明があります。

え?あれ?さっき確認したマニュアルは、一体? ていうかどうやってpullポリシーを使えば良いですか?

OKRとMBO

OKRとMBO(目標管理)って何がちがうのかよくわかっていませんでした。

マネージング・フォー・ハピネスの「第8章 メトリクスエコシステムとスコアボードインデックス」に

グッドハートの法則(Goodhart's law)では、「ある計測結果が目標になると、それは適切な計測ではなくなると言われている。

(中略)

Googleはこの問題を解決するため、従業員に困難な目標を複数設定させ、すべてを達成できなくともいいというメッセージを強く伝えた。

と、ありました。 これがOKRの特徴だったんですね。

仕事だと100点取れる人より、死なない人の方が頼りになります。 一方、100点を取れないことを気にしすぎる人もいます。

  • 10回仕事して10回60点を取る人
  • 10回仕事して9回100点とって、最後の1回でミスって辞めてしまう人

この場合前者の方が大分頼りになります。 OKRって、前者になれよってことだったんですね。

あと、後者の人って下に人をつけると減点法で指導しはじめるのが難しいところなんですよね・・・。

マネージング・フォー・ハピネス その2

マネージング・フォー・ハピネス - @ledsun blog を読み始めました。 全12章のうち9章まで読みました。

評価と報酬

今の欲ある評価と報酬の制度はバグっているっぽいです。 いや、バグっているの制度じゃなくて、多分受け取る方の人間です。

どうも自分を含め人間というのは報酬から自分の評価を推測しようとするようです。 「同僚のAさんより報酬が高いから、会社から評価されている」とか 「同業者のBさんより報酬が高いから、社会から評価されている」とか 考えてしまうようです。 あげく「経理のCさんより報酬が高いから、自分の方が貢献度が高い」みたいなことを推測するみたいです。 さらに「役員Dさんの取り分が多すぎるとか、株主Eさんへの配当が高すぎる」とかも考えたりします。

報酬と「自分の評価」って、相関はあっても因果はないやつですよね。 給与の額はどっちかというと転職市場での相場と流動性が高い職種かに依存していそうです。

そもそも自分が、気にしているのは「自分のはたらきが人の役に立っているのか」なのかもしれません。 それを確認できないから、他人と報酬を比べて「Fさんより報酬が高いから、自分は必要とされているはず」と推測されているのかもしれません。

報酬と評価を分離して「自分が人の役に立っている、必要とされている」を感じれる機会を増やすといい。 そういう話かな?と思って読んでいます。

と言う話はマネジメント3.0の方に書かれているのでしょうか?

いまより高い頻度で評価を受け取れば、報酬から評価を推測することをやめられるのかもしれません。 上司以外のいろんな人から評価を受け取れば、報酬から評価を推測することをやめられるのかもしれません。

評価と報酬の制度を分離できれば、評価は質と頻度を高める工夫をすればよく、報酬は相場に負けないようにすればよく、もっとシンプルな制度設計ができるのかもしれません。

Railsのタスクを作成する

あるRailsアプリケーションではファイルアップロードのジョブの途中で失敗すると、処理途中のレコードやアップロードしたファイルが残ります。

削除の手順はわかっています。 次の2つのコマンドでDBに残ったデータとアップロードしたファイルが消せます。

bin/rails runner 'Job.destroy_all'
rm -rf tmp/upload-*

2つのコマンドを実行するのは手間です。 どうしましょうか?

Railsにはタスクという機能があります。 bin/rails serverbin/rails db:prepareなどです。 これと同じような手順で実行出来ると良さそうです。 コマンドはそうですね。 bin/rails job:cleanで実行できたらいいと思います。

Railsにはタスクのテンプレートを生成するコマンドがあります。 今回のタスクはjob:cleanなので、次のように生成します。

bin/rails g task job clean

すると次のようなファイルが出来ます。

namespace :job do
  desc "TODO"
  task clean: :environment do
  end

end

この中に必要な処理を書きます。 Job.destroy_allはそのままなので簡単です rm -rf tmp/upload-*を少し頑張ってRubyで書き直します。

require 'fileutils'
directory = "tmp/upload-*"
list = Dir.glob Rails.root.join(directory)
FileUtils.rm_rf(list)

材料が揃ったのでテンプレートを埋めます。

namespace :job do
  desc "Delete the remnants generated by the annotation upload job"
  task clean: :environment do
    # Delete Job records
    Job.destroy_all

    # Delete uploaded files
    require 'fileutils'
    directory = "tmp/upload-*"
    list = Dir.glob Rails.root.join(directory)
    FileUtils.rm_rf(list)
  end
end

これでこれからは次のコマンドを実行すればゴミを削除出来ます。

bin/rails job:clean

かっこいい名前のコマンドで実行出来ると、うれしいですね。

マネージング・フォー・ハピネス

読み始めました。 タイトルがかっこいいです。 せっかくマネージメントするなら、これぐらいのこと言った方がいいですよね。

原則とプラクティスと出てきて、XPっぽいなあと思いました。 くわしい内容はまだわかりません。 クリーンアーキテクチャみたい、片目で理想型を片目で現実をみながら、必要に応じて徐々に組織にアーキテクチャを実装していく話なのかあ?と予想しています。

悪役令息(だった)お義兄様は、モブな私を過保護に愛する~解釈違いな推しも好き~ (夢中文庫プランセ)

ジャンルとしては女性向けのエッチな小説なのでしょうか? ネタバレアリです。











主人公は終始カマトトです。 あまり賢くふるまってない感じで結果的に上手くいくところがいいです。 結果から見ると、推しを青田買いしてくわえ込む肉食女子です。 女性向けの「男性向けの異世界転生ハーレムもの」的な作品と捉えればいいのでしょうか? 確かに男性向けも、結果だけ見ると「陽キャになってモテモテ」とも解釈できます。 なるほど、そういうものなのかもしれません。

推し一筋の姿勢と偶然から関係が作られていくのは(純愛路線の)男性向けと同じです。 夜お誘いは主人公からという点は意外とちがって、なるほど・・・興味深いです。 男性向け作品は、男性キャラから誘うのは少なくて、女性キャラ側からとかたまたまそういうシチュエーションになったのがきっかけでとか多いんですよね。 これは男性向け女性向けの差でなくて、時代の差なのかもしれません。

MIPSとかパイプラインとか

を読んでいます。 ところどころもやもやっとするというか、不完全燃焼なところがあります。 そういう部分を次の本で補完すると良いみたいです。

おお、なんか読めるぞ! 2017年に買った5版を引っ張り出してきて読んでみました。 「4.5 パイプライン処理の概要」を読みました。 パイプラインと言えばMIPSって感じなんですね。

MIPSについて調べてみます。

MIPSアーキテクチャ - Wikipedia

1981年、スタンフォード大学のジョン・L・ヘネシー率いるチームは、後に最初のMIPSプロセッサを生むプロジェクトを開始した。

ヘネシーさんがMIPSを設計したのですね。

MIPSは最も典型的なRISCのひとつだとされる、というよりも、RISCの提唱者であるヘネシーとパターソンのそれぞれが設計した命令セット(命令セットアーキテクチャ)であるということを理由に、MIPSバークレーRISCの設計が「典型的なRISC」だとされ、それらの特徴を以て「RISCの定義」だとされているためであり、「MIPSは最も典型的なRISC」だという言明はその逆になっている。

パターソンさんとあわせてRISCなのですね。 この辺よくわかっていませんでした。 なんとなく「CISCは命令が複雑、RISCは命令が単純」くらいの理解でした。

1960年代のIBM 7030の頃には実現されていた命令パイプライン方式では、1つの命令の処理過程を複数のステージ(段階)に分割し、各ステージを順次、次のサブユニットに送って、複数のサブユニットがオーバラップして動作できるようにする。

なるほどMIPSはパイプラインの発明者ではなくて、改良者なのですね。

命令パイプライン - Wikipedia

1961年のIBM 7030(Stretch)は、マイクロプログラム方式でパイプラインと分岐予測を使用している[2]。以後のメインフレームの大半でも使用されている。

へー、1961年にはすでにあったんですね。 というかMIPSの時点で20年ぐらい経っていたのですね。 すでに、枯れたテクノロジーだったのでしょうか? 20年くらいブレークスルーが見つかっていなかった分野に切り込んだ感じなのでしょうか?

分岐予測というのも60年ぐらい前のテクノロジーなのですね。 2018年のSpectreとMeltdown*1の時まで意識していなかったので、意外でした。

「もっとCPUの気持ちが知りたいですか?」は、160ページくらいの本です。 集中して読み切ってしまって、気になった所を詳しく調べてみるのが、良さそうな使い方です。

もっとCPUの気持ちが知りたいですか? 第11章 手が届く範囲にモノがあると便利だよね(キャッシュメモリ)

peaks.cc

第11章 手が届く範囲にモノがあると便利だよね(キャッシュメモリ) にCPUのキャッシュを外すサンプルコードが載っていました。 試しにWSL上で動かしてみます。

access_memory_in_order  : 0.244438 sec
access_memory  : 1.923961 sec

おお、Core i7でも同じように差が出ます。

コンパイルはこんな感じです。

clang -O0 -o access_memory access_memory.c

今気がつきましたが、本に載っているのはmemory_accessです。誤植でしょうか? アーリーアクセスできてたので、そのとき気がついて、伝えられてれば・・・と残念です。

最適化オプション

-O0が気になります。 変えるとどうなるのでしょうか?

> clang -O1 -o access_memory access_memory.c
> ./access_memory
access_memory  : 2.474425 sec

あれ?遅くなりました。 そういうこともあるんですね。

GCC

次はGCCを使ってみます。

> gcc -O0 -o access_memory access_memory.c
> ./access_memory
access_memory  : 1.863295 sec
> gcc -O1 -o access_memory access_memory.c
> ./access_memory
access_memory  : 2.360995 sec

大体同じ結果になりました。

バッファサイズ

次にバッファサイズを変えてみます。

0x200

access_memory  : 0.001568 sec

マッハです。これはキャシュヒットしてそうです。

0x1000

access_memory  : 0.411469 sec

キャッシュが外れてそうです。

0x800

access_memory  : 0.094881 sec

ヒット

0xC00

access_memory  : 0.216819 sec

ミス

0xA00

access_memory  : 0.125575 sec

ミス

0x900

access_memory  : 0.106271 sec

ミス。この辺に境界がありそうです。 あれ?よく見たら0x800と大して差がありません。 0x800はキャッシュミスしてそうです。 もっと小さくても良さそうですね。

すっかり忘れてたけで、下のリンクから購入されると僕に紹介料が入る仕組みがあるみたいです。

2022年の仕事的ふりかえり

Webアプリケーションの高速化

Webアプリケーションの高速化をクライアントサイドとサーバーサイドで両方やりました。 すごいでしょ。

TextAEの描画を高速化した

TextAEというのは文章についた注釈をビジュアル化してみせるJavaScriptのアプリケーションです。 ブラウザで動きます。 注釈はdiv要素やSVGで描画しています。 8万文字の文章に2万注釈ついたデータがありました。 この描画に120分くらい掛かっていました。 ブラウザの表示領域に入っている注釈だけ描画するようにしました。 約6分で描画できるようになりました。 20倍くらい速くなりました。

PubAnnotationの注釈アップロードを高速化した

PubAnnotationという注釈のついた文章を管理するアプリケーションがあります。 前述のTextAEのバックエンドだと思ってください。 PubAnnotationには注釈のついた文章を一括でアップロードする機能があります。 7万文章をアップロードすると7時間ぐらい掛かっていました。

これはSQLの部分とテキスト処理の部分でそれぞれ時間が掛かっていました。 SQLを工夫して2.2倍速くしました。 テキスト処理にRactorを導入してさらに1.2倍速くしました。 Ractor入れて1.2倍というのはあんまり期待した感じではないです。 これはRactorが効かないというよりは、見落としていたIOバウンドな処理があって足を引っ張っているようです。 あわせて2.6倍です。

PubAnnotationの高速化の詳細は、自分でもうまく整理できていません。 別の記事にするか社内発表にするか、もうちょっと詳しく整理する時間をとりたいと思っています。

開発チームの立ち上げ

いままで長く維持するチームに所属したことがありません。 概ね一年未満だったと記憶しています。 今回、年をまたぐような長期の開発に参加する機会を得て、あらためて開発チームを立ち上げました。

人をあつめるところからでした。 せっかくなので「ふりかえり」もちゃんとやろうと思って、あらためて「これだけ!KPT」を読みました。

Keep出しに何分とか時間を決めて運営しています。 ちゃんとルールを決めるとファシリテーターを交代しやすくていいですね。

いままで、開発の隙間とか終わりとかにスポットでKPTをやったことはあります。 継続して定期的にやったのははじめてです。 継続してやると、いろいろな使い方が出来て面白いです。

  • チームのグルーミング
  • 新しく入ってきた人との交流

なんかは予想していたとおりでした。 これ以外にも

  • 事務処理を期日までに終わらせる
  • 健康のために筋トレする

みたいなTryをあげて実践する使い方が出来たのは意外でした。 面白かったです。

一定期間で成果をあげるためのチーム管理でなくて、長期的に成果を上げ続けるためのチーム管理というのは、なかなか新鮮です。

Ubuntuに最新のRedisをインストールする

Sidekiqのバージョンを上げたところ次のようなメッセージが表示され、起動出来なくなりました。

22:32:20 workor.1 | You are connecting to Redis 6.0.16, Sidekiq requires Redis 6.2.0 or greater

現在インストールされているバージョンを確認します。

ledsun@MSI:~/pubannotation►apt show redis                                                                                                                                                                                                                    (master) 22:33
Package: redis
Version: 5:6.0.16-1ubuntu1
Priority: optional
Section: universe/database
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Chris Lamb <lamby@debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 67.6 kB
Depends: redis-server (<< 5:6.0.16-1ubuntu1.1~), redis-server (>= 5:6.0.16-1ubuntu1)
Homepage: https://redis.io/
Download-Size: 2930 B
APT-Manual-Installed: yes
APT-Sources: http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages
Description: Persistent key-value database with network interface (metapackage)
 Redis is a key-value database in a similar vein to memcache but the dataset
 is non-volatile. Redis additionally provides native support for atomically
 manipulating and querying data structures such as lists and sets.
 .
 The dataset is stored entirely in memory and periodically flushed to disk.
 .
 This package installs the main redis-server package.

6.0.16です。 最新のRedisをインストールするにはどうしたらいいでしょうか?

公式サイト Install Redis on Linux | Redis に手順が載っていました。 これに従って

curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

sudo apt-get update
sudo apt-get install redis

を実行します。 再度バージョンを確認します。

ledsun@MSI:~/pubannotation►apt show redis                                                                                                                                                                                                           25.067s  (master) 22:38
Package: redis
Version: 6:7.0.7-1rl1~jammy1
Priority: optional
Section: database
Maintainer: Redis Core Team <redis@redis.io>
Installed-Size: 51.2 kB
Depends: redis-server (<< 6:7.0.7-1rl1~jammy1.1~), redis-server (>= 6:7.0.7-1rl1~jammy1)
Homepage: https://redis.io/
License: unknown
Vendor: none
Download-Size: 39.3 kB
APT-Manual-Installed: yes
APT-Sources: https://packages.redis.io/deb jammy/main amd64 Packages
Description: Persistent key-value database with network interface (metapackage)
 Redis is a key-value database in a similar vein to memcache but the dataset
 is non-volatile. Redis additionally provides native support for atomically
 manipulating and querying data structures such as lists and sets.
 .
 The dataset is stored entirely in memory and periodically flushed to disk.
 .
 This package depends on the redis-server package.

N: There are 10 additional records. Please use the '-a' switch to see them.

成功しました。 サービスの再起動なんかは特に必要ないみたいです。