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> "__"や"--"という文字を区切りに使っているため、非常に冗長に見えます。ま
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に演算子オーバーロードを実装してみた。やってみたら思いの外サクッと実装できた。 例えば以下の様なコードが実行できる。オブジェクトが"__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
共有gitリポジトリをホストする方法をググると、WebDAVを使ったやり方が結構出てくる。このやり方には明確なデメリットしか無いにもかかわらず、WebDAVを使ってホストする方法を紹介するページでは触れられていないことが多い。まったく大した話ではないが、開発者が二度とひっかからないためにリポジトリのホストにWebDAVを使わないほうがいい理由を書いておく。以下、2つ。 WebDAVを通じてホストすると遅い WevDAVを通じてホストするとサーバサイドフックが起動しない 遅い 超遅い。ベンチマークを測ったわけではないが、sshでホストする場合と比べてcloneやpushやpullが3倍以上遅いのではないか。 WebDAVでホストすると遅くなってしまうのには理由があって、sshでホストする場合とWebDAVでホストする場合とでは、そもそもの通信プロトコルが違うから。pro gitを参照すると、
PHP勉強会の告知です。6/16日に第二回闇PHP勉強会を開催します。前回プログラムの中にひとつだけあった普通のPHPに関する発表が消えて、今回は全てそれ以外の拡張ライブラリや言語処理系の話のみとなりました。 プログラム hiphop php でPHPからジェネレートされたC++コードを読んでみよう(仮) 60分 id:rti7743さん facebookが開発したPHPをC++に変換して高速化してくれるHipHop for PHPが生成したC++のコードに関するrti7743さんの発表です。 詳解PHPOpenGL binding (20分) id:yoyaさん ゲーム開発などでよく利用されるOpenGLのPHPバインディングに関する発表です。PHPの拡張ライブラリとしてのハマりどころなどの解説もあります。発表概要はこちらで公開されています。 php-uvはじめてみた 20分 id:ch
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
http://nimpad.jp/ 学生の頃に作って途中で飽きてほったらかしのままだったのですが、このままお蔵入りさせるのもどうかと思ったので公開します。以下トップページからの引用。 はてな記法を使えます 主要なプログラミング言語のシンタックスハイライトに対応しています 記事名のインクリメンタル検索から素早くページに移動できます いくつかの記事をまとめて見たり、縦横に並べながら編集できます 複数人で使うコラボレーションツールではなく、あくまで個人向けのwikiです 開発小話 apache+php5.3+MySQLで構築 konstruktというマイナーなフレームワーク使用 PHPで使えるはてな記法パーサが無かったので自分で実装 パーサ構築するのに使えるPHPのパーサコンビネータとかも当時無かったのでこれも自分で実装 デザインとかわからなくて三回ぐらいリデザインした気がする、が今となってはあ
今までPHPでは配列を書くのにarray()という記法を使う必要があったが、PHP5.4のリポジトリに新しい配列の文法が追加された。[]で囲むことで配列を表現することができるようになっている。連想配列についても同様。 add short array syntax as defined in https://wiki.php.net/rfc/shortsyntaxforarrays, 2nd solution using => only http://svn.php.net/viewvc?view=revision&revision=313641 以下、配列の新しい文法に関するテストケースを引用。 --TEST-- Testing array shortcut and bracket operator --FILE-- <?php $a = [1, 2, 3, 4, 5]; print_r(
PHP5.4 alpha1がリリースされた。このリリースでは、PHPのオブジェクト指向言語の新たな機能としてtraitと呼ばれる機能が追加された。PHP5.4におけるtraitとは、型に影響を与えずにクラスに適用できるメソッドとプロパティの集合である。 早速PHP5.4 alpha1をインストールし、traitを使ってシングルトンパターンを実装した。このコードでは、クラスの継承関係に影響を与えずにシングルトンパターンをモジュール化している。 <?php trait Singleton { protected function __construct() { } static function getInstance() { static $obj = null; return $obj ?: $obj = new static; } function __clone() { throw n
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く