株式会社はてなに入社しました
GitHubの署名付きコミットしたかったので設定した話
タイトル通り.
GPG Keyつくる
これがなきゃ始まらない.
ここ見た: https://help.github.com/en/articles/generating-a-new-gpg-key#supported-gpg-key-algorithms
自分が使っているOS用のGPGコマンドラインツールを入れろって書いてある.
GPG SuiteからGPG Suiteをダウンロードする.
dmgを開き, install.pkgをクリックし, インストーラーを起動する.
GPG Keychainが開くので, 鍵を作成する.
こんな感じで.
有効期限を設定したほうがいいのかもしれないが面倒なので無期限にした.
これで作成完了.
GPG KeyをGitHubに登録する
gpg --list-secret-keys --keyid-format LONG
コマンドで, 公開鍵と秘密鍵の両方があるGPG Keyが見れる.
$ gpg --list-secret-keys --keyid-format LONG /Users/hubot/.gnupg/secring.gpg ------------------------------------ sec 4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10] uid Hubot ssb 4096R/42B317FD4BA89E7A 2016-03-10
こんな感じになる。
大事なのは, secの3AA5C34371567BD2の部分.
次にこれを実行する.
すると, gpg keyが出てくるので, コピーし, GitHubの"Settings→SSH and GPG Keys"のところに貼り付ける.
$ gpg --armor --export 3AA5C34371567BD2 # Prints the GPG key ID, in ASCII armor format
パイプでpbcopyに渡してコピーしたほうが楽.
署名付きコミットしてpushしてみる
ローカルリポジトリで署名付きコミットしたい場合は,
$ git config commit.gpgsign true
全てのリポジトリで署名付きコミットしたい場合は,
$ git config --global commit.gpgsign true
そして, コミットするときは, -S オプションを付ける.
$ git commit -S -m "your commit message"
うまく行ってればこんなふうに表示される.
以上.
.devドメインのWebページにアクセスできなかった話
TL;DR
pow が入ってたら今すぐuninstallしろ
何があったの
先日, mimikun.dev を買った.
早速「diary.mimikun.devにURL変えるか!!!」となって変えた.
そしたらこれが出た.

