//ルートにアクセスされたら/archiveにリダイレクトする

エイリーの備忘録

開発について書いていこうと思っています。

Ansible vs SaltStack触りだけ比較

この記事は、千 Advent Calendar 2019の23日目の記事です。

なにこれ?

巷で少し話題になっている? SaltStackとAnsibleを書き方、実行時間で比較していいところ、悪いところを見ていきたいと思います。 比較に焦点を当てているため、実行方法や記述方法などにはこの記事では触れません。

実行環境

実行元

スペック: AWS EC2 t2.micro
AMI: Canonical, Ubuntu, 18.04 LTS, amd64 bionic image build on 2019-11-13

実行先(Ansible・Saltstack共に同スペック)

スペック: AWS EC2 t2.micro
AMI: Canonical, Ubuntu, 18.04 LTS, amd64 bionic image build on 2019-11-13

実行内容

今回は新規にwebサーバ作成を構築する事を前提とし、nginxのインストールと少しだけサーバの設定をしてみたいと思います。

- HOSTNAME変更
- 時計を合わせる
- nginxのインストール

実行ファイル

Ansible

[nginx]
ip-172-31-35-248.ap-northeast-1.compute.internal

[all:vars]
ansible_ssh_user=ubuntu
ansible_python_interpreter=/usr/bin/python3
---
- hosts: nginx
  tasks:
    - name: set hostname
      hostname:
        name: "nginx"

    - name: set timezone
      timezone:
        name: Asia/Tokyo

    - name: apt installs
      apt:
        name:
          - nginx
        update_cache: true

SaltStack

system:
  network.system:
    - enabled: True # only neccessary as a bypass for https://github.com/saltstack/salt/issues/6922
    - hostname: 'salt-nginx'
    - apply_hostname: True
    - retain_settings: True
Asia/Tokyo:
  timezone.system:
    - utc: True
install nginx:
  pkg.installed:
    - name: nginx

実行時間

5台のサーバに一括でインストール更新作業をした場合の時間

  • Ansible
    • 0m21.196s
  • SaltStack
    • 0m19.343s

微妙にSaltStackのほうが早い

両者のメリット・デメリット

Ansible

  • メリット
    • RedHatが開発・メンテをしている安心感
    • クライアント側にエージェントを入れなくても実行することが出来る
  • デメリット

SaltStack

  • メリット
  • デメリット
    • 日本語ドキュメントが無い
      • 参考記事も比較的古いものが多い
    • クライアント側にminionをインストールしておかないといけないのが手間

どっち使う?

数百台規模のサーバだとクライアントにエージェントが入っている方がいいらしいですが、
個人的にクライアント側にエージェントをインストールしなくていいAnsibleの方が気軽に実行できて好きです。
(ただ、SaltStackと比較するならクライアントにエージェントが必要なChefと比較するほうがよかったかも)

AWS Lambda のタイムゾーンを日本にする

背景

AWS Lambdaを用いて開発をしている時、内部で時間を扱う系の処理を行うと、 東京リージョンを選択しているにも関わらず世界標準時間が表示されました。

解決策

環境変数TZAsia/Tokyo をセットしてあげればいいようです。

コードで解決する場合

言語にnode.jsを指定している場合は一番初めのステップで環境変数にセットしてあげればいいと思います。 タイムゾーンは毎回GUIでセットするのは少し手間だと思うので、特に成約がない場合、私はこっちのほうが好みです。

process.env.TZ = 'Asia/Tokyo';

GUI

GUIで設定を行う場合は、これだけでいいみたいです。 f:id:youmjww:20190802002047p:plain

command + enterでフォーム送信

はじめに

普段githubなどを使っていてフォームの送信時に ⌘ + EnterControl + Enter で送信をよく行いますが、実装方法を探しても答えが載っていなかったのでメモしておきます。

やったこと

HTML

<form action="post.php" method="post" name="form">
  <input type="text" name="namae" size="40" maxlength="20">
  <input type="submit">
</form>

js

// 長押し対策
let isFirstPost = true;
document.onkeydown = (e) => {
  if (isPressedSubmitKey(e)
    && isFirstPost
    && document.getElementsByName('text')[0].value !== ''
  ) {
    isFirstPost = false;
    document.forms.form.submit();
  }
};
const isPressedSubmitKey = (keyEvent) => {
  return keyEvent.key === 'Enter' && (keyEvent.ctrlKey || keyEvent.metaKey);
};

注意点

VSCodeからPhpStormに乗り換えて良かったこと・悪かったこと

この記事は、千 Advent Calendar 2018の21日目の記事です。

※ この記事はPhpStormを使い始めて2週間程度の人間が書いているので間違いや伝えきれない魅力が沢山あるかもしれませんのでご了承ください。

私はここ3年ほどVSCodeを使っていたのですが、最近VSCodeが重いのと周りがPhpStormに乗り換え始めて来たので便乗して使ってみると思ったより快適だったのでVSCodeと比較して良かってことと悪かったことをまとめたいと思います。

エディタに求めるもの

エディタを使うときは最低限上記項目の条件を求めています。

良かったこと

  • コードの補完が早い
  • 補完する項目を雰囲気で察してくれて使いそうな単語を自動的に上に来てくれる
  • 配列内のキー名を補完することが出来る
  • 英単語のタイポをすると教えてくれる
  • アカウント単位でエディタの設定を紐付けられているので新しい環境でPhpStormを使用開始すると設定の同期ができるのでエディタの設定をやり直したりせずに済む
  • ファイルの横断検索などでマウスを使わなくても検索することができる
  • エディタ内のターミナルのフォントを変更することが出来る
    • 筆者環境ではpower line系のフォントが必須なのでかなりありがたいです。

