- 1. 加算子/減算子は$i++,$i–だけじゃない
- 2. 01.PHPってなに?
- 3. 【Laravel】development環境で問題ないアプリがproduction環境で全く動かない事象に遭遇した
- 4. 【Laravel × React】業務フローを明瞭に!ポートフォリオMATRIXFLOWを作成しました
- 5. Composer.phar で GitHub の Repository を require したい
- 6. FuelPHPの例外エイリアスがキャッチできない理由を探る
- 7. PHPのエイリアスと例外処理の関係を検証してみた
- 8. 【PHP】無名関数について
- 9. Laravelのchunkメソッドで全レコードが更新されなかった話
- 10. PHPで三角関数を計算する(度数法、弧度法)
- 11. 【PHP】スーパーグローバル変数$_SERVER
- 12. Laravelでsqlの特訓をする
- 13. Rocky Linux 9にPHP 8.3をRemi Repositoryからインストールする
- 14. Sunoのプロンプトが200文字までなので、DeepL API & 文字数カウンターを作ってみた
- 15. Todo管理アプリ「Todoカンリ」にWebサービスの基本機能を追加する
- 16. ログファイル名を動的に変更する
- 17. Laravelのリレーション管理:外部キーを明示的に指定する方法
- 18. Laravelとは
- 19. Laravel11で『PHPフレームワーク Laravel Webアプリケーション開発』差分メモ (第一部 Laravelの基礎 Chapter1)
- 20. CGI (Common Gateway Interface) について
加算子/減算子は$i++,$i–だけじゃない
# 前談
転職して情シスから開発エンジニアに戻った
この前初出社を迎えました。
その時新卒の社員と話したところ、プログラムの話をしました。
いきなりプログラムの話とは、やっぱり開発エンジニアが150名以上いると違うんですかね。
僕の新卒は上司と二人だったので、ある意味プログラムとアニメとかの話しかしませんでしたねw# 本編
新卒の社員とプログラムの話をした時にPHPリファレンスの話になり、加算子・減算子の話をしました。“$i++と++$iって同じじゃないんですか?”
確かにプラスすることには変わらない。だが違うのだ。違うのは加算されるタイミングなんだよ。
僕にはリファレンスお兄さんことA上司がいたから知っている。テストコードは以下の通りです。
“`php
01.PHPってなに?
## PHPって何?
PHPは、バックエンドで動くプログラミング言語です。
バックエンドとは、ざっくり説明すると、データの保存や出力といったユーザーが目に見えないところで行っている処理を行っている部分のことです。反対に、ユーザーが目に見える部分はフロントエンドといいます。
## PHPはどこで使われている?
WikipediaやFacebook、Slackで使用されている言語です。
## PHPが得意なこと
– Webアプリの開発
– WordPressオリジナルテーマの開発## PHPが苦手なこと
– デスクトップアプリの開発
– スマホアプリの開発## 勉強するにあたっての前提知識
勉強する際はHTML・CSS・JavaScriptがある程度できれば問題ないと思います。
これらの勉強はProgateや、侍テラコヤというサイトで勉強するのがおすすめです。(有料)
独学で進めていける方はProgateで、自分で進めていけるか不安という方は侍テラコヤがおすすめです。後者はサービス内で質問掲示板のようなところで質問できるサービスや、Web会議を予約すればエン
【Laravel】development環境で問題ないアプリがproduction環境で全く動かない事象に遭遇した
### ことの始まり
ポートフォリオMATRIXFLOWを作成している最中に事は起こりました。※ MATRIXFLOWについてはこちらをご覧ください↓
https://qiita.com/maixhashi/items/5da649e290ec13e71465
一度、production環境(Heroku)にデプロイして問題ないことを確認したポートフォリオが機能追加後に再度pushすると画面真っ白になり何も動かず。
### ことの詳細
次のような流れでした。
– ① [担当者(Membersモデルレコード)追加機能](https://qiita.com/maixhashi/items/5da649e290ec13e71465#%E6%8B%85%E5%BD%93%E8%80%85%E3%81%AE%E8%BF%BD%E5%8A%A0)の実装
– ② [フローステップ(FlowStepモデルレコード)追加機能](https://qiita.com/maixhashi/items/5da649e290ec13e71465#%E3%83%95%E3%83%AD%E3%83%B
【Laravel × React】業務フローを明瞭に!ポートフォリオMATRIXFLOWを作成しました
### はじめに
初めまして、はしと申します。
現在、とあるスタートアップのバックオフィス部署で働いており、
バックエンドエンジニアを志して転職活動中です。この度、ポートフォリオ「[MATRIXFLOW](https://matrixflow-d2987557bad9.herokuapp.com/)」をリリースしましたので、投稿いたします!
https://matrixflow-d2987557bad9.herokuapp.com/
バックオフィス部署で働いていてきた経験から、
いわゆる「バックオフィス部署のつらみ」に着目してこのポートフォリオを作成いたしました。#### バックオフィスのつらみ??
私のバックオフィス部署で経験したつらみは
「いざ上場準備!📢」「いざシステム導入!📢」「いざ業務改善!📢」という様々なフェーズ
に関わる際に「今の業務フローって結局どうなっているんだっけ?🤔」となるシーンです。このとき困るのが業務フローを変更・改善を加えたことによって
現状の業務フローが不明瞭になったり、再度整理する必要が出てくるため
定常業務に加えて、業務フローの整理もし
Composer.phar で GitHub の Repository を require したい
# やりたいこと
以下のように GitHub の Repository を composer で使いたい
“`bash
./composer.phar r github/repository
“`# どうすれば
`composer.json` を編集すればいけた
“`composer.json
{
…
“repository”: [
// ここから
{
“type”: “git”,
“url”: “git@github.com:github/repository.git”
}
// ここまでを追加
],
…
}
“`:::note info
編集後、実行時に Token を求められたら GitHub の Developer Settings から Generate Token しましょう
:::# 参考
https://qiita.com/mokemokechicken/items/d3a3944bfa999c2582b7コマンドでのやり方もある↓
https://qiita.c
FuelPHPの例外エイリアスがキャッチできない理由を探る
以下に清書した記事をお送りします。
—
## FuelPHPのAutoloaderとエイリアスの例外キャッチに関する検証
FuelPHPでエイリアスによる例外キャッチの動作について気になる点があったため、検証を行いました。弊社ではFuelPHPフレームワークを使用しており、404エラーなどに`HttpNotFoundException`を利用しています。この例外は`Fuel\Core\HttpNotFoundException`のエイリアスとして定義されているはずですが、`Fuel\Core\HttpNotFoundException`を投げた場合に`HttpNotFoundException`でキャッチできないケースが発生しました。これを踏まえ、具体的に調査を行いました。
### 検証環境
本検証はPHP8.0の環境で実施しました。
“`bash
$ php -v
PHP 8.0.30 (cli) (built: Apr 10 2024 07:34:47) ( NTS gcc x86_64 )
“`### 検証内容
エイリアスとオリジナルの例外がどのようにキ
PHPのエイリアスと例外処理の関係を検証してみた
## PHPのエイリアスと例外の関係について
PHPでエイリアスを利用する際、エイリアス元と同じように例外をキャッチできるかどうか気になったので、実際に検証してみました。今回の検証はPHP 8.0を前提に行っています。
### 環境情報
“`bash
$ php -v
PHP 8.0.30 (cli) (built: Apr 10 2024 07:34:47) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.30, Copyright (c) Zend Technologies
“`### サンプルコード
次のコードで、エイリアスと例外の関係を検証します。
“`php
【PHP】無名関数について
# 初めに
前略、無名関数についてよく分かっていなかったので調べました。# 参考
公式ドキュメントhttps://www.php.net/manual/ja/class.closure.php
# 無名関数とは
無名関数とは、関数名を指定せずに関数を作ることができる機能です。
作った関数は変数に代入したり、コールバック関数として使うことができます。“`php: 無名関数の例
// $testに無名関数を代入
$test = function() {
echo “Hello PHP!”;
};// 代入した無名関数を呼び出す
$test(); // Hello PHP!
“`# 無名関数を試してみる
ということで、いろいろ試してみます。## 引数の渡し方
無名関数で使う値を引数の渡し方は2種類あります。### 1. 変数を引数で値を渡す
無名関数の呼び出し時に引数を渡す方法です。
動的な値の受け渡しに適しています。
“`php: 無名関数呼び出し時、通常の引数を渡すことができる
// 引数を渡すことができる
$test = function
Laravelのchunkメソッドで全レコードが更新されなかった話
:::note
## 概要
chunkは一度にクエリの結果の小さな塊(チャンク)を取得し、各チャンクをクロージャーに送り込んで処理します。
注意点としてはチャンクのクロージャー内でレコードの更新や削除を行う場合、主キーや外部キーの変更がチャンクのクエリ結果に影響する可能性があります。
:::# chunkとは 💡
[公式 doc](https://laravel.com/docs/11.x/queries#chunking-results)
chunkメソッドは、一度にクエリの結果の小さな塊(チャンク)を取得し、各チャンクをクロージャーに送り込んで処理します。
何千ものデータベース・レコードを扱う必要がある場合に有効です。例)usersテーブル全体を一度に100レコードのチャンクで取得
“`php
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;DB::table(‘users’)->orderBy(‘id’)->chunk(100, function (Collection
PHPで三角関数を計算する(度数法、弧度法)
PHPで三角関数の正弦、余弦、正接を計算するにはsin(), cos(), tan()関数を用います。
この際に指定する角度は弧度法(ラジアン)となっています。
度数法で表現された角度をラジアンに変換するためには、deg2rad()関数を用います。たとえば、度数法で30°の正弦、余弦、正接を表示するスクリプトは以下のようになります。
“`php
$degree = 30; //度数法による角度
$radian = deg2rad($degree); //弧度法による角度
print sin($radian) . “\n”; //0.5
print cos($radian) . “\n”; //0.86602540378444
print tan($radian) . “\n”; //0.57735026918963
“`参考:
PHP: sin – Manual https://www.php.net/manual/ja/function.sin.php
PHP: cos – Manual https://www.php.net/manual/ja/function.co
【PHP】スーパーグローバル変数$_SERVER
## $_SERVERとは
$_SERVERとは、**PHPの定義済み変数のひとつ**で、PHPが稼働しているWebサーバーが生成するヘッダ情報、パス情報、スクリプトの位置のような情報を提供する連想配列となっています。
つまり、**HTTPサーバーやHTTP通信に関わる情報を取得したい場合に$_SERVERを使用します**。
## $_SERVER変数一覧
+ **$_SERVER[‘PHP_SELF’]**
現在実行しているスクリプトのファイル名です。ドキュメントルートから取得。
例) inquiry/input.php
+ **$_SERVER[‘GATEWAY_INTERFACE’]**
サーバーが使用しているCGIのバージョンを取得。
例) CGI/1.1
※CGIとは、クライアント側のWebブラウザの要求に応じてWebサーバが外部プログラムを呼び出して、その実行結果がHTTPを介してクライアントのWebブラウザに送信される仕組み
+ **$_SERVER[‘SERVER_ADDR’]**
現在のスクリプトが実行されて
Laravelでsqlの特訓をする
:::note
以下の記述を比較できるようまとめました
– 素のsql
– Eloquentモデル
– クエリビルダ
:::# 背景
SQLが苦手です。業務でLaravelを使っているのでLaravelを通して特訓したいと思います。以下のリポジトリで特訓します。
https://github.com/yamatai12/laravel-sql
# テーブルのER図
“`mermaid
erDiagram
employees {
INT id PK “従業員ID(主キー)”
VARCHAR(50) name “名前”
VARCHAR(50) position “役職”
INT department_id FK “部門ID(外部キー)”
}departments {
INT id PK “部門ID(主キー)”
VARCHAR(50) department_name “部門名”
}projects {
INT id P
Rocky Linux 9にPHP 8.3をRemi Repositoryからインストールする
# What’s?
以前、CentOS 8向けにこういう記事を書きました。
https://qiita.com/charon/items/5727966a98609a0b71ed
これからCentOSからAlmaLinuxやRocky Linuxを使うようになったので、あらためて書いておこうかなということで。
# Remi Repositoryについて
Remi Repository自体については、こちらを参照。
https://qiita.com/charon/items/6d34ae798e9b05e8bd0a
[Which are the goals of this repository?](https://blog.remirepo.net/pages/English-FAQ#goal)
# Remi RepositoryからのPHPのインストール方法
Remi RepositoryからのPHPのインストール方法は、このあたりを参考に。
https://blog.remirepo.net/post/2024/05/17/Install-PHP-8.3-on-
Sunoのプロンプトが200文字までなので、DeepL API & 文字数カウンターを作ってみた
## はじめに
**DeepL API & 文字数カウンター**
https://gist.github.com/sarap422/b2c0fdff98b14197cc7fd41541b5cf34Sunoのプロンプトは200文字までという制限があります。長文を分割するのは手間がかかるので、文字数をカウントしながら翻訳できるツールを作ってみました。DeepL API Freeを使用することで、月50万文字まで無料で高精度な翻訳が利用できます。
## DeepL API Freeの特徴
– 月間50万文字まで無料
– 高精度な機械翻訳
– シンプルなAPI
– 多言語対応(28言語以上)
– セキュアな通信(HTTPS必須)## 実装手順
### 1. DeepL API Freeのアカウント作成
1. [DeepL API Free](https://www.deepl.com/pro#developer)にアクセス
2. アカウントを作成
3. APIキーを取得(形式: `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:fx`)### 2
Todo管理アプリ「Todoカンリ」にWebサービスの基本機能を追加する
# 初めに
https://qiita.com/opatu07/items/13ebcd6071a3d7893d5d
この記事でHTML,CSSの使い方はある程度わかったので
Webサービスの基本的な機能を作れるようになりたいと考えました。
なのでその設計を行います。# 追加する機能
## 認証系
– 会員登録
– ログイン
– ログアウト## CRUD系
– 新規登録
– 一覧表示
– 詳細表示
– 編集機能
– 削除機能# プログラミング言語
– PHP
– MySQL# なぜこの開発を行うのか
今回はLaravelなどのPHPのフレームワークを使用せずに開発を行います。
フレームワークを使用しない理由はWebシステムの仕組みを理解して開発を行うことが大事だと考えたからです。
もし開発チームに入った時に一覧機能の修正を依頼されたとします。でもフレームワークに頼った開発しかしていない場合大量のソースコードの中でどこをどのように修正するべきかがわからないので開発をすることができません。
なので今回はPHPのみを使用してサービスの機能の根本的な理解を目的とした開発をし
ログファイル名を動的に変更する
## laravel.log に何でもいれるな
原則として laravel.log はエラーログだけにしたい。エラーが発生しないなら常に空っぽの状態というのが心休まる。
開発時に Debug ログの出力を仕込んだなら、コミットするときに削除(せめてコメントアウト)してもらいたい。デバックが必要な事態が起きたときに Debug ログを仕込んで laravel.log を監視しても、全然関係ないデバッグ情報が延々と流れてきては辟易する。
定期実行タスクの実行ログや特定機能のデバッグログは、それぞれの機能や目的に応じてログファイル名を変えて保存したい。……ということで、ログファイル名を指定できるカスタムヘルパー logger_to を作ってみた。
### カスタムヘルパーを作成
標準のロギングチャンネル sigle をベースに使用して名前だけを変更する。
app/Helpers/custom.php
“`php
use Illuminate\Support\Facades\Log;
use Monolog\Handler\StreamHandler;
use Monolog
Laravelのリレーション管理:外部キーを明示的に指定する方法
# はじめに
この記事はLaravelを学習する過程で得られた結果の備忘録です誤りや追記が必要な場合は都度修正します
## Laravelのリレーション設定
次のように hasMany メソッドが存在する場合、Laravelは外部キーを自動的に推測します。そこで発生しやすいエラーが、**存在しない外部キーを参照する**ことです。
本来ならば`customer_id`を参照して欲しいところ`customer_customer_id`というカラム名を自動的に推測して参照する場合があります。このような推測が誤って行われると、エラーの原因になります。
そのため**hasMany** と **belongsTo メソッド**それぞれの引数に対して、外部キーを指定することで、正しい外部キーを参照することができます。
### 修正前
“`customer.php
public function customer_contacts()
{
return $this->hasMany(CustomerContact::class);
}
“`
“`customer_cont
Laravelとは
# Laravelとは
– LaravelとはPHPのフレームワーク。
# フレームワークとは
**フレームワークとは開発に必要な機能をまとめた枠組みのこと。**
例えるとバーベキューセットのような物。
予め、食材(関数等)が用意されており、あとは焼く(呼び出す)だけ。
セキュリティ機能もバッチリ。まとめると
**良く使う機能は予め搭載されており、呼び出すだけ。**
**1からコードを書くより効率的に、さらにセキュリティー上も安全なwebアプリを作成できる。**# Laravelで作成できるもの
– 顧客管理システム
– ブログ
– 学習サイト
– ECサイト
– コミュニティサイト 等
Laravel11で『PHPフレームワーク Laravel Webアプリケーション開発』差分メモ (第一部 Laravelの基礎 Chapter1)
# 概要
Laravel11で下記を写経した。
[PHPフレームワーク Laravel Webアプリケーション開発 バージョン8.x対応 (ソシム)](https://amzn.asia/d/dedpj7x)
今の設定と差分があるのでメモをしていく。Laravelを触るのは4年ぶり。
最後触れたLaravelは6。## 環境
* Laravel Framework 11.29.0
* Docker version 27.2.0
* Mac (intel)
* Laravel Sail (sail/runtimes/8.3)(なお、`php artisan`コマンドについては、sailコマンドに慣れるのが微妙だったので、`sail shell`でコンテナの中に入って叩くようにしてます)
# 第一部 Laravelの基礎
## Chaper1 Laravelの概要
### RouteServiceProvider::HOMEがない“`
‘/home’
“`
みたいな文字列を作ってくれそうなのだが、そもそも
このHOME定数がもうLaravel11では無くなっている模様
CGI (Common Gateway Interface) について
# CGI (Common Gateway Interface) について
## 概要
CGI(Common Gateway Interface)は、Webサーバーと外部プログラムを接続する仕組みで、ユーザーからのリクエストに応じて動的なコンテンツを生成するために使用されます。CGIプログラムは、PerlやPython、C、PHPなどの多くのプログラミング言語で書くことができ、フォーム入力などを処理し結果をWebページに反映させることが可能です。
## CGIの仕組み
CGIは以下の流れで動作します:
1. **リクエストの受け取り**:ユーザーがブラウザでリクエストを送信。
2. **WebサーバーからCGIプログラムへの呼び出し**:WebサーバーがCGIプログラムを実行。
3. **CGIプログラムによる処理**:リクエスト内容に基づいてデータの処理や計算を行う。
4. **レスポンスの返却**:CGIプログラムが結果をHTML形式で生成し、Webサーバーを介してユーザーに返す。## CGIプログラムの例
### Perlスクリプト例
次の例では、Perlスクリ