phpのexecでwrite error: Broken pipe

exec('ls | head -n1")

phpでこのようにしたら以下のエラーが出た

write error: Broken pipe

ただし処理自体は正しくできているようで、エラーが出るだけのよう

bashで同じように実行しても特にエラーは出ない ググってみるとこんなのがヒット https://stackoverflow.com/questions/11296809/how-to-avoid-ls-write-error-broken-pipe-with-php-exec どうやらpopenで開いたlsの出力を読み取らずに閉じることで同じエラーが出るとのこと

また、こんなページも http://qiita.com/kkdd/items/f9829af2fbb9c3c980da phpやlsに関係なく出力が長い場合にBloken pipeのエラーは出るよう

lsの出力を読み取りきらずにheadの処理が終わってしまった場合に、lsの出力先がなくなってこのようなエラーが出るものと推測される。私の環境だとbashでは出ないが、それはシグナルの処理をうまくやってくれているとかなのか。phpだとそのあたりの処理を途中で拾って何かやってるためにエラーになってしまうとか。

とりあえず2>/dev/nullをls側につけることでエラーは握りつぶせるかつ処理は正常に行われているのでよしとする。

xcodeで"Could not locate device support files"

xcodeをupdateした後、runした際にタイトルのようなエラーが出たのでメモ

エラーメッセージを見るとxcodeが対象のiphoneのOSをversionをサポートしてないということのよう。 Xcode.appの下にあるDeviceSupportに使いたいOSのversionが含まれていないとこうなるらしい。

古いxcodeから必要なversionを含むディレクトリを持ってくればOK。コピーしてもいいが以下のようにリンクを貼るのが楽。

$ ln -s /Applications/Xcode-7.3.1.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/7.1
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/

参考

ios - Xcode: Could not locate device support files - Stack Overflow

touchbar付きのmacでワンタッチsleep

touch bar付きのmacbookproは電源ボタンを押してもsleepしてくれない。 左上のメニューからsleepを選べば当然問題ないがもっと手間を省きたいためショートカットする方法を調べてみた。

ググったら簡単にみつかった 20 tips & tricks for the new MacBook Pro Touch Bar

system preference > keyborad の下部に”Control Stripをカスタマイズ”というボタンがあり、touch barに表示するボタンを設定できる。

sleep用のボタンも用意されているので、それをtouch barに置けばOK