IPアドレスから、都道府県庁の緯度、経度を取得するスクリプト
Kibana4のグラフ描写で、緯度、経度が必要だったので取得するスクリプトを書いた。
書いたスクリプトはこれ。
IPアドレスから、緯度、経度を取得するスクリプト · GitHub
準備
$ gem install geoip $ wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz $ gzip -d GeoLiteCity.dat.gz $ wget -O ip_to_lat_lon.rb https://gist.githubusercontent.com/kentatogashi/dcfac7362b847aba9b11998e33e9e3b3/raw/f60384745ac88b290004356f8c8eb91df534e5ef/ip_to_lat_lon.rb
使い方
$ dig www.hatena.ne.jp +short 59.106.194.19 $ ruby ip_to_lat_lon.rb 59.106.194.19 59.106.194.19 -> 27:大阪府 (135.52, 34.686)
参考
https://gist.github.com/kentatogashi/dcfac7362b847aba9b11998e33e9e3b3
GitLab8.6.1にアップグレードで出たエラーの対処
運用しているGitLab (8.0.2)のバージョンが古かったので、 8.6.1にアップグレードしたところ、エラーが出たのでメモを残す。
環境
- OS
- Ubuntu 14.04
- GitLab
- アップデート前 8.0.2
- アップデート後 8.6.1
インストールは、
gitlab/gitlab-ce - Packages - packages.gitlab.com | packagecloud
から、Communication Editionのdebパッケージをダウンロードして、dpkg コマンドを実行していた。
# cd /tmp # wget -O gitlab-ce_8.0.2-ce.0_amd64.deb https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/trusty/gitlab-ce_8.0.2-ce.0_amd64.deb/download # dpkg -i gitlab-ce_8.0.2-ce.0_amd64.deb
GitLab8.6.1にアップグレードで、500エラー
production.logを見ると、pg_trgm
が足りないよと怒られていた。
GitLab ver 8.6.* からは、pg_trgmというpostgresqlの拡張モジュールの設定が必要なので、
入れてあげればよい。
$ sudo su gitlab-psql $ /opt/gitlab/embedded/bin/psql --port 5432 -h /var/opt/gitlab/postgresql -d gitlabhq_production psql (9.2.10) Type "help" for help. gitlabhq_production=# create extension pg_trgm with schema pg_catalog; CREATE EXTENSION gitlabhq_production=# \q
念のため、GitLabの設定読み込みと再起動
$ sudo gitlab-ctl reconfigure
$ sudo gitlab-ctl restart
sedで、範囲指定してから、文字列置換を使う
sedで、範囲指定してから、文字列置換する方法を備忘録として残しておく。
例えば、以下のようなファイルがあるとする。
$ cat sample_http.conf <VirtualHost example.com:80> User www Group www Port 80 SSLDisable ServerAdmin admin@example.com ServerName example.com </VirtualHost> <VirtualHost example.com:443> User www Group www Port 443 SSLEnable ServerAdmin admin@example.com ServerName example.com </VirtualHost>
そして、ServerAdminをそれぞれ、
- HTTP
- http-admin@example.com
- HTTPS
- https-admin@example.com
に変更したい。
これをsedで、行うためには、こうする。
$ sed -i.bak -e '/<VirtualHost .*:80>/,/<\/VirtualHost>$/s|admin|http-admin|' sample_httpd.conf $ sed -i.bak -e '/<VirtualHost .*:443>/,/<\/VirtualHost>$/s|admin|http-admin|' sample_httpd.conf
実行すると思い通りの挙動になる。
<VirtualHost example.com:80> User www Group www Port 80 SSLDisable ServerAdmin http-admin@example.com ServerName example.com </VirtualHost> <VirtualHost example.com:443> User www Group www Port 443 SSLEnable ServerAdmin https-admin@example.com ServerName example.com </VirtualHost>
公式風に書くと、
sed -e '/範囲指定開始文字列/,/範囲指定終了文字列/s|置換前文字列|置換後文字列|'
ファイル
実際に実行したコマンドを簡単に見てみると、
$ sed -i.bak -e '/<VirtualHost .*:80>/,/<\/VirtualHost>$/s|admin|http-admin|' sample_httpd.conf
について、/<VirtualHost .*:80>/,/<\/VirtualHost>$/
で、
作業の範囲が、80番のVirtualHostディレクティブ内の内容であることを明示している。
続けて、置換の構文を s|admin|http-admin|
指定している。
Docker Machine にコマンドを追加する
MacOSで使う、 Docker Machine に、gcc、makeコマンド等を入れる方法を調べたので残す。
docker machineで、使われているOSは、TinyCoreLinuxというものらしい。
TinyCoreLinuxでは、tce-loadを使いパッケージをダウンロード、インストールすることができる。
例えば、gccの場合、以下のように使う。
$ docker-machine ssh dev $ tce-load -wi gcc.tcz Downloading: gcc.tcz Connecting to repo.tinycorelinux.net (89.22.99.37:80) gcc.tcz 93% |******************************************* | 23681k 0:00:24 ETgcc.tcz 99% 25431k 0:00:00 ETA gcc.tcz: OK $ which gcc /usr/local/bin/gcc
尚、入れられるパッケージは、以下のリストから探す。
TCZ Repository - Tiny Core Linux
gcc, make, cmake等はある。
参考
SeleniumサーバをDockerで構築する
SeleniumサーバをDockerコンテナとして構築する。
すでにGitHubにdocker-seleniumというプロジェクトが出ているが、
今回は日本語環境で利用したかったので、ゼロから作り直した。
使い方
$ git@github.com:kentatogashi/docker-selenium-ja.git $ cd docker-selenium-ja $ docker build -t 'kentatogashi/docker-selenium-ja' . $ docker run -dt -p 4444:4444 -p 5901:5901 kentatogashi/docker-selenium-ja
後記
デスクトップには、xfce4を使用していて、VNCでもつなぐことができる。
ちなみに、MacOSだと便利なことに、openコマンドで、簡単に立ち上げられる。
$ open vnc://selenium@192.168.99.100:5901
entrypointでは、vncserverの起動とXサーバを経由してSeleniumを起動する。
ただ、vncserver起動時にパスワードを対話形式で聞かれてしまうので、少しハマった。
結果的に、vncpasswdで、パスワードを事前に作成しておいて、それをコンテナに置くようにした。
Dockerfileには、こんな記述を書いた
# VNC Password RUN mkdir /root/.vnc ADD .vnc/passwd /root/.vnc/passwd RUN chmod 600 /root/.vnc/passwd
コマンドラインの結果をデスクトップに出力するために、 DISPLAYをきちんと指定が必要なのは初めて知った。
$ DISPLAY=:1 firefox
こうしておくと、デスクトップで開ける。
追記(2016/03/19)
Docker Hubに、登録したので、docker pull できる。
https://hub.docker.com/r/kentatogashi/docker-selenium-ja/
参考
DockerのUbuntu14.10の日本語化環境イメージを作成(Ubuntu) | BROKENDISH
CentOS/Ubuntu Linuxで、Oracle JDK 8をインストールしたDockerイメージを作る - CLOVER