月別アーカイブ: 2015年9月

WordPressのプラグイン開発。PHPのツールとJenkinsプラグインの用意

PHP関係のパケージの管理は、 composer を使う。

# まずは、composer のダウンロード。

$
$ curl -sS https://getcomposer.org/installer | php
$

composer には、他に以下のようなコマンドもある。

$ composer.phar install # 先に composer.json にパッケジを書いておく
$ composer.phar update
$ composer.phar remove # composer.json を編集して update の方が分り易い

# PUPUnitのインストールのお試し
PHPは趣味にしか使わないから、インストール先は global にしておく。

$
$ composer.phar global require “phpunit/phpunit=4.0.*”
$

これで ~/.composer に phpunit がインストールされる。
(この後直ぐにアンインストールしたけど)

この段階で “phpunit/phpunit=4.8.*” だと、依存関係を解決できなくて
実際にはインストールできない。

# PHP ビルドツール Phing をインストールする

~/.composer/composer.json を編集して、
phing だけ追加して composer.phar update してみると、
いろいろお勧めされる。

phing/phing suggests installing phpdocumentor/phpdocumentor (Documentation Generator for PHP)
phing/phing suggests installing sebastian/phpcpd (Copy/Paste Detector (CPD) for PHP code)
phing/phing suggests installing phpmd/phpmd (PHP version of PMD tool)
phing/phing suggests installing pdepend/pdepend (PHP version of JDepend)
phing/phing suggests installing phploc/phploc (A tool for quickly measuring the size of a PHP project)
phing/phing suggests installing phpunit/phpunit (The PHP Unit Testing Framework)
phing/phing suggests installing phpunit/php-code-coverage (Library that provides collection, processing, and rendering functionality for PHP code coverage information)
phing/phing suggests installing pear/versioncontrol_svn (A simple OO-style interface for Subversion, the free/open-source version control system)
phing/phing suggests installing pear/versioncontrol_git (A library that provides OO interface to handle Git repository)
phing/phing suggests installing pear/archive_tar (Tar file management class)
phing/phing suggests installing tedivm/jshrink (Javascript Minifier built in PHP)

ドキュメントにはSphinxを使うので phpDocumentor はイイかな。。。
いらない物もあるし、以下の様にして、再度 update。

{
“require-dev”: {
“phing/phing”: “*”,
“phpunit/phpunit”: “4.*”,
“squizlabs/php_codesniffer”: “*”,
“phploc/phploc”: “*”,
“pdepend/pdepend” : “*”,
“phpmd/phpmd” : “*”,
“sebastian/phpcpd”: “*”,
“theseer/phpdox”: “*”
}
}

これで実際にインストールされたのは以下のパッケージ達。

|———————————–+———+—————————————————————-|
| packeage | version | desc. |
|———————————–+———+—————————————————————-|
| doctrine/instantiator | 1.0.5 | A small, lightweight utility to instantiate objects in PHP … |
| nikic/php-parser | v1.3.0 | A PHP parser written in PHP |
| pdepend/pdepend | 2.1.0 | Official version of pdepend to be handled with Composer |
| phing/phing | 2.11.0 | PHing Is Not GNU make; it’s a PHP project build system or b… |
| phpdocumentor/reflection-docblock | 2.0.4 | |
| phploc/phploc | 2.1.4 | A tool for quickly measuring the size of a PHP project. |
| phpmd/phpmd | 2.2.3 | PHPMD is a spin-off project of PHP Depend and aims to be a … |
| phpspec/prophecy | v1.5.0 | Highly opinionated mocking framework for PHP 5.3+ |
| phpunit/php-code-coverage | 2.2.2 | Library that provides collection, processing, and rendering… |
| phpunit/php-file-iterator | 1.4.1 | FilterIterator implementation that filters files based on a… |
| phpunit/php-text-template | 1.2.1 | Simple template engine. |
| phpunit/php-timer | 1.0.7 | Utility class for timing |
| phpunit/php-token-stream | 1.4.6 | Wrapper around PHP’s tokenizer extension. |
| phpunit/phpunit | 4.8.5 | The PHP Unit Testing framework. |
| phpunit/phpunit-mock-objects | 2.3.7 | Mock Object library for PHPUnit |
| sebastian/comparator | 1.2.0 | Provides the functionality to compare PHP values for equality |
| sebastian/diff | 1.3.0 | Diff implementation |
| sebastian/environment | 1.3.2 | Provides functionality to handle HHVM/PHP environments |
| sebastian/exporter | 1.2.1 | Provides the functionality to export PHP variables for visu… |
| sebastian/finder-facade | 1.2.0 | FinderFacade is a convenience wrapper for Symfony’s Finder … |
| sebastian/git | 2.0.1 | Simple wrapper for Git |
| sebastian/global-state | 1.0.0 | Snapshotting of global state |
| sebastian/phpcpd | 2.0.2 | Copy/Paste Detector (CPD) for PHP code. |
| sebastian/recursion-context | 1.0.1 | Provides functionality to recursively process PHP variables |
| sebastian/version | 1.0.6 | Library that helps with managing the version number of Git-… |
| squizlabs/php_codesniffer | 2.3.3 | PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and… |
| symfony/config | v2.7.3 | Symfony Config Component |
| symfony/console | v2.7.3 | Symfony Console Component |
| symfony/dependency-injection | v2.7.3 | Symfony DependencyInjection Component |
| symfony/filesystem | v2.7.3 | Symfony Filesystem Component |
| symfony/finder | v2.7.3 | Symfony Finder Component |
| symfony/yaml | v2.7.3 | Symfony Yaml Component |
| theseer/directoryscanner | 1.3.1 | A recursive directory scanner and filter |
| theseer/fdomdocument | 1.6.1 | The classes contained within this repository extend the sta… |
| theseer/fxsl | 1.1.1 | An XSL wrapper / extension to the PHP 5.x XSLTProcessor wit… |
| theseer/phpdox | 0.8.1.1 | A fast Documentation generator for PHP Code using standard … |
|———————————–+———+—————————————————————-|

