- 1. 目次
- 2. カリキュラムで学んだこと一覧
- 2.1. 【PHP】【javascript】三項演算子の入れ子
- 2.2. phpで応用情報のバブルソートをコード化した
- 2.3. PHP:SSH接続できないレンタルサーバーでコマンドを実行する
- 2.4. ISO 8601形式のDateTimeの扱いには気をつけよう
- 2.5. CSSの優先度には気をつけようの話
- 2.6. 【Laravel】環境変数の扱い方
- 2.7. PHPにて変数の文字列が10ケタ且つ値が0または1であるかを確認する方法
- 2.8. PHPMyAdminにログインできない場合の対処法
- 2.9. Go言語で完全コンストラクタパターンを実装する
- 2.10. PHPでのシングルアロー演算子(->)を完全に理解した
- 2.11. abraham/twitteroauthでAPI v2用のtokenを得る
PHP Docker GD ライブラリのインストール
## 環境
https://github.com/ucan-lab/docker-laravel/blob/main/infra/docker/php/Dockerfile
– PHP: 8.2.8
## Dockerfile(差分だけ)
“`Dockerfile
RUN apt-get update \
&& apt-get -y install –no-install-recommends \
libpng-dev libjpeg-dev \
&& docker-php-ext-configure gd –with-jpeg \
&& docker-php-ext-install \
-j$(nproc) gd
“``–with-png` オプションはデフォルトで組み込まれたから廃止されたそうです(詳しくないです)
`–with-jpeg` jpegを使うためにはこのオプションが必要でした。
`-j$(nproc)` nprocコマンドはCPUコア数が返り、-jオプションは指定したCPUコア数で並列ビルドを行うための設定になるよう
Laravel 10.x FormRequest の検証ルールテストの実装に困ったこと
## 概要
LaravelにはHTTPテストの機能があり、このテストを行うとルーティング、フォームリクエスト、コントローラ、レスポンスをまとめてテストできるのでFormRequest単体でテストする機会は少ないかもしれません。
ただ、FormRequestの実装が複雑になるとHTTPテストのコストが高くなるのでFormRequest単体でテストしたいよね。ということがありました。
FormRequstクラスの中で `$this->input()` や `$this->route()` などを使って複雑な検証ルールになってる場合は参考にしてください。
※この記事では認可のテストは行なっていません。
## 環境
PHP: 8.2.8
Laravel: 10.15.0## 関連記事
https://qiita.com/ucan-lab/items/9a294163b0fd8ba25aca
## 準備
“`shell-session
$ touch tests/Unit/Http/Requests/RequestTestCase.php
“`“`php:test
Twitter API:動かなくなったTwitter botを復活させる
# はじめに
Twitter APIを使用してTwitter botを作成していたのですが、APIの仕様変更により、2023年6月頃のツイートを最後に実行されなくなってしまいました。
bot復活までの対処についてまとめます。botは次のような仕組みで実装していました。
1. GAS(Google Apps Script)をトリガーにPHPのスクリプトをキック
1. PHPからTwitterOAuthというライブラリを使用してTwitter APIを操作
1. ツイートのポストやファボ、ツイートを取得するサーバー環境は次のとおりです。
* 開発環境:VirtualBoxのCentOS7.5(Vagrant:bento/centos-7.5)
* 本番環境:[さくらのレンタルサーバ – ライトプラン](https://rs.sakura.ad.jp/lite.html)改修前のアプリのバージョンです。
* PHP:7系
* TwitterOAuth:0.7.2(おそらく)
* Twitter API:v1.1改修後のアプリのバージョンです。
* PHP:8系
* Twitt
【Laravel】Seederを使って初期データを設定する
## はじめに
Laravelには、データベースに初期データを追加するための便利な機能である`Seeder`が組み込まれており、データベースの初期状態を簡単に設定することができます。## Seederとは
`Seeder`は、Laravelのデータベース初期化機能の一部であり、データベースに初期データを追加するためのクラスです。Seederを使用することで、開発環境やテスト環境のデータベースを簡単に初期化し、必要な初期データを追加することができます。## Seederを作成する
Laravelでは、artisanコマンドを使用してSeederを作成することができます。以下のコマンドを実行すると、新しいSeederクラスが生成されます。“`
php artisan make:seeder UsersTableSeeder
“`
上記の例では、UsersTableSeederという名前の`Seederクラス`が作成されます。Seederクラスは`database/seeders`ディレクトリに作成されます。作成されたUsersTableSeeder.phpファイルの初期
LaravelのwhenLoaded()がすごい
LaravelのAPIResourceで便利な関数を見つけたのでご紹介します。
APIの設計によってはModelごとにResourceを作ってあげるだけで完結しそうです!## Modelの作成
`m_users`テーブルと`m_roles`テーブルがあるとします。
いつも通りModelにリレーションを定義します。`MUser.php`
“`php
public function mRole()
{
return $this->belongsTo(MRole::class);
}
“`## Resourceの作成
今回の主役Resourceです。
この`whenLoaded()`を使用した場合、`with()`で取得してある場合のみ、プロパティがレスポンスに含まれるようになります。
次で実際に使用してみます。`UserResource.php`
“`php
public function toArray($request)
{
return [
‘id’ => $this
【Laravel】定数を扱うなら専用のクラスを使おう
## はじめに
laravelで定数を扱う方法は多々ありますが、この記事ではクラスを使用した方法を解説します。## マジックナンバーについて
まず、開発をする上で注意すべきことに“マジックナンバー“というものがあります。マジックナンバーというのは、“それが何を示しているかがわからない文字列や数値“のことです。
> プログラムにおけるマジックナンバー(英: magic number、魔法の数字)とは、何らかの識別子もしくは定数として用いられる、プログラムのソースコード中に書かれた具体的な数値である。そのプログラムを書いた時点では製作者は数値の意図を把握しているが、他のプログラマーまたは製作者本人がマジックナンバーの意図を忘れたときに閲覧すると「この数字の意味はわからないが、とにかくプログラムは正しく動く。まるで魔法の数字だ」という皮肉を含む。
https://ja.wikipedia.org/wiki/%E3%83%9E%E3%82%B8%E3%83%83%E3%82%AF%E3%83%8A%E3%83%B3%E3%83%90%E3%83%BC_(%E3%83%97%
Javascriptの非同期処理でjQueryのajax使ってみた
# 辿り着くまでに
今日は仕事でWebアプリの保守してました、疲れた、、
admin画面を作成していたのだが、
検索ボタンを押した時に入力フォームをhideしたいということで、
苦戦しておりました。Javascriptを書いても、一瞬hideされてすぐ戻るんだ、、、
悲しい、、、ということで調べまくっていたところ、
ajaxとやらがいいらしい?
非同期処理とやらがいいらしい?ということでjQueryのajaxを使用してみっか!
# 非同期処理とは
ボタンポチ!=関数起動!
が同期処理。ボタンポチ!=第1関数起動! ・・・数年後。第2関数起動!
これが非同期処理なのだ。というのは冗談で、
・・・詳しく書いてるサイトがありましたのでリンク貼っています。
https://qiita.com/yunity29/items/7ccc84d47e139340ecbc代表的なのはGoogleMapとか。
リロードしなくても、ボタン押さなくても、地図がガシガシ更新されてます。
非同期処理なかったら1ミリ動かしたらリロードしなあかん。しぬ。# ajaxについて
laravel メモ1
configのクリアlaravel_sample> php artisan config:clear
INFO Configuration cache cleared successfully.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3478286/fdca86a3-4257-c645-95e7-cda10b3c3beb.png)マイグレーションlaravel_sample>php artisan migrate
INFO Preparing database.
Creating migration table …………………………………………………………. 87ms DONE
INFO Running migrations.2014_10_
PHPの学びをまとめる
PHPを学び始めたので、まずはオンライン講座で学習したことをまとめます。
講座では、Wordpressでブログを作りながらPHPを学ぶという流れでした。※まだ未完成ですが、中々完成しないのでとりあえず投稿だけしておきます。随時更新予定です。
目次
- カリキュラムで学んだこと一覧
- SLスタジオで学習して補充した知識
- 課題
カリキュラムで学んだこと一覧
あとで参照した時に索引のように使えるように、参考サイトと一緒に一覧にします。
【PHP】【javascript】三項演算子の入れ子
# コード
“`PHP
phpで応用情報のバブルソートをコード化した
# 概要
応用情報の問題を解いている時にバブルソートの問題を見つけたので、それをプログラムで書いてみました。# バブルソートとは?
隣り合う数字を比較し、昇順の場合は左側の数字が大きければ順番を入れ替えます。降順の場合は右側の数字が大きければ順番を入れ替えます。応用情報問題 https://www.ap-siken.com/s/kakomon/04_aki/q6.html
# 完成コード
“`php
= $i + 1 ; $j–){if($a[$j] < $a[$j - 1]){ $w = $a[$j]; $a[$j] = $a[$j - 1]; $a[$j - 1] = $w; } } echo $a[$i]; } ?>
“`
配列はarrayでも上記のような書き方でも可です。
応用情報では大文字のAですが、
PHP:SSH接続できないレンタルサーバーでコマンドを実行する
# はじめに
自分が使用しているレンタルサーバーは「さくらのレンタルサーバのライトプラン」で、SSH接続ができない仕様となっています。
なんとかコマンド実行できないか調べたところ、PHPのexec関数を使えば可能だったので、手順についてまとめます。![さくらのレンタルサーバプラン比較](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230850/06202a47-bb4d-2df6-c6ac-238948f8e3fc.png)
出典:[プラン比較 – レンタルサーバーはさくらインターネット](https://rs.sakura.ad.jp/plans.html)# 環境
PHPがはいっていることが前提となります。
* サーバー:[さくらのレンタルサーバ – ライトプラン](https://rs.sakura.ad.jp/lite.html)
* PHPのバージョン:8.1.20# 手順
1. phpファイルを作成し、次のようなスクリプトを記述する(`$command`変数に実行したいコマンドを記述するISO 8601形式のDateTimeの扱いには気をつけよう
## 概要
これは、私の体験談ですがFlutterでクライアントサイドの開発をしている際、APIのレスポンスで来る日付と、アプリ内部で持っている現在日時を比較するというロジックに関する不具合報告が上がってきました。
それについて調査していたところ、*ISO 8601*形式のDateTimeがAPIから返却されるのに対し、何も考えずただDateTime型にパースしていました。その結果、よからぬ挙動を起こしていたため備忘録として残したいと思います。
## DateTimeの種類(抜粋)
データーベースのシステムや、FirebaseなどのNoSQLサービスなどにも依存すると思いますが、DateTimeはいろいろな形式があります。:::note warn
この記事でのサンプルは、JST(日本標準時)の補正をかけた時間を用います
:::#### ISO 8601
ISO8601が今回の問題の日付フォーマットですが、以下のような種類があります
– 完全形式: `2023-08-01T00:00:00+09:00`
– 短縮形式: `20230801T000000+0900`
–CSSの優先度には気をつけようの話
### Laravel-adminでadmin画面を作成中・・・
ということで、本日はHTMLでフロントを作成していました。
色変えたり、文字を揃えたり、gridを調節したり、、、。Laravel-adminを使用しており、
admin画面はBootstrapがガンガンついています。デフォでも綺麗につくれるのですが、
微妙なカスタマイズを行う必要がありまして、、、### BootstrapがかかっているところにCSSが追加できない!!
Bootstrapがかかっているところにはstyle属性をつけてもCSSがつかないんですね、、、
知らなかった、、、
悩むこと1時間ほど、、、、、## CSSには優先度とやらがあるらしい!
ということを知ったのでした。
参考 http://creator.aainc.co.jp/archives/4947importantつけたらimportantになるのね、CSSちゃんかしこい。
優先順位について理解する余力がなかったので、
解決策として、Bootstrap.cssを直接編集する荒技(?)を取りました。
コメントアウト残しといたか【Laravel】環境変数の扱い方
## 環境
Laravel v9.52.10 (PHP v8.2.6)## はじめに
環境変数を参照する時は、“env()“からではなく、“config()“経由で参照する。## 環境変数の定義
laravelでは、“.env“というファイルに環境変数を定義していきます。.envファイル自体はプロジェクトルート直下にあります。
“`env
APP_NAME=Laravel
APP_ENV=local
APP_KEY=********
APP_DEBUG=true
APP_URL=http://localhost
“`
大体このような形式になっていると思います。環境変数名は、上記のような“スネークケース“で記述します。
## 環境変数を使用する
まずは、環境変数を自分で定義していきます。
“`env
TEST_NAME=miura
“`
このように定義することで、この環境変数の値をプロジェクトの中で使用することができるようになります。次に、先ほど定義した環境変数をプログラムで使用します。
“`php
$name = env(‘TESPHPにて変数の文字列が10ケタ且つ値が0または1であるかを確認する方法
本記事では、PHPで変数の文字列が10桁且つ値が0または1であるかを確認する方法について記載します。
## コードの例以下に、指定した要件を満たす簡単なPHPコードの例を示します。
“`php
“`このコードでは、`preg_match`関数を使用しています。
`preg_match`は、指定した正規表現パターンが対象の文字列に一致するかどうかを確認する関数です。ここでは`”/^[01]{10}$/”`という正規表現を使用しています。
これは、0または1の文字がちょうど10回PHPMyAdminにログインできない場合の対処法
いつも通りXAMPPを使用してPHPMyAdminを使用としたら、以下のように表示された。
解決するのに少し時間がかかったのでメモ書き。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3323019/67c0c1c7-cf16-45e0-f484-d085d93c15a8.png)## どこが原因か探る
・MySQLはログインできるか確認する。
<確認方法>
①XAMPPのコントロールパネルでShellを開く。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3323019/bb21046a-f68b-833d-dfe6-dc75f827afa1.png)
②Shellに以下のコマンドを入力する。
“`
mysql -u root -p
“`
③パスワードを聞かれたら、パスワードを入力してEnterを押す。
④ログインできない場合は以下を試す。・MySQLにパスワードありでログイ
Go言語で完全コンストラクタパターンを実装する
## はじめに
これまではPHPをメインで扱っていたのですが、最近はGo言語を使用しています。そこで、Go言語ではどのように値オブジェクト&完全コンストラクタパターン(Complete Constructor Pattern)を実装するのか解説していきます。## 対象の読者
– Go言語に興味を持っている方
– オブジェクト指向設計(デザインパターン)に興味がある方
– コードの品質向上を目指す方
– PHPからGoへの移行を検討している方## 完全コンストラクタパターンの基本
### 完全コンストラクタパターンとは?
インスタンスを生成した時点で完全な状態となるような初期化ロジックを、コンストラクタに実装するパターンのことです。完全コンストラクタパターンを用いることで、オブジェクトが不正な状態で存在することがなくなります。これにより、呼び出し側でオブジェクトが正常かどうかチェックする必要がなくなり、ロジックの重複や修正漏れを防ぎ、保守性の向上が見込めます。
### 注意点 : 生成したインスタンスを不変に保つ
せっかく完全コンストラクタでオブジェクトを完全な状態にしてもPHPでのシングルアロー演算子(->)を完全に理解した
# オブジェクトから指定したキーの値を取得したい!
ということで、
そんな機会がありました。“`
@foreach ($shopArticles as $shopArticle)id: {{ $shopArticle->id }}
name: {{ $shopArticle->name }}
comment: {{ $shopArticle->comment }}
shop_id: {{ $shopArticle->shop_id }}
@endforeach
“`こんな感じで値を取得しました。
“`
@foreach ($shopArticles as $shopArticle)id: {{ $id }}
name: {{ $name }}
comment: {{ $comment }}
shop_id: {{ $shop_id }}
@endforeach
“`初め
abraham/twitteroauthでAPI v2用のtokenを得る
意外と探してもなかったので備忘録。
“`php
CLIENT_ID = ‘xxxxxxxxxxxx’
CLIENT_SECRET = ‘xxxxxxxxxxxx’
“`
とOauth2用の`CLIENT ID`と`CLIENT SECRET`がある中で、“`php
//リダイレクトのときについてくるcodeを取得する
$code = $_GET[‘code’];$twitter = new TwitterOAuth(CLIENT_ID,CLIENT_SECRET);
$token = $twitter->oauth2(‘2/oauth2/token’,[
‘code’ => $code,
‘redirect_uri’ => REDIRECT_URI,
‘grant_type’ => ‘authorization_code’,
‘code_verifier’ => $verifier
]);
var_dump($token)
“`
とする。エンドポイントのURLが`oauth2/token`ではなく`2/oauth2/token`にな
関連する記事
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関連のことを調べてみた