🏠️Top Page

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

⏩️ここ数年TOKYOに行っていない.

おはようございます.ここ数年TOKYOに行っていない、最後に小旅行に行ったのが大阪に富樫展に行ったのが最後になります.来年は大阪か東京に旅行へ行きたいなと思っています.

何故、旅に行くかという問いのアンサーは非日常だからです.非日常は大事だと思います、特に毎日仕事をしている人は自宅と仕事の往復になります.往復になったりするとメンタル的に良くないです.なので、メンタルのリフレッシュする為に非日常は大事です.

あと結構、旅に行くといろいろと考えることや発見・刺激になったりします.特に自分は展覧会にいくこと好きなので、クリエイターが創作したものを見るのは結構、刺激になります.

お金に余裕があれば毎月、小旅行に行きたいのですが、ここ数年、小旅行に行かなくなり2年も旅に出ていません.東京に関してはもう7,8年ぐらい東京に行っていないのかも知れない.

書いていてやっぱ好きなクリエイター展覧会に行くのは結構楽しいから、来年は小旅行へ行きたいと思います.特に東京に小旅には行ってみたいです、特にあの寝バスで寝ながら行ってみたいなと(ソメイユプロフォン).

明日へ続く

⏩️漠然たるものを形にするのがクリエイターの仕事

おはようございます、クリエイターとアーティストの違いは何かと言えばクリエイターはお客様の漠然したものを聞き取ってある一つの形にするのがクリエイターである、ではアーティストとは何かと言えば自分の伝えたいものをアートを通じて世に発信していくのがアーティストなのではないかと.

同じ物を作るという行為は同じだけど、軸が少し違うかなと思いました.自分はどちらかと言えばクリエイターよりアーティストより何だと思いますが、自分の好きなものを作りたいという思いがどちらと言えば強いのでアーティストでもないかも自己満足境地なのかも.

コードもデザインも好きでやっていて楽しい.それだけで行っているので、これが仕事かと言えばちょっと違う.お金を貰わなくても創るので仕事でやっている人とはちょっと感覚的に思考が違います.

好きでプログラムしているので仕事には苦がない.苦がないのだけど落とし所が難しい、何処まで落とし込んだら良いのやらと思うこともシバシバ.

追伸:因みにこれを書いている時はクリスマスイブです.深い意味はありません、彼女はいないのでホームで過ごしていることでしょう.

明日へ続く

⏩️ポップアートと生成AIとAIで思ったこと.

おはようございます、ポップアートを生成AIと共にAI(イラレ)で作ることが楽しいのですが、実際は自分で一から作りたいなという思いがあります.

自然言語で指示すればそれなりのモノがイラレでも出力されるようになってきました.一番最新のイラレを入れるとナノバナナ🍌なども生成できるようになっています.使用したことは無いですが、恐らくイラレの生成AIよりも精度が良さそうです.

技術のない人でも生成AIを使用すればそれなりのものが出力できる時代、プロと素人の境界線が徐々に崩れていっています.今までイラレやフォトショを使用してクリエイティブな作品を作り上げてきたクリエイターさんは、今の状況をどう思っているのだろうかと.

いやいや全然問題ないですよという一部の売れっ子クリエイターさんとは別に脅威に感じている人もいると思います.因みに自分は脅威に感じている方の人間です.

生成AIでは物足りなさも感じているのでは無いでしょうか?、これは自分の話になりますがコードを書くときが楽しいので、それを奪われると何だかつまらないと感じになります.今のところ生成AIが出力してきた成果物を修正出来るのでまぁまだ良いのですが完璧な物を自然言語で出力するようになった時、面白みがなくなるかもです.

明日へ続く

⏩️映画アバターを観てきました.今年最後の映画見納め

おはようございます.映画アバターを観てきましたので感想を残しときます.映画アバターの三部作になる「アバター ファイヤー・アンド・アッシュ」を観たのですが、どうもコレで完結の予感がしますと言うか終わり方だけ言えば完結です.

