バカンス駆動開発

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

python始めるにあたって漁った記事など

自然言語処理楽しそうだなーとかPHP飽きたなーとかでpython始めました。

pythonの始めの一歩をスタートするために読んだ記事などをメモしておきます。

現在のpythonのバージョンは3系が最新らしいのでできるだけ2系は排除する。

PHPでいうところのPHP: The Right Waypython版があれば一番助かる感じです。見つかりませんでしたが。

ドキュメント

概要 — Python 3.4.3 ドキュメント

環境構築

Mac

Macでpyenv+virtualenv - Qiita
phpenv,rubyenv的な。~~envを使うことで各言語の任意のバージョンをプロジェクトディレクトリごとに変えることができて便利です。もしかしたら2系も使うかもしれませんのでこれで入れます。素晴らしすぎますね。。

Linux

PyenvをCentOS6.3でセットアップする(超かんたんリファレンス付き) - Qiita

パッケージ管理

pipを使います。python3.4以降の場合は始めから付随してきます。

文法

Python3系 基礎文法 - Qiita

Google Python スタイルガイド — PyGuide - 2.29

Dive Into Python 3 日本語版

[python] 年末大感謝祭!初心者脱出のためのPythonTipsを50個紹介 | 私の小岩ホッチキス

Pythonらしいコードの書き方 - Kesin's diary

[python] 細かすぎて伝わりにくい、Pythonの本当の落とし穴10選 | 私の小岩ホッチキス

チュートリアル

Pythonで学ぶWebアプリ開発のABC みんなのPython Webアプリ編 HTML版(無料) | TRIVIAL TECHNOLOGIES 4 @ats のイクメン日記

php プログラマのための Python チュートリアル — phpy 0.1 documentation
PHPからpythonへ移行するためのチュートリアルです。素晴らしい!僕にぴったりじゃないですか。

Pythonでつくる検索エンジン(Webクローラ, Mecab, MongoDB, Flask) - c-bata web

Webアプリケーションフレームワークとか

PythonのWebフレームワーク6種をかんたんに紹介 - モジログ

Pythonの軽量WebフレームワークBottleを試してみた(その1) - ルーティング編 (Advent Calendar 23日目) | アライドアーキテクツ エンジニアブログ

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