Perl日記

PerlとかRubyとかPHPとかPythonとか

PHPの名前空間をuseするときはクラス名まで書く

PHP

ちゃんと理解していなかったので読んだ。PHP: 名前空間 - Manual useするときには名前空間+クラス名で、そのクラス名を修飾せずとも使えるようになる。a.php class Foo\Bar#1 (0) {} PHP5.6以上ならば、同様に、名前空間+関数名とか、名前空間+定数名で…

Laravel5.1入門 その10 はじめてのFacade

PHP

Laravelにおけるファサードとは、デザインパターンのファサードとは全く別物なので注意。 単にAPIを使うための機能と捉えておけばいいみたい。 目的 こんな感じでアプリ内からどこでも動くようにする。 true 本当に動くクラス 巡り巡って本当に動くis_piyo(…

Laravel5.1入門その9 はじめてのサービスプロバイダ

PHP

サービスプロバイダのスケルトンをartisan経由で作る。 $ php artisan make:provider FugaServiceProvider Provider created successfully.app/Providers/FugaServiceProvider.php

Laravel5.1入門その7 はじめてのIoCコンテナ

PHP

Laravelプロジェクト直下に素のPHPを書いてみる。 hoge.php bind('foo', function(){ return ['hoge' => 'fuga']; }); // fooの名前で取り出す $foo = $app->make('foo'); var_dump($foo); //=> array(1) { //=> 'hoge' => //=> str…

Laravel5.1入門その7 MongoDBにつないでみる

PHP

MongoDBをインストール。 $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 $ echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb…

Laravel5.1入門その6 collectヘルパを使う

PHP

Collections - Laravel - The PHP Framework For Web Artisanslaravel.com collect([])を使うと、Illuminate\Support\Collectionインスタンスが返ってきて、PHPの貧弱なArrayを便利にしてくれる。Eloquentを使うときも、これらの便利メソッドが使える。 firs…

Laravel5.1入門その5

PHP

ミドルウェアの使い方のもっと良い方法がちゃんと書いてあった。 HTTP Middleware - Laravel - The PHP Framework For Web Artisans というかもうRailsぽい。やりたいのは /api以下のリクエストは、API用のミドルウェアを通ってほしい /api以下のレスポンス…

Laravel5.1入門その4

PHP

Laravelは5になってからPSR-4に沿うようになったので、appディレクトリの下を自由に使うのが良いらしい。APIとデバッグ用のページと管理者用のページを作る時にどうするかなと思って、まずやってみた。Controllerの下にApi、Debug、Adminの名前空間を掘って…

Laravel5.1入門その3

PHP

ミドルウェアを触ってみる。 artisanでミドルウェアのスケルトンを作る。 $ php artisan make:middleware AuthenticateUserAgent Middleware created successfully.できた。app/Http/Middleware/AuthenticateUserAgent.php

Laravel5.1入門その2

PHP

app/Http/routes.phpを触る。 text/plain

Laravel5.1入門

PHP

メモ。 Ubuntu14。 PHP5.6入れる。 $ sudo add-apt-repository ppa:ondrej/php5-5.6 $ sudo apt-get update $ sudo apt-get install python-software-properties $ sudo apt-get update $ sudo apt-get install php5 $ php5 -v PHP 5.6.9-1+deb.sury.org~tru…

二重引用符中の認識されないエスケープシーケンス

二重引用符(ダブルクオート)の中にバックスラッシュを置くとき、 「\n」とか「\t」とかのエスケープシーケンスは展開されるけれど、 「\j」のような言語が認識できないようなものがどうなるか、言語間で差が出たのでメモ。 Perl print "$]\n"; print "\j\n…

PerlでPDFに他のPDFのページを差し込む

http://r9.hateblo.jp/entry/20120513/p1ScanSnapでスキャンしたPDFをページごとに回転する - Perl日記r9.hateblo.jpの続き。(もう3年も前だ) 本体PDFに表紙PDFのページを差し込む 漫画の単行本をスキャンして自炊するときには、白黒の本体部分と、カラー…

PHPのジェネレータについてLTしませんでした

PHP

社内勉強会で、時間の関係でできませんでしたが、作った資料がもったいなかったのと、Speaker Deck使ってみたかったので試しに貼ってみます。

PHPでUnix時間からDateTimeオブジェクトを作るときのタイムゾーン設定

PHP

はまったのでメモ。 UnixタイムからDateTimeオブジェクトを作るときに、他のやり方と同じノリでタイムゾーンを第二引数に渡しても効いていなかった。一応、マニュアルにも書かれていた。 PHP: DateTime::__construct - Manual 注意: $time パラメータが UNIX…

PythonでMacの濁音・半濁音のファイルを扱う

MacはNFD形式で日本語のファイルとかディレクトリを作るので、スクリプト内の日本語でひっかけられない。 import os os.mkdir("はっぴー") os.path.exists("はっぴー") #=> True これは引っかかる for file in os.listdir("."): if file == "はっぴー": #=> …

PHPのジェネレータまとめ

PHP

PHP5.5から使えるようになったジェネレータについて、社内普及用にまとめる。 ジェネレータとは ジェネレータは、プログラムにおいて、数列の各要素の値などを次々と生成(ジェネレート)し他の手続きに渡す、という機能を持っている手続きである。値を渡す…

ReactでJSON整形ツール書いてみた

できたもの https://dl.dropboxusercontent.com/u/9152456/json_stringify/index.htmlいろいろやった後、削りまくったら結局stateしか使わなかった。 <html> <head> <meta charset="UTF-8"> <title>JSON整形ツール</title> style略 <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.13.2/react.js"></script> </meta></head></html>

PHPの知見がたまったので共有します

PHP

順不同です。 インスタンスメソッド内でのクラス変数取得 from_static() ); //=> array(123, 234, 345) p…

