2017年3月1日水曜日

今更ながらgitのお勉強(2) git pushで本番環境に自動デプロイさせる

ローカル環境で
git push origin master

本番環境で
git pull origin master

これが面倒なので、ローカルでgit pushさせたら本番でpushを検知して、自動でpullするようにする。

$ cd /home/gitrepo/○○.git/hook
$ vi post-receive
#!/bin/sh
cd /var/www/html/test
git --git-dir=.git pull
$ chmod a+x post-receive

これでローカルからgit pushすると本番に自動反映されるようになりました。

2017年2月27日月曜日

実行中のプロセスの調べ方

そもそもプロセスって何?・・・Linuxで動作中のプログラム。タスクとも呼ばれる。プロセスには親子関係があり、親プロセスが子プロセスを生む。

プロセスの確認
psコマンドで実行します。まずはオプションなしの単純なパターン

$ ps
PID TTY          TIME CMD
21750 pts/0    00:00:00 ps
30490 pts/0    00:00:00 bash

表示の意味
PID・・・プロセス番号
TTY・・・プロセスを実行している制御端末
TIME・・・CPUの消費時間
CMD・・・実行コマンド

すべてのプロセスを確認
$ ps a

すべてのプロセスをユーザーフォーマットで表示
$ ps au

制御端末のないものも含むすべてのプロセスをユーザーフォーマットで表示
$ ps aux

特定のプロセスを確認する(ここではhttpd)
$ ps aux | grep httpd
root      4250  0.0  0.1 413200 39388 ?        Ss   Feb26   0:55 /usr/sbin/httpd
nobody   23957 17.6  0.1 426296 45972 ?        R    17:23   0:01 /usr/sbin/httpd
nobody   23958  3.5  0.1 418328 37932 ?        S    17:23   0:00 /usr/sbin/httpd
nobody   23984 10.7  0.1 422560 41852 ?        S    17:23   0:00 /usr/sbin/httpd
nobody   23985  6.1  0.1 421728 41468 ?        S    17:23   0:00 /usr/sbin/httpd
nobody   23986  1.6  0.1 423500 41816 ?        S    17:23   0:00 /usr/sbin/httpd
nobody   23987  1.8  0.0      0     0 ?        Z    17:23   0:00 [httpd] <defunct>
nobody   23988  3.2  0.1 423456 42744 ?        S    17:23   0:00 /usr/sbin/httpd
nobody   23989  2.7  0.1 421540 41456 ?        S    17:23   0:00 /usr/sbin/httpd
nobody   23991 10.5  0.1 444792 63724 ?        S    17:23   0:00 /usr/sbin/httpd
500      24130  0.0  0.0 107456   940 pts/0    S+   17:23   0:00 grep httpd

STATのアルファベットの意味
R・・・稼働中
S・・・スリープ中
D・・・スリープ中(現在制御不可)
T・・・停止処理中、またはトレース中
Z・・・ゾンビ状態

以前起きたトラブル
nagiosからプロセス増加の警告
→ps aux | grep httpdでapacheのプロセスを確認
→スリープ状態のhttpdが大量にある

とりあえずは以下で対処できます
・killコマンドで個別にプロセスを消す
・apache再起動

2017年2月22日水曜日

setcookieした内容がリダイレクトで消える件

セットしたクッキーがリダイレクト後に消えてしまう
setcookie( "test", "value", time() + 1800 );
header("location:example.com");
デフォルトではカレントディレクトリが有効範囲らしいので
setcookie( "test", "value", time() + 1800, "/" );
としてドメイン配下をすべて有効にするとうまくクッキーが焼けました

2017年2月13日月曜日

今更ながらgitのお勉強(1) 基本のコマンド

よく使うgitの基本コマンドをまとめました。

git init
プロジェクトをgitで管理するときに使用する
git init

git add
新規追加された、更新されたファイルをaddする
git add . (カレントディレクトリ以下のファイルをすべてaddする)
git add -u (既にgit管理内にあるファイルのみで、変更があった部分のみをaddする)

git commit
addされたファイルをコミットする
git commit -a (変更のあったファイルをすべてコミット)
git commit -v (変更点を表示してコミット)
git commit -m (コメントを残してコミット)
git clone
既存のリポジトリからコピーしたいときに使う
git clone ○○○(http://~~, ssh://~~)

git pull
リポジトリの最新情報を取得し(fetch)現在の状態とマージ(merge)する
git pull origin master (originリポジトリのmasterブランチからpullする)

git push
リポジトリへ更新をプッシュする
git push origin master (originリポジトリのmasterブランチにpushする) 

2015年2月18日水曜日

メソッドのオーバーライド時のエラーを回避する

とあるメソッドをオーバーライドしたとき

Declaration of %s::%s() should be compatible with that of %s::%s()

というエラーが発生しました。

これは親クラスのメソッドと引数が異なるのが原因でした。
http://www.1x1.jp/blog/2007/11/php_e_strict_message.html

しかし
親クラス
public function getUserInfo( $a ){

子クラス
public function getUserInfo( $a, $b = NULL, $c = NULL ){

のようにデフォルト値を持つ引数は追加できるのでこの方法で回避できます。

2015年2月16日月曜日

Ajax通信のsuccess時に自身の関数に返す処理


successに自身の関数を呼び出せばいいようです。

//コールバック
function result_test_callback(result){

  $('#result_site_patrol_message_member').html(result);

  $('input:button[name=shuffle_message_member]').click(function(){

    if (confirm('再抽選を実行してよろしいですか?')) {

      if(xhr_shuffle){
        xhr_shuffle.abort();
      }

      xhr_shuffle = $.ajax({
        url  : url,
        type : "post",
        processData : false,
        data : post_data,
        dataType : "json",
        async : false,
        cache : false,
        success : result_test_callback ←これ 
            });

   }
 });

}

2014年10月29日水曜日

jQueryのunrecognized expressionについて

とあるファイルの操作で

Uncaught Error: Syntax error, unrecognized expression: 
input:hidden[name*=images[20141029_181853_4552483cf23a5f224d54e0aa79241a14]] 

というエラーが発生しました。
input:hidden[name*='images[20141029_181853_4552483cf23a5f224d54e0aa79241a14]']

のようにシングルクオテーションでくくれば直りました。
内側と外側の引用符(記号)が同じだとエラーになるようです。

つまり、

$('input[name='text']');

のようなパターンもダメ。