- 1. はじめに
- 2. 公式
- 2.6. Laravel9で作成したアプリをAWSにデプロイする
- 2.7. 【PHP8.x】非対称な可視性を導入したい
- 2.8. cron(クロン)実行先でcron(クロン)一元管理?
- 2.9. Python,Ruby,PHP,Java,JavaScript,Perlのライブラリ作成方法の比較
- 2.10. Laravel 9 + VITEの開発環境をdockerで実現する方法
- 2.11. Laravel Sailをdevcontainerで動かすときは下準備が必要
- 2.12. Laravelテストのメモ
- 2.13. 【Laravel】Carbonを使ってみた
- 2.14. UMLを使ってクラス図を書く方法
- 2.15. 【Docker初歩の初歩】DockerでApache+PHP+MySQLなLAMP環境構築をする(ついでに簡単な掲示板を作って動かす)
- 2.16. コードを変更したのにブラウザに反映されない場合の対処法【Chrome】
- 2.17. CakePHP4のComponent設定方法
- 2.18. supervisor docker構築 使用方法
- 2.19. 【Laravel】ビューコンポーザとは
- 2.20. Python,Ruby,PHP,Java,JavaScript,Perlのビット演算の比較
PHP sprintf関数の意味・動作
なかなか使う機会がなく知らなかったのでメモ。
### PHPマニュアル
[sprintf](https://www.php.net/manual/ja/function.sprintf.php)
## 説明:
“`jsx
sprintf(string $format, mixed …$values): string
“`フォーマット文字列 **`format`** に基づき生成された文字列を返します。
## 例
“`php
$example .= sprintf(““, “hoge”, $fuga, $foo, $baz, $boo, $bar);
“`**自分なりの理解**
$fromatの中身の%の数分$valuesを渡す。
n番目の%に置換される文字列が$valuesのn番目のあたる引数。%sみたいなのは指定子でsの場合は引数を文字列で扱う。
%sの場合は引数を文字列として置換する。
Python,Ruby,PHP,Java,JavaScript,Perlの自動試験(ユニットテスト)の比較
Python,Ruby,PHP,Java,JavaScript,Perlの自動試験(ユニットテスト)の比較
# Python
https://qiita.com/_dakc_/items/e663359c81645bc4e65e
# Ruby
https://qiita.com/jnchito/items/ff4f7a23addbd8dbc460
# PHP
https://qiita.com/yamato1491038/items/7aa0168a6145749db78c
# Java
https://qiita.com/ryuutamaehara/items/c8efb304b73cc0542e6f
# JavaScript
https://qiita.com/jintz/items/61af86a12b53b24ef121
# Perl
https://perlzemi.
【PHP】AtCoder Beginners Selectionを解いてみた
## はじめに
[AtCoder Beginners Selection](https://atcoder.jp/contests/abs) をPHPで解いてみました。PHPでAtCoderを始めてみたいという方のご参考になれば幸いです。
標準入力・標準出力とテンプレートについては以下の記事で解説しています。ソースコードはすべてこのテンプレートを使用して作成していますのでご了承ください。
https://qiita.com/noko206/items/800649132ff050635ff0
## [第1問:ABC086A – Product](https://atcoder.jp/contests/abs/tasks/abc086_a)
### 問題
二つの正整数 $a,b$ があります。$a$ と $b$ の積が偶数なら `Even` 、奇数なら `Odd` を出力してください。
* $1 \le a,b \le 10000$
* 入力はすべて整数### 解法
ある整数が「偶数である」とは「 $2$ の倍数である」と言い換えることができます。よって、$a$ と
【PHP】標準入力・標準出力を楽に記述するための工夫【AtCoder】
## はじめに
PHPでAtCoderを解いていると標準入力の受け取りが大変面倒に感じます。しかし、工夫次第で快適に標準入力を受け取れるようになりますので、そのための方法をまとめていきます。(ついでに標準出力も少しだけ工夫します。)
## 問題
### [PracticeA – Welcome to AtCoder](https://atcoder.jp/contests/abs/tasks/practice_1)
整数 $a,b,c$ と、文字列 $s$ が与えられます。
$a+b+c$ の計算結果と、文字列 $s$ を並べて表示してください。* $1 \le a,b,c \le 1000$
* $1 \le |s| \le 100$## 標準入力
標準入力は `fgets` 関数で取得します。
“`PHP
PHPでコードゴルフ
はじめに
コードゴルフって面白いですね。
あれこれ考えていると普段見かけないソースが生まれたりして新鮮な気持ちになれました。
日頃PHPを書かない人もいると思いますので、敷居が下がればと思い使いそうなものをざっくりまとめておきます。
(比較に関することは例によって闇が深い書いていないため、公式ページを参照してください)公式
すべてここに書いてあります
https://www.php.net/manual/ja/langref.php変数宣言
“`php
// 変数名は必ず$をつけます。
$hoge = ‘1’;// 数字から始まる以下のような変数名は無効です。
$1 = ‘1’;
$1_hoge = ’11’;// 大文字小文字違いは別の変数として扱われます。
$hoge = ‘あ’;
$HOGE = ‘い’;
echo $hoge;// あ
echo
Laravel9で作成したアプリをAWSにデプロイする
# 前書き
今回は、作成したポートフォリオをAWS上に作成した本番環境にデプロイしてみました。# 環境
https://qiita.com/ucan-lab/items/56c9dc3cf2e6762672f4
上記記事に準じて環境構築を行っています、
また、VPC・EC2インスタンス・RDSの作成については省略します。
# 実現したいこと
・AWS上にデプロイし、作成したアプリを公開# 対応方法
## ①EC2インスタンスに各種インストール
○各種アップデート
“`
sudo yum update -y
“`○webサーバーインストール→今回はnginx
“`
sudo amazon-linux-extras enable nginx1
sudo yum install nginx -y
“`○phpインストール
→php8.1のインストールにはamazon-linux-extrasコマンドが使用不可
→eoel(Extra Packages for Enterprise Linux)を使用して導入する
“`
# php8.1と関連するモジュ
【PHP8.x】非対称な可視性を導入したい
Swiftでは読み込みと書き込みで[異なる可視性を設定することができます](https://qiita.com/codelynx/items/43e1c4f176730d952d13)。
“`swift
private (set) public var count: Int = 0 // 読み込みはpublic、書き込みはprivate
“`そんなわけで節操のないPHPは、この機能もPHPに取り込もうと企んでいます。
以下は該当のRFC、[Asymmetric Visibility](https://wiki.php.net/rfc/asymmetric-visibility)の紹介です。# Asymmetric Visibility
## Introduction
PHPには、前からプロパティの可視性を制御する機能があります。
しかし、その機能はgetとset両方に対して常に同じです。本RFCでは、プロパティの読み取り操作と書き込み操作に対して異なる可視性を与えることを提案します。
具体的にはほぼSwiftから拝借しています。## Proposal
プロ
cron(クロン)実行先でcron(クロン)一元管理?
# cron(クロン)先でcron(クロン)一元管理
https://github.com/taoka-toshiaki/cron-php
### 制作経緯
– レンタルサーバー等のcronの制約を打破したいなと思った事があり制作に至る。
尚、レンタルサーバーでは負荷がある処理はお断りしている場合があるので規約に沿って使用ください。
# 使用方法
– cron.jsonに処理を行い日時、実行コマンドを明記する。
– class_cron.phpに一分間隔で呼び出すようにcronに登録する。
– class_cron.phpを呼び出す際は参照するjsonファイルのパラメーターを渡す事。
– cron.jsonの週の項目は日曜日から始まり、フラグが1の時に起動する。
– cron.jsonの週以外の項目の設定はcrontabの入力方法と同じ関係にあります。“`php:class_cron.php
Python,Ruby,PHP,Java,JavaScript,Perlのライブラリ作成方法の比較
Python,Ruby,PHP,Java,JavaScript,Perlのライブラリ作成方法の比較
# Python
https://qiita.com/mofumoffy223/items/a461efba5c80acafdbf0
# Ruby
https://qiita.com/suketa/items/ab6b88093de4a54b3b06
# PHP
https://qiita.com/nuuuuume/items/fd2e0d69fb5430c26bd0
# Java
https://qiita.com/haruto167/items/162551100449ea5c7e6d
# JavaScript
https://www.sejuku.net/blog/65313
# Perl
https://perlzemi.com/blog/20161130148051.h
Laravel 9 + VITEの開発環境をdockerで実現する方法
Laravel 9でLaravel Mixの代わりに新しく導入されたViteを使えるLaravel開発環境を、docker上に実現する方法を紹介します。
# ゴール
– WindowsやMac上に、dockerを使ったLaravel 9開発環境を作る。
– Laravel MixではなくViteを使う
– サーバーはnginx, php, mysqlを別にする。
– Viteの利点であるページリロード無しでのCSS/JS更新を実現する。## ところでViteの発音は?
Viteは「ヴィート」と発音します。フランス語だそうです。アメリカ人なら「ヴァイト」と読みそうですが、アメリカ人も「ヴィート」と読んでます。
## ところでLaravel Mixではだめなのか?
Laravel 9の途中から、フロントエンド・ビルド・ツールとして長年標準だったLaravel Mixが非標準となりViteが標準となりました。
現時点では[Laravel 9公式でMixもサポート](https://laravel.com/docs/9.x/mix)しています。したがって、現時点でMixを使うこと
Laravel Sailをdevcontainerで動かすときは下準備が必要
サンプルはこちら。
https://github.com/tsubakimoto/1009laravel
—
Laravel Sail とは、Laravel の開発環境をコンテナーでセットアップするためのツールです。
https://readouble.com/laravel/9.x/ja/sail.html
コンテナーで動作するということは、devcontainer で動かしたくなるものです。
Laravel Sail には devcontainer.json や docker-compose.yml を準備するコマンドも用意されています。https://readouble.com/laravel/9.x/ja/sail.html#using-devcontainers
### .devcontainer/devcontainer.json
“`json
// https://aka.ms/devcontainer.json
{
“name”: “Existing Docker Compose (Extend)”,
“dockerComposeFile
Laravelテストのメモ
Laravel+PHPUnitのテストについてのメモ。
なお、Laravel5系をベースにしたプログラムなので一部いまと違うかも。。
# 基本的な形
“`php
states(‘active’)->create([
‘last_login_at’ => Carbon::yesterday()
]);$response = $this->actingAs($user)
->json(‘get’, route(‘users.me.get’));$response->as
【Laravel】Carbonを使ってみた
# はじめに
携わっている案件で、ユーザーがクーポンを使用する際にそのクーポンが有効期限内であるかどうかを確認する際にCarbonを使ったため、個人の備忘録として記事にしてみました。# 今回の状況
“` php
use Carbon\Carbon;public function createFromRequest(BaseRequest $request)
{
$requestData = $request->fillData();// 有効期間の終了日
$requestData[‘end_date_of_expiry’] = ‘2022-09-30’;$endDateOfExpiry = new Carbon($requestData[‘end_date_of_expiry’]);
// 出力内容 $endDateOfExpiry = 2022-09-30 00:00:00;
}
“`
上記の様に リクエストデータが日付のみのため、変数$endDateOfExpiryの時間は、00:00:00になってしまいます。
UMLを使ってクラス図を書く方法
## 目次
– 概要
– そもそもUMLって何?
– UMLでクラス図を書いてみる
– 最後に## 概要
最近一気に寒くなってきてまだ衣替えしていなく、半袖半ズボンで寝てるので三連休で衣替えしようと思います?さて今回のスキルアップのための不定期30分インプット・アウトプット投稿第三段は、「UMLを使ってクラス図を書く方法」ついてやっていこうと思います!
第二弾は、[Dockerを使ってPHPを実行する方法](https://qiita.com/kitamurakunihiko/items/bf2e9998efceff115a0f)について投稿したのでよければ確認してみてください。
## そもそもUMLって何?
wikiだと下記のような定義らしいです。
>ソフトウェア工学で用いられる、汎用的かつ開発方面に特化させたモデリング言語である。
システム設計を視覚的に図式化しての標準化されたモデリング手法の提供を目的にしている。
UML(Unified Modeling Language)の略語で呼ばれることが多い。オブジェクト指向分野でよく用いられている。ということで噛み砕く
【Docker初歩の初歩】DockerでApache+PHP+MySQLなLAMP環境構築をする(ついでに簡単な掲示板を作って動かす)
# 概要
Dockerを使ってApache+PHP+MySQLな環境構築を行う。ついでにphpMyAdminも使えるようにする。動作確認で簡単な掲示板を作る。対象はDockerって何?触ったことないよ?くらいの人。# 前提
以下のものがインストールされている必要があります
– Git
– https://git-scm.com/
– Docker
– https://matsuand.github.io/docs.docker.jp.onthefly/get-docker/
– 私はWindows+WSL2な環境なので、Docker Desktop for Windowsを利用しています。# まずはこいつを見てくれ
https://github.com/miya-38-a/docker-apache-php-mysqlこのリポジトリをクローンして、リポジトリのルートディレクトリ配下で以下を叩いてください。
“`
$ docker-compose up
“`するとなにやら英語がたくさん出てきます(アホみたいな感想)。
初回は結構時間がかかるので
コードを変更したのにブラウザに反映されない場合の対処法【Chrome】
# キャッシュが問題かも
## 方法1
Ctrl + Shift + R を押してハードリロードしてみてください。
キャッシュがクリアされます。
## 方法2
F12またはCtrl Shift Iでデペロッパーツールを開き、アドレスバー横の再読み込みのボタンを右クリック、キャッシュの消去とハード再読み込みを実行してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700063/fa47433b-4116-e1b8-31e8-889c6d2684ea.png)
# 直らない場合
設定→プライバシーとセキュリティ→閲覧履歴データの削除
「キャッシュされた画像とファイル」だけを選択し、全期間で削除してみてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700063/88d8b23e-67ea-a99a-5f4e-c0d3572d244c.png)
CakePHP4のComponent設定方法
# コンポーネントとは
コンポーネントはコントローラー間で共有される処理をまとめたもの。
[コンポーネント – 4.x](https://book.cakephp.org/4/ja/controllers/components.html)# 設定方法
Cookbookでは2つの設定方法が記載されている。
1つ目はコントローラーの initialize() メソッド内で loadComponent() を使用する方法
2つ目は$components 配列を使用する方法CakePHP3までは上記2つの方法で設定できたが、CakePHP4からは2つ目の方法で設定できなくなった。
原因はCakePHP4のController.phpが仕様変更により、$components プロパティが削除されたためである。
[CakePHP3 – Controller.php](https://github.com/cakephp/cakephp/blob/3.x/src/Controller/Controller.php)
[CakePHP4 – Controller.php](https://gi
supervisor docker構築 使用方法
# Supervisor構築
## 今回のインフラ構成
### Dockerのコンテナ
– Laravel(phpコンテナ)
– Nginx
– dbサーバ(mysql)## suervisor導入理由
laravelにはデフォルトで以下のコマンドが存在するが落ちる可能性が高く落ちたときにjobバッチが実行されない危険性があったのでsupervisorを導入してlinux上で監視させ落ちたときに自動で再起動させるように設定
“`
php artisan queue:work
“`### 実装方法
まずsupervisorを導入したいコンテナのdockerFileにsupervisorインストールさせるコマンドを追記する
今回はphpコンテナを監視させたいのでphpのdockerFileに以下を追記する
“`
RUN apt-get update supervisor
“`次にsupervisord.conf(設定ファイル)を作成する
“`
[supervisord]
// trueに設定しないと起動時にデーモンモードになってしまい落ちる
【Laravel】ビューコンポーザとは
# はじめに
半年前くらいにビューコンポーザについて調べたつもりでしたが、見事に忘れました…。
私と共にビューコンポーザについて学んでいきましょう。# 準備
ビューコンポーザを使用するには、アプリケーションのサービスプロバイダに登録する必要があります。
“`config/app.php‘providers’ => [
// 他のサービスプロバイダ
App\Providers\FoodServiceProvider::class,
],
“`
# ビューコンポーザとは**ビューをレンダするときに呼び出す**コールバックまたはクラスメソッド
(今回はクラスメソッドを呼び出すパターンのみ確認していきます。)## ビューコンポーザを使うと何が嬉しいの?
**ビューを表示させる責務**と、**ビューに表示させるデータを扱う責務**を完全に分けることができます。
# 実際に書いてみる
## ビューコンポーザがない時
“`FoodController.php
Python,Ruby,PHP,Java,JavaScript,Perlのビット演算の比較
Python,Ruby,PHP,Java,JavaScript,Perlのビット演算の比較
# Python
https://qiita.com/7shi/items/41d262ca11ea16d85abc
# Ruby
https://qiita.com/jkr_2255/items/8e29dce1999f3f6b69ad
# PHP
https://qiita.com/mpyw/items/ce626976ec4dc07dfec2
# Java
https://qiita.com/Ingward/items/43acda931c8a62c70d2f
# JavaScript
https://qiita.com/41semicolon/items/c1a16f220d4545410ddc
# Perl
https://perlzemi.com/blog/200808061