- 1. ユーザー認証しないLaravel Sanctum
- 2. Doctrine ORMでPostgreSQLのforeign keyをDEFERRABLE INITIALLY DEFERREDにする
- 3. はじめてのDocker In Windows
- 4. 地図(Google Map)の任意地点に円を描き、人口データの属性を持つ町丁目ポリゴンを取得し、表示する
- 5. 【続・年末年始は積みゲーを消化したい!】PHP + Steam Web API + discord-php で Discord Bot に自分の積みゲーを発言させる
- 6. DockerでのLAMP環境構築手順(Amazon Linux 2/PHP8.1(Laravel9)) ⑦Laravel 9 系のインストール(全8回)
- 7. CLIツールを簡単に作れる、”Console”
- 8. React(MUI)+PHP(Laravel)+PostgreSQLで環境構築~DB取得まで
- 9. DoctrineとEloquent比較大全7: テーブル間のリレーションを定義
- 10. レガシーシステムに書けるテストについて
- 11. composer installでエラーが発生して実行できなかった(PHP Fatal error: Uncaught ArgumentCountError:)
- 12. cakePHP4でカートを作ってみる
- 13. livewireのpublic変数に結合文字を入れるとemit時にSafariで500エラーになる
- 14. エンジニア転職を成功させる正しいポートフォリオの作り方
- 15. さくらのレンタルサーバにPHP-sodium 拡張を入れようと思ったらてこずった話(解決編)
- 16. 【Laravel】whereとorWhereの併用で気をつけること
- 17. CakePHP DebugKitが急に表示されなくなったときの対処法
- 18. 画像サーバーをLambda移管した時のお話
- 19. Laravel 開発者に!俺はなる!と意気込んでいる人々へ
- 20. DockerでのLAMP環境構築手順(Amazon Linux 2/PHP8.1(Laravel9)) ⑥docker-compose.ymlの作成&MySQLの導入(全8回)
ユーザー認証しないLaravel Sanctum
そんなケースあまり無いと思いますが、SanctumでトークンベースのAPI作りたいけど、ユーザーのログインは必要ないときのメモです。
# 準備
#### 導入
まずは以下に則って導入します。https://readouble.com/laravel/8.x/ja/sanctum.html
# 実装
#### モデル作成
まずは、Sanctumを導入したときに追加されるテーブルのモデルを作ります。“`php:PersonalAccessToken.php
use Laravel\Sanctum\PersonalAccessToken as SanctumPersonalAccessToken;class PersonalAccessToken extends SanctumPersonalAccessToken
{
use HasApiTokens;
/** 省略 **/
}
“`
通常HasApiTokensはUserモデル等でuseしますが、今回はユーザー認証が必要ないので、自分自身に紐づくようにPersonalAccessTokenでuse
Doctrine ORMでPostgreSQLのforeign keyをDEFERRABLE INITIALLY DEFERREDにする
Doctrine ORMでリレーションを定義すると、PostgreSQL用のforeign key(外部キー制約)は `NOT DEFERRABLE INITIALY IMMEDIATE` となります。
Doctrine ORMを使っているPHPアプリケーションのみで使うデータベースを作っている場合は特に問題にはならないでしょう。すべてのデータベースアクセスはDoctrine ORMを使って行うので、foreign keyのオプションを気にする必要はないからです。(PostgreSQLの便利機能は使わない前提)
では、他のシステムとデータベース全体や一部テーブルを共有する場合など、データベース設計としてdeferrableなforeign keyがほしいときはどうすればいいか?
## Doctrine ORMのDDL管理の仕組み
(ORM) マッピング定義(annotation,attribute,yaml,php設定ファイル等でPHPのクラスにマッピング定義をつける)
↓
(ORM) MappingDriverが各形式のマッピング定義を読み込み、連想配列化
↓
(ORM/DB
はじめてのDocker In Windows
## 概要
この記事は、初めてDockerを触って複数のコンテナを連携させたAPIサーバー環境を
作成するところまでの手順をまとめたメモです。
これから初めてWindowsでDockerを触ろうという方の取っ掛かりになれば幸いです。## 環境
– Windows10
– git bash
– Windows Terminal
– Rancher Desktop## 準備
Dockerを使うために [Rancher Desktop](https://rancherdesktop.io/) をインストールします。インストーラをダウンロードして起動し、最後までインストールが完了したらターミナルで`docker`コマンドが使えるかの確認を行います。
“`bash
$ docker –version
Docker version 20.10.17-rd, build c2e4e01
“`
無事にインストールできたようです。## 普通にコンテナを作成してみる。
Apacheがインストールされたコンテナを作成し、ブラウザでアクセスできるところまでやってみます。### イメ
地図(Google Map)の任意地点に円を描き、人口データの属性を持つ町丁目ポリゴンを取得し、表示する
# 概要説明
Google Mapを使用し、地図の任意地点に円を描き、円内のエリアを人口データの属性を持つ町丁目ポリゴンで表示させ、データを取得してみました。この記事は[Maps JavaScript APIを使ってGoogle Mapに町丁目ポリゴンを表示してみる](https://qiita.com/yan_x/items/c069c8fb7c5d2648fe50)の拡張内容です。Google Mapの地図表示や地図上のポリゴン表示に興味がある方は上記の記事を一読頂ければ幸いです。## 使用するもの
* Google Map
* Maps JavaScript API
Google Mapで提供されている API の中の一つで、独自のコンテンツと画像を使って地図をカスタマイズして、ウェブページおよびモバイルデバイスに表示できます。https://developers.google.com/maps/documentation/javascript?hl=ja
* PHP
* JavaScript
* 町丁目ポリゴン(TerraMap API)
町丁目とは行政界の一つで「
【続・年末年始は積みゲーを消化したい!】PHP + Steam Web API + discord-php で Discord Bot に自分の積みゲーを発言させる
本記事は、[サムザップ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/sumzap) の12/7の記事です。
# はじめに
はじめまして、サムザップの[北島](https://twitter.com/RyotoKitajima)です。ゲーム会社で働いているだけあって、私はゲームが大好きです!
特にPCゲームが大好きなのですが、仕事が忙しい社会人はついつい積みゲーが増えがちですよね(ゲームを買っただけで満足してしまう…)。自分はどのくらい積みゲーが溜まっているのか!?
それを把握するため、[12/4の記事](https://qiita.com/RyotoKitajima/items/b9cbe230c42ab85d50b6)では、Steam Web APIを使った簡単なPHPプログラムを動かし、自分のSteamアカウントの積みゲー(プレイ時間が1時間以下のゲーム)の一覧を取得しました。
そして、その結果、91本もの積みゲーが溜まっているという状況が分かりました。
もうすぐ年末年始の休みが来ますが、さ
DockerでのLAMP環境構築手順(Amazon Linux 2/PHP8.1(Laravel9)) ⑦Laravel 9 系のインストール(全8回)
# はじめに
かくかくしかじかで、Docker で Amazon Linux 2 ベースの LAMP 環境を構築する機会がありましたので、手順についてアウトプットします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527226/f64f4672-7016-bf2f-d895-b722540d10f7.png)全 8 回を予定しています。
[① 作成する環境の確認](https://qiita.com/ryamate/items/47183e1ffd4843ef18fa)
[② Apache の導入](https://qiita.com/ryamate/items/e5ca19aece61717b6a01)
[③ PHP 8.1 系のインストール](https://qiita.com/ryamate/items/7a38eb11d64d504a7a22)
[④ Composer のインストール](https://qiita.com/ryamate/items/a8bbd003c
CLIツールを簡単に作れる、”Console”
[Symfony Component Advent Calendar 2022](https://qiita.com/advent-calendar/2022/symfony-component)の7日目の記事です。
## 最初に
[Symfony](https://symfony.com)はPHPのフレームワークのひとつです。しかし、公式サイトの説明文には> Symfony is a set of PHP Components, a Web Application framework, a Philosophy, and a Community — all working together in harmony.
(SymfonyはPHPコンポーネントのセットで、Webアプリケーションフレームワークで、哲学、そしてコミュニティです。それらがハーモニーを奏でながら動作しています。)と書かれている通り、PHPコンポーネントのセットで、たくさんのコンポーネントを提供しており、それらを組み合わせてひとつのフレームワークとして動作しています。Symfonyのコンポーネントは、Sy
React(MUI)+PHP(Laravel)+PostgreSQLで環境構築~DB取得まで
今まで、WEBアプリはjsp/servletばかりで開発していました。
今回はSPAで簡単なCRUDアプリを作成するために必要な勉強をしました。
その際に一連の情報がまとまっていると便利かと思い、備忘録として記していきたいと思います。
改善点・誤記等ありましたら、コメントにてご指摘いただけると幸いです。# 目次
– [やりたいこと](#やりたいこと)
– [環境構築](#環境構築)
– [事前準備](#事前準備)
– [React](#react)
– [React基本パッケージインストール](#react基本パッケージインストール)
– [Reactプロジェクトの作成](#reactプロジェクトの作成)
– [Reactローカルサーバー立ち上げ](#reactローカルサーバー立ち上げ)
– [React用ライブラリインストール](#react用ライブラリインストール)
– [PHP](#php)
– [PHP基本パッケージインストール](#php基本パッケージインストール)
– [PHPプロジェク
DoctrineとEloquent比較大全7: テーブル間のリレーションを定義
day7の今日は、テーブル間に外部キーによるリレーションがある場合にDoctrine, Eloquentそれぞれでどうやって表すか見ていきます。
SQL的にはauthorsテーブルとbooksテーブルへのauthor_idカラム(authors.idに対する外部キーつき)を追加しています。
## Doctrine
author_idを追加したbooksテーブルを表すBookエンティティにはauthor_idプロパティでなくauthorプロパティを追加します。
“`php
レガシーシステムに書けるテストについて
PHPカンファレンス2022で [フラットなPHPからオブジェクト指向で自動テストのあるPHPへ、そしてフレームワークへ](https://fortee.jp/phpcon-2022/proposal/ef41a5ba-4efd-4a9f-b6a8-ae456df00541) を発表した際に、「クラス化されていないレガシーシステムに対してテストを書いてリファクタしていくにはどうすればいいか?」という質問を受けました。
その場で「自分で自分のシステムに対してスクレイピングすると良い」という形で言葉で回答はしましたが、実際にどうやるのか他に例が見当たらなかったので、この場を借りて走り書きですが例を示したいと思います。## テストしたい対象のレガシーシステム
このようなハイパーレガシーコードなシステムがあり、index.phpというURLでアクセスできるとします。
“`php
こんにちはさん
“`## スク
composer installでエラーが発生して実行できなかった(PHP Fatal error: Uncaught ArgumentCountError:)
## composer installでエラー
“`console:コンソールエラー
PHP Fatal error: Uncaught ArgumentCountError: array_merge() does not accept unknown named parameters in phar:///usr/local/Cellar/composer/1.10.9/bin/composer/src/Composer/DependencyResolver/DefaultPolicy.php:84
“`## 解決法
下記を実行して、composerのバージョンをアップグレードする。
“`console
composer self-update –1
“`## 参考にしたサイト
https://github.com/composer/composer/issues/9097## エラー全文
“`console$ composer install
PHP Deprecated: Return type of Symfony\Component\Console
cakePHP4でカートを作ってみる
# まえがき
PHPとSQLを勉強したいと思った私は、「…そうだ、カート作ろう!」と京都へ行くノリで手を動かし始めました。
カートを作る、にしても、言語やフレームワークはどうするか(というかそもそもどんなフレームワークがあるのか?)、どんなカートにするのか(カートのフロント側のターゲットとか、システム側の機能・要件)とか、というかまず自分にそんなの作れんのか!?(ここについては思い立ってから3ヶ月弱、今もまだ格闘中なので答えは出ていないが)とか…色々悩みはあるけれど、まずは始めてみた私だ。:::note warn
Caution
この記事は、自分が勉強した内容に対する振り返りも兼ねてですが、何よりも「頑張ったでしょ!」という承認欲求を満たすためのものです。
間違いや意味不明な内容などもあるかもしれませんので、読み進める場合は、どうぞ広大な大地のような心でお読みください。
:::# 作るために使う道具
– cakePHP4(PHP Ver.8.1.11)
– mySQL (Ver.8.0.30)
– 私の脳(Ver.PHPもmySQLも、ほとんどよく分かっていない版)
# 作業履
livewireのpublic変数に結合文字を入れるとemit時にSafariで500エラーになる
なにこれ……
※事象の説明のみで結論が一部曖昧です。## 前提
### livewireのデータ改ざんの検知機能について
livewireにはリクエスト間でデータが改ざんされていないかをチェックしてくれる機能があります。
詳細は↓です。(The Checksum)
https://laravel-livewire.com/docs/2.x/security#security-measures
ものすごい単純に説明すると多分こんな感じ……
1. データ送信時に、データとそのデータをハッシュ化した値を合わせて送信する
2. 通信を受け取った側は再度データをハッシュ化する
3. 1.と2.で生成されたハッシュ値を比較して同じ値なら改ざんはされていないことが保証されるここで2つのハッシュ値に違いがあると500エラーとなります。
### 結合文字について
ここに「ホゲ」と「ホゲ」があります。
この二つは表示上は同じですが、「ゲ」の部分をUnicode表記にすると下記になります。– ゲ %u30B2
– ゲ %u30B1%u3099前者は単体でゲ(%u30B2)を表
エンジニア転職を成功させる正しいポートフォリオの作り方
# はじめに
今回の記事では、「エンジニア転職を成功させる正しいポートフォリオの作り方」についてご紹介していきたいと思います。
実際にエンジニア転職を成功させた方の体験談や採用担当の方の話なども盛り込んだ貴重な内容になっています。
是非ご参考にしていただければと思います。# 現在の就職活動市場
コロナ禍3年目に突入した2022年。
エンジニア転職市場は、2021年に引き続き過去最高水準の採用数が見込まれているようです。
エンジニア転職は、コロナ禍で危機感を感じ「市場価値を上げたい」「専門知識・技術を習得したい」といった上昇志向で転職を目指す方が多く、未経験で生半可な気持ちでは転職を成功させることが難しいと考えられます。
自分自身をしっかりアピールできるようにしておくことが重要で、その準備として欠かせない要素の一つがポートフォリオです。
参考:[日経XTECH](https://xtech.nikkei.com/atcl/nxt/column/18/00577/010700032/?P=2)# ポートフォリオとは
「ポートフォリオ」とググると、「金融商品の組み合わせ」とか「
さくらのレンタルサーバにPHP-sodium 拡張を入れようと思ったらてこずった話(解決編)
Laravelにて開発中のアプリケーションでJWTを使おうと思ったら、PHP-sodium が入ってないよって怒られた。
いまくいかなくて悩んでたら、@KCApps さんが助けてくれた話
## とりあえず結論
make じゃなくて gmake を使うとうまくいく
“`
# 作業用ディレクトリの作成
$ mkdir -p {~/usr/local/src,~/usr/local/php/extension}# libsodium のダウンロードとコンパイル
$ cd ~/usr/local/src
$ wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.18.tar.gz
$ tar xzvf libsodium-1.0.18.tar.gz
$ cd libsodium-1.0.18
$ ./configure –prefix=$HOME/usr/local
$ make && make check
$ make install# PHP拡張のダウンロード&コンパイル
$ cd ~/
【Laravel】whereとorWhereの併用で気をつけること
## はじめに
こんにちは!
バックエンドエンジニアの @kat0 です。
アドベント企画に参加するのは初めてですが、いつも書いているような記事を投稿しようと思います。## 環境
Laravel v9.5.1 (PHP v8.1.3)## 状況
組織1の管理者権限をもったユーザー(“`role“`が“`owner“`か“`admin“`)を取得したい。## OKバージョン
組織1の管理者権限をもったユーザーのみ取得できる。
“`php
User::where(‘role’, UserRole::Owner->value)
->orWhere(‘role’, UserRole::Admin->value)
->where(‘organization_id’, 1)->get();=> Illuminate\Database\Eloquent\Collection {#4690
all: [
App\Models\User {#4689
id: 1,
name: “山田太郎”,
CakePHP DebugKitが急に表示されなくなったときの対処法
# CakePHP DebugKitが急に表示されなくなったときの対処法
[Tips] エラーメッセージが出る場合もある
:::note alert
「エラーメッセージ: SQLSTATE[HY000]: General error: 11 database disk image is malformed.」
:::ただ、画面になにも表示されない方が多い。私のVagrant環境では毎度表示されず焦っていた。
複数環境ある場合は、環境を複製して1から構築し直すのもあり。だけど面倒なので、なんとか解決したい。
## <原因の一例>
私の場合は、Windowsの強制再起動→Vagrant/VirtualBoxが強制終了となり、ファイル破損したパターンだった。## <とにかく画面に表示させてみる>
### ① HTMLの下部にコードを埋め込んで強引に表示させる
“`
画像サーバーをLambda移管した時のお話
# 0.はじめに
無尽蔵にアクセスが考えられる画像に対して、まずnginxへアクセスを行い、キャッシュを挟んだ上でリバースプロキシでApacheへアクセスし、S3から画像を取得し、指定サイズにリサイズを行った上で返すアプリケーションを運用していました。
サーバーへのアクセス数は月間で数億あったため、水平スケールを拡大して数年間動いていました。
ただ、ある日突然のアクセススパイクが発生し、サーバーが応答しない事態が発生しました。
応急的にサーバーの水平スケールを拡大して対応しましたが、そもそもこれアプリケーション挟む必要あるのか...と考えてサーバーレスサービスへの移管を検討しました。
旧環境はオンプレ環境だったため、S3へのアクセスも物理的コストが高かったため、Lambdaを採用して環境を移管する事にしました。
# 1.Lambda環境の構築
以前はPHPでAWS SDKでS3から画像を取得⇒imagemagickでリサイズを行っていましたが、Python3.9を採用したため、PILとbotoで画像処理とS3からの画像取得を行いました。
**※パスはお使いのS3に最適化
Laravel 開発者に!俺はなる!と意気込んでいる人々へ
この記事は、[Lancers(ランサーズ) Advent Calendar 2022](https://qiita.com/advent-calendar/2022/lancers) の6日目の記事です。
https://qiita.com/advent-calendar/2022/lancers
昨日投稿された @igara さんの遊び心満載の記事もぜひ読んでみてください!
https://igara1119.hatenablog.com/entry/2022/12/04/153340
## はじめに
初めまして。
ランサーズのバックエンドエンジニアの[wadakatu](https://github.com/wadakatu)です。
社会人1年目から今に至るまで業務時間のほとんどを[Laravel](https://laravel.com/)に費やしてきました。
現在もランサーズ内のプロジェクトでLaravelを用いて開発を行なっています。## 本稿の目的
この記事では、Laravel開発者として1歩を踏み出す際にチェックすべき**人物**・**Webサイト**をまと
DockerでのLAMP環境構築手順(Amazon Linux 2/PHP8.1(Laravel9)) ⑥docker-compose.ymlの作成&MySQLの導入(全8回)
# はじめに
かくかくしかじかで、Docker で Amazon Linux 2 ベースの LAMP 環境を構築する機会がありましたので、手順についてアウトプットします。
![スクリーンショット 2022-11-30 23.31.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527226/930bcd24-38e9-316e-bebd-cef83aea5924.png)全 8 回を予定しています。
[① 作成する環境の確認](https://qiita.com/ryamate/items/47183e1ffd4843ef18fa)
[② Apache の導入](https://qiita.com/ryamate/items/e5ca19aece61717b6a01)
[③ PHP 8.1 系のインストール](https://qiita.com/ryamate/items/7a38eb11d64d504a7a22)
[④ Composer のインストール](https://qiita.com