- 1. はじめに
- 2. 日別訪問者数の最大平均区間 (paizaランク B 相当)
- 2.1. dockerでwordpress環境を作成したらテーマがアップロード出来なかった
- 2.2. Twitterの内容をDiscordにPHPで投稿する
- 2.3. 独学でオンラインWebアプリメモ帳サービスを開発した記録
- 2.4. プログラミングを初めて2カ月半で作ったwebアプリ
- 2.5. 同時ログイン後の強制ログアウト表示を出す
- 2.6. Problem 1 – The requested PHP extension ext-intl * is missing from your system.のエラー
- 2.7. アウトプットPart2
- 2.8. SJISとSJIS-winの違い
- 2.9. php artisan migrateで外部キー追加ができない
- 2.10. Zend Serverのoci8
- 2.11. 【CakePHP】CounterCacheでユーザーのフォロー数とフォロワー数をカウントする
- 2.12. WordPressで投稿と外部サイトの更新情報をまとめて日付順に表示する
- 2.13. JavaScriptの問題 「DOM Based Xss / Webストレージの不適切な使用」
- 2.14. 【PHP】連想配列の配列の書き方
- 2.15. vagrant up で docker-compose を起動する
- 2.16. concrete5 (version 8)を CentOS8の環境に構築する①
- 2.17. Laravelでライブラリを入れる際にバージョン違いで怒られた話
- 2.18. [PHP]Allowed memory sizeの原因がくだらなかった
Laravel 6系でAmazon SESからメールを送信するときの設定方法
# はじめに
Laravelにて、Amazon SES経由でメールを送信するための設定をまとめました# 環境
– PHP 7.3
– Laravel Framework 6.13.1# 前提
Amazon SESの設定、IAMの設定は完了しているものとします# 設定の流れ
1. AWS sdkをインストールします
2. .envファイルにIMAのアクセスキーID、シークレットアクセスキー、リージョンの設定を追記します
3. キャッシュをクリアします# 設定してみた
## 1. AWS sdkをインストールします
“`bash
$ composer require aws/aws-sdk-php
“`## 2. .envファイルにIMAのアクセスキーID、シークレットアクセスキー、リージョンの設定を追記します
“`.env
MAIL_DRIVER=ses
MAIL_FROM_ADDRESS=hoge@example.comAWS_ACCESS_KEY_ID=【IAMのアクセスキーID】
AWS_SECRET_ACCESS_KEY=【IAMのシークレットアク
Paiza スキルチェック過去問題(PHP編) 日別訪問者数の最大平均区間 ~ランク B 相当~ 解いてみた。
はじめに
Paizaにて日別訪問者数の最大平均区間 (paizaランク B 相当)を解いてみました。
本番問題の解答・解説はNGですが、こちらに関しては、公開していいそうなのでまとめておきます。
(回答をPaizaでは再度閲覧できないため、備忘録的目的もあります。)
また、事前知識として標準入力の基本を知っておく必要がありますが、今回は割愛します。以下が参考になるかと思います。
https://paiza.jp/works/mondai/skillcheck_archive/max_range?language_uid=php
日別訪問者数の最大平均区間 (paizaランク B 相当)
以下が問題のリンクです。詳細はこちらでご確認ください。
dockerでwordpress環境を作成したらテーマがアップロード出来なかった
wordpressの環境を作って無料テーマを入れるとエラーが発生したので一番簡単な解決方法をメモ
## 何が起きたか
dockerでwordpressの環境を作成dockerでのwordpress環境作成についてはこちらの記事が非常にわかりやすいので参考にしてください!
[Docker Compose でWordPress環境を作ってみる](http://bashalog.c-brains.jp/19/08/15-120000.php)その後画面上で無料使える[Luxeritas] (https://thk.kanzae.net/wp/)というテーマをいれたところ
![image.png](https://qiita-image-st
Twitterの内容をDiscordにPHPで投稿する
# Twitterの内容をDiscordにPHPで投稿する
### 事前準備
– Twitterの認証周りは[twitteroauth](https://github.com/abraham/twitteroauth
)を使用しています。
composerかレンタルサーバー等であればフォルダごと置いてあげればOK– Discordの[Webhook Url](https://support.discordapp.com/hc/ja/articles/228383668-%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB-Webhooks%E3%81%B8%E3%81%AE%E5%BA%8F%E7%AB%A0
)を取得しておく– Twitter Developperのアプリ登録をしてtoken等を取得しておく
[【2019年】TwitterのAPIに登録し、アクセスキー・トークンを取得する具体的な方法
](https://miyastyle.net/twitter-api)“`php
独学でオンラインWebアプリメモ帳サービスを開発した記録
会員登録不要、無料で使用・保存できるオンラインWEBアプリメモ帳サービスを開発した記録です。
素人の私でもWEBサービスを作成できるので、参考にいただければ幸いです。
## ■サイト
メモ帳(メモ・ロモ)|会員登録不要で無料で利用可能のオンラインWEBアプリメモ帳サービス
http://memo.lomo.jp/
## ■トップ画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/585506/44672c9c-4486-e060-4d08-089301cbcbad.png)
## ■入力画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/585506/4ea8fd22-6951-9009-932d-02b2c0bf3706.png)
## ■特徴
・会員登録不要、無料で使用・保存できる。
・http://memo.lomo.jp/ +[複雑なID」を入力して自分専用のメモ帳として利用できる
プログラミングを初めて2カ月半で作ったwebアプリ
#記事の概要
私が作成したポートフォリオの解説です。
作った背景から、目的、採用した技術、機能、工夫した点、問題点をまとめた。#背景
プログラミング知識はなかったが、やる気と語学力が評価され、2019年の8月から11月までの4か月間フィリピンのオフショア開発企業でインターンとして受け入れてもらった。
その時に業務に入る前の研修課題としてphpを使ったwebアプリケーションの作成が命じられ、私はよく使っているtwitterのクローンサイトを作成した。
研修中はローカル環境のみで開発していたのだが、帰国後、自らのポートフォリオの一環として使うためにAWSを使い、本番環境にデプロイした。#目的
- 開発を通してWEBアプリケーションの動作の仕組みを理解する
- 要件定義から設計、開発、テストまですべて自分で行うことによってシステムの開発工程を理解する
- スケジュール表を事前に作り、スケジュール通りに開発を行えるようなマネジメント能力を養う
- わからない点は、積極的にフィリピン人スタッフに質問することで、フィリピン人スタッフ
同時ログイン後の強制ログアウト表示を出す
前回の[CakePHPでの同時ログイン禁止](https://qiita.com/hoogee/items/4967be92b687a68991fd)の続き。
過去のセッションをすべてDBから消して強制ログアウトした後の挙動と、
「他でログインしたからこのセッションはログアウトした」という表示を出す方法について。## DBに無いSession idが来た時の挙動
Sessionsテーブルからデータを消して強制ログアウトさせる方法の場合、ブラウザからはDB側データが消された事は分からないので、cookieが残っていれば普通に過去のセッションIDを送ってくる。
この時のサーバーサイドの挙動は以下の通り。* 何らかのURLにユーザーからアクセスされる
* セッション開始(session_start())され、openハンドラとreadハンドラが一回呼ばれる
* この呼び出しはCakePHPというより[PHP自体の機能](https://www.php.net/manual/ja/function.session-start.php)
* カスタムSessionHandlerを
Problem 1 – The requested PHP extension ext-intl * is missing from your system.のエラー
# 環境
Laravel5.8
MAMP環境
Mac
php7.3## 問題
プロジェクト下のターミナルで“`
composer install
“`
を行った際に“`
Your requirements could not be resolved to an installable set of packages.Problem 1
– The requested PHP extension ext-intl * is missing from your system. Install or enable PHP’s intl extension.
“`
というエラーに遭遇した。単純にPHP’s intl extensionというのを使えるようにしてくださいというエラーだと思い、
installしようとしたが悉くエラーが出てしまった。## 解決法
phpのバージョンを7.3 → 7.4に引き上げたらcomposer installできるようになりました。バージョンアップ↓↓
https://qiita.com/tana08/items/
アウトプットPart2
# 3月5日勉強でやったこと
##1.PHPでHello Worldを出力した![スクリーンショット (10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/596056/8d1bec65-f69b-aa6c-19d8-75b7239813b4.png)
出力などはわかっていたのだが、ApacheとPHPを関連付けるのが難しかった。
無事に出力できてよかった。##2.Gitを知ろう
Gitはコードの変更履歴が残るため、ファイルがかさばらないすごい技術です。
どうしてもプログラムにしてもパワーポイントにしても、名前を別に変えることによりファイルが増えていきどれがどれだかわからない状態になってしまうことが多いのでこの技術はすごくありがたいなと思いました。
しかも仲間たちとファイルが共有できるし、その人の変更履歴を選べるので使い勝手がいいなと思いました。##3.よく使うファイル
今日は、プログラムを組む上で必ず使うであろうファイルを調べました:rolling_eyes:
**・JSON**
SJISとSJIS-winの違い
##はじめに
エクセルで開く前提のcsvファイルを作る際、調査したので備忘録として残します##結論
sjisとSJIS-winで迷ったら、使える文字の多い、SJIS-winにしとけば問題なさそうです– SJIS
– Shift_JIS = CP932
– アスキーやマイクロソフトなどが中心になって作った文字コード
– SJIS-win
– Windows-31J = MS932
– SJISに特殊文字を追加した文字コード
– 丸数字 (①②③…⑳)
– ローマ数字 (ⅠⅡⅢ…Ⅹ、ⅰⅱⅲ…ⅹ)
– カッコ付きの株 (㈱)
– はしご高[はしごたか] (髙)
– たつ崎[たつさき、たちさき] (﨑)##補足
– ℓ(リットル)などの記号は、unicode文字なので、SJIS-winでも文字化けする
– UTF-8(BOM付き)でも、文字化けせずにエクセルに表示できる模様(もちろん上記のℓや特殊文字も)
– BOM付きかどうかが、特定のエディタじゃないと判別できないということで、テストのことも考え見送り###参
php artisan migrateで外部キー追加ができない
#問題
– commentsテーブルとpostsテーブルの2つを作ろうとしたがうまく行かない。“`
php artisan migrateMigrating: 2020_03_05_085907_create_comments_table
Illuminate\Database\QueryException
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table `comments` add constraint `comments_post_id_foreign` foreign key (`post_id`) references `posts` (`id`))
“`#原因
– migrationsテーブルの中にmigrate実行履歴が入っていた。
– php artisan migrateをすると、migrationsテーブルの中に実行履歴が残るようだ。
– 別の原因でphp artisan migrate:rollback
Zend Serverのoci8
# Zend Serverのoci8
Oracleインタフェース案件で、`Zend Server for IBM i`のoci8モジュールを使用しているが、この度Oracle側の更新で嵌ったので、備忘として。## 開発内容
– Oracle : 11g → 12c へ更新
– 該当PHPプログラムを12cの新DBに対応させる## 環境
### 本番環境
– OS : IBM i V7R1M0
– Zend Server for IBM i : 5.5
– OCI8 : 2.0.8
– Oracle Run-time Client Library Version : 10.2.0.5.0
– Oracle Compile-time Instant Client Version :10.2
– Oracle : 12.1### 開発環境
– OS : Windows 10
– Zend Server for Windows : 9.1
– OCI8 : 2.1.8
– Oracle Run-time Client Library Version : 12.1.0.2.0
–
【CakePHP】CounterCacheでユーザーのフォロー数とフォロワー数をカウントする
# CounterCacheとは
例えば、記事に紐づくコメント数や、いいね数など`hasMany`で紐づくデータの数を記事のリストと同時に表示したいはずです。
そのようなときは`SELECT COUNT(*)`で取得する方法が考えられます。
しかし、記事データを取得する際に毎回`SELECT COUNT(*)`クエリが発行されるのははっきりいって地獄ですよね:confounded:
しかも、いいね数順にソートしたいときにもいいね数にインデックスを貼ることができないのでさらにパフォーマンスが悪化することが考えられますね…そのような場合、**記事テーブルにコメント数いいね数カラムをもたせる(キャッシュさせる)**という方法がよく取られます。
あえて正規化を崩すような設計ですが、わざわざ結合や集計をすることなく取得することができ、さらにインデックスを貼ることもできるのでパフォーマンスの向上が見込まれます:laughing:### 記事テーブルにカウント数をもたせる際のデメリット
パフォーマンスは向上しましたが、**正規化を崩している**ため、当然そのためのデメリットが存在しま
WordPressで投稿と外部サイトの更新情報をまとめて日付順に表示する
#やりたいこと
– WordPressサイトの新着情報に外部サイトの更新情報もまぜたい
– 順番はまぜた状態で日付順にする##イメージ
#出来上がったコード
投稿の更新内容と外部サイトのRSSをそれぞれ取得し、新着順に並べ替えたリストを表示するショートコードを作成します。
“`functions.php
//新着表示用ショートコード
function newsFunc() {
global $wpdb;
global $post;
$disNum = 5; //表示数
$news_data = array();
//wpの新着
$wpLabel = ‘お知らせ’; //wp投稿用のラベル
$news_post = get_
JavaScriptの問題 「DOM Based Xss / Webストレージの不適切な使用」
JavaScriptにまつわる脆弱性について。
「DOM Based Xss」と「Webストレージの不適切な使用」について記載する。[JavaScript | MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript)
#DOM Based Xs
1. 概要
2. 攻撃手法と影響
3. 脆弱性が生まれる原因
4. 対策[DOM Based XSS – IPA](https://www.ipa.go.jp/files/000024729.pdf)
[第6回 DOM-based XSS その1:JavaScriptセキュリティの基礎知識|gihyo.jp … 技術評論社](https://gihyo.jp/dev/serial/01/javascript-security/0006)##概要
JavaScriptが原因で発生するXXSをDOM Based Xssと呼んでいる。
XXSはサーバ側のプログラムの不備が原因で発生するが、クライアントサイドで動作するJavaScriptの記述の不備で発生するケースもある。
こ
【PHP】連想配列の配列の書き方
jsonで連想配列の配列を送信しようとしたのだけど、どう書けばいいか分からず半日くらい詰まったのでメモ。
“`php:連想配列の配列.php
$arr = array(
‘表題’ => ‘名簿’,
[
array(
‘名前’ => ‘佐藤’,
‘年齢’ => 21,
‘出身’ => ‘兵庫県’,
)],[
array(
‘名前’ => ‘高橋’,
‘年齢’ => 22,
‘出身’ => ‘京都府’,
)],[
array(
‘名前’ => ‘鈴木’,
‘年齢’ => 25,
‘出身’ => ‘愛知県’,
)],
);
echo json_encode($arr, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT );
“`echoの内容
“`
{
“表題”:
vagrant up で docker-compose を起動する
## 目的
* Vagrant で構築する VM 内に Docker と docker-compose をインストールし、docker-compose を起動する。
## vagrant-docker-compose プラグイン
shell プロビジョナ等で Docker や docker-compose をインストールして起動しても良いのですが、まさにこういった用途に合ったプラグインがあったのでこれを利用します。
https://github.com/leighmcculloch/vagrant-docker-compose
“`sh
$ vagrant plugin install vagrant-docker-compose
“`## ファイル構成
VM の中で `php` イメージを docker-compose で起動するようにします。
ファイル構成は下記のようにしています。“`sh
public/
+ index.php
docker-compose.yml
Vagrantfile
“`index.php は phpinfo() を実行す
concrete5 (version 8)を CentOS8の環境に構築する①
# 概要
concrete5とは、オープンソースで現在でも開発が進められているCMS製品です。
githubでのcontributorたちの活動状況はこんな感じです。
2019年まではかなり活発で、2020年はまだそこまででも無いですが、
安定してそれなりの頻度で開発されていることは分かります。とあることからconcrete5について知る機会があり、せっかくなので自分で触ってみようと思ったので、
まずはその環境を用意するところからやることにしました。やるからには最新バージョンで取り揃えたいので、まずはその環境構築から始めます。
# 環境情報
今回の環境構築にあたって必要となる主な製品とバージョンです。
– Vagrant 2.2.
Laravelでライブラリを入れる際にバージョン違いで怒られた話
# 困ったこと
* 下記のようにlaravel/uiというライブラリインストール時に、laravel/frameworkのバージョン違いでインストール失敗# 問題の背景
* プロジェクト作成時はLaravel6で開発をはじめたが、開発中にLaravel7がリリースされていた。
※2020年3月3日にLaravel7がリリースされていた# 解消方法
* 自身の利用しているlaravel/frameworkへ対応しているライブラリのバージョンを指定してインストールする
“`$ composer require laravel/ui:1.2“`# 参照文献
* [composer requireがInstallation
[PHP]Allowed memory sizeの原因がくだらなかった
##[PHP]Allowed memory sizeの原因がくだらなかった
100万件のCSVをPHPで読み込むために、メモリ上限を1028MBに変更したが、
相変わらずメモリエラーが発生するのはなぜだろう。“`
Allowed memory size of 2097152 bytes exhausted (tried to allocate 1052672 bytes)
in C:\Users\user_name\htdocs\hoge.php on line 32
PHP Stack trace:
“`よく見ると、php.iniでmemory_limiを1028MB と書いていた。
MBと書いたことが原因っぽい。“`php
memory_limit = 128M
“`
MB→Mに書き直したら正常に処理できた。(というかデフォルトに戻した)
当たり前すぎるが他にも同じ理由でエラー起こす人がもしかしたらいるかもしれない
ので投稿しました。僕はこれで数日つまづいていました(笑)