phpunitテストする際に

2024.02.17

Logging

おはようございます、Laravelの話なんだけどもphpunitTestする際にコントローラーのviewのparamっていうのかな?あのデータを取る方法が知りたいのだけど、ググってもchatGPTに投げても明確な答えが返ってこない…。因みにgetContent()っていうので、全返却データが取れることは知っているのだけども。

dd($response)で中身を見ると取得することが出来そうなんですけどねぇ。何故か出来ないのです、とても悔しい気持ちになったので、誰か知っている人はいないかと思って書いています。知っている人はレスをお願いしたいです。リモートワークってそこが聞けない聞きづらいなって思います、新人は中々大変だなって。

scenic view of a lightning in the sky
Photo by Debasish Vishal on Pexels.com

リモートワークでコロナ禍、働いていたIT新人組は結構たいへんな思いをしたのかもしれないなって思います。いまではchatGPTというちょっとペテン師な先生がいるのでちょっと前までよりか楽になったんじゃないでしょうか?

今回分からなかった事は、Qiitaに質問しても良いなって思っています。
(レスが付かずじまいだったらQiitaに質問します。)

明日へ続く。

タグ

ChatGPT, dd, getContent, IT新人組, Laravel, PARAM, Photo by Debasish, qiita, response, view, Vishal on Pexels.com, コロナ禍, コントローラー, じまいだったらQiita, ペテン師, リモートワーク, 中身, 悔しい気持ち, 新人, 答え,

PayJPの決済処理。

2024.02.06

Logging

おはようございます、PayJPの決済処理をLaravelに導入してみました。そんなに難しい話ではないけれど、クレジットカードの入力欄はPayJPさんにもう少しデフォルト状態で頑張って欲しかった。

変更は可能なのだけども、ちょっとイマイチ感があります。PayJPとグローバル展開しているStripeを比べるとやっぱStripeの方がビジュアル良いですよね。恐らくどちらも個人事業主でも審査が通るらしいので(全てのひとが通るとは限らない)、良さげだなって思っています。

今回、試したPayJPのAPIかStripeのAPIでサブスク決済を作ってみました。テストモードですがちゃんと動いていたので良かったです。これで決済処理部分は出来たのだけど、サービスモデルが無い、いろいろ考えて入るもののこれは良さげだなっていうのが無い感じですね。

HxHのサービスはこれ需要があるだろうと思って結局当たりました、なので自分はそれなりにこれ上手くいきそうなアンテナを持っています。アイディアが降ってきたらそれを作ろうと思っていますが、なかなかアイディアがでてこないのは外に出ていないからもしれないですね。

なんか無いかな~。

明日へ続く。

タグ

API, APIかStripe, HxH, Laravel, PayJP, PayJPさん, Stripe, アイディア, アンテナ, イマイチ感, グローバル展開, サブスク決済, テストモード, ぱStripe, ひと, 審査, 少しデフォルト状態, 決済処理, , 需要,

Laravelがまぁまぁ身についてきいる。

2024.01.10

Logging

おはようございます、Laravelがまぁまぁ身についてきいるのですが今年はもっと磨きをかけたいなって思っています。非同期処理とかキューとかは一通り理解できた感じですが、DDDが未だまだ感が強いのでそこを慣れていきたいなって思っています。

スケジュールでJobを実行する場合、withoutOverlappingをお忘れなく。無いと重い処理とかでコケちゃう部分が出てくるのでこれは必須だと思います。Qiitaに有ると無いとでの処理の時系列を解説されている方がいるので、そちらを参考にしてみてください。

$schedule->command($command)->everyMinute()->withoutOverlapping();

明日へ続く。

タグ

-Command, $schedule-&gt, DDD, everyMinute, gt, job, Laravel, qiita, withoutOverlapping, キュー, コケちゃう部分, スケジュール, 一通り, 処理, 参考, 必須, 時系列, , 非同期処理,

LaravelのAPIを作っていたので

2023.10.12

Logging

おはようございます。先日の休みにLaravelのAPIを作っていました。出来ること出来ないことが分かったので、メモとして残しときます。敢えていうと恐らくそうだろうという感じです。ではまずAPIを使用したい場合はweb.phpではなくてapi.phpを使用しないとAPIは機能しない。

APIにはcros.phpの設定は関係ないAPIをアクセス制御したい場合は、認証式にしないといけない。そうではない場合、どこからでも参照は可能になる

参照先サイトが分かれば何とかなると思っていたけれども、SSL化したサイトからAPI叩かれたら参照先、分からないよねって話。ミドルウェアでIPから制御する方法はあるので認証式にしたくない場合はそちらの方法で何とかしてください。

自分はphpのcrulで制御するので、基本、ワイヤーシャークとか入れてないとエンドポイントが分からないので、認証式にしないで運用する方向で調整中です。

