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, データベース, ドキュメント, ファクトリー, 生成, ,

非同期処理で並列処理。お腹いっぱい #jscode

2023.06.10

Logging

おはようございます。18時でも明るくていつカーテンを閉めればよいのか分からないです。さて、非同期処理で並列処理のコードを一週間前にTwitterで呟いたので、ソースコードをこちらにUPします。非同期処理で並列処理を行うのは、こういう感じだということを理解できると思います、あまり非同期処理で並列処理を行う機会なんて無いかもしれないですが、こういう事が出来るんだということを頭の片隅に置いとくと良いかもです😌。

がっちり覚えとくのも良いですけど、曖昧に覚えているのも悪くないと思います。因みに自分はこういう事は出来るだろうと自分は思っているタイプです。自分が考えていることぐらい頭の良い人は考えているはずなので、出来るだろうという事から始まって大体、ググったりChatGPTに聞くと最適解を教えてくれます。そういう訳でサンプルコードとサンプルサイトのリンクを貼っときます。

https://zip358.com/tool/demo76

let p1 = new Promise((resolve, reject) => {
    setTimeout(() => {
        console.log("test1");
        resolve(1);
    }, 15);
});
let p2 = new Promise((resolve, reject) => {
    setTimeout(() => {
        console.log("test2");
        resolve(2);
    }, 11);
});
let p3 = new Promise((resolve, reject) => {
    setTimeout(() => {
        console.log("test3");
        resolve(3);
    }, 16);
});
let p4 = new Promise((resolve, reject) => {
    setTimeout(() => {
        console.log("test4");
        resolve(4);
    }, 1);
});
let p5 = new Promise((resolve, reject) => {
    setTimeout(() => {
        console.log("test5");
        resolve(5);
    }, 9);
});
(async()=>{
    let a = await Promise.all([p1, p2, p3, p4, p5]);
    console.log(a);
})()
 

タグ

