コピペコードで快適生活

明日使えるソースを自分のために

dockerコマンドメモ

dockerよくわからんけど、ecsにデプロイする環境を作ってもらって、どんどこデプロイしまくって結果、僕の環境にdockerのimageがどんどこ溜まっていって、ディスクフルになってしまったので、消すコマンド等々をメモ。

# 停止しているコンテナ一覧
docker ps -a

# コンテナの削除
docker rm [コンテナID]

# イメージの確認
docker images

# イメージの削除
docker rmi [イメージID]
docker rmi -f [イメージID] # 強制削除

# 古いイメージ一発で消す
docker images | grep -e weeks -e months | awk '{print $3}' | xargs docker rmi

# ホストOSに入ってコンテナ一覧を見る
docker ps 

# ホストOS上でゲストOSに対してコマンドを実行する
sudo docker exec -it #{コンテナID} #{コマンド}

Elasticsearch クエリメモ

Elasticsearchをたまにしか使わなくて、使う時にはクエリをすっかり忘れているので、メモ書き。

ES_HOSTNAME=https://example.com:9200
ES_INDEX=logstash-yyyy.mm.dd

## インデックス一覧
curl -X GET "${ES_HOSTNAME}/_cat/indices?v"

## エイリアス一覧
curl -X GET "${ES_HOSTNAME}/_aliases?v"

## インデックスの削除 (logstash-yyyy.mm.dd はインデックス名)
curl -XDELETE "${ES_HOSTNAME}/${ES_INDEX}"

## マッピング確認
curl -XGET "${ES_HOSTNAME}/${ES_INDEX}/_mapping?pretty"

## インデックスのレコード数 確認
curl -XGET "${ES_HOSTNAME}/_cat/count/${ES_INDEX}"

## 全件抽出
curl -XGET "${ES_HOSTNAME}/${ES_INDEX}/_search?pretty" -H 'Content-Type: application/json' -d'
{
  "query": { "match_all": {} }
}
'

検索系

## 完全一致検索 (termを使う)
curl -XGET "${ES_HOSTNAME}/${ES_INDEX}/_search?pretty" -d '
{
  "query": {
    "term": {
      "field_name" :"field_value"
    }
  }
}
'

## いずれかが含まれる (termsを使う)
curl -XGET "${ES_HOSTNAME}/${ES_INDEX}/_search?pretty" -d '
{
  "query": {
    "terms": {
      "objects.xxx_id": [1, 2, 3]
    }
  }
}
'

## AND検索 (bool,mustでくくる)
curl -XGET "${ES_HOSTNAME}/${ES_INDEX}/_search?pretty" -d '
{
  "query": {
    "bool": {
      "must": [
        {
          "terms": {
            "objects.xxx_id": [1, 2, 3]
          }
        },
        {
          "term": {
            "yyy_id": 100
          }
        }
      ]
    }
  }
}
'

Moment.jsメモ

随時追加

// ロケールの設定
const moment = require('moment');
moment.locale('ja');

// タイムゾーンの設定
const moment = require('moment-timezone');
console.log(moment.tz);
moment.tz.setDefault('Asia/Tokyo');

// 現在日時より前→マイナス。現在日時より後→プラス
moment('2018/03/08 20:03:55', 'YYYY/MM/DD HH:mm:ss').diff(moment(), 'second');

// プラスならば現在日時より前。マイナスならば現在日時より後。
moment().diff(moment('2018/03/08 20:03:55', 'YYYY/MM/DD HH:mm:ss'), 'second');

// フォーマットチェック
moment(string, 'YYYY/MM/DD HH:mm:ss').isValid();

// フォーマットして出力
moment(string, 'YYYY/MM/DD HH:mm:ss').format('YYYY年MM月DD日 HH時mm分ss秒');

シェルでファイル名・ディレクトリ名を一斉置換する

# ファイル
find ./ -type f | grep old_word | awk '{print $0 " " $0 }' | awk '{sub("old_word", "new_word", $2); print $1 " " $2}' | xargs -n2 mv

# ディレクトリ
find ./ -type d | grep old_word | awk '{print $0 " " $0 }' | awk '{sub("old_word", "new_word", $2); print $1 " " $2}' | xargs -n2 mv

ffiのインストールで失敗する時

こんなエラー

An error occurred while installing ffi (1.9.21), and Bundler cannot continue.
Make sure that `gem install ffi -v '1.9.21'` succeeds before bundling.

ライブラリがないっぽいので

sudo yum install ruby-devel libffi-devel

すればOKだった。