- 1. Amazon IVS を利用して簡易的な動画配信プラットフォームサービスを作る
- 2. スキル分析 まとめ
- 3. LaravelでGoogle App Engine Cloud Taskを実行する
- 4. PHPで連想配列を使う
- 5. Composerを使ってみる
- 6. PHP-SQL
- 7. データベースへの接続
- 8. CakePHP2で論理削除を実装する方法
- 9. CodeIgniterのMVCモデル
- 10. 入力内容の取得
- 11. Laravel5.6 ユーザと管理者の認証を分けて管理者の認証情報のみ名前とパスワードだけにする
- 12. phpDocumentorを使ってみる
- 13. Ajaxのデバッグにログを使うのはもうやめよう!これからは開発者ツールで楽々デバッグ
- 14. Non TypeScriptスタックで型のバリデーションをする機構を01で実装してみる
- 15. Laravelの認証機能をカスタマイズしてデータベースにレコードを作成する
- 16. 【PHP_エラー】session_start前に何かを出力した際に発生するエラー
- 17. cakephp3 チートシート
- 18. PHPでS3からファイル一覧を取得する
- 19. Ubuntu-server20.04にopenssl、apache2.4、php7.4をソースからビルドする。
- 20. 1分でできるVSCodeでBladeファイルを綺麗に整形する設定方法【Laravel】
- 21. DockerでPuphpeteerを使う
Amazon IVS を利用して簡易的な動画配信プラットフォームサービスを作る
# 概要
本記事では、2020/07/15にGAとなった [Amazon Interactive Video Service](https://aws.amazon.com/jp/ivs/) (以下 IVS) を利用して、簡易的な動画配信プラットフォームサービスを作成する。
尚、実装は PHP / Lumen を用いて実装している。# IVS とは
簡単にセットアップが可能なマネージド型のライブストリーミング用のサービスで、低遅延な映像体験も特徴のひとつである。
IVSに最適化されたプレイヤーSDKも提供しており、プラットフォーム間の機能差異を意識することなく、サービスの提供を可能としている。
https://aws.amazon.com/jp/ivs/features/# プラットフォーム実装のための構成
簡易的な動画配信プラットフォームを作成するためには以下の構成で実現することが可能である。![Untitled (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61893/19285
スキル分析 まとめ
#経緯
今ままでプログラミングについて学習してきたんですけども
・何の言語ができますか?
→php,javaと勉強したけどできるかと言われればわからない!・どういった機能を作成できますか?
→ググって模写した機能なら使えるが状況が変わると使えるかわからない!などと言った質問をされると自信満々にできますと答えることができない。
なので
こういった機能をこの言語で書きこのようにプログラムを書いたことを
記録に残し説明できたらなと思い記事を書こうと思います。#開発環境
◾️インストール
・MAMP(Mac,Apache,Mysql,PHP)
・XAMPP(クロスプラットホーム,Apache,Mysql,PHP,Perl)◾️仮想化ツール
・docker(laradock)#制作物/機能
◾️ECサイト(laravel)
商品一覧(ペジネーション利用)/会員登録/ログイン/カート機能(追加・削除・合計金額)◾️LINE BOT 飲食店検索(laravel)
飲食店検索(LINEAPI,ぐるなびAPIを利用)#言語/フレームワーク
php(laravel),java
LaravelでGoogle App Engine Cloud Taskを実行する
# Cloud Tasksを使って好きなときに実行できるバッチを作りたい
Cloud Taskを受けるサービスの作り方は以下が参考になった。
[App Engine と Cloud Tasks で単発のバッチジョブを実行する](https://addsict.hatenablog.com/entry/2018/09/28/190113)
ただし、deployにCloud Buildを使っている場合、queue.yamlを利用するとIAMで権限付与が面倒。### queueは1度作成すれば使い回せるので、gcloudコマンドで作った
“`bash
gcloud tasks queues create キューの名前 –max-dispatches-per-second=1 –max-concurrent-dispatches=1 –max-attempts=1
“`これでタスクを登録したとき、1回だけ実行してくれるキューがつくれた。
## APIを使うのでcredentialファイルを取得
以下を参考に、キューを作成したプロジェクトで、サービスアカウントキーを作成
PHPで連想配列を使う
#プログラミング勉強日記
2020年9月3日#連想配列とは
配列では各値は順番に0,1,2…と番号が割り振られていて、その番号を指定することでデータを指定することができるが、連想配列では、番号の代わりに名前をつけて管理することができる。
配列も連想配列も使う箱は同じだが、連想配列ではデータを入れた後の扱いをわかりやすくするために、数字ではなく名前を指定することで、名前ごとのデータを取り出すことができる。![0903.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642821/568a7350-eb9c-afbf-0b30-fd12cc7c5d26.png)
#書き方
最初に、配列の書き方を復習する。“`php:配列
“`
basketaballとバスケ、baseballと野球、soccerとサッカーが対となる。この場合、配列のように0番目の値、1番
Composerを使ってみる
環境
初書:2020/09/03
PC:macOS 10.15.6
Composer: v1.10.10
php 7.4.9# Composerとは
> Composerは、PHPプログラミング言語向けのソフトウェアおよび必要なライブラリの依存関係を管理する標準形式を提供するアプリケーションレベルのパッケージ管理システムである。[wikipediaより](https://ja.wikipedia.org/wiki/Composer)
要するに、ライブラリの依存関係をまとめて処理してくれるものらしい。
逆に、ライブラリを使わないなら必要ないと思われる。(まぁ後に使う可能性があるなら先に用意しておくのもありかもしれない)# インストール
homebrewを使う。“`zsh
% brew install composer
“`
これだけ。ちなみにローカルとかグローバルとかは今は気にしなくていい(はず)
一応、“`% composer -v“`でバージョン情報が出てくるか確認する。# 開発環境に追加する
作成するフォルダ直下に、“`composer.json“
PHP-SQL
学習でのアウトプット
間違っている部分もあるかも・・・データベースへの接続
“`php
$host=”;
$username=’mysqlのユーザ名’;
$password=’mysqlのパスワード’;
$dbname=”;
$charset=’utf8′;//mysql用のDSN文字列
$dsn = ‘mysql:dbname=’.$dbname.’;host=’.$host.’;charset=’.$charset;
“`“`php
try{
$dbh=new PDO($dsn, $username, $password, array(PDO::MYSQL_ATTR_INIT_COMMAND => ‘SET NAMES utf8mb4’));
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false)
CakePHP2で論理削除を実装する方法
#論理削除とは
論理削除とは、ユーザーがブラウザで見た場合は、削除しているように見えるが、実際のデータは別に用意したカラムに保存されている。そのため、削除したデーターを管理者側から復活させることなどが可能。#物理削除とは
データーベースのデーターも削除すること。データーの復旧は不可。
通常のdeleteメソッドを用いた削除方法などはコレ。#さっそく解説
SoftDeleteBehaviorをダウンロードして設置する。https://github.com/CakeDC/utils/blob/master/Model/Behavior/SoftDeleteBehavior.php
ダウンロードしたファイルをapp/Model/Behaviorのフォルダ内に置く。
#テーブルに論理削除用のカラムを作成
削除フラグ
名前:deleted
型:tinyint(1)
※デフォルト値:0削除日
名前:deleted_date
型:datetimeDBでdeletedカラムをデフォルトで0に設定して、
delete関数が走った時に、deletedカラムに1が立つように実装すれば
CodeIgniterのMVCモデル
CodeIgniterのMVCモデルの書き方をメインに書いています。
# Controller
– 静的なページを作成するためのクラスを実装したコントローラを作成する。
作成するクラスは、system/core/Controller.php の CI_Controller クラスを継承させる。
引数にページの名前を取る。
そのページをロードするメソッドは、show()
“`php
class Pages extends CI_Controller {public function show($page = ‘home’)
{
}}
“`– クラスの継承
– オーバーライド:小クラスと親クラスで同じメソッドを使用した場合、コクタスが優先され、親クラスを上書きする。
– メソッド特殊な役割を持つメソッド
– デフォルトメソッド:index()
– 第二メソッドが空の時に実行されるメソッド
入力内容の取得
##出力側
出力する側のhtmlのform属性のactionに送信先のphpファイルを設定する。“`html:qiita.html
“`
##受け取る側
$_REQUESTの内容はname属性でつけた値を入れることで取得htmlspecialcharsとすることでhtmlのタグとして認識される文字列を逃がせる
ENT_QUOTESは数値であるために””はつかない
“`php:qiita.php
Laravel5.6 ユーザと管理者の認証を分けて管理者の認証情報のみ名前とパスワードだけにする
# 目的
– ユーザと管理者とで認証を分ける方法をまとめる。
# 実施環境
– ハードウェア環境
| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.5) |
| PC | MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
| プロセッサ | 2 GHz クアッドコアIntel Core i5 |
| メモリ | 32 GB 3733 MHz LPDDR4 |
| グラフィックス | Intel Iris Plus Graphics 1536 MB |– ソフトウェア環境
| 項目 | 情報 | 備考 |
| — | — | — |
| PHP バージョン | 7.4.3 | Homwbrewを用いて導入 |
| Laravel バージョン | 5.6.40 | commposerを用いてこちらの方法で導入→[Mac Laravelの環境構築を行う](https://qiita.com/miriwo/items/adaaaeecae69d639
phpDocumentorを使ってみる
環境
初書:2020/09/03
PC:macOS 10.15.6
Composer: v1.10.10#phpDocumentorとは
> phpDocumentor 2は、PHPソースコードから直接ドキュメントを生成できるようにするツールです。 これにより、ユーザーインターフェイスから利用できるものだけでなく、ソース内に埋め込まれた機能に関する詳細情報を消費者に提供できます。(https://www.phpdoc.org より。google翻訳による訳)
要するに、自動ドキュメント生成ツールである。
phpファイルの中に、phpdocでコメントを記述していれば、それを元にドキュメントを作成してくれる便利ツールです。
前から気になってはいたものの、ダウンロードが難しそうで断念していたが、ひょんな事からComposerをダウンロードしたので使ってみることにした。# ダウンロード方法
composerを使う(composerは依存関係を多く使うので不便な方は注意とのこと)“`zsh
% composer require –dev phpdocumentor/phpdo
Ajaxのデバッグにログを使うのはもうやめよう!これからは開発者ツールで楽々デバッグ
## 面倒なAjaxのサーバーサイドのデバッグ
Ajax通信の際のサーバーサイドのデバッグはログに吐くテクニックを使う人が多いですが、ブラウザとログを行き来するのは億劫に感じませんか?“`php:よくあるデバッグ
error_log(print_r($result, true), 3, ‘/var/log/debug_log’);
“`## 開発者ツールでデバッグが楽になる
そんなときはChromeの開発者ツールからリクエストの結果を確認すると捗ります。
Networkタブから該当のAjax通信を選択してPreviewを見るだけ。(1)Networkを選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206138/bba5e142-43c0-359b-1035-f43dec38306f.png)(2)該当リクエストを選択して、Previewタブを表示する
![image.png](https://qiita-image-store.s3.ap-northea
Non TypeScriptスタックで型のバリデーションをする機構を01で実装してみる
こんにちは(๑╹ω╹๑ )
↓ つい先日投稿した記事を多くの方に読んで頂けてとても嬉しいです(語彙力…..
[「Vercel + freenom + Getform.io」構成で「爆速 + 管理費完全無料」のポートフォリオをGatsbyJSで作ったら幸福度が高まった話](https://qiita.com/huuya/items/a52609d5407ad873eaa2)
今日はJavascript(主にTypeScriptスタックの無い環境)で型のバリデーションをする機構の実装について紹介します?
少し特殊な書き方をしますが、可変メソッドを多用する立ち回りで実装できます?
## 可変メソッドとは
– メソッド名からメソッドを評価する
ことです。
PHPでは、
– 可変変数
– 可変関数
– 可変クラス等できるかと思いますが、
それに近しい立ち回りです?♂️以前、[PHPの言語仕様の理解を深める特殊な立ち回り](https://qiita.com/huuya/items/f9bedb6b600c55613c4b#%E5%8F%AF%E5%A4%89%E
Laravelの認証機能をカスタマイズしてデータベースにレコードを作成する
## 現状
`Laravel`の認証機能を有効化したけど、どうカスタマイズすればデータベースにレコードを登録できるんだろう…?## 解決法
**めちゃくちゃ簡単だった**`(プロジェクト名)\app\Http\Controllers\Auth\RegisterController.php`から下記のコードをコピーして、挿入したいテーブル名、カラムとデータをコントローラーで指定するだけ。
“`RegisterController.php
protected function create(array $data)
{
return User::create([
‘name’ => $data[‘name’],
‘email’ => $data[‘email’],
‘password’ => Hash::make($data[‘password’]),
]);
}
“`**こんな感じに↓**
“`CustomiseController.php
【PHP_エラー】session_start前に何かを出力した際に発生するエラー
PHP開発中に起きたエラーを備忘録として記録します。
#発生したエラー
“`
Warning: session_start(): Cannot start session when headers already sent in C:\xampp3\htdocs\staff_login\staff_top.php on line 22Warning: session_regenerate_id(): Cannot regenerate session id – session is not active in C:\xampp3\htdocs\staff_login\staff_top.php on line 23
“`
session_start()を記述したところ上記のようなエラーが発生しました。
該当のコードを確認すると、下記のように記述されていました。“`php
coffeeapp
cakephp3 チートシート
自分用です。
忘れてぐぐりがちなこと覚え書き
phpの関数とかもあるかもしれない
随時更新予定クックブック
https://book.cakephp.org/3/ja/index.html#クエリビルダー
https://book.cakephp.org/3/ja/orm/query-builder.html
https://www.ritolab.com/entry/67
https://qiita.com/morisuke/items/e466d2ab360ab5646e9a##クエリ
“`php$query = $this->HogeModel->find() //ここまでテンプレ
->select([‘id’, ‘title’]) //取得するフィールド名
->where($conditions) //取得条件
->order($order) //order
->limit($limit); //取得件数
“
PHPでS3からファイル一覧を取得する
使う機会あると思うのですが、
依存関係とかそういったものを意識せずに使えるコードが無かったので。## 準備
“`sh:console
% composer require aws/aws-sdk-php
# 中略% touch get.php
% tree -L 1
.
├── composer.json
├── composer.lock
├── get.php
└── vendor
“`ユーザやバケットは作成してあり、画像が格納されている前提です。
### コード
“`php:get.php
Ubuntu-server20.04にopenssl、apache2.4、php7.4をソースからビルドする。
今回の流れは大まかにOpenSSL、Apache Subversion、APR、APR-util、PCRE,、Apache2(httpd)、PHPの順です。適宜パッケージとビルドを使い分けていきます。
| 環境 | |
| ——- | ——————- |
| OS | Ubuntu server 20.04 |
| CPU | Intel Core i5 2500 |
| メモリ | 4GB(DDR3) |
| Network | LAN || バージョン | 2020/09/01現在、最新 |
| ———- | ——————– |
| httpd | 2.4.26 |
| OpenSSL | 1.1.1g |
| PHP | 7.4.9 |## 0.パッケージの
1分でできるVSCodeでBladeファイルを綺麗に整形する設定方法【Laravel】
## 前置き
VSCodeは標準でファイル整形機能があるが、HTML, CSS, Javascriptにしか対応していません。
他の形式の場合は自分でフォーマッターを用意する必要があります。
とっても簡単なので、設定していない方はぜひこの機会に設定してみてください。## 設定手順
### VSCodeの拡張機能の「Laravel Blade Snippets」をインストールする※すでに「Laravel Blade Snippets」をインストール済みの方は飛ばしてください
#### まずVSCodeを起動して、VSCodeの左バーのメニューから「拡張機能」を選択してください
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206138/ed6868af-b2ba-1851-210a-30f4df3916b1.png)#### 次に画面上部の「Marketplaceで拡張機能を検索する」と表示されている検索バーに「blade」と入力すれば、「Laravel Blade Sni
DockerでPuphpeteerを使う
# この記事について
すでにあるプロジェクトに[Puphpeteer](https://github.com/nesk/puphpeteer)を導入する自分用メモです
## 作業
“`:in-container-terminal
$ composer require nesk/puphpeteer
$ npm install @nesk/puphpeteer puppeteer
“`“`Dockerfile:Dockerfile
FROM php:7.4.1-fpm# 省略
# puppeteerのインストール
RUN apt-get install -y nodejs gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocai