Latest Publications

Adwordsの金額指定支払

金額を自動支払いにしていると
使った分だけ後払いで支払うことになるが
請求の都合などで切りの良い数字にしたい時には手動支払いを行う。

これをたまにしかしないため
その支払い画面がどこにあるかいつも迷ってしまうのでメモ。

Snapshot 2013:09:02 11:35

jenkinsでgitリポジトリ指定時のエラー

stdout: 
stderr: Host key verification failed. 
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

known_hosts不足だった。
/var/lib/jenkins/.ssh/known_hosts
に追記して解決。

MySQLのカラム順番変更

SQLとしては順番は関係ないけど見ててわかりやすいように整理するために。

ALTER TABLE テーブル名 MODIFY カラム名 データ型 after 移動させる一つ上のカラム名;

phpのcurlでsslサイトにつなぐ

phpからcurlを使ってサイトにアクセスした際に
どうしてもレスポンスが取得できないことが発生。

何もレスポンスがないので原因判明に苦労したが
terminalのコマンドで

curl -I https://example.com -k

と入力すると

curl: (35) Unknown SSL protocol error in connection to example:443

ということでSSLのプロトコルエラーであることが判明。

色々とコマンドを試し、

curl -I https://example.com -k  --tlsv1

で接続できた。

これをphpのcurlでどうやるかも苦労したけど
下記のオプションで、SSLのバージョンを手動指定することで解決。

curl_setopt_array($m,
  array(
    CURLOPT_URL =>'https://example.com',
    CURLOPT_SSLVERSION => 1,
  )   
);

SSLのバージョンは通常、自動判別するけど
サイトによってはそれが上手く動かず
指定をする必要があるみたい。

gitで新規作成ファイルがstatusに上がってこない問題を解決

ファイルを変更したものはgit statusに上がってくるが
新規作成したものは出てこない。なのでaddもできない。
.gitignoreでもそんなことしていないし、原因を探すのに苦労した。

原因は上位ディレクトリの.gitignore。

Macのホームディレクトリにあるドットファイルを
gitで管理しはじめたが
その下位ディレクトリに開発ソースを置いていたので影響を受けてしまった。

プロジェクトの.gitignoreに下記を追加

!*
!.*

無視しない、ということなのでイコール許可するということ。
一旦全部許可した上で、改めて無視ファイルを指定する。

git サブモジュールメモ

gitのサブモジュールを追加

自分の管理しているgitプロジェクトの内部に
プラグインなどとして別のgitプロジェクトを追加したい場合は
サブモジュールとして入れる。

プロジェクトルートで下記。

git submodule add git://example.com/repo.git DIR

サブモジュールの中身は変更しない。
したらgit add できずに modified contentとかって残る。

gitのサブモジュールを展開

git cloneしただけではサブモジュールはディレクトリしかできない。
下記が必要

git submodule init
git submodule update

gitのサブモジュールを削除

サブモジュールのディレクトリを消して
.gitmodulesも.git/configも修正したのに
再度追加しようとすると
already exists in the index
ってエラーが出たら

git rm -r DIR

git submoduleを最新にする

git submodule update

をやって最新にしてたつもりだったのに
実際にはなっていなかった。

submoduleを最新にするには
下記が必要みたい。

git submodule status
git submodule foreach git pull
git submodule status

後はコミットしとく。

git add -A
git commit -m "hoge"
git push

参考記事
git submoduleで各サブモジュールを最新にする – メモの日々(2011-04-13)

vimが文字化けしたので入れなおして修正

サーバーのvimがいつの間にか日本語文字化けするようになっていた。

調べればすぐ解決するだろうと思っていたら
サーバーの文字コード設定や
.vimrcの設定をしても解決せず。

結局、vimを入れなおすことで修正できた。

現在動いているvimのパスを調べて削除してから
下記を実行

cd ~/tmp
wget ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2
wget ftp://ftp.jp.vim.org/pub/vim/extra/vim-7.2-extra.tar.gz
wget ftp://ftp.vim.org/pub/vim/extra/vim-7.2-lang.tar.gz
tar jxvf vim-7.3.tar.bz2
tar zxvf vim-7.2-extra.tar.gz
tar zxvf vim-7.2-lang.tar.gz
mv vim72 vim73/
cd vim73/src
./configure --enable-multibyte --with-features=huge --disable-selinux --prefix='/usr/local/vim-7.3'
make
sudo make install
cd /usr/local/bin
sudo ln -s /usr/local/vim-7.3/bin/vim

こちらのページを参考にさせていただきました。
CentOSにVim最新版をインストールする

サーバーの設定を自動でやるfabric

導入

sudo easy_install fabric

インストールすると、

/usr/local/bin/fab

ができる。

なぜかパスが通ってなかったので
.zshenvにパスを追加。

どこでもいいのでfabfile.pyを作成。

import os.path
from fabric.api import run, sudo, settings, abort, put, cd, env 
from fabric.contrib.console import confirm
from fabric.decorators import runs_once

# サーバー情報
env.hosts = ['xxx.xxx.xxx.xxx']
env.user = 'username'
env.port = '99999'
#env.key_filename = [os.path.expanduser('~/.ssh/secret_key')]

def hello():
 run("touch test1.txt")
 run("mv test1.txt test2.txt")

実行したら、設定ファイルの中身がサーバーで実行される。

fab hello

後は自分の設定したい内容を作りこんでいくだけ。

fabricがいるのか?

Capistrano使いの方から、
「Capistranoだけでいいじゃないか」と
disられる。

デプロイツールではあるけど
どうせCapistranoを使っているなら
サーバー設定用のプロジェクトを作っておいてそっちでやればと。

反論できず。

追記

sudo("mv test1.txt test2.txt")

というような感じでsudoを入力できるようになってて
パスワードはどうするんだろうかと思っていたら
fabの実行時にパスワードを聞かれた。なるほど。

サーバーのホスト名は安易に変更してはいけない

最近複数のサーバーにsshすることが多くなり、
今どこのサーバーにいるのかをわかりやすくするため
シェルの表示にホスト名を表示するようにしていた。

しかし、さくらVPSのホスト名はどれも似たようなものでわかりにくいため
自分がわかりやすい名前に変更してみた。

変更自体はすぐできたが、
その後にメールソフトからの送信ができなくなった。

ホスト名を変更した影響が
メール送信用に設定しているsendmailに出てしまった様子。
認証のところで止まってしまう。

色々と調べて試したがどうやっても上手く動かず
結局ホスト名を元に戻した。

シェルの表示はシェルの設定を変えてわかりやすくした。
本来はこっちだよね。

最初からホスト名を変えてから設定すれば
良かったのかもしれないが、設定が終わった後で
安易にホスト名の方はしないものだと学習。