バカンス駆動開発

この前バカンスって言ったら「古っ」って言われました

XdebugをLinux(CentOS6)に入れる。初期設定とかはまったとことか

ソースから入れる方法です。

// 最新のバージョンをダウンロード
# wget http://www.xdebug.org/files/xdebug-2.3.3.tgz
# tar xzvf xdebug-2.3.3.tgz
# cd xdebug-2.3.3/
# phpize
# ./configure --enable-xdebug 
# make
# make install

phpizeで以下のようなエラーが発生する場合

Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = "ja_JP.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = "ja_JP.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

環境変数を指定あげるとうまくいきます。

# echo ”export LC_ALL=C” >> /root/.bashrc
# source /root/.bashrc 

make installが成功すると以下のようなxdebug.soのパスが表示されます。

Installing shared extensions:     /usr/local/lib/php/extensions/no-debug-non-zts-20131226/

このパスを元にphp.iniを編集します。
phpinfoを使ってLoaded Configuration Fileに指定されているphp.iniのパスを確認します。
もし指定されていなければその上のConfiguration File (php.ini) Pathのパスのディレクトリ以下にphp.iniファイルを作成します。

php.iniに以下を追記します。

;xdebug
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so
xdebug.default_enable=1
xdebug.remote_enable=on
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.remote_autostart=1
xdebug.remote_host=localhost
xdebug.var_display_max_children = -1
xdebug.var_display_max_data = -1
xdebug.var_display_max_depth = -1

サーバー再起動

# /etc/init.d/httpd restart

phpinfo内にxdebugで検索して何か入っていたらだいたい成功です。

ブラウザ上でxdebugのオレンジ色のテーブルのエラーが表示されない場合、html_errorsがOffになっているかもしれません。

# vi php.ini

html_errors = Off
↓
html_errors = On

backboneからのajaxがpayloadでPHPの$_POSTで取得できない

なんか何言ってるかよくわからないタイトルになっちゃいました。

状況としては、BackboneからサーバーにBackbone::synsを通じてPOST→通常のajaxと同じようにサーバー側(PHP)の$_POSTで取得しようとすると値が空。

chromeのdevelper toolのnetworkタブで送信内容を確認すると普段はFormDataとなっているところが 送信されるものがpayloadとなっていました。どうやらこれが原因のようです。

f:id:egapool:20150728224852p:plain

続きを読む

Google Spread SheetでworksheetIDの取得

worksheetIDの取得

GASのスプレッドシートの内容を取得するにはスプレッドシートを識別するkeyとシートを識別するworksheetidの2つが必要ですが、worksheetidが単純に取得できません。keyはURLにあるので簡単なのですが。

gdata api - How to convert Google spreadsheet's worksheet string id to integer index (GID)? - Stack Overflow

ここによると以下の処理で取得できるようです。

function gid_to_wid(gid) {
    var xorval = gid > 31578 ? 474 : 31578;
    var letter = gid > 31578 ? 'o' : '';
    return letter + parseInt((gid ^ xorval)).toString(36);
}

gidはシートのURLの末尾に付いている値です。

ubuntuでMySQLの日本語が文字化けしてる

vagrantubuntuに入ってたMySQLが日本語文字化けしているのでその対応。
boxファイルはこちらを利用しました。
r8/vagrant-lamp

まず現在の文字セットを確認

//mysqlログイン
% mysql -u root -p

mysql> show variables like "char%";

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

デフォルトがlatin1になっています。

my.confを変更

//ubuntuの場合mysqlの設定ファイルは以下です
% sudo vi /etc/mysql/my.cnf

各項目に以下を追記していきます。すでに設定項目がある場合はそのままか上書きをします。

[client]
default-character-set = utf8

[mysqld]
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8

[mysqldump]
default-character-set = utf8

[mysql]
default-character-set = utf8

MySQLを再起動

% sudo /etc/init.d/mysql restart

ubuntuでphpunitの出力でvar_dumpが省略表示される

ubuntuphpunit内でvar_dump表示すると省略表示されました。

これはまぁXdebugのせいなんですが、php.iniファイルを見に行ってもxdebugに関する項目がない。 というわけでCentOSとちょいと場所が違うようです。

ここにはxdebugの設定が書いていない!

$ sudo vi /etc/php5/apache2/php.ini 

こっちにありました。

$ sudo vi /etc/php5/conf.d/xdebug.ini

ファイルの末尾にこれを書き込めばOK

xdebug.var_display_max_children = -1
xdebug.var_display_max_data = -1
xdebug.var_display_max_depth = -1

Windows7でコマンドラインでgitを使う

自宅ではMacのターミナルからgitコマンドを叩いてますが、職場がWindows7なのでWinでもコマンドで叩くためのあれこれ。

1. msysgitインストール

CUIのクライアントソフトとしてmsysgitというものがあります。

Git for Windows

