PHPカンファレンス福岡2016で型推論器ってどんな感じなのという話をしました。PHPカンファレンス福岡は去年も登壇したんですが今年は弊社もスポンサードしつつの登壇です。 参加者や運営スタッフの皆さんの対応含めて心地良い雰囲気だったので、ああ参加して良かったなと自然と思えるような素晴らしいイベントでした。参加者や運営のスタッフの皆さんお疲れ様でした!
CSSの設計規約というと、BEMが有名ですが、最近またAMCSSという新しいCSSの設計規約が出てきました。この記事では、このAMCSSについて簡単に紹介したいと思います。 個人的なBEMの好きでない所 仕事でBEMをよく使っていて、優れた設計規約だとは思いつつも、使っていて気になる点がいくつかあります。BlockとElementとModifilerという3つの概念をクラス属性だけで表現しようとするため、非常に記法が見難いのと冗長なところです。 例えば、fooブロックのbarエレメントのhogeモディファイヤーを表現すると、以下のようになります。 <div class="foo foo--hoge"> <div class="foo__bar foo--hoge__bar"> ... </div> </div> "__"や"--"という文字を区切りに使っているため、非常に冗長に見えます。ま
こんにちは、久保田です。 PHPで仮想マシンベースの正規表現エンジンを作ってみる 第二回です。 前回の第一回では、PHPで作成する正規表現の仕様の紹介や正規表現のパーサの実装を行いました。今回の記事では、正規表現を実行する仮想マシンをPHPで実装します。 正規表現を実行する仮想マシン まず、実装する仮想マシンの仕様について解説します。Regular Expression Matching: the Virtual Machine Approachでは仮想マシンについては以下のように記述しています。 To start, we'll define a regular expression virtual machine (think Java VM). The VM executes one or more threads, each running a regular expression
via vallog: ターミナルに黒魔道士 PHPでもやってみた。こういうスクリプトを書く。 <?php // draw.php foreach (str_split(stream_get_contents(STDIN), 1) as $c) { echo ctype_digit($c) ? "\x1b[" . ($c + 40) . "m \x1b[0m" : ($c === ' ' ? ' ' : $c); } kuro.datという以下のような内容のファイルを用意。 00 00330 033320 0033320 003333220 000000033332220 0333333332222220 02222333322220 0002222333200 00002222220 030000022220 00300300002220 04000030000400 040000000
PHPに正規表現リテラルをどんな感じで実装するかを3/2の第四回闇PHP勉強会で話しました。PerlやJavaScriptやRubyやPythonが持っているような正規表現リテラルがPHPには無いのですが、この話では実際にパッチを書いてみてどんな感じで正規表現リテラルを追加していったのかをデモをまじえつつだらだら話す感じで説明しました。 他の方の発表も基本的にはZendEngineや拡張の話だったのですが、自分の知らないところの知識やノウハウが話されていて参考になりました。@rskyさん、@do_akiさん、@hnwさん発表お疲れ様でした。 次回の開催はいつぐらいにやるか特に決めてないのですが、だいたい6,7月ぐらいになるかなーと思っています。
via ときどきの雑記帳 php internalsでアノテーションに関する議論が行われていて、その中の一幕。 Stas, On Wed, Jan 9, 2013 at 11:58 AM, Stas Malyshev wrote: > PHPにこれが実装されないことを切に望むよ。 > I seriously hope it never comes to this in PHP こういう大げさな言い方をする口をもう閉じてもらえないだろうか? あなたが 言っていること全て、あなたが現代的な開発にまったく関わったことがない事を 明らかにしているだけだ。 Would you shut up with this rhetoric already? All it does is show that you're completely and utterly out of touch with the
なかなかブログ書く暇を見つけられなかったのですがそろそろ書かないと溜めすぎだろうということで一つに記事でいっぺんに報告。 第三回闇PHP勉強会 第三回となる闇PHP勉強会を開催しました。最初始めたころはどれぐらい続けられるか心配でしたがなんとか第三回を開催できました。今回は以下の4つのセッションでした。 xdebugの実装と仕組みのちょっとした話 @anatoo 自分の発表した話ですが、xdebugの各種機能の実装の仕組みとかってどうなってるのかなーというところを調べてしゃべりました。 php-openclについて @rskyさん rskyさんによる第一回のOpenCLの話の続きです。なぜか拡張ライブラリのライブコーディングまでやり始めて盛り上がって面白かったです。 php in ruby @do_akiさん rubyの拡張ライブラリを書いてrubyスクリプトの中からPHPを呼び出せるよう
PHPにPerlっぽい 文法を足してみた 2012/11/4 PHPMatsuri アシアル株式会社 久保田光則 a.k.a. @anatoo 11A 自己紹介 •@anatoo いいひと。 詳しくはanatoo.jp やったこと •Perlのイケてる文法をPHPにも追加し てみた Perlの文法の イケてるところ •関数の最後にreturnとか書かなくても いい •計算の結果を勝手に$_に入れてくれる •print;とか書くと自動的に$_を参照して くれる 例1 sub a{ Hello World ; } print a(); これでHelloWorldと表示される 例2 $_ = Hello World ; print; これでHelloWorldと表示される ショートコーディン グに便利そう(小並感 かっこいい というわけで PHPのパーサとコン パイラいじって同じ 文法追加して
PHPに演算子オーバーロードを実装してみた。やってみたら思いの外サクッと実装できた。 例えば以下の様なコードが実行できる。オブジェクトが"__add", "__sub", "__mul", "__div" というメソッドを持っていたらそれに対応する演算子がオーバーロードされる。 <?php class Hoge { function __construct($value) { $this->value = $value; } function __add(Hoge $right) { return new Hoge($this->value + $right->value); } function __sub(Hoge $right) { return new Hoge($this->value - $right->value); } } $hoge = new Hoge(1) + new
PHPのバージョン管理には今までsubversionが使われていて、githubにあったリポジトリは単にそれをミラーリングしていただけだったが、最近になって正式にgitに移行した。また、PHPに何らかのパッチを投げる場合も、以下のgithubリポジトリへのpull requestを通じてできるようになった。 http://git.php.net http://github.com/php/php-src 以下、php-internals MLで流れてた告知の引用。 Hi with the php-src migrated to git we start receiving pull request on github. A few things to notice: - developers can pull the requests as described here: https://
postfixやqmailなどは入れたくないけど、sendmail相当のものを使ってメールを送りたい時に便利なMSMTPを試してみた。 この記事では、実際の導入からgmailのアカウントを利用してMSMTPでメールを送る方法を書く。 インストール MacOSXだとhomebrewからインストールできる。debianやubuntuだとaptitudeからインストールできる。 $ brew install msmtp$ aptitude install msmtp次に以下のような設定ファイルを~/.msmtprcに置く。 account default host smtp.gmail.com port 587 user hoge@gmail.com password hogehoge from hoge@gmail.com tls on tls_starttls on tls_certchec
PHP5.4のパーサとコンパイラをいじって拡張メソッドの文法を追加してみたという話。PHP内部のコンパイラとパーサの勉強がてらつくってみた。 拡張メソッドって何? クラスの外部からそのクラスのメソッドを追加できる機能で、「あーこのクラスにこういうメソッドがあったらな〜」という欲望を満たす。C#とかについてる。 例えば、こんな感じのクラスがあったとする。 <?php class Hoge { function __construct() { $this->hoge = "hogehoge"; } } んで、このHogeクラスに対して、こんな感じでメソッドを追加できる。 <?php public function Hoge::fuga() { echo $this->hoge; } (new Hoge)->fuga(); // "hogehoge"が出力される staticなメソッドも当然追加
PHP5.4 Advent Calendarの13日目です。@co3kさんの記事に引き続き、PHP5.4の新しい機能を紹介します。 PHP5.4で見逃せない新機能の1つとして、今までPHP単体では出来なかったファイルのアップロードの進捗情報が取得できるようになりました。今までアップロードの進捗情報は、APCやFlashなどを利用しなければ取得できないものでした。この記事では実際に動くサンプルコードと共にこの機能を紹介します。 導入 以下のようなファイルアップロードのためのフォームを用意します。この時パラメータにsession.upload_progress.nameディレクティブのエントリを追加します。これはアップロードの進捗情報を取得するという宣言で、これが無いと進捗は保存されないので注意です。この例では、"example"という値をつけています。 <?php session_start
PHPに限らず、プログラミング言語のちょっとした挙動や関数の動作を確認したいときがよくあります。そういう時、何か小さなコードをエディタで書いてコマンドラインで実行するのも良いですが、インタラクティブシェルを使うとより便利です。また、PHP5.4.0RC2の時点でインタラクティブシェルに関する細かな改善もあります。 この記事では、PHP5.4でのインタラクティブシェルを紹介します。 導入 PHPでインタラクティブシェルを利用する場合、configure時にオプションを指定する必要があります。PHP5.4RC2をダウンロードし、configure時に--with-readlineオプションにreadlineがインストールされているディレクトリを指定してビルドするとインタラクティブシェルが利用できるようになります。 $ cd path/to/php-5.4.0RC2 $ ./configure
前回: PHPソースコードリーディング入門(とっかかり編) - id:anatooのブログ PHPのソースコードを読んでいく際に、どうしてもソースコードを読むだけではよくわからない部分というのが出てくる。この記事ではPHPをデバッガで動かして内部の働きを明らかにする方法を書く。 ソースコードの取得 gitから取ってくる。 $ git clone https://github.com/php/php-src.git デバッガで動かせるようにビルドする 余計な拡張は無しで、デバッガで動かせるようにビルドする。configure時に--enable-debugオプションを渡す。 $ cd php-src $ ./buildconf $ ./configure --disable-all --enable-debug $ make GDBで動かす makeした後、コマンドラインで動かせるバイナリは
PHPのソースコードを読むためのとっかかりの話。 ソースコード取ってくる gitから取得できる。 $ git clone https://github.com/php/php-src.git とりあえずビルドしてみる ビルドに必要なツールをインストールした後、buildconfスクリプトを叩いてconfigureスクリプトを生成したのち、通常通りconfigureを叩いてmakeする。例えば、余計な拡張を一切ビルドせずデバッガで動かせるようにビルドしたい場合は以下のようになる。 $ cd php-src $ ./buildconf $ ./configure --disable-all --enable-debug $ makeコマンドラインから叩けるバイナリは、"sapi/cli/php"にある。 $ sapi/cli/php -r "echo 'hello world';" hello
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く