基本的にAPI出来たので、VPSサーバーで動いているWEBサービスも今月中に移動します。まだVPSサーバーは一年契約なので起動していますが、延長契約は結ばずダウングレードしたVPSサーバーと新たに契約を結ぶつもりでいます。

タグ

API, api.php, cros.php, crul, Laravel, php, SSL化, VPSサーバー, web.php, Webサービス, エンドポイント, ミドルウェア, メモ, ワイヤーシャーク, 休み, 参照, 参照先, 延長契約, 方向, 認証式,

laravelの技術ネタ。こういうのを有ることを。

2023.10.03

Logging

おはようございます、laravelの技術ネタです。Laravelにはこういうメソッドが用意されています。下記のリンクを参照ください。

https://readouble.com/laravel/8.x/ja/collections.html

こんな機能が有ることを覚えて置くと良いです。なので、わざわざ自分でコードを書かなくても便利な機能があります。覚えて置くと良いです。

この頃の学びはPHPに文字の置き換えする事。いやいや文字の置き換えなんて初歩の初歩でしょって思うかも知れません。自分もそう思っていましたけど、PHPにはいろいろな文字の置き換えができるメソッドがあります。その中でこれは便利だなっていう文字の置き換えはこれ!!

文字の位置を指定して、その部分だけを文字を置き換えることが出来るメソッドです。

substr_replace

明日へつづく

タグ

Laravel, php, substr_replace, いやいや文字, コード, メソッド, リンク, わざわざ自分, 下記, 位置, 初歩, 技術ネタ, 文字, 機能, 自分, 部分,

laravelのFactoryって便利なダミーデータが作れるよ。

2023.09.20

Logging

おはようございます、laravelのFactoryって便利なダミーデータが作れるよ。ユニットテストするときに使用するのでLaravelを触ったことがある人なら分かると思いますが、ダミーデータ作るれるのは便利ですよねぇーーー😌。因みに公式サイトのサンプルコードに細工したサンプルコードを載せておきます。

namespace Database\Factories;

use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
use App\zip358com;

class UserFactory extends Factory
{
    public function definition()
    {
        return [
            'name' => $this->faker->name(),
            'email' => $this->faker->unique()->safeEmail(),
            'email_verified_at' => now(),
            'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
            'remember_token' => Str::random(10),
            'zip358com' =>function(){
                 return (zip358com::first())->url;
             }
        ];
    }
}

最後に記載していることが恐らくテストを行っていくうちに必要になってくる事だと思います。もう一つ必要になってくるのは、固定したデータでユニットテストを行いたい場合はユニットテストの方でこのような感じに書くと良いです。

use Illuminate\Foundation\Testing\DatabaseMigrations;
use Tests\TestCase;
use App\User;

class YourTest extends TestCase
{
    use DatabaseMigrations;

