- 1. 【個人開発】独学駆け出しエンジニアが花の譲り渡しを仲介するサービスを作ったよ!
- 2. Amazon Linux 2 に PHP8.1 を導入する
- 3. [php]Bitbank認証ありのAPIに接続しデータを取得!
- 4. POKEMON WORDLEのチートコマンドラインツールをPHPで作った
- 5. 【Laravel】get() / first() / find()の返り値の違い
- 6. $thisについて
- 7. RubyとPHPの比較(メソッド、引数、戻り値)
- 8. 【Laravelエラー】Add [ ] to fillable property to allow mass assignment on
- 9. 【Dockerエラー】RUN apt-get update && apt-get install
- 10. 【Laravel】Class “App\モデル名” not found
- 11. 【Laravel】Dockerでテスト用のDBを作成する方法
- 12. Docker Desktop for mac 4.6 がリリースされて、ファイルIOのパフォーマンスが向上したらしいので調べてみた。(virtiofs)
- 13. RubyとPHPの比較(条件分岐、配列、ハッシュ)
- 14. phpで文字列からunixtimeに変換する
- 15. [PHP/Laravel]stdClassをArray(配列)に変換する
- 16. [PHP/Laravel]Cannot use object of type stdClass as arrayが出る場合
- 17. php のバージョンが混在する環境で特定バージョンのphp-fpmを使用する Homestead 編
- 18. vue3とlaravel8でリアルタイムチャット機能を実装
- 19. 外部ファイル関連(出力、読込、追記)
- 20. PHP 配列の要素をランダムに並び替える関数 shuffle
【個人開発】独学駆け出しエンジニアが花の譲り渡しを仲介するサービスを作ったよ!
# 制作の背景
皆さん、**フードロス**ってご存じですか?日本では食の安全が厳しく、まだ食べられるにもかかわらず多くの食品が捨てられています。一方で、**フラワーロス**についてはご存じでしょうか?
たしかに、食品と違って人が生きるのに必要ではない花ですが、開店祝いや冠婚葬祭を彩るための花の需要はとても高いです。
しかし、お祝い事が終わった後の花の行方を知っている人はいるでしょうか?### もちろん、捨てられることが多いです
日本では年間でなんと**10億本**の花が捨てられています。
もちろん、切り花は一回きりですので、捨てられても仕方がないでしょう。
しかし、胡蝶蘭やアジサイのように、多年草も多くは捨てられています。https://news.yahoo.co.jp/articles/43d9b12fe338fd9f7193b48e4590d1caacb0f486
**実は胡蝶蘭の寿命は50年以上にもなります。**
胡蝶蘭が発芽から開花するまでは5年です。
人間に置き換えると、来年以降も活躍できるにもかかわらず、10歳で生涯を閉じるようなものです![胡蝶蘭を
Amazon Linux 2 に PHP8.1 を導入する
Amazon Linux 2 に PHP8.1 を導入する機会があったので、手順をまとめてみました。
PHP8.0であれば amazon-linux-extras から入れることができるのですが、 PHP8.1 については amazon-linux-extras に用意されていません。 (2022年3月現在)今回、 amazon-linux-extras から導入した PHP8.0 を、 remi リポジトリの PHP8.1 に入れ替えております。
# remi リポジトリの導入
amazon-linux-extras から epel をインストール後、remiリポジトリを追加して、そこから PHP8.1 を導入することにします。
“`
$ sudo amazon-linux-extras install epel
…
$ sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
…
“`# PHP8.1 インストール
まず、すでにインストールされている PHP8.0 をア
[php]Bitbank認証ありのAPIに接続しデータを取得!
概要
– [Bitbankの公式API~日本語版~](https://github.com/bitbankinc/bitbank-api-docs/blob/master/README_JP.md)
– 公式サイトを見て、phpでデータ取得!
– phpのソースが無く困った〜;;時間かかった・・・コマンドで叩けば一発だった## 準備
1. Bitbankにログイン
2. `APIキー`,`シークレットキー`を発行し取得する()
![bitbank-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197404/c945df83-996c-cdeb-ee1d-d1c0fdb1450b.jpeg)
3. APIを叩く!## 認証
パブリックAPI:認証情報無しでok!
プライベートAPI:認証情報必要!! HTTPリクエストヘッダーに付与してリクエストを行う。### ヘッダー
– “ACCESS-KEY“
APIキーページで取得したAPIキー。– “ACCESS-NONCE“
整数値
POKEMON WORDLEのチートコマンドラインツールをPHPで作った
## TL;DR
* https://wordle.mega-yadoran.jp/ のチートツール
* ある日の問題が6回連続5文字全ハズレして勢いで作った
* PHPのgetoptまじわからん## 仕様・引数の説明
* すべての引数はひらがなでも指定可能。ひらがな・カタカナ以外が指定されても愚直に動く
* `-u` 使ったけどハズレた文字、灰色のやつ
* ハズレた位置含め除く機能は未実装
* `-e` 場所以外当たったやつ、黄色のやつ
* `-1` `-2` `-3` `-4` `-5` 場所含め当たったやつ、緑色のやつ## HOW TO USE
1. 最初は適当なポケモンを入力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722/05a19881-6ff2-e35b-c30b-9a91c463eaa0.png)
1. `% ./pokemon.php -u ぱらせく -e と` を入力して結果から適当なポケモンを入力
![image.png](https://qi
【Laravel】get() / first() / find()の返り値の違い
## 環境
Laravel v9.5.1 (PHP v8.1.3)## 状況
deleteする際エラーが発生。
“`
Method delete does not exist.
“`“`php
public function destory($id)
{
$article = Article::where(‘id’, $id)->get();
$article->delete();return redirect()->route(‘home’);
}
“`## 原因
“`Article::where(‘id’, $id)->get();“`の返り値が**Collectionクラス**だから。
Collectionクラスに対してdeleteできないというエラーだった。(Collectionクラスは、RailsでいうEnumerableモジュールだと思う)
https://docs.ruby-lang.org/ja/latest/class/Enumerable.html
“`php
>>> Article::where(‘id’, 9)->
$thisについて
$thisは自身のクラスのオブジェクトを指している。
$thisを使うことで自身のクラスで設定しているプロパティにアクセスできる。# 参考記事
https://www.m5a.jp/this.html
RubyとPHPの比較(メソッド、引数、戻り値)
# この記事の概要
Rubyで学習を始めてPHPに言語チェンジをする人が一定数いるみたいなので
そういった人達が参考にするための記事です。これらの記事の続きです。
https://qiita.com/Hashimoto-Noriaki/items/82beae9d3d6dac11e11c
https://qiita.com/Hashimoto-Noriaki/items/449c00327e99574e430a# メソッド
“`メソッド(関数)“`とは***何の処理をしているかをわかりやすくまとめた、かたまりのこと***です。
***Ruby***なら“`def“`、***PHP***なら“`function“`で定義します。
それぞれコードを見ていきます。⚫︎“`Ruby“`
“`rb
def language(lang)
puts “#{lang}を勉強したい”
puts “#{lang}が話せます。”
end#メソッドの呼び出し
language(“英語”)
language(“中国語”)#英語を勉強したい
#英語が話せます。
【Laravelエラー】Add [ ] to fillable property to allow mass assignment on
## 環境
Laravel v9.5.1 (PHP v8.1.3)## 状況
Articleをcreateするとき下記のエラー
“`
Add [‘title’] to fillable property to allow mass assignment on
“`“`app/Models/Article.php
class Article extends Model
{
use HasFactory;public function comments()
{
return $this->hasMany(Comment::class);
}public function user()
{
return $this->belongsTo(User::class, ‘user_id’);
}public function likes()
{
return $this->hasMany(Like::class);
}
}
“`## 原因
modelに“`protected $fillable“`を定義してないから。
>
【Dockerエラー】RUN apt-get update && apt-get install
## 環境
Laravel v9.5.1 (PHP v8.1.3)## 状況
ドキュメントのやり方(「macOSではじめる」)に沿って環境構築していた際、下記のエラー。
https://readouble.com/laravel/9.x/ja/installation.html
“`
% .vendor/bin/sail upBuilding laravel.test
[+] Building 98.4s (9/16)
=> [internal] load build definition from Dockerfile
【Laravel】Class “App\モデル名” not found
## 環境
Laravel v9.5.1 (PHP v8.1.3)## 状況
コントローラーにAricleモデルを宣言した際のエラー
“`
Class “App\Article” not found
“`“`app/Http/Controllers/HomeController.php
…
use App\Article;class HomeController extends Controller
{
…
}
“`## 解決方法
ちゃんとディレクトリ通りに参照する。
古いバージョンの記事を参考にしていたため、自分のバージョンに合った記事を参考にする。“`app/Http/Controllers/HomeController.php
…
use App\Models\Article;class HomeController extends Controller
{
…
}
“`いちいちモデル宣言しなきゃいけないの面倒だな…
【Laravel】Dockerでテスト用のDBを作成する方法
## 環境
Laravel v9.5.1 (PHP v8.1.3)## やり方
テスト用のDBを作成するために“`docker-compose.yml“`に追記。
テスト用のDBを環境変数にしない理由は、Dockerを立ち上げたときに**おそらく**“`.env“`は読み込んでいるが“`.env.testing“`はテストを実行したときに読み込んでいるため、ここで環境変数にしても意味がないから。
環境変数にした場合、テストがうまく行かなかった。“`docker-compose.yml
mysql: &mysql
image: ‘mysql/mysql-server:8.0’
ports:
– ‘${FORWARD_DB_PORT:-3306}:3306’
environment:
MYSQL_ROOT_PASSWORD: ‘${DB_PASSWORD}’
MYSQL_ROOT_HOST: “%”
MYSQL_D
Docker Desktop for mac 4.6 がリリースされて、ファイルIOのパフォーマンスが向上したらしいので調べてみた。(virtiofs)
# Docker Desktop for mac 4.6のアップデート内容
https://www.docker.com/blog/speed-boost-achievement-unlocked-on-docker-desktop-4-6-for-mac
今回のアップデートでは、 **`virtiofs`** と呼ばれるファイル共有実装を使用するオプションを利用できるようになったみたいです。
これにより macOS ホストと DockerVM 間でファイルを同期する方法が改善され、パフォーマンスが向上したらしい。### 「virtiofs」を使用する際の前提条件
– macOS 12.2以降 (Apple Siliconの場合)
– macOS 12.3以降 (Intelの場合)# 「virtiofs」を有効にする
###
– まずは Docker Desktop for mac を v4.6 にアップグレードする。([こちら](https://docs.docker.com/desktop/mac/release-notes)からもアップグレード可能です)
– 「
RubyとPHPの比較(条件分岐、配列、ハッシュ)
# この記事の概要
Rubyで学習を始めてPHPに言語チェンジをする人が一定数いるみたいなので
そういった人達が参考にするための記事です。こちらの記事の続きです。
https://qiita.com/Hashimoto-Noriaki/items/82beae9d3d6dac11e11c# 比較
演算子などを使った比較の方法をみていきます。### PHPで値を調べる
“`var_dump“`を使うと値の解析ができます。
“`php
var_dump(10);
var_dump(“10”);//int(10)
//string(2) “10” と出力
“`
initは“`数値“`のことで、stringは“`文字列“`のことです。
stringの後の(2)は***文字数***のことです。### 条件式
数値などを比較をする時には使う***条件式***をRubyとPHPで比較しながら見ていきます。
“`==“`は比較したものが等しいかをチェックします。⚫︎“`Ruby“`
“`rb
puts 100 == 100
puts 100 ==
phpで文字列からunixtimeに変換する
## 対応方法
`strtotime()`でOK“`php
$date = “2022-3-24 13:42:20”;
$unixtime = strtotime($date);
echo $unixtime;
// (int)1648096969
“`https://www.php.net/manual/ja/function.strtotime.php
[PHP/Laravel]stdClassをArray(配列)に変換する
## 問題
“` :stdClass配列
array(1) {
[0]=>
object(stdClass)#302 (1) {
[“id”]=>
int(1)
}
}
“`
これを
↓
“` :通常配列
array(1) {
[0]=>
array(1) {
[“id”]=>
int(1)
}
}
“`
こうしたい## 対応方法
“` php:
$array = json_decode(json_encode($stdClassArray), true);
“`
これでOK
[PHP/Laravel]Cannot use object of type stdClass as arrayが出る場合
## エラー内容
“`
Error
Cannot use object of type stdClass as array
“`## 対応方法
配列(array)ではなくstdClassになっているのでこうする
“` php:エラー出る
$array[“data”];
“`
↓
“` php:エラー解消
$array->data;
“`
php のバージョンが混在する環境で特定バージョンのphp-fpmを使用する Homestead 編
Docker 優勢の現代に、ローカル環境で Homestead を使用している人は少ないかもしれませんが、メモです。
## 環境(前提)
Homestead で php7 .2の環境を構築し、Laravel6 系を動かしていました## 起こったエラー
ある日突然、下記エラーを吐いてWebページが502で開けなくなりました。
“`
[crit] 861#861: *2 connect() to unix:/var/run/php/php7.2-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 192.168.10.1, server: hoge.local, request: “GET / HTTP/1.1”, upstream: “fastcgi://unix:/var/run/php/php7.2-fpm.sock:”, host: “hoge.local”
“`### 原因
エラーにある通り `/var/run/php/` の配下を見てみると以下の通
vue3とlaravel8でリアルタイムチャット機能を実装
## はじめに
今回は、Pusherを使ったリアルタイムチャット機能を実装していきます!!この記事の目標は、ブラウザを2つ開いて片方からチャットを送るとリロードしなくても自動更新される簡単なリアルタイムチャット機能を目指します!
#### 実行環境
Vue : 3.0.5
Laravel : 8.63.0
## まず簡単なチャット機能を作る(リアルタイムではない)
今回の本題は、リアルタイムということなのでここはサクッと進みたいと思います。
#### テーブルとモデルの作成
まずチャットのメッセージを保存するためのテーブルを作ります。
“`c#:コマンド
php artisan make:model Message
php artisan make:migration create_messages_table –create=messages
“`
“`c#:src/database/migrations/2022_03_00_000000_create_messages_table.php
public function up()
{
Schema::crea
外部ファイル関連(出力、読込、追記)
●外部ファイルへの書き込み
`file_put_contents(‘パス/出力ファイル名’, ‘出力内容’)`を用いる。
例)
“`
PHP 配列の要素をランダムに並び替える関数 shuffle
# 概要
– 既存の配列を渡すと配列内部の要素をランダムに並び替えてくれる関数`shuffle()`についてまとめる。
# 紹介
– 下記の様に実行する。
“`php
$array = [‘りんご’, ‘いちご’, ‘バナナ’];
shuffle($array);
“`– 下記の様に配列の内部要素をランダムに並び替える。
“`php
var_dump($array);
// 筆者が実行したときは[‘バナナ’, ‘いちご’, ‘りんご’]に並び替えされた
“`– 当該関数に引数として渡す配列そのものの要素を入れ替える(難しい言い方をすると「参照渡し」でもともとの配列に影響を与える)ので注意する。
– 成功したらtrue、失敗したらfalseを返す。# 参考文献
– [https://www.php.net/manual/ja/function.shuffle.php](https://www.php.net/manual/ja/function.shuffle.php)