気ままNote

個人の技術メモ

本番前でもトラブルを出さないために

ロジックの問題であれば、想定できるパターンをチームで洗い出して議論できる俎上を作る。

データは常に本番環境と近い状態を保つようにする。 過去現在未来、時系列を意識したテストを重ねていく。

・・・ということを最近学びました。

mikio-k.hatenablog.com

LaravelアプリケーションにローカルIPでアクセスする

忘れないようにメモ。

Larvalはapacheやnginx等を設定せずとも、ビルトインウェブサーバーを利用すれば Webサーバーを立ち上げることができる。

  • コマンド
[user@sample laravel4-app]# php artisan serve
Laravel development server started on http://localhost:8000

作業PCのWindowsMacの場合、このまま直接「localhost:8000」にアクセスできるが、 VPSサーバー等で作業していた場合このURLではブラウザから確認することができない。

そこでIPを指定してWebサーバーを立ち上げる場合はSオプションを付与する。

  • コマンド
[user@sample laravel4-app]# php -S 54.xxx.xxx.xx:8000 server.php
PHP 5.5.21 Development Server started at Thu Feb 12 17:37:22 2015
Listening on http://54.xxx.xxx.xx:8000

簡単ですが、以上です。

http://forumsarchive.laravel.io/viewtopic.php?id=12338

コマンドライン上からphp.iniの場所を探す方法

はじめに

php.iniを探す方法といえばいわずもがな、phpinfoを使うと思います。 今回はコマンドライン上からphpの設定ファイル各種を探せる方法を知ったので、 メモとして残しておきます。

方法

phpコマンドの後に--iniを加えることで、リストで表示できます。 読まれる順番は/etc/php.ini -> /etc/php.dのようです。

  • サンプル
$ php --ini
Configuration File (php.ini) Path: /etc
Loaded Configuration File:         /etc/php.ini
Scan for additional .ini files in: /etc/php.d
Additional .ini files parsed:      /etc/php.d/bz2.ini,
/etc/php.d/calendar.ini,
/etc/php.d/ctype.ini,
/etc/php.d/curl.ini,
/etc/php.d/dom.ini,
/etc/php.d/exif.ini,
/etc/php.d/fileinfo.ini,
/etc/php.d/ftp.ini,
/etc/php.d/gd.ini,
/etc/php.d/gettext.ini,
/etc/php.d/iconv.ini,
/etc/php.d/json.ini,
/etc/php.d/mbstring.ini,
/etc/php.d/mcrypt.ini,
/etc/php.d/mysqlnd.ini,
/etc/php.d/mysqlnd_mysql.ini,
/etc/php.d/mysqlnd_mysqli.ini,
/etc/php.d/pdo.ini,
/etc/php.d/pdo_mysqlnd.ini,
/etc/php.d/pdo_sqlite.ini,
/etc/php.d/phar.ini,
/etc/php.d/posix.ini,
/etc/php.d/shmop.ini,
/etc/php.d/simplexml.ini,
/etc/php.d/sockets.ini,
/etc/php.d/sqlite3.ini,
/etc/php.d/sysvmsg.ini,
/etc/php.d/sysvsem.ini,
/etc/php.d/sysvshm.ini,
/etc/php.d/tokenizer.ini,
/etc/php.d/xml.ini,
/etc/php.d/xml_wddx.ini,
/etc/php.d/xmlreader.ini,
/etc/php.d/xmlwriter.ini,
/etc/php.d/xsl.ini,
/etc/php.d/zip.ini

複数phpが入っている環境だったので、
どの設定が読まれているか、
探すのに手間取っていましたが助かりました。

参考URL

php.iniの場所 php.iniの探し方 - tweeeetyのぶろぐ的めも

MySQLで改行やカンマを置換する

問題

MySQLからCSVファイルを出力しようとしたら、DBのレコードに改行が含まれているため配列がズレてしまうことが起きた。CSVを出力する前にMySQL上で改行を処理したい。

解決

  • 改行

REPLACEを使用することで置換することができた。

SELECT REPLACE(xxxx ,'\r\n','') FROM test;
  • カンマ(,)

カンマ(,)の時も同様。

SELECT REPLACE(xxxx, ',', '') FROM test;
  • カンマと改行を同時に置換したい。

入れ子にすれば同時に対処することができた。

SELECT REPLACE(REPLACE(xxxx,'\r\n',''), ',', '') FROM test;

参考URL

Removing carriage returns in Mysql DB - Stack Overflow

MySQLのStrict Modeについて

開発用に使っていたDBを変えたところ、とあるクエリがINSERTできなくなる事案が発生。
どうやらMySQLsql_modeのひとつであるStrict Modeが原因のようでした。

そもそもStrict Modeを知らなかったのでそのメモ書きです。

環境

CentOS 6.4
MySQL 5.6.21

Strict Modeとは

  • 日本語にすると厳格モード
  • INSERT や UPDATE実行時に不正な値を入れないようにするためのもの
  • ちなみにINSERT IGNORE や UPDATE IGNOREで始まるようにするとエラー回避できる
  • 細かい挙動を扱うために、複数のモードを選択することができる

設定例

  • /usr/my.cnf
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES #有効
# sql_mode='' #無効
SET GLOBAL sql_mode = 'mode name';
SET SESSION sql_mode = 'mode name';

確認方法

mysql> SELECT @@GLOBAL.sql_mode;
mysql> SELECT @@SESSION.sql_mode;

下記公式ドキュメントにはさらに詳しく記載されています。

原因はわかったのでとりあえず先に進めそうです。

参考

MySQL :: MySQL 5.6 Reference Manual :: 5.1.7 Server SQL Modes

MySQL5.6にしていくつかのSQLでエラーが出るようになった | シーズクリエイターズブログ

ザ・アドテクノロジー を読んだ

積ん読消化1冊め。

エンジニアだからといって プログラミング関係の本ばかり読むわけにもいかないと思って、
今年に入ってから興味のあったアドテクを知るために読むことにした。

マス広告の歴史、ネット広告概論、商品リスト広告、データドリブン、アトリビューション等
近年のネット広告について、基本的なところをわかりやすくまとめてあった。

あとがきに有薗氏が書いているアドテクノロジーへの思いは、 星新一ショートショートがすぐに思い浮かんだ。 自分には関係ないと思っていた未来が もうすぐやってくるのかもしれない。

今後関わっていくことになる業界のことだから、この本をきっかけにして 実際の技術含めてアドテクノロジー周りをもっと調べるようにする。

ザ・アドテクノロジー データマーケティングの基礎からアトリビューションの概念まで

ザ・アドテクノロジー データマーケティングの基礎からアトリビューションの概念まで

rootと他のユーザーでコマンドプロンプトの色を分ける

方法

rootユーザーは自身の.bashrcに、
その他のユーザーは/etc/bashrc に設定を追記します。

rootユーザは赤色、他ユーザは青色になります。

  • /root/.bashrc
# color
PS1="\[\033[31m\][\u@\h \W]\\$\[\033[00m\] "
  • /etc/bashrc
# color
PS1="\[\033[36m\][\u@\h \W]\\$\[\033[00m\] "

手段を知ったら、次はいかに使い方を工夫できるか、が大事