    public function test_example()
    {
          $user = User::factory()->create([
            'name' =>'zip 358',
            'email' => 'mail@zip358.com',
            'email_verified_at' => now(),
            'password' => '1234567890', // password
            'remember_token' => Str::random(10),
            'zip358com'=>'https://zip358.com',
         ]);
         $this->assertEquals('zip 358', $user->name);
         $user->delete();
    }

タグ

Factory, FIRST, function, gt, Laravel, namespace DatabaseFactories, Now, Og-, password, random, remember_token, return, STR, use IlluminateDatabaseEloquentFactoriesFactory, use IlluminateFoundationTestingDatabaseMigrations, use IlluminateSupportStr, use TestsTestCase, user, ユニットテスト,

LaravelのファザードとDDD設計というもの。

2023.08.31

Logging

おはようございます、Laravelのファザードを使用すると自分で作ったクラスファイルを共通のものとして使用できたりします。これは便利ですよね、設定はQiitaとかでググると使用方法が出てくるのでここでは割愛してリンクだけ載せておきます。

https://qiita.com/minato-naka/items/095f2a1beec1d09f423e

これとDDD設計を駆使すればもっと奥の深いLaravel使いになれるでしょうけれど、自分はまだ見習い戦士レベルなのでDDD設計に関しては読めるだけで、あれをこうしてあーしてすれば良いじゃないとまでは言えないですね。この頃、思うのですがITの話って抽象的な話になってきますよね、昔はそれが理解不能でしたがこの頃、それが何となく理解出来る様になってきました。

抽象的な話って会話の前後を汲み取って、こういう事だろうという事を考えないといけない部分もあります。抽象的な話は何となく理解出来ているのですが、抽象的な問いに関しては未だにどう返せば良いのか分からず言葉が詰まることがありますね。

ちなみに自分がIT就職活動していた時に、この抽象的な問いによく出会いました。どう答えても間違いじゃない。答えが何通りもある答えに言葉を詰まらすより、自分が思っていることや考えていることを意思表現した方が良いです。余程、変な回答をしない限り面接官が受け流してくれます。

最後に丸コピみたいなコードを記載して今回の記事は〆とします。

\ClassA::methodA();

タグ

ClassA, DDD設計, IT, IT就職, Laravel, methodA, qiita, ファザード, 丸コピ, 会話, 共通, 前後, 回答, , 意思, 戦士, 最後, 深いLaravel使い, 答え, 限り面接官,

リセットメールが詐欺メールに判断されないために。

2023.08.19

Logging

おはようございます、リセットメールが詐欺メールに判断されないために。最低限、対応しないといけないの事がセキュア送信に対応することです。これを知らなかったので、今ちょっと送信メールが詐欺メールと誤判断されて面倒なことになっています。一つは送信時に詐欺メールじゃないよって暗号化をかけて送信することと、サイト事態はSSL化は必須ですけど、それだけでは不充分でウィルス対策ソフトサイトから信頼を得るために、サイト申請(ウィルス対策ソフト)を行うべしです。

これらを担保すれば詐欺メールから脱却出来ます。因みに詐欺メール脱却は現在手続き中ですが、Gメールの迷惑メール脱却はメール送信でセキュア送信に変えるだけでOKになりました💁。

LaravelではenvのMAIL_ENCRYPTIONをtlsからstarttls変えるだけ今のところ大丈夫みたいです。

上記の問題はいまEC管理ツールを夏季休暇を使用して少しずつ形にしっている中で起こったインシデントです。Xにもポストしたのですが商品一覧なんてかなりショボい。情報量が少ない状態ですが、登録時にはYahoo!モールで使用できる量の情報量がインプット出来るようにはしています。なので、完成形になればそれなりに使えるツールになるはずです。お値段は月5000円のサブスクで提供していくつもりでいます。今のところ個人開発で頑張ります。

タグ

EC管理ツール, env, Laravel, MAIL_ENCRYPTION, tls, X, Yahoo, ウィルス対策, サブスク, セキュア送信, ツール, モール, リセットメール, 信頼, 夏季休暇, 必須, 最低限, 詐欺メール脱却, , 迷惑メール脱却,

Laravelでユニットテストをする中Factoryは欠かせない。

2023.08.11

Logging

おはようございます、Laravelでユニットテストをする中Factoryは欠かせない存在だと思っています。毎回、データを初期化していると処理が重くなってしまいます。ユニットテストが多くなるに連れて時間がかかるのは仕方がないのかなって思いますが、極力時間短縮したいと思うのは普通のことだと思います(github上にpull requestしphpstan(静的解析ツール)やphpunit(ユニットテスト)を行っていく中で結構時間がかかるのはユニットテストだと思います。)。

恐らくユニットテストでデーターベースの初期化をしない事が良いだろうと思うようになってきました。そんな中で役に立つのがFactoryです。これを使用することで次のテストに影響を与えないみたいなんですね。なので、この頃はFactoryを使用しています。

Factoryは下記のCommandで生成することが出来ます。

php artisan make:factory filename

仕様の仕方はこんな感じになります💁

<?php
$user = User::factory()->make([
 'username'=>'test',
 'password'=>'testpass',
]);
print $user->username;

タグ

-Command, Factory, factory filename, github上, gt, gt;username, Laravel, lt, php, php artisan make, phpunit, print, pull requestしphpstan, user, この頃, データーベース, ユニットテスト, 中Factory,

C#という物も勉強しようと本を買いました。DDDも。

2023.08.07

Logging

おはようございます、C#という物も勉強しようと本を買いました。入門書じゃなくて応用編みたいな本です。Laravelも応用編が読みたいのですがないですよねぇ。全然無い訳ではないのだけどもっといろいろな機能を紹介している本が読みたいなって思っています。

C#は何のために購入したのかといえば、Javaの思想とかが根底にあるのとアプリなどがマルチで作れることと何かを考慮して勉強して損はないなって思ったからです。そしてAndroidStudioなどのよりも開発環境が安定していることが再度勉強しようと思ったきっかけです。

あとここ十年、WEB系ばかりの仕事だったのでソフトウェアも知識として持ちたいなって思ったのがきっかけになります。あと、Laravelで開発しているとやっぱもっと掘り下げて知識が必要だなって感じているのでそういう事を踏まえてのC#の再度勉強です。

あと、C#の本とは別にドメイン駆動設計の本を買いました。仕事をしている環境ではDDDが組み込まれている所があるので勉強しようとこの本を買いました。DDDをマスターすれば機能の修正や機能追加をもっとスムーズに対応出来ると思ったのがこの本を購入するきっかけです。ネットで転がっている知識を鵜呑みにして覚えると覚え直しが発生する可能性があるので、軸となる部分を一冊を持っとくのは大事かもなのでそういう理由もあります。

タグ

AndroidStudio, C++, DDD, java, Laravel, アプリ, きっかけ, ソフトウェア, ドメイン駆動設計, 修正, 入門書, 再度, 再度勉強, 応用編, 思想, , 根底, , , 鵜呑み,

Laravelにてnpmが使えないサーバにてログイン画面の構築。

2023.08.06

Logging

おはようございます、Laravelにてnpmが使えないサーバにてログイン画面の構築のお話です。お話というより動画を作りました。この動画を全画面表示でみると大体のことが分かると思います。この動画は画面ができるまですので、この後、Commandを使用して下記のCommandを打ち完成となります。

php artisan migrate
laravelのログイン機能と日本語化とバリデーション日本語化

前提条件として.envファイルの設定は済ましていることとします。因みにさくらレンタルサーバーでは初期のドメインより.envファイルが見える仕様になっているので、.htaccessファイルを使用して隠しファイルは見えないように設定してあげてください🗿。さくらレンタルサーバーの公式ブログではこの事に一切触れていないのだけど大丈夫なのか?気になるところです。

<Files ~ "^(\.en|\.edi|\.git|\.dat|\.sql|composer\.|artisan)">
deny from all
</Files>
{
    "Login": "ログイン",
    "Register": "新規登録",
    "Forgot Your Password?": "パスワードを忘れた場合",
    "Reset Password": "パスワード再設定",
    "Send Password Reset Link":  "パスワード再設定URLを送信",
    
    "Name": "お名前",
    "Email Address": "メールアドレス",
    "Password": "パスワード",
    "Confirm Password": "パスワード(確認用)",
    "Remember Me": "ログイン状態を保存",
    
    "Hello!": "ご利用ありがとうございます。",
    "Reset Password Notification":  "パスワード再設定のお知らせ",
    "You are receiving this email because we received a password reset request for your account.": "あなたのアカウントでパスワード再発行のリクエストがありました。",
    "This password reset link will expire in :count minutes.": "再設定URLの有効期限は :count 分です。",
    "If you did not request a password reset, no further action is required.": "もしパスワード再発行をリクエストしていない場合、操作は不要です。",
    "If you’re having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser: [:actionURL](:actionURL)": "\":actionText\"ボタンを押しても何も起きない場合、以下URLをコピーしてWebブラウザに貼り付けてください。\n[:actionURL](:actionURL)",
    "Regards": "よろしくお願いいたします"
    }

タグ

-Command, actionText, actionURL, artisan, count, dat, edi, en, envファイル, git, gt, Laravel, lt, npm, quot, quot;Login&quot, quot;Regards&quot, quot;Register&quot, sql|composer, will expire,

Laravelのappとresolveでインスタンス。

2023.07.29

Logging

おはようございます、この頃、技術的な記事を書いていなかったのでLaravelのことについて語ります。Laravelのappとresolveでインスタンスしてくれる便利な機能があります。使い方は下記を参照してください。

$result = resolve('App\SomeClass')->someMethod();
$result = app('App\SomeClass')->someMethod();

では、これは何をするでしょうか。Factory(ファクトリー)はどんな機能なのかをBardに説明してもらいました。

LaravelのFactoryは、テストでデータベースを使う代わりに、データの生成方法を定義して、そのデータをテストで使うことができる機能です。
例えば、ユーザーモデルのテストをするときに、Factoryを使ってユーザーを生成することができます。そうすることで、データベースを使う必要がなくなり、テストが高速化されます。
また、Factoryを使うことで、テストで使用するデータの作成を自動化することができます。これにより、テストの保守性が向上します。
Factoryは、Laravelのテストを書くときに、非常に便利な機能です。
// 1つのデータを生成
$user = factory(App\Models\User::class)->create();

// 複数のデータを生成
$users = factory(App\Models\User::class, 5)->create();

appとresolveを知っていた人は恐らくFactoryも知っているかも知れません。Laravelのドキュメントを隅から隅まで読めば参考書は要らない気がします。英語がスラスラと読めるようになりたいなってこういう時に思います。

タグ

App, AppModelsUser, AppSomeClass&#39, Bard, class, create, Factory, gt, Laravel, resolve, result, someMethod, user, users, データベース, ドキュメント, ファクトリー, 生成, ,

filament[フィラメント:細糸]というLaravelのアレ。

2023.07.26

Logging

おはようございます、filament[フィラメント:細糸]というLaravelの管理画面とかが作れてしまうライブラリの紹介。これを知ったのは会社のMTGかも知れませんが、再度じぶんでも調べてみた結果。かなり使えるライブラリです。

New Course Laravel with Filament PHP – Employee Management #shorts

前前前会社で独自フレームワークで作っていた部分をこれを使用するとあっという間に作り上げることが出来るのではないだろうかと思っています。また、これを使用して自分のサービスを作ることも簡単とまではいかないものの、時間短縮にはかなりなると思います。

商業利用可能なMITライセンスです、これはとても有り難いなって思います、またプラグインとかもあるので、本当に良い感じですね。トイウコトデ、本当に前前前会社で作っていたBASEのようなサービスを作ってみたいなって思っています。

休日の合間に少しずつ作りたい。基本土曜日は一週間分のブログ記事などを書き溜める作業をしていたり、午前中までは大体、家でコード書いたりしているのでその作業にサービスを作る作業を追加したいなって思っています。

因みに午後からはお出かけしたりするタイプです、特に夏は外に出ていかないと損している気がします、こんなに晴れているのに出掛けないというのは勿体ないと思う性分なんです。

それではまた~。

タグ

base, filament, Laravel, LIST, MITライセンス, MTg, PL6tf8fRbavl39r1g14lgYjPOH6jrjSECv, あっという間, トイウコトデ, フィラメント, プラグイン, フレームワーク, ライブラリ, 休日, 再度じぶん, 前前前会社, 勿体, 合間, 性分, 細糸,

Laravelもそうだし何でもそうなんだけど📝。

2023.07.18

Logging

おはようございます、Laravelもそうだし何でもそうなんだけどまだまだ使い倒していないなぁと思います。Laravelにはいろいろな機能があります、基本的なことは覚えているのだけどもまだまだ使い倒していないなぁと思っています。それぐらいいろいろな機能があります、フレームワークをゴリゴリ使えるレベルに早くなりたいなって思います。

因みにゴリゴリとは隅から隅まで熟知しているレベルを指します(DDDとかも含みます。)。最近知ったLaravelの機能でデータ参照時に値を変更する機能があることです、これはとても便利な機能だなって感じました。

class User extends Model {

