投稿者名:TOKIDA

このサイトは備忘録であるとともにIT界隈の人に情報をお返し出来たら良いなぁという物です。

(プロンプトなどで利用する)特殊な絵文字が入ったフォントの入力方法

Macでユニコードの文字を入力するためには、[control]+[command]+[space]で絵文字入力の入力ボックスを表示させ検索で[u+e0a0]のように入力します。

よく見るPowerlineとかのステータスラインでもこの手のユニコードの文字が利用されています。

私は最近は、こちらのnerd-fontsをコンソールで利用しています。

サイトに行くとユニコードも合わせて記載されていますのでこちらの方で好きなアイコンを検索して先程の入力ボックスで検索すれば利用することが出来ます。ちょっとした絵柄をいれておくと結構楽しめますのでオススメです。

Zsh+Zprezto プロンプトに接続中のGCPプロジェクトIDを表示する

最近Google Cloud Platform をよく触っているのだけどどのプロジェクトに居るのかよく分からなくなるのとプロジェクトID調べるの面倒なのでプロンプトに表示しています。

普段 zsh + zprezto でプロンプトを作っているのですが GCPのプロジェクトIDを表示したかったので以下の関数を追加しました。

上記の senpai を参考に以下の関数をちょっと変更しています。

# Google Cloud Platform: info
gcp_info() {
  if [ -f "$HOME/.config/gcloud/active_config" ]; then
    gcp_profile=$(cat $HOME/.config/gcloud/active_config)
    gcp_project=$(awk '/project/{print $3}' $HOME/.config/gcloud/configurations/config_$gcp_profile)
    if [ ! -z ${gcp_project} ]; then
      echo "${_prompt_my_colors[1]}ⓖ %f${gcp_project}"
    fi
  fi
}

これを自分の利用している /Users/hideaki/.zprezto/modules/prompt/functions/prompt_my_setup に追記してみました。ちなみにこういうふうにしておくと関数が読み込まれているのでいつでも gcp_info とシェルから結果を確認することが出来てその意味でも便利です。

PROMPT="%F{135}%n%f at %F{166}%m%f in %F{118}${_prompt_my_pwd}%f ${_my_cloudinfo}%f ${vcs_info_msg_0_}
$python_info[virtualenv]${editor_info[keymap]}"

プロンプトはこんな感じですね。最近は2行にしているのが好みです。

あと関係ないけど zprezto のテーマの半分くらいはgit リポジトリの表示に git-info というモジュールを利用しているのだけどこれが旨く動かないみたいでした(いつから動かないのか、最初からなのか)私は、zshの標準?の vcs_info を利用してるテーマを利用しているので気が付きませんでした。

ブログのサイトを無料枠範囲のUSリージョンへ移動

このサイトもGCPに移動していましたがよく考えたら無料枠を使っていませんでした。

あまりアクセスもなく現状 micro (コンピュートエンジンのリソースのサイズの中で一番小さいモデル)で十分問題がなさそうです。したがって無料枠であるUSリージョンに移動しました。

  1. snapshot の取得
  2. us-regionへインスタンスを作成(1で取得したsnapshotを利用): wp02
  3. instance-groupを作成 : wp-group-us
  4. 既存のload Balancerの background の配下に 3で作成したinstance groupを追加 : wp-lb-background

以上でトラフィックが分配されるのが確認できました。

問題がなさそうなので既存の日本リージョンに作成していたインスタンス wpを停止しておきました。GCPは停止しているインスタンスには課金がされないのも良いところですね。

それにしてもこの作業を行うのにホンの10分程度で出来てしまって拍子抜け。素晴らしいですね。最初からLB配下において動かしていたことも良かったと思います。このサイトはだいぶ前からCDNはCloudFireを利用しているのでGCPの機能は利用してないのですがこちらもいつか使ってみたいと思います。

NodeJsのプロセス管理ツール pm2 のアップデートと自動起動の設定

Node-RED のプロセス管理ツールとして PM2 を利用しています。
少し時間が立ったので pm2 自体をアップデートしたので方法をメモしておきます。