アバターは全5作か6作だと言われていたのですが、どうも自分が見た限りでは完結しています.そして1作、2作と観て3作目を観るとわかると思うのですが、殆どストーリー展開が同じなんです、これではお客さん見飽きてしまいます.

最初の1作目は印象的な映画でしたが、徐々にVFX?CGにも見慣れてくるとやっぱストーリー展開が大事になってくるのだと思いますが、なんというか伝えたいメッセージは分かるものの.ちょっとワンパターンだなって思ってしまいました.

因みに3時間という長丁場でしたが、それほど長く感じない展開にはなっていた事は確かですが、それは過去のストーリー展開を覚えていない時の話です.観ている人は集中し余計なことを考えずに観ると良いかもです、結構、ツッコミどころがあるラストの展開でしたし...

追記:技術的な面から言えば圧巻だと思います、特に水の表現や光の表現などCGの技術はやっぱアメリカは上を行っている感覚は素人目線でも分かります.

明日へ続く

⏩️田舎の公共交通機関がズタボロ感.皆さん使いませんか?

おはようございます.田舎の公共交通機関がズタボロ感を先日国家試験を受けに市内まで行っていた時に感じました.高知市まで行く便の運賃が以前より30円ぐらい値上げされていて愕然となりましたが、、、

これは仕方がない事だけど、やはり公共交通機関を使用する人の割合も少ない高知県では運賃が安くなる事は有りえないかも知れません.

でも、本当に困ったのは土日の便です.試験が終了したのがお昼の12時だったのですが、路線バスが無い13時まで待たないと無いです...ぽっかりと路線バスの便がなく、JRもちょうど12時過ぎに県庁前にいたので間に合わなかったです.そのため土佐電で後免町まで行ったのですが、そこでもアクシデントが!

後免町からJRにでも乗り換えれば何とかなるじゃないかと思っていたら、乗り換えるJRの電車は一時間待ちでした.バスはあるかなと時刻表を見たらコチラも1時間待ちです.

確かに12時といえばご飯の時間帯なので移動する人は少ないかもですが、土日祝の12時枠にも便があれば良いのになと思った次第です.

高知県民はあまり電車などを使わないかもだと思いますが、使わないと徐々に便が減っていき不便さを感じるようになってくると思います.車社会の高知県ではなかなか難しいと思いますが公共機関をご使用頂きたいです.

公共交通機関を使うメリットは移動時間に本を読んだりネットしたりと時間を自分活用が出来ます、そこが公共交通機関のメリットかなと思います.

明日へ続く

⏩️モールス信号変換器を作った話.二番煎じ感

おはようございます.競合他社とまでは行かないもののモールス信号変換器を作りました、この機能が検索にヒットするまでには少し時間がかかると思います.AI時代にSEOは必要ないなどと言いますが、実際は必要不可欠なんじゃないかなと思い出しました.

AI検索を使用しないひとが一定数いると思います、そんな人達に刺さるサイトを作るべきだしそんな人達に見てもらう為にもSEOは重要性が高まると思います.SEOがちゃんと出来ていてもSNSマーケティングが出来ていなければそこまで辿り着くことがないのが今のネットの現状かと.

作り上げてそれで良いものだったら見てもらえる時代はもう終わったと言っても良さそうです.それぐらいSNSマーケは重要になってきているし、SEOも重要になってきていると.

因みに自分はSNSマーケティングが上手くできていればSEOがイマイチでも結果的に検索上位にヒットすると思っています.

自分みたいにボットで宣伝活動してもそんなに効果はないです.なのでこの頃、AIにパターンを複数考えてもらってそれをランダムに発信する方法に変更しようと思っています.

最後に「和文モールス信号変換器」のリンクを貼って締めとします.

明日へ続く

⏩️国家資格取得*2しているけどね.だがしかし付く.

おはようございます.またもや国家資格取得出来なかった悔しいですね、今回の敗因は勉強していたのだけどどうも過去問題からの出題からかなりズレていて結局、的外れな勉強方法でした.今回、学んだことは勉強方法を変えないと合格は難しいということ.確かに過去問題集からも問題が出ていたけど、ほんの少しだった、明らかに聞き慣れない用語がかなりあり苦戦しました.