    public function getFirstNameAttribute($value) {
        return str_replace('tanaka', 'yamada', $this->first_name);
    }

}

こんな感じにまだまだ知らない機能があるのです。リモートワークで仕事をする中で技術の共有は大事になりますが、ちょっとした事は実仕事と同じだけど自分で調べることも大事になります。生成AIの登場により生成AIに分からないことを聞くことがググるよりも早く答えに近づけるのですが、それは良いようで悪い気がします。記憶に残らないような気がするのです。

alphabet blur books close up
Photo by Pixabay on Pexels.com

記憶に残るには適度のストレスが必要らしいのですね、殆どの生き物は命を脅かす出来事を記憶するというそういう構造になっているそうです。人も同じくストレスと記憶は関係があります、なのである程度、負荷がかかった方が効率的に良いという結果生みやすいのです。

そういうわけでググるのも大事です。

これからも気付きはブログ記事にしていきますが、この頃、昔よりも気付きが少なくなりつつありますね。良いことのようで鈍化しているのかもしれないので要注意ですね(・・;)。

タグ

class User extends Model, DDD, gt;first_name, Laravel, Photo by Pixabay on Pexels.com, public function getFirstNameAttribute, return str_replace, this, value, フレームワーク, リモートワーク, 出来事, , 構造, 殆ど, 生き物, 生成AI, 要注意, 負荷, ,

Laravelでenvの情報をvueとかに共有する時の落とし穴。

2023.06.30

Logging

おはようございます、LaravelにはLaravel-Mixというものが入っていてこれを使用するとenvの値をVue.jsなんかと共有出来るのだけど、自分の知る限り値は全て文字列になるということ、例えばfalseという値を渡しても文字列になってしまいtrueと判断されてしまうのです。

これが落とし穴ですね、普通にfalseが入っているものだと思い込んでいて先日、数分悩んでおりました。

皆さんも思い込みの落とし穴には注意しましょうということです。あとlaravel Mixを使用する場合、envの頭文字にはMIX_と書かないとデータは渡されませんのでご注意を。

MIX_HOGEHOGE=false

思い込みはやばい。そう思い込んでいるとそこから抜け出せない事があると思います、人の話を鵜呑みにしないようにはよく聞くと思いますが。TVの話を鵜呑みにしないようにとか、ネットの話を鵜呑みにしないようにとかを注意がけている人はあまりいないじゃないかな?、ついついあぁそうなんだと聞き入れている人がいると思いますが、本当にそうなのかと疑問を持つことは大事。

トイウコトデ、思い込みはやばいでした?

タグ

env, false, Laravel, Laravel-Mix, MIX, MIX_HOGEHOGE, TV, vue.js, データ, トイウコトデ, , 全て文字列, 文字列, 疑問, 皆さん, 落とし穴, 限り値, 頭文字, 鵜呑み,

Laravelでユニットテストしている。大事ですね。

2023.06.04

Logging

おはようございます、今日は仕事が終わったら映画を見に行く予定にしているのだけど、台風2号とかの影響でどうなるか、これを書いている時は分からない。

さて、Laravelでユニットテストしています、テスト大事な仕事だと思います。自分で書いたコードを自分でUnit Testしています。Laravelでユニットテストやフィーチャーテストをしたい場合はまず、artisanコマンドを使用して雛形のテストファイルを生成するのが、一般的だと思います。

php artisan make:test unitTest --unit
php artisan make:test

テストファイルの書き方などは、ここでは割愛します、公式のドキュメントやQiitaなどを参照して下さい。ここではサンプルコードなどは書きません。

タグ

artisanコマンド, Laravel, php artisan make, qiita, test, test unitTest, unit, Unit Test, コード, サンプルコード, テストファイル, ドキュメント, フィーチャーテスト, ユニットテスト, 公式, 台風2号, 影響, 映画, 書き方, 雛形,

さくらレンタルサーバーライトでもLaravel。

2023.05.03

Logging

おはようございます。さくらレンタルサーバーライトで初期のドメインでもLaravelは導入可能。ただし、Laravelの構築はローカル側でDockerなりなんなりを使用して構築しないと限りなく面倒なので、おすすめしません。

Laravelのローカル導入は割愛して、さくらレンタルサーバーライトの初期ドメインで構築するには、どのようにすれば良いかを記載します。まず、ローカル側でLaravelを構築し、そのファイルをサーバー側のwww配下にアップロードします。その後、wwwに.htaccessファイルを新規作成し下記のような記述を書いてください。こうすることで、さくらレンタルサーバーライトでもLaravelを使用できます。尚、Mysqlはさくらレンタルサーバーライトでは使用できないので、sqliteを使用する事になります。

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/reborn9-app/public/
RewriteRule ^(.*) /reborn9-app/public/$1

軽量のWebサービスならさくらレンタルサーバーのライトでも十分動作します。是非、トライしてみてください。

追伸:ライトなのでcronは使用できません。格安サーバーでcronまで使用したいというのならばロリポップが良いかと思います。5分間ですがcronも使用できます、ロリポップ最強かも🤔。

タグ

$1, cron, docker, htaccessファイル, Laravel, MYSQL, public, reborn9-app, REQUEST_URI, RewriteEngine On RewriteCond %, RewriteRule, Sqlite, www配下, さくらレンタルサーバー, さくらレンタルサーバーライト, ロリポップ, ロリポップ最強, 記述, 軽量, 追伸,

巨人Gさんの大規模言語モデルBardをトライしてみた。

2023.04.27

Logging

おはようございます、先日の朝にGさんからメールが来てたので巨人Gさんの大規模言語モデルBardをトライしてみた。試してみた結果ですが、忖度なしでいうとchatGPTの方が性能良くないかなと思うところがかなりありました。まず、日本語に対応していないのが難です、試しに英語でLaravelの非同期処理を書いてと問い合わせを行ったところ、レスポンスはかなり良いのですが手順が抜けているところがあり、そのままでは非同期処理が走らせないなと思いました。chatGPTに同じ質問を投げるとartisanのmakeから手順を書いてくれるのだけど、そういうのが無かったです。

後は、スレッド形式じゃないところが困りものです、そういう意味でもchatGPTに軍配が上がります、なんだか、もう少しGさんには頑張って貰いたいです。Gさんなら出来そうなことをことごとくしていない気がします。まだ、リリースされていないので何とも言えないですが、これでは検索シェアをchatGPTに奪われそうな気がします。Gさん好きなのでGさんの本気を見てみたい気がします。

タグ

artisan, ChatGPT, Gさん, Laravel, Make, スレッド形式, レスポンス, 大規模言語モデルBard, 少しGさん, 巨人Gさん, 忖度, 性能, 手順, , 本気, 検索シェア, 結果, 英語, 軍配, 非同期処理,

Laravelのスケジュール覚書、初心を忘れずに。#chatGPTの罠

2023.04.18

Logging

おはようございます、laravelのスケジュールを触ってみて。躓いた点は一点だけ。スケジュールリストに登録されているけど、動作しなかった。chatGPT3の罠に引っかかりました。chatGPTはもっともらしいコードを書いてくれるけど、たまに動作しないコードも出力されます。それにまんまと引っかかり、沼から出てこれなくなる所でした。

Laravelはお利口さんだから、上手くやってくれるだろうとJob側のコンストラクタには何も記述しなかったのが間違い。コマンドで行わない場合は下記の記述は絶対らしい。

<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Http;

class WebsiteMonitor implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct()
    {
    }
    public function __invoke()
    {
        $this->handle();
    }
    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
     //行いたい処理🐺
    }
