タグに紐づく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='')