何で…?
原因: pow
powが原因だった.
$ curl diary.mimikun.dev
してみた, 結果はここ
<h1 class="err">Application not found</h1> <h2>Symlink your app to <code>~/.pow/diary.mimikun</code> first.</h2> <section> <p>When you access <code>http://diary.mimikun.dev/</code>, Pow looks for a Rack application at <code>~/.pow/diary.mimikun</code>. To run your app at this domain:</p> <pre><span>$</span> cd ~/.pow <span>$</span> ln -s /path/to/myapp diary.mimikun <span>$</span> open http://diary.mimikun.dev/</pre> </section>
はい, powが原因ですね…
powをuninstall
そもそもpow自体もうメンテナンスされてないので( GitHub もarchiveされてる ) uninstall しちゃいましょう. 代わりにpuma-dev使うといいです.
$ curl get.pow.cx/uninstall.sh | sh
で uninstall できます.
WebAssemblyをやってみる
興味あったのでやってみる. Rustはわからんので, 書いたことのあるC/C++を使う.
公式ページのDeveloper’s Guide にはToolchain入れろって書いてあるけど, だるいのでDockerを使ってみる.
成果物はここに置いてある. mimikun/wasm-sample
mkdir -p $WORKDIR/wasm-sample mkdir dist touch hello.c docker pull trzeci/emscripten docker run --rm -v $(pwd):/src trzeci/emscripten emcc hello.c -s WASM=1 -o dist/hello.html
#include <stdio.h>
int main(int argc, char ** argv) {
printf("Hello, world!\n");
}
そのままhtmlファイルを開くと, CORSで弾かれる.
なので, emrunコマンドで開く必要がある.
$ emrun --no_browser --port 8080 .
Dockerで実行する場合はこう (参考: https://puzzle.github.io/tws18-webassembly-slides)
$ docker run --rm -p 8080:8080 -v $(pwd):/src trzeci/emscripten emrun --no_browser --hostname 0.0.0.0 --port 8080 dist/
WebAssembly, うまく使えば便利だと思った.
デフォルトのシェルをfishに変える
今まではずっと zsh + oh-my-zsh を使ってきたがナウい(死語)奴に変えたかったので変えてみた.
まず fish を入れてデフォルトのシェルに変えるところから.
$ brew install fish $ sudo echo "/usr/local/bin/fish" >> /etc/shells $ chsh -s /usr/local/bin/fish
fishでは export ではなく set -x で環境変数を定義するようで, 早速 .zshrc をコピペしていくつか手直しして source で反映してみたが不具合が出た.
入力できるはずのコマンドが入力できない.
$ cp ~/.zshrc ~/.config/fish/config.fish $ source ~/.config/fish/config.fish $ exec $SHELL -l $ touch fish: Unknown command touch
なので, 一つずつ試してみて, 何が原因か調べた.
いくつか構文ミスがあって, エラーが出た.
詳しくはここ: https://gist.github.com/mimikun/83c4f385c38ae02ad192141ea7e4660c
主に、 set -x PATH=hoge などとしてるのが多かった.
なんでこんな書き方するのかわからんけどそういうもんなんだろうな…
ハマりポイント1: Golangの環境変数
$ vim ~/.config/fish/config.fish
# Golang
set -x GOPATH $HOME/go
set -x PATH $GOROOT/bin:$PATH
$ source ~/.config/fish/config.fish
$ exec $SHELL -l
/usr/local/Cellar/fish/3.0.2/share/fish/functions/__fish_pwd.fish (line 1):
uname
^
in command substitution
called on line 1 of file /usr/local/Cellar/fish/3.0.2/share/fish/functions/__fish_pwd.fish
多分ダメだったのは2行目の GOROOT のところ.
なので, ここを見て設定し直した.
ハマりポイント2: anyenvの設定
普通に set -x PATH $HOME/.anyenv/bin:$PATH だけだと以下のように command not found と出るので少し工夫する.
$ anyenv update Updating 'anyenv'... Updating 'anyenv/anyenv-update'... /Users/mimikun/.anyenv/plugins/anyenv-update/bin/anyenv-update: line 219: goenv: command not found
ここを見て設定した.
set -x PATH $HOME/.anyenv/bin:$PATH anyenv init - fish | source
プロンプトを自分好みに変える
理想は以下のような感じ.
➜ mastodon git:(feature/add_pawoo_hashtag_editor)
ブラウザから設定できるらしいので設定した.
$ fish_config
prompt の Robbyrussell を選択し, set prompt を押すだけで良い.
ghq関係の設定
ここ を見て設定する
$ brew install ghq peco fzf fzy $ fisher add decors/fish-ghq
fisherを使うので予め入れておく
使い方はCtrl+Gと押すだけ, あいまい検索もできる.
以上
Hugo + Netlify + GitHub でブログを構築する
mimikun blog をGitHub PagesからNetlifyに移しました。
手順
まずNetlifyのアカウントを作成します。
Netlify Appにアクセスし、GitHub認証でアカウントを作成します。
New Site from Git をクリックします。
Continuous Deployment で、GitHubをクリックし、認証します。
するとリポジトリが出てきますので、Hugoサイトのリポジトリを選択します。

するとこのようなものが出てくるので、このように入力します。
デプロイするブランチ, ビルドコマンド, 公開ディレクトリをそれぞれ入力します。
僕はこれでうまく行かなかったので、管理画面からBuild environment variablesを設定しました。

すると、ビルドがうまく通りました。
あとは管理画面からURLをconfig.tomlのbase urlと同じものに変えます。
参考にしたサイト
[SOLVED] Netlify deployment errors, yet, nothing errors on localhost - support - Hugo Discussion
npm install のオプションについて
全然わからないので調べた。
ドキュメントの説明(NPMの場合)
npm installは、指定されたパッケージをデフォルトで依存関係に保存します。 さらに、いくつかの追加のフラグを使用して、どこにどのように保存するかを制御できます。
-P, --save-prod: パッケージは依存関係に表示されます。 -Dまたは-Oが指定されていない場合、これがデフォルトです。
-D, --save-dev: パッケージはdevDependenciesに表示されます。
-O, --save-optional: パッケージは、あなたのoptionalDependenciesに表示されます。
--no-save: 依存関係への保存を禁止します。
上記のいずれかのオプションを使用してpackage.jsonへの依存関係を保存する場合、2つの追加のオプションフラグがあります。
-E, --save-exact: 保存された依存関係は、npmの既定のセーム範囲演算子を使用するのではなく、正確なバージョンで構成されます。
-B, --save-bundle: 保存された依存関係もbundleDependenciesリストに追加されます。
ドキュメントの説明(yarnの場合)
これは公式ドキュメントの方が詳しいだろう。
ちょっと調べてみた。
うん、全然わからん。
例えばどういうタイミングで npm i -D とするのだろうか?
というわけでそもそもdependenciesとは?というところに着目してみた。
そもそもdependenciesとは
公式ドキュメントにあった。
公式見る癖をつけるようにしていきたい。
Specifying Dependencies
プロジェクトが依存するパッケージを指定するには、package.jsonファイルで使用するパッケージを一覧表示する必要があります。 リストできるパッケージには2種類あります:
- "dependencies": これらのパッケージは、アプリケーションで本番環境で必要となります。
- "devDependencies": これらのパッケージは、開発とテストのためにのみ必要です。
つまり、productionで必要なパッケージはdependencies で、developmentで必要なパッケージにはdevDependenciesを付けるということだ。
うん。かんぜんにりかいした。
簡単に依存関係を追加する方法
The --save and --save-dev install flags
依存関係をpackage.jsonに追加する簡単な方法(より素晴らしい方法)は、コマンドラインから行うことです。どのようにしたいかに応じて、 - saveまたは--save-devのいずれかでnpm installコマンドにフラグを立てます。そして、その依存関係を使用してください。
- package.jsonの依存関係にエントリを追加するには:
npm install --save <package_name>
or
yarn add <package_name>
- package.jsonのdevDependenciesにエントリを追加するには:
npm install --save-dev <package_name>
or
yarn add --dev <package_name>