カルキチのブログその他もろもろVimでLaravelを触ったらCOCがUndefined type 'Route'エラーを吐いたのでその対処法2020-06-20VimでLaravelを触ったらCOCがUndefined type 'Route'エラーを吐いたのでその対処法 普段Vimでコードを書くときに補完としてCOCを使っているのですが、業務でちょっとLaravelを触ることになってルーティングや割り当てられているコントローラーを確認するために、web.phpを確認したら、以下のような状態になりました。 引用:https://www.kakistamp.com/entry/2020/05/02/214610エラーが発生した時にスクショを取っていなかったため、引用させていただきました。。。 僕の場合はRouteやAuthなど、ファサードに対して軒並みエラーが表示されるという状態が発生しま
Laravel のバージョン 9.3 -- github から laravel/pint が標準インストールされるようになりました。 laravel/pint は PHP-CS-Fixer を Laravel 用にカスタマイズした物です。これを導入すれば、わざわざ .php-cs-fixer.dist.php を書かなくても、Laravel の書き方になるように fixer が動きます。やったね。 See : https://laravel.com/docs/9.x/pint ただ内部で動くのは PHP-CS-Fixer なので、PHP のソースコードをごっそり書き換えます。テストがない怖いプロジェクトではちょっと怖いかも。 導入 PHP が 8.0.2 以上の環境であれば、Laravel のバージョンを問わずに導入できます。 使い方 ./vendor/bin/pint を動かしたら PH
PHPでFIDO2(WebAuthn)認証を実装してみた Yahoo Japan!のログインなどにも実装されだいぶ、目にする機会が増えたのでこの機会に実装してみました。 FIDO2認証とは FIDO2認証とは、FIDOアライアンスが提供するパスワードレス認証の仕組みで、より安全な多要素認証を実現できます。 どんなものかは、Android7.0以上の端末で、Google Chromeを最新にして、Yahoo Japan!でログインするとわかると思います。アクセスすると、「指紋、顔認証などでログイン」と表示され、一度登録すると、次回以降は、パスワードの代わりに指紋や顔認証でログインすることができるようになります。 簡単に言うと、WEBサイトでも指紋認証 ができるようになりました。 さらに、良いのは指紋や顔の情報をWEB管理者が管理する必要はありません。その辺の詳しい仕組みは下記を見てください。
みなさん正規表現は好きですか? 私は好きです。簡単に脆弱性を作り込めて、とても便利ですからね。 この記事ではPCRE関数(preg_match(), preg_replace()など)を利用して、みなさまにPHP正規表現のバッドノウハウを教示いたします。 先に結論を書きます 単独の文字列のマッチに $ を用いるのは予期しないパターンになるのでやめましょう。^は特に危険ではありませんが、^と$の組み合せではなく**\Aと\zの組み合せ**を覚えましょう。ただし、m修飾子で複数行(マルチラインモード)で、行頭と行末にマッチさせたい場合を除きます。 文字列のマッチに ^ と $ のペアを利用する そうですね、例としてQiitaのようなユーザー登録サイトの表示名 @tadsan のような文字列を登録する前の検査をするとします。 要件としては、使用可能な文字は abcdefghijklmnopqrs
こんにちは。カヤックボンドの駒田です。 この記事は 面白法人グループ Advent Calendar 2022 の2日目を予定していた記事でした。 今年ももう終わりですね。 さて、何について書こうか悩みましたが… 過去にPHP Laravel x Spanner の組み合わせで苦労したことを書いてみようと思います。 1.Spannerとは Cloud Spanner は、フルマネージドのミッション クリティカルなリレーショナル データベース サービスです。グローバルなトランザクション整合性、高可用性のための自動の同期レプリケーション、2 つの SQL 言語(Google 標準 SQL(拡張機能を含む ANSI 2011)と PostgreSQL)が含まれています。 Cloud Spanner ドキュメント | Google Cloudより Google Cloud の Spanner
PHP 8.1へのアップグレードにまつわるまとめ PHP 8.1へのアップグレードには、mbstringにまつわるマニュアルに記述されない後方互換性のない変更が含まれることがあります。そのことを周知するべく、この記事を書くことにしました。 私てきめんは、PHPカンファレンス 2022にて、「治っていくmbstring 令和時代の文字化け」というタイトルでトークしています。以下スライドも参考にしてください。 Major overhaul of mbstringについて PHP 8.1から、Major overhaul of mbstringと呼ばれる、mbstringの大規模改修の内容が反映されるようになりました。困ったことに、RFC(Request For Comments)やChangelog、マニュアルにない内容で、mbstringを多用するPHPユーザーにとてつもない困惑をもたらすこ
(2020/6/4追記: AtCoderのPHPのバージョンが7.4.4に更新されたので、サンプルコードに型をつけるなどGitHubで公開しているコード同様にアップデートしました) tl;dt プログラミングコンテストで時間オーバーとなり、解けそうな問題に回答ができなかった コードを実行して結果を確認するプロセスを効率化すれば、ロジックの考察により多くの時間を割くことができる そもそも競技プログラミングでは、所与の入出力を満たすロジックの記述に専念すれば良い ロジックをデバッグするためなら、テストツール(PHPUnit)とデバッガ(Xdebug)を手軽に使える環境があれば良い AtCoderのコンテストは時間との戦い AtCoderが開催している競技プログラミングのコンテストに参加しています。 コンテスト本番と過去問での練習は、アルゴリズムを使って問題を解く点では同じです。 両者の違いは、
「Dockerfileをスラスラ書けるようになるにはどうすればいいか?」 自分の答えは、公式のDockerfileを読み解くことだと思う。公式のリポジトリには、DockerやLinuxに精通した人達の知恵が詰まっており、知らなかったことを多く知れる。 ということで今回は、php:7.3-apache-stretch という「Apache上でPHP7.3を動かす環境」が入ったDockerイメージのDockerfileを読解していく。 GitHubはここにある。php/7.3/stretch/apache · docker-library/php · GitHub ベースイメージの指定(debian:stretch-slim) Dockerfileは全てFROMから始まり、ベースのイメージを設定する。ここではベースイメージにDebian v9(stretch)を使用している。 Linuxディス
PHPStanはPHPの静的解析ツールです。現代のPHPerはみんな使ってるよ。 ……ところで、みなさんはPHPStanをどうやってインストールしているのでしょうか。 PHPStan開発者のOndřej Mirtesは次のように述べています。 多くの場合において、Ondřejの言う通りcomposer require --devが最善のインストール方法です。 この記事では、なぜそれが推奨のインストール方法だと言えるのか、どのような場合に別の選択肢が候補に挙がるのかを解説します。 あと、この記事はPHPカンファレンス沖縄2022でPHPStanの使い方を説明するのにインストール方法まで説明する時間がとれないので書きました。 あらかじめ知っておきたいこと 事前知識: PHPStanパッケージの構造 PHPStanのリポジトリはGitHubでは以下の2リポジトリに分かれています。 https:/
はじめに この記事は、PHP Advent Calender 2019 の17日目の記事です。 みなさん、Trait使っていますか? 社内でTraitの使い所がいまいち分からないんだよね〜という話が出ていたので、Traitの使われかたを分類し、Laravelの実際のコードを例として理解を深めていけたらと思います。 Traitとは そもそもTraitってどんな機能でしょうか? PHP 5.4.0 以降では、コードを再利用するための「トレイト」という仕組みが導入されました。 トレイトは、PHP のような単一継承言語でコードを再利用するための仕組みのひとつです。 トレイトは、単一継承の制約を減らすために作られたもので、 いくつかのメソッド群を異なるクラス階層にある独立したクラスで再利用できるようにします。 トレイトとクラスを組み合わせた構文は複雑さを軽減させてくれ、 多重継承や Mixin に関
DynamoDBでは新規アイテム1の作成はputItemで行います。DynamoDBの各アイテムは必ずユニークになるプライマリキー2(以下単にキーと表記)を持っている必要があり、アイテム作成時も必ずキーの指定が必要です。アイテム作成時に既存のアイテムとキーが衝突したときに、RDBの感覚だと一意性制約でエラーになるのを期待しますが、DynamoDBではなんと!上書きしてしまいます。RDBに親しんだ脳みそだと、それじゃ困るでしょ、ありえないでしょ、と考えますよね。もちろん上書き禁止の方法は用意されていて、ConditionExpressionというオプションを使うことで実現できます。キー重複以外にも様々な条件が指定できます。 ConditionExpressionについての公式ドキュメント http://docs.aws.amazon.com/ja_jp/amazondynamodb/late
(Last Updated On: 2022年9月18日) 今のlibxmlは意図しないエンティティ変換により意図しない情報漏洩などを防ぐ為にエンティティ変換をしない仕様になっています。libxml関数にLIBXML_NOENT(エンティティ変換を行わせる為のフラグ)を渡して処理しないとエンティティ変換が行われません。しかし、例外があります。 XXE(XML eXternal Entity)攻撃 XXE攻撃はエンティティ( < などです)を変換する機能を使った攻撃です。 エンティティ変換をするとローカルファイルの読み取りも可能になります。 <?php $xml = '<!DOCTYPE root [<!ENTITY c PUBLIC "bar" "/etc/passwd">]> <test>&c;</test>'; $dom = new DOMDocument(); $dom->lo
この記事はPHPStan開発者のOndřej Mirtesによって2022年4月26日にPHPStan Blogに書かれた記事を翻訳したものです。 phpstan.org 条件付き戻り値型 (Conditional return types) この機能の大部分はRichard van Velzenが開発しました。 PHPStanは初リリース以来、関数呼び出しで渡された引数によって様々な型を返す方法を提供してきました。いわゆる動的戻り値型拡張(dynamic return type extensions)は非常に柔軟です。実装できる任意のロジックによって型を解決できます。しかし、PHPStan拡張の核心となるコンセプトには学習コストがかかります。 PHPStan 0.12ではジェネリクスが導入されました。これはPHPDocの特別な記法によって動的戻り値型拡張が必要だったケースの一部をカバーし
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く