# コード品質を高める、おなじみっぽい名前のツール達
CppUnitが会社の規定に合わないので、xUnit系のテストを触るのは始めてだ。
他に C++でもお世話になった記憶のあるPMDの親戚達もインストールされた。

– PHPUnit: xUnitの親戚。PHPテストコードを実行する
– phpcs (php_codesniffer): コーディング規約チェック
– phpmd: 怪しい実装方法の箇所をチェック
– phpcpd: コードの重複をチェック

# Jenkinsプラグインのインストール
Jenkins のプラグインには、 PHP Plugin と Phing Plugin をインストール。
これだけで依存するパッケージが細々とインストールされる。

あれ? DRY plugin が選べなくななってる。
最近の Jenkins に対応していないらしい。

自動的にインストールされた “Duplicate Code Scanner Plug-in” って言うのが
代わりに使えそうなので、このまま進めよう。

# カバレッジツールが入ってない
PHPUnitからxdebugを呼び出して計測するつもりなのだけど、
xdebugが composerでインストールできていない。

[xdebug](http://xdebug.org/docs/install) を読むと、
自分でビルドする必要がありそう。

brewでも入れられるけど、PHPはせっかくcomposerで管理しているので、
混乱が無いようにしておきたい。

まだ使わないので、おいおいインストールすることにしよう。

#+BEGIN_COMMENT
/etc/php.d/xdebug.ini に以下の設定を追加。
zend_extension=/usr/lib64/php/modules/xdebug.so

http://www.spiceworks.co.jp/blog/?p=4188

http://qiita.com/khironori/items/c145d7e3eed7b2a5a01a
#+END_COMMENT

emacsのorg-mode で WordPress の記事を書きたい

org-mode で書いた記事を、そのまま WordPress に投稿したい。

方法は、大きく分けて二つある。

– org-mode で HTMLに変換してからコピペする
– org-mode の書式を解釈する WordPress のプラグインを新たに作る

org-mode側でHTMLに変換する方法は、
WordPressの記事一覧が酷い事になるのが目に見えている。

いつかは画像も自動で組込みたいし、
後者の、プラグインを新たに作るのが良さそう。

車輪の再発明ぽくてイヤだけど、自分で使う目的だし、
自由が効く方が良いか。

問題はむしろ、PHPの開発経験が全く無いこと。

orgのテーブルを変換するプラグインは小さかったので、
一旦pythonで書いてから、本番サーバ上でPHPに移植する
という、恐しい開発方法だったけど。

今回は、ちゃんとテスト環境をそろえて開発したい。

テーブルプラグインの開発では、
WP-MarkDown の不具合(バグの様な仕様)で、
保存する度に記事を壊されて無駄に時間がかかってしまった。

WP-MarkDown とはオサラバして、スッキリ開発したい。

で。

対応したいタグは、こんなもの。

– 段落タイトル 3段階
– 段落
– コード
– テーブル
– 引用
– 段落
– 強調/イタリック
– リンク
– リスト
– *インライン画像
– (入れ子リスト)
– (番号リスト)

これだけ変換するには、
テーブルプラグインの構造では間に合わないので、
きちんと文章を構文解析する必要がある。

それに、ちゃんとしたテスト環境を作ってから開発したいし
新調した MacBookPro に合わせて、CI環境を再構築しないと…

2015年の8月末までの取引まとめ

# 2015年の8月の成果
とにかくひどい夏枯れ相場から一転、
というか溜ったエネルギーが円高方向に噴出した8月。

USDJPYのループイフダン以外はヒドイ状態で、
スワップでソコソコ助かっている。

アノマリー通り、盆の円高は今年も来た。と言うことか。

# 市況
## 米国
9月利上げで待ったなし、のはずが、
中国のサプライズの連続で抑え込まれそうな雰囲気が続いた8月。。

そんな中、盆開けのブラックマンデー発生で、
またしても利上げが遠退いた。

こうなると、利上げ観測後退で円高に振れるのか、
とりあえず好景気な米国に資産が移動してドル高か。

中長期の見通しが、やや円高に傾いたのは間違いない。
どっちにしても、ヒドイことになる気はしない。

## EUの経済破綻問題
## ギリシャ
大統領辞任などもあったが、たいしてニュースにならなくなった。
世の中ギリシャの我侭に付き合っている場合じゃない。
ユーロというかドイツが何とかするんだろう。という雰囲気。

## トルコ
ISIS空爆と政治空白で泥沼化。
11月に再選挙が濃厚になり、下げる一方。

ここは買い、のハズなのだが、リスクオフムードの方が強い。
いずれ上げるのは間違いないが、もう一回くらいは下げるだろうか。

## 中国
バブルはどう収束するか? と言われながら始まった8月。

8月11日に突然、中国政府が人民元の為替レートを対ドルで2%切り下げた。
輸出で儲けようという腹なんだろうけど、
中国はもう待ったなし、なんだ、というネガティブイメージしかない。

翌12日に、天津で大爆発。(他にも数件爆発)
中国政府の発表に比べ、映像からはシャレにならない規模に見える。
街が吹き飛んで、世界第3位の貿易港が機能停止。国内テロとの噂も。

更に8月24〜25日には、中国・上海発の世界同時株安。(というか中国発株安)
翌日には、中国が金利引下げの金融緩和策を提示した。
今更感はあるけど、これは評価されるだろう。

中国株の下げは、バブル前水準まであと少し。
以外とソフトランディングだった、とも言える。

ブラックマンデーやリーマンショック並の騒動だった割に、
影響は少なかった様で、25日にはかなり戻している。

波を残しつつ収束しそうな雰囲気。

## オセアニア
8月上旬、オージーは下げ止まり。
キューイはTPPで波紋。乳製品の価格下落が止まらない。
そこへ人民元切り下げで、背後から追い討ちをかけられた格好。

中国と共に沈む気でないなら、何か手を打つ頃だと思うけども、
何も対策らしき発表が聞こえて来ない。
オセアニアとしては、通貨安を望んでいるんだろう。
金利もまだ下げて行くのだろう。

## 日本
8月に入って、円安牽制が始まった。124円位が心地良いのだろう。
そんな雰囲気の盆空けに、一時116ドル円の円高。

直ぐに120円まで戻したものの、他国の状況が円高圧力になっているので、
そろそろ黒田サプライズがあっても良い頃合いかもなぁ。

# 裁量取引の成果と課題
上旬は動きが無く、中旬は乱高下が酷かっかので、裁量取引は一旦停止中。

7月までの利益の1/4位を使ってポジションを整理したので、
今月は大幅な赤字。損切りには妙な快感がある事を知った。

# トラリピ/ループイフダン成果
# 今後のトラリピ/ループイフダンの課題
トラリピは下抜けてしまったのだが、
ポジションが膨れ過ぎなので追従はしない。
当分はスワップだけで我慢する。

その代りに、
ループイフダンが良い仕事をしてくれている。

dyerware.com



dyerware.com


dyerware.com



dyerware.com


見て確認できる通り、8月のトラリピは本当に動いていない。
下旬はレンジ離れだけど、上旬は市場が動いていなかったため。

対してループイフダンの方は、特に盆明けの行って来いで良い仕事をしてくれた。

トラリピのスワップとループイフダンで、安定した利益が上ってくるのは助かる。

# 今後の計画
## ループイフダン
高値ポジションを損切りしつつ市場に追従し、
USDJPY_B15_15 一本に整理する。

ループイフダンは儲かるのだが、リスク管理が難しいので、
比率を下げていく。

## トラリピ
下抜けした状況を回復するため、高値ポジションを少しづつ整理する。
特に、増え過ぎてしまった NZDJPY を削減し、TRYJPY に回す。
その後、またしばらく放置。

## 裁量取引
TRYJPYのナンピン&短期利食い継続。

この数ヶ月、トラリピに頼り過ぎていたので、
秋には裁量取引を復活させる。