号外NETの記事タイトルをポストするようにコードを組みました.tosajin.info
2024.10.02
おはようございます.号外サイト記事タイトルをポストするようにコードを組みました.これによって少しは高知県の人に貢献できたのではと思っています.この号外NETというサイトはとても良いです.新しいお店の紹介などが逐次わかるというのは良い感じですよね.
因みにソースコードはこんな感じになります.これをLaravelのスケジュールを使用して叩いている形になります.ポストするコードに関してはご自身で考えて作らないとポストすることは出来ないです.
/**
* Execute the job.
*/
public function handle(): void
{
$xmlobj = @simplexml_load_file('https://kochi.goguynet.jp/feed/');
if($xmlobj?->channel?->item){
$str = [];
foreach($xmlobj->channel->item as $key=>$val){
if($this->dateCheck($val->pubDate)){
$str[] = "{$val->title}
{$val->guid}
引用元:号外NET 高知市
";
}else{
break;
}
}
$str = array_reverse($str);
if(count($str)){
$TwitterController = new TwitterController();
foreach($str as $val){
$TwitterController->tweet($val);
}
}
}
}
private function dateCheck($inputDate)
{
$inputDateTime = new DateTime($inputDate);
$inputDateTime->setTimezone(new DateTimeZone('UTC')); // UTCに合わせる
// 現在の日付(UTC)
$currentDateTime = new DateTime('now', new DateTimeZone('UTC'));
// 今日の日付を取得
$today = $currentDateTime->format('Y-m-d');
// 昨日の日付を取得
$yesterday = $currentDateTime->modify('-5 day')->format('Y-m-d');
// 入力された日付のフォーマット
$inputDateFormatted = $inputDateTime->format('Y-m-d');
// 比較
if ($inputDateFormatted === $today || $inputDateFormatted > $yesterday) {
return true;
}
return false;
}
Xなどにポストするにはライブラリを使用してポストすることが簡単だと思っていますが、それが難しいという方は生成AIを使用してクラス化したXにポストするPHPコードを書いてと指示をすればコードを書いてくれると思います.
ちなみにこのソースコードは高知県の号外に特化したコードになります.
明日へ続く.
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
array_reverse, break, count, dateCheck, else, foreach, format, gt, guid, item, Laravel, modify, pubDate, quot, setTimezone, Tweet, val, void, yesterday, 号外,
NHKの番組を検索してデスクトップ通知するWEBアプリを作ろうとしている.
2024.09.26
おはようございます.NHKの番組を検索してデスクトップ通知するWEBアプリを作ろうとしています.NHK番組表はAPIから取得しそれを検索及びデスクトップ通知する機能を自分のために作ろうとしています.環境としてはPHP8.3で動き、フレームワークはLaravelを使用.フロント側はReatで作ったものをBABELで変換してJsとして動かしています.
因みに動作しているところはこんな感じですね.
今週の土曜日に一通りのことが出来るようにして一旦公開しようと思っています.最初は自分だけが使用できるものにしてバグ等がなければ正式に告知して運用していこうと思っています.
あまり重要はなさそうだけども、nasuneを使っている人なら分かるかも知れないけど番組名で録画予約する機能がないので不定期な番組は録画予約できないのが、作ろうと思ったきっかけです.何故、NHKの番組表しか無いのかは番組表のAPIはNHKしかなかったからです、クローラーを作って取得する手もあるのだけど、自分は民法で見るのは固定番組なので時間設定で事足りるから、こういう仕様になってます.
明日へ続く.
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
API, BABEL, JS, Laravel, nasune, NHK, NHK番組表, Reat, きっかけ, クローラー, デスクトップ, バグ, フレームワーク, 一旦, 仕様, 固定番組, 土曜日, 最初, 民法, 録画,
ある基準に基づき、等級分けや数値化をおこなったものである.イロレーティング計算システム.
2024.09.01
おはようございます.レーティングとは、ある基準に基づき、等級分けや数値化をおこなったものである.さて台風も去り上々の日和のなか、某ブログでイロレーティング計算システムを作ると意気込んでいた記事を拝見.データベース設計と画面設計は出来てから数日か経過するが一向に次の記事が出てこないような気がする(辞めたのかも知れない🤔なんて事も).
データベース設計を某ブログを参考に興してみました.下記は実行したスクショになります.
尚、accountテーブルが存在するのだけどLaravelにはuserテーブルがあるのでaccountテーブル以外を真似て作成した抜粋ソースコードになります.
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('game_results', function (Blueprint $table) {
//
$table->id();
$table->foreignId('game_group_id')->constrained('game_groups');
$table->foreignId('player_id')->constrained('players');
$table->enum('result',[1,0,0.5])->default(0)->comment('result');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('game_results', function (Blueprint $table) {
//
$table->dropIfExists('game_results');
});
}
};
来週か再来週に暇な時間があったら画面設計から徐々に興していきます.そんなに時間はかからない気もしますが、某ブログよりも先に公開するつもりは今のところ無いです.ソースコード公開も営業妨害にならない程度に公開しようと思っています.
明日へ続く.
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
Blueprint, constrained, create, enum, foreignId, function, game_groups, gt, Laravel, lt, Migration, schema, TABLE, timestamps, use IlluminateDatabaseMigrationsMigration, use IlluminateDatabaseSchemaBlueprint, use IlluminateSupportFacadesSchema, void, レーティング, 再来週,
ギャラリー(Gallery)とBBSを追加しました.前々から追加し...
2024.08.29
おはようございます.ギャラリー(Gallery)とBBSを追加しました.前々から追加しようと思っていた訳でもないです.突発的に作ってみようと思いになり土曜日と日曜日にそれぞれ機能を追加した形になります.
内部的なコードは差し控えるものの、Galleryにはデータベースを使用していません.BBSはDBを使用しています.そしてGalleryは全てオリジナルコードですが、BBSはLaravelのライブラリを局所的に取り入れています.例えば表示はBladeONEを使用しています.そんな感じなので工数的にはどちらも半日程度で組み立てました.
composer require eftec/bladeone
作っていて思ったのが、Laravelを使用する程でもない、だけどバニラで作ると面倒だと思うサービスは局所的にLaravelのライブラリを使用することで短時間で制作することが可能になるなってこと.それはちょっと小規模と中規模の間ぐらいのサービスを作りたいときに適していると思いました.
明日へ続く.
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
BBS, BladeONE, composer require, db, eftec, Gallery, Laravel, ギャラリー, コード, データベース, バニラ, ライブラリ, 前々, 半日程度, 土曜日, 日曜日, 程, 規模, 訳,
PHP言語の素で自分もやってみた🙆
2024.06.16
おはようございます、素の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
※この記事は著者が40代前半に書いたものです.
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
おはようございます.laravelのchunkとchunkByIdどっちが速い論争があります.自分の肌感覚ではどっちもどっちだったのですが、chunkByIdの方が速くて良いという記事が多いです.因みに自分は何万件もあるテーブルを呼び出してデータをダウンロードさせるのにchunkを使用しました.
こうしないとメモリ不足でプロセスが落ちてしまうので、何万件も処理を行う場合はchunkを使用は必須みたいですね.使用してみたら確かに良いなって思いましたが、chunkとchunkByIdどちらも同じ時間でダウンロードが完了したので、万単位ではあまり差が広がらない感じでしたね.
Laravelのchunkを使用するのに参考にしたサイトはこちらになります.参考にしただけでそのまま使用はしていません.因みに例ソースコードを書こうと思いましたが自分の解説より下記のサイトが役に立つので今回は割愛します😌.
以上技術共有でした.
明日へ続く.
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
chunk, chunkById, chunkByIdどちらも同じ時間, chunkByIdどっち, Laravel, ダウンロード, テーブル, プロセス, メモリ不足, 例ソースコード, 処理, 参考, 差, 役, 必須, 技術共有, 肌感覚, 解説, 論争,
PHP言語版のソース・コード自動整形.
2024.05.26
おはようございます、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
※この記事は著者が40代前半に書いたものです.
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
おはようございます、頻繁にランダム番号が重複しないようにするクラスを作りましたのでお裾分けです.実際、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
※この記事は著者が40代前半に書いたものです.
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
おはようございます、PHP8からNullセーフ演算子というものが仲間に加わりました.Laravelでいうoptionalと同じ挙動になります.Laravelのoptionalを知らない方に説明をGeminiにしてもらいます.
$country = $object?->user?->getRule();
Nullセーフ演算子とは
・Nullセーフ演算子 ?-> を使用すると、オブジェクトがnullかどうかを事前にチェックすることなく、プロパティやメソッドにアクセスできます.・Nullセーフ演算子は、プロパティやメソッドだけでなく、配列や関数の呼び出しにも使用できる.
gemini
ということになり、とても便利な演算子です.使う機会はプログラムしていると結構あるので使用してみてはどうでしょうか?
明日へ続く.
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
country, gemini, getRule, gt, gt;user, Laravel, null, Nullセーフ演算子, object, optional, オブジェクト, プロパティ, メソッド, 事前, 仲間, 挙動, 演算子, 配列, 関数,
L11が登場.
2024.03.28
おはようございます、ララベル11がリリースされました.PHP8.2から使用できるようです、いろいろとスリム化されたり機能が加わったりしているようです.下記の動画をGeminiに何を話しているのか要約してもらうようにしました.
レベル11は、Laravelアプリケーションの開発をより簡単にするために設計された新機能が満載の、大幅な改善が加えられた新しいリリースです。
ビデオでは、レベル11の新機能がいくつか紹介されています。そのうちのいくつかは次のとおりです。
・アプリケーションフォルダの構造が簡素化されました。不要なファイルが削除され、より直感的に操作できるようになりました。
https://gemini.google.com/
・新しいデフォルト設定により、新しいLaravelアプリケーションのセットアップがより簡単になりました。データベースの設定など煩わしい作業が不要になりました。
・アプリケーションの健全性を監視するための新しいヘルス機能が追加されました。これにより、アプリケーションが正常に動作していることを確認しやすくなりました。
・アプリケーションキーの変更がより簡単になりました。新しいキーのローテーション機能により、ユーザーがロックアウトされるのを防ぐことができます。
・ジョブのテストが簡素化されました。新しいアサーションメソッドを使用すると、ジョブが期待通りに動作していることを簡単に確認できます。
ということらしいので、今までのLaravelとはかなり違った感じになっています.laravelshiftサービスなどを使用すれば比較的に簡単に移行できるようです.
明日へ続く.
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
gemini, Laravel, laravelshiftサービス, Laravelアプリケーション, アプリケーション, アプリケーションキー, アプリケーションフォルダ, うち, ジョブ, データベース, テスト, とおり, ビデオ, ララベル11, ローテーション機能, ロック, 新しいLaravelアプリケーション, 新しいアサーションメソッド, 構造, 煩わしい作業,
cakePHPのDoc
2024.03.15
おはようございます、cakePHPのドキュメントはどんなのかなって見てみるとLaravelに似ているなという印象、やはり一つフレームワークの感覚を身につけると応用が効くだなって思いました。この感覚は一つの言語を覚えると他の言語もそれほど難しいとは思わなくなるのと一緒の感覚に近いです。
一つ覚えてしまえば似ている言語を覚えるのはそれほど時間がかからないけれど、即戦力になるとは限らない、やはり調べながらの手順が必要ですので慣れるまでは何でもそうですが時間がかかります。仕事ではLaravelを使用していますが、私用では違うフレームワークを使用してみるのも悪くないなって思いました。
明日へ続く。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
cakePHP, Laravel, ドキュメント, フレームワーク, 一つ, 一つフレームワーク, 仕事, 印象, 即戦力, 応用, 感覚, 手順, 時間, 私用, 言語,
phpunitテストする際に
2024.02.17
おはようございます、Laravelの話なんだけどもphpunitTestする際にコントローラーのviewのparamっていうのかな?あのデータを取る方法が知りたいのだけど、ググってもchatGPTに投げても明確な答えが返ってこない…。因みにgetContent()っていうので、全返却データが取れることは知っているのだけども。
dd($response)で中身を見ると取得することが出来そうなんですけどねぇ。何故か出来ないのです、とても悔しい気持ちになったので、誰か知っている人はいないかと思って書いています。知っている人はレスをお願いしたいです。リモートワークってそこが聞けない聞きづらいなって思います、新人は中々大変だなって。
リモートワークでコロナ禍、働いていたIT新人組は結構たいへんな思いをしたのかもしれないなって思います。いまではchatGPTというちょっとペテン師な先生がいるのでちょっと前までよりか楽になったんじゃないでしょうか?
今回分からなかった事は、Qiitaに質問しても良いなって思っています。
(レスが付かずじまいだったらQiitaに質問します。)
明日へ続く。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
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
おはようございます、PayJPの決済処理をLaravelに導入してみました。そんなに難しい話ではないけれど、クレジットカードの入力欄はPayJPさんにもう少しデフォルト状態で頑張って欲しかった。
変更は可能なのだけども、ちょっとイマイチ感があります。PayJPとグローバル展開しているStripeを比べるとやっぱStripeの方がビジュアル良いですよね。恐らくどちらも個人事業主でも審査が通るらしいので(全てのひとが通るとは限らない)、良さげだなって思っています。
今回、試したPayJPのAPIかStripeのAPIでサブスク決済を作ってみました。テストモードですがちゃんと動いていたので良かったです。これで決済処理部分は出来たのだけど、サービスモデルが無い、いろいろ考えて入るもののこれは良さげだなっていうのが無い感じですね。
HxHのサービスはこれ需要があるだろうと思って結局当たりました、なので自分はそれなりにこれ上手くいきそうなアンテナを持っています。アイディアが降ってきたらそれを作ろうと思っていますが、なかなかアイディアがでてこないのは外に出ていないからもしれないですね。
なんか無いかな~。
明日へ続く。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
API, APIかStripe, HxH, Laravel, PayJP, PayJPさん, Stripe, アイディア, アンテナ, イマイチ感, グローバル展開, サブスク決済, テストモード, ぱStripe, ひと, 審査, 少しデフォルト状態, 決済処理, 良, 需要,
Laravelがまぁまぁ身についてきいる。
2024.01.10
おはようございます、Laravelがまぁまぁ身についてきいるのですが今年はもっと磨きをかけたいなって思っています。非同期処理とかキューとかは一通り理解できた感じですが、DDDが未だまだ感が強いのでそこを慣れていきたいなって思っています。
スケジュールでJobを実行する場合、withoutOverlappingをお忘れなく。無いと重い処理とかでコケちゃう部分が出てくるのでこれは必須だと思います。Qiitaに有ると無いとでの処理の時系列を解説されている方がいるので、そちらを参考にしてみてください。
$schedule->command($command)->everyMinute()->withoutOverlapping();
明日へ続く。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
-Command, $schedule->, DDD, everyMinute, gt, job, Laravel, qiita, withoutOverlapping, キュー, コケちゃう部分, スケジュール, 一通り, 処理, 参考, 必須, 時系列, 身, 非同期処理,
LaravelのAPIを作っていたので
2023.10.12
おはようございます。先日の休みにLaravelのAPIを作っていました。出来ること出来ないことが分かったので、メモとして残しときます。敢えていうと恐らくそうだろうという感じです。ではまずAPIを使用したい場合はweb.phpではなくてapi.phpを使用しないとAPIは機能しない。
APIにはcros.phpの設定は関係ない。APIをアクセス制御したい場合は、認証式にしないといけない。そうではない場合、どこからでも参照は可能になる。
参照先サイトが分かれば何とかなると思っていたけれども、SSL化したサイトからAPI叩かれたら参照先、分からないよねって話。ミドルウェアでIPから制御する方法はあるので認証式にしたくない場合はそちらの方法で何とかしてください。
自分はphpのcrulで制御するので、基本、ワイヤーシャークとか入れてないとエンドポイントが分からないので、認証式にしないで運用する方向で調整中です。
基本的にAPI出来たので、VPSサーバーで動いているWEBサービスも今月中に移動します。まだVPSサーバーは一年契約なので起動していますが、延長契約は結ばずダウングレードしたVPSサーバーと新たに契約を結ぶつもりでいます。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
API, api.php, cros.php, crul, Laravel, php, SSL化, VPSサーバー, web.php, Webサービス, エンドポイント, ミドルウェア, メモ, ワイヤーシャーク, 休み, 参照, 参照先, 延長契約, 方向, 認証式,
laravelの技術ネタ。こういうのを有ることを。
2023.10.03
おはようございます、laravelの技術ネタです。Laravelにはこういうメソッドが用意されています。下記のリンクを参照ください。
https://readouble.com/laravel/8.x/ja/collections.html
こんな機能が有ることを覚えて置くと良いです。なので、わざわざ自分でコードを書かなくても便利な機能があります。覚えて置くと良いです。
この頃の学びはPHPに文字の置き換えする事。いやいや文字の置き換えなんて初歩の初歩でしょって思うかも知れません。自分もそう思っていましたけど、PHPにはいろいろな文字の置き換えができるメソッドがあります。その中でこれは便利だなっていう文字の置き換えはこれ!!
文字の位置を指定して、その部分だけを文字を置き換えることが出来るメソッドです。
substr_replace
明日へつづく
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
Laravel, php, substr_replace, いやいや文字, コード, メソッド, リンク, わざわざ自分, 下記, 位置, 初歩, 技術ネタ, 文字, 機能, 自分, 部分,
laravelのFactoryって便利なダミーデータが作れるよ。
2023.09.20
おはようございます、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
※この記事は著者が40代前半に書いたものです.
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
おはようございます、Laravelのファザードを使用すると自分で作ったクラスファイルを共通のものとして使用できたりします。これは便利ですよね、設定はQiitaとかでググると使用方法が出てくるのでここでは割愛してリンクだけ載せておきます。
https://qiita.com/minato-naka/items/095f2a1beec1d09f423e
これとDDD設計を駆使すればもっと奥の深いLaravel使いになれるでしょうけれど、自分はまだ見習い戦士レベルなのでDDD設計に関しては読めるだけで、あれをこうしてあーしてすれば良いじゃないとまでは言えないですね。この頃、思うのですがITの話って抽象的な話になってきますよね、昔はそれが理解不能でしたがこの頃、それが何となく理解出来る様になってきました。
抽象的な話って会話の前後を汲み取って、こういう事だろうという事を考えないといけない部分もあります。抽象的な話は何となく理解出来ているのですが、抽象的な問いに関しては未だにどう返せば良いのか分からず言葉が詰まることがありますね。
ちなみに自分がIT就職活動していた時に、この抽象的な問いによく出会いました。どう答えても間違いじゃない。答えが何通りもある答えに言葉を詰まらすより、自分が思っていることや考えていることを意思表現した方が良いです。余程、変な回答をしない限り面接官が受け流してくれます。
最後に丸コピみたいなコードを記載して今回の記事は〆とします。
\ClassA::methodA();
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
ClassA, DDD設計, IT, IT就職, Laravel, methodA, qiita, ファザード, 丸コピ, 会話, 共通, 前後, 回答, 奥, 意思, 戦士, 最後, 深いLaravel使い, 答え, 限り面接官,
リセットメールが詐欺メールに判断されないために。
2023.08.19
おはようございます、リセットメールが詐欺メールに判断されないために。最低限、対応しないといけないの事がセキュア送信に対応することです。これを知らなかったので、今ちょっと送信メールが詐欺メールと誤判断されて面倒なことになっています。一つは送信時に詐欺メールじゃないよって暗号化をかけて送信することと、サイト事態はSSL化は必須ですけど、それだけでは不充分でウィルス対策ソフトサイトから信頼を得るために、サイト申請(ウィルス対策ソフト)を行うべしです。
これらを担保すれば詐欺メールから脱却出来ます。因みに詐欺メール脱却は現在手続き中ですが、Gメールの迷惑メール脱却はメール送信でセキュア送信に変えるだけでOKになりました💁。
LaravelではenvのMAIL_ENCRYPTIONをtlsからstarttls変えるだけ今のところ大丈夫みたいです。
上記の問題はいまEC管理ツールを夏季休暇を使用して少しずつ形にしっている中で起こったインシデントです。Xにもポストしたのですが商品一覧なんてかなりショボい。情報量が少ない状態ですが、登録時にはYahoo!モールで使用できる量の情報量がインプット出来るようにはしています。なので、完成形になればそれなりに使えるツールになるはずです。お値段は月5000円のサブスクで提供していくつもりでいます。今のところ個人開発で頑張ります。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
EC管理ツール, env, Laravel, MAIL_ENCRYPTION, tls, X, Yahoo, ウィルス対策, サブスク, セキュア送信, ツール, モール, リセットメール, 信頼, 夏季休暇, 必須, 最低限, 詐欺メール脱却, 誤, 迷惑メール脱却,
Laravelでユニットテストをする中Factoryは欠かせない。
2023.08.11
おはようございます、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
※この記事は著者が40代前半に書いたものです.
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
おはようございます、C#という物も勉強しようと本を買いました。入門書じゃなくて応用編みたいな本です。Laravelも応用編が読みたいのですがないですよねぇ。全然無い訳ではないのだけどもっといろいろな機能を紹介している本が読みたいなって思っています。
C#は何のために購入したのかといえば、Javaの思想とかが根底にあるのとアプリなどがマルチで作れることと何かを考慮して勉強して損はないなって思ったからです。そしてAndroidStudioなどのよりも開発環境が安定していることが再度勉強しようと思ったきっかけです。
あとここ十年、WEB系ばかりの仕事だったのでソフトウェアも知識として持ちたいなって思ったのがきっかけになります。あと、Laravelで開発しているとやっぱもっと掘り下げて知識が必要だなって感じているのでそういう事を踏まえてのC#の再度勉強です。
あと、C#の本とは別にドメイン駆動設計の本を買いました。仕事をしている環境ではDDDが組み込まれている所があるので勉強しようとこの本を買いました。DDDをマスターすれば機能の修正や機能追加をもっとスムーズに対応出来ると思ったのがこの本を購入するきっかけです。ネットで転がっている知識を鵜呑みにして覚えると覚え直しが発生する可能性があるので、軸となる部分を一冊を持っとくのは大事かもなのでそういう理由もあります。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
AndroidStudio, C++, DDD, java, Laravel, アプリ, きっかけ, ソフトウェア, ドメイン駆動設計, 修正, 入門書, 再度, 再度勉強, 応用編, 思想, 損, 根底, 訳, 軸, 鵜呑み,
Laravelにてnpmが使えないサーバにてログイン画面の構築。
2023.08.06
おはようございます、Laravelにてnpmが使えないサーバにてログイン画面の構築のお話です。お話というより動画を作りました。この動画を全画面表示でみると大体のことが分かると思います。この動画は画面ができるまですので、この後、Commandを使用して下記のCommandを打ち完成となります。
php artisan migrate
前提条件として.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
※この記事は著者が40代前半に書いたものです.
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;Regards", quot;Register", sql|composer, will expire,
Laravelのappとresolveでインスタンス。
2023.07.29
おはようございます、この頃、技術的な記事を書いていなかったので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
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
App, AppModelsUser, AppSomeClass', Bard, class, create, Factory, gt, Laravel, resolve, result, someMethod, user, users, データベース, ドキュメント, ファクトリー, 生成, 隅,
filament[フィラメント:細糸]というLaravelのアレ。
2023.07.26
おはようございます、filament[フィラメント:細糸]というLaravelの管理画面とかが作れてしまうライブラリの紹介。これを知ったのは会社のMTGかも知れませんが、再度じぶんでも調べてみた結果。かなり使えるライブラリです。
前前前会社で独自フレームワークで作っていた部分をこれを使用するとあっという間に作り上げることが出来るのではないだろうかと思っています。また、これを使用して自分のサービスを作ることも簡単とまではいかないものの、時間短縮にはかなりなると思います。
商業利用可能なMITライセンスです、これはとても有り難いなって思います、またプラグインとかもあるので、本当に良い感じですね。トイウコトデ、本当に前前前会社で作っていたBASEのようなサービスを作ってみたいなって思っています。
休日の合間に少しずつ作りたい。基本土曜日は一週間分のブログ記事などを書き溜める作業をしていたり、午前中までは大体、家でコード書いたりしているのでその作業にサービスを作る作業を追加したいなって思っています。
因みに午後からはお出かけしたりするタイプです、特に夏は外に出ていかないと損している気がします、こんなに晴れているのに出掛けないというのは勿体ないと思う性分なんです。
それではまた~。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
base, filament, Laravel, LIST, MITライセンス, MTg, PL6tf8fRbavl39r1g14lgYjPOH6jrjSECv, あっという間, トイウコトデ, フィラメント, プラグイン, フレームワーク, ライブラリ, 休日, 再度じぶん, 前前前会社, 勿体, 合間, 性分, 細糸,
Laravelもそうだし何でもそうなんだけど📝。
2023.07.18
おはようございます、Laravelもそうだし何でもそうなんだけどまだまだ使い倒していないなぁと思います。Laravelにはいろいろな機能があります、基本的なことは覚えているのだけどもまだまだ使い倒していないなぁと思っています。それぐらいいろいろな機能があります、フレームワークをゴリゴリ使えるレベルに早くなりたいなって思います。
因みにゴリゴリとは隅から隅まで熟知しているレベルを指します(DDDとかも含みます。)。最近知ったLaravelの機能でデータ参照時に値を変更する機能があることです、これはとても便利な機能だなって感じました。
class User extends Model {
public function getFirstNameAttribute($value) {
return str_replace('tanaka', 'yamada', $this->first_name);
}
}
こんな感じにまだまだ知らない機能があるのです。リモートワークで仕事をする中で技術の共有は大事になりますが、ちょっとした事は実仕事と同じだけど自分で調べることも大事になります。生成AIの登場により生成AIに分からないことを聞くことがググるよりも早く答えに近づけるのですが、それは良いようで悪い気がします。記憶に残らないような気がするのです。
記憶に残るには適度のストレスが必要らしいのですね、殆どの生き物は命を脅かす出来事を記憶するというそういう構造になっているそうです。人も同じくストレスと記憶は関係があります、なのである程度、負荷がかかった方が効率的に良いという結果生みやすいのです。
そういうわけでググるのも大事です。
これからも気付きはブログ記事にしていきますが、この頃、昔よりも気付きが少なくなりつつありますね。良いことのようで鈍化しているのかもしれないので要注意ですね(・・;)。
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
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, 要注意, 負荷, 隅,