- 1. Mapbox地図内のクリックした地点で、町丁目ポリゴンと人口データを取得し、表示させてみる
- 2. 【Laravel】validateメソッドを使ったバリデーション処理
- 3. 【最低限】Laravel Sailを使った開発環境構築
- 4. Laravel8でCSSが効かない→nginxのdefault.conf設定ミスだった
- 5. PHPでアプリを作成してみた【掲示板】
- 6. PHPerが学ぶGo言語③ 例外処理
- 7. Laravel9でアプリを作成してみた【ゴミ箱付きToDoリストアプリ】
- 8. コンストラクタインジェクションを紐解く
- 9. 生のPHPでフリマサービスを作る_part1
- 10. 【Smarty】JavaScritpを別ファイルに書くときの読み込みパス
- 11. PHPのビルトインサーバでXdebugを使いVSCodeでデバッグする
- 12. ライブラリで簡単に無限スクロールを実現 JS/jQuery/PHP/PDO/MySQLを使用して
- 13. Laravel × デプロイのまとめ
- 14. 【PHP】$_POSRで送信するためのチートシート
- 15. 【PHP】requier_oneceのパスについて
- 16. 配列などなど
- 17. エンジニアインターン5日目
- 18. 【Laravel】同値チェックのバリデーション
- 19. PHPを基本からまとめてみた【環境構築】
- 20. 負荷テストする時大量データ作成プロシージャ
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入門】2ちゃんねる風掲示板を作りながら学ぶPHP入門講座 ~XAMPPを利用~](https://www.youtube.com/watch?v=3QxtIrakwKk&t=1843s)
[PHP開発環境「XAMPP Mac版」プログラミングスクールが教える最も簡単な方法](https://www.youtube.com/watch?v=yc81-25UknM)
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
PHPのビルトインサーバでXdebugを使いVSCodeでデバッグする
# Install
– [phpインストール](https://qiita.com/yuki777/items/c8e33ca3290b55862c6a)済みであることを前提としています
– [VSCode拡張のPHP Debug](https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-debug)をインストールする。# php.ini
“`
; php –ini でphp.iniもしくはxdebug.iniを探してくださいzend_extension = “xdebug.so”
xdebug.client_host = 127.0.0.1
xdebug.client_port = “9003”
xdebug.mode = debug
xdebug.idekey = “PHPSTORM”
xdebug.start_with_request = yes
“`# PHPビルトインサーバを起動する
– プロジェクトによりけりだと思いますが、下記のようなphpコマンドで起動します。
– `
ライブラリで簡単に無限スクロールを実現 JS/jQuery/PHP/PDO/MySQLを使用して
jQueryライブラリの infinite-scroll を利用します。
https://infinite-scroll.com/
## HTML, JS
まずはHTMLおよびJavaScriptの部分。注意点としてはloadNext.phpと記述する部分で追加部分を読み込むわけだが、ここにpage=1のような数値が必須である点。その数字を読み込むごとに増やしていく前提でこのライブラリは作られている。ここは自動で増えていく。
そのため、この例のようにpage=1としておけば勝手に次はpage=2として自動で読み込んでくれる。便利なんだが不便なんだか分からんが。
“`timeline.htmlすでに読み込まれているコンテンツすでに読み込まれているコンテンツすでに読み込まれているコンテンツ
Laravel × デプロイのまとめ
初めてのデプロイでつまづきが多すぎたのでメモ
サイト自体はこちら →
https://wp955234.wpx.jp/product
(とりあえずそれらしいものをデプロイしたいだけだったので色々雑い。)
# まずLaravelをデプロイする前に100%初学者が見るべきサイト
いろんなサイトがあるがどれもなぜかエラーが出ない前提だったりSSHなどの接続について触れてなかったりまともにわからないサイトばかり。
最終的にこのサイトにたどり着いた。結論ほぼこの通りにやればよし。https://nebikatsu.com/6604.html/
こちらもよさげ cliborありがとうございます。
https://chigusa-web.com/blog/xserver-laravel/
とてもリンク先が丁寧なのでここからはつまづいた部分とか補足。
# SSH接続
この通りやってTeraTarm入れましょう。https://www.xserver.ne.jp/manual/man_server_ssh_connect_tera.php
# PHPのコマンド実行するPHP
【PHP】$_POSRで送信するためのチートシート
# $_POSTで送信するためには
## 発端
* $_POSTでデータが欲しいがやり方が曖昧だったためまとめる。
【結論】formに“`method=”POST”“`、“`buttonのtype=”submit”“`にしてれば飛ぶ。## 方法
### form内で色々な情報を集めてまとめて送信する場合
“`php:index.php【PHP】requier_oneceのパスについて
# requier_oneceのパスについて
## 発端
* ファイルパスは合っているはずなのに読み込めなくて何度もハマったのでまとめる。## 原因
PHPは、「実行したファイルのあるディレクトリが常に実行時のカレントディレクトリになる」という規則があるためエラーとなってしまっていたっぽい。## 解決策
### “`__DIR__“`もしくは“`dirname(__FILE__)“`を使おう
1. “`__DIR__“`は記入したファイルが所属するディレクトリまでのパスを返してくれる。
“`
test–
|-layout
| |_layout.tpl
|
|-module
| |_module.php
|
|-template_c
“`
“`php:module.php
// layout.tplを読み込みたい場合
// __DIR__には ~/test/moduleまでのパスが入っている
requir_onece(__DIR__.”/../layout/layout.tpl”);
“`配列などなど
今日学んだことのまとめ
■配列
$data[0] = ‘a’;
$data[1] = ‘b’;
$data[2] = ‘c’;
$data[] = ‘d’;echo $data[3];
d
インデックス番号が省略された場合はその時点での最大インデックス+1が割り振られる■シングルクォートとダブルクォートの違い
シングルクォート:変数を”で囲うとそのまま出力される
ダブルクォート:中に変数を書いた場合、変数が文字列に書き換えられる。変数展開もしくは変数のパースというらしい。。。
↓例$title = ‘ラーメン’;
$data1 = ‘今日の昼飯は{$title}だった’;
$data2 = “今日の昼飯は{$title}だった”;echo $data1;
echo “
“;
echo $data2;今日の昼飯は{$title}だった
今日の昼飯はラーメンだったあと今日仕事中のミス
・HTMLの中にPHPは書けるけど、PHPの中にエンジニアインターン5日目
今日は残りのlpのテンプレートを完成させ、サイトに適用させることを目標として取り組んだ。徐々に完成に近づいてきた時sqlで日付指定をして、常に最新の情報を更新するような仕組みを追加する案が出た。gitで新しいissueを作り、ブランチを切り替え、コーディングした。(git branch -b 指定するブランチ)を入力することで、新しくブランチを作ると同時に新しく作ったブランチに切り替えてくれる。自分は最新3ヶ月の情報を得たかったため、betweenを使い、現在から3ヶ月前から現在までの値を得て、1番最新の情報を表示するようにした。コーディングが終わったらgitにpull&requestして先輩エンジニアにレビューしてもらい、細かな部分を修正してやっと日付指定の作業が終わった。テスト環境のwordpressに適用させて行く途中にまた新たに修正しなければならないところが出てきた。フィールドの値が文字列が少し違っていて、データベースに引っかからないということだった。フィールドから引っ張ってきた値をreplaceして文字列を変えてデータベースに渡せば解決できた。この作業も日付指定の時と同じ流れ
【Laravel】同値チェックのバリデーション
# はじめに
確認用の入力でバリデーションがしたく、同値チェックができるもののまとめ# same:フィールド名
指定したフィールドと同じ値であるかどうか
“`PHP
‘name’ => [‘same:confirm’]
“`# different:フィールド名
指定したフィールドと異なる値であるかどうか
“`PHP
‘sub_email’ => [‘different:main_email’]
“`# confirmed
[フィールド名]_confirmationフィールドと同値であるかどうか“`PHP
‘email’ => [‘required’, ‘confirmed’]
“`
入力確認用に使用するものであるが、[フィールド名]_confirmationの存在が必要となる
上記だとemail_confirmationが必要
“`
メールアドレス
メールアドレス(確認用)
“`以上
PHPを基本からまとめてみた【環境構築】
## PHPとは
サーバーサイドのプログラミング言語
## WordPress
ブログを作成するシステム
## MAMPとは
PC上にローカル環境サーバ環境一式をインストールできるツール## 環境構築
ローカル環境構築 ⇨ PCの中にサーバー
公式サイト:[MAMP](https://www.mamp.info/en/downloads/)
Pathの設定
“`
//terminalcd /Applications/MAMP/htdocs/
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
composer -V//プロジェクト作成
composer create-project laravel/laravel <プロジェクト名>
“`“`
brew tap shivammathur/php
brew install shivammathur/php/php@7.4
brew link php@7.4
“負荷テストする時大量データ作成プロシージャ
DROP PROCEDURE `proc_test01`
/
CREATE DEFINER=`homestead`@`%` PROCEDURE `proc_test01`(IN input int(1))
BEGIN
SET @start_idx = 0;
SET @customers_info_id = 100000;
SET @point_card = 7130010000 ;
loop1: LOOP
SET @start_idx = @start_idx + 1;
SET @customers_info_id = @customers_info_id + 1;
SET @point_card = @point_card + 1;
IF @start_idx > input THEN LEAVE loop1;
END IF;# カード会員情報の登録
insert into DB.table1(card_info_id,customers_info_id,asp_card_main_id,asp_card_関連する記事
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた