PHP言語の素で自分もやってみた🙆

2024.06.16

Logging

おはようございます、素のPHP言語でストリーミングダウンロードしてみました.仕事でつい最近、そのような事をLaravelで行ったわけですけど、素のPHPではどんな感じであろうかと思ったのと株式会社Oさんのブログでもストリーミングダウンロードでメモリ不足解消という記事を見つけたので自分の知見で書いてみました.

<?php

class streamDownload
{
    public $flg = false;
    public $fileName = '';
    public $to_encoding = 'sjis';
    public $from_encoding = 'UTF-8';

    public function __construct($fileName,$to_encoding = 'sjis',$from_encoding = 'UTF-8')
    {
        $this->fileName = $fileName;
        return $this;
    }

    public function checkSplFileInfo()
    {
        if((new SplFileInfo($this->fileName))->getExtension() === 'csv'){
            $this->flg = true;
        }
        return $this;
    }

    public function download($data)
    {
        if(!$this->flg){
            return $this->flg;
        }

        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.$this->fileName);        
        $stream = fopen('php://output', 'w');
            foreach ($data as $row) {
                $row = mb_convert_encoding($row,$this->to_encoding,$this->from_encoding);
                fputcsv($stream, $row);
            }
        fclose($stream);
        exit;
    }
}

$data = [
    ['テスト1', '高知太郎', 'abc@example.com'],
    ['テスト2', '高知花子', 'def@example.com'],
    ['テスト3', '高知喜多郎', 'dev@example.com'],
];

(new streamDownload('test.csv'))->checkSplFileInfo()->download($data);

このコードはCSVファイルをエクセルで開くことを想定して記載しています.要のデータ処理はあのような配列で渡せば何万件もの処理でも基本落ちません.

なお要のデータ処理はご自身で考える必要があります、あくまでも雛形です.

明日へ続く.

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

$flg, abc@example.com, application, attachment, construct, Content-Disposition, def@example.com, download, exit, fclose, filename, fopen, foreach, getExtension, header, Laravel, octet-stream, ストリーミングダウンロード,

laravelのchunkとchunkByIdどっちが速い論争?

2024.06.08

Logging

おはようございます.laravelのchunkとchunkByIdどっちが速い論争があります.自分の肌感覚ではどっちもどっちだったのですが、chunkByIdの方が速くて良いという記事が多いです.因みに自分は何万件もあるテーブルを呼び出してデータをダウンロードさせるのにchunkを使用しました.

こうしないとメモリ不足でプロセスが落ちてしまうので、何万件も処理を行う場合はchunkを使用は必須みたいですね.使用してみたら確かに良いなって思いましたが、chunkとchunkByIdどちらも同じ時間でダウンロードが完了したので、万単位ではあまり差が広がらない感じでしたね.

Laravelのchunkを使用するのに参考にしたサイトはこちらになります.参考にしただけでそのまま使用はしていません.因みに例ソースコードを書こうと思いましたが自分の解説より下記のサイトが役に立つので今回は割愛します😌.

以上技術共有でした.

明日へ続く.

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

chunk, chunkById, chunkByIdどちらも同じ時間, chunkByIdどっち, Laravel, ダウンロード, テーブル, プロセス, メモリ不足, 例ソースコード, 処理, 参考, , , 必須, 技術共有, 肌感覚, 解説, 論争,

PHP言語版のソース・コード自動整形.

2024.05.26

Logging

おはようございます、PHP言語版のソース・コード自動整形(php-cs-fixer)ツールがあります.毎回プルリクエストをするとソース・コードが直されます😅.直されないようにするにはローカルでソース・コード自動整形を導入することで解決されます.

導入の仕方は下記の通りです.

composer require friendsofphp/php-cs-fixer --dev
vendor/bin/php-cs-fixer fix app 

これで毎回プルリクエストの時に自動整形が走らないような気がします.以前の会社ではソース・コード管理などは全然でしたので、其れに比べると今の会社はいろいろと業界の標準が知れて勉強になります.おそらく中小企業や大手で行われていることが、ここ一年で身についてきたのではないかなって思います.

ちなみにLaravelでは自動整形が入っているので下記のコマンドを打つことによりソース・コードの自動整形が走ります.

