CircleCI をローカルで動かそうとしたら image が pull できない #circleci

問題

CircleCI をローカルで動かそうとしたら、なんかエラーになって動かない

$ circleci build すると下記のエラーメッセージが出る。

Error: Could not find picard image: failed to pull latest docker image: exit status 1

解決策

メールアドレスでログインしていたのが問題らしい。

一度 docker をログアウトして、ユーザーIDでログインし直すと解決した。

メモ

公式で image のタグを確認して見たけど間違っていなそうだったので

circleci.com

辿っていったら下記のIssue に行き着いた。

github.com

「docker のログインをメールアドレスじゃなくて ユーザーID でやれ」 ということらしい。

確かにメールアドレスでログインしていたので、一度ログアウトしてユーザーIDでログインし直すと成功した。

ちなみに Docker for Mac の話です。

関連

su-kun1899.hatenablog.com

バッチ処理を作るときに考えていること

バッチ処理を作る必要があるときに、考えているようなことをまとめておく。

はじめに

バッチは機能の実現方式であって、機能そのものではないと思っている。

なので、バッチ処理は単独で考えるものではないというのが前提。

とはいえバッチという手段を選んだ場合に、その手段故に考えておいたほうがいいことがあるのは確か。

思いつくままに

バッチ処理固有ではないものもあるけど、思いつくままに列挙しておく。

  • 実行周期
    • 日次とか月次とか
    • 手動とか(リランや任意のタイミングでの実行とか)
  • 実行タイミング
    • 夜間とか早朝とか
  • 処理時間
    • 始まってから終わるまでどれくらいかかるか?
  • 負荷
    • 特に他システムとの兼ね合い
      • オンラインでも使ってるDBを見に行くとか
      • API コール数の制限とか
  • 並列度
    • 並列実行させるか(できればさせたくないが)
      • させるなら同期をどうやって実現させるか
  • 処理件数
  • リラン設計
    • 失敗時どうするか
    • デプロイやメンテナンス等で意図的に止めたい場合どうするか
    • 冪等なども観点に含める
    • 動かなかったときに、何が起こるか?
      • 後続ジョブやオペレーション
  • リトライ設計
    • 自動で何度かリトライするか
  • 通知
    • エラー等の通知方法やレベル
  • ログ設計
  • テスト設計
    • 限界はあるが、できるだけ容易にテストや動作確認ができるように
      • データ用意のコスト
      • 任意タイミングでの実行
      • パラメータを任意に変更できるように
      • etc

参考

wyukawa.hatenablog.com

Mac に Virtual Box がインストールできない

概要

Macクリーンインストールして、VirtualBoxを入れようとしたらエラーになってしまった。

brew でも、ダウンロードしたインストーラでもだめ。

installer: The install failed (エラーによってインストールできませんでした。ソフトウェアの製造元に問い合わせてください。)

みたいなことを言われてしまう。

システム整合性保護(System Integrity Protection: SIP)を一時的に無効化してやるとインストールできた。

Macリカバリーモードで起動

起動時に Cmd + R を押し続けるとリカバリーモードで起動する

SIP の無効化

[ユーティリティ] -> [ターミナル] でターミナルを開き、無効化するコマンドを打つ。

# csrutil disable

コマンドを打ったあと、Mac を再起動する。

VirtualBox のインストール

brew で入るようになった。

$ brew cask install virtualbox

SIP の有効化

再びリカバリーモードで起動して、もとに戻しておく。

# csrutil enable

参考

SSH トンネルしてみる

概要

SSH で ポートフォワードして、トンネル経由で接続する。

Example

踏み台経由サーバ経由で、リモートサーバの 3306 にアクセスする。

トンネルを掘るに当たり、入り口はローカルポートの 13306 としてみる。

説明
リモート remote.com
踏み台 fumidai.com
ユーザ user

コマンド

ssh -L 13306:remote.com:3306 user@fumidai.com

