uzullaがブログ

uzullaがブログです。

闇PHP勉強会に参加してきました

第七回闇PHP勉強会 〜あなたが闇だとおもったらそれは闇です

yamiphp.connpass.com

に参加してきました!

闇とは

以下転載

PHP勉強会について 闇PHP勉強会はPHPの内部構造や拡張モジュールなど、PHPC言語レイヤの話題が多めの勉強会です。ふつうのPHP勉強会に比べると若干マニアックな集まりだと思います。 この勉強会の名前は「普段は光が当たらない場所に光を当てるPHP勉強会」という意味です。他の闇を期待された方はごめんなさい。

ということです。

ひらたくいえば、PHPといいつつPHPの中身や、CでかかれたPHP拡張などのお話がメインの勉強会です。大変に興味深いお話が多い。

トーク内容について

@hnwさん「realpath cacheとOPcacheの面倒すぎる関係」 (20〜30分)

d.hatena.ne.jp

最近話題のrealpath_cacheのお話と、それとは違うが同様な結果となるOPcache+fastCGIの挙動のお話です。

PHPのデプロイについて様々な方法がありますが、CapistranoやDeployerをはじめとするツールでsymlink方式を採用している所が多いと思います。その場合、いくつかの罠があるとのことです。

詳しくは資料を見ていただきたいですが、個人的にまとめると…

  • realpath_cacheは、Symlinkなどが「解決されたリアルパスで」キャッシュされるので、Symlink切り替えでは(キャッシュタイムアウトまで)更新を検知できないことがある。
  • realpath_cacheをオフにしたり(〜ttl = -1や〜size = 0)、あるいはパージすることで、とりあえず解決ができる − だがしかし…(資料みましょう)

  • OPcacheはコードをキャッシュするが、Expireは設定されていないので、更新を検知できないと永遠に反映されない。

  • OPcacheはopcache.revalidate_path=0だと、pathの再解決をしない
  • 結果として、Symlink切り替えだと、Opcacheが一行にキャッシュを反映しないことがある
  • ただ、これはこれはSAPIによって挙動がちがい、mod_phpだとこれが問題にならなかったり…
  • だがしかし…(資料みましょう)

どちらの問題もコードの反映に失敗するというものですが、仕組みがちがって興味深かったです。

私はいまだにFTPでアップロードする案件もある程度の人間ですので、この挙動を把握しつつも、なんかあったらええかんじにrestartかけちゃえばいいかな!という感じもあります。

なお、質問タイムでは、「ウチではキャッシュのパージを積極的におこなったいる」などという実例の話もありました。

y-utiさん「JITのコードを読んでみた」(20〜30分)

y-uti.hatenablog.jp

これは率直にいって興味深く、まだ先の話なので全然チェックしてない所でした。

パースされたコードを見やすい(書き出しやすい)っぽいので、そのうち試してみたい。(といっていると雑事にとらわれていつまでも見ない罠)

edvakfさん「XPathソースコード検索」(LT、5分)

speakerdeck.com

関数の第三引数がないものを検索したい!という要望において、xmlにコードをパースした上で、XPathをつかうと検索しやすい!というお話。

なるほど!という感じがあります。

質問タイムでは、他のツールで同様のことをする例などが共有されていました。

@do_akiさん 「PHP AST 徹底解説 補遺」 + 「php における signal 処理の話」(20〜30分)

www.slideshare.net

www.slideshare.net

PHPでsignalは個人的にはもっとちゃんとしらべて、使える所では使ってみたいですね(不用意につかってはいけない)

7.1は見た目以上に中身が色々かわっていることを再認識しました。

sasezakiさん「このPHP拡張がすごい!2017」(LT、5〜15分)

www.slideshare.net

スライドがかわいい

速い(スライドをめくるのが)

楽しい

前回が2013だったらしいので、次は2021でしょうか、待ちます。

mpywさん「ストリームフィルタで暗号化しよう!」(LT、5分)

Mcryptが非推奨になり、PHPで逐次的にデータを暗号化する術がなくなったのでは?という話。

まあ、まだ非推奨なだけでつかえるけど、結構困るなこれ。

そして、失礼ながらハンドルネームの読み方がはじめてわかりました…。

まとめ

PHP勉強会は知らないトピックが非常に多く、質問なども活発で非常に面白かったです。

懇親会や二次会でも色々お話ができて楽しかったです、次回もぜひ参加したいですね。

会場を提供いただいていたピクシブ様にも感謝いたします。

builderscon tokyo 2016を終えて、そしてこれからについて

12/3、東京渋谷のレッドブルスタジオにてBuilderscon tokyo 2016を開催しました。

