- 1. PHPバージョン変更点をピックアップ(8.x ~ 8.1)
- 2. php 開発環境構築
- 3. laravel mysql sql 速度計測
- 4. PHP function_exists
- 5. htaccessがどうも動かなかったとき・・
- 6. Laravelで他フィールドが特定の値だった場合にバリデーションしたい
- 7. Microsoft Teams上で動くチャットボットの紹介
- 8. Dockerで2つのプロジェクトで参照し合う場合の注意の話
- 9. CRC32の再現方法を求めて
- 10. JavaScriptから使いやすいWebAPIをRPCでお手軽に
- 11. PHPとRepl.itで何でも換算してくれる単位換算機を作ったお話
- 12. 初めての個人開発日記【Laravel】#1
- 13. 【未経験・独学】アパレル卸売ECモールアプリの開発 / マルチログイン【PHP/Laravel/JavaScript/Vue】
- 14. 荒廃したWordPressのPHPコードをPHP_CodeSnifferでキレイにしたい
- 15. 初めての個人開発日記【Laravel】#0
- 16. centos7でnginxと(laravel)php-fpmを動かすメモ
- 17. 【laravel】ユニットテストざっくり
- 18. 【PHP】Laravelの`bearerToken()`メソッドを使ってリクエストヘッダーのBearerトークンを取得
- 19. php ダウンロードされました対応方法
- 20. mb_check_encoding関数の調査
PHPバージョン変更点をピックアップ(8.x ~ 8.1)
7.4以前のまとめは[こちらです](https://qiita.com/RyutaKojima/items/d9a968ab6a1721736938)
# [PHP 7.4.x から PHP 8.0.x への移行](https://www.php.net/manual/ja/migration80.php)
[新機能](https://www.php.net/manual/ja/migration80.new-features.php)
– [名前付き引数](https://www.php.net/manual/ja/functions.arguments.php#functions.named-arguments) のサポートが追加されました。
“`
myFunction(paramName: $value);
array_foobar(array: $value);// 以下の書き方はサポートされていません
function_name($variableStoringParamName: $value);
“`
php 開発環境構築
“`
apache インストールphp インストール
laravel インストール
mysql インストール
A5 インストール
laravel mysql sql 速度計測
# 速度を計測しちゃおう
phpやsqlで処理時間を計測したいときがある。
そんなときはサクッと!“`hoge.php
$start = hrtime(true); // 計測開始時間
// ここに計測したい処理を書く
// 計測したい処理を書くここまで$end = hrtime(true); // 計測終了時間
$nano_sec = $end – $start;
$sec = $nano_sec / 1000000000;
echo ‘処理時間:’. $sec .’秒’ . ‘
‘;
die;
“`以上
PHP function_exists
# 概要
– PHPの`function_exists()`関数を簡単にまとめる。
# 内容
– `function_exists()`関数は引数に取った関数が組み込み関数、ユーザー定義関数のいずれかで定義済みかを確認する。
– 定義済みの場合trueを、定義されていない場合falseを返す。
– 例1(下記は「関数は存在しません」と出力される。)“`php
htaccessがどうも動かなかったとき・・
Dockerでphp:8.1-apache-bullseyeのイメージに
Laravel+Jetstreamで環境構築していたら
/login /registerのページが404 not foundで動かない・・何度入れ直してもだめだったので、htaccessかな?って思うようになって
でも、微妙にhtaccessは動作していて、??だったが
ふとapache moduleを確認していたら“`
# apache2ctl -M
Loaded Modules:
core_module (static)
so_module (static)
watchdog_module (static)
http_module (static)
log_config_module (static)
logio_module (static)
version_module (static)
unixd_module (static)
access_compat_module (shared)
alias_module (shared)
auth_basic_module (s
Laravelで他フィールドが特定の値だった場合にバリデーションしたい
## やりたいこと
以下のリクエストパラメータがあるとする
|site_kinds(サイト種別)|site_url(サイトURL)|
|—|—|
|例:yahoo,google,bing|例:google.co.jp/abc,yahoo.co.jp/def |
|必須項目、yahoo,google,bingのどれかであることをバリデーション|googleだった場合のみURLが重複登録されていないことを確認|## 環境
Laravel 9.x## Laravelでデフォルトで用意しているメソッドを使ってみる
公式:https://readouble.com/laravel/9.x/ja/validation.html
「他のフィールドが特定の値と一致した場合」にできそうなバリデーションは何個かある
– 空かどうか
– nullかどうか
– requiredにする
– validate,validatedから除外するvalidate,validatedから除外するを採用
“`php
// site_urlsというテーブルには「site_url,site_
Microsoft Teams上で動くチャットボットの紹介
# Microsoft Teams上で動くチャットボットについて
製品の概要については以下のページからご確認ください。
https://www.mahty-solutions.com/holabot
https://prtimes.jp/main/html/rd/p/000000001.000103237.html今回はMicrosoft Teamsの開発に当たり、技術的な側面からまとめてみました。
## チャットボットの機能について
製品の概要については添付したURLにも記載がありますが、大きく分けると
①Q&A機能
②M365と連携した機能
になります。
今回は技術的な側面から紹介をさせて頂くため、
以下の流れで順番に紹介をしていきます。・各機能で共通して使用している技術的
・Q&A機能
・M365と連携した機能## 各機能で共通して使用している技術について
チャットボットの本体はAzure Bot Serviceを使用し、チャットボットの動作自体はBot Framework(C#)で実装をしています。
イメージは下の図のような感じになります。![imag
Dockerで2つのプロジェクトで参照し合う場合の注意の話
開発環境としてDockerって結構使いますよね。
今回は開発プロジェクトが別の開発プロジェクトにアクセスするときに発生しました不具合とその対応を書いておきたいと思います。
正直、この問題は難しくて一日悩んでいました。
答えはシンプルでしたw# 開発環境
はじめに開発環境を書いておきます。今回はPHPStormを使いまして以下のプロジェクトを作成しています
– Webページのプロジェクト(port : 8000)
– Web API開発プロジェクト(port : 8001)それぞれの動作確認はHTTP Requestとブラウザにて確認していました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2481837/2aae960c-9481-0c50-a382-9d75a722f67c.png)
# 不具合
はじめに開発スケジュールを書き出します1. Webページプロジェクトの開発 ( リリースしたWeb APIを利用 )
2. 今回、Web APIプロジェクトの追加機
CRC32の再現方法を求めて
## 巡回冗長検査
[巡回冗長検査(Wikipedia)](https://ja.wikipedia.org/wiki/%E5%B7%A1%E5%9B%9E%E5%86%97%E9%95%B7%E6%A4%9C%E6%9F%BB)
ファイルの完全性検査などにはSHA256やMD5が使われますが、短いテキストのようなデータの場合、SHA256やMD5は結果が長すぎて使いにくいことがあります。
その点、CRC32は結果が32bitで、16進数表記でも8文字で済むため、元のテキストの代替として使うのに簡便です。
しかし、CRC32と一口に言っても実はいくつかの方式があり、異なる値を算出します。
## CRC32の種類
前掲のWikipediaのページを見ても、32bitのCRCには(厳密にはCRCでないAdler32も含めて)
– CRC-32Adler (厳密にはCRCではないがよく混同される)
– CRC-32
– CRC-32C
– CRC-32Kの4種類が掲載されています。CRC-32Adlerは計算方法が全く異なりますが、それ以外の3つは、Wikipedia記事中で
JavaScriptから使いやすいWebAPIをRPCでお手軽に
JavaScriptから使いやすいWebAPIを考える回。
WebAPIといえばRESTが有名ですが、今回はRPCを実装してみます。## 基本的な使い方
“rpc.js“はローカル関数を実行するような感覚で、サーバ側の関数を実行できます。
“`js:基本的な使い方
import API from ‘./rpc.js’const result = await API.plus(1, 2) // 関数名plusと引数[1,2]が送信される
“`ここでplusメソッドは幻で、定義はありません。
裏で**関数名**と**引数**がHTTP送信されて、サーバ側で同名の関数が実行され、結果が返ってくる仕組み。基本的にGET送信ですが、**関数名の最初が大文字**の場合はPOST送信になります。
“`js:POST送信
const result = await API.Save(data) // POST送信
“`以上がJavaScriptからWebAPIにアクセスする最善の書き方だと思います。
サーバ側も関数定義+αで済むので、全体を通してシンプルで分かり
PHPとRepl.itで何でも換算してくれる単位換算機を作ったお話
# はじめに
はじめまして。**Fuse**です。
普段はゲームを作っているものですが、ここ最近ある悩みが浮上しました。
それは様々な単位について。武器の名前を考えるときにインチとフィートがとっさに変換できなかったりと
単位に関する悩みが絶えませんでした。
今回はその悩みを解決するために、**どんな単位も登録すれば変換するWebアプリを製作しました。**
# 完成品
実物へのリンクhttps://conversionthemall.frmkdj.repl.co/
動画
#PHP 学習のためにどんな単位も登録すれば換算してくれるWebアプリを作りました。 pic.twitter.com/lOT55190QV
— Fuse@GC甲子園2022参戦! (@metelove2000) November 5, 2022
# 制作環境
+ 使用言語 PHP v7.4.21
+ ホスティング先兼IDE Repl.it
# 構成ファイルの簡単な説明
+ index.php
最初に開かれるphpファイルは一番上の階層に配置しなければならないらしい。
![mono.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2957248/49e97e
初めての個人開発日記【Laravel】#1
# 作りたいWebアプリ
**”休日の予定を与えてくれるサービス”** を作っていきたいと思っています。大学では授業の組み方によっては丸一日授業が全くない日が週に1、2回ほどあり、結構暇なことが多いのですが、せっかくの休日なのにネトフリやYoutubeをみたりしているとあっという間に1日が過ぎてしまいその日を無駄にしてしまった気分になることがたまにあります。
みなさんもせっかくの休日なのに予定が無くなにをしようか考えているといつの間にかもう夕方になってしまっていたり、ネットサーフィンで1日を無駄にしてしまった経験があるのではないでしょうか?
そんな経験から休日の予定を勝手に与えてくれるサービスがあればいいなと思い今回のサービスを考えました。
# 実装する予定の機能
箇条書きで欲しい機能を書き出してみました。
– ルーレットでやることが決まる
– ルーレットの目がミッションになっている
– ミッション例
– 美術館に行く
– 映画を見に行く
– 行ったことのないカフェに行くetc…
– Twitterへの投稿機能
– 投稿するとポイントゲ
【未経験・独学】アパレル卸売ECモールアプリの開発 / マルチログイン【PHP/Laravel/JavaScript/Vue】
# はじめに
独学でポートフォリオを作成しました。(Laravel/Vue.js)
github:https://github.com/ShintaroKurata/job-board本記事では、学習したことを振り返ります。
## 自己紹介25歳
学習期間:2022年6月〜9月
前職:営業→Webディレクター
## アプリについて
### 概要
今回、PHP(Laravel)のポートフォリオとしてマルチログインで実装されるECモールを作リました。
実際には購入機能はないので、カート機能までの実装です。
### サービス画面
#### バイヤーダッシュボード
![buyer-dashboard-sample.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255872/9cde288a-b44c-644a-9e9a-7285aa9b7809.png)
バイヤーはこの画面から、自分のプロフィールなどを更新できます。#### バイヤープロフィール
![buyer-profile-sample.p
荒廃したWordPressのPHPコードをPHP_CodeSnifferでキレイにしたい
## きったねぇWordPressのコード:worried:
きったねぇコードは解読するのが難しく、バグの原因になりやすいです。
そんな時は「整形ツール」以前までは、prettierを使用してPHPの整形をしていました。
https://github.com/prettier/plugin-php
しかし、こちらはHTMLとPHPが混在したコードの場合、動作が不安定になることが報告されています。
> このプラグインは、純粋な PHP ファイルをフォーマットした場合に安定すると考えています。PHP と HTML が混在したファイルのフォーマットは、まだ不安定だと考えています。詳細は “inline” タグの open issues をご覧ください。(DeepLによる日本語訳)
きったねぇコードのままはイヤだ:sob:
## WordPress公式のコーディング規約を発見!:laughing:
初めての個人開発日記【Laravel】#0
# Webアプリを開発してみたい!
大学でプログラミングの授業をきっかけにプログラミングに興味を持ち、これまでにHTML, CSS, javascript, React, PHP, Laravelの勉強を独学で行ってきました。
そろそろ何か自分のアイデアを形にできるのではないか?と感じたのでこれから数回にわたって、Laravelを用いたWebアプリ開発の開発日記を発信していこうと思います。Qiitaに記事を投稿すること自体が初めてなので拙い部分もあると思いますが読んでいただけると嬉しいです。
centos7でnginxと(laravel)php-fpmを動かすメモ
# 作業記録
vagrantでcentOS7を立てて
nginxとlaravel(php-fpm)を動かす。ゴールはlaravelのwelcome画面が出ればok
## centOS7を立ち上げ
vagrantが既に入っている状態で
centOS7のイメージはhttps://app.vagrantup.com/bento/boxes/centos-7
こちらを使用する。
“`
$ vagrant box add bento/centos-7
“`“`
$ mkdir test
$ cd test
$ vagrant init
//これでVagrantfileが作られる
$ ls
Vagrantfile
“`“`:Vagrantfile
config.vm.box = “bento/centos-7” //box名を設定
config.vm.network “private_network”, ip: “192.168.56.54” //ipを指定
//Ranges: 192.168.56.0/21この範囲内で指定しないといけないっぽい
config.vm
【laravel】ユニットテストざっくり
## 概要
laravelでは下記テストが用意されている。
– ユニットテスト /tests/Unit
クラスやメソッドなどモジュール単位で動作を検証する– フィーチャテスト /tests/Feature
WebページやAPI機能など
コントローラの動き(リクエストを受けてレスポンスを返すまで)を検証する今回はユニットテスト練習用を作成した際のまとめ。
## テスト対象の作成
“`sample.php
public function sample(int $english, int $math, int $science)
{
$average = ($english + $math + $science) / 3;
//3教科の平均でクラス分け
if ($average >= 85) {
$class = ‘advance’;
} else {
$class = ‘basic’;
}
return array($a
【PHP】Laravelの`bearerToken()`メソッドを使ってリクエストヘッダーのBearerトークンを取得
## 概要
LaravelでAPIを開発するときなど、認証時にリクエストヘッダーのトークンを使うことがあると思います。[【Laravel8.x】リクエストヘッダーの値を取得する。](https://yama-weblog.com/get-request-header-data-in-laravel8/)の記事にある通り、requestからヘッダー値を取得する方法でも全然良いと思うのですが、Laravelでは`bearerToken()`というメソッドが用意されていたので紹介します。## bearerToken()メソッドについて
[How to get Bearer token from a request in Laravel](https://stackoverflow.com/questions/47158522/how-to-get-bearer-token-from-a-request-in-laravel)のstackoverflowの記事に使い方など書かれています。基本的にはrequestのオブジェクトにメソッドが用意されているので、`$token = $reques
php ダウンロードされました対応方法
# ずばり httpd.conf 見直し
## 下記は重要です。
“`
ServerRoot “c:\Apache24”
Listen 80
#LoadModule xml2enc_module modules/mod_xml2enc.so
LoadModule php7_module “c:\php\php7apache2_4.dll”
AllowOverride none
Require all denied
DocumentRoot “C:\Apache24\htdocs”
#
# Possible values for the Options directive are “None”, “All”,
“`#最後に下記追加
“`
PHPINIDir “c:\php”
AddHandl
mb_check_encoding関数の調査
## はじめに
久しぶりに文字コード絡みの不具合を調査したので備忘録として経緯をまとめます。## 背景
– PHPのCSVファイルのアップロード処理で不具合が発生しました。
– 特に変わった処理はなく、ファイルをアップロードして、DBに取り込むというよくある処理。
– ただし、アップロードしたファイルをfilterを使用して、チャンクごとにmb_check_encoding関数で文字コードをチェックしていた。## 不具合
– 1年以上運用されているサービスで、基本的には問題なく動作していた。
– 極稀にCSVファイルが最後まで読み込めずに処理が終わるという現象が発生する。
– 例外が捕捉されず、システムエラーとして扱えない。## 原因
調べた結果、「髙」(はしごだか)などの文字コードが原因のようでした。
「髙」自体はよく使われているので、「極稀に」発生するという現象の辻褄があいませんでした。Shift-JISでは、一部の文字には「IBM拡張文字」と「NEC選定IBM拡張文字」の2つの文字コードが割当てられているようです。
https://ja.wiktionary.