これで localhost:13306 -> (踏み台) -> remote.com:3306 にトンネルが通る。

このトンネルを使って、ローカルからリモートにアクセスできるようになる。

config

.ssh/config に設定しておくならこんな感じ。

Host tunel-remote
  Hostname fumidai.com
  User user
  LocalForward 13306 remote.com:3306

これで ssh tunel-remote すると前述のコマンドと同じ意味になる。

参考

GitHub でサブチームを作ったらリポジトリの権限が剥がされた #GitHub

問題

GitHub のチーム機能を使ってサブチームを作ったら意図しない挙動になった。

サブチームを作ってリポジトリ Admin 権限を付与し、親チームは Write 権限にしようとしたところ、サブチームの権限が変更されてしまう事象が発生した。

GitHub のチーム機能についてはこちら。

help.github.com

再現手順

  1. チームを作成する (parent-team とする)
  2. parent-team を hoge リポジトリの Admin にする
  3. parent-team のサブチームを作る (child-team とする)
  4. child-team を hoge リポジトリの Admin にする
  5. parent-team の権限を Write に変更する

上記の手順を実施すると、 child-team の権限が Write になってしまう。

サブチームは個別に強い権限を付与しているので、親の権限に引きずられないでほしい。。

回避方法

別のチームやユーザに一度 Admin 権限を付与して、あとから修正できるようにした。

(Org の強い権限があれば、それで直せばいいだけではある)

補足

  • この現象が発生するのは初回だけっぽい
    • 修正後はどちらのチームの権限をいじっても平気
  • 親チームの権限を弱める場合だけでなく、強める場合でも発生する

感想

罠っぽい動き。。。

サブチームで詳細な権限を設定できるという Doc の言葉からも、あまり自然な挙動ではない気がするなぁ。

Visual Studio Code の設定を管理する #VSCode

概要

会社と自宅とか、マシンの買い替えを考慮して、VSCode の設定を管理できるようにしておく。

azure.microsoft.com

基本的な設定

Settings Sync という拡張機能が便利そうだったので、それを使ってみることにした。

GitHubトークンを使って、 Gist に設定ファイルをアップする仕組みのようだ。

private gist が作られるので、履歴も追えるようになる。

marketplace.visualstudio.com

拡張機能

現在インストールしている拡張機能は下記で確認できる。

code --list-extensions

表示された拡張機能をインストールするには下記。
※この例では python の extension

code --install-extension ms-python.python

Ansible の playbook にするならこんな感じ。

- name: "install vscode extensions"
  command: "code --install-extension {{ item }}"
  loop:
    - ms-python.python
    - ms-vscode.Go
  changed_when: false

code.visualstudio.com

CLI

CLI (code) は VSCode を起動して Shell Command のインストールをすることで使えるようになる。

インストールから設定までをまとめて(起動せずに)やりたいなと思ったら、自分で PATH 通しておけばいいらしい。

cat << EOF >> ~/.bash_profile
# Add Visual Studio Code (code)
export PATH="\$PATH:/Applications/Visual Studio Code.app/Contents/Resources/app/bin"
EOF

code.visualstudio.com

参考

stackoverflow.com

「みんなのコンピュータサイエンス」を読んだ

みんなのコンピュータサイエンス

みんなのコンピュータサイエンス

文系学部卒で、ひょんなことからプログラマになった僕にとって、コンピュータ・サイエンスというのは正直縁遠いものなのです。

そこに若干コンプレックスなどもあったことから、タイトルに釣られて読んでみたのがこの本。

本当に初歩の初歩というレベルだと思う。

入り口よりもっと手前の、入り口が見えるところに立ったくらいの感覚。

でもその分自分には分かりやすく、「面白いなぁ」と思いながら読めた。

(正直よくわからないところもあったのだが、そこは雰囲気で読み流した。)

今すぐ自分の仕事に役立つかといったらそんなことはないと思う。

でも、この本を読んだことがいつかどこかで何かに繋がりそうな気はする。

読んでよかった。