<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use App\Jobs\WebsiteMonitor;
class Kernel extends ConsoleKernel
{
    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        // どちらでもOK👉 $schedule->job(new WebsiteMonitor)->everyFifteenMinutes();
        $schedule->call(function () {
            dispatch(new WebsiteMonitor());
        })->everyFifteenMinutes();
    }

    /**
     * Register the commands for the application.
     *
     * @return void
     */
    protected function commands()
    {
        $this->load(__DIR__.'/Commands');

        require base_path('routes/console.php');
    }
}

行いたい処理を書いたら、カーネルに処理を登録してcronに下記のように記述する。

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

これで処理が定期的に実行されます。尚、参考サイトとしてこちらに詳しい情報が書かれています。

タグ

call, ChatGPT, construct, cron, dev, DIR, dispatch, everyFifteenMinutes, handle, IlluminateConsoleSchedulingSchedule, InteractsWithQueue, Laravel, load, PARAM, Queueable, routes, Schedule, SerializesModels, コンストラクタ,

#laravelは独自のCommand対応しているだって😂。

2023.04.05

Logging

おはようございます。LaravelはCommand対応しているだってさ。そんな事も知らないなんて言わせない😂。やり方に関しては割愛しますがchatGPT様に出来るかどうかを問おうてみました。結果はこんな感じです。