現在の状態を保管

pm2 save
sudo npm install pm2 -g

利用しているユーザ(pi) で pm2 updateを実行します。
この際、登録していたアプリケーションが消えてしまったので再起動しておきます。

Raspberry pi の場合には systemd を利用していますので pm2 startup コマンドでシステム起動時の自動起動が設定できます。

もし自動起動をしていない場合には次のコマンドで登録できます。こんかい場合には ndenv を入れているので次のコマンドに成ります。

sudo env PATH=$PATH:/usr/local/ndenv/versions/v6.12.2/bin /usr/local/ndenv/versions/v6.12.2/lib/node_modules/pm2/bin/pm2 startup systemd -u pi --hp /home/pi

これで /etc/systemd/system/pm2-pi.service が生成されます。

[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target

[Service]
Type=forking
User=pi
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Environment=PATH=/usr/local/ndenv/versions/v6.12.2/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/home/pi/.pm2
PIDFile=/home/pi/.pm2/pm2.pid

ExecStart=/usr/local/ndenv/versions/v6.12.2/lib/node_modules/pm2/bin/pm2 resurrect
ExecReload=/usr/local/ndenv/versions/v6.12.2/lib/node_modules/pm2/bin/pm2 reload all
ExecStop=/usr/local/ndenv/versions/v6.12.2/lib/node_modules/pm2/bin/pm2 kill

[Install]
WantedBy=multi-user.target

これでsystemdに登録されれています。ランレベルは multi-user レベル(昔のランレベル3,4,5に相当)となっていますね。

$ systemctl status pm2-pi
● pm2-pi.service - PM2 process manager
   Loaded: loaded (/etc/systemd/system/pm2-pi.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2018-02-04 11:54:39 JST; 8min ago
     Docs: https://pm2.keymetrics.io/
 Main PID: 16500 (PM2 v2.9.3: God)
   CGroup: /system.slice/pm2-pi.service
           ‣ 16500 PM2 v2.9.3: God Daemon (/home/pi/.pm2)

Feb 04 11:54:37 homepi pm2[6414]: [PM2] Process /usr/local/bin/homebridge restored
Feb 04 11:54:38 homepi pm2[6414]: [PM2] Process /home/pi/local/node-red/node_modules/node-red/red.js restored
Feb 04 11:54:39 homepi pm2[6414]: ┌────────────┬────┬──────┬──────┬────────┬─────────┬────────┬─────┬───────────┬───────────┬─────
Feb 04 11:54:39 homepi pm2[6414]: │ App name   │ id │ mode │ pid  │ status │ restart │ uptime │ cpu │ mem       │ user      │ watc
Feb 04 11:54:39 homepi pm2[6414]: ├────────────┼────┼──────┼──────┼────────┼─────────┼────────┼─────┼───────────┼───────────┼─────
Feb 04 11:54:39 homepi pm2[6414]: │ homebridge │ 0  │ fork │ 6511 │ online │ 0       │ 2s     │ 49% │ 17.2 MB   │ undefined │ disa
Feb 04 11:54:39 homepi pm2[6414]: │ red        │ 1  │ fork │ 6517 │ online │ 0       │ 2s     │ 26% │ 16.7 MB   │ undefined │ disa
Feb 04 11:54:39 homepi pm2[6414]: └────────────┴────┴──────┴──────┴────────┴─────────┴────────┴─────┴───────────┴───────────┴─────
Feb 04 11:54:39 homepi pm2[6414]:  Use `pm2 show <id|name>` to get more details about an app
Feb 04 11:54:39 homepi systemd[1]: Started PM2 process manager.

最後、いちおうRaspberryPiを再起動して確認しておきます

Google Cloud Certified Professional Cloud Architect に合格しました

件名のとおりですが「Google Cloud Certified Professional Cloud Architect」というGoogleが提供しているCloudサービスの認定資格に合格しました。ネットにも書籍でもまだまだGCPは少ない(とは言え IBM Cloudも似たようなもんだ)ので試験勉強も一苦労でした。

誰かの参考になればと思いますので、とりあえずやった勉強内容だけ書いておきます。

スペック

  • AWS Associate (既に失効 2014)
  • IBM Cloud Developer Application (v1(2016)/v2(2017))
    仕事でさわっている順に資格も取っているのでクラウド関連の一般的な事は理解している

GCP歴

  • はるか昔にGoogle App Engine
  • 最近このブロクサイトをGCPに移籍

試験勉強期間

  • 大体まる二日くらい
  • とは言えGoogle Nextや国内でするGoogleイベントは数年前から参加している
  • 先日無料のFandamentalが受講できたので受講済み(たまにTopGateさん主催などでやっているので見逃さないように)

勉強内容

  • 試験対象の「サービス」が明記されてないのは、全般的に出るのだろうと思いとりあえず公式の模試をしました
  • ユースケースが事前に公開されていますがあそのユースケースに沿った問題が出ててきています。なのでつまりこのユースケースを実現するための問題が幾つか出てくるのだろうと予想しました。
  • ユースケースを実現するために必要そうな、GCPの各サービスのマニュアルを読みました。だいたい概要、コンセプト、あればチュートリアルを実施(あまりしなかったけど)

何をしたらよいか不安だったので色々研修コースをみました。
公式からの紹介されているコンテンツは良さそうでしたがどれも結構なお値段だったので今回は諦めました。

  • この内容をみて明らかにサービスっぽいのは重点的にマニュアル読みました。

ちょうど特売していたので Udemyのコースを2つ購入してみました。

  • そもそも私の英語能力はさっぱりですが、輪をかけて早口で聞き取れなかったです(英語の自動字幕もダメダメできちんと拾えてなかった)
  • 資料もあまり図がないため音声が聞き取れないとツライ感じ。
  • とりあえず触ったことない部分を4時間くらいは聞いたと思います。英語がわかれば逆に電車とかで聞けて良い感じだと思います。

模試の内容的に「設計」に関する質問が多そうでコマンドの細かい範囲は出てなかったので基本的にはマニュアル読んでいました。例題やハンズオン資料が無く、闇雲に読んでも仕方ないのでユースケースからシチュエーション想像してその辺のドキュメント見るという感じで進めてました。

試験感想

  • 試験の申込時に、日本語サイトから申し込まないと日本語の選択は出てこない
  • 私の場合にはAWS時代に試験を受けていたので、ログイン後に「AWSの試験」しか選択肢に出てこないという状況になりましたが問い合わせた所再度アカウントを作り直すように指示れました。
  • アーキテクト/設計(つまりGCPのどのサービスを組み合わせるか)が中心の問題のため、複数の正解から最適なものを選んでいく事になりどの程度あっているか不明でした。
  • 結果が「合格/不合格」しか表示されないため、次回に生かせないという一度落ちると何も信じれなくなりそうなスタイルです。
  • 今まで楽し権では、さらっとやって時間前に終わるのですが初めて見直ししたりして120分使い切りました
  • 「合格」のフォントが小さいしその後、証書などをくれないので申し込みサイトから確認してしまいました。
  • 確かに終わってみればAWSアソシエイトと同様のレベルのような気もしますが、ズバッとこれという答えがないのでモヤモヤが残ります。

まぁ何にせよ一回で勉強が終わって(合格して)良かった。

参考

私は使っていなのですが良さそうだったのはやはり公式サイトからGuideされている内容。

  • Qwiklabさんの研修コース。AWSのときにはお世話になったやつですね。今はすっかりGCPです。
  • 月額サブルスクリプションで$55です。下手な参考書よりはこちらをやったほうが良かった気もします。実際に役に立つという意味でも。
  • こちらは公式のオンライン学習教材、これは普通に良さそうでしたが高い(3万)ので受けて見てないです。
  • 研修などに参加するよりは安いとおもいます、不明な個所を自力で調べたり出来る人はこちらのほうが良いのかもしれません。

合格するとパーカーが貰えるそうなので楽しみ。

上部へスクロール