🏠️Top Page

🖊️おもしろき こともなき世をおもしろく 住みなすものは 心なりけり.

⏩️LaravelのViteが使用できない環境でログイン画面などを表示させたい対処法.

おはようございます.さて正月、2日目の記事はLaravelのViteが使用できない環境でログイン画面などを表示させたい対処法です.レンタルサーバーではnpmコマンドが使えないのでローカルでビルドしてサーバーにビルド後のファイルをUPしている方が殆どだと思いますが、npmをビルドするのも面倒、ビルドが出来ない方はソースコードを読んで何のコードが使われているかを判断して使用されているライブラリーのcdnを貼り付けるだけで大体の解決します.

尚、viteで参照しているところは削除してください(viteと差し替える形になります.).

viteでエラーが出る話はこれで終わりです.ここから余談です今年から無料になったGitHub Copilotを個人開発では使用するようにしました、この事によって今までより開発効率が上がるということならば有料プランも検討したいなと思っています.今のところ、無料プランで使っていくというスタンスです.

因みに自分は正月そうそうからコードを書いています.

明日へ続く

⏩️新年、あけましておめでとうございます~🎍🐍🎍

新年、あけましておめでとうございます~🎍🐍🎍、この投稿を読んで頂いた人に福が来るように祈っています.今年は貫徹の年越しでもしようかなと思っていたんだけど、この投稿が公開している頃は寝落ちしている頃かもしれません.

今年は何だか良いことが起きそうな気がします、何だかそういう気がします.気がする時って自分の場合、大体あたっている事が多いのでそうなると思っています.

去年は何かと厳しいかったので、倍返しに運が廻ってくると良いですよね.運が悪い運が良いって言いますが実はこころの持ちようがカナリ影響しているそうです.なので悪いことが起きても塞翁が馬だと思って考え方を切り替えることが大事らしい.

そういう訳なので、去年イマイチ運が悪かった方も良い方向に進んでいると思って前向きに行きましょい!人生は一瞬らしいので後悔のないように!!

では、皆さんにとって良い一年でありますように!!

明日へ続く

⏩️皆様のお陰で今年も何とかなりました.有難う御座います.

おはようございます.皆様のお陰で今年も何とかなりました.有難う御座います.今年は少々厳しい生活を送っていたのですが、訪問者さまのお陰で何とかなりました心より感謝申し上げます.本当に有難う御座います.

馬鹿な自分でもお金を増やせる唯一の方法はお金に働いてもらうということです.そうすることでお金がお金を生みます.生まない場合もありますが長期的に見れば投資することはプラスになると思っています.

理由は人には欲があるので経済成長を辞めることはないでしょうと思うからです.経済が悪化した場合も増えていた分が減る様に見えて価値そのものは変わらないように思います.特に投資信託の場合、株の抱合せを購入しているわけですから.株単体とは話がまた違います.

投資信託や株などを厳しい生活のなかで購入していました.そのお陰で資産が少し増えました.また引き落としなどは副収入で何とかなった時期もあり助かりました.

有難う御座います.

来年も良い一年でありますように!

明日へ続く

⏩️ビットフライヤーはビットコインのビットコインをリアルタイムで受信するphpコード

おはようございます.ビットフライヤーはビットコインのビットコインをリアルタイムで受信するphpコードを書きましたのでお裾分けです.以前書いていたものとは違う感じになります.ビットフライヤーさんのAPIを参照するとルビやJSの例コードはあるものの、何故かPHP言語のコードが無いので書いてみた形になります.ベースは生成AIに出力してもらったの物になります.それを自分の方がクラス化して使いやすくした形になります.

<?php
require 'vendor/autoload.php';

use WebSocket\Client;

class bitflyer
{
    public $client = null;
    public $channelName = "lightning_board_snapshot_BTC_JPY";
    public $wsUrl = 'wss://ws.lightstream.bitflyer.com/json-rpc';

    public function connecting()
    {
        try {
            // WebSocketクライアントを初期化
            echo "Connecting to WebSocket server...\n";
            $this->client = new Client($this->wsUrl);

            echo "Connection established. Subscribing to channel...\n";

            // サブスクライブメッセージを送信
            $subscribeMessage = json_encode([
                'method' => 'subscribe',
                'params' => ['channel' => $this->channelName],
                'id' => null,
            ]);
            $this->client->send($subscribeMessage);
        } catch (\WebSocket\ConnectionException $e) {
            echo "WebSocket connection error: " . $e->getMessage() . "\n";
            sleep(1); // 1秒待機して再接続
            $this->client = null;
            $this->connecting()->receive();
        } catch (Exception $e) {
            echo "General error: " . $e->getMessage() . "\n";
            $this->client = null;
            $this->connecting()->receive();
        }
        return $this;
    }