はい、Laravelのartisanコマンドは、開発者が独自のコマンドを作成するためのフレームワークを提供しています。独自のコマンドを作成することで、LaravelのCLIツールをさらに活用することができます。

artisanコマンドを作成するには、make:command artisanコマンドを使用します。以下は、example:commandという名前の独自のartisanコマンドを作成する例です。

php artisan make:command ExampleCommand

これにより、app/Console/CommandsディレクトリにExampleCommand.phpファイルが作成されます。このファイルには、独自のコマンドの処理を定義するためのテンプレートが含まれています。

独自のコマンドを実装するためには、handleメソッドを実装する必要があります。このメソッドは、コマンドが実行されたときに実行されるコードを記述します。

後はこちらのページを参考にしてみてください。コマンドから独自の処理が実行されたことがわかるかと思います。

https://migisanblog.com/laravel-artisan-command/

これで定期的に実行したい処理を実行することが可能になります👍。

タグ

-Command, App, artisanコマンド, chatGPT様, CLIツール, command Artisanコマンド, command ExampleCommand, Commandsディレクトリ, console, example, ExampleCommand.phpファイル, handleメソッド, Laravel, Make, php artisan make, コマンド, テンプレート, フレームワーク, メソッド,

laravelのスコープとリゾルブを知った日。 #phpcode