悪かったこと

  • デフォルトだと日本語に対応していない
  • (IDEなのでしょうがないのでしょうが) 何かの設定を変更する際にsetting.jsonなどが無く、設定を確認するのにいちいち設定項目を開かないといけない

終わりに

他にもまだまだ魅力はたくさんありますが、補完周りが強かったので凄くいいと感じました。 PhpStormはまだまだ使い始めて日が浅いのですが、私にとっては使いやすく、感動を与えてくれるエディタです。

今PhpStormにしようかどうか迷っている人にとって少しでも参考になれば嬉しいと思い記事にしました。

また、PhpStormをはじめjetbrainsのIDEには30日間の試用期間が設けられているので、一度試してみると感動のするほどいいエディタなので、迷っているなら是非一度使ってみてください!

gitを使うなら最低限覚えておきたいgitコマンド6選

gitを運用するなら覚えておきたいコマンドを紹介します

git add

変更のあったすべてのファイルをステージングします

git add .

特定のファイルをステージングします

git add <ファイル名>

git commit

git commit -m

ステージングされた変更をコミット(確定)します

git commit -m "<コミットメッセージ>"

git commit --amend

前回のコミットに現在のステージングされている変更を適用します

git commit --amend -m "<コミットメッセージ>"

git push

git push

特定のブランチをリモートブランチへpushします

git push origin <ブランチ名>

git push -f

ローカルで過去改変などをしてpushできなかった場合にローカルの変更で上書き ただし、これをやる場合は、 共同編集者のコミットをなかったことにしちゃった///てへぺろ ってなるかもしれないので最新の注意を払わないといけない

git push -f origin <ブランチ名>

git pull

特定のリモートブランチの変更をローカルのカレントブランチへ反映します 正直git pull origin master以外あまり使わないですが・・・

git pull origin <ブランチ名>

git checkout

git checkout

特定のブランチへ切り替える

git checkout <ブランチ名>

git checkout -b カレントブランチの派生ブランチを作成してブランチを移動

git checkout -b <ブランチ名>

git reset

git reset 直前のコミットを取り消す。ただし、ファイルの変更は破棄されない

git reset @^

git reset --hard

コミットまでのファイルの変更を破棄する

git reset --hard

直前のコミットを取り消す。ファイルの変更も破棄される

git reset --hard @^

終わりに

以上がgitを使うな最低限覚えておきたいgitコマンドになります。 ~~ 正直はエディタのgitクライアントも優秀なので、極力手をキーボードから離したくないという方や、CUI最高↑という方以外はコマンドを覚えなくてもいいと思います。 ~~

vscodeがとうとう4画面分割に対応!

はじめに

6月リリース(version 1.25)が正式安定版としてリリースされました! vscodesublime textやvimで出来ていた4画面分割が今まで出来ていなかったのですが、とうとうvscodeでもできるようになりました!

code.visualstudio.com

今回のリリースでは、画面分割(Grid editor layout)が目玉の機能かなと思いつつ、触ってみて触りやすかったので、 (記事にするほどの内容でもないですが) 記事にしてみました。

4画面分割ってどうなるの?

↓こうなります f:id:youmjww:20180710235643p:plain

どうやって画面分割するの?

上メニューから[表示]->[Editor Layout]->[Grid(2x2)]を選択するとぱっと4画面分割してくれます。 f:id:youmjww:20180710235824p:plain

また、タブを直接ドラッグしていい感じに持っていくとこんなカオスな画面分割もできてしまいます。 f:id:youmjww:20180711000337p:plain

タブを閉じるとせっかく分割した画面がもとに戻ってしまって嫌という方へ

vscodeの設定ファイルに下記のおまじないを書いてください "workbench.editor.closeEmptyGroups": false するとあら不思議 f:id:youmjww:20180711000652p:plain

タブをすべて閉じてもちゃんと分割が保持されたままになっているではありませんか!

あとがき

今回のアップデートは本当に神アップデートだと思います。 今まで、これが出来なかったからATOMに戻ろうか何回か考えるレベルです(そういえばGitHubはMSに買収されていたがATOMvscodeに結合されるのか生き延びるのかどっちなんだろう)

気がつけば、左にアウトラインの項目ができており、ファンクションの一覧が見れるようになってるのもいいですし、ありがたい機能がアップデートでたくさん来るのは本当にありがたく、使いやすいエディターなので、これからも、vscodeを応援していきたいです。

vimで繰り返し入力を自動化

はじめに

みなさん、エディタを使っているときに同じ作業の繰り返しを行うことは無いでしょうか? 例えば、1行で書いていた連想配列を要素ごとに改行したりするのって手作業で行うのってめんどくさいですよね?

vimでやってみてはいいのでは?

vimにはキーボードマクロという機能があり、キーボードマクロを使うとキーボード操作を記録してn回自動でぶん回すということが簡単に行うことができます。

実行方法

特に記載がない限り、ノーマルモードで実行とします。

記録開始

qa

上記コマンドで a にキー操作を覚えさせるという意味になります。 例えば、 qi で記憶させると i に記録されます。

記録を終了

q

記録モード時に q を入力することにより、記録を終了することができます。

記録したマクロの呼び出し

1回だけ実行する

@a

n回実行

n@a

nの部分に繰り返したい回数を入れます。 例えば、10回実行したい場合は 10@a と入れることで10回実行することができます。

あとがき

vimは調べれば調べるほど便利な機能がたくさん出てきて面白いエディターです。 (そしてメイン使いしているvscodevimの機能を求めて調べても実装されていなくてがっくりする・・・) 早くvimに完全に乗り換えたいです!