Command to clean unused Docker container/images/volumes to get disk space | 不要なDockerコンテナ・イメージ・ボリュームを削除するコマンド

# check disk size df -h docker run –rm alpine df -h # remove stopped container, unused images, unused volumes docker rm $(docker ps -q -f ‘status=exited’) docker rmi $(docker images -q -f ‘dangling=true’) docker volume rm $(docker volume ls -q -f ‘dangling=true’) # check disk size again df -h docker run –rm alpine df -h

Read More

Indirect expantion in shellscripit on Alpine – Bash以外での変数の間接展開

tl;dr use eval “echo \${$FOO}” #!/bin/sh VALUE1=”happy!” # target value ENV_VAR=VALUE1 # variable bname echo $VALUE1 # => happy! echo $ENV_VAR # => VALUE1 echo ${ENV_VAR} # => VALUE1 echo \${$ENV_VAR} # => ${VALUE1} #=== ash or other shells ===# eval “echo \${$ENV_VAR}” # => happy! #=== bash supports original indirect expantion, but not ash on Alpine linux ===# echo ${!ENV_VAR} #=== example for “if” “test” conditions ===# test -n $ENV_VAR \ # (1) && test “$(eval “echo \${$ENV_VAR}”)” == “happy!” \ # (2) && echo “I’m Happy!!” # (1) if ENV_VAR is set, # (2) and if $VALUE1 == “happy!”

Read More

pandasメモ(axis, level)

axis=0: 行を対象に処理を実行 axis=1: 列を対象に処理を実行 level=[0,1,2]: groupby() や set_index() で使われるMultiIndexに対して、対象となるIndex(順番)の指定 df.stack // 列を行に旋回(ピボット)する df.unstack // 行を列に旋回(ピボット)する df.replace // データの置換を行う df.rename // 軸の命名を変更する df.drop_duplicated // 重複データの削除 df.qcut // ビニング

Read More

Install numpy and pandas on alpine:python3

tl;dr Install build tool and create symbolic link for locale. $ apk add –update curl gcc g++ $ ln -s /usr/include/locale.h /usr/include/xlocale.h $ pip install numpy # => success happy python life 🙂 error messages Before install g++, I got error below, /usr/lib/gcc/x86_64-alpine-linux-musl/5.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find Scrt1.o: No such file or directory /usr/lib/gcc/x86_64-alpine-linux-musl/5.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find crti.o: No such file or directory /usr/lib/gcc/x86_64-alpine-linux-musl/5.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find -lssp_nonshared /usr/lib/gcc/x86_64-alpine-linux-musl/5.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find -lc /usr/lib/gcc/x86_64-alpine-linux-musl/5.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find crtn.o: No such file or directory collect2: error: ld returned 1 exit status /usr/lib/gcc/x86_64-alpine-linux-musl/5.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find Scrt1.o: No such file or directory /usr/lib/gcc/x86_64-alpine-linux-musl/5.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find crti.o: No such file or directory /usr/lib/gcc/x86_64-alpine-linux-musl/5.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find -lssp_nonshared /usr/lib/gcc/x86_64-alpine-linux-musl/5.3.0/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find -lc…

Read More

Elasticsearch 2.x で複数のドキュメントにUPDATE文のようなもの実行する

公式ドキュメントのこれだった。 Update By Query API なんだけどうまくいかず、結局はクエリと設定の両方の問題やってん。 設定 探した限りでは実行時の設定APIは用意されていなくて、 設定ファイルで変更しないといけないっぽい。 # script.inline: on がscriptアップデートに必要 $ echo “script.inline: on” >> elasticsearch.yml # 公式dockerのES $ cat elasticsearch.yml network.host: 0.0.0.0 script.inline: on クエリ POST /<index>/_update_by_query?conflicts=proceed に対して以下のようなクエリを投げる { “script”: { “inline”: “ctx._source.my_point= 100” }, “query”: { “term”: { “my_point”: 0 } } } これは↓のようなSQLのイメージ UPDATE my_hoge_index SET my_point=100 WHERE my_point=0; curlから。 $ curl -s http://localhost:9200/my_hoge_index/_update_by_query?conflicts=proceed -XPOST -d ‘ { “script”: { “inline”: “ctx._source.my_point= 100”}, “query”: { “term”: { “my_point”: 0 } } } ‘ | jq . { “took”: 1920, “timed_out”: false, “total”: 500, “updated”: 500, “batches”: 1, “version_conflicts”: 0, “noops”: 0, “retries”: 0, “throttled_millis”: 0, “requests_per_second”: “unlimited”, “throttled_until_millis”: 0, “failures”: [] }