./vendor/bin/pint fix app

明日へ続く.

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

bin, composer require friendsofphp, dev, Laravel, php-cs-fixer, php-cs-fixer fix app, PHP言語版, pint fix app, vendor, コード, コード自動整形, コマンド, ソース, ツール, 中小企業, 仕方, 大手, 標準, 毎回プルリクエスト, 自動整形,

頻繁にランダム番号が重複しないようにするクラス.

2024.05.24

Logging

おはようございます、頻繁にランダム番号が重複しないようにするクラスを作りましたのでお裾分けです.実際、Laravelで個人開発しているものに同じ様なコードを走らせています.因みに昨日、Qiitaに投稿したコードと同じものになります.このコードはどういう時に使用しているか.

自分の場合、ランダムにポストするのにこちらのコードを可変したコードを走らせています.

<?php
// 頻繁にランダム番号が重複しないようにするクラス.
class randomizeClass
{
    /**
     * ランダムに配列のインデックス番号を取得する
     */
    public function getRandomIndex($hasArray,$index,$filename='rand.dat',$max=15)
    {
        try {

            //過去のランダム番号を保存しているファイルが無ければ空ファイルを作成する
            if(!file_exists($filename)){                
                file_put_contents($filename,'');
            }

            //過去のランダム番号を保存しているデータを取得
            $fileData = file_get_contents($filename);

            //下記の場合は処理しない
            if ($fileData === false || count($hasArray) < $max) {
                return $index;
            }
            //ファイルデータをカンマで配列に分離
            $isArray = explode(',',$fileData);

            //過去のランダム番号に存在しないか?
            if (array_search($index,$isArray,false) === false) {
                //ランダム格納前処理
                array_unshift($isArray,$index);
                if (count($isArray)>$max) {
                    array_pop($isArray);
                }
                array_filter($isArray,function($val){
                    return $val !=='';
                });
                //ランダム番号を格納
                file_put_contents($filename,implode(',',$isArray));

                return $index;
            }
            //過去のランダム番号に合致したため再帰処理を行う.
            return $this->getRandomIndex($hasArray,array_rand($hasArray),$filename,$max);

        } catch (\Throwable $th) {
            throw $th;
            echo $th->getMessage();
        }
    }
}

//テスト用配列を生成
$hasArray = (function(){
    $val = [];
    for($i=0;$i<100;$i++){
        $val[] = $i;
    }
    return $val;
})();
$filename = 'rand.dat';
//ランダム番号::配列インデックスを取得し表示
print (new randomizeClass)->getRandomIndex($hasArray,array_rand($hasArray),$filename);
print PHP_EOL;
//過去のランダム番号を保存しているデータを取得し表示
print file_get_contents($filename);
print PHP_EOL;

ご自由にコピペでお使い頂ければと思っています😌.そんなに対したコードではないのでオープンにしています.今回は一応、日頃あまり書かないコメントを書きましたが書き慣れていないためか日本語が変かもですね...

明日へ続く.

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

catch, count, echo, explode, false, filename, function, getMessage, getRandomIndex, gt, Laravel, lt, print, qiita, return, throw, Throwable, try, val, カンマ,

Nullセーフ演算子?->を提案

2024.04.21

Logging

おはようございます、PHP8からNullセーフ演算子というものが仲間に加わりました.Laravelでいうoptionalと同じ挙動になります.Laravelのoptionalを知らない方に説明をGeminiにしてもらいます.

$country = $object?->user?->getRule();

Nullセーフ演算子とは
・Nullセーフ演算子 ?-> を使用すると、オブジェクトがnullかどうかを事前にチェックすることなく、プロパティやメソッドにアクセスできます.

・Nullセーフ演算子は、プロパティやメソッドだけでなく、配列や関数の呼び出しにも使用できる.

gemini

ということになり、とても便利な演算子です.使う機会はプログラムしていると結構あるので使用してみてはどうでしょうか?

明日へ続く.

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

country, gemini, getRule, gt, gt;user, Laravel, null, Nullセーフ演算子, object, optional, オブジェクト, プロパティ, メソッド, 事前, 仲間, 挙動, 演算子, 配列, 関数,

L11が登場.

2024.03.28

Logging

