理想のステージ設計のメモ

GitHub を使ってシステムの開発を行う際の理想のステージ設計のメモです。 用意するステージ production 環境 development 環境 feature 環境 各ステージの役割 共通事項 データベースなどのシステムが利用する外部リソースは全ての環境で独立しています。 …

fish shell で全ての Docker コンテナを停止するコマンド

sh -c 'sudo docker stop $(sudo docker ps -a -q)'

Twitter の OAuth で Access Token を得るまでの流れ

コンシューマーは consumer_key と consumer_secret を取得しておく コンシューマーは consumer_key と consumer_secret を使って request_token(oauth_token) を取得する コンシューマーは request_token(oauth_token) を使って認可画面の URL を生成する …

古いJenkinsをバージョンアップした際に起動しなくなる現象の解決方法の1つ

openjdk-1.8.0 をインストールする。

docker build コマンドの t オプションでイメージに任意の名前を付けることができる

sudo docker build . -t saitama .: カレントディレクトリに存在する Dockerfile を参照する。 -t saitama: 生成するイメージに saitama という名前を付ける。

docker run コマンドの例

sudo docker run -d -p 8877:80 -v /home/hoge/moge:/var/www/html php5.6 Docker コンテナを実行する。 -d: バックグラウンドで実行する。 -p 8877:80: ホスト側の8877番ボートをDockerコンテナの80番ポートに転送する。言い換えると、ホスト側の8877番ボー…

プライベートIPアドレス早見表

クラス 範囲 サブネットマスク CIDR表記 IPアドレスの数 クラスA 10.0.0.0~10.255.255.255 255.0.0.0 8 16,777,216 クラスB 172.16.0.0~172.31.255.255 255.240.0.0 12 1,048,576 クラスC 192.168.0.0~192.168.255.255 255.255.0.0 16 65,536

Ubuntu 16.04 でマウスの速度を永続的に変更する (2)

下記の内容を記載したファイルを ~/.config/autostart/xset.desktop として保存する。 [Desktop Entry] Type=Application Exec=xset m 4/1 0 Hidden=false NoDisplay=false X-GNOME-Autostart-enabled=true Name[ja_JP]=Set mouse config Name=Set mouse con…

vagrant-hostmanagerを使ったVagrantfile

Vagrant.configure("2") do |config| config.hostmanager.ip_resolver = proc do |machine| result = "" machine.communicate.execute("ifconfig enp0s8") do |type, data| result << data if type == :stdout end (ip = /inet (\d+\.\d+\.\d+\.\d+)/.match(…

独立したステージング環境をワンクリックまたはワンコマンドで用意したい

アイデアのメモです。 ローカル環境だと言語やミドルウェアのバージョンの差異により正常に動作しない場合がある。複数のプロジェクトを開発しているとその状況に陥る可能性が高くなる。 VagrantやDockerにより独立したステージング環境を用意する。 すぐに…

Ubuntu 16.04 でマウスの速度を永続的に変更する

/usr/share/X11/xorg.conf.d/50-mouse.conf というファイル名で下記の内容を記述する。 Section "InputClass" Identifier "My Mouse" MatchIsPointer "yes" # Default value of mouse acceleration: 2/1 4 # Set AccelerationNumerator to zero to disable O…

docker rm でコンテナを削除しようとすると Devise is Busy と表示されコンテナを削除できないが、/var/lib/docker/devicemapper/mnt に該当のディレクトリが無いときの対処方法

docker サービスを再起動する。

ディレクトリの容量を調べるコマンド

du -s DIRECTORYPATH -s は与えられた引数の位置だけの容量を表示する。 DIRECTORYPATH は調べたいディレクトリのパス。

self と self.class の違い

self.class は自身のクラスを返す。 self は自身のクラスまたはインスタンスを返す。 class Hoge def moge puts self.class.methods end def noge puts self.methods end end h = Hoge.new h.moge puts "-----" h.noge 出力結果は下記となる。 new allocate …

手段が目的となっても良い

概要 「手段と目的を混同してはいけない」「手段の目的化はダメ」のようなセリフはこれまで生きてきて何度も聞いていて、その意味や伝えたいことはなんとなく理解していたつもりでしたが、具体的に考えてみると違和感が出てきました。結論として、手段が目的…

unicorn のプロセスを終了させる

下記のコマンドを実行する。 kill -QUIT `cat tmp/pids/unicorn.pid` unicorn の親プロセスの ID は tmp/pids/unicorn.pid に保存されている。

親プロセスのプロセスIDを調べる

ps alx コマンドで表示される PPID が親のプロセスIDを示す。

unicorn の起動コマンド

bundle exec unicorn_rails -c config/unicorn.rb -E development -D -c: コンフィグファイルのパスを指定する。 -E: Rails の環境を指定する。この場合は development 環境となる。 -D: バックグラウンドで実行する。

指定した名前のDockerコンテナが存在すればdocker stopコマンドを実行する

sudo docker ps -a --filter "name=app" | awk 'BEGIN{i=0}{i++;}END{if(i>=2)system("sudo docker stop app")}' --fileter "name=app" は docker ps -a の結果の中からコンテナ名が app であるものだけを表示するオプション。 sudo docker ps -a --filter "…

全てのDockerイメージを削除する

sudo docker images -q | xargs sudo docker rmi

全てのDockerコンテナを削除する

sudo docker ps -aq | xargs sudo docker rm コンテナは停止している必要がある。 -aオプションは全てのコンテナを表示する。 -qオプションはコンテナIDのみを表示する。

Capistrano のタスク間で共有できる変数

set :hoge, capture("pwd") 変数 hoge に capture("pwd") の実行結果が格納される。この hoge は別のタスクからでも fetch(:hoge) と書くとアクセスすることができる。

Cygwin でデスクトップに移動しやすくするエイリアス

下記を.bashrcに書くとデスクトップに移動しやすくなります。 alias desktop='cd $USERPROFILE/Desktop'

PHPloy を使った FTP サーバーへのデプロイ

いろいろと FTP サーバーへのデプロイツールを探していましたが、PHPloy が今のところの使用感としては良い感じです。 https://github.com/banago/PHPloy PHPloy は Git と連携しており、php phploy.phar deploy というコマンドを実行すると最後のコミットの…

qrank を WordPress から Flight に移行した

Flight への移行 qrank では WordPress をフレームワークとして使っていましたが、ランキングデータの保存をすべて外部のサーバーで行うようにしたので、WordPress の役割はルーティングとビューだけになってしまいました。となると WordPress である必要は…

qrank の API サーバーを Serversman から ConoHa に移管した

概要 qrank はもともと WordPress で動かしていましたが、保存している記事の件数が増えてレスポンスが遅くなっていたため、記事情報の保存やランキングの計算を外部のサーバーに委ねることにしていました。そのサーバーに Serversman のメモリ 1GB のプラン…

$LOAD_PATH.unshift File.join(File.dirname(__FILE__), *%w[.. lib]) の意味

Serverspecのbin/serverspec-initに書かれていた一行です。 $LOAD_PATH.unshift File.join(File.dirname(__FILE__), *%w[.. lib]) 趣旨 $LOAD_PATH に実行中のファイルのディレクトリから ../lib の場所を追加する。 $LOAD_PATH に lib ディレクトリの位置を…

日付の期間を扱いやすくする PHP ライブラリ DateRange を作りました

PHP

ある日付がある期間に含まれているかどうかやある期間とある期間が重なっているかどうかを検査したりする機能を提供するライブラリを作りました。 GitHub https://github.com/suzuki86/DateRange GitHub Page http://suzuki86.github.io/DateRange/ 使い方 D…

委譲の使いどころ

委譲について調べたので記録を残しておきます。 参考 Rubyでdelegation(委譲)を簡単にする2つの方法 http://qiita.com/w650/items/671cc9c49b2ebf60620d 「継承より委譲」≠「継承使うな」 http://osa.hatenablog.com/entry/2014/08/28/204853 まとめ Ruby で…

配列の要素の中で特定の条件を満たす要素を取り出す

partition メソッドを使うことで特定の条件を満たす要素を取り出すことができます。 下記は [1,9,3,15,5] という配列から 4 以上の要素を変数 a に、3 未満の要素を変数 b に代入します。 a, b = [1,9,3,15,5].partition{ |item| item > 3 }