A`, async, await Promise.all, ChatGPT, console.log, gt, new Promise, quot;test1&quot, quot;test2&quot, quot;test3&quot, quot;test4&quot, quot;test5&quot, reject, resolve, setTimeout, Twitter, いつカーテン, 並列処理, 最適解, 片隅,

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, クエリ制約, スコープ, リザーブ,

JSのPromiseとawaitってこういう事なんだよね。理解した!!( ・ิω・ิ)

2022.04.29

Logging

おはよう御座います。

この頃、JSを使う機会が増えてきています。巷ではReact.jsなどやVue.jsなんかが人気ですよね。またnext.jsなんかも出来れば転職活動に有利です。でもそんなフレームワークを勉強するまえにJavaScriptの基礎が出来ていないといけないと思っています。ネイティブでゴリゴリ書ける人であれば、何処へ行ってもやってけると思っています。

"use strict";
const main = (a,b,c)=>{
    return new Promise ((resolve)=>{
        console.log(a,b,c);
        b++;
        resolve({a:a,b:b,c:c}); 
    });
}
(async()=>{
    await main("A1",1,"C1").then((val)=>main(val.a,val.b,val.c)).then((val)=>main(val.a,val.b,val.c)).then((val)=>main(val.a,val.b,val.c));
    // main("A1",1,"C1").then((val)=>main(val.a,val.b,val.c)).then((val)=>main(val.a,val.b,val.c)).then((val)=>main(val.a,val.b,val.c));
    console.log("fin");
})();

Promiseとawaitとかの使い方はこんな感じです😀、このコードでは重たい処理を書いているわけではないけど、非同期通信処理チェーンで繋ぐとどんな所で使えば良いのか分かるかなって思います。要するに順番に非同期通信処理をしたい時に役に立ちます。このソースコードの場合、awaitしなくても良いですがね・・・。awaitを付けると処理後に次のコードが処理されます。付けない場合は同時並行的に処理されます。

デモ動画

サンプルコードはこちらから閲覧ください(検証)ませ!!

タグ

, async, await, console, const, gt, javascript, JS, log, main, new, NEXT, Promise, quo, quot, react, resolve, return, strict, use, vue, なん, なんか, ネイティブ, フレームワーク, まえ, , , 人気, 何処, 勉強, 基礎, , 有利, 機会, 活動, 理解, 転職, ,

asyncとawaitとthenの関係と使い道。

2021.01.27

Logging

asyncとawaitとthenの関係と使い道は?まず、関係性はこの3つでまぁ一つの役割を果たすと考えても良いかもしれません。どんな時に使うかは、例えば、innerHTMLに計算した値を渡したいとか…。いや違うな。同期処理として使うのが正解ですね。尚、asyncは非同期でawaitで非同期通信を同期処理とする。

ちなみにIE11では動かない処理なので氣をつけてご使用ください。今どき、IE11なんてと思うかもしれないけど、使っている人がいるから・・・。

document.getElementById("btn").addEventListener("click", async (e) => {
	test1();
	test2();
	test3();
	await test1();
	await test2();
	await test3();
});

function test1() {
	return new Promise(resolve => {
		setTimeout(() => {
			console.log("btn = 1");
			resolve('1');
		}, 3000);
	});
}
function test2() {
	return new Promise(resolve => {
		setTimeout(() => {
			console.log("btn = 2");
			resolve('2');
		}, 2000);
	});
}
async function test3() {
	return new Promise(resolve => {
		setTimeout(() => {
			console.log("btn = 3");
			resolve('3');
		}, 100);
	});
}

IE11を使っているパターン、例えば社長や上司がシニア世代だったりするとIE11をいまだに使っていたりする。そもそもWindows10にIE11がインストールされている時点で悪だ・・・と思う開発者もいるはずです。そろそろマイクロソフト、IE11なんてものを強制的に削除するようなバージョンアップをして戴きたいと思ってます。それぐらい問題だと。あと、IE11で引っかかったことがあります。新しいブラウザでは下記のコードをHTMLに記入すると察してくれてjsファイルを読み込んでくれるが、IE11は違うのだ。

<script src="./assets/js/common.js"></script>

これじゃ読み込んでくれない。厳密に書かないとファイルを読み込んでくださらない。やっぱ早くIE11の撲滅を願う。

<script type="text/javascript" src="./assets/js/common.js"></script>

タグ

'src', addEventListener, assets, async, await, await test, common.js&quot, document.getElementById, gt, innerHTML, lt, quot, quot;btn, quot;btn&quot, quot;text, resolve, setTimeout, then, 撲滅, ,

demo23、javascriptの非同期同期処理?

2020.11.18

Logging

今日はJavaScriptで非同期、同期処理のことに付いて考えてみた。関数を呼び出して返却の値を変数に渡す処理を作って頂けると非同期処理と同期処理の違いがわかるかと思います。例えばこういうJSの処理があるとします。

document.getElementById("btn").addEventListener("click", async (e) => {
	test1();
	test2();
	test3();
	await test1();
	await test2();
	await test3();
});

function test1() {
	return new Promise(resolve => {
		setTimeout(() => {
			console.log("btn = 1");
			resolve('1');
		}, 3000);
	});
}
function test2() {
	return new Promise(resolve => {
		setTimeout(() => {
			console.log("btn = 2");
			resolve('2');
		}, 2000);
	});
}
async function test3() {
	return new Promise(resolve => {
		setTimeout(() => {
			console.log("btn = 3");
			resolve('3');
		}, 100);
	});
}

こちらの処理を試すと結果、このような内容がデバックモードで表示されます。予想通りの結果が返ってきましたか?それとも予想外の結果が返ってきましたか?

asyncが付いていてawaitがついてない場合とついている場合とでは違いの差がわかるかと思います。いろいろと試してみると非同期処理の応用が出来るかと思います、逆に言えば上手く非同期処理を使いこなすことが出来るとコードが短縮出来たり、効率的に回せるのではないかと思います。自分もこれらを使っていろいろと作ってみたいですね(´Д`)。因みに今回、Promiseを簡略化したパターンでコードを書いています。

尚、Demo23にはデモコードが存在しますので動作を検証してみてください。
https://zip358.com/tool/demo23/

タグ

addEventListener, async, async function test, await, await test, console.log, document.getElementById, function test, JS, Promise, quot, quot;btn, quot;btn&quot, quot;click&quot, resolve, setTimeout, デバックモード, 変数, 返却, 関数,