- 0.0.1. GPTsでドキュメント生成ツールを作成しました。
- 0.0.2. 個人的メモ (PHPなど)
- 0.0.3. Laravelでドメイン別にルーティング
- 0.0.4. RUN pecl install imagickでインストールできないからソースからインストール
- 0.0.5. 【TypeScript × PHP】ReactとLaravelで経路共有アプリを作った話
- 0.0.6. 【PHP/Slim4】1.軽量フレームワーク(Slim4-skeleton) 環境構築
- 0.0.7. 【PHP】ファイルサーバーをPHPで作ってみた
- 0.0.8. ローカル環境にLaravelのプロジェクトを作成し、実行するだけ
- 0.0.9. ブラウザでやり取りできるようにしてみた。
- 0.0.10. Amazon SESを用いてHTMLメールを送信する
- 1. AWS Amazon Simple Email Service Test Email
- 1.0.1. あなたの作った画像アップローダー、投稿者の個人情報ダダ洩れだよ!
- 1.0.2. ドメイン駆動設計(DDD)とクリーンアーキテクチャの違いについて覚え書き
- 1.0.3. 【PHP8.3】ランディングページが日本語訳されてなかったので深い悲しみに包まれた
- 1.0.4. microCMS × PHP レンタルサーバーで構築
- 1.0.5. LaravelでAuth::attempt()には’password’を渡すこと
- 1.0.6. 【Laravel】「500エラー」時はDB接続を確認!
- 1.0.7. PHP ファイルの内容をブラウザに表示し、意図的に文字化けさせたい場合
- 1.0.8. Laravel(PHPのフレームワークの1つ)CSS罠 ※CSSは当たっていても反映されないときがある件
- 1.0.9. 変数のスコープ JavaScriptとPHPの違い
- 1.0.10. 【PHP】マイナーフレームワーク「Flow」を試してみる~DB接続&データ登録編~
GPTsでドキュメント生成ツールを作成しました。
# GPTsでドキュメント生成ツールの作成
GPTsでプロンプトにコードを貼り付けるだけで関数のドキュメントや1行1行に処理の説明を入れてくれる「**Coding Documentation GPT**」を作成しました。使ってみてください。
使用した後に意見をいただけると幸いです。https://chat.openai.com/g/g-6V7SNo6F2-coding-documentation-gpt
—
## 使い方
ドキュメントや生成したいコードを貼り付けるだけです。
下記みたいに雑にプロンプト投げてもらって大丈夫です笑プロンプト例
“`text
User
import os
import tweepydef tweet(consumer_key, consumer_secret, access_token, access_secret):
#オブジェクト作成
client = tweepy.Client(
consumer_key = CONSUMER_KEY,
consumer_secret = CONSUMER_
個人的メモ (PHPなど)
PHPやSQLなどの学習内容などを追加していく。
特にメモしておいた方が良さそうなことなど。
学習リポジトリは[ここ](https://github.com/Hiro710/PHP_learning)頑張る🐘~
# PHP
### 共通事項
変数定義、代入、出力などの後ろに「;」を必ずつける。
つけないとエラーになる。HTML内にPHPタグを挿入
PHPタグの詳しい説明は[公式サイト](https://www.php.net/manual/ja/language.basic-syntax.phptags.php)へ。“`
“`PHPではechoタグの省略形も使える
“`
// 以下は と同じ意味
= 'Hello' ?>
“`### PHPを外部ファイルから読み込みたい時
非常によくまとめられている。
https://qiita.com/nogson/items/db15d6e35433154fce8e
ほか参考
https://kanda-
Laravelでドメイン別にルーティング
Laravelでドメインごとにルーティングを分ける方法は、公式ドキュメントにて丁寧に説明してあります。
その上で、実際に開発していく中で必要になった応用的な内容をまとめます。
## 基本形
https://readouble.com/laravel/10.x/ja/routing.html公式ドキュメントから抜粋して追記
“`php:routes/web.php
Route::domain(‘{account}.example.com’)->group(function () {
Route::get(‘user/{id}’, function (string $account, string $id) {
// accountとidのように、パスとドメインからパラメータを取得できる。
});
Route::post(…
// ルーティングルールを列記していく
});
“`
この例の場合、例えばECプラットフォームやブログサービスのように、アカウントごとにサブドメインを分けたりする時に便利に使えるかと思います。
サブドメインの
RUN pecl install imagickでインストールできないからソースからインストール
先日までpecl install imagickができていたのに出来なくなって
昔とった杵柄(phpize configure make make install)で頑張ってみた## 駄目だったパターン
Dockerfile
“`Dockerfile
FROM php:8-apache-bullseye
〜〜
RUN apt install -y imagemagick libmagickwand-dev
RUN pecl install imagick
“`
“`
#17 15.94 PHP-Parser-5.0.0alpha3/lib/PhpParser/PrettyPrinterAbstract.php
#17 15.94 PHP-Parser-5.0.0alpha3/lib/PhpParser/Token.php
#17 15.94 PHP-Parser-5.0.0alpha3/lib/PhpParser/compatibility_tokens.php
#17 15.94 PHP-Parser-5.0.0alpha3/phpstan-baseline.neon
【TypeScript × PHP】ReactとLaravelで経路共有アプリを作った話
# 🚙 はじめに
ReactとPHPを用いてwebアプリを開発したので制作記録として解説を掲載したいと思います.また筆者はフルスタック開発初心者であるため,至らぬ点があるかと思われますがご了承くだいさい.# 🚙 自己紹介
初めまして.趣味でweb開発を勉強している273*(ツナサンド) / Kei.と申します.関西の大学生です.最近はフルスタック開発を行なっています.初心者です.# 🚙 完成品
以下のリンクからwebアプリにアクセスできます.https://github.com/273Do/Route8
[サイトURL](URL)
最終調整につき公開停止中
# 🚙 制作に至った経緯
私は趣味で友人とサイクリングやドライブによく行くのですが,経路を選定する際に他の人の経路を参考にしたいと感じたことが多々ありました.「経路を共有できるサービス」は既に存在しますが,私調べではただ経路を共有するだけのものばかりでした.そこで,独自のサービスを開発したいと思いました.走行時の感想や天候,移動手段なども併せて投稿できるようにすることで,より詳しく経路を選定することができるように
【PHP/Slim4】1.軽量フレームワーク(Slim4-skeleton) 環境構築
軽量な機能のWeb APIを作成したい
Laravelのようなフルスタックではなく、軽量なフレームワークで簡単に構築したい
ということで、Slim4を使ってみたときのメモ書き## Step1.Slim4-skeleton環境の構築
git bashなどcomposeが使える環境を用意し、以下のコマンドを実行
Slim4-skeletonプロジェクト一式がダウンロードされる
~~~js
composer create-project slim/slim-skeleton [任意のプロジェクト名]
~~~#### 補足.フォルダ構成について
最上位の親ディレクトリは、上記のコマンドで入力した「プロジェクト名」でフォルダが生成される
|階層1|階層2|階層3|編集|概要|
|—|—|—|—|—|
|app|dependencies.php||〇|ライブラリのコンテナ生成
Twingなどのライブラリをcomposeで追加後、依存関係の解決|
||settings.php||〇|環境変数設定やライブラリの設定
||middleware.php||〇|ライブラリを
【PHP】ファイルサーバーをPHPで作ってみた
こんにちは、技術猫です。
(初投稿です)ApacheとPHP(とTailwind CSS)でファイルサーバーを作ってみました。
この記事では、ログイン機能に必要なJSONファイルの読み取りの方法や、
ファイルのアップロード機能の実装方法などを紹介します。
そしておまけで、PHPでのコマンドの実行方法などを紹介します。:::note info
コード内のコメントアウトされてる部分を読むと意味がわかるよ!
::::::note alert
この記事で紹介するコードの一部は、セキュリティが万全ではない可能性があります。
社外などに公開することは推奨しません!
:::## ソース
https://github.com/DiamondGotCat/tcloud
作成した全部のソースコードはGitHubのreleaseにてMITライセンスで配布しています。
一応ApacheとPHPがあれば使えます。(テスト環境はmacOS)
## ログイン機能
ログイン機能は、最初はパスワードハッシュをPHP内で書いていましたが、
後から出てくる「ユーザー追加機能」という機能が必要なため、
ローカル環境にLaravelのプロジェクトを作成し、実行するだけ
開発環境はWindows10 Pro(64bit) + PHP 8.1.9 + Composer version 2.4.1。
1 コマンドプロンプト上でカレントディレクトリをCドライブ直下に移動
“`bat
cd c:\
“`2 コマンドプロンプト上でLaravelのプロジェクトを実行
“`bat
composer create-project laravel/laravel laravel_test_repo
“`:::note info
インストールが実行されるので、しばらく待機する。
Laravelのバージョンは10.2.9。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2739418/f7d8d072-f93f-c0fd-a670-322663e63721.png):::
3 インストールが終了したら、コマンドプロンプト上で、プロジェクトのディレクトリへ移動する
“`bat
cd laravel_test_repo
“`4 コマンドプロンプ
ブラウザでやり取りできるようにしてみた。
![Animation_xampp_on2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3625232/9c1feb9c-b853-c831-814d-665762e559a8.gif)
備忘録 ホームページにも忘れずに書いておくこと。
やったことは、インストールと立ち上げ。
apache のconfigに書き足す事。
textを作り、書き込んで保存すること。
アドレスは忘れないようにメモをしておくこと。
Apach2_4 php8apach2_4.dllのためXampp3を導入。ruby,pythonはapache2.2でも動く。
サーバーアドレスは127.0.0.1 ネームはlocalhost メールアドレスは内緒や。
後は、出たとこ勝負。xamppは警告出すから、フォルダーを作っておく。他もアドレスのため独立させた「-」はプログラムでまいなすに間違わない様に「_(アンダースコア)」わからんことはcopilotiに聞く。
VSCoodo,terapad,Screen To Gif,Visual S
Amazon SESを用いてHTMLメールを送信する
# SDKをインストールする
“`
composer require aws/aws-sdk-php
“`# SDKを用いたコード
“`PHP
use Aws\Ses\Exception\SesException;
use Aws\Ses\SesClient;$ses = new SesClient([
‘profile’ => ‘default’,
‘region’ => ‘us-west-2’, //任意のもの
‘version’ => ‘2010-12-01’
])//送信対象のメールのリスト
$mailList = [‘aaa@aaa.com’, ‘bbb@bbb.com’];//HTMlメールのボディ
$html = ‘AWS Amazon Simple Email Service Test Email
‘.
‘This email was sent with ‘.
‘Amazon SES
あなたの作った画像アップローダー、投稿者の個人情報ダダ洩れだよ!
# 自前のアップローダーで起きる問題
## 開発者 ――
インフルエンサーとファンをつなぐコミュニティサイト「Qitter」を作ったぞ!
テキストと画像をPOSTするだけのシステムだから、全部自前の実装で作っちゃったぞ。![job_programmer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151137/c22ba9e5-5df0-8906-6dbf-ca44cccc30b2.png)
## 投稿者 ――
今日もQitterに投稿しなくちゃ!
「晩ご飯なう!」![photo_jidori.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151137/be600a9a-44fa-5be4-6d0b-353de9dec033.png)
## 閲覧者 ――
「推しちゃんの投稿キター!」
「推しちゃんの投稿した画像は全部保存しちゃうぞ!」![kanki.png](https://qiita-image-s
ドメイン駆動設計(DDD)とクリーンアーキテクチャの違いについて覚え書き
[こちら](https://qiita.com/remi_ts/items/cf6d1b3b131db4cd1e79)の記事にも書いた事のおさらいと補足。
その後、サンプルプログラムによる差異を掲載。# 二つの違い
:::note info
ドメイン駆動設計(DDD)
焦点
DDDは、複雑なビジネスロジックの専門知識をソフトウェア設計の中心に置き、ドメイン内での言語(ユビキタス言語)やモデルを重視主要概念
* ドメインモデル
ビジネスドメインの概念とその関係をモデル化したもの。
* ユビキタス言語
ビジネスと開発チーム間のコミュニケーションギャップを埋める共通言語
* 集約
関連するオブジェクトの集まりで、一貫性のある変更単位を提供メリットとデメリット
利点
ビジネス要件と密接に連携した設計が可能。欠点
* 複雑性
ビジネスロジックが複雑なアプリケーションに適している分、小規模あるいは単純なアプリケーションでは過剰となる。
* 実装の難
【PHP8.3】ランディングページが日本語訳されてなかったので深い悲しみに包まれた
[PHP8.3のランディングページ](https://www.php.net/releases/8.3/)がありますね。
右上のChange languageに日本語がありませんね。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/86f5c968-9802-a18c-fabf-889824e4204f.png)
深い悲しみに包まれたので増やした。
![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/eb7a4ef4-3541-d577-3c91-d537afc638fa.png)
# fork
ランディングページの最下段、`View Source`ってところから[ドキュメントのソース](https://github.com/php/web-php)に進めます。
そこで右上の`Fork`ボタンを押せば、自分のスペースにforkされます。# branch
作業用にブ
microCMS × PHP レンタルサーバーで構築
## お客さんのレンタルサーバー
クライアントが用意したレンタルサーバーへftp接続している状況でmicroCMSを使用したい、というパターンではJamstack構成を組めない。PHPが使用できるなら、それが最も手っ取り早くmicroCMSを組むこめる方法かもしれない。
## microCMSが提供しているSDKを利用するべきか
microCMSでは、PHPを使用するためのSDKが用意されている。
しかし、このSDKを利用するためには、composerというPHPのバージョン管理アプリが必要となる。このcomposerを、**人さまのサーバーに勝手にインストールしてよいはずがない。**
## SDKを利用せず、PHPのみの実装
SDKは使わないでPHPだけで書く方法はあって、それは簡単に実装できた。
一覧ページと個別ページだけなら、2ファイルだけで済む。
実際にはAPIキーの隠蔽は別途行うのでアクセス権限を設定したディレクトリに変数を格納しておく必要があるが、わかりやすく2ファイルだけにすると以下のようになる。### 一覧ページ
“`archive.php
LaravelでAuth::attempt()には’password’を渡すこと
## 前書き
以下の環境で実行した内容となります。– PHP 8.2
– Laravel 10.31.0## 背景
Laravel10を使って開発中、認証機能を使いたいものの既存テーブルにあるユーザー情報を活用したいと思いました。
そのまま利用してもLaravelのusersテーブルを探しに行ってしまうので、既存テーブルに指定すればよいと楽観視していました。
ここでは例として以下のような構造とします。テーブル名:login
| userID | pass |
|:-:|:-:|
|user1|\\$2y\\$..|## 変更点
– Models\User のクラスにテーブルを指定
– テーブル構造が異なるのでその他設定を追加“`
class User extends Authenticatable
{
…//既存のログインテーブルを使う
protected $table = ‘login’;
protected $primaryKey = ‘userID’;
//remember_tokenはないためfal
【Laravel】「500エラー」時はDB接続を確認!
## 環境
Laravel v9.5.1 (PHP 8.1.2)
AWS
Fly.io(サーバー)
Supabase(データベース)## 要約
500エラーはDB接続が上手くいっていないときに起こりやすいので、環境変数などをもう一度確認しよう## 問題
PHPの練習がてら、Xのクローンアプリを作成。いざFly.ioでデプロイを試みる。
![a08be6b8c3ba304fd4b220099ac40d41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3620668/0b2a43b0-85e5-adf8-189e-9b8684449d9f.png)
おっ、ローカル環境通り上手くいったのでは???
という淡い期待もつかの間、ログイン情報を入力後の画面で「***500 | SERVER ERROR***」が表示された。
![80ce346364a562718ad8ec21ffab3e8f.png](https://qiita-image-store.s3.ap-northeast-1.amazonaw
PHP ファイルの内容をブラウザに表示し、意図的に文字化けさせたい場合
# PHP ファイルをあえて文字化けさせたかったのだが・・・
` の charset:Shift_JIS
* PHP ファイルの文字コード:UTF-8
* PHP ファイル内の `上の条件で、PHP ファイルを表示して文字化けを起こそうとした。しかし、結果は **文字化けせず**。「?」となったが、**原因は単純だった**。
![article4-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3601609/6379344d-9326-d514-90e8-57252e82752a.png)
### ブラウザの表示
![article4-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3601609/03e62ce4-fcf9-346d-21e8-8972c3eae71f.png)### 使用環境
Windows + Apache + PHP
ブラウザ:Google Chrome# 文字化け
Laravel(PHPのフレームワークの1つ)CSS罠 ※CSSは当たっていても反映されないときがある件
Laravelは個人的に一番CSSが沼でした。
私は、Progateと↓の本から、HTML&CSSから、プログラミングを始めたのですが、その後、上記の某プログラミングスクールで、PHP、Laravelを中心にプログラミングの学習カリキュラムを受けました。そのときに感じたというか、個人的に沼にはまり溺れたLaravelでCSSで当てるときの注意点をいくつか挙げます。
https://www.amazon.co.jp/%E3%81%93%E3%82%8C%E3%81%A0%E3%81%91%E3%81%A7%E5%9F%BA%E6%9C%AC%E3%81%8C%E3%81%97%E3%81%A3%E3%81%8B%E3%82%8A%E8%BA%AB%E3%81%AB%E3%81%A4%E3%81%8F-HTML-CSS%EF%BC%86Web%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B31%E5%86%8A%E7%9B%AE%E3%81%AE%E6%9C%AC-Capybara-Design-ebook/dp/B09DPJ1JCT/ref=sr_
変数のスコープ JavaScriptとPHPの違い
## JavaScript(letとconst)
1. {}でエリアが形成される
1. 内のエリアで、外のエリアで宣言された変数を扱うことはできる
1. 外のエリアで、内のエリアで宣言された変数を扱うことはできない
1. 外の複数のエリアで同名の変数が宣言されているとき、最も近いものが扱われる
#### 2. 内のエリアで、外のエリアで宣言された変数を扱うことはできる
“`test.js
const a = ‘aaa’
{
console.log(a) // aaa
}
“`
#### 3. 外のエリアで、内のエリアで宣言された変数を扱うことはできない
“`test.js
{
const b = ‘bbb’
}
console.log(b) // ReferenceError: b is not defined
“`
#### 4. 外の複数のエリアで同名の変数が宣言されているとき、最も近いものが扱われる
“`test.js
const a = ‘a1’, b = ‘b1’
{
const a = ‘a2’
console.log(a, b)
【PHP】マイナーフレームワーク「Flow」を試してみる~DB接続&データ登録編~
# 初めに
前回は[こちら](https://qiita.com/nnhkrnk/items/2b9f647d6130a098345f)の記事でマイナフレームワークFlowを使った簡単なAPI作成を行いました。
今回はMySQLにデータを登録するAPIを作成していきます。# FlowにおけるDB接続処理
Flowはdoctrineと呼ばれるORMを内包しています。
今回はこのライブラリを用いてTBL作成やDB接続を行っていきます。https://www.doctrine-project.org/
## doctrineでできること
doctrineはORM形式でDB操作を行います。
具体的には以下のような特徴を持ちます。
* SELECTなどのDMLを記載する必要がなく、doctrineで用意されているメソッドを利用してDB操作を行う。
* 事前のテーブル作成が不要。1つのTBL対応するデータクラスを作成し、doctrine のmigrateコマンドを実行することでTBL作成を行う。# DB接続試してみた
ということで、DB接続を行うAPIを作成していきましょう。
今回は