2023.03.21

Logging

おはようございます、Laravel技術を2つ手に入れました。有り難いことです😭。

他にもいろいろあるだろうけど、スコープとリザーブという技術を知りました。スコープも便利そうだ、リザーブも使い方が分かりましたのでchatGPTにサンプルコードを書いていただき解説もお願いしました。

class User extends Model
{
    public function scopePopular($query)
    {
        return $query->where('votes', '>', 100);
    }

    public function scopeActive($query)
    {
        return $query->where('active', 1);
    }
}

$users = User::popular()->active()->orderBy('created_at')->get();

Laravelのスコープとは、モデルクエリに対する再利用可能なクエリ制約のことです。スコープを定義することで、特定のクエリ制約を複数の場所で簡単に再利用することができます。

use App\Services\SomeService;

$someService = resolve(SomeService::class);

Laravelのresolveメソッドは、サービスコンテナからサービスを解決するために使用されます。サービスコンテナとは、依存性注入を実現するための強力なツールです。

依存性注入とは、クラスが他のクラスに依存している場合、その依存関係を外部から注入することです。これにより、クラス間の結合度が低くなり、テストや再利用が容易になります。

Laravelでは、サービスコンテナを使用して依存性注入を実現します。resolveメソッドは、サービスコンテナから特定のサービスを取得するために使用されます。

タグ

$query-&gt, ChatGPT, class, GET, gt, gt;active, Laravel, popular, query, resolve, resolveメソッド, return, SomeService, use AppServicesSomeService, user, where, クエリ制約, スコープ, リザーブ,

Laravel10xになったんだって。#php81code

2023.02.24

Logging

おはようございます。先日、Laravel10xになりPHP8.1系をサポートしたという記事を読みました。でも自分は8系や9系を使用しております。10系になり何が変わったのかなどは知りません。