Read More

GA realtime api

申し込み 以下のフォームから申し込む https://docs.google.com/forms/d/1qfRFysCikpgCMGqgF3yXdUyQW4xAlLyjKuOoOEFN2Uw/viewform いつのまにか使えるようになっている テスト 上部ヘッダー「アナリティクス設定」 右ペイン「ビューの設定」 「ビュー ID」 API Explorer https://developers.google.com/analytics/devguides/reporting/realtime/v3/reference/data/realtime/get?hl=ja#auth

Read More

VMWare Fusionで作ったWindows8をVirtualBoxへ移行する

背景 「Windows8安い!」と思って買う Mac MiniにVMWare Fusionを買ってインストール 「Windows8安い!」と思ってさらに買う Mac Book AirにVMWare Fusionをインストール。 (30日経って、体験版の期限が切れる。) そういえばChef-soloを入れようと思ってVirtualBox入れてたっけ? これ使えばWindowsも動くよ!! というわけで、ovftoolを使ったディスク変換系のインポート方法が失敗しまくり、 ストレージは圧迫するわ時間は食うわでにっちもさっちもいかなくなった時に、 「こんな作業いらなかったじゃん!」と憤慨した記録。 (※ 大量のDisk I/Oを伴う利用をする場合は変換したほうがいいかもですが、本番サービスのDBとかP2Pファイル共有でもやらない限りあまりない気がします。) 参考 参考、というか元ネタ。神。全てここに書いてありました。 Carlos Sanchez’s Weblog – Migrating Windows 7 from VMWare Fusion to VirtualBox 一応、日本語で手順を書いておきます。 環境 OS X 10.7.5 VirtualBox 4.2.14 VMWare Fusion 5の体験版 手順 VMWare Toolsのアンインストール 仮想マシン上でアンインストールしておきましょう。とのこと。 (VMWare Fusion自体が期限切れで起動できなかったためスキップ。) 仮想マシンのディスクファイルの移動・コピー 「仮想マシン名.vmwarevm」を右クリック→「Show Package Contents(パッケージの内容を表示)」を選択する。 中にxxx.vmdkというファイルがあるので、それを全て適当な場所に移動orコピーする。 (私の環境では[Virtual Disk.vmdk]と[Virtual Disk-s0xx.vmdk]というファイルが31個ありました。) .vmwarevmというファイルは「Documents(書類)」→「Virtual Machines(仮想マシン)」の中にあると想います。 VirtualBoxでの仮想マシン作成 VirtualBoxを起動し、上部タブより「New(新規)」をクリックする。 「Name(名前)」にはVMWareの仮想マシンと同じ名前を設定する。タイプ・バージョンはゲストOSに合わせる。 「Use an existing virtual hard drive file(すでにある仮想ハードドライブファイルを使用する)」から、先ほどのvmdkファイルを選択する。(ファイルが複数ある場合は、連番になっていないものを選択) 仮想マシン設定の変更 上部タブより「Settings(設定)」をクリックする。 「System(システム)」より、「Extended Features: Enable IO APIC(拡張機能: IO APICを有効化)」にチェックが入っていることを確認する 「Storage(ストレージ)」より、「Controller(コントローラー):SATA」を削除する。 さらに「Storage(ストレージ)」より、「Controller(コントローラー):IDE」にて「Add Hard Disk(ハードディスクの追加)」アイコンをクリックし、「Choose existing disk(既存のディスクを選択)」を選択する。先ほどのvmdkファイルを選択する。 さらに「Storage(ストレージ)」より、「Controller(コントローラー):IDE」の「Use host I/O cache(ホストのI/Oキャッシュを使う)」のチェックを外す。 仮想マシンの起動 通知アラートがたくさん出るのでひたすらOKで消していく。 普段より時間がかかって起動する。 ユーザーログオン! 上部より「Devices」→「Install Guest Additions」を選択する。 CDが挿入された旨の通知がでるので、そのままインストールを進める。 (Windowsのライセンス認証をし直す? めんどす…) 少しOracle様が好きになりました///

Read More