問題は各個人にカスタマイズされた問題だったら増々辛いなという印象です.ちなみにあと3問ぐらい正解だったら合格ラインになっていた事もあり残念です.

後半は前半駄目駄目だと思ったので適当に回答したけど、結果はまぁまぁだったので恐らく合格出来そうなレベルだった.こちらも過去問題集からはどうも出ていない感じがします.1問過去問と同じような問題を見つけましたが、あとは全く過去の問題にはない問題でした.

今回、残念だったので来年またトライしたいと思います.この国家資格を合格したらちょっと自分の荷が降りる感覚があります、なので何としても取得したいです.

明日へ続く

⏩️さくらレンタルサーバーデータベースをフルバックアップするコード

おはようございます.アバターは月曜日か火曜日に観に行くつもりでいますがどうなるかは未定です.本日はさくらレンタルサーバーデータベースをごっそり定期的にフルバックアップするコードを作成したのでその話を書いていきます.このコードはwwwよりも上に出さないで下さい.そこだけが重要なところです、また使用にあたってご自身の環境に合わしてユーザーやパスワードなどを変更して下さい.

因みにこれをクロンやコマンドラインからしか実行出来ないので、定期的にバックアップしたい方はクロンの設定が必要になります.

これらを注意実行とします.あとエラーが出た時に出力するようにしていますが不要な場合は削除またはコメントにして頂いて結構です、そして可変などもご自由にしてください.

追伸:本日、国家試験を受けに行きます、試験結果に関しては時が過ぎたころに書いていくと思います.試験は10時から高知県の県庁前辺りで行われます.たぶん終わるのは12時頃だと思います...

<?php
class SqlBackup
{
    private $user = 'user';
    private $pass = 'pass';
    private $host = 'mysqlXXX.user.sakura.ne.jp';
    private $root = '/home/user/MySqlFullBackup/';//バックアップの置き場所:絶対パス
    private $dblist = [
        "wp_db",
    ];
      
    public function fullBackup(string|null $dir=null)
    {
        $dir = $dir??$this->root;

        if (!is_dir($dir)) {
            return $this;
        }

        try {
            foreach ($this->dblist as $dbname) {
                exec('mysqldump -u ' . $this->user . ' -p' . $this->pass . ' -h ' . $this->host . ' --single-transaction --no-tablespaces ' . $dbname . ' > ' . $dir . date('Y-m-d-H-i_') . $dbname . '.sql 2>/dev/null');
            }
        } catch (\Throwable $th) {
            file_put_contents('bug.txt', $th->getMessage());
        }
        return $this;
    }

    function deleteOldFiles(string|null $dir=null, int $days = 7)
    {
        $dir = $dir??$this->root;

        if (!is_dir($dir)) {
            return $this;
        }

        $deletedCount = 0;
        $limitTime = time() - ($days * 24 * 60 * 60);

        $iterator = new RecursiveIteratorIterator(
            new RecursiveDirectoryIterator(
                $dir,
                FilesystemIterator::SKIP_DOTS
            )
        );

        foreach ($iterator as $file) {
            /** @var SplFileInfo $file */
            if ($file->isFile()) {
                // ファイルの更新日時を取得
                if ($file->getMTime() < $limitTime) {
                    if (@unlink($file->getPathname())) {
                        $deletedCount++;
                    }
                }
            }
        }

        //echo $deletedCount;
        return $this;
    }
}
if ($argv[0]) {
    (new SqlBackup)->fullBackup()->deleteOldFiles();
}

明日へ続く

⏩️アクセスカウンターはSQLiteとPHP言語で出来ています.

おはようございます、このサイトのアクセスカウンターはSQLiteとPHP言語で出来ています.ボット訪問者はカウントしないなどは別のプログラムで制御しています.そういう訳もあって結構シンプルなコードで出来上がっていると思います.この頃は海外からの訪問者も増えてきています.とくに中国とシンガポール経由の訪問者です.恐らくボットだという事は分かっているのですが、ボットと判定しづらい方法でアクセスしているので、アナリティクス(アクセス解析)にもカウントされます.

