Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

はじめに PHPUnitにはコードカバレッジ解析の機能があります。 このカバレッジの出力には、かなり時間がかかります。 チームメンバーからCIのテストが遅いので何とかしてほしいと、issuesがあがってきたので、スピード改善できないか検討し、最終的には並列実行することで、大幅に改善することができましたので、紹介します。 コードカバレッジの出力 カバレッジを出力するには、phpunitコマンド実行時のオプションに--coverage-*を指定します。 phpunitのヘルプに詳しい説明があります。 $ bin/phpunit --help PHPUnit 4.8.6 by Sebastian Bergmann and contributors. Usage: phpunit [options] UnitTest [UnitTest.php] phpunit [options] <direct
きっかけ 普段はPHPで開発をしているのですが、以前から機械学習に興味がありPythonの勉強をしてみたりしていました。 機械学習・AI=Pythonという考えがあったのですが、ふとPHPで機械学習のライブラリがあるということを聞き使って見ることにしました。 ライブラリのインストール PHP-MLというライブラリを使います。 PHP-ML - Machine Learning library for PHP composerでインストールします。 // 学習データ120,テストデータ30(8:2) // 学習させるためのデータと学習させた物のテストをするためのデータに分ける const LERNING_NUM = 120; const TEST_NUM = 30; // データ取得 $dataset = new IrisDataset(); $samples = $dataset->get
Blade Componentsとは データの受け渡し、Viewの表示などでControllerが肥大化してしまうのを防ぐためにある仕組み。 コンポーネントの機能を使うと、新しくコンポーネントクラスやBladeコンポーネントクラスを作って、機能を分け、そこにデータの受け渡しなどを任せることで、Controllerはreturn viewするだけで良くなり、負担が軽くなる。 またコンポーネント側を修正するとそのコンポーネントを使っているファイル全てに修正が反映されるのが便利。 Bladeの種類と違い Blade Componentsを使わない場合(従来のBlade) Blade Componentsを利用しない場合は、@extend, @yield, @sectionといったディレクティブを使ってレイアウトを作成する。resources¥viewsの下にlayoutsフォルダを作成しapp.
#0 242.0 creating bcmath.la #0 242.0 (cd .libs && rm -f bcmath.la && ln -s ../bcmath.la bcmath.la) #0 242.0 /bin/bash /usr/src/php/ext/bcmath/libtool --mode=install cp ./bcmath.la /usr/src/php/ext/bcmath/modules #0 242.1 cp ./.libs/bcmath.so /usr/src/php/ext/bcmath/modules/bcmath.so #0 242.1 cp ./.libs/bcmath.lai /usr/src/php/ext/bcmath/modules/bcmath.la #0 242.2 PATH="$PATH:/sbin" ldconfig -n /us
環境 OS: Windows 10 PHP: 8.1.2 Laravel Framework: 8.81.0 docker-compose: 1.29.2 PHPUnit: 9.5.10 MySQL: 8.0 Laravel Sailを使用して、Laravelプロジェクトを立ち上げています。 プロジェクトを立ち上げる部分は、こちらのドキュメントでご確認ください。 RefreshDatabase DBの状態に影響されずテストする use RefreshDatabase;をしてあげると、 テストを実行する際に前後のDBの状態を考える必要がなくなります。 各テスト毎にDBをリフレッシュするため、まっさらな状態にしてくれるので、 DBの状態を確認するアサーションである $this->assertDatabaseCount(...); $this->assertDatabaseHas(...); $
はじめに 筆者、テストというものの存在は上司から教わり、書き方も自分で調べながら、さぐりさぐりで書いてみたので、 この記事の書き方や説明が必ず正しいという保証はできない。 自分の備忘録的なものも兼ねての記事なので、参考程度に見て頂きたい。 テストとは何か 簡単に言えば、 このアプリ、本当にイメージした通りに動いてるのか? っていうのを、確認してくれるもの。 どういうことかと言うと、 ここでの表示はこれだ! ここではこの処理をして、こういう結果が帰ってくるんだ! というのを、あらかじめすべての処理について、テストに書いておく。 そうすることで、なにか不具合があっても、 「ここの表示、君のイメージと違うみたいだよ」 「ここの処理、君の思うようには動いてないよ」 という感じで、テスト君が教えてくれるということだ。 なぜテストを書くのか 例えば、複数人でなんかの開発をしてて、 「やったーー!!完成
はじめに LaravelでPHPUnitを使用する際に、テスト用のDB(MySQL)を 使用する方法について学んだことを備忘録として残します。 テスト用DBを使用することで、テスト時のRefreshDatabaseなどで 開発用DBの必要なデータも含め削除されてしまう、といったことを防ぎ 別環境のDBに影響を与えずテストを行うことができます。 環境 PHP 8.2.7 Laravel 10.22.0 PHPUnit 10.3.3 設定手順 database.phpへの設定 まず、Laravelのdatabase.phpのconnectionsにテスト用DBの設定を追加します。 'connections' => [ ... // テスト用 'mysql_test' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' =
よく見たら不自然なんだけどこれまで普通に許されていた、この引数デフォルト値がついに禁止されます。 何がおかしいって型がintなのに引数を渡さないと$xがnullになるので矛盾してしまうわけですね。 これはPHPが昔からの仕様を残しておいたためであり、いわゆる歴史的経緯というやつです。 以下は該当のRFC、Deprecate implicitly nullable parameter typesの日本語訳です。 PHP RFC: Deprecate implicitly nullable parameter types Introduction PHP7.1で?T構文、さらにPHP8.0でUnion型がサポートされたことにより、PHPはnull許容値型を正しく書くことができます。 歴史的にはPHP5.0でオブジェクト型、PHP5.1でarray、PHP5.4でcallable、PHP7.0で
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 背景 ファイルシステムに画像をアップロードする処理を実装してHerokuにアップロードしたところ、Herokuは1日1度のDynoの再起動に伴いアップロードしたファイルを全消去するという仕様があることが判明。 それはアカン!ということで画像アップロード先をAWSのS3に変更しようとしたところHerokuにドキュメントがあったので参考にしたけど何一つうまくいかなかった(多分事前の設定とか必要だったけどそこら辺は省かれていた)ので色々調べて実装した内容をシェアします。 事前にS3側で必要な設定〜実装までの流れを出来るだけ省かずに記載するので
はじめに 以下記事の【phpunitを少し使ってみる】までは行っている前提で話します。 最終的表示までのものgithubにあげているのでもしよかったら見てください。 どこに何を書けばいいかもここのファイル等見てもらった方が早いかもです。 最終的な見た目は以下のような感じです。 上記の【phpunitさわるまで】以降にすること箇条書き ※HTMLでコードカバレッジを表示するのに必要な設定 【step1】 tokenizer(拡張モジュール)追加 【step2】 Xdebug(拡張モジュール)追加 【step3】 php.iniの設定、反映(Xdebug(拡張モジュール)有効化) 【step4】 phpunit.xml(コードカバレッジ出力のための設定ファイル的なもの)の作成 【step5】 メソッドの修正 【step6】 最後に出力コマンド 【step1】 tokenizer(拡張モジュール
Q. なぜ? A. ドキュメントにそう書いてある。 The command should not be run during local development as configuration options will frequently need to be changed during the course of your application's development. (意訳)アプリケーションの開発中には設定を頻繁に変更する必要があるので、ローカル開発環境ではこのコマンドは実行するべきではありません。 Q. そう書いてある、では納得できない! A. 一度php artisan config:cacheを実行すると、それ以降(キャッシュを消去しない限り)configディレクトリ配下の設定ファイルを修正するたびにphp artisan config:cacheを実行しなければ設
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? PHPは長きにわたり同期的、すなわち、あらゆる処理を上から順に実行していくというスタイルを取ってきました。 しかしたとえば、複数のURLからデータを取ってきて結果をまとめたいといった場合、時間のかかるHTTPリクエストは同時に投げたいですよね。 この用途にはGuzzleというライブラリが存在し、これを使えば同時にリクエストを投げられます。 しかし、ではHTTPアクセスとDBアクセスを同時にやりたい場合は? 時間のかかる計算を裏でやりたい場合は? などと考え始めると、こういった個別のライブラリでは対処しきれません。 ということで汎用的な非
../ PHPのAPCuというライブラリを利用してみた。標準のPHPには同梱されていないので、ダウンロードしてDLLを追加した。APCuは「APC User Cache」の略である。APCは「Alternative PHP Cache」の略である。(ちなみに、PHPは「PHP Hypertext Preprocessor」の略である。再帰的な略になっている。GNUの「GNU's Not Unix!」を真似たのかな。) JavaとTomcatでは、高速化のため、またDBやファイルへのアクセス負荷を軽減するために、メモリ上にキャッシュを作成して利用することがたびたびある。探索時にはメモリ上のキャッシュから探し、なければDBやファイルから検索したり、読み込んだりする。PHPでは、ブラウザで画面が遷移するごと(redirectするごと)に新たなプロセスが生成されるので、メモリ上に生成したオブジェク
この関数の返り値の型は何にすればいいでしょうか。 null? void? nullはnullという型ですし、voidは『値を返さない』であって『呼び出し元に返らない』ではありません。 ということで『呼び出し元に返らない』を明記できる型が提案されました。 返らないのに返り値とは。 PHP8.1以降ではこう書けるようになります。 以下は該当のRFC、PHP RFC: noreturn typeの日本語訳です。 PHP RFC: noreturn type Introduction ここ数年の傾向として、元々はPHP docで表現されていた型がPHPネイティブになっていくということがあります。 過去の例としてはスカラー型、返り値の型、UNION型、mixed型、static型などです。 現在、PHPの静的解析ツールは、常に例外を発したり常にexitしたりする関数を示すために、@return no
はじめに Windows上に最新版のPHPをインストールして使い始めるまでに必要な最低現の手順を、備忘録としてメモしてみました。 このドキュメントはローカル開発環境の構築をターゲットにしていて、Webサーバ環境は目的としていませんのでご注意ください。 事前準備 再頒布可能パッケージのインストール PHPバイナリの実行に「Visual Studio 2015 の Visual C++ 再頒布可能パッケージ」が必要な為、以下よりダウンロード・インストールしておく。 https://www.microsoft.com/ja-jp/download/details.aspx?id=48145 インストール手順 PHPのインストール 以下の手順でPHP For Windowsをインストールする。 PHP For Window をダウンロードする http://windows.php.net/down
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く