おはようございます、ララベル11がリリースされました.PHP8.2から使用できるようです、いろいろとスリム化されたり機能が加わったりしているようです.下記の動画をGeminiに何を話しているのか要約してもらうようにしました.

Welcome Laravel 11

レベル11は、Laravelアプリケーションの開発をより簡単にするために設計された新機能が満載の、大幅な改善が加えられた新しいリリースです。

ビデオでは、レベル11の新機能がいくつか紹介されています。そのうちのいくつかは次のとおりです。

・アプリケーションフォルダの構造が簡素化されました。不要なファイルが削除され、より直感的に操作できるようになりました。
・新しいデフォルト設定により、新しいLaravelアプリケーションのセットアップがより簡単になりました。データベースの設定など煩わしい作業が不要になりました。
・アプリケーションの健全性を監視するための新しいヘルス機能が追加されました。これにより、アプリケーションが正常に動作していることを確認しやすくなりました。
・アプリケーションキーの変更がより簡単になりました。新しいキーのローテーション機能により、ユーザーがロックアウトされるのを防ぐことができます。
・ジョブのテストが簡素化されました。新しいアサーションメソッドを使用すると、ジョブが期待通りに動作していることを簡単に確認できます。

https://gemini.google.com/

ということらしいので、今までのLaravelとはかなり違った感じになっています.laravelshiftサービスなどを使用すれば比較的に簡単に移行できるようです.

明日へ続く.

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

gemini, Laravel, laravelshiftサービス, Laravelアプリケーション, アプリケーション, アプリケーションキー, アプリケーションフォルダ, うち, ジョブ, データベース, テスト, とおり, ビデオ, ララベル11, ローテーション機能, ロック, 新しいLaravelアプリケーション, 新しいアサーションメソッド, 構造, 煩わしい作業,

cakePHPのDoc

2024.03.15

Logging

おはようございます、cakePHPのドキュメントはどんなのかなって見てみるとLaravelに似ているなという印象、やはり一つフレームワークの感覚を身につけると応用が効くだなって思いました。この感覚は一つの言語を覚えると他の言語もそれほど難しいとは思わなくなるのと一緒の感覚に近いです。

一つ覚えてしまえば似ている言語を覚えるのはそれほど時間がかからないけれど、即戦力になるとは限らない、やはり調べながらの手順が必要ですので慣れるまでは何でもそうですが時間がかかります。仕事ではLaravelを使用していますが、私用では違うフレームワークを使用してみるのも悪くないなって思いました。

明日へ続く。

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

cakePHP, Laravel, ドキュメント, フレームワーク, 一つ, 一つフレームワーク, 仕事, 印象, 即戦力, 応用, 感覚, 手順, 時間, 私用, 言語,

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に質問します。)

明日へ続く。

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

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

なんか無いかな~。

明日へ続く。

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

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

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

2024.01.10

Logging

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

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

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

明日へ続く。

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

-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サーバーと新たに契約を結ぶつもりでいます。

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

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

明日へつづく

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

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();
    }

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

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();

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

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

Photo by eberhard grossgasteiger on Pexels.com

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

2023.08.19

Logging

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

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

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

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

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

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;

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

-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をマスターすれば機能の修正や機能追加をもっとスムーズに対応出来ると思ったのがこの本を購入するきっかけです。ネットで転がっている知識を鵜呑みにして覚えると覚え直しが発生する可能性があるので、軸となる部分を一冊を持っとくのは大事かもなのでそういう理由もあります。

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

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": "よろしくお願いいたします"
    }

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

-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のドキュメントを隅から隅まで読めば参考書は要らない気がします。英語がスラスラと読めるようになりたいなってこういう時に思います。

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

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のようなサービスを作ってみたいなって思っています。

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

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

それではまた~。

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

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

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

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

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

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

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の話を鵜呑みにしないようにとか、ネットの話を鵜呑みにしないようにとかを注意がけている人はあまりいないじゃないかな?、ついついあぁそうなんだと聞き入れている人がいると思いますが、本当にそうなのかと疑問を持つことは大事。

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

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

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などを参照して下さい。ここではサンプルコードなどは書きません。

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

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も使用できます、ロリポップ最強かも🤔。

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

$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さんの本気を見てみたい気がします。

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

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