タグに紐づくdockerイメージとインスタンスを削除するシェルスクリプト
#!/bin/bash
#
# タグに紐づくdockerイメージとインスタンスを削除する
#
export TAG=$1
if [ -z ${TAG} ];then
export COMMAND=`basename $0`
echo "usage: ${COMMAND} <tag>"
exit 1
fi
export ACTIVES=`docker ps | grep ${TAG} | wc -l | awk '{print $1}'`
if [ 0 -ne ${ACTIVES} ];then
echo "active instances:"
docker ps | grep ${TAG}
echo ""
echo "Abort."
exit 1
fi
docker ps -a | grep ${TAG} | awk '{print $1}' | xargs docker rm
docker rmi ${TAG}
JavaScript版getDividedList
var getDividedList = function(list, each_size) {
var divided_list = [];
var quotient = Math.floor(list.length / each_size);
var remainder = list.length % each_size;
for (var i = 0; i < quotient; i++) {
var offset = i * each_size;
var sublist = list.slice(offset, offset + each_size);
divided_list.push(sublist);
}
if (remainder > 0) {
var offset = quotient * each_size;
var sublist = list.slice(offset, offset + remainder);
divided_list.push(sublist);
}
return divided_list;
};
Windows上のVagrantでプロバイダにHyper-vを使用する(Hololens開発とか)
Hololensの開発用PCで、VagrantのLinuxサーバを立てたいとき、Hololensエミュレータの実行にはHyper-vが必要だが、VagrantをVirtualBoxで動かすと競合して動かないという問題が生じた。
VagrantのプロバイダをHyper-vにすると解決する。
以下はその手順。※CentOS 6なのは7で採用されたsystemctrlが好みじゃないから
$ vagrant box add centos/6
プロバイダ一覧からhyper-vを選択する
ちなみにHyper-vのネットワークスイッチの設定に日本語のスイッチ名があると文字コード問題でコケるので、英語のスイッチを追加してやる
Vagrantfileをつくる
$ vagrant init centos/6
共有フォルダはNFSをつかうのでプラグインを入れる
$ vagrant plugin install vagrant-winnfsd
Vagrantfileで共有フォルダのパスを指定するとき絶対パスを指定する
config.vm.synced_folder "C:\path\to\myfolder", "/vagrant", type: "nfs"
vagrant upするときは必ず--provider=hypervを指定する
$ vagrant up --provider=hyperv
xmllintでwell-formed XMLかどうかチェックする
xmllint --noout <filename>
Vagrantで古いboxファイルを使うと/vagrantがマウントエラーになる件
Vagrant 2.0.1 にアップデート後、vagrant init bento/centos-6.7 を実行したら、/vagrantをマウントできないというエラーが出た。
==> default: Mounting shared folders...
default: /vagrant => /path/to/my_vagrant_dir
Vagrant was unable to mount VirtualBox shared folders. This is usually
(略)vagrant sshでログイン後、yumコマンドでkernerアップデートして再起動したら治った。
vagrant ssh [vagrant@localhost ~]$ sudo yum update kernel [vagrant@localhost ~]$ exit vagrant reload
vagrant+unicornで立ち上がらない件
vagrantでホストのディスクをマウントしているところに
railsのコードを置いて、unicornを立ち上げたら.sockファイルが作れなくてエラーになった。
config/unicorn.rb の .sock ファイルのパスを /tmp 配下に変えたらちゃんと動いた
/etc/nginx/conf.d/rails.conf
upstream unicorn {
server unix:/tmp/unicorn.sock;
}
server {
listen 8080;
server_name localhost;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
root /home/vagrant/myapp/public;
client_max_body_size 100m;
error_page 404 /404.html;
error_page 500 502 503 504 /500.html;
try_files $uri/index.html $uri @unicorn;
location @unicorn {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://unicorn;
}
}{rails_root}/config/unicorn.rb
worker_processes Integer(ENV["WEB_CONCURRENCY"] || 3)
timeout 15
preload_app true
listen '/tmp/unicorn.sock'
pid '/tmp/unicorn.pid'
before_fork do |server, worker|
Signal.trap 'TERM' do
puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
Process.kill 'QUIT', Process.pid
end
defined?(ActiveRecord::Base) and
ActiveRecord::Base.connection.disconnect!
end
after_fork do |server, worker|
Signal.trap 'TERM' do
puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT'
end
defined?(ActiveRecord::Base) and
ActiveRecord::Base.establish_connection
end
stderr_path File.expand_path('log/unicorn_stderr.log', ENV['RAILS_ROOT'])
stdout_path File.expand_path('log/unicorn_stdout.log', ENV['RAILS_ROOT'])
PythonでURLエンコードされたテキストをデコードする
cat encoded.txt | python decode.py みたいに実行する
# -*- coding: utf-8 -*- import urllib.parse import sys for line in iter(sys.stdin.readline, ""): print(urllib.parse.unquote(line), end='')