5000164 is here
My writing is my life.
No results for undefined
Powered byAlgolia
Wikipedia のモバイル版を表示する Chrome 拡張機能を作った

Wikipedia はモバイル版の方が見やすいと思うのでモバイル版を表示する拡張機能を作った。
ソースはこちら。

作り始める

Chrome 拡張機能の作り方がわからなかったので調べていたらドットインストールがあったのでここで勉強。

概要を把握。
思ってたよりさっくり作れそう。

TypeScript を使いたい

TypeScript を試したかった。
npm で TypeScript をインストールして PhpStorm で自動コンパイルするところまではすぐできた。
でも Chrome の API を認識させることができなくて困った。
ライブラリをダウンロードすればいけるよって書いてあったけど、それだけだと chrome なんてないよと怒られてしまう。
だから手動でインストールしてパスを通したら、今度は定義が複数あるって言われた。
最終的に、PhpStorm 側でダウンロードしたものを消して、tsd でダウンロードしたやつを PhpStorm 側に設定することで落ち着いた。

ver. 1

特定のページに来た時に動作すればいいんだから content_scripts でいけるだろと思って実装した。
なんか preRequest イベントってのがあるからそれ使いたい。
でも動かなかった。
うまく動かせなかったので諦めて location.href でモバイル版にリダイレクトさせていた。
ださい。

ver. 2

落ち着いて考えたら content_scripts はどうやらページが表示された後に動作する気配がある。
ってことは background にすれば preRequest 使えるんじゃないだろうかという仮説。
やってみたら使えた。
ということでアクセスする URL を確認して Wikipedia だったらそのままモバイル版を表示する拡張機能ができた。

参考

PhpStorm で ClipMenu が動作しない問題を修正する

ClipMenu が PhpStorm でうまく動かない

つらい。

ClipMenu が PhpStorm でうごくようにする

  1. PhpStorm で command + shift + A か Help > Find Actoin... で検索窓の表示
  2. Registry と検索し return か ダブルクリックで Registry の表示
  3. ide.mac.useNativeClipboard にチェックを入れる

    • use くらいまで打つと検索結果に出てくる

結果

良好。

参考

FuelPHP でデータを YAML 形式でインポート/エクスポートするタスク

データを YAML で管理する

DB のデータを YAML で管理すると楽です。
テストデータの状態を保てるし、バージョン管理ができる。
だからデータをインポート/エクスポートするタスクを作りました。
動作を確認した環境は FuelPHP 1.7.2 と MySQL 5.6 です。
FuelPHP でデータを YAML 形式でインポート/エクスポートするタスク

注意点

FuelPHP の DB 接続は PDO じゃなくて MySQLi じゃないと動きません。
接続しているデータベースのテーブル一覧を取得したかったのだが、取得する方法がわからなかった。
そういえば ORM のドキュメントに、プロパティをちゃんと設定しないと毎回アクセスして情報を取得するって書いてあったなと思い出して、core の DB クラスになんかないかなと眺めてたら listtables というメソッドがあった。
list
tables でテーブル一覧が取れるかなと思ったら動作せず、PDO はサポートしていないと表示された。
なので MySQLi で接続して DB::list_tables() でテーブルの一覧を取得して利用しているが、PDO の場合のテーブル一覧の取得方法がわからないままなので MySQLi じゃないと動きません。

テストデータを外部ファイルでバージョン管理って初めてやったけど便利

テストデータに再現性があって共有できると便利。

結果

最初の方はインポート機能がめっちゃ便利。
機能が実装されるにつれてエクスポート機能が欲しくなる。

FuelPHP のログレベルは INFO の方が DEBUG よりも上

FuelPHP のログレベルは INFO の方が DEBUG よりも上

Fuel の Core の Log クラスに $levels が定義されています。
FuelPHP 1.7.2 で INFO は 200、DEBUG は 100。

なぜ疑問に思ったのか

FuelPHP の config.php の出力するログレベルの設定のところに、

/**
 * Logging Threshold.  Can be set to any of the following:
 *
 * Fuel::L_NONE
 * Fuel::L_ERROR
 * Fuel::L_WARNING
 * Fuel::L_DEBUG
 * Fuel::L_INFO
 * Fuel::L_ALL
 */

このように書いてあるので、「INFO に設定したら DEBUG ログも出るのかー」と勝手に思い込んでいたからでした。