それが少々困っています.毎分でアクセスしてくるので非常にサーバーに負荷がかかっているのは分かっているのですが、どうしようもない.国ごとアクセスを遮断するプログラムをそのうち入れようと思っています.

一番簡単な遮断方法はMaxMindのPHPライブラリを使えば良いらしい.これを使用するとIPから何処の国からアクセスしてきたか判別可能になります.だけど使用するにはライブラリの他にデータベース(IP)をダウンロード必要があり、ダウンロードするにはMaxMindでアカウントを登録しないデータベースがダウンロード出来ないようになっているので自分はそこで止まっています.規約がなぁ....。

<?php

require 'vendor/autoload.php';//絶対パスが宜しいかと

use Illuminate\Database\Capsule\Manager as Capsule;
use Illuminate\Database\Capsule\Manager as DB;
use Illuminate\Database\Schema\Blueprint;

class counter
{
    public $targetId = 1;
    public $cnt = 0;
    public $dbPath = 'counter/cnt.db';//絶対パスが宜しいかと

    public function __construct($dbPath = null,$targetId=null)
    {
        $dbPath = $dbPath ?? $this->dbPath;
        $this->targetId = $targetId??$this->targetId;

        // DBファイルが無ければ作成(空ファイル)
        if (!file_exists($dbPath)) {
            touch($dbPath);
        }

        // Capsuleインスタンス
        $capsule = new Capsule();

        // SQLite接続
        $capsule->addConnection([
            'driver'   => 'sqlite',
            'database' => $dbPath,
            'prefix'   => '',
        ]);

        $capsule->setAsGlobal();
        $capsule->bootEloquent();

        /**
         * zcnt テーブルが無ければ作成
         */
        if (!DB::schema()->hasTable('cnt_tbl')) {
            DB::schema()->create('cnt_tbl', function (Blueprint $table) {
                $table->integer('id')->primary();
                $table->integer('cnt');
            });

            // 初期データ投入
            DB::table('cnt_tbl')->insert([
                'id'  => $this->targetId,
                'cnt' => 1,
            ]);
        }

        return $this;
    }

    public function getCounter()
    {
        $zcnt = DB::table('cnt_tbl')->where('id', $this->targetId)->first();
        $this->cnt = $zcnt?->cnt;
        return $this;
    }

    public function setCounter()
    {
        if (!is_null($this->cnt)) {
            $this->cnt++;
            DB::table('cnt_tbl')->where('id', $this->targetId)->update([
                'cnt' => $this->cnt
            ]);
        }
    }

    public function output()
    {
        print json_encode([
            'cnt' => $this->cnt
        ]);
    }
}

明日へ続く

⏩️民衆も国もいま忘れていること.平和が一番だという当たり前のことを

おはようございます.民衆も国もいま忘れていること.平和が一番だという当たり前のことを忘れている、いまの日本のメディアも一歩引いた情報統制をしてほしい.中国の挑発に乗っているのと同じ事、エスカレートして何でもかんでも国民を煽るような情報を流さないでほしい.

昔の人はこういう言葉を残している.

"幸は不幸、生は死につながることをわきまえる 病気にかかってから健康のありがたさに気づき、戦争が起きて初めて平和のありがたさがわかる。これでは、先見の明があるとはとうてい言えない。 幸せを願いながらも、それが不幸の原因となることを知っており、長生きをしたいと願いながらも、その先には死が待つことを知っている。 こういう人こそ賢人と言える。“引用:菜根譚

当たり前過ぎるけど、これを忘れてはならないと思うです.中国と争って日本は勝てるとでも本気で思っているのだろうか、賢く日本のメディアや政治家も立振舞を行ってほしい.謝罪するではなく上手くやるすべが必ずあると思うですが、この頃のマスメディアは正直な所なんか煽っているような内容が多くて何だか自分は好きではない.

明日へ続く