PHPのつらいところまとめた

PHP

半年近くPHP5.3を仕事で使っててつらかったことをまとめた。 キーワードも関数名も大文字と小文字を区別しない h(); // hoge! 複数人で作ってるとほんとこういう些細なところで余計な手間がかかる。 チェックするのを自動化するのも手間。 あるいは、これく…

PHPの関数の引数メモ(デフォルト値の定数、タイプヒンティングのnull)

PHP

関数の引数の挙動メモ。 デフォルト値 デフォルト値は、定数式である必要があり、 (例えば) 変数やクラスのメンバーであってはなりません。 http://php.net/manual/ja/functions.arguments.php#functions.arguments.default定数ならばよいということで、定数…

PHP5.3での無名関数内でのselfや$thisは解決できないから気をつけろ

PHP

ハマったのでメモ。 PHP5.4以降なら問題ないっぽい。 無名関数内でselfや$thisを使うとエラーになる。

PHPのオブジェクトはnewできる

PHP

なんか動いたのでメモ。 str = $str; } } $hoge = new Hoge("hoge"); print_r($hoge); $fuga = new $hoge("fuga"); // ★オブジェクトにnewする print_r($fuga); __construct() is called. Hoge Object ( [str] => hoge ) __con…

PHPのarray_walkはforeachに置き換えよう

PHP

PHP: array_walk - Manual array_walkはforeachに置き換えた方が圧倒的に可読性が良いと思う。 特に引数でそのまま無名関数を渡してしまう場合。 array_walk版 15 // [1] => 25 // [2] => 35 // [3] => 45 // [4] => 55 //) foreach版

PHPのabstractクラスのstatic関数は呼べる

PHP

呼べたのでメモ。

PHPのいいところを考える

PHP

辛いところを見ていても辛くなるだけなので、PHPのいいところを考えてみる。 タイプヒンティングがある PHP: タイプヒンティング - Manual関数の引数に型指定ができるよ。 ただしintやstringなどのプリミティブ型は指定できないよ。

PHPのtraitはinstanceofで確認できない

PHP

PHPではtraitというメソッドの固まりみたいなものをクラス内に差し込むことができる。 が、interfaceと違って、instanceofで特定のtraitが使用されているか判定することができないようだ。traitの場合 bool(false) interfaceの場合

PHPの配列は配列ではないので気をつけろ

PHP

PHPの配列は配列ではない。 PHP の配列は、実際には順番付けられたマップです。 http://php.net/manual/ja/language.types.array.php他の言語でいうところの配列は、PHPでは添字がキーになった辞書である。 なので、値のリストと、キー・値のペアを一緒に混…

PHPのarray_filterは添字を維持するので気をつけろ

PHP

やることはPerlのgrepやRubyのArray#selectと同じなのに、PHPのarray_filterは添字を維持してフィルタしてくれやがる。Ruby [10, 11, 12, 13, 14, 15, 16].select{|i| i % 2 == 1} #=> [11, 13, 15] PHP Array //=> ( //=> [1] => 11 //=> [3] => 13 //=> […

PHP CodeSnifferを使ってみた2

PHP CodeSnifferを使ってみた1 - Perl日記の続き。PHP_CodeSnifferをインストールするとデフォルトで幾つかの規約セットがすぐに使える。 $ ./vendor/bin/phpcs -i The installed coding standards are MySource, PEAR, PHPCS, PSR1, PSR2, Squiz and Zend…