- 1. リレーションで特定のユーザーの記事を取得する手順
- 2. そろそろaws初めてみよか#4~Cloud9環境の整備~
- 3. 初心者向け 少し便利なPHP関数
- 4. PHPアプリで扱う設定ファイルの形式をどうするか
- 5. 【WordPress】 Gutenberg関連のCSSまとめ
- 6. EC-CUBE の SameSite cookie 対応まとめ
- 7. PHP プログラムの呼び出し
- 8. PHP にちょっと触れてみたので書いとく
- 9. PA-API v5が429エラーにしかならない件
- 10. CakePHP2のオートロードを「最近のやり方」で考える
- 11. TwitterのREST APIで取得したツイートの日付をPHPで日本標準時に変換
- 12. htmlspecialchars関数についてのメモ
- 13. “the requested PHP extension zip is missing from your system”のエラー解決法
- 14. array_filterでarray?ってなったお話
- 15. 【XAMPP】PHPの制作物を任意のディレクトリで作りたい
- 16. Laravel Eloquentの超基本的な使い方
- 17. PSR-3: Logger Interface 読了
- 18. そろそろaws初めてみよか#3~RDSとの接続~
- 19. ComposerでPlease provide a valid cache pathとなったときの対応スクリプト
- 20. Moodle 3.8 マニュアル – 10000 以上のインストール
リレーションで特定のユーザーの記事を取得する手順
# はじめに
情報共有サイトにおいて、全てのユーザーが投稿した記事を取得することは簡単ですが、特定のユーザーが投稿した記事のみを取得したいとなると、リレーションが必要になり、初学者にとってはちょっと複雑になります。本記事では備忘録も兼ねてその手順をメモします。## テーブルの作成
#### テーブル名を決める
テーブル名は複数形にします
今回は下記のように定義します。– 記事を保存するテーブル名→news
– ユーザー情報を保存するテーブル名→users#### マイグレーションファイルの作成
下記コマンドを打ちます“`
$ php artisan make:migration create_テーブル名_table
“`
database/migrationsディレクトリ直下にテーブル名.php というファイルが生成されます。#### マイグレーションファイルへの編集
newsテーブルに記事のタイトルと本文のカラムを加える場合、下記のように’title’と’body’を追記します。“`
public function up()
{
そろそろaws初めてみよか#4~Cloud9環境の整備~
# はじめに
awsと戯れる会も第4回目(^^♪
Cloud9環境でちゃんと開発できるようCloud9のインスタンスにもlaravel環境をセットアップします。以前の記事はこちらから
– [そろそろaws初めてみよか~まずは触れてみた~](https://qiita.com/imp555sti/items/08bef8d74985c2ea1f87)
– [そろそろaws初めてみよか#2~CodeStarによるコード修正からDeployまで~](https://qiita.com/imp555sti/items/9d04bfdbc3b89c1115f9)
– [そろそろaws初めてみよか#3~RDSとの接続~](https://qiita.com/imp555sti/items/bb820cd162f21bc06462)# phpのバージョンアップ(5.6->7.3)
Cloud9上のphpは`5.6.40`
ところが実行環境であるインスタンスのphpは`7.3.13`
って事でphpのインストールと切り替えを行います。## php73のインストール
“`console
初心者向け 少し便利なPHP関数
## はじめに
2つの配列があり、一つをキーにしてもう一つを値にして配列を作り直したい時“`php
“1”,
“b” => “2”,
“c” => “3”
];
?>
“`## 解決策
PHP7.2には、array_combine()と言う関数あり、これを使うだけで簡単に実現できます。“` {.php}
“`## 結果
“`
Arra
PHPアプリで扱う設定ファイルの形式をどうするか
# 目的
PHPアプリを作る上で、挙動のカスタマイズや、DBの接続設定をどういった形式のファイルに保存するか考える。
# 結論
PHP においては ini ファイル一択。
後半にあるマトリックスでYAML,TOML,INIが同得点になったのは真実に迫っていると思う。
# 評価点
* 表現力
* 書きやすさ
* 読みやすさ
* パースの速さ
* 導入の容易さ
* ポータビリティー# 候補
* YAML
* TOML
* JSON
* XML
* INI# 総評
PHPはXMLとJSONとINIしか標準でパースできないので、書きやすさ、読みやすさ、導入の容易さ、ポータビリティにおいてINIの妥当性が高い。
## 表現力
どんな設定ファイルかという具体性がないのでどれだけの表現力が求められるか評価が難しいところだけど、それぞれ設定ファイルとして採用された実績は沢山あるので、表現力に関して問題になる事は想定しなくてよいのではないか。
正直なところ、INIファイルは複雑な設定ファイルになると表現力に乏しいと思う。
## 書きやすさ
パースのしやすさ(syanta
【WordPress】 Gutenberg関連のCSSまとめ
# はじめに
Gutenberg(ブロックエディタ)対応のテーマを作成するために、CSSを設計しようと思ったのですが、
+ 読み込まれるCSSの数が多い
+ どのように読み込む/読み込まれるのか
+ フロント側、エディタ側どちらで読み込まれるのかなどこんがらがるポイントが多かったので、まとめてみました。
# style.min.css
+ `{wp_dir}/wp-includes/css/dist/block-library/style.min.css`
+ Github:[WordPress/wp-includes/css/dist/block-library/style.css](https://github.com/WordPress/WordPress/blob/master/wp-includes/css/dist/block-library/style.css)
フロント側で自動的に読み込まれる最初のCSS。
各ブロックの基本的なレイアウトを定義しており、特にブロックエディタ用のCSSを用意していなくても、ある程度いい感じに表示してくれるのはこのCSSの
EC-CUBE の SameSite cookie 対応まとめ
EC-CUBE の SameSite cookie 対応がバージョンごとに散乱していて、わかりづらいのでまとめてみます
## SameSite cookie とは
[Chrome 80が密かに呼び寄せる地獄 ~ SameSite属性のデフォルト変更を調べてみた](https://qiita.com/ahera/items/0c8276da6b0bed2b580c) がわかりやすいです。
## EC-CUBE の影響
標準状態では影響はありません。
– 標準状態では、クロスサイト Cookie は使用していない
– POST で戻ってくるケースは、そもそも CSRF 対策でブロックしているしかし、 **一部の決済連携や独自カスタマイズで影響の出るケースがあります**
– 3Dセキュアや、キャリア決済、ID決済などの決済連携で POST で戻ってくるケース
– 外部サイトから直接カートに入れるようカスタマイズしているサイト詳細は [EC-CUBE/ec-cube#4457](Chrome80のSameSiteの影響で3Dセキュア等を利用する場合に購入に失敗する) をご覧
PHP プログラムの呼び出し
PHPで以下の機能があるプログラムを作成しようと思っています。
1.値を受け取る
2.DBに照会してチェックする
3.チェック結果を返すまず、2と3の機能を作成しました。
思ったように動作しました。
■recieve.php
PHP にちょっと触れてみたので書いとく
Ruby を少し齧った人間が PHP に触れてみたので後で見返すように書きました。
### php タグ
PHP のコードは``の中に書く“`php
“`
HTMLに埋め込むのではなく、独立したファイルに PHP のコードを保存する場合は末尾の `?>` は省略することができる。終端の `?>` の後に改行文字などがあると予期せぬ不具合の元になる為、省略することを推奨されている。“`php
PA-API v5が429エラーにしかならない件
PA-API v4 が 3月9日 で終了するという通知が着たので、v5に移行すべく作業。
1. v5用の新しいアクセスキーを作成
2. スクラッチパッドでテストすると、一発目で下記のエラーが・・・
“`
Error! TooManyRequests
The request was denied due to request throttling. Please verify the number of requests made per second to the Amazon Product Advertising API.
“`一応、cURL とか PHP with SDK / without SDK とか、一通り試してみたけど、だめ。
“`
HTTP Status: 429: Too Many Requests
“`というわけで、長い長い戦いが・・・
# 状況
たぶん長くなるので、現在の状況をまとめておきます。
* 仕事で使っているアカウント
* 売上はある
* 同じアクセスキーを使って v4 のスクラッチパッドでは結果が取れる## 売上はある
CakePHP2のオートロードを「最近のやり方」で考える
# TL;DR
* 「Composerの利用を前提に」作る場合、CakePHP2アプリケーションでも独自のオートロードから脱却して良いのではないか
* 根幹となるのはComposerのclassmap autoload
* CakePHP2のオートロードを無くすわけではない(できない)ので、共存させつつ恩恵を受ける方法
* コアコード等の読み込みはCakePHPのクラスローダーに依存させる等# 狙いと背景
## 狙い
元々、業務上の問題に対するアプローチを模索して得たアイディアです。
狙うのは「テストの信頼性をあげる」ことにあります。後述する通り、素のCakePHP2の機構では単体テスト実装上のアンチパターンを踏みやすいというリスクがあります。これを改善したい、というのが狙いです。
より正確に言うなら、「テストの質を高める」というよりは、SUT側の挙動の変更によって「テスト実行時とプロダクト側の実行時の状態を近づける」というアプローチです。端的に言えば「テストとしてCI上で実行した時だけ動くコード」を排除したい、というのが取り組みのコアです。**「プログラマーの責
TwitterのREST APIで取得したツイートの日付をPHPで日本標準時に変換
よく忘れるので。
タイムゾーンは`Asia/Tokyo`であることが前提。“`php
date( ‘Y-m-d H:i:s’, strtotime($tweet[‘created_at’]) );
“`これで
`Mon Feb 10 05:12:03 +0000 2020` が `2020-02-10 14:12:03`になる。
htmlspecialchars関数についてのメモ
###htmlspecialchars関数とは
・HTMLの特殊タグをエスケープ(変換)する関数。
ユーザーからの入力を受け取る際、XSS等悪意のあるスクリプト挿入などの攻撃を避ける。`例) & → ‘&’
< → '<' > → ‘>’
” → ‘"’ ENT_NOQUOTEを設定していない時
’ → ‘'’ ENT_QUOTES設定時`“`php:qiita.php
window.location=’http://yahooooooooo.coooo.jp’;“, ENT_QUOTES, ‘utf-8’);
echo $sample;
//<script>window.location='http://yahooooooooo.coooo.jp';</script>
//ブラウザ上で右クリックでページのソースを表示するとエスケープされているのがわかる。
?>
“the requested PHP extension zip is missing from your system”のエラー解決法
当方Macです。
terminalで以下を入力。“`
pecl install zip
“`これでいけました。
もし `pecl`コマンドがないといわれたら、homebrewでPHPをインストールしてみてください。
“`
brew install php@7.4
“`再度、以下を入力
“`
pecl install zip
“`
array_filterでarray?ってなったお話
## 前置き
* array_filter は何か便利そうだが、よく分かっていないので使っていないまま
* 使えるようになりたい!ので整理する## array_filter とは?
> callback 関数によりフィルタ処理が行われた array の全ての要素を含む配列を返します。 callback 関数が TRUE を返した場合、 array の現在の値が結果の配列に入ります。 配列のキーは保存されます。
> 引用元 : [PHP_ array_filter – Manual](https://www.php.net/manual/ja/function.array-filter.php)* ・・ざっくり「第二引数でtrueを返したものだけを配列として返す(それ以外は削除する。配列のキーはそのまま)」
## 使ってみた
“`
$ary = [0, 1, 2, 2, 3];$tmpAry = (array_filter($ary, function($num){
return $num == 2;
}));for($i=0; $i
【XAMPP】PHPの制作物を任意のディレクトリで作りたい
## 3行で
– `httpd.conf` を開く
– `DocumentRoot` のディレクトリを書き換える
– localhostにアクセス## 環境
Mac
## なぜ
自分の制作物を `/projects` とかのディレクトリ(フォルダ)にまとめているなどの理由で `/XAMPP/xamppfiles/htdocs` の下にPHPの制作物を入れるのがイヤだなぁという場合。
## `httpd.conf` の中身を書き換える
`/Application/XAMPP/xamppfiles/etc/httpd.conf` を開いて
`DocumentRoot` と書かれた部分を探す。
**230行目あたり**にあります。“`conf
DocumentRoot “/Applications/XAMPP/xamppfiles/htdocs”
“`ここを任意のディレクトリに書き換える。
“`conf
DocumentRoot “/Users/antk/projects/”
“`など。
そしたらすぐ下にある“`conf
Laravel Eloquentの超基本的な使い方
自分用にまとめました
## モデルの取得
### 主キーで取得
“`sqlSELECT * FROM users WHERE id = 1 LIMIT 1;
“`
:point_down:“`php
App\User::find(1);
“`### 全件取得
“`sql
SELECT * FROM posts WHERE writer_id = 1;
“`
:point_down:“`php
App\Post::where(‘writer_id’, 1)->get();
“`### 1件だけ取得
whereの引数を配列にすれば、And検索できる“`sql
SELECT * FROM favorites WHERE user_id = 1 AND post_id = 1 LIMIT 1;
“`
:point_down:“`php
App\Favorite::where([
‘user_id’ => 1,
‘post_id’ => 1,
])->first();
“`### Or検索
And検索は `->wher
PSR-3: Logger Interface 読了
# PSRとは
– PSR(PHP Standards Recommendations)とは、[PHP-FIG](https://www.php-fig.org/)(PHP Framework Interop Group)が策定しているPHPコーディング規約を指す# PSR-3: Logger Interface
[PSR-3: Logger Interface](https://www.php-fig.org/psr/psr-3/)>This document describes a common interface for logging libraries.
>The main goal is to allow libraries to receive a Psr\Log\LoggerInterface object and write logs to it in a simple and universal way. Frameworks and CMSs that have custom needs MAY extend the interface for thei
そろそろaws初めてみよか#3~RDSとの接続~
# はじめに
– [そろそろaws初めてみよか~まずは触れてみた~](https://qiita.com/imp555sti/items/08bef8d74985c2ea1f87)
– [そろそろaws初めてみよか#2~CodeStarによるコード修正からDeployまで~](https://qiita.com/imp555sti/items/9d04bfdbc3b89c1115f9)前回CodeStarのIDE環境(Cloud9)からコード編集Deployまではうまく行きました。
今度はいよいよ失敗していた(=環境が整っていなかった)DB接続を試します。# RDSの作成
RDSのコンソール画面の[データベースの作成]から作成します。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324255/6012e67e-65d2-cfe2-945d-95aa52532507.png)今回はMariaDBにしてみました。
![02-1.png](https://qiita-image-
ComposerでPlease provide a valid cache pathとなったときの対応スクリプト
https://qiita.com/ponsuke0531/items/f0b68546068ac8922665 を一発でできるスクリプトを書いた。
“`sh
$ /var/www/laravel# find config/ -type f | xargs grep storage_path \
| grep framework | sed -e ‘s/^.*storage_path//’ \
| tr -d “,\(\)'” | awk ‘{ print “storage/”$0 }’ | xargs mkdir -p
“`
Moodle 3.8 マニュアル – 10000 以上のインストール
[原文](https://docs.moodle.org/38/en/Installations_10000_plus)
# 10000 以上のインストール
10000 人以上のユーザーのために Moodle のインストールをケータリングしている(あるいはしようとしている)のならここにあなたの学校の情報を追加してください。
内容
[1 アルゼンチン](#1-アルゼンチン)
[2 オーストリア](#2-オーストリア)
[3 カナダ](#3-カナダ)
[4 中国](#4-中国)
[5 コロンビア](#5-コロンビア)
[6 チェコ共和国](#6-チェコ共和国)
[7 フランス](#7-フランス)
[8 ドイツ](#8-ドイツ)
[9 インド](#9-インド)
[10 アイルランド](#10-アイルランド)
[11 ジャマイカ](#11-ジャマイカ)
[12 メキシコ](#12-メキシコ)
[13 ニュージーランド](#13-ニュージーランド)
[14 パレスチナ](#14-パレスチナ)
[15 フィリピン](#15-フィリピン)
[16 ポルトガル](#16-ポルトガル)
[17