- 0.0.1. PHPでファイルのタイムスタンプをマイクロ秒精度で取得するには
- 0.0.2. PHPでフォーム入力、確認、完了画面の学習(FWなし)
- 0.0.3. 【PHP】マイナーフレームワーク「Flow」を試してみる~認証編~
- 0.0.4. CSRF対策について
- 0.0.5. Github private リポジトリを composer installするときの注意点
- 0.0.6. Laravelのpluckは便利ですよって話
- 0.0.7. Laravel Debugbarとエディタを連携させる
- 0.0.8. MacOS上でDockerをREST APIを用いて操作するやり方
- 0.0.9. クラスとインスタンスについて。初学者が理解するに至ったイメージ。
- 0.0.10. 【2024年 目標について】
- 0.0.11. 【Docker Compose】DooDを使って、PHPファイルからPythonコンテナ内のPythonファイルを呼び出す方法
- 0.0.12. 大学生の私が初めてPHPerKaigi2024でスタッフをやった話
- 0.0.13. Bootstrapを使ってデザインする
- 1. Bootstrapとは?
- 2. インストール方法
PHPでファイルのタイムスタンプをマイクロ秒精度で取得するには
Linux系OSなら素直に`stat`コマンドを使ったほうが早い。
## ファイルのマイクロ秒単位での最終修正タイムスタンプ
“`php
/**
* ファイルのマイクロ秒単位での最終修正タイムスタンプを返します。
*
* @param \SplFileInfo|string $file ファイルパス
* @return string|false ファイルのマイクロ秒単位での最終修正タイムスタンプの文字列表現 取得に失敗した場合はfalse
*/
function micro_mtime(\SplFileInfo|string $file): string|false
{
$pipes = [];$process = \proc_open([‘stat’, ‘–format=%z’, \is_string($file) ? $file : $file->getPathname()], [
0 => [‘pipe’, ‘r’],
1 => [‘pipe’, ‘w’],
PHPでフォーム入力、確認、完了画面の学習(FWなし)
# 1. 入力画面、確認画面、完了画面のフラグを定義する
$pageFlagは下記のように定義してみる
入力画面のフラグ : $pageFlag = 0;
確認画面のフラグ : $pageFlag = 1;
完了画面のフラグ : $pageFlag = 2;
“`php:form.php
Document
入力画面
【PHP】マイナーフレームワーク「Flow」を試してみる~認証編~
# 初めに
前回は[こちら](https://qiita.com/nnhkrnk/items/ffe50dd90d886f50f73e)の記事で、Flowにおけるイベント管理について書きました。
今回はFlowで**ログイン処理**を実装してみましょう。# 前提知識
まずは、Flowで認証処理を実装するために抑えておきたい知識を説明します。## どの認証方式を使うか
認証といっても、**パスワードやキーやSSOなど、様々な種類があります**。
Flowでは、それらの**認証方式の実現するための2つのインターフェース**が用意されています。
* **[1. 認証プロバイダ](https://github.com/neos/flow/blob/8.3/Classes/Security/Authentication/AuthenticationProviderInterface.php)**
* **[2. トークン](https://github.com/neos/flow/blob/8.3/Classes/Security/Authentication/TokenInterfac
CSRF対策について
PHPでのCSRF対策についてアウトプットとして記事をまとめる。
## 1.初めに
CSRFとはWebアプリケーションに存在する脆弱性、もしくはその脆弱性を利用した攻撃方法のこと。## 2.具体例
ログイン済みのログイン情報をセッションで保存していると、他人がログイン可能となり不正ログインされる可能性がある。
その対策として、**ワンタイムトークン**を利用した対策を紹介する。## 3. ワンタイムトークンとは
簡単に1度きりの**合言葉**を生成し、その合言葉が一致した場合のみログインを認め、それ以外は不正リクエストとして拒否する。### 3.1 実装手順
1. トークンによるリクエストチェック
2. ユーザ操作によるリクエストの送信時にトークン(合言葉)をランダム生成する
3. リクエストと共に、トークンをセッションに格納かつPOST送信する
4. 受け取ったトークンとセッションに格納されているトークンを照合する
5. 一致していれば正規リクエストとして正常処理し、
6. 不一致なら不正リクエストとして拒否する### 3.2 実装
“`php:form.ph
Github private リポジトリを composer installするときの注意点
## 記事対象者
(一般ユーザとしてcomposer installしており、)後述のエラー事象が発生してる方。## 前提
organization/repos-name というプライベートリポジトリをcomposer installしようとする。
## エラー事象
composer install 時に以下のエラーが発生。
“
Failed to download laravel/framework from dist: The “https://api.github.com/repos/organization/repos-name/zipball/xxxxxxx” file could not be downloaded (HTTP/2 404 ): {“message”:”Not Found”,”documentation_url”:”https://docs.github.com/rest/repos/contents#download-a-repository-archive-zip”} Now trying to download from source
`
Laravelのpluckは便利ですよって話
### はじめに
Laravelで開発していると必ずと言っていいほど出てくるpluckですが、Collection型配列を整頓するだけではない魅力も感じたので記事に起こそうと思いました。
状況に次第ではありますが実はEloquentで使用するとselect関数が必要なくなるんです
### 基本機能
Readoubleからそのまま引用してしまいますが、基本的な機能としては、
指定したキーのコレクション値を取得します
第1引数にvalueを、第2引数にはkeyを入れます
第1引数のみであれば、valueだけを
“`php
$collection = collect([
[‘product_id’ => ‘prod-100’, ‘name’ => ‘Desk’],
[‘product_id’ => ‘prod-200’, ‘name’ => ‘Chair’],
]);$plucked = $collection->pluck(‘name’);
$plucked->all();
// [‘Desk’, ‘Chair’]
“`さらに、コレクションの
Laravel Debugbarとエディタを連携させる
Laravelでの開発時にDebugbarとエディタを連携させブラウザでの出力とシームレスに連携してコーディングを行うためのTIPSです。
インストールや初期設定などは行っている状態での説明になります。
上記に関する詳しい解説は以下をご参照ください。https://qiita.com/sano1202/items/6021856b70e4f8d3dc3d
https://qiita.com/ucan-lab/items/8eab84e37421f907dea0
# デバッグしたい
Laravelでも何でもそうですが、開発している時は**とりあえずデバッグしたい**と考えるかと思います。
xdebugをインストール・設定してリモートデバッグしてもいいのですが、お手軽に環境を作りたいです。## Laravel Debugbar
利用する場合はcomposer経由でインストールし
“`shell:composer
composer require –dev barryvdh/laravel-debugbar
“`
設定を下記のように有効にするだけです。
“`php:.
MacOS上でDockerをREST APIを用いて操作するやり方
今回はMacOS上で開発をするうえで、DockerをREST APIを用いて操作する際のやり方を紹介していきたいと思います。
DockerはREST APIを用いてDockerコンテナ自体の立ち上げから停止などの様々な動作を執り行うことができます。
まず最初に、Dockerの設定を変更する必要があります。
![スクリーンショット 2024-03-21 9.34.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998838/290120a1-4d34-c5d8-4410-8c54918bc27e.png)まず最初にPreferencesをクリックします。
そうすると設定画面が表示されますので、その画面の
![スクリーンショット 2024-03-21 9.35.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/998838/782082f3-4c0e-b12d-ad7b-28fe3d43f9a9.png)Do
クラスとインスタンスについて。初学者が理解するに至ったイメージ。
## まえがき
PHPのクラスとインスタンスについて書こうと思います。
よく、クラスは設計図でインスタンスは出来上がったもの。みたいな解説を見ます。
これの意味が全く理解できず沼ったので、同じように沼った方の助けになれば。なんとなく理解した後であればわからなくもない表現ですが…。## クラス
PHPにおけるクラスとは
“`php:index.php
class Xxx{}
“`これがクラスです。
– class と宣言をし
– xxx クラスに名前をつけます
– {} の中にクラスの素材をいれていきますじゃあクラスって何いれんの? となりますが基本的に入れるのは 変数 と 関数 この二つです。
なんでいれるの?って話ですが…
規模によっては、関数や変数の数が1000以上あったりします。とんでもない数です。
関数を改造したりと管理しやすいように、似た機能のものなどでグループ分けします。
SNSなどを例にすると
– ログインログアウトアカウント作成などの認証クラス
– 文字や写真を投稿するクラス
– お気に入りや拡散などオプション系のクラス
– などなど
このよ
【2024年 目標について】
2024年の目標を書いていく
現在のスキル
・ExcelVBA
・AccessVBA
・SQL
・PHP(Laravel)
・GitHUB
・DBAシルバーの合格(5月までに)
・機械学習(ニューラルネットワーク)の勉強
*地震のデータ分析
・Python(django)で1つwebアプリケーション作る
理祖は、デプロイまでする。
・dockerを使う1年後に結果報告していく。
終わればここに報告していく
【Docker Compose】DooDを使って、PHPファイルからPythonコンテナ内のPythonファイルを呼び出す方法
## はじめに
備忘録
タイトルの通りです。
どなたかのお役に立てれば幸いです。## ディレクトリ/ファイル構造
以下のような構造であるとします。
“`
sample/
├─ web/
│ ├─ src/
│ │ └─test.php
│ └─ Dockerfile
│
├─ python/
│ ├─ src/
│ │ └─test.py
│ └─ Dockerfile
│
└─ docker-compose.yml
“`## `python/test.py`
今回は以下のようなプログラムとします。
“`python:python/test.py
list = [
‘Apple’,
‘Banana’,
‘Orange’,
‘Kiwi’,
‘Strawberry’,
‘Mango’
]for data in list:
print(data)
“`## `web/`について
`exec`関数を使って、`$command`で指
大学生の私が初めてPHPerKaigi2024でスタッフをやった話
みなさん、こんにちは!
わたしは現在(2024年3月時点)、情報系大学3年でエンジニアを目指しています。
ぜひX(旧Twitter)もフォローしてください(宣伝です)今回、PHPerKaigi2024へスタッフとして参加しましたので、その感想と参加したことない人へもぜひ読んでもらいたいと思い書きました。
## 1. 読んでもらいたい人
– **PHPerKaigi含め、カンファレンスに参加したことがない人**
– PHPerKaigiに参加したことない人
– PHPerkaigiに参加したことがある人
結局全員ですねw
特に知らない人に読んでいただきたいです!## 2. PHPerKaigiとは
![IMG_3211](https://github.com/ShotaArima/qiita/assets/130956497/36fa51df-ae19-4b05-bd2d-bcd521636caf)
>PHPerKaigi(ペチパーカイギ)は、PHPer、つまり、現在PHPを使用している方、過去にPHPを
Bootstrapを使ってデザインする
Bootstrapとは?
デザインを簡単にできるフレームワーク!
CSSにこだわる時間を省きたいときに使うと便利。
カスタムもできるため、好みにも変えられる。公式ドキュメント:
https://getbootstrap.jp/
インストール方法
1.公式ドキュメントのダウンロードページを参照する。
https://getbootstrap.jp/docs/5.3/getting-started/download/
今回はPHPで実装するため、composerを使ってrequireする。
“`PHP:Docker
docker-compose exec app composer require twbs/bootstrap:5.3.0
“`
2.エディタに戻り、vendor/twds/bootstrapがあることを確認。
詳しいファイル構成は公式ドキュメントのコンテンツを確認。↓
https://ge
Pythonで認証コードを返すだけのマイクラサーバーを作ってみる
# はじめに
接続したときに「あなたの認証コードは〇〇です」みたいなの返すやつ作ってみたい
[前の記事](https://qiita.com/n_mache/items/b76cff45e3b99a65a3a0)書いてて「これサーバー側も作れそう」ってなったからやってみる
# Quarry
[Quarry](https://pypi.org/project/quarry/)ってモジュールを見つけたけど、どうやら更新が止まってて1.20.4では機能しないらしい…
1から実装するしか無さそう?
# 実際にやってみる
認証コード返すだけのサーバーだし、ステータスとログイン処理さえあればいいはず
## モジュール
`cryptography` と `requests` だけ標準で入ってないから `pip install` で入れないと動かない
“`python
import socket #TCP通信とかをするやつ
import json #JSONをパースしてくれるやつ
import struct #バイナリを簡単にするやつ(?)
import threading #同時接続とかをする
AWS RDSのデータベースを使用したPHPの掲示板で時刻表示が直らなかった原因
## 初心者がPHPで掲示板を作成しました
– HTMLやCSSは使っていたことがありますが、初めてPHPを触り掲示板を作成することになりました。
– フォームから投稿した時刻がどうしてもずれてしまい、php.iniを変更してみたり色々と調べてみても修正出来ず、原因に辿り付くまでに時間が掛かりました。
– もし同じようなことで躓く方がいた場合の参考になればと思ったのと、自身のアウトプットのために今回投稿してみました。
– というか少し考えればすぐに分かるかもですが…初心者のため温かい目で見て下さると幸いです。## 動作環境
– AWS EC2上にLAMP構成としています。
– Linux2
– Apache
– MariaDB
– PHP8.1## 時刻がズレていた原因
– 結論から書きますと、原因はRDSの設定でした。
– 「PHPで掲示板を作成しフォームから投稿する」というものから「原因はPHPの設定だ」と信じて疑っていなかった為、PHP上の設定をどうにか修正しようとあれこれ試してみたものの直らず、どれだけ検索しても答えが見付からず頭を抱えていました…。
– よくよく考
ダミー情報を生成する定番.
ダミー情報を生成する定番を生成する定番のコードを記載します.
Composerを使用し’faker’をインストールします.
“`
composer require fakerphp/faker
“`
使用方法例のコードとしてcsv出力するコードを記載(下記).
“`php
json_encodeのエラーについて調べた
# json_encodeのエラーについて調べた
[var_dump](https://www.php.net/manual/ja/function.var-dump.php) くらいの気軽さで [json_encode](https://www.php.net/manual/ja/function.json-encode.php) を使っていたが、エラー時の動作でハマったので調査した。
## ハマった点
`json_encode` に渡した array の中に、文字コードSJISの文字列が混じっていて失敗していた。“`php
bool(false)
“``json_encode` は正常に動作すると JSON形式の文字列が返るが、エラーがあった場合に WARNING がでたり例外発生したりはしない。
ただ `false` を返すだけ。そのせいで特定に手間取った。## エラーの
初めてLaravelを実装した時にレビューで指摘されたこと〜レビューの数だけ強くなれる〜
# はじめに
こんにちは、mamiと申します。
メインはフロントエンドエンジニアをやっております。
最近社内のプロジェクトでバックエンドの実装全般を担当させてもらっているのですが、レビュー内容が非常に勉強になったため今後の自分の糧とする目的+同じようにバックエンドがジュニアレベルのエンジニアの方にお役に立てればいいなと思いこの記事を書いております。レビュアーの方は常々Laravel公式ドキュメントに則った指摘をしてくださるので、その点においても非常に参考になる部分が多いはずです。
Laravelを仕事で使う予定、もしくは現在使っている方は是非参考にしてみてください!~~人の失敗は蜜の味~~同じ轍を踏まない為にも、私の屍をどうぞ超えていってください!
# 対象読者
– Laravelについて実務レベルで知りたい方
– Laravelをもっと深く知りたい方
– バックエンドの駆け出しエンジニアの方
– バックエンドも知りたいフロントエンドエンジニアの方# レビュー内容
では早速ですが実際のレビュー内容を見ていきましょう!
## Enumの設定
PHPで論理型を文字列に変換する際の言語仕様をリファレンスから調べる & php-srcのソースを書き換えて挙動を変えてみる
最近 Laravel でWebアプリの開発を始めたのですが、PHP の言語仕様のうち論理型から文字列へのキャストが思っていた振る舞いと違っていたので仕様を調べてみました。
# 環境
M1 Mac 上に建てた Ubuntu のコンテナです。
“`
$ uname -a
Linux b59ec1c5b53c 6.5.11-linuxkit #1 SMP PREEMPT Wed Dec 6 17:08:31 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux$ cat /etc/os-release
PRETTY_NAME=”Ubuntu 22.04.4 LTS”
NAME=”Ubuntu”
VERSION_ID=”22.04″
VERSION=”22.04.4 LTS (Jammy Jellyfish)”
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL=”https://www.ubuntu.com/”
SUPPORT_URL=”https://help.ubuntu.com/
XAMPPでMySQLが起動できなかったときのメモ
## はじめに
「気づけばプロ並みPHP」という書籍で学習中にXAMPPで環境を用意する必要があり、その際に書籍通りに操作したところapacheなどは起動することができたのですが、MySQLは起動しなかったのでその原因と解決についてまとめました。
【環境】
MacOS
xampp 7.2.3## 結論
**原因**
もともと入れていたMySQLがずっと動いていて、
かつ自動で再起動していたため、
xamppで使うport番号と被ってしまっていたことが原因でした。**解決策**
**ポート番号が使用されているかを確認**
“$ sudo lsof -i:3306“
**利用されていた場合そのプロセスをkillする**
“$ sudo kill -9“ **自動で再起動になっている場合はそれも止める**
“$ brew services stop mysql“## 概要
冒頭の説明のままですが、MySQLを選択しstartをクリックしても緑色のランプにならなかったため、![スクリーンショット 2024-03-18 23.38.51.png