PHP関連のことを調べてみた2021年12月13日

PHP関連のことを調べてみた2021年12月13日

WSL2にdockerをインストールしてみた

# なんでわざわざWSL2に?

「[docker for windows](https://docs.docker.jp/docker-for-windows/install.html)があるのに、なんでまたWSL2使うのん?」という話。

確かに、**docker for windowsはGUIでコンテナやイメージが管理できる**というメリットがあります。。

ですが、**なにかと動作が重い**と感じたことありませんか? (私や周りの話だとよくある)

そこで、WSL2にdockerを入れてみることにしました!

## WSLのインストール

下記の手順を参考にしつつ、導入しましょう。
https://docs.microsoft.com/ja-jp/windows/wsl/install

* Windowsのコマンドプロンプトを管理者権限で開く

Windows10であれば、`cmd`で検索して、「コマンドプロンプトを」右クリックで「管理者として実行」しましょう。

![スクリーンショット (2).png](https://qiita-image-store.s3.ap-n

元記事を表示

アプリの脆弱性もインフラの脆弱性もSnykで全部漏らさず対処しよう!

# はじめに

こちらの記事はアドベントカレンダー[Snykを使ってセキュリティにまつわる記事を投稿しよう!【PR】](https://qiita.com/advent-calendar/2021/snyk)の13日目の記事として投稿しています。

いきなりですが、日々アプリケーション開発に尽力されている開発者の皆様におかれましては、セキュリティに関して下記のような課題感をお持ちではないでしょうか?

– セキュリティに関する問題は**事業存続の危機に発展する可能性があるものの、その担保が暗黙的に開発担当者に任されている状況になっていて重い**
– コードレビュー時に脆弱性チェックもレビューポイントになっているが、それを指摘できるかどうかは**レビュワーのセキュリティ的知見に左右される**ので心もとない
– 自社のコード自体に問題がなくても、それに付随する**OSSのライブラリをアプリケーションレイヤーからインフラレイヤーまで把握しきれないほど使用している**ので、それらが孕んでいる脆弱性をどのように検出・対処すれば良いのか皆目検討がつかない
– 自社ではリソースがないので、外部のベン

元記事を表示

SlackのAPIで遊んでみる

#はじめに
この記事はトラストバンクアドベントカレンダー13日目の記事です。

こんにちは!トラストバンクのテックリード 海塩(うしお)(@youhei_seasalt)と申します。
会社として初の試みであるアドベントカレンダーですが、毎日同僚の記事が提供されるというのはとても楽しいですね。

#なにをしたか
最近SlackのAPIを触ることがあったため、リアクションを集計して遊びました。
一番多く使われたリアクションや、一番多くリアクションを受けた人を集計できます。
Slack上でおもむろに↓こんな発言をしようとしています。
![reaction1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/124294/5e2488e9-8dac-505e-4a98-d085b94c18ff.png)
GASのほうが親和性が高く、ネット上のサンプルも多いですがPHPerなのであえてPHPでやってみます。

#APIを探す
公式のAPIページを漁ります。
このAPIでメッセージの履歴が取得できそうです。
https

元記事を表示

細かすぎて伝わらないLaravel選手権8(laravel8)

Laraevl選手権8と言っていますが8回もやってません。versionに合わせました。

laravelのchangelogを眺めて、新しく追加された細かい機能を見ていこうぜ!っていうコーナーです

全部を網羅した訳ではなく、**Added**された中でも自分が気になるものをピックアップしました。

https://github.com/laravel/framework/blob/8.x/CHANGELOG-8.x.md

## paginationにlinksプロパティーが追加
– v8.0.3
– src/Illuminate/Pagination/LengthAwarePaginator.php

こんなふうにpaginateをjsonで返した場合にlinksプロパティーが追加されました。linksプロパティーの詳細は「laravel pagination カスタマイズ」で検索!

“`php
Route::get(‘/users’, function () {
return User::paginate();
});
“`

“`php
{
“to

元記事を表示

いきなりフリーランスをやってヒヤッとしたときの話

@Earthfreedom さんからバトンを受け取りました、G’s Academy 東京LAB4卒の大森と申します。

アドベントカレンダーの予約でもしないと記事を書かないので、
ほぼ昨年ぶりにQiitaを書きます。

[面倒な水替えを自動化!RaspberryPiで自動水替えシステム作ってみた。WIP](https://qiita.com/Earthfreedom/items/e039de4ea29903649003)面白いですね。

IoTのツールはまだまだ感度の高い人しか身近に使えていない感じがするので、
IoT界隈の方々の活動を見るとついつい応援したくなります。

さて、僕はG’s卒業後いきなりフリーランスになったので、よく
「どうやって勉強してるの?」とか、「失敗したとき怖くない?」とか聞かれます。

正直に言うと、失敗はときどきしてます笑
一緒に働く方々の支えやご厚意があって、なんとかやっていけてる状態です。

今回は今までで一番ヒヤッとした体験をお送りします。

# 簡単に自己紹介
2018年4月に東京LAB4期を卒業後、事業家およびフリーランスエンジニアとして活動して

元記事を表示

PKCE実装で使うcode_verifierとcode_challengeをPHPで実装する。

こちらは[エキサイトホールディングス Advent Calendar 2021](https://qiita.com/advent-calendar/2021/excite-hd)の13日目の記事です。今回はPKCE実装で使用するcode_verifierとcode_challengeをPHPを使って実装してみたいと思います。

## PKCE(ピクシー)とは?
PKCE(Proof Key for Code Exchange by OAuth Public Clients)とは[RFC7636](https://datatracker.ietf.org/doc/html/rfc7636#section-4.1)で定義されている、認可コード横取り攻撃の対策として提案された仕様です。 認可コード横取り攻撃とは、認可コードを不正に取得することによって、アクセストークンなどのトークンを不正に取得する攻撃です。

PKCEに関しては、下記2つの記事がわかりやすかったです。
[OAuth2.0拡張仕様のPKCE実装紹介 〜 Yahoo! ID連携に導入しました – Yahoo! JAPAN Te

元記事を表示

コンストラクトインジェクションの多用は禁物

# はじめに
Laravelにはサービスコンテナと呼ばれるクラスの依存関係を管理し、依存注入を実行するための強力な仕組みが備わっています。
この仕組みを使うことによってクラスの見通しが良くなったり、テストが書きやすくなったりするという利点がありますが、注入の仕方によって負荷が違ってくるので記事にしたいと思います。

# 動作確認環境
– Windows10 Home
– Laravel8
– PHP8.0

# 計測結果
| 番号 | 内容 | 結果 |
| —- | —- | —- |
| 1 | クラスを生成する | 0.69594383239746 ms |
| 2 | makeでクラスを生成する | 86.152076721191 ms |
| 3 | コンストラクトインジェクションでクラスを生成する | 222.5170135498 ms |

# サンプル
“`sample1.php
public function sample1()
{
for ($i = 0; $i <= 10000; $i++) {

元記事を表示

ニコニコで13年運用された決済システムが移行されてからのその後の改善

こんにちは。

プレミアム課金開発の @ingen084 です。
最近では [Google Play 支払いの対応](https://blog.nicovideo.jp/niconews/156795.html) に関わったりしていました。

## はじめに

昨年、弊チームでは [ニコニコで12年運用した決済システムを移行する上で必要だったこと](https://qiita.com/chiyoppy/items/2571e8e3ae675cc7a991)[^1] など大きな変化があった[^2]のですが、その後どのように分離されたものを改善できたかなどを書いていきたいと思います。

システム分離に比べ内容としてはごくごく普通なもの(のはず)ですので、あまり期待せずに見ていただけたらと思います。

## ローカル開発環境の作成

入社すぐだったのもあり、まずはコードや環境の把握も兼ね、ローカル開発環境を作成することとしました[^3]。

vagrant 上のVMで本番環境と同じ ansible-playbook を使用し、大体動く環境を作成しました。
あくまで ansible をそのまま

元記事を表示

Laravel6.xでプロフィールの更新画面を作りたい!【シンボリックリンク】

#やっていること
Laravel6.2を使ってツイッターのクローンサイトを製作中です。
自分への備忘録。MAMP環境で構築しています。

#やりたいこと
今回はログインしているユーザーのプロフィールの編集画面を作りました。
編集画面に入ると、ユーザーネーム・メールアドレス・パスワード(変更する場合は変更後のパスワード、変更しない場合は今のパスワードを入力)・自己紹介・アイコンの編集ができるようにしたいです。

#実装
View

“`php:profile.blade.php
@csrf
@if ($errors->any())

    @foreach

元記事を表示

ポリモーフィズム(多態性)とは

###ポリモーフィズム(多態性)とは

**・IT用語辞典**
>ポリモーフィズムとは、プログラミング言語の持つ性質の一つで、ある関数やメソッドなどが引数や返り値の数やデータ型などの異なる複数の実装を持ち、呼び出し時に使い分けるようにできること。

**・プログラマが知るべき97のこと** <カーク・ペパーディーン>
>プログラミングにおいてポリモーフィズムとは、同じクラスのオブジェクトやメソッドが、複数の形(form)を取り得るということを意味します。

~~ちょっと何ゆってるかわかんない。。。~~

とにかく納得して、理解できるように簡単にすると
**“「同じ名前のメソッドで、異なる処理を実現すること」“**になります。

では同じ名前のメソッドが異なる処理を実現するとは、どのように実装して、どんな時に使うのか?
ユーザーからのリクエストに対して(GETやPOST)処理を切り分ける、レスポンス処理クラスを使って具体例を見てみます。

・GETリクエスト時 -> ViewResponse
・POSTリクエスト時 -> RedirectResponse

これらのレスポンス処理ク

元記事を表示

VS CodeでPHPのデバッグ環境を構築する(Xdebug導入)

#導入環境
php : 8.0.13
vscode : 1.63.0
xdebug : 3.1.2
XAMPP : 8.0.13
OS : Windows 10

#VSCodeの拡張機能「PHP Debug」をインストールする
複数あるが、Felix Becker氏の物をインストールする。
PHP DebugはXdebugとVSCodeを橋渡しするだけなので次にXdebugをインストールする必要がある。

#PHPのエクステンション「Xdebug」をインストールする
###環境情報のコピー
新しくファイルを作成し、test.phpとリネームして以下のコードを入力して実行する。

“` test.php

“`

表示される以下の画面の内容をctrl + Aを押して全コピーする。

![スクリーンショット (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2351428/144ed7c4-7d78-bd26-d236-21f94075134d.png “全選

元記事を表示

Word Pressのプラグインの削除方法

1. ワードプレスの管理画面から、プラグインをクリックします。
1. アンインストールしたいプラグインを無効化します
1. そうすると削除ボタンが出てくるので、削除をクリックします

以上でプラグインを削除することが可能です。

元記事を表示

クリぼっちを宣言するだけのものを作りました #クリぼっちーず #クソアプリアドベントカレンダー

(導入部分)

##クソアプリアドベントカレンダー参加のきっかけ

##なぜクリぼっちーずを作ったのか

##どんなふうに作ったか

##つまづいた点

##気づいた点

##ひとこと

##まとめ

元記事を表示

ZipArchiveでハマってしまった件

この記事は[コネヒトの Advent Calendar 2021 – Qiita](https://qiita.com/advent-calendar/2021/connehito) 12日目の記事です。

今回は私自身がハマった [PHP: ZipArchive](https://www.php.net/manual/ja/class.ziparchive.php)クラスについて紹介しようと思います。

.

検証用のコードはGitHubにアップしてあります。

– [labo/php/zip_archive at main · satoshi-nishinaka/labo](https://github.com/satoshi-nishinaka/labo/tree/main/php/zip_archive)

## どうしたの? なにがあったの?

ZipArchiveとは名前の通り、複数ファイルを纏めてZipファイル化するための機能がまとめられたクラスです。

業務でパスワード付きZipファイルを作成する事があるのですが、今回ハマったのはこのパスワード設定についてです。

元記事を表示

lxd+zerotierで自宅サーバ上にPHPの開発環境用のimageを作る

この記事はビットスターのアドベントカレンダー12日目です。

## 要件

– vscodeからSSH接続して開発できること
– gitが利用できること
– ubuntuを利用すること
– VPNサービスzerotierのネットワークに追加すること
– mysqlの利用ができること
– composerが利用できること

## 環境

どこのご家庭にも2~3台はある普通の自宅サーバ

– Ubuntu 20.04.3 LTS

– LXD 4.20

## image用コンテナを作成

ホストからコンテナを作成する。
ホストに登録している鍵がそのまま利用できるようにコンテナに転送する。

“`shell
lxc launch ubuntu:20.04 test
lxc file push ~/.ssh/authorized_keys test/root/.ssh/authorized_keys
lxc exec test — bash
“`

## PHP、mysqlのインストール

コンテナに必要なパッケージをインストールする。
今回はPHP7.4、mysql8

元記事を表示

Laravel Octaneの開発時のハマりポイントと回避方法について

本記事は、[サムザップ Advent Calendar 2021](https://qiita.com/advent-calendar/2021/sumzap)の12/12の記事です。

# はじめに
Laravel Octane(Swoole版)でアプリケーションをつくるときにはまったポイントを紹介していきます

ハマりポイントをすぐ知りたい方は、ローカルの開発環境構築はすっとばしてください(サンプルアプリケーションの構築から読んでください)

# ローカルの開発環境構築
基本は[公式ドキュメント](https://laravel.com/docs/8.x/octane)にしたがって構築していきます
今回は、[Laravel Sail](https://laravel.com/docs/8.x/sail)を使う方法を選択しています

### Laravel アプリケーションの作成
まずはLaravelのアプリケーションを作成します

“`shell-session
$ composer create-project laravel/laravel sample
“`

## La

元記事を表示

Symbolの生きているノードリストの作成方法について

# 概要

Symbolには全世界に分散化された多数のフルノードが存在します。それらのフルノードではREST APIが有効化されており、開発者はそのREST APIを利用しブロックチェーン上のデータを参照、トランザクションを送信したりすることになります。

例えば、WEB開発を行う場合は、このようにしてノードURLを指定してリポジトリを生成するとことになります。

“`javascript
const repositoryFactory = new SymbolSdk.RepositoryFactoryHttp(“http://dual-1.nodes-xym.work:3000”);
“`

このノードURLは、Symbolエクスプローラーのノードリストより取得できるようになっています。

* メインネット: https://symbol.fyi/nodes
* テストネット:https://testnet.symbol.fyi/nodes

または、下記のようなノードリストもありますので参考にされると良いでしょう。

* メインネット: https://symbolnodes.

元記事を表示

【PHP】MacM1でPHP7.4をインストールする方法

## 利用環境
MacOS:BigSur
バージョン:11.6.1
チップ:Apple M1

## PHPインストールの手順
※ここでは「Homebrew」はインストール済み前提で進めます。

念の為、Homebrewでアップデートが必要ないか確認しました。

“`terminal:ターミナル
brew doctor
“`

ターミナル起動する前に「Rosettaを使用して開く」にチェックをつけておきます。
参考資料:https://blog.looseknot.jp/mac/m1mac_terminal_rosetta.html

確認後、ターミナルを起動し下記を実行
※管理者パスワードが求められます

“`terminal:ターミナル
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
“`

次にPHPをインストールします。

“`terminal:ターミナル
brew install php@7.4
“`

インストールが無事

元記事を表示

【備忘録】【Wordpress】wp_enqueue_style()は特定の第一引数を渡すと予想外の挙動を引き起こす

タイトルの通り。これで2時間ぐらい無駄にしたので書き残しておく。
テーマを読み込むとき、“`wp_enqueue_style()“`を使うが、

“`functions.php
wp_enqueue_style(
‘about’,
get_theme_file_uri(“/css/about.css”),
array(),
false,
‘all’
);
“`

これをやると通常
“`wp-content/themes/(テーマ名)/css/about.css“`
を参照するはずが、
“`wp-admin/css/about.min.css“`
からcssを取ってくる。
このファイルは別に自分で生成したわけではなく、Wordpressをインストールした時点で入っている。

この問題は第一引数を“`”bio”“`に変えたら(自分は念のためaboutを含むファイル名から何から全部変えたが)解決した。
多分”about”は既に定義されているのだと思う。他にも”content”などの文字列を渡すと同様の問題が起こるらしい。

ちなみに“`wp_enq

元記事を表示

PHP 開発で必須の標準出力チートシート

この記事は [株式会社サイバー・バズ Advent calendar 2021](https://qiita.com/advent-calendar/2021/cyberbuzz) 11日目の記事です。

10日目の記事は [一年間で「大きく成長できた」と感じたターニング技術一覧!](https://qiita.com/Hirochon/items/d8071f19ad4159a3408f) 、
12日目の記事は [GoogleAppsScript(GAS)で効率化する時になんだかんだよく使うコードスニペット10選](https://qiita.com/kashira2339/items/d0e399a97bf586132ea1) です。

# 本題

PHP を使い始めて3ヶ月、未だに標準出力を雰囲気で使っているので、自戒も兼ねてまとめました。

– **前半:標準出力のについておさらい**
– **後半:チートシート**

という構成で進めます。

手っ取り早く**「チートシートだけ見たい!!!」**って方は [PHP標準出力チートシート](https://qiita.com/Ro

元記事を表示

OTHERカテゴリの最新記事