    public function receive()
    {
        try {
            // メッセージ受信処理
            while (true) {
                $message = $this->client->receive();

                // 受信データが空でないか確認
                if (!empty($message)) {
                    $data = json_decode($message, true);

                    // デコードが成功したか確認
                    if (json_last_error() === JSON_ERROR_NONE) {
                        if (isset($data['method']) && $data['method'] === 'channelMessage') {
                            print_r($data['params']);
                        }
                    } else {
                        echo "JSON デコード エラー: " . json_last_error_msg() . "\n";
                    }
                } else {
                    echo "返却値 空.\n";
                }
            }
        } catch (Exception $e) {
            echo $e->getMessage();
            $this->client = null;
            $this->connecting()->receive();
        }

        echo "Ctrl+C にて終了\n";
        return $this;
    }
}

(new bitflyer)->connecting()->receive();

尚、レンタルサーバーなんかでこのコードを動かすのは禁止されていますので、必ずローカルマシンで動かしてください.もし何かトラブルになっても保証出来ないので注意してください.因みに自分はDocker内で動かしています.

明日へ続く

⏩️24年12月26日にて仕事納めでした.10連休ですー!.

おはようございます.24年12月26日にて仕事納めでした.10連休ですー!でで~ん.この記事は26日の早朝に書いた記事になります.今年より来年がより良い1年でありますように.

この10連休も毎日ブログが更新されるように仕事が終わった後から記事をある程度、貯めていこうと思っています.ちなみに今の段階で4本のストックがありますが、来年からこのブログの他にIT戦記(絵)みたいなものを始めようと思っています.リンクはこっそりフッターの兎さんにもう仕込んでいたりしてます.

そちらの日誌も書かないといけないので来年は結構大変かもと思いつつもメインのブログはこちらです.こちらは毎日更新ですねー.大変でも副収入になると思えば頑張りがいはあります.

副収入だけで生活できればそれは言う事無いですが、そんなに簡単なことではないです.

来年の目標は副収入がコンスタントに入ってくるようにしたいという思いがあります.仕事も頑張りつつ副収入も試行錯誤して安定させたい.その次の目標は副収入が給与水準になることです.

それを可能にするにはカナリ大変なことだと思いますが、今年少し希望が持てたので長期的な目標にしたいと思っています.

明日へ続く

⏩️ガチで知らなかった.もう何年もPHP言語使っているのに恥

おはようございます.ガチで知らなかった.もう何年もPHP言語使っているのに恥...下記のコードで動くことを知らなかった.そもそもそんな返却の仕方が出来ないと思い込んでいたのでlist関数を使用していた.

function abc(){
    return ['a','b','c'];
}
[$a,$b,$c] = abc();
echo "a={$a} b={$b} c={$c}";

改修とか機能追加とか、新規開発で他の人のコードとかを見るけど、そういう使い方をしている人を見たことがなかったので、知る由もなく今の今まで来てしまった.これphpのサンドボックスでバージョンの違うものを実行してみたらphp7.4系でも動いたので絶句してしまった.因みに7.0系は動かない.

自分はphp5系のからPHP言語を主とした仕事をしてきたわけです.仕事で使用するコードってある程度似ているので同じような関数などを使う反面、バージョンアップで追加された機能を使うことはほぼ無い.非対応になった関数を置き換えることはあっても.そういう事もあり今の今まで知らずにいた.

知るきっかけになったのは、プルリクエストしマージ後に自動でコードの正規化が行われた時にコードが置き換わった事によることで知ることに...

知るは一時の恥、知らぬは一生の恥.

明日へ続く

⏩️とある掲示板的なサービスにソフトデリート機能を追加した話.

おはようございます.先日、あるユーザーから一通の問い合わせが届きました.そこには「削除依頼」という文字だけで何を削除すれば良いのかや削除の理由などは書かれていなかった.

陳腐するぎると内心思ったのだけど、実際どんな年代が使用しているのかは分からないので「削除」ボタンを追加し本人と管理人以外、削除出来ないようにその日のうちに対応しました.

これによって誤って投稿したものを削除することが可能になったので、ユーザーさん的には使いやすく少しはなったんじゃないかな?

とある掲示板的なサービスは、こちらの無料サービスのリンク紹介に貼っています.どのサービスがそうなのかはご自身で調べてみてください.

明日へ続く

⏩️映画、市子を観ました.#アマプラ #壮絶