bashでgitを扱う感じをWindowsでも再現したみたいな感じのものだと思います。使い勝手はMacターミナルと同じ感じです。sshとかgitコマンド以外のコマンドも使えます。昔のバージョンは日本語入力自体できないので最新版でよろしくお願い致します。

WindowsでgitをGUIで使うためのクライアントである「 Git Extension 」をインストールすると同時にインストールされますが、これはバージョンが古い気がするので要注意です。msysgitを単体で入れなおした方が良いかもしれません。

2. 日本語まわり補強

lsコマンドで日本語ファイルが文字化け

このオプションつければOKです。

ls --show-control-chars

git statusで日本語ファイルが文字化け

これを打てばOK

git config --global core.quotepath false

fontがどうとかエラーメッセージが出る

こんなエラーが出る場合。

Warning: Your console font probably doesn’t support Unicode. If you experience strange characters in the output, consider switching to a TrueType font such as Lucida Console!

  1. msysgitウィンドウの上部バーを右クリックしてプロパティをクリック
  2. フォントタブをクリックしてMS ゴシックを選択してOK

3. その他設定

ブランチ名をタブ補完できるようにする

こちらのファイルをコピーしてファイル名を.git-completion.bashとかで保存。保存場所はhomeで宜しくお願いします

git/contrib/completion/git-completion.bash at master · git/git

同じくhome/.bash_profileを作成してsource ~/.git-completion.bashと書き込む。msysgit再起動で反映されます。

エイリアスを設定

home/.bashrcを作成。

// .bashrc
alias ls='ls  --show-control-chars'    //さっきの日本語用オプションをエイリアスに。
alias dev='cd /path/to/dev-dir/'    'dev'と叩くと開発現場直行するように。

あとは各自よく使うコマンドとかオプションをエイリアスにしてください。

先ほどの.bash_profilesource ~/.bashrcと書き込む。msysgit再起動。

git status, git pull等を早くする

// ファイル、インデックスの比較を並列実行
git config --global core.preloadindex true

// キャッシュを有効化してるっぽい
git config --global core.fscache true

gitコマンドのエイリアス

~/.gitconfigを開いて以下を書き込んで保存。

[alias]
    alias = !git config --list | grep 'alias\\.' | sed 's/alias\\.\\([^=]*\\)=\\(.*\\)/\\1\\\t => \\2/' | sort
    b = branch -a
    br = browse-remote
    ci = commit 
    co = checkout
    d = diff
    dc = diff --cached
    di = diff   
    dic = diff --cached
    f = fetch --prune
    fs = !git f && git su
    ignore = !([ ! -e .gitignore ] && touch .gitignore) | echo $1 >> .gitignore
    info = remote show origin
    l = log --graph -n 20 --pretty=format:'%C(yellow)%h%C(cyan)%d%Creset %s %C(green)- %an, %cr%Creset'
    ll = log --stat --abbrev-commit
    ln = log --graph -n 20 --pretty=format:'%C(yellow)%h%C(cyan)%d%Creset %s %C(green)- %an, %cr%Creset' --name-status
    lp = log --oneline -n 20 -p
    ls = log --stat --abbrev-commit -n 1 # display previous log
    s = status --short --branch
    st = status 
    su = submodule update

あとこれ以外にもこれとかよく使います。

    dl = branch -D    //ブランチを消去
    cim = commit -m    //コミットコメントを同時に

他に何かいい設定が見つかれば追記していきます。

追記

// `git p`で今作業しているブランチをプッシュする
p = !git push origin `git rev-parse --abbrev-ref HEAD`

この設定をしていないと、master以外のブランチで作業中のときはgit push origin brunchABCという風に冗長になる。

スペシャルサンクス

  1. msysgit で日本語を使いたい - Qiita
  2. bash で git コマンドのブランチ名などを補完するには - Qiita
  3. 天下一gitconfig大会

gitのリモートリポジトリをさくらのVPSに設置して自動ビルドさせる方法

前提

すでに公開ディレクトリに走らせているソースコードがある。
今までは一人で管理していたが、複数人でgitで管理することにする。
ローカルからプッシュすると公開ディレクトリに自動でビルドされるようにする
サーバー環境はさくらのVPSでCentOS5.6。
gitはすでにインストール済み。
公開ディレクトリを/var/www/html/website/とする。
中央リポジトリ/var/www/git/website.gitに置く。

流れ

  1. 作業グループを作成してユーザーを所属させる
  2. 中央リポジトリを作成
  3. 公開ディレクトリ以下をgitで管理
  4. 公開ディレクトリから中央リポジトリにプッシュ
  5. 公開ディレクトリを消去して新規作成
  6. 公開ディレクトリ上で中央リポジトリをクローン
  7. ディレクトリの権限等をきちんと設定 ←一番大事!
  8. 中央リポジトリにローカルからプッシュすると公開ディレクトリに自動でビルドさせるようにする
  9. ローカルからプッシュ
続きを読む