シャレオツで楽な開発環境を整えよう

何度も失敗してきた文脈ですが、整えていきましょう。

要素

  1. エディタ/IDE
  2. 開発サーバ/ストレージ
  3. ソースコード管理
  4. デバッガ
  5. 単体テスト
  6. 回帰テスト

要点

  1. ファイル変更→即ブラウザチェック したい。FTP,SCPの操作を挟みたくない。
  2. PHPUnitちゃんと使いたい。入れればいいってものでもないので、流儀を体得。
エディタ/IDE

(解決済み) Eclipseという結論になった
Eclipse 4.7 Oxygen 新機能 30+ / Java 9 を試そう! - Qiita

回帰テスト

(解決済み)FirefoxESR + SeleniumIDE

ストレージ

(解決済み)Windowsの場合は、Windowsファイルシステム上にプレビューサーバなどを用意する
NFS, webDAV, SMB
NFS: Windows7HomePremiumだとめぼしいNFSクライアントが無い。
WebDAV:
⇒SMB:

デバッガ

eclipseでデバッガを使う
⇒ がEclipse PDTプラグインを使う想定なので、XDebugを使っていきたい。
https://liginc.co.jp/224022

ソースコード管理

(解決済み) Git最高
GitかSVN (いまだSVNの人)

Brackets

AdobeBrackets、シャレオツですし貧弱なマシンでも動いてくれそうなところがいいですよね。
動くんでしょうか。

emacs keybinds

少なくともemacsキーバインドくらいできて欲しいので調べる。
qiita.com

オッ
github.com

プロジェクト管理

フォルダをドラッグしてBracketsにドロップすると認識される。


結論

いいっすわ、俺、やっぱEclipseで。

PHPのジェネレータ

lab.adn-mobasia.net

アッ (活用するの忘れてた感)


これを! (↓↓Iteratorインタフェースの実装例↓↓)

<?php
// ファイルの行データの読み込みクラス
class FileLineIterator implements Iterator {
    private $fp = null;
    private $line = null;
 
    public function __construct($filepath) {
        $this->fp = fopen($filepath, "rb");
    }
    public function __destruct() {
        @fclose($this->fp);
    }
    public function current() {
        return $this->line;
    }
    public function key() {
        throw new BadFunctionCallException();
    }
    public function next() {
        $this->line = fgets($this->fp);
        return $this->line;
    }
    public function rewind() {
        return rewind($this->fp);
    }
    public function valid() {
        return (!is_null($this->fp) && $this->line !== false);
    }
}
 
// 処理の開始
$num = 1;
$iterator = new FileLineIterator($argv[1]);
foreach($iterator as $line) {
    // ここで行番号を出力する
    printf("%5d: %s", $num++, $line);
}


こうや!(↓↓yield()↓↓↓)

<?php
// ファイルの行データの読み込み関数
function file_get_lines($filepath) {
    $lines = array();
    $fp = fopen($filepath, "rb");
    while(($line = fgets($fp)) !== false) {
        // yieldキーワードで$lineを都度返却することができる
        yield $line;
    }
    fclose($fp);
}
 
// 処理の開始
$num = 1;
foreach(file_get_lines($argv[1]) as $line) {
    // ここで行番号を出力する
    printf("%5d: %s", $num++, $line);
}


ということです。


でっかい配列変数に展開するとメモリを喰い、Iteratorをimplementすると大げさで遅いし、という事で。
途中結果をreturnして値の供給を続けるやつ。

yield ... 産出する,(利益が)出る, (相手に)屈服する



次のようにも書けるので、foreach()を使った既存の記述も置き換えやすいですね。そうですね。

<?php
// ファイルの行データの読み込み関数
function file_get_lines($filepath) {
    $lines = array();
    $fp = fopen($filepath, "rb");
    while(($line = fgets($fp)) !== false) {
        // yieldキーワードで$lineを都度返却することができる
        yield $line;
    }
    fclose($fp);
}

$f = file_get_lines($argv[1]);

// 処理の開始
$num = 1;
foreach($f as $line) {
    // ここで行番号を出力する
    printf("%5d: %s", $num++, $line);
}

Firefox+Thunderbird::複数プロファイルの同居

www.mozilla.jp


以下2つの方法が提供されていた

  • 同じバージョンのFirefoxThunderbirdを、別のプロファイルで同時に起動したい
  • 複数のバージョンのFirefoxThunderbirdを、併用し、同時に起動したい
#windows7な自分の環境でのプロファイルのパス
C:\Users\(ユーザ名)\AppData\Roaming\Thunderbird\Profiles\(プロファイル名)


というか、私の場合『複数のプロファイルを設定し切り替える』という概念で必要十分だ。
support.mozilla.org

PHPと自動テスト

www.elp.co.jp

www.webprofessional.jp

www.atmarkit.co.jp

blog.asial.co.jp

Selenium方面

Firefox+アドオンだけで動いてくれたSeleniumIDEが、半年くらい(?)前に(Firefox55以降で)死んで以来だが、何か動きは…
qiita.com

WebExtensionsに対応した次世代のGUIツールを作り直すことにした旨を公式ブログで発表しました。
Firefox 55 and Selenium IDE | Official Selenium Blog

アッ ハイ

この機会に、法人向けで機能更新のスピードがゆるやかなFirefox ESRに切り替えてみましょう。
ESRの現行バージョンはFirefox 52ベースで、2018年6月26日までサポートされる予定です。

Firefox ESR、そういうのがあるのか。

通常版との共有は簡単で、インストールディレクトリを通常版のものとは別にすればよい。


FirefoxESR内から検索しても出てこないので、
行って、入れる。動く。フォウ!!




iOS10, SSH, VPN(PPTP)


SSH: Serverauditor
qiita.com


VPN: iOS10でのPPTP
via.
blog.nedia.ne.jp

iOS 10からのテザリングもできない
macOS Sierraを搭載したMacBook等からPPTP接続ができない
iOS 10を搭載したiPhone自体からPPTP接続ができない
上記についてはAppleのアナウンス段階から予想できたことだったのですが、意外なことに、iOS 10を搭載したiPhoneを使ってテザリングしたPCでもPPTP接続ができなくなってしまいました。

オッ


VPN:SoftEther?