おはようございます.先日、休みに映画、市子をAmazonプライムで観ました.壮絶過ぎるストーリー展開でした.ラストシーンはこう終わるだなってので終わり方だったんだけど、中盤から一体どうなるだろうかという感じの物語の進み方だったんで見応えはあるには有ったけども、ちょっとテーマが考えさせられる物だったのでこの映画に良し悪しはないかなと.

まぁでも前々から気になっていて見るタイミングがなかった映画をウォーキング中に大体観てあとは42インチのディスプレイで残りをその日の内に消化した感じです.見終わった後に何かモヤモヤ感は残るものの、観てよかったと思います.

この頃、PSVRで観ることがなくなっています.理由はSFの映画で見たい映画が今年はなかったのが原因です.ディズニープラス契約しているけど、将軍を観た後にスター・ウォーズでもとか思ったのだけど時間が取れなくてみていないです.映像作品は時間を消費するというのが一番のネックですよね.

時間が勿体ないと思っている反面、休みの日にYOUTUBEとかダラダラと観ている自分がいるので気をつけないとね.

明日へ続く

⏩️クリスマスなのでブラウザに雪を降らすJSコードを生成AIで生成.

おはようございます.クリスマスなのでブラウザに雪を降らすJSコードを生成AIで生成.今年も彼女がいないクリスマスを過ごしました.彼女になってくれる人お待ちしております、この姿勢が彼女が出来ない要素なんだということも分かっていますが.

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>雪</title>
    <style>
        #snowContainer {
            position: absolute;
            /* 親要素に対する絶対配置 */
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            overflow: hidden;
            /* 雪が画面外に出ないようにする */
            pointer-events: none;
            /* 雪がマウスイベントを邪魔しないようにする */
            z-index: 9999;
            /* 他の要素より前面に表示 */
        }

        .snowflake {
            position: absolute;
            width: 10px;
            height: 10px;
            background-color: white;
            border-radius: 50%;
            /* 丸くする */
            opacity: 0.7;
            /* 少し透明にする */
            animation: snowfall linear infinite;
            /* アニメーションを指定 */
        }

        @keyframes snowfall {
            0% {
                transform: translateY(-10px);
            }

            /* 開始位置 */
            100% {
                transform: translateY(100vh);
            }

            /* 終了位置(画面下部) */
        }
        html{
            background-color: black;
            width: 100vw;
            height: 100vh;
        }
    </style>
</head>
<body>
    <div id="snowContainer"></div>
    <script>
        const snowContainer = document.getElementById('snowContainer');
        const numSnowflakes = 50; // 雪片の数

        for (let i = 0; i < numSnowflakes; i++) {
            const snowflake = document.createElement('div');
            snowflake.classList.add('snowflake');
            snowflake.style.left = `${Math.random() * 100}vw`; // 横方向のランダムな位置
            snowflake.style.animationDuration = `${Math.random() * 3 + 2}s`; // アニメーション速度をランダムに
            snowflake.style.animationDelay = `${Math.random()}s`; // アニメーション開始時間をランダムに
            snowflake.style.fontSize = `${Math.random() * 10 + 5}px`;
            snowContainer.appendChild(snowflake);
        }
    </script>
</body>
</html>

そんな自分でも好きですという奇特な人はいないものかな...(受け身(笑)

そんな自分が生成AIに雪を降らすJSコードを頼んだところ、俊足の解を出してくれました.なんて時代なんだと思いながら出力されたコードをhtmlファイルにペーストしてhtml背景を黒にしてあとは一応、確認.

最後に雪が降っているデモサイトを貼っときます.

https://zip358.com/tool/snow

明日へ続く

⏩️ハッキングかもしくは不具合か分からないので.オーバーフローかな?

おはようございます.ハッキングかもしくは不具合か分からないので問い合わせを行いました.これを書いているのは、問い合わせを行った当日なので、今のところ、自分のプログラムコードの不具合なのか、それともハッキングなのか分からない.

ソースコードは単純なソースコードなので当初はオーバーフローと考えたけど、32ビット際のオーバーフローの桁に加算した値を入れたがオーバーフローはしなかったんです.だとすると何らかのサーバー異常でデータを取得できなかったというそれぐらいの事しか思い当たらない.

念の為にサポートセンターに投げた.あり得ないかもしれないけどハッキングという可能性もあるので、問い合わせした感じになります.

昔、VPSサーバーで運営していた時に何度か変なログインの痕跡があったのでもしかしたらハッキングしたファイルを引き継いでいる可能性もという懸念があり.

こういう時に知識の無さを痛感しますね.

明日へ続く