Macでbrewからredisをインストールしてポートを変更して起動する

brewでredisをインストールする

$ brew install redis

ポート番号変更する場合は下記の項目を変更

$ vim /usr/local/etc/redis.conf
port 6379

一時的に起動するときは

$ redis-server /usr/local/etc/redis.conf

ログイン時にいつも起動したい場合は

$ ln -sfv /usr/local/opt/redis/*.plist ~/Library/LaunchAgents
$ cd ~/Library/LaunchAgents
$ launchctl unload homebrew.mxcl.redis.plist
$ launchctl load homebrew.mxcl.redis.plist

Jenkinsを別ユーザとしてサービスを起動する

セキュリティや権限の関係でデフォルトのjenkinsユーザ以外で
Jenkinsサービスを実行したい場合の手順

/etc/sysconfig/jenkinsを変更して
JENKINS_USERに新しく実行したいJenkinsユーザ名を指定(ここではcustom_jenkins_user)

$ sudo vim /etc/sysconfig/jenkins

#JENKINS_HOME="/var/lib/jenkins"
JENKINS_HOME="/home/custom_jenkins_user/jenkins_home"

#JENKINS_USER="jenkins"
JENKINS_USER="custom_jenkins_user"

一時ファイルとログファイルの所有権も新しいJenkinsユーザ名に変更

$ sudo chown custom_jenkins_user: -R /var/log/jenkins/
$ sudo chown custom_jenkins_user: -R /var/cache/jenkins/

Jenkinsのjobがすでにあるときは
下記のようにして引き継げる

$ sudo cp -ipav /var/lib/jenkins/ /home/custom_jenkins_user/jenkins_home/
$ sudo chown custom_jenkins_user: -R /home/custom_jenkins_user/jenkins_home/

VirtualboxでネットワークアダプタのMACアドレスを振り直した際に通信できなくなってしまったときの再設定方法(Linuxの場合)

Virtualboxで.ovaファイルインポート時など
ネットワークアダプタMACアドレスを振り直した後
通信できなくなってしまったときの再設定方法。

以下Linuxの場合の手順。

もともと使っていた設定ファイルをコピーする

$ cd /etc/sysconfig/network-scripts/
$ cp -ipav ifcfg-eth0 ifcfg-eth2
$ cp -ipav ifcfg-eth1 ifcfg-eth3

それぞれ該当するデバイス名と対応するMACアドレスに設定する

$ vim ifcfg-eth2

DEVICE=eth2
HWADDR=XX:XX:XX:XX:XX:XX

$ vim ifcfg-eth3

DEVICE=eth3
HWADDR=XX:XX:XX:XX:XX:XX

MySQL5.6でUNIX_TIMESTAMPをミリ秒単位まで取得したいとき

MySQL5.6でUNIX_TIMESTAMPをミリ秒単位まで取得したいとき

mysql> select ROUND(UNIX_TIMESTAMP(CURTIME(4)) * 1000);
+------------------------------------------+
| ROUND(UNIX_TIMESTAMP(CURTIME(4)) * 1000) |
+------------------------------------------+
|                            1450618305656 |
+------------------------------------------+


順を追っていくと

今の時刻を小数点以下4位まで取得

mysql> SELECT CURTIME( 4 );
+---------------+
| CURTIME( 4 )  |
+---------------+
| 22:30:51.9985 |
+---------------+

小数点以下4位まで含むUNIXタイムスタンプにする

mysql> select UNIX_TIMESTAMP(CURTIME(4));
+----------------------------+
| UNIX_TIMESTAMP(CURTIME(4)) |
+----------------------------+
|            1450618337.4908 |
+----------------------------+

で1000倍してROUND()四捨五入してミリ秒単位までの
UNIXタイムスタンプが得られる

phpのmemory_limit設定方法各種

phpのmemory_limitはiniファイルだけでなく、.htaccessやコード中でも設定できます。
レンタルサーバなどphp.iniが編集できないときにも、設定変更できる可能性があります。
それぞれ微妙に記述方法が異なるのでご注意。

php.ini

memory_limit = 128M

参考:リソース制限

.htaccess

php_value memory_limit 128M

参考:設定を変更するには

コード中

ini_set('memory_limit', '128M');

参考:ini_set()

ちなみにあまりお勧めできないですが、メモリ上限を無制限にするには

memory_limit = -1

を設定する

iOSのSafariでSSLのページ中のlocation.hrefのURLがSSLになっていない時の対処法

iPhoneなどのSafarihttps://foo.bar/にアクセスしているのに
http://foo.bar/のようにURLがhttp://になってしまう際の対処法

console.log(location.href);// http://foo.bar/のようにURLがhttp://で始まってしまう

若干無理やりですが、正規表現でhttp:で始まっている文字列をhttps:に置換することで回避できます。

console.log( location.href.replace(/^http:/i, 'https:') );// https://foo.bar/ 


余談ですがこのときlocation.protocolはちゃんとhttps:って返してきます。…謎。

console.log(location.protocol); // "https:"

MySQLのsql文でサブクエリをつかったupdateでERROR 1093

たとえばこういう最大の値をもつレコードだけ+1したいというとき

update table_001 set col_01=col_01+1 where col_01 = ( select max(col_01) from table_001 );

ERROR 1093 (HY000): You can't specify target table ’table_001' for update in FROM clause

エラーの理由
http://dev.mysql.com/doc/refman/5.6/ja/subquery-errors.html

サブクエリのfrom句のところをさらにサブクエリにしてテンポラリテーブルにしてしまえば大丈夫

update table_001 set col_01=col_01+1 where col_01 = ( select max(col_01) from (select * from table_001)  );

あるいは結合してしまうことでも対処可能

update table_001,( select max(col_01) as col_01_max from table_001 )  set col_01=col_01+1 where col_01 = col_01_max;