投稿者「shimabox」のアーカイブ

shimabox

shimabox について

Web系のプログラマをやっています。 なるべく楽しく生きていきたい。

PHPで知らなかった書き方に出会って驚いた話

投稿日:

あ~わ~ただしい日々 知らぬ間に蝉しぐれも止んで.
というわけで1年の3/4が過ぎようとしています。まぁビックリ。

自分は生粋のペチパーで曲がりなりにもソースレビューをたまにはしているのですが最近ちょっと驚いたというか、へぇ~こんなふうにも書けるんやねという書き方に出会ったので記します。

驚いた書き方

大体イメージはこんな感じです。
続きを読んでみようかな…

PHPUnitで複数のアサーションを実行して最後に失敗があったか確認する

投稿日:

題目の通りなのですが、PHPUnitで複数のアサーションを実行して最後に失敗があったか確認する方法をメモしておきます。

本来(なるべく)なら1テスト1アサーションがいいのでしょうけど、とりあえず簡単なアサーションをざぁーーーっと流して最後に失敗したものだけを確認したいこともあるのではないのでしょうか。

そんな要求を満たすには以下の方法もあるのではないかという話です。
※すいません、これ以外やったことありませn

方法

以下の例外をキャッチする。

\PHPUnit_Framework_ExpectationFailedException

はい、これだけです。
続きを読んでみようかな…

【メモ】NetBeansでのファイル内移動ショートカット

投稿日:

自分はふだんNetBeansを使って開発しているのですが、数千行ある巨大なファイルでファイルの先頭に飛んだり、最後に飛んだりするショートカットを地味に知らなかったのでメモしておきます。

えぇ、今まではマウスホイールとかグルグルグルグルしてました。

Mac

ファイルの先頭に移動

Command (⌘) + ↑

  • 地味に移動しないときがあるのでそんな時はさらに
  • イメージとしては、Command (⌘) + ↑ + ←

続きを読んでみようかな…

php-webdriverを簡単に試せるライブラリ書いた

投稿日:

自由研究が終わっていない!やばい!となって週末全力で息子の宿題をお手伝いしました。
このへんは血が争えないというか、やはりこうなってしまうんだなぁと歴史というか、得体の知れない何かを実感しました。

というわけで、先日までちょくちょくとphp-webdriverを触っていたのですが自分の中である程度まとまったのでライブラリ化しました。
名前はpmdです(php-webdriver → pwd → ひっくり返して → pmd)。

2017/09/02 追記


名前、最初気にしてなかったけどやっぱり気になったので変えました。

screru(スクレル) です。
(スクリーンショットが撮れる → screenshot ga toreru → screru)

2017/09/02 追記ここまで

といっても大層なものでもなく、自分自身が欲しいなぁという機能をラップして組み込んだものになります。

入れた機能としては以下の通りです。

  • PHPUnit用に組み込める関数群をTraitとして用意
  • 画面のフルスクリーンキャプチャ
    • 後述しますが、テスト(assertion)失敗時にキャプチャを撮る仕組みもあります
  • 指定要素のキャプチャ

対応ブラウザは、

  • Firefox
  • Chrome
  • Internet Explorer (windows)

のみとなっています(いまのところ)。

使い方

seleniumや各ドライバーのインストールなどは、

README.mdを参考にしてもらうとして簡単な使い方を書きます。
続きを読んでみようかな…

Travis-CIでhhvmのテストが失敗するようになっていたようだ

投稿日:

気軽にCIを試せるぞ!!というわけでGitHubではTravis CIを使っているのですが、なんとなく昔作ったリポジトリでbuildしてみたら見事にコケました。
その時出たメッセージがこちら。

HHVM is no longer supported on Ubuntu Precise. Please consider using Trusty with `dist: trusty`.

HHVMは、Ubuntu Preciseではサポートされなくなりました。dist:trusty にてTrustyを使用することを検討してください。
※Google翻訳によるとこんな感じ

このメッセージを読む限り、hhvmの時は.travis.ymldist: trustyを追加すれば良さそうです。ところがはて、この条件の時はこの設定を読み込むみたいなのってどうするんだろうとなりましてググったら以下の情報が出てきました。

こちらを参考に書き直した.travis.ymlがこちらになります。
続きを読んでみようかな…

【PHP】URLを渡すとヘッダー情報を見てステータスを返すクラスを書いた

投稿日:

ちょっと前に、【PHP】URLを渡すとヘッダー情報を見てステータスを返すやつ書いた | Shimabox Blogを書いたのですがせっかくなのでクラスにしてみました。

ソースはこちら

インストール

$ composer require shimabox/url-status

使い方

<?php
require_once 'vendor/autoload.php';

$ret = \SMB\UrlStatus::get('https://google.com/webhp?gl=us&hl=en&gws_rd=cr');

$ret->targetUrl();      // => 'https://google.com/webhp?gl=us&hl=en&gws_rd=cr'
$ret->reachedUrl();     // => 'https://www.google.com/webhp?gl=us&hl=en&gws_rd=cr'
$ret->isValidUrl();     // => true
$ret->redirectedUrls(); // => ['https://www.google.com/webhp?gl=us&hl=en&gws_rd=cr']
$ret->redirectedCode(); // => [301]
$ret->code();           // => 200
$ret->is200();          // => true

// for the POST method
$data = http_build_query(['foo' => 'bar', 'hoge' => 'piyo']);
$header = [
    'Content-Type: application/x-www-form-urlencoded',
    'Content-Length: ' . strlen($data)
];
$options = [
    'http' => [
        'method'  => 'POST',
        'header'  => implode("\r\n", $header),
        'content' => $data
    ]
];

$ret = \SMB\UrlStatus::get('http://localhost/post.php', $options);

関数版との違い

  • インターフェイス( 第一引数にURL, 第二引数にstream_context作成用の値 )は変わっていません
  • stdClassを返していたのを自身\SMB\UrlStatusを返すように変更
    • 返されたプロパティを変更出来ないように
  • isxxx()をマジックメソッドで用意
    • is{数値3桁}()
    • /\Ais(\d{3})\z/
    • is200()とか、is503()とか

こんな感じです。雨が続いて憂鬱です。