ブログ再開のお知らせ

再開すな!

1年半ぶりの気まぐれ起きました。どうでもよさげな近況をつらつら書きます。

去年気まぐれで書いた適当記事

pnkts.hateblo.jp

が半年前ぐらいになぜかホッテントリに入ってて?ってなっておりました。 あの記事間違いも多くて恥ずかしいいい。

最近は仕事で、C++とTypeScript(ときどきPHPも)をメインで使用しております。 忙しさ増してきてるからこそちょこちょこブログも書いて行きたいなんて思っております。 Angular+Express+TypeScript+その他諸々組み合わせた開発手法、Docker+CoreOS+Jenkinsなどを組み合わせたクリーンなCI環境構築とか書いてみたいです。 仕事しながら色々模索してる途中なので書き起こして行きたい。

プログラミング以外では同人活動も本格的に始動してきています。とはいえスロースターターにも程がある。

近いうちでは11月3日のよんこま文化祭、11月15日のCOMITIA114に参戦します。 出す予定の新刊の原稿は未だ手がついておりません。 ダメだこりゃ

さて、話題転換

2か月前に肛門周囲膿瘍になり苦しんでおりました。 立っても座っても痛くて、お尻に最も負荷がかからない体勢を独自に編み出していたのですが、お下品なので説明しません。 携帯のカメラで局部を撮影してみると、臀部が赤く腫れあがっているのですね。 老人の歩く速度で病院に予約なしで駆け込みましたが結局診察の予約をしただけでまた後日通院することに。 初診では、抗生物質と痛み止めを処方していただきました。 そして、腫れは治まるどころが悪化していき、高熱まで出始めました。(無理して友人とカラオケ行ったのもあれだが) 2回目の診察で、ついに切開してもらいました。 局所麻酔がすごく痛いと聞いていたので恐怖していたのですが、割と平気でした。 その後の切開が怖かったので医者から「感覚がなくなったら言ってください」と言われて、「まだちょっとしますね」って返答し多めに麻酔入れてもらいました。 切開は思ったほどの痛みがなくてホッとしました。 そしてガーゼを詰めてもらいお尻がもっこりした状態で診察を終えました。 切開してもらう前と比べたらかなり楽になり一安心。 徐々に切り口も塞がってきて、通院も打ち切り一段落ついたなーって最近まで痔のこともすっかり忘れていた矢先

今日、切り口が開きました。

血がでてくるでてくる。

切開してもらったとき先生は、「痔瘻の可能性もあります」とおっしゃっていたが、これはもしかするともしかするのでは。 塞がらないようなら、また病院に行くべきですね。

さらに、話題転換

車を乗り換えます。

正確には今週の日曜日に納車の予定です。

ダイハツのミラバンに乗り換えます。 こちらは軽貨物車という区分になり、税金がお得です。 今まで乗っていたのは13年落ちのインプだったので維持費がかなり安くなりそうでうれしいです。 なにせ13年落ちの車は2015年度今年より増税15%増しだったのですから。

ただ、このミラバンって奴、装備は最低限しかなく、パワーウィンドウすらない始末。 くるくる手回しで窓を開けるなんて何時ぶりなんだか。時代錯誤感凄い。 スピーカーとかもついてないので、自分でカスタマイズする必要がありそうです。

車も乗り換え、正月帰省するから航空券の予約、同人誌の印刷代等で金銭的にどん詰まりなので、お仕事2つ掛け持ちを頑張っていきたいです・・・・・・ まだまだ書きたい事山ほどありますが、夜も更けてまいりましたので今日はこの辺にしときます。

さいなら~

--------終了-------

今までのPHPのやり方を全て打ち捨てよう

PHPは日々進化している

最重要な言語仕様の変更点

PHP 5.3.x

PHP 5.4.x

PHP 5.5.x

  • ジェネレーター

Composer

PHPにとってのBundler

PEARの環境依存やめよう

PECL?知らん

PSR-4

includeやrequireをもう使う必要はない

PSR-4の規約にそって名前空間とディレクトリを掘ろう

そしてcomposer.jsonにちょいちょいと

{
    "autoload": {
        "psr-4": {
            "mynamespace\\": "src/"
        }
    }
}

そしてbootstrapに相当するphpスクリプト

require_once 'vendor/autoload.php';

これだけで後はuseをjavaのimportに相当するものとしてパッケージ依存を解決できる

フレームワーク

もういらない

PHP 5.4以上ならAuraを使おう

ActiveRecordパターン辞めよう

ドメインモデルに永続化の機能が入ってると後々厄介だ

PDO使ってDataMapperパターンを自力で構築すべき

面倒なら

$php composer.phar require aura/sql
$php composer.phar require aura/sql-query

いっそ自分でフレームワーク構築したらよい

Auraは各コンポーネントが独立している

好きなの使って自力で組み立てろ

面倒なら

$php composer.phar create-project aura/web-project project_name

開発のためだけにLAMPPを構築する必要もない(当然phpのインストールだけは必要だが)

ビルドインサーバいい

$cat web/.htaccess
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php [L]
</IfModule>
$php -S localhost:8888 -t web/

とか

$php -S localhost:88888 bootstrap.php

とか

データベース?PDOでsqlite使っときゃいいじゃん

本番環境でMysqlに移行できるようにしとけばよい

Dependency Injection

重要

Aurynがオススメ

$php composer.phar require rdlowrey/auryn

設定ファイルでInjectorを設定してやりゃいい

PDOの設定も Smartyの設定も 全部こいつがやってくれる

一例

$provider->alias('Aura\Sql\ExtendedPdoInterface', 'Aura\Sql\ExtendedPdo');
$provider->define('Aura\Sql\ExtendedPdo', [':dsn' => 'sqlite:' . dirname(__DIR__) . '/tmp/db']);

class DBController
{
    public function __construct(\Aura\Sql\ExtendedPdoInterface $pdo)
    {
        $this->pdo = $pdo;
    }
}

$controller = $provider->make('DBController');
// $pdoのインスタンスを自動で作ってコンストラクタの引数に渡してくれる

超強力

次回があれば実用例を紹介する

とりあえず入れておこうライブラリ決定版

  • PhpOption
  • PhpCollections
  • PhpTry

絶対参照すべき

参照すべき