今日はLaravelの基の話です。Laravelにはバリデーションというクラスがあります。バリデーションとは、POSTやGET送信を行ったデータが問題ないかを確認できるクラスです。そんなクラスの派生がフォームリクエストバリデーションクラスです。これを使用すれば自分のお好みのデータの判別処理が作れます。

作り方などはこちらをに作ってみてください。

php artisan make:request StorePostRequest

尚、Bladeに表示するにはこんな感じで表示できます。

@foreach ($errors->all() as $error)
  <li>{{$error}}</li>
@endforeach

因みにエラーメッセージを変えたい方はこんな方法で変更できます。こんな感じにつくってフォームリクエストバリデーションクラスの中に入れてあげてください。

    public function messages()
    {
        return [
            'name.required' => '名前は必須項目ですよ。',
            'name.max:42' => '42文字以内で入力してください',
            'age.required' => '年齢は必須項目ですよ。',
            'age.numeric' => '整数を入力してください😄。'
        ];
    }

タグ

as, blade, endforeach, Error, errors, foreach, gt;all, Laravel, Laravel10x, li&gt, lt, name.max, POST, public function messages, request StorePostRequest, return, バリデーション, フォームリクエストバリデーションクラス, 整数, 派生,

重い腰を上げる。 #laravel対応したサイト

2023.02.13

Logging

おはようございます、稼ぎ頭のサイトをlaravel対応しました。

今まで、ベタPHPで運営していたものをlaravel対応しています。力技でLaravel対応しているので、これからはデーターベース(テーブル)周りも変えていけたら変えようと思います。

なお、もう一つ稼ぎ頭を作ろうと考えていたりシますが、まだ着手していません、土台は作ってはいるのですが、中身は空っぽです。

Laravel in 100 Seconds

毎日のように仕事でLaravelを見ているのですが、自分のシステムも最初からLaravelで作ったら良かったなと思うことがあります。そしたら、いろいろとリリース出来ていたものもあるのにと思うわけです。

Laravelの良いところ、短時間で良いものが作れる、工数がかなり削減できます。REST(Representational State Transfer:ウェブアプリケーションプログラミングインタフェース)機能があるので、BBS系なら短時間で作成可能になります。そんな感じでLaravelを駆使すれば楽です。

それはその他のフレームワークにも言えることかなって思います。

タグ

BBS系, Laravel, Representational State Transfer, REST, ウェブアプリケーションプログラミングインタフェース, システム, データーベース, テーブル, フレームワーク, ベタPHP, リリース, 中身, 作成, 力技, 周り, 土台, 工数, 最初, 稼ぎ頭,

Laravelでの.envファイルの重要性。 #重宝

2023.02.09

Logging

おはようございます、laravel使っていますか?

Laravelでのenvファイルの重要性というタイトルに釣られた方、スミマセン🙇。

envファイルを使用すると、機能のONOFFなどに使用することも出来たりデフォルトで使われている通りDBの接続設定などにも使用されていますよね。

envの良い所はバックエンド側、フロント側ともどちらでも呼び出しが簡単なところです。下記の関数を呼び出せば値を取得することが出来ます。

config('app.name')

詳しく知りたい方はググるといろいろな説明が出てきます。たぶん、これがわかり易いかもということでリンクを一つ貼っときます。

タグ

app.name&#39, config, env, envファイル, Laravel, onoff, スミマセン, タイトル, デフォルト, バックエンド側, フロント側, 下記, , 接続設定, 機能, 説明, 通りDB, 重要性, 関数,

Bladeのinjectという物を使えば独自関数を呼び出せる。#laravel

2023.02.01

Logging

おはようございます、週に一個は技術ネタを入れようかなと思っている中の人です。

今回はタイトル通りのお話になります。bladeで独自関数を使用したいなと思ったことはありませんか。そういう時に重宝するのはinjectだというお話になります。使い方は下記の方法で可能です。

@inject('代入される任意の変数名', 'namespaceを含むクラス名')
{{ $代入される任意の変数名->呼び出すメソッド名() }}

これを知ったのは次のサイトになります。因みにbladeとはLaravelで使用できるテンプレートエンジンになります。いうなれば昔、流行ったSmartyという物と同じ位置づけですね。

因みに、この記事はあまりSEOを意識していませんので検索にヒットしないかも知れませんので、是非ともシェアして頂けると有難いです😄。

余談なんですかもう一つ、bladeでHTMLを含む文字を変数に代入するとそのまま表示されてしまいますよね、それをHTMLコードとして認識させたい場合は下記のようにすることでHTMLコードとして認識されます。

{!! 任意の変数名 !!}

タグ

$代, blade, gt, html, HTMLコード, inject, Laravel, namespace, SEO, Smarty, クラス名, タイトル通り, テンプレートエンジン, メソッド名, 余談, 変数, 変数名, , 関数,