Skip to content

Posts

Docker swarm modeを知る

複数の仮想サーバーでdocker-composeで起動したコンテナの管理をする方法を調べていて、swarm modeにたどり着いたので調べたことを残す。

  • コマンドでモード切替

    • 有効化:docker swarm init
    • 無効化:docker swarm leave --force
  • シングルノードでも試せる

    • シングルノードの場合は、init時の--advertise-addr指定は不要
  • Docker swarmとswarm modeは別

    Read more

Flutterに入門

Surface Go 2 に Flutter Web 環境をインストールしたのでメモ。

基本的には公式手順に沿って進める。

  • gitからclone
$ cd ~/workspace
$ git clone https://github.com/flutter/flutter.git -b stable
  • 環境変数PATHに追加 ユーザー環境変数の最後に追加した

  • flutter doctor実行

[√] Flutter (Channel stable, 1.20.2, on Microsoft Windows [Version 10.0.19041.450], locale ja-JP)
[X] Android toolchain - develop for Android devices
    X Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.dev/docs/get-started/install/windows#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, set ANDROID_SDK_ROOT to that location.
      You may also want to add it to your PATH environment variable.

[!] Android Studio (not installed)
[!] VS Code (version 1.48.2)
    X Flutter extension not installed; install from
      https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[!] Connected device
    ! No devices available

この時点ではこれでOK

Read more

Rust入門

なぜDiscordはGoからRustへ移行するのか - MISONLN41’s Blog を読んで興味がわいたのでインストールしてみた。

Rust をインストール - Rustプログラミング言語 のWSLのコマンドで。インストール完了後、WSLログインしなおさないとrustcコマンド使えなかった。

$ rustc --version
rustc 1.45.1 (c367798cf 2020-07-26)

ファイル作って

$ vim hello.rs
fn main() {
    println!("Hello, world!");
}

コンパイル&実行

$ rustc hello.rs
$ ./hello
Hello, world!

できた。

Raspberry pi4 で expo を動かす

WSLでいろいろ試してみたものの、ポート関連のエラーで動かないので、Raspberry piで試してみた。

Rubyインストール

  • Homebrewインストールしようとしたときに、Rubyがないエラーで先に進まなくなってしまったので先にインストールしておく。
  • rbenvを使ってみる。
  • 途中でパッケージが足りないエラーが出るので、libssl-devlibreadline-devを入れる。
$ sudo apt-get install -y libssl-dev libreadline-dev
$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ rbenv rehash
$ rbenv install --list
$ rbenv install 2.6.6
$ rbenv global 2.6.6
$ rbenv rehash
$ ruby --version
ruby 2.6.6p146 (2020-03-31 revision 67876) [aarch64-linux]

Homebrewインストール

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
$ sudo apt-get install build-essential
$ echo 'eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)' >> /home/pi/.profile
$ eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
$ brew --version
Homebrew 2.4.8
Homebrew/linuxbrew-core (git revision 39fddf7; last commit 2020-07-21)

Nodebrewインストール

  • これも先日と同様。
$ brew install nodebrew
$ mkdir -p ~/.nodebrew/src
$ nodebrew install stable
$ nodebrew ls
$ nodebrew use v14.6.0
$ vi ~/.profile
export PATH=$HOME/.nodebrew/current/bin:$PATH
$ source ~/.profile
$ node -v
v14.6.0

Expoインストール

  • グローバルにexpo-cliをインストールしないで、init後にaddしている。
  • テンプレートはtabs (TypeScript)を選択した。
$ cd workspace/
$ npx expo-cli init expotest
$ cd expotest/
$ npm install --save-dev expo-cli
  • npm start後、しばらくすると以下のエラーが出るので、上限を上げる。
Error: ENOSPC: System limit for number of file watchers reached, watch '/home/pi/workspace/expotest/node_modules/metro/node_modules/string-width/node_modules/ansi-regex'
$ cat /proc/sys/fs/inotify/max_user_watches
8192
$ sudo su
# echo fs.inotify.max_user_watches= 65536 | tee -a /etc/sysctl.conf
fs.inotify.max_user_watches= 65536
# cat /proc/sys/fs/inotify/max_user_watches
8192
# sysctl -p
fs.inotify.max_user_watches = 65536
# cat /proc/sys/fs/inotify/max_user_watches
65536
# exit

Expo起動

$ npm start
  • 表示されたQRコードを、iOSやAndroidのアプリで開くと表示される。
  • 初回はJavaScriptのビルドが走る(アプリの画面下部に進捗が表示される)。
  • それ以降はソースを変更するとほぼリアルタイムで反映される。

WSL2にbrewをつかってnodejsのインストールをする

Node.jsのバージョン管理したくなったので。

Homebrewのインストール

https://brew.sh/index_ja にしたがって。

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
$ sudo apt-get install build-essential
$ echo 'eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)' >> /home/`whoami`/.profile
$ eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
$ brew --version
Homebrew 2.4.8
Homebrew/linuxbrew-core (git revision 09353; last commit 2020-07-19)

インストール済みnodejsパッケージの削除

aptで入れていたnodejsを削除。

$ sudo apt remove nodejs

nodebrewのインストール

$ brew install nodebrew

nodejsのインストール

$ nodebrew install v12.18.2
Fetching: https://nodejs.org/dist/v12.18.2/node-v12.18.2-linux-x64.tar.gz
Warning: Failed to create the file
Warning: /home/umemak/.nodebrew/src/v12.18.2/node-v12.18.2-linux-x64.tar.gz:
Warning: No such file or directory
curl: (23) Failed writing body (0 != 978)

download failed: https://nodejs.org/dist/v12.18.2/node-v12.18.2-linux-x64.tar.gz

ディレクトリ掘ってみる

$ mkdir -p ~/.nodebrew/src
$ nodebrew install v12.18.2
Fetching: https://nodejs.org/dist/v12.18.2/node-v12.18.2-linux-x64.tar.gz
################################################################################################################# 100.0%
Installed successfully

使用バージョン指定

Read more

WSL2でAWS CLIを使ってS3のフォルダ名を変更する

S3って、マネジメントコンソールからフォルダ名の変更ってできないんですね。。

こちらを参考に。

SurfaceにしてからAWS CLIインストールしてなかったし、せっかくなのでWLS2のUbuntuでやってみます。

公式のDocker版でインストール(というほどのことでもないですが)。

$ docker run --rm -it amazon/aws-cli --version
aws-cli/2.0.29 Python/3.7.3 Linux/4.19.104-microsoft-standard botocore/2.0.0dev33

認証情報入れる。 IAMでアクセスキーを取得して、configureコマンドで設定。

$ docker run --rm -ti -v ~/.aws:/root/.aws amazon/aws-cli configure

動作確認

Read more

Hugoのバージョンアップ

しばらく追っていなかったら、Hugoのバージョンが結構上がっていたので、最新を使ってみることにした。

とはいえ、デプロイにGitHub Actionsを使っているので、設定ファイルの更新だけで完了した。

差分

Hugoのバージョン変更より、ついでに更新したactionsの変更で躓いてしまった。 今はDEPLOY_KEYを作る必要はなく、自動的にGITHUB_TOKENが作られるようになっていた。

Read more

Firebase用デプロイサーバーを作る

SourceRepositoriesで管理して、CloudBuildでFirebase HostingにデプロイしているGatsbyプロジェクトを、SourceRepositoryとCloudBuildを使わずに実現してみる。 GiteaがCentOS6で動くようになったので、SourceRepository部分は置き換えられる。 CloudBuildをWebhookでスクリプト呼び出してやろうとしたところ、CentOS6ではGatsbyのビルドができない(古すぎる。。) 仕方ないので、ビルドサーバーを別で用意する。

Read more