PHPカンファレンス2021で使用した登壇資料です。
この記事ではPackagistで公開可能な形式のPHPのライブラリ(Composerパッケージ)を公開するための道具立てを紹介します。あと、現代のPHPerはツールを組み合せてさくっと開発しているんだという自慢です。 タイトルは「この TypeScript が Hello, world! のくせに慎重すぎる」と「この勇者が俺TUEEEくせに慎重すぎる」のぱくr… パロディです。 テンプレートエンジンのくせに型安全なんてなまいきな。 この記事の読みかた せっかくなので手を動かしながら自分でComposerパッケージを作成してみましょう。 今回の題材は「Hello worldを出力する」という革新的機能を提供する、とても画期的な実用ライブラリです。 記事名通り「慎重すぎる」ので、細かく刻んでGitで経過を保存しながら作業を進めていましょう。なんかよくわからない状態になったらgit reset
以前少し話題になったLaravelのデバッグモード有効時の脆弱性であるCVE-2021-3129のPoCを読んでいたのですが、思ったより難しくて何でこんなことをしているんだろうと思ったら発見者による解説ブログがありました。読んでみたらバイパスのために思ったより色々していて普通に勉強になったのでメモを残しておきます。CTFerからすると常識な内容かもしれないので、何か間違いや補足があれば指摘をお願いします。 www.ambionics.io 前提知識1 前提知識2 本題 問題点 = によるエラー 日付のデコード ログファイル内の他エントリ バイパス方法 consumedの利用 iconvの利用 パディングの利用 UTF-16のための調整 NULLバイトの回避 最終形 まとめ 前提知識1 上の脆弱性を理解するためにはいくつかの前提知識を必要とするため最初にまとめておきます。 まず、PHPでは外
Amazon Web Services ブログ サーバーレス LAMP スタック – Part 3: Webサーバーの置き換え 本投稿は AWS サーバーレス アプリケーションのシニアデベロッパーアドボケートである Benjamin Smith による寄稿です。 本シリーズの他のパートは以下のリンクからアクセスできます。また、関連するサンプルコードはこちらの GitHub リポジトリにあります。 パート1:サーバーレス LAMP スタックの紹介 パート2:リレーショナルデータベース パート4:サーバーレス Laravel アプリの構築 パート5:CDK コンストラクトライブラリ パート6:MVC からサーバーレスマイクロサービスへ この投稿では、Web サーバーを使用せずにサーバーレス PHP アプリケーションを構築する方法を学びます。 この投稿の後半で、bref および Serverle
※Linuxはもちろんですが、Docker for Mac(M1 Mac含む), Docker for Windows で動作します。 Dockerの勉強をしたい方向け ハンズオン形式の記事を書いてるので、DockerでLaravel環境する方法を一から勉強したい人はこちらの記事がおすすめです。 【初心者向け】20分でLaravel開発環境を爆速構築するDockerハンズオン 概要 Docker, Docker Compose を使って、nginx, php-fpm, MySQLの実行環境(LEMP)を構築して、最強のLaravel開発環境を構築する記事です。 Laravelが最低限動作して、シンプルで軽量かつベストプラクティスなコンテナ、ディレクトリ構成を考えました。 最小限の構成なので、DockerイメージのビルドはLaradockより10倍以上高速にビルド完了します。 リポジトリ h
私たちは1年前に非常に野心的な目標を打ち立てました。それは、誰もがより快適にコードを書けるようにするフォントを作ることでした。 そしてついにその目標を達成しました! 他の等幅フォントの何が問題なのでしょうか? 私たち開発者は一日の大部分をコードを見て過ごします。 そのため、画面上のテキストを見やすくするために常に最適なフォントを探していても不思議ではありません。 しかし、多くの一般的なフォントのロジックでは、コードを読む場合と書籍を読む場合の違いが考慮されているとは限りません。 私たちの目はさまざまな方法でコードを追います。コードを横方向に読むのと同じくらい縦に読む必要があることもしばしばです。これは文章に沿って常に同じ方向に目を走らせる読書とは対照的なものです。 そのため、私たちはJetBrains Monoを作るにあたって、何よりもまず長時間コーディングを行う際に目の疲れを引き起こす可
PHPやSQLiteなどのサーバサイドを含むWordPressのバックエンドをWebAssembly化し、WordPressのフルスタックをWebブラウザ上で実行する「In-Browser WordPress」が、「WordPress Playground」で公開されています。 これは昨年(2022年)9月にWordPressのコア開発チームが開発中であることを明らかにし、今年1月頃にWordPress Playgroundで公開が始まった、サーバサイドを含むWordPressの試験的なフルスタック実装です。 参考:WordPressのコア開発チーム、WordPressをWebブラウザで実行する「Client-side WebAssembly WordPress」を開発中 「WordPress Playground」でアクセスすると、Webブラウザ上で「In-Browser WordPre
はじめに 皆様こんにちは。OPTiM新卒1年目エンジニアの青木です。 前回は早押しボタンなんかを作っていました。 tech-blog.optim.co.jp 今回は、PHP フレームワークの Laravel を、PostgreSQL と Vue.js と組み合わせて作成する TODO アプリを通して紹介します。 このフレームワークらはこちらの記事でも密かに利用しています。 tech-blog.optim.co.jp OPTiMではあまり利用されていませんが、一部のアプリケーションで実利用されている箇所もございます。 PHPは昔のイメージからかなり避けられていていますが...今のPHPとそのフレームワークはすごく発展していてとても使いやすいので是非使っていただきたい!という気持ちがあります。 ですが、現状はあまり利用していただけなくて個人的には悲しい気持ちでいっぱいです。 そんなPHPですが
TL;DR システム・ソフトウェア製品における品質特性の中でもコードの変更容易性に興味ある人は是非!興味ない人はまたの機会に 👋 「良いコード/悪いコードで学ぶ設計入門」をテーマに、PHP(Laravel)を使用して変更容易性を深掘りします 各トピックごとに「問題のあるコード」例と「改良されたコード」例を提供し、良い設計原則に従う方法を具体的に提示します とても学びのある本ですので、気になった方は是非購入を! はじめに コードは、単に機能を実現するための文字列の集まりではありません。それは、後のメンテナンス、拡張、および改修の基盤となり、製品の品質や開発チームの生産性に直接影響します。悪いコードは、後の段階での修正や追加が難しくなるだけでなく、バグの原因となることが多いです。さらに、新しいメンバーがそのコードを理解する時間が増加します。結果として、プロジェクトの総コストが上昇し、リリース
こんにちは! はじめまして! 2020年7月からPIECE事業部でエンジニアをさせてもらっています。 野澤です。 今回、PIECEというサービスのリニューアルを担当させてもらったのでその時のことについて書きたいと思います! まだ若輩者なので至らない点が多々あると思いますが フルリニューアルってどんな事したんだろう〜? Hajimariのエンジニアはどんな仕事をしてるんだろう〜? って思った人はぜひ読んで見てください! ※ドメイン駆動設計の説明も書いたのですがボリュームが多くなってしまいました… ドメイン駆動設計について概要知りたいという方は是非読んでみてください。 クリーンアーキテクチャの説明やモデリングのやり方などは説明していません。 ご了承ください。 PIECEリファクタリングプロジェクトの概要 PIECEとはどのようなサービスなのか リニューアルの目的 リニューアル施策 ドメイン駆動
これからLaravelを利用するのであれば、どのバージョンを使えばよいでしょうか? 現在(2020年9月時点)の状況であれば、6もしくは8のいずれかを選択することになります。どちらを選ぶかはアプリケーションの要件次第です。長期間安定したバージョンを利用したいのであれば6を、最新機能を利用していきたければ8を選ぶことになります。 この選択はさらに、セキュリティフィックス期限が切れた後にも影響します。例えば6を選択した場合、おそらく長期間利用することになるので、次にバージョンを上げる際は最新バージョンとの差異が大きくなり、アップグレードに手間がかかる可能性があります。 一方、8を選択して最新バージョンに適宜アップグレードしていけば、頻度は増えますが、都度の手間は小さくなります。ご自身やチームの開発状況や方針などを鑑みて、どちらを選ぶか検討してください。 なお、Laravelは6以降、セマンティ
3月24日、サイバーエージェントのエンジニア・クリエイターによる技術カンファレンス「CyberAgent Developer Conference2022」を開催しました。本記事では、「スマホゲーム業界におけるPHPの歴史とLaravel Octaneで広がるこれからのPHP」の様子をお届けします。 目次 ■サイバーエージェントグループのゲーム事業の歴史とPHP ■PHPで培ったもの ■多様化するゲームの要件とサイバーエージェントグループでの事例 ■PHPの変革「Swoole」「Laravel Octane」の登場 ■Laravel Octane Deep Dive ■まとめ ■サイバーエージェントグループのゲーム事業の歴史とPHP まずはサイバーエージェントグループのゲーム事業の歴史とPHPについて振り返ります。サイバーエージェントグループでは2009年からゲーム事業に参入しており、20
ストーリー PHPをインストールしたら必ず行う php.ini の設定ですが、 ネット上ではPHP5系の情報がたくさん出回っており、非推奨または削除された設定例が数多く困り果てていました。 良い感じにまとめてくれてるサイトが見つからなかったので、最強でベストプラクティスな php.ini 推奨設定を考えました。 異論は受け付けますので、ぜひコメントください。 参考設定 PHPでは、開発用と本番用の設定例を用意してくれています。 なんと素晴らしいことなんでしょうか。これをベースに設定します。 https://github.com/php/php-src/blob/master/php.ini-development https://github.com/php/php-src/blob/master/php.ini-production 予め以前の記事で設定の差分を調べておきましたので、よか
こんにちは。ニコニコ動画開発の多胡です。 今回は PHPerKaigi2023 向けの記事として、2021年に実施したニコニコ動画のコメントサーバーをお引越しした時のことを書いてみたいと思います。 文中の 5 つのフレーズをチャレンジトークンとしてみました。ぜひ探してみてください! (※ 記事の見出しにの横についている「#」はチャレンジトークンではありません。チャレンジトークンは文中に配置されています。紛らわしくてすみません!) 背景 実はニコニコ動画の #コメントサーバーを引っ越した のはこの時が二度目でした。 一度目は2014年から2016年にかけてのプロジェクトでファイルベースのシステムからの引っ越しでした。このファイルベースのシステムは、ニコニコ動画生誕当時から利用されており、当時のコメント参照や投稿にはすでに耐えられない状態になっていました。 そこで、このファイルベースのシステム
「TechFeed Conference 2022後夜祭」第5弾!今回からはプログラミング言語のLTが中心!Rust、Go言語、コンテナ技術、PHPに関するLT動画を8本公開です! こんにちは、TechFeed CEOの白石です。 2022年5月14日に開催された「エンジニアの祭典」TechFeed Conference 2022は、「日本を代表するテックエキスパート50名による大LT大会」という前代未聞の取り組みとして、大盛況のうちに幕を閉じました。 ですが、TechFeed Conferenceはまだまだ終わりません! 本イベントは、エキスパートの貴重な知見を一人でも多くの方々に届けるべく、企画当初から 「全セッション、永久保存版」 を掲げて、アーカイブ化にも全力を尽くすと誓っておりました。 本日より6/10までの間、「TechFeed Conference 2022後夜祭」を開催しま
名前、つけてますか? PHPにはnamespace(名前空間)という言語機能があります。 原初のPHPにはなかったのですが、PHP 5.3くらいからあるので、まあ平安時代には成立していたということです。それ以前の時代は App_Http_Controllers_User のような _ 区切りの擬似名前空間が用いられていたことがありました。現在では App\Http\Controllers\User のような \ 区切りの名前空間が利用できます。 名前空間付きのコード 名前空間が見慣れないという方のためにnamespaceのあるコードとしてLaravelで自動生成したControllerファイルの例を先に出しておきます。 <?php namespace App\Http\Controllers; use App\Models\Book; use App\Http\Requests\Store
JavaScript apps the monolith wayInertia is a new approach to building classic server-driven web apps. We call it the modern monolith. Inertia allows you to create fully client-side rendered, single-page apps, without the complexity that comes with modern SPAs. It does this by leveraging existing server-side patterns that you already love. Inertia has no client-side routing, nor does it require an
FrankenPHP 1.0には、Symphony、Laravel、WordPressなどのネイティブサポートが含まれるほか、Caddyを搭載したプロダクショングレードのPHPサーバであり、PHPアプリのスタンドアロンで実行可能なバイナリとしてのパッケージ化が可能となっている。 さらに、PHP-FPMとNgnixを個別に実行する必要がなく、1つのサービスのみでPHPサーバを提供できるようになるとともに、PHP 8.2以降のほとんどのPHP機能拡張、およびすべてのCaddyモジュールと互換性がある。 ほかにも、アプリケーション起動してメモリに保持するワーカーモード、JavaScriptイベントとしてWebブラウザへ送信されるリアルタイムイベント、ZstandardおよびGzip圧縮、構造化されたログ、Prometheusメトリクスを使用したCaddyの監視、HTTPS・HTTP/2・HTTP
まず、PHPerKaigiがチケット発売中です!! phperkaigi.jp そして、このエントリ最後になんと割引コードを置きました!!今すぐゲット!! さて phperkaigi.connpass.com 先日上記のイベントを開催しました。 当日の動画はこちらです www.youtube.com ここでまあ色々話そうとおもって色々書いていたのですが、イベントの質問が盛り上がりまして、私が言いたい所がバラバラになったので、ここにエントリとして供養…したためたいと思います。 本件、テックの話は一切ないので、PHPの技術的な話を聞きたい人は「PHPerKaigiのチケットを買ったか?」を確認していただければそれでOKです!ありがとうございました! 「プログラマになる」、あるいは「IT系になる」について さて、結論から書きますが、世間でいわれている「プログラマになる(なった)」という時点では、
Tech Dept. 基盤グループエンジニアの @tenkoma です。 BASEには50以上のPHPプロジェクトのプライベートリポジトリがあります。 (アプリケーションは十数個で、残りの多くが、アプリケーションが依存するライブラリです) 過去4年ほどの間に新規に作られたリポジトリにはほぼ最初からPHPStanが導入されていますが、それ以前から開発していたリポジトリには導入されていないものが多数ありました。 それらのリポジトリにPHPStanを導入していったので、なぜ導入したか、導入方法、得られた効果について紹介します。 PHPStanとは PHPコードを実行せずに、実行時にエラーになりうる箇所を検出するツールです。PHPStanを利用しCIに組み込むと、テスト実行せずに検出できるバグの一部は、PHPStan解析で指摘してくれるので、コードレビューの負担が減ることが期待できます。 なぜPH
攻撃者は、はじめに標的のECサイトの注文フォームに対し、不正なスクリプトを含んだ文字列を入力し、購入処理を行います(図1の①)。その結果、ECサイトの購入処理の部分にXSSの脆弱性が存在する場合、ECサイトの管理画面を閲覧した管理者は不正なスクリプトが実行され、クレデンシャル情報の窃取や、ECサイトへの簡素WebShellの設置などが行われます(図1の②~④)。その後、攻撃者によってECサイトにWebShellやユーザーの情報窃取を行うJavaScriptなどが設置されます。設置された“情報窃取JavaScript”によってECサイトを利用するユーザーのクレジットカード情報等を窃取され、“情報保存ファイル”としてECサイト内に保存されます(図1の⑤)。攻撃者は定期的なWebShellへのアクセスを行うことでこれらの情報を窃取していたと推測されます(図1の⑥)。 なお、攻撃者は、一連の攻撃の
安倍総理が病気を理由に突然辞任を表明した。政治家なら病院に通う姿を取材させることなど絶対にないが、事前にメディアに情報を流し、堂々と取材させていたことから、辞任しなければならなくなった時、病気を理由にするためだろうとは思っていた。しかしこれほど早く辞任するとは思わなかった。 なぜなら安倍総理はコロナ禍で東京五輪の開催が危ぶまれた今年3月、東京五輪組織委会長の森喜朗氏が「2年延期」を提案したのを断り、自分の任期中の「1年延期」で小池百合子東京都知事と手を組み、IOC(国際五輪委員会)のバッハ会長と合意した。 その時に安倍総理は「人類が新型コロナウイルス感染症に打ち勝った証として完全な形で東京大会を開催するためにバッハ会長と緊密に連携していくことで一致した。日本は開催国の責任をしっかりと果たしていきたい」と述べた。 安倍総理が「1年延期」を主導したのだから、まずは「コロナに打ち勝つ」ことに全力
最近自宅引きこもりで時間ができたので、YouTube動画を投稿するようになりました。みんな見てねー。 徳丸浩のウェブセキュリティ講座 そんなことで、次の動画は、お気に入りのPHPの脆弱性 CVE-2018-17082 を取り上げようと思ったんですよ。表向きXSSで出ているけど、金床さんのツッコミにもあるように、実はHTTP Request Smuggling(HRS)だというやつです。でね、下準備であらためて調べていると、なんかよく分からない挙動がワラワラと出てくる。なんじゃ、こりゃ。CVE-2018-17082 全然分からない。僕は気分で CVE-2018-17082 を扱っている… で、雑に整理すると、以下のような感じなんです。 古い環境だとCVE-2018-17082は発現しない(2015年以前) 少し古い環境だとCVE-2018-17082は発現する 新しい環境だとCVE-2018
MicrosoftはPHPの次期バージョン「PHP 8.0」をサポートしないそうだ。MicrosoftでPHP関連のプロジェクトマネージャを担当するDale Hirt氏は、公式サイト上でPHP 8.0以降では、PHP for Windowsをサポートする予定はないと明言した。 Microsoftが公式にサポートするPHPは現行でサポートしているPHP 7.2、PHP 7.3。PHP 7.4のみとなる。この中で最も新しいPHP 7.4のMicrosoftサポート期限は2022年11月28日までとなっている(Microsoft Support of PHP on Windows - Externals、窓の杜)。 なおKOYAMA Tetsujiさんのツイートによれば 、 これってバイナリ提供の話ではなくて、Windows版PHPは実はMSの公式サポートによって開発が支えられていたってことだよ
著者は現在、建設会社の総務経理、大学の非常勤講師、セミナー講師、時間管理コンサルタント、税理士と、5つの仕事をしているスーパーサラリーマンです。どうやればこんな人になれるのでしょうか? 【1.本書の紹介】 【2.本書のポイント】 【3.本書の感想】 【4.関連書籍の紹介】 【1.本書の紹介】 著者は元々、定時が23時になってしまうほど、そんなに出来の良い会社員ではありませんでした。(笑) しかし、このままではいけないと思い、時間管理や仕事の効率化の本を年100冊のペースで読み漁り、ビジネスセミナーにも月1回をノルマに参加しました。 そして、良いと思ったコンテンツやノウハウを書き留めて、実践し、習慣化していきました。 その習慣化した内容が、ここに書かれている方法です。 他の本でも言われていることも含まれています。 ただし、著者自身が生み出した方法もあり、時短の為にとにかく一生懸命やってきた事
https://fortee.jp/phperkaigi-2021/proposal/42ce8b07-6972-42bb-a2ac-96af7249cfa4 あるシステムを理解して開発を開始するとき、必要なのはInfrastructure as Codeを含むソースコードだけでは大抵の場合は不十分です。では挙動がわかるようなテストコードがあれば十分かというとそうでもありません。 いわゆる「オンボーディングの効果的な運用」「開発開始までのオーバヘッドの削減(PHPerKaigi2020で発表)」は継続的な生産性向上のためには考えなければならない要素です。 そして、上記を補完するためにしばしばドキュメントが書かれます。 私はドキュメント運用のアプローチとして「コードによる生成を含んだドキュメント運用」に興味を持っています。 私はこれを「Documentation as Code」と呼んでいま
意外なところに手を出してきたと思われるかもしれませんが、きっかけは WordPress & Gutenberg なんです。 2015年の Automattic社 Matt Mullenweg 氏の "Learn JavaScript, Deeply" という言葉。そして、バージョン5.4までたどり着いた現在の WordPress と、見え始めた Block Based Theme。 世間では WordPress=PHP という認識がまだまだ強いわけですが、とっくに、Gutenberg=JavaScript(React)なわけです。 すでに見えている未来を考えれば、WordPress=JavaScript と言われる時代もそう遠くはないのではとさえ思います。 なので、自分たちも JavaScript(React)をもっと身近なものにしておかなければと動き始めました。 入門者の通常ルート通り、
はじめに こんにちは。弁護士ドットコム UX エンジニアの白井です。社名にもなっている 弁護士ドットコム というサービスを運営する専門家プラットフォーム事業本部に所属し、普段は開発業務やユーザーリサーチに携わっています。 この記事では、デザイナーとエンジニアが日々の開発を行ううえで課題となっていた HTML テンプレートの実装方法について、どのようなプロセスを通じて改善していったのかについて詳しくご紹介します。 はじめに HTML テンプレートとは HTML テンプレートを扱う仕組み HTML テンプレート開発上の課題 なぜ HTML テンプレートが重要か (1) HTML マークアップの品質に悪影響がある (2) 開発効率への影響が大きい "Tech Focus Day" のテーマとして改善活動を開始 いきなりのピボット。そして本当に必要だったもの あらためて問題定義 HTMLテンプレー
去年末(2019/12)にオススメ書籍をまとめてみたことがあったので、それを少し更新して公開します。 上にある書籍がよりオススメというわけではないです。 対象者は「PHP中級者」です。中級者が何かは難しいですが、初心者、初級者では決してないとは言えます。 改めて一覧にしてみると、かなり偏っているかも知れません(笑 こういうのはコンテキストというのがあるため、それが合わないと「お前は何を薦めているのだ?」となるでしょうね。 キーワードは、「モデリング」「オブジェクト指向プログラミング」「TDD」「デザインパターン」「DDD」「チーム開発」「アジャイルソフトウェア開発」「スクラム」でしょうか。 PHP中級者のイメージ たぶん、PHP中級者であれば、PHPに関することはPHPマニュアルなどを調べて解決できるでしょう。PHPのオープンソースプロジェクトに貢献しており、自分でプロジェクトを持っている
プロダクト本部で副本部長をしています、田中(@tan_yuki)です。最近はたべっ子水族館をずっと食べています。 私の主な仕事はプロダクト開発組織に関する採用・ピープルマネジメントに関するところがメインなのですが、最近、中途採用の方針を少し変更しました。その変更内容について、社外にも発信していこうと思い、ブログを書きました。 以下の文章は社内で共有した文章に少し加筆修正を加えたものになります。 ~ * ~ * ~ * ~ * ~ * ~ * ~ Chatworkで使われているプログラミング言語といえば、どういったものを想像するでしょうか? 私達はいままで、Scalaという言語を強くアピールしてきました。その功績もあり、多くのScalaエンジニアの方々を採用することに成功しています。もちろん、今後もScalaとは長く付き合っていくつもりです。 しかし、最近エンジニア採用の優先度の調整をし、P
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く