プログラムを書くときに計算量を意識していますか?計算量の基本を理解することで、サービスが成長したときに問題を起こしにくいプログラムを作成することができます。簡単なプログラムを例にして、まず計算量という概念に慣れてみましょう。
長年PHPをやってきた普通のウェブエンジニアが、ある日突然コンパイラの魅力にとりこまれ、寝ても覚めてもコンパイラのことしか考えられなくなりました。
こんなに面白いものがあったのかと。
まずC言語コンパイラをCで書き(写経)、つぎにC言語コンパイラをGoで書き(移植)、気がついたらGo言語コンパイラをGo言語で書いている自分がいました。
そこで見えてきたものは、それまでWeb開発で見ていた景色とは全然違う世界でした。
値とは何か。式とは何か。解釈とは何か。
コンパイラを作る者は、それらの問に対して自分なりの答えを見つけなければなりません。
Goコンパイラに挑戦して1日目Hello wordがで動いたとき、ソフトウェアエンジニアとして非連続的な成長をしつつあるのを実感しました。
コンパイラが書きたい。もっと書きたい。
コンパイラ作りの魅力について語ります。
皆さんの日常生活には欠かせない、ドメインという仕組み。
なんとなく使っていませんか!?
例えば、何文字まで長く出来るかわかりますか?
(タイトルでネタバレ)
ドメインを最長にした際、
・メールアドレスはどうなる?
・Nginxの設定は?
・サーバーレスは?
・SSL証明書は?
今回は仕様最長のドメインで実際にサイト運営した経験を題材に、
RFCの仕様からFirebase検討までの奮闘記をお話します。
とある日に、いつものようにPHP 5.6でmbstringの関数へ引数をarray()にして挙動を楽しんでいました。
同じように当時の PHP 7.3.0 RC5 に対して、挙動を楽しんでいると、
mb_check_encodingのときに、Segfaultになりました。
報告したところ、修正いただきました。
今回は、そのバグをどう見つけて、どう報告したのかということと、
php-src上での問題か、スクリプト上の問題かを切り分ける方法、
そもそもPHPのビルトイン関数へ(わざと|誤って|たまたま)マニュアルにない引数を加えるとどうなるのか、
7.2からmb_check_encodingとmb_convert_encodingにはarrayが使えるようになっていること
などの発見したこと、報告した後の心境を共有させていただきたいなと思います。
PHPerKaigi2019にてデザインスポンサーとしてWebサイトの制作をさせていただきました!PHPerKaigi2019のサイトができるまでの過程において、デザインに込めた想いやワークフロー、Nuxt.jsでの実装の内容でお話したいと思います。
PHPでURLルーティングをつくってみた話をします。
普段フレームワークを活用していると、ルーティングの実装はフレームワークが用意したパッケージや外部ライブラリ依存であることが多く、自作するモチベーションやメリットはあまり浮かばないかもしれません。
今回、実用性のあるものを作り上げるのは難しかったですが、敢えて車輪の再発明に挑戦することで
様々なライブラリの実装パターンや実行速度のパフォーマンスの懸念点を知る機会になったり、
アルゴリズムの実装力(エンジニアの基礎体力)を鍛える良い練習にもなりました。
15分の時間内でURLルーティングを自作するメリットと楽しさについてお話できればと思います。
PhpStormを知っていますか?
PHPStormはプラグインのインストールや設定カスタマイズをしなくても様々な便利な機能がついている統合開発環境です。
しかし、自分のプロジェクトに合わせて多少の設定を行うと、コードリーディングがさらに楽になります。
このトークではPHPユーザー向けに読みたいコードを探し出すための検索機能から、静的解析連携、テスト・デバッグを使ってコードを理解する方法などを説明して、PhpStormがプログラマのコードを理解する能力をどう拡張してくれるか紹介します。
Hackには、HTTPの処理に関してPSR-7のように相互運用を可能にするためのインターフェースが存在します。
PSR-7と異なるインターフェースはなぜ用意されたのか、
PSR-7とHackのインターフェースの違いはなにか、
Hackでの実装例と他言語のHTTP処理を比べながら、リクエストレスポンスの表現について理解を深めるセッションです。
●セッション内容
PHP勉強会@東京の紹介
全員で自己紹介
●メイン発表
PHPを学ぶということ @sizuhiko しずひこさん
https://speakerdeck.com/sizuhiko/phperkaigi-2019-phpstudy
PHPの新元号対応について @sapi_kawahara 川原英明さん
https://speakerdeck.com/sapi_kawahara/about-the-new-era-fixes-of-php-language
唐突ですがフレームワーク(以後FW)は古代存在しませんでした、よって昭和の人間は自分でFWを書いていたと伝えられています(諸説ある)。
とはいえ今は<?= $php_fw_list; ?>といった素晴らしいFWがありますよね。平成も終わる今、タイトルのようにオレオレフレームワークを書く意味があるのか?その疑問は一理あります。
所でFWとは枠組みで、枠組みは内を支えるものです。つまりFWを書く事で自分の内面を知ることに繋がります。そう、自分を知るためにFWを書くべきです!(?)
平成の終わり、オレオレフレームワークを書き、自分を知りましょう!そして…!
*
データベースの寿命はアプリケーションより長い。
皆さんも感覚的に理解していても、では実際にどのように付き合っていけばいいのでしょうか。
そこで誰もが経験のあるアンチパターンを題材に正しい設計について紐解いていきます。
そんなヒントを散りばめた濃厚なデータベースのノウハウをお届けします。
今回のアンチパターンは
の3点をお届けします!
uzullaさんのPHPerKaigi2018「大統一PHP」(https://speakerdeck.com/uzulla/da-tong-php)で紹介されているSwooleという非同期かつ、Coroutineの仕組みをもったPHPのextensionがあります。
Swooleを用いたフレームワークはいくつかあります。
今回、EasySwoole(v2,v3)、Swoft、Laravel-Swooleの4つを比べてみた結果をお話しします。
それぞれのフレームワークのISUCON8予選のベンチマークの結果をお伝えします(恒例)
No.1 Swooleフレームワークはどれだ!
みなさん試行錯誤してPHPサービスを止めないように努力されていると思いますが、
現実世界上でSLA100%を完全保証することは不可能です
では最速で復帰させる為にどの様な努力を行えば宜しいのでしょうか?
僕が行っている最速で「気付く」方法を赤裸々に語ります
PHPのエラーが発生して何が起きたかを慌てるのではなくて、
発生した瞬間に認識する方法を思考します
僕たちが幾度となくお世話になったvar_dump()
ちょっとまって、この関数すごくない?
var_dump()半端ないって。どんなオブジェクト入れても表示するもん。そんなんできひんやん、普通。
ということでvar_dump()のルーツ(実装)を探りにgithub/php-srcに向かった僕だった
PHPerの皆さんは普段Webアクセシビリティについて何か取り組んでいますか?
皆さんが作っているWebサイト、Webサービスは本当に、すべてのユーザーに使ってもらえるものですか?
今回のLTでは
を紹介したいと思います。
仕様書もないレガシーモジュールに最低限の秩序をもたせる為に何ができるかを考え、対応した話をします。
主にCI環境を構築した話になると思います。
テストコードを書いて、カバレッジ100%とかは非現実的な話はしません。
laravelを触ってみたいと思っても、環境構築が面倒くさいと思って挫折した人いませんか?
また本に書いてあるやり方だと実践的ではないと思ってやる気がなくなっちゃった人いませんか?
これ2つとも2018年までの私です。
でもそんな自分でも作ってみて、Laravelの使いやすさ、楽しさが最近ようやくわかってきました。
ぜひ皆様にもLaravelのよさをわかっていただけたらと思います。
そのために環境構築を試してみて、どのやり方がどんな感じでオススメかを紹介できたらと思います。
以下の3つを紹介できたらと思います。
・Laravel 内蔵サーバ
・MAMP(XAMPP)
・Docker
プログラミング未経験の大学生がとあるスタートアップでエンジニアを志し、時に挫折し、時に成長を実感しながら歩んだ1年間の物語です。
現在のインターン先では、ソースコードレビューを行う文化があり、インターンを始めてソースコードレビューを知り、経験しました。
インターンを通してレビューには意義のあるレビューと意義のないレビューがあると気づきました。意義のあるレビューはより良いソースコードにしていくために議論を重ねる場、意義のないレビューは本来レビューで指摘されるべきではないつまらないミスだと思います。
ある時、レビューワーが自分のつまらないミスのためにレビュワーの時間を奪っていることに気づきました。そこで、ソースコードレビューで指摘を受ける回数をカウントをして、指摘を減らすために思考錯誤をしていきました。
今回はそんな話をしていきたいと思います。
CTF (Capture the Flag) は、情報技術のセキュリティ脆弱性を利用して攻略する様々な問題からflagと呼ばれる文字列をできるだけ多く、そして早く獲得するコンテストです。その中にWebセキュリティのジャンルがあり、PHP製アプリケーションも例外なく出題されます。
その難易度も出題によって幅広く、SQLインジェクションなど基礎的な問題から、PHPの仕様を詳しく知らないと解けないような難問まで存在します。
謎解き感覚で楽しくPHPセキュリティを勉強しましょう!