- 1. natas0
- 2. natas1
- 2.0.1. AWSのEC2でとりあえずPHP Laravelを動かす
- 2.0.2. 【Laravel】初心者向けプロジェクト作成
- 2.0.3. 【自分用】ミドルウェアとは? / APサーバーとは? / PHPはなぜAP鯖が不要?
- 2.0.4. 【PHP】カンマ区切りを配列に変換する
- 2.0.5. 【Laravel】 General error: 1215 Cannot add foreign key constraint 【エラー】
- 2.0.6. 生のPHPでフリマサービスを作る_part2
- 2.0.7. エンジニアインターン5日目
- 2.0.8. PHPで陳素数を求める
- 2.0.9. CakePHP4 での setTemplates の勘違い
- 2.0.10. Mapbox地図内のクリックした地点で、町丁目ポリゴンと人口データを取得し、表示させてみる
- 2.0.11. 【Laravel】validateメソッドを使ったバリデーション処理
- 2.0.12. 【最低限】Laravel Sailを使った開発環境構築
- 2.0.13. Laravel8でCSSが効かない→nginxのdefault.conf設定ミスだった
- 2.0.14. PHPでアプリを作成してみた【掲示板】
- 2.0.15. PHPerが学ぶGo言語③ 例外処理
- 2.0.16. Laravel9でアプリを作成してみた【ゴミ箱付きToDoリストアプリ】
- 2.0.17. コンストラクタインジェクションを紐解く
- 2.0.18. 生のPHPでフリマサービスを作る_part1
- 2.0.19. 【Smarty】JavaScritpを別ファイルに書くときの読み込みパス
[CTF] OvertheWire Natas 0 to17 Writeup
ウェブセキュリティを扱った[OvertheWire Natas](https://overthewire.org/wargames/natas/)のLevel 0 ~ 17までの解法
## natas0
開発者ツールでソースを確認するだけ
“`html:index.html
natas0
You can find the password for the next level on this page.
“`## natas1
右クリックが禁止されているが、F12キーで開発者ツールを開ける
“`html:index.html
natas1
AWSのEC2でとりあえずPHP Laravelを動かす
今回はこのEC2インスタンスにPHPとnignxをインストールしてLaravelを動かすまで持っていく。
環境
PHP 7.3
Laravel 5.8
Amazon Linux 2
PHP, nginx, php-fpm のインストール
AWSでLaravelを動かすには当然PHPをインストールする必要がある。また、HTTPリクエストを受け付けるために nginx をインストールし、nginx から PHP を起動するための php-fpm というモジュールをインストールする必要があるので、まずこれらをインストールする。これらものジュールをインストールする方法はいくつかある
(1) ansibleなどの構成管理ツールを利用する (2) サーバー構築後に直接コマンドを叩いてインストールする (3) CloudFormation の UserData を利用してインストールする
一番理想なのは (1) のansibleなどを利用する方法だが、ちょっと試すには重すぎるので、今回は (2) の直接コマンドを叩いてインストールする。最後に CloudFormation を利用する方法も
【Laravel】初心者向けプロジェクト作成
composerから以下コマンドで「sample-project」というLaravelプロジェクトを作成しようとすると、
エラーが出た。
“`terminal:プロジェクト作成コマンド
composer create-project laravel/laravel sample-project –prefer-dist
“`
“`terminal:エラー内容
The zip extension and unzip/7z commands are both missing, skipping
“`
#### 対応方法
php.iniファイルを開いて、「;extension=zip」となっているところを「extension=zip」に変更する。
【自分用】ミドルウェアとは? / APサーバーとは? / PHPはなぜAP鯖が不要?
# ミドルウェアって何だっけ?
– OSとアプリケーション(WordPress / 業務アプリとか)の間で動き、
アプリケーションの土台となっている。– OSとアプリケーションの橋渡し的な役割を担うソフトウェアである。
– アプリケーションへのリクエストを処理する。(AP)
\- プログラミング言語で構築されたアプリを実行する。(AP)
Ex. ミドルWeb鯖(動的コンテンツくれ) -> ミドルAP鯖(了解) -> アプリ実行(プログラム)
Ex. クライアント/ブラウザ(静的コンテンツくれ) -> ミドルWeb鯖(了解:静的コンテンツ)– 特定の機能に特化してOSとアプリケーションを補助している。
– アプリケーションがよく利用する高度で専門性が高い機能をパッケージ化し、
別のソフトウェアとしてまとめたもの。
\- アプリケーションがよく利用する機能とは:
アクセス管理、トランザクション管理、セキュリティ管理、ユーザー認証、DB接続など– ミドルがあることによって、アプリは開発の手間を削減できる。
ミドルの機能を呼出して使うことができるから。無かった
【PHP】カンマ区切りを配列に変換する
**「DBの関係でカンマ区切りでデータを保存する」**
ということはよくあります。
カンマ区切りを配列に簡単に変えられたら・・・となりますね。そんな時に便利な関数です。
## explode 文字列を文字列により分割する
explode() を使うと、好きな文字列で区切り文字がある文字列を配列にできます。
“`
$str = “アムロ,シャア,ブライト”;
$str = explode(“,”, $str);
// $str = [“アムロ”, “シャア”, “ブライト”];
“`### URLから必要な情報を取得する時におすすめです
URLから特定の情報が欲しい時に使えます。
URLに持たせている情報で判別したいことはよくあるので。「/」で区切りたい時は、「https://」を除いてから使うと良いでしょう。
もしくは、「?」かもしれませんね。### さいごに
カンマ区切りを配列に変換するPHP関数 explode() の紹介でした。explode() とセットで使いたいのは、implode() です。
配列を文字列で連結してくれます。
つまり、配列をカ
【Laravel】 General error: 1215 Cannot add foreign key constraint 【エラー】
# はじめに
この記事では、Laravelの学習中に発生したエラーとその解決方法を覚え書きしておきます。
# 環境
Laravel 5.8
MAMP 5.7
phpMyAdmin 4.9.3# 今回の状況
マイグレーションファイルをいくつか作成、“php artisan migrate“を実行した際、下記のエラーが発生。“` :発生したエラー
General error: 1215 Cannot add foreign key constraint
“`## 先に結論
外部キー制約では、参照元のカラムと参照先のカラムの型が一致する必要がある。
→それぞれの型に違いがあったためエラーが発生していた。# 対処方法
各カラムのデータ型を揃えることで解決。## ざっくり手順
“php artisan migrate:rollback“
↓
マイグレーションファイルを修正
↓
“php artisan migrate“
で無事マイグレーションできた。## 具体的な対応
▼外部キー制約を設定するマイグレーションファイル
“`php:2023_01_2
生のPHPでフリマサービスを作る_part2
### この記事のシリーズ
– [生のPHPでフリマサービスを作る_part1](https://qiita.com/daichi_hasegawa_stars/items/22f12b7c9aa019781b27)## フリマサービス作成の流れ
1.機能を洗い出す
2.画面設計(今回はPHPの深掘りがメインなので割愛します)
3.テーブル設計
4.クラス設計 ← 今回はここ
5.実装## クラス設計
色々とクラス設計のやり方や考え方はあると思うが、、
今回はとにかく可能な限りクラスを作ることにする。※この段階だと最初に思いつく範囲でしか出てこないので、必要に応じて増やしたり減らしたりします。
##### まずは、エラー発生時の処理やDB接続などのなくてはならないものからクラス化
– Errorクラス
– エラー発生次の対応
– Databaseクラス
– DBへ接続
– Varidateクラス
– バリデーションをまとめたクラス
– Constクラス
– 定数などをまとめたクラス##### 各機能ごとにクラス化
– Re
エンジニアインターン5日目
今日も前回と同じようなsql文を修正する作業をした。今日は調子が上がらず、苦労した。完全にメンタルで負けた。そこで、先輩エンジニアは自分に1つの課題に手こずっていると徐々に視野が狭くなり、解決とは遠くなってしまう。そういう時はいっかい頭をリセットさせると効果的。とのことだった。自分は昼休憩をして頭の思考をフレッシュにした。その効果はすぐに得ることができ、いろんなアイディアまで浮かんだ。エンジニアは常にエラーと戦う職業である。だからこそメンタルがとても大事になってくる。長い時間うまくいかなかったら1回その課題から距離を置き、頭をスッキリさせて解決できるように試みよ。そして、何回もチャレンジしよ。そしたら少しずつエラーに対して良いメンタルで迎えられると思う。だからこそ何もできない今が大事だ。エラーを解決することに慣れよう。いろんな思考回路を持とう。良いエンジニアはみんなこの道を通っている。継続して自分も良いエンジニアになれるように努力しよ。
PHPで陳素数を求める
# はじめに
この記事では、陳素数をPHPで求める方法について触れています。
とある面談で「陳素数をPHPで求めてください」とお題があり、行き詰まったのがきっかけで記事を書いています。
別言語でも基本的なロジックは変わらないはずですので、カスタマイズしてもらえれば良いかと思います。# 陳素数とは
[wikipedia](https://ja.wikipedia.org/wiki/%E9%99%B3%E7%B4%A0%E6%95%B0)より引用
>素数 p が陳素数(ちんそすう、Chen prime)であるとは、p + 2 が素数または2つの素数の積(=半素数)であることを意味する。例えば 19 は素数であり、2 を加えた 21 は 3 × 7 と2素数の積で表されるので陳素数である。この名前は、そのような素数は無限に存在すると証明した陳景潤による。
>陳素数を小さい順に列記すると次の通り。
>2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 47, 53, 59, 67, 71, 83, 89, 101, …つまり、陳素数(ここで
CakePHP4 での setTemplates の勘違い
CakePHP4 での setTemplates で若干ハマったので記事として残しておきます。
CakePHP4+setTemplates で検索すると多くの文献では、“`php
$this->Form->setTemplates([
‘inputContainer’ => ‘{{content}}’,
‘label’ => false,
]);
“`のように不要なオプションを出力しない書き方として false にて指定していることが多く見つけられます。
が、これは型宣言があいまいなPHP8より前のPHPバージョンでのみ動く書き方で、型宣言が厳密になったPHP8以降では動作せず \src\View\StringTemplate.php でエラーがでます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/687945/e651b70c-1565-4fd4-a23e-9bb2a8d999d6.png)開発者に確認したら上記説明に加えて、setTemplatesで
Mapbox地図内のクリックした地点で、町丁目ポリゴンと人口データを取得し、表示させてみる
## はじめに
今回は、Mapbox地図内でクリックした任意地点で、町丁目ポリゴンと人口総数データをリクエストし、地図上に表示させてみました。主な技術要素・使用しているものは以下になります。
– Mapbox および Mapbox GL JS
– JavaScript
– PHP
– TerraMap API(区画ポリゴンや統計データ等を提供するWeb API)※今回使用している人口総数データは、令和2年国勢調査(2020年国勢調査)の結果に基づいております。
https://www.mapmarketing.co.jp/terramap-api?grid=qiita&utm_source=qiita.com&utm_medium=referral&utm_campaign=qiita_mapbox_click_point_area_210bb89a6f24f09fc8a1_01
## 完成イメージ
今回の完成イメージは、以下の動画のようになります。
地図上の任意地点で、商圏分析の基礎データとも言える町丁目ポリゴンと人口総数データをリクエストし、表示させました。また表示したポリ
【Laravel】validateメソッドを使ったバリデーション処理
# はじめに
validateメソッドを使ったバリデーション処理について説明します。
Laravelのバージョンは9.43.0です。
# 使い方
validateメソッドは、コントローラの基底クラスに組み込まれている`ValidateRequests`というトレイト(メンバーをまとめてクラスに追加するもの)に用意されている機能です。
第1引数にチェックする項目、第2引数に検証する設定情報を配列にまとめたものを渡します。“` php
// contorollerファイル
public function post(Request $request) {
// 検証ルール
$validate_rule = [
‘inputタグのname’ => 検証ルール1|検証ルール2,
];
// validateメソッド呼び出し
$this->validate($request, [検証ルールの配列]);
}
“`# 使用例
コントローラは下記になります。
validateメソッドの第1引数にチェック項目(今回はリクエスト)、第2引数にバリデーションルールを渡しま
【最低限】Laravel Sailを使った開発環境構築
## Laravel Sail って何?
Laravlの開発環境をさくっと簡単に作成でき、
軽量CLIインターフェースでLaravelへのコマンド操作を行えます。今回はMac&Dockerで環境を構築します
Dockerがインストールされている前提で進めます## プロジェクトの作成
“foo-project”というプロジェクト名で作成する場合は以下のコマンドをターミナルで実行します
“`bash
curl -s “https://laravel.build/foo-project” | bash
“`だいたい5分くらいかかった後でMacのパスワードを求められました。
“`bash
Please provide your password so we can make some final adjustments to your application’s permissions.Password:
“`正しいパスワードを入力できればsailコンテナのビルド完了です
“`bash
Thank you! We hope you build something
Laravel8でCSSが効かない→nginxのdefault.conf設定ミスだった
# 環境
Docker 20.10.14
PHP 8.0.27
Laravel 8.83.27# 状況
– 以下のサイトを元にDocker + Laravelの環境構築
https://www.torat.jp/laravel-docker-lemp/
– headタグ内に以下の通り記載しているが、CSSが読み込めない
“` “`# 解決
– 以下のサイトを参考に、nginxのdefault.confに記載を追加
https://teratail.com/questions/376936
(今回はCSSを読み込む目的だったが、JavaScriptについても、いずれ使うと思ったため記載)
“`
location ~ \.css$ {
add_header Content-Type text/css;
}
location ~ .js$ {
add_header Content-Type application/x-javascript;
}
`
PHPでアプリを作成してみた【掲示板】
## XAMPP 環境構築
公式サイト:[XAMPP](https://www.apachefriends.org/jp/index.html)
①Headerにある『ダウンロード』をクリックする。
②『Launchpadは使用しないでください。Launchpadではショートカットメニューにアクセスできません。』と表示されたので、Controlキーを押しながらアプリケーションアイコンをクリックして、ショートカットメニューから「開く」を選択し、「開く」をクリック。
③インストールする。
## スーパーグローバル変数
全てのスコープで使用できる組み込みの変数の事。
PHPの定義済みの変数の中には、『スーパーグローバル』というものがあり、スクリプト全体を通して全てのスコープで使用可能な変数の事。## htdocsにファイルを作成
作成したファイルをVScodeにドラッグ&ドロップする
“`index.php
PHPerが学ぶGo言語③ 例外処理
っす。豚野郎です。
今回は例外処理を書いていきます。Go言語は例外処理構文(try、catch等)がありません。
その中で例外処理を実行していきます。※ 注意:内容はPHPか何かの言語を書いたことがある方向けなので、
説明を割愛している箇所は多々ありますので、ご了承ください。**go version go1.19.4 darwin/amd64**
# 1. fmt.Errorf()
“`sample.go
package mainimport “strconv”
import “fmt”// fmt.Errorf()で例外情報作成
// fmt.Errorf()の戻り値の引数はerrorにする。
func Calculation(num int) (string, error) {
if num != 1 {
// Go言語では、エラー情報を2番目に返すことを推奨されている
return “”, fmt.Errorf(“1ではありません。”)
}
num += 1
return “1 + 1 =
Laravel9でアプリを作成してみた【ゴミ箱付きToDoリストアプリ】
## ファイル構成
“`
docker-config
├─ mysql
├── data //データの保存
└── my.cnf
├─ nginx
├── Dockerfile
└── default.conf
├── php
├── Dockerfile
└── php.ini
“`
“`
docker-compose up -d
docker ps“`
## 参考サイト
[【シンプル解説】Laravel9でゴミ箱付きToDoリストアプリを作る](https://www.youtube.com/watch?v=HHHN76dHrv0&t=1144s)
コンストラクタインジェクションを紐解く
# コンストラクタインジェクションとは
**依存先のモジュールを自ら生成せずに、コンストラクタの引数としてもらうようにすること**です。
はい。イメージつきにくいですよね…。
# コンストラクタインジェクションしていない例
Carクラス内で、Engineクラスのインスタンスを作成しています。
“`php
class Car
{
private $engine;public function __construct()
{
$this->engine = new Engine();
}public function move()
{
$energy = $this->engine->run();
}
}
“`# コンストラクタインジェクションしている例
Carクラス内で、Engineクラスのインスタンスは作成していません。
引数としてEngineクラスのインスタンスを受け取っています。“`php
class Car
{
private $engine;
生のPHPでフリマサービスを作る_part1
## フリマサービス作成の流れ
1\.機能を洗い出す
2\.画面設計(今回はPHPの深掘りがメインなので割愛します)
3\.テーブル設計
4\.クラス設計
5\.実装### 機能を洗い出す
**今回の作るフリマサービスの機能は以下の通り**
– ユーザー登録
– ログイン
– ログアウト
– 退会
– プロフィール登録
– プロフィール編集
– パスワード変更
– パスワードリマインダー
– 決済(余裕があれば)
– コンテンツ登録
– コンテンツ編集
– コンテンツ削除
– コンテンツ一覧表示
– コンテンツ詳細表示
– コンテンツ検索
– コンテンツ毎の掲示板表示
– コンテンツ毎の掲示板へのメッセージ登録
– お気に入り登録### テーブル設計
以下のように設計する
![スクリーンショット 2023-01-22 0.31.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1461162/6f8d7e0d-29f0-93a3-5b42-bef4fa9ac15c.png)###
【Smarty】JavaScritpを別ファイルに書くときの読み込みパス
# Smarty使用時にJavaScritpを別ファイルに書くときの読み込みパス
## 発端
* javascriptをjs専用のフィアルに書いてそれをSmartyで読み込みたかったがうまく読み込めずハマったので備忘録。## 原因
* Smartyからのパスを書いていた。## 解決方法
* そのテンプレートファイルを呼び出しているPHPからのパスを書く。## 詳細
* ディレクトリ構造
“`
test–
|-layout
| |_resource
| | |_javascript.js
| |_layout.tpl
|
|-module
| |_module.php
|
|-template_c
“`
* module.phpでlayout.tplを読んで画面に表示させているとき、layoutに記述したinputタグの内容についてjavascriptで処理をしたいとする。“`html:layout.tpl