#builderscon

#builderscon

#builderscon

イベントスタッフとして

Buildersconにはコアスタッフとして参加しており、今回は様々な調整などを微力ながらおこないました。

スタッフ経験値もそこそこあがってきており、中堅という感じです。*1

タスクをわりふったりわりふられたりしつつ、主に色々なことが想定から漏れていないようにケチをつけるおじさん業みたいなのをしていました。あと、Slackで雑談する役。

実際のところ、まだ終わっているわけではないのですが、概ね事故なく開催できたので、最低限の役割ははたせたのでは!と考えております。

f:id:uzulla:20161204121511p:plain

f:id:uzulla:20161204121441p:plain

登壇者として

php.iniの話」という60minのトークをしました。

speakerdeck.com

追記:2016年12月6日 動画公開されました、以下のURLからたどれます!

https://builderscon.io/builderscon/tokyo/2016/session/d1344eb6-6405-4d0d-b556-a752579f9365builderscon.io

60minといいつつ、大体90分位話していました(トーク開始前の雑談から、後ろがいないからと引きずった質問時間まで)

php.iniについて言いたいことが高まりすぎた結果、全然時間がたりませんね、大体120分くらいあればゆっくり話せたかなと思います。だれか、この資料の再演でよければ120分ください(?)

正直、このネタで10人あつまるかどうかと不安におもっていましたが、一つ前がmattnさんというチート枠でしたので、ほどよい人口密集度でした。

会場のノリ(?)もよく、質問などもいくつかうけられたのでよかったと思います。やじがすくなかった(これはだめだ!)のが残念ですが、実際に本気の強いやじがとんできたら、心がもたないかもしれないので皆さん黙っていてくれただけかもしれません。

(嘘があったら教えてください、直します)

とにかく、みなさんPHPをつかっていきましょう、7.1.0!

f:id:uzulla:20161204121859p:plain

※この写真は私のトークではありません、ミエはりました。

参加者(?)として

最高!だけどやっぱ1日ってみじかくね?全然みんなと話きれなかったし、呑めなかったんだけど?

あと、(スタッフ業もあるので)真面目に聴講できたのは、ビールだけでしたので、後日YTみます。

感謝

まずは参加してくれた皆さんに感謝です、楽しんでいただけたならば幸いです。

次に、会場を貸してくれて、ワイガヤで最後まで追い出さないでくれたレッドブルスタジオ様に土下座です。

もちろん、いわずもがなスポンサーの皆様には大変ありがとうございました。(皆さんパンフ裏のかっこいいパズルやりました?)

毎度毎度、サポートしていただいた、デザイナーのekkunさん、八木さん、いつもありがとうございます。

そして、仲間であるスタッフの皆様もありがとうございました。特にモリゾーさんと、リチャードさんと、ゾンコーエンさんと、牧さん、ハセガワさん、だんごさんには感謝を。

あと、私が忙しいことでご迷惑をおかけした皆様にもすみませんでした、ありがとうございました。

開催後の話

開催後は本当にハイパーつかれきってしまい、打ち上げも途中で離脱して、なんとか乗り過ごさずに帰宅した後PCも開けませんでした。 (といいつつ、脳に湧いてくるTodoをスマホでGHのISSUEに登録したりはしていましたが…しないと不安だったので)

疲れているのは私だけでなく、ここのところずっと酷使されていた(?)ATOKも同様だったようで、ATOKが消滅していたことを報告致します。

来年、builderscon tokyo 2017

f:id:uzulla:20161204122032p:plain

終わった翌日にいうのも何ですが、もう何ヶ月も前からスタッフ業は走り出しておりますので、翌日もなにもないのです。

次回は2017/8/3から3日開催(前夜祭含む)です。(私の主観では)あっという間にまた開催日になることはミエミエなので、がんばります。

http://2017.tokyo.builderscon.io/2017.tokyo.builderscon.io

よろしければ、ぜひ続報をお待ちください。

ところで、一つだけ贅沢をいうならば、頼むからPHPerがもっと増えてほしいですね!(今回はPHPerの方々も何人かいらっしゃっており、ぜひ登壇を!)*2

こちらからは以上です。

*1:ところで私は色々をかなり保守的な読みをするので、本当にズバリとした読みができる、牧さんなどのレベルには到達できるのか不安になりますね、すごいんですよ?

*2:うずらさん、PHPerの友達すくないの?」といわれており、すくないのかも…となっております。

「dply」、最初二時間無料でVPSが使えます的サービス

https://dply.co/

一言でいって「二時間無料で手軽にVPSが使えます」サービスです。

「2時間制限を有料で延長出来ます」という方法で収益をめざしている模様。

二時間を超えると勝手に終了されるので、不意に課金されるとかはないし、最初の登録にクレカやデポジットも不要です。

つまり僕が好きなタダサーバーだ!やったね!

過去にもあった

過去instantserver.ioがこの収益手法をとっていた。ただ、あちらは潰れてしまった。

Instantserver.ioは、たしか30分+30分(一度目の延長が無料)だったので、2hというのは大分たすかるなという印象です。

f:id:uzulla:20161128181310p:plain

注意

素性のしれないよくわからんサーバーに、重要なデータをあげたりしてはいけないゾ!!

まずは見られている、そういう意識をもってつかいましょう!

使い方

Githubアカウントでサインアップ&ログインできます、メアドと公開鍵を読まれます。

公開鍵を見れる権限ってはじめて見た気がしないでもないんだけど、そもそも公開鍵ってhttps://github.com/username.keysで見れるしな??

サインアップしたらデプロイボタンを押して、ホスト名と、OSと、リージョンと鍵を選んで起動するだけです。

f:id:uzulla:20161128181454p:plain

最近多くなったけど、「入力欄が見えない問題」は罠ですね。Googleのマテリアルスタイルは本当にこれどうにかしてくれという印象しかないのですが、皆さまいかがお過ごしでしょうか。

リージョンはこのように、

f:id:uzulla:20161128181531p:plain

OSはこのように、

f:id:uzulla:20161128181544p:plain

使用感

1分もしないくらい?であがってきた、これは好印象ですね。

そういえばどこにもかいてなかった気がするけど、ユーザー名はrootでした。(とここまでかいてFAQみたら乗ってた)

f:id:uzulla:20161128181406p:plain

様子

シンガポールリージョンにあげてみました

f:id:uzulla:20161128181347p:plain

1 CPU 512MB RAM 20GB Disk メモリが少ないねー。

$ ping 128.199.72.46
PING 128.199.72.46 (128.199.72.46): 56 data bytes
64 bytes from 128.199.72.46: icmp_seq=0 ttl=52 time=72.890 ms
64 bytes from 128.199.72.46: icmp_seq=1 ttl=52 time=71.712 ms
64 bytes from 128.199.72.46: icmp_seq=2 ttl=52 time=72.014 ms
64 bytes from 128.199.72.46: icmp_seq=3 ttl=52 time=71.658 ms

日本リージョンではないので速くはないけど、レイテンシは作業できないってほどではない、というレベル

inetnum:        128.199.0.0 - 128.199.255.255
netname:        DOPI1
descr:          DigitalOcean Cloud

ふーん、DOかー。

繋がってる回線速度は少なくとも100Mbpsはありそう。ただ、なにかをアメリカから落とそうとするとシンガポールはちょっと遠いから、転送速度が十分にあがりきるまで(ウインドウが広がりきるまで)結構時間がかかります*1

CPU速度は遅め、php7のコンパイルくらいは普通にできるけど。(なつかしのinstantserver.ioだと、初期値の30分ではビルドがおわらなかったなw)

なお、APIはない。詳細はFAQにて。

その他

起動スクリプトはつくれる。bash でもできるっぽいのでおじさんでも安心

https://dply.co/help/cloud-init

たとえば以下みたいな…

#!/bin/sh
export DEBIAN_FRONTEND=noninteractive;
apt-get update;
apt-get -y upgrade;
apt install -y build-essential git gcc patch autoconf automake bison libssl-dev  libmysqlclient-dev libxml2-dev libreadline-dev libbz2-dev libcurl4-openssl-dev libjpeg-dev libpng12-dev libpng-dev libxpm-dev libfreetype6-dev libgmp-dev libgmp-dev libmcrypt-dev libmysqlclient-dev libpspell-dev recode librecode-dev

なお、これを利用して、ボタンがつくれるそうです。

f:id:uzulla:20161128191130p:plain

https://dply.co/button

ただ、スクリプトガッツリいれても進捗がよーわからん、topをみてないといけない。 おわったらなんかキックするようなのをいれておかないといけないかも。

また、管理画面でサーバーの詳細(起動時の設定)を確認できないので、上げちゃった後に「あれ、どんな起動スクリプトであげたっけ…?」ってなってしまうのがちょっと不便

あと、メールは送信できないそうです(OP25B

まとめ

タダは最高だなあ!(本音)

今後にも期待です!

そして某カンファレンスの資料がかきあがらんなあ!

こちらからは以上です。

*1:カーネルパラメータでもうちょっと良くなるかもしれないが