- 1. PHP Laravel 6 おすすめ映画投稿サイト作成過程 6:削除機能作成編
- 2. 未経験者がWell Architected Frameworkを意識して自分なりにアーキテクチャ設計・構築をしてみた。<アーキテクチャ設計編>
- 3. QRコードを生成するパッケージを使ってみた
- 4. PHP Laravel 6 おすすめ映画投稿サイト作成過程 5:更新機能作成編
- 5. 引数の渡し方
- 6. php ファイルのアップロード
- 7. PHP Laravel 6 おすすめ映画投稿サイト作成過程 4:投稿機能作成編
- 8. PDOを接続とプリペアドステートメント説明
- 9. 忙しい人のためのphp.ini設定大全
- 10. PHP の GD ライブラリを使って、「たくさんある画像の中で微妙に色違うやつ当てるゲーム」を少しでもチートされないように作りたい
- 11. PHPでtwitter投稿する
- 12. PHP Laravel 6 おすすめ映画投稿サイト作成過程 3:詳細ページ作成編
- 13. 【Laravel】GuzzleでEUC-JPのページを受信すると文字化け→cURLの受信結果を適切にエンコードして解決
- 14. PHP Laravel 6 おすすめ映画投稿サイト作成過程 2:一覧ページ作成編
- 15. core dump と gdb コマンドがあればバイナリ再ビルドしなくてもデバッグできます(PHPコマンドでSegmentation faultになった原因調査)
- 16. PHP Laravel 6 おすすめ映画投稿サイト作成過程 1:準備編
- 17. PHP Laravelのmake:modelオプション
- 18. Laravel バリデーションを設定する ~フォームリクエスト編~
- 19. front-end に Nuxt.js と Laravel が混在するシステムで Cookie を用いてクライアントを識別する
- 20. 気象庁の雨量データをスクレイピングしM5Stackで表示する
PHP Laravel 6 おすすめ映画投稿サイト作成過程 6:削除機能作成編
#ルーティング
destroyを使用します。“`
| DELETE | recommends/{recommend} | recommends.destroy | App\Http\Controllers\RecommendController@destroy | web |
“`#コントローラー
Modelのデリートメソッドを使用します。
editなどとは違い、デリート用のページを用意する必要はないためindexへリダイレクトさせます。“`recommend/app/Http/Controllers/RecommendController.php
public function destroy(Recommend $recommend)
{
$recommend->delete();
return redirect()->route(‘recommends.index’);
}
“`#indexからdestroyへ削除したいデ
未経験者がWell Architected Frameworkを意識して自分なりにアーキテクチャ設計・構築をしてみた。<アーキテクチャ設計編>
#はじめに
この記事は、実務未経験の大学生がロールプレイング形式でアーキテクチャの設計、構築を行うといった記事です。
よろしければ[<準備編>](https://qiita.com/mkoki0422/items/9fc0b5d44ff7367994f1
)もご覧くださいませ。#前提条件の確認(ロールプレイング中)
+ インフラエンジニアは4人
+ 4人でインフラの構築、運用を行なっていかなければならない
+ 自動化が重要
+ 構築までの期間は1ヶ月#問題点
現環境の構築に携わったエンジニアにヒアリングを行い、現環境の問題点を整理しました。
Well-Architected フレームワークを元にアーキテクチャを考えた時に、現時点でのアーキテクチャでは以下の様な問題点が挙げられます。###セキュリティ
+ 通信にSSLが適用されていない
+ セキュリティグループが適切に設定されていない(全てがフルオープンになっている)
+ DDos等の一般的なセキュリティ対策を行なっていない
+ データの暗号化が行われていない
+ リソースに対する権限管理が曖昧である
QRコードを生成するパッケージを使ってみた
# QRコードを生成するパッケージを使ってみた
QRコードをパッケージを利用してサクッと作ってみた。
## 環境
– PHP 7.3.18
– composer 1.10.10
– Windows10 Home
– localhost## 利用するもの
– [endroid/qr-code](https://packagist.org/packages/endroid/qr-code)## 作成手順
– 任意のディレクトリに「QRコード」フォルダを作成
– コマンドプロンプトを起動して、「QRコード」内に入る。
– 下記を実行し、パッケージをインストールする。“`
composer require endroid/qr-code
“`– 「QRコード」ディレクトリ直下にindex.phpを作成し、下記のコードを貼り付ける。
“`
PHP Laravel 6 おすすめ映画投稿サイト作成過程 5:更新機能作成編
#ルーティング
更新ページにはeditを使用します。
“`
| GET|HEAD | recommends/{recommend}/edit | recommends.edit | App\Http\Controllers\RecommendController@edit | web |“`
更新をDBに登録するにはupdateを使用します。
“`
| PUT|PATCH | recommends/{recommend} | recommends.update | App\Http\Controllers\RecommendController@update | web |
“`#viewの作成
![Screen Shot 2020-09-23 at 22.54.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73615
引数の渡し方
今日は`laravel`において`view`ファイルへの引数の渡し方について記録していくよ~
“`TestController.php
public function test(){
$data1 = 1;
$data2 = 2;return view(‘test_view’ , [‘data1’ => $data1 , ‘data2’ => $data2 ]);
}//1 2
“`
`compact`関数を使って同じ出力になる書き方:“`TestController.php
public function test(){
$data1 = 1;
$data2 = 2;return view(‘test_view’ , compact(‘data1’ , ‘data2’));
}//1 2
“`
以上だよお~
php ファイルのアップロード
“`php:up.php
img_upload
”
?>
//enctypeは決まり文句
PHP Laravel 6 おすすめ映画投稿サイト作成過程 4:投稿機能作成編
#ルーティング
登録画面にはcreateを使用します。
“`
| GET|HEAD | recommends/create | recommends.create | App\Http\Controllers\RecommendController@create | web |
“`DBへの登録にはstoreを使用します。
“`
| POST | recommends | recommends.store | App\Http\Controllers\RecommendController@store | web |
“`#viewファイルの作成
![Screen Shot 2020-09-23 at 20.39.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/736153/
PDOを接続とプリペアドステートメント説明
#PDOの接続方法
僕はmysqliに比べて、分かりづらかったので、PDOの接続の仕方を書いてみました。“`
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo “接続完了”;
} catch (PDOException $e) {
exit();
echo “接続失敗”;
}
?>
“`
#プリペアドステートメントについて
プリペアドステートメントって、初めは分かりづらいですよね。
プリペアドステートメントとは、SQL文を最初に用意しておいて、その後はクエリ内のパラメータの値だけを変更してクエリを実行できる機能のことです。
この機能を利用することでクエリの解析やコンパイル等にかかる時間は最初の一回だけで良くなり、より高速に実行することができます。
また
忙しい人のためのphp.ini設定大全
vpsでやっているとphp.iniの設定で苦しめられることがあるので、
備忘録としてまとめておきます
よかったら参考にしてください
#目次
[忙しい方のための推奨設定一覧](#忙しい方のための推奨設定一覧)
[allow_url_fopen](#allow_url_fopen)
[allow_url_include](#allow_url_include)
[default_charset](#default_charset)
[disable_functions](#disable_functions)
[display_errors](#display_errors)
[enable_dl](#enable_dl)
[expose_php](#expose_php)
[file_uploads](#file_uploads)
[log_errors](#log_errors)
[magic_quotes_gpc](#magic_quotes_gpc)
[max_execution_time](#max_execution_time)
[max_input_time](#max_in
PHP の GD ライブラリを使って、「たくさんある画像の中で微妙に色違うやつ当てるゲーム」を少しでもチートされないように作りたい
ソースコードは[こちら](https://github.com/noritakaIzumi/identify_colors)
「たくさんある画像の中で微妙に色違うやつ当てるゲーム(名前長い)」がよくあると思います。
これをフロントの世界 (HTML/CSS, JavaScript) だけで実装すると、目で答えがわからなくてもチートされて正解できてしまう懸念があります。
それを少しでもチートしにくくしようというのが今回の企画です。![top.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486784/5198a09e-5fc3-489c-3c8b-c2793f828ef8.gif)
## 今回行う対策
### 開発者ツールから色の情報がわからないようにする
CSS で背景色を指定すると、開発者ツールから見えてしまいます。
そのため、バックエンドで画像を動的に生成したのち、フロントではそれをただ読み込むだけにします。その他、「正誤判定をフロントエンドで実装しない」などの対策も必要ですが、記事
PHPでtwitter投稿する
[PHPからTwitterに投稿する](https://qiita.com/kumasun/items/ae3ff60acab4b1227d61)
PHP Laravel 6 おすすめ映画投稿サイト作成過程 3:詳細ページ作成編
#showページの追加
recommendsディレクトリにshow.blade.phpを作成します。
![Screen Shot 2020-09-23 at 15.22.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/736153/dd60367c-97b8-4192-3231-fe6db7f04c82.png)#コントローラー追加
ルーティングは以下の通りです。“`
| | GET|HEAD | recommends/{recommend} | recommends.show | App\Http\Controllers\RecommendController@show | web
“`showメソッドで{recommend}を受け取り、show.blade.phpへ投げます。
なお、recommends/{recommend}の{recommend}にはDBのid番号が入ります。“`rec
【Laravel】GuzzleでEUC-JPのページを受信すると文字化け→cURLの受信結果を適切にエンコードして解決
## 現象
1. LaravelでHTTP通信するならGuzzleらしい
3. 試す。受信結果が文字化けする
4. cURLベースで書き直す
5. やっぱり文字化けする
6. EUC-JPのページで発生している## 解決
以下のエントリを参考に、cURLでの受信結果を適切に変換することで文字化けを防ぐことができた。– [PHPのcurlでeuc\-jpのページを取得したときに文字化けするのを防ぐ \| 俺日記](https://blog.shinji.asia/curl-php/)
– [unicode \- PHP: Convert curl\_exec output to UTF8 \- Stack Overflow](https://stackoverflow.com/questions/2510868/php-convert-curl-exec-output-to-utf8)## コード
“`php
function curl_get_contents($url, $timeout = 60) {
$ch = curl_init();
curl_
PHP Laravel 6 おすすめ映画投稿サイト作成過程 2:一覧ページ作成編
#viewファイルの追加
一覧を表示するため、今回は新たに作成したrecommensディレクトリにindex.blade.phpを作成しました。
![Screen Shot 2020-09-23 at 13.18.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/736153/cb148420-862f-ee5f-7fb9-287f738d8900.png)#コントローラーの設定
コントローラー側では$recommendsをviewに渡します。“`recommend/app/Http/Controllers/RecommendController.php
public function index()
{
$recommends = Recommend::all();
return view(‘recommends.index’, [‘recommend’ => $recommends]);
}
“`#ダミーデータの入力
5件のダミーデー
core dump と gdb コマンドがあればバイナリ再ビルドしなくてもデバッグできます(PHPコマンドでSegmentation faultになった原因調査)
## 発生した問題
ある Laravel Artisan のコマンドを実行しようとしたら、即座に他に出力もなく `Segmentation fault` が出て終了しました。
1回目は実行できるのだけど、2回目は実行できない(結論からいうとキャッシュ周りの問題なので、キャッシュがあると死んでました)。“`shell
$ php artisan command:hogehoge
Segmentation fault
“`## バージョン情報
“`
$ php -v
PHP 7.2.22 (cli) (built: Sep 11 2019 01:44:09) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.22, Copyright (c) 1999-2018, by Zend Technologies
“`“`
$ gdb -v
GNU gd
PHP Laravel 6 おすすめ映画投稿サイト作成過程 1:準備編
# 備忘録としての制作過程を記録
##Laravel を実装(バージョン6)
“`
composer create-project –prefer-dist laravel/laravel recommend “6.*”
“`##一部内容の修正
###.env
DBはsqliteを使用する。“`recommend/.env
DB_CONNECTION=sqlite
“`###app.php
ロケーション等の変更。“`recommend/config/app.php
‘timezone’ => ‘Asia/Tokyo’,
‘locale’ => ‘ja’,
‘faker_locale’ => ‘ja_JP’,
“`##DB作成
“`
touch database/database.sqlite
“`##DB関連の資料作成
###必要なファイルを一括生成“`
$ php artisan make:model Models/Recommend -a
“`###テーブル内容を設定
今回は、以下の6項目| カラム |
|:—–
PHP Laravelのmake:modelオプション
#make:modelに用意された様々なオプション
モデルの作成時には、コントローラやマイグレーションファイル等の作成が必要となりますが、いちいち作成するのは面倒です。
make:modelには以下のオプションが用意されているので、状況によって使い分けましょう。##$ php artisan make:model -h
オプションの内容は、コンソールに php artisan make:model -h を入力することで確認できます。
内容は以下の通りです。基本的には -a で全て作成することになると思いますが、必要に応じてそれ以外を使い分けましょう。“`console
Options:
-a, –all Generate a migration, seeder, factory, and resource controller for the model
-c, –controller Create a new controller for the model
-f, –factory Create a
Laravel バリデーションを設定する ~フォームリクエスト編~
# 目的
– リクエストにバリデーションを記載する方法をまとめる
# 実施環境
– ハードウェア環境
| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.3) |
| ハードウェア | MacBook Pro (16-inch ,2019) |
| プロセッサ | 2.6 GHz 6コアIntel Core i7 |
| メモリ | 16 GB 2667 MHz DDR4 |
| グラフィックス | AMD Radeon Pro 5300M 4 GB Intel UHD Graphics 630 1536 MB |– ソフトウェア環境
| 項目 | 情報 | 備考 |
| — | — | — |
| PHP バージョン | 7.4.3 | Homwbrewを用いて導入 |
| Laravel バージョン | 7.0.8 | commposerを用いて導入 |
| MySQLバージョン | 8.0.19 for osx10.13 on x86_64 | Homwbrewを用いて導入 |# 前提情報
–
front-end に Nuxt.js と Laravel が混在するシステムで Cookie を用いてクライアントを識別する
![Nuxt-2.14.4](https://img.shields.io/badge/Nuxt-2.14.4-brightgreen) ![Laravel-6.x](https://img.shields.io/badge/Laravel-6.x-brightgreen)
[前回の記事](https://qiita.com/hamakou108/items/24533eee75b4a9256f3d)の続きですが、 A/B テストのような文脈でクライアント(ブラウザ)ごとに一意なランダムの ID を割り当て、 Cookie を用いてリクエストごとにクライアントを分類できるようにする処理を実装する機会がありました。この記事では front-end に Nuxt.js と Laravel (の view )が混在するシステムで、両方から ID を生成・利用できるようにする方法について紹介します。
## 方針と注意
基本的な方針は以下の通りです。
1. リクエストの Cookie ヘッダから ID が得られなかった場合(初回訪問)は ID を生成して Cookie に追加 [^set
気象庁の雨量データをスクレイピングしM5Stackで表示する
## 概要
* 集合住宅では雨の様子が窓からは分からず、エントランスに出てから雨に気づき傘を取りに戻ることが良くあった
* 一部のオフィスビル(30階建て以上)では、エレベーターホールに傘のサインで降水を知らせてくれていた
* ベランダに降水センサーを設置しアラームを通知する方法もあるが、電源確保、センサーの耐久性の面から難しい
* 気象庁の観測データページを、常時起動しているサーバー(Raspberry Pi)でスクレイピングした結果をM5Stackで表示する
https://www.data.jma.go.jp/obd/stats/data/mdrr/pre_rct/alltable/pre1h00.html![IMG_9811.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/701445/8fc7752e-d1da-cd53-60bf-ccce4ffe6e33.jpeg)
## 用意するもの
* Raspberry Pi3 Model B (4でもおそらく大丈夫)
* Raspberry