実際に動かせばわかる

実際に動かしたら、設定が DEBUG の時はログレベル INFO も DEBUG も出力されたが、設定が INFO の時は INFO が出力されて DEBUG は出力されなかった。

結論

調べるためにドキュメントを読んでいたら、Log::write() で任意のレベルをつけられること、logger() というエイリアスの関数があることがわかった。
この前 l() って関数でログ出力できるようにしたばっかりだったのに、すでに似たようなものがあったとは。 ドキュメントを読むのは大事ですね。

IDE で FuelPHP の補完を効かせるための _autocomplete.php を生成するタスク

IDE に FuelPHP の補完を効かせたい

補完効かないのだるいなーと思ってぐぐったらあった。
Eclipse で FuelPHP のコード補完を行わせる冴えたやり方 - A Day in Serenity @ kenjis
これで生成して自動補完させることができた。

Core を拡張していたからクラス名が重複してしまった

Core を拡張したクラスと _autocomplete.php のクラスがだぶってしまって、IDE が警告を出してきた。
でも手作業でコメントアウトするのはだるい。
というわけで生成処理を変更した。
FuelPHP 1.7.2 で動作確認してます。
IDE で FuelPHP の補完を効かせるための _autocomplete.php を生成するタスク

MIT ライセンスのソースを初めて変更して公開した

MIT ライセンスなので、原著作者のライセンス表記があればライセンス違反にはならないはずだが、変更して公開するのは初めてなのでこの書き方で正しいのか不安になる。

結果

自動補完便利。
PhpStorm 賢い。

FuelPHP で Debug::dump() と Log::debug() を簡単に使えるようにする

FuelPHP で Debug::dump() とか Log::debug() とかうつのがだるかった

e() という関数があったから、同じ感じで d() とか l() にしたいなって思った。

引数をただダンプするだけのようなやつを作った

ソースはこちら。
FuelPHP 1.7.2 で動作確認してます。
FuelPHP で Debug::dump() と Log::debug() を簡単に使えるようにする

配置方法

e() という関数を追ったら core 直下の base.php に書いてあったので、同じような感じで app の下に base.php というファイルを作って bootstrap.php で require する。

結果

d() とか l() で表示できるようになって楽になった。

Go の練習としてファイル名を変更するツールを作った

Go の練習をしたかったのでファイル名を変更するツールを作った

ソースはこちら。
5000164/go-file-rename

内容

map で変更前と変更後のファイル名を指定して、ターミナルから実行する。
ディレクトリも指定できる。

Go を触ってみて

なんか楽しいかも。
go fmt があるのはいい。
個人的にはスペース派だけど言語としてフォーマッタが用意されてるからおとなしく従える。

参考

Windows で PHP の開発をするときに使ったツール

最近 Windows で PHP の開発をする機会があったので、使用したツールをまとめます

使ってみればよかった

FuelPHP に fuelphp-profiler-log をインストールする

FuelPHP のログにプロファイラの情報を出力できるパッケージをインストールしてみる

FuelPHP のバージョンは 1.7.2。
インストールするパッケージはこちら。
MiuraKatsu/fuelphp-profiler-log
手順を見ると、Core を直接いじってるので、Core をいじらないで拡張する。

手順

fuel/packages で下記コマンド実行してパッケージの取得
git clone --recursive git://github.com/MiuraKatsu/fuelphp-profiler-log.git profiler-log

configpackagesprofiler-log を追加

packages/profiler-log/core/class/profiler.phpapp/classes/profiler.php にコピーして編集
namespaceuse を削除
class Profiler extends \Fuel\Core\Profiler として継承

app/bootstrap.php を編集
Autoloader::add_classes'Profiler' => APPPATH . 'classes/profiler.php', を追加

packages/profiler-log/config/profiler.phpapp/config/profiler.php にコピーして編集
output の値を false から true に変更

動作確認

画面の右下にプロファイラが表示されていて、ログにプロファイラの情報が出力されていれば成功。

まとめ

とりあえず使ってみる。

参考

FuelPHPで3種のprofilerを使ってみた

Go を Mac にインストールした

Go をやろうと思ったのでインストール

homebrew を使ってインストールした。
Golang Macへのインストール〜Homebrewを使って〜 - Qiita
最初古いバージョンの Go がインストールされたのだが、brew uninstall go して brew update してからもういっかい brew install go したら最新バージョンがインストールされた。