🏠️Top Page

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

⏩️アットマークリブートという設定をご存知ですか.えっ知っている.

おはようございます.アットマークリブートという設定をご存知ですか、これはclonetab -eで日時とか設定する場所に@rebootと記入することによりリブート時にコマンドを実行してくれるものです.

これは便利なのでVPSサーバーとかで任意のシェルなどを実行したい場合に便利かと思います.特にVPSサーバーでnodejsやPythonのサービスを動かしてサーバー運用している方などはこれを知っていると良いですよ.

極稀に運用側がVPSサーバーを緊急再起動とかされるとサービスが止まってしまう場合があります.なので、clonetabでリブート時の設定は必須かなーと自分は思っています.

これ以外にはsupervisorを使用して運用する方法もあります、因みに自分はこちらを使っています、どうしてこちらを使っているかはサービスが落ちた場合に再度立ち上がってくれます.なのでサーバーが再起動した時以外にも対応可能なので自分としてはこちらをオススメしています.

#centOS

dnf install epel-release
dnf update
dnf install supervisor

#Ubuntu
apt install supervisor
[program:fastapi]
command=/home/your_user/myenv/bin/uvicorn main:app --host 0.0.0.0 --port 8000
directory=/home/your_user/myenv/app
autostart=true
autorestart=true
stderr_logfile=/var/log/fastapi.err.log
stdout_logfile=/var/log/fastapi.out.log
user=your_user
systemctl start supervisord
systemctl enable supervisord

supervisorctl reread
supervisorctl update

supervisorctl start fastapi

明日へ続く

⏩️砂浜美術館Tシャツアート展2025 #砂浜美術館Tシャツアート展みんな頑張っているのに.

おはようございます.砂浜美術館Tシャツアート展2025に行ってきましたので行った感想を書いていきますね.まずざっくりとした感想はなんだかTシャツアートが今まで見てきた中で量が半分ぐらいになっている気がします.規模が縮小傾向にあるのかなぁ少しがっかりしました.そしてお客さんがまばらでした.

まぁ一応、平日ですからこんなモノなのかも知れないけど、それにしても人が少なく感じました.

それががっかりでしたが、まぁ普通は一度見ると次回は良いかもと思う人が多いと思います.ここらへんはリピーターを作る何か工夫がないと難しいかもなって思います.自分も来年は行かない可能性が高いです.

ここまでが砂浜美術館Tシャツアート展の感想です、今回Tシャツアート展を見に行くにあたって四国の電車アプリ、しこくスマートえきちゃん、通称スマえきで乗車券と特急券を購入して電子チケットで電車に乗ってみました.

このスマえきアプリで乗るのちょっとアレだなって思いました.無人駅では自分でここから乗りましたよという事を申告しなければならないのです.これ位置情報で何とかならないものかなと思いました、降りるときもどこで終了させたら良いものかわからず改札口で終了させましたが人がいる場合は見せて改札口パスして良さそうです(改札口後に終了させたら良さげでした).

不便なところはあるものの自分はこれから四国内はスマえきアプリ使っていきます.尚、YOUTUBEに今回見に行った砂浜美術館Tシャツアート展の動画をUPしたのでいいね、チャンネル登録宜しくお願い致しますー😶

https://www.youtube.com/@zip358com

明日へ続く

⏩️GW3日目の今日の日程はこんな感じです.早朝に.

おはようございます.これは予約投稿なのでこれを書いている時は子旅に行く準備をしていると思います.昨日、小旅プランのアンケートをしてみたのですが、投票0だった為、自分で決めることにしました.アンケートでは高松へ行きその周辺の島へ行くプラン、土佐入野へ行きTシャツアート展に行くプラン、最後に中村駅から沈下橋を見に行くプランが有りました.

その中から考えて選んだ結果、毎度のTシャツアート展に行くプランにしました.これを選んだのには理由があってまず高松へ行くプランはちょっと慣れない旅なので疲れそうなと旅費が割高感があるので諦めました.じゃ中村駅から沈下橋を見に行くプランにしようと思いましたが、駅から沈下橋へ行くバスがGW期間中運休だということなので、本当はこちらに行きたかったんだけども諦めました.

なので、今回は妥協して無難なTシャツアート展に行くことにしましたがもうTシャツアート展に行くことは無さそうな気がしています.最後になるかもしれないのでちょっと頑張って撮ってきます?

iphoneも新調したのできれいに撮れたら良いけども.尚、お天気は本日は曇り空だそうです🐼.

写真を撮ったり動画を撮ったりするにはちょっと曇っていた方が良いと聞きますが、あれ神話かもですね普通に晴天のときの方が映えますよね.恐らく昔のカメラはそうだったんだと思いますが今のカメラは性能が良いのでいろいろな天候に対応してきていると思います.

では、いってきまーす!✋️

明日へ続く

⏩️自分としてのGW1日目の休みの過ごし方.ダラダラして...

おはようございます.自分としてのGW1日目の休みの過ごし方.ダラダラしていましたとダラダラしていませんの中間的な過ごし方かもしれない.そういう事で1日を振り返って書いていきます.まず朝起きてブログを書きました、この頃、ネタが尽きてきてストックが無くなってきたので当日の早朝にブログを書くこともあります.

それが今日(昨日)の事でした.その投稿を6時予約した後、犬の散歩に行きます.朝の散歩は自分が行くのがここ数年の日課になっています.その後、朝食などをとってネット閲覧をしてて眠たくなったので再度、仮眠を取り1時間ぐらい経った後に目が覚めたので近所のスーパーにパンを買いに行きました.

それと同時に先日のAzで購入した額をATMに入金.因みに自分は呑み会などを行く場合以外は財布の中にはお金はほぼゼロに近い感じ状態です.殆どの支払いは電子決済にしています、そうすることで無駄なお金は使わなくなった感じです.

財布にお金が入っていると、ついつい使う傾向にあるので自分はそうしています.話に戻ってその後、帰宅してパンを食べながらこの頃、更新していないUbuntu端末をアップデートしました.そうこうしているとお昼になったので昼食をとり、その後、2時頃に本屋さんに.

本屋さんにいって新書や変わった本を探して立ち読み(ぱらぱら)と読んで店を後にし頼まれたものをドラックストアで購入、帰宅後、録り溜めたTV番組を流しつつ電子書籍を読む.

その後、5時頃になったので明日用のブログを書かないといけないなって思い、いま書いているという感じです.真面目な小学生的な生活かもしれないと書いていて思ったのだけども基本的に遊ぶというのはしない.映画を観るというのが遊びなのか分からないけどそんぐらいかなですね.

なのでお金はあまりに使わないと思いきやパソコン周りにお金が飛んだりサーバー代などでお金が飛んだりしていて人ってのは生きていたらお金がいります.

これから夜になるのだけど、どこに行く訳でもないので夕食を食べてお風呂へ入り眠たくなったら寝るという感じです.ツマラナイかもですけど自分はそういう方が休まるのでそうしています.

そうそう自分はたまに旅にいく事があります、それが遊びなのかもなぁと書いているうちに思いましたが、それ以外はないかなぁー.

誰かと何処かへ行くとかそういうのは疲れるので大体少人数で行くのを好みます.彼女がいれば良いかもなのですがそれも疲れそうなので友達ぐらいの関係が良い気がします.

同じ年代の人とは話が合わないというよりは何だろう同じパソコン好きやプログラムや自分と同じ共通点がないと話が合わない気がしています.

明日へ続く

⏩️パソコンの残骸が自宅に溜まっているまさに墓標.

おはようございます.自宅には歴代のパソコンの残骸が溜まっているのでこれどうにかしたいなって思っています.この高知県にもパソコンの廃棄する企業が現れたのだけども場所が自宅を会社に改装した企業なんです.

高知県に有りがちですが、会社にするのならやっぱりテナントを借りた方が良いと思います.特に一般のお客さんとの商売する会社は自宅と会社は分けた方が良いと思っている.

逆にしなくても大丈夫そうなのはリモートワークを主としている会社だと思います.ただそれでも今どきの若者世代は住所などを検索したりするので会社の住所が自宅だと抵抗があるかもしれない.

中小企業や零細企業はそういうのはどこの県にもあると思いますがテナントやレンタルオフィスの住所指している方が印象は良い気がしています.

因みに個人事業主は自宅の住所でも良いと思います.理由は個人事業主だからと身も蓋もない回答だけども....

トイウコトデ、企業の会社が自宅の住所を指していてパソコンの廃棄をどうしようか迷っている話でした.

明日へ続く

⏩️サーバー移行に1日欠けた.一斉に12ドメインの引っ越しました.

おはようございます.サーバー移行に1日欠けました.一斉に12ドメインの引っ越しましたという話を書いていきます.先日の休みの日の早朝にサーバーの移行を思い立ちました、何故に今かと言えばGWの連休を使いたくないのでやるなら今かなと思い実行に移しました.ちなみに自分は思い立ったら吉日という性格なので思い立つとその日の内に始めることが多いです.

今回も事前に計画を立てた訳ではないけど無事、全部のドメインを1日で引っ越しました.強引な引っ越しなので表示されない時間帯もあり、その時は収益化出来なかったのでその日はあまり収益が入って来なかったですが、やっぱ安定したサーバーの方が良いです.

当分はレンタルサーバーで運用しつつレンタルサーバーで出来ないことはVPSサーバーのバックエンドで投げるという形を取り運用しつつ.VPSサーバーを綺麗にして再度運用するかダウングレードしてバックエンド処理として使用するかを今考えています.

今回、Docker運用してたけどDockerってかなりメモリを食うことが判明してメモリやCPUが圧迫したら解放や再起動行うことを低レイヤーで処理していただけど、あまりにもお粗末な対応だと思ったので一旦引っ越しした経緯もありますが計画していた訳では無いです.

付け加えると自分としてはVPSサーバーを再構築したいという気持ちの方が強いけど、ボチボチするつもりでいます.今度はDocker使用しません.

明日へ続く

⏩️tMDbのAPIを使用して今まで観た映画をリスト化してみましたよ.

おはようございます.tMDbのAPIを使用して今まで観た映画をリスト化してみましたよ.sqliteの構造は下記になります.idはbigintと記載していますが、AUTO_INCREMENTの間違いです🐼.

Xにも呟きましたがAPIを使用して何かするのはこの頃飽きてきて触らなかったのですが、たまには触れてみようとコードを書いているうちに簡単に作れるようになってしまって少々物足りなさを感じています.

次回はAPIを使う側ではなくて作る側になろうと思っています.GW期間になると思いますが600円のレンタルサーバーのフリードメインを使ってツマラナイAPIみたいな失笑系を作ってみます.

なお、ソースコードの解説がなくてすみません、このソースコードを生成AIに投げてどのような処理か説明して言えば恐らく正解を教えてくれます.

明日へ続く

#真相をお話します.
少年と犬
Flow
curl -sS https://getcomposer.org/installer | php
composer require guzzlehttp/guzzle
composer require illuminate/database
<?php
require_once 'config.php';
require_once 'vendor/autoload.php';
use Illuminate\Database\Capsule\Manager as Capsule;
use Illuminate\Database\Capsule\Manager as DB;

class MovieList
{
    public $result = '';
    public $imgBasicUrl = 'https://image.tmdb.org/t/p/w500';
    public $filePath = FILEPATH_DIR_;
    public function __construct($filePath='')
    {
        $filePath = $filePath?$filePath:$this->filePath;
        if (!file_exists($filePath.'/movie-list.db')) {
            exit;
        }        
        $capsule = new Capsule();

        $capsule->addConnection([
            'driver'   => 'sqlite',
            'database' => $filePath.'/movie-list.db',
            'prefix'   => '',
        ]);

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

    public function getMovieList(string $q): void
    {
        $client = new \GuzzleHttp\Client();

        $response = $client->request('GET', 'https://api.themoviedb.org/3/search/multi?query=' . $q . '&include_adult=false&language=ja-JP&page=1', [
            'headers' => [
                'Authorization' => 'Bearer ' . API_KEY,
                'accept' => 'application/json',
            ],
        ]);
        $this->result = $response->getBody();
    }

    public function getResult(): void
    {
        $data = DB::table('list')->get();
        $lists = [];
        foreach ($data as $key => $value) {
           $result = unserialize($value->value);
            if(isset($result?->media_type) && $result->media_type == 'movie'){
                $lists[] = [
                    'id'=>$data[$key]->id,
                    'title'=>$result->title,
                    'img'=>$this->imgBasicUrl . $result->poster_path,
                ];
            }
        }
        print json_encode($lists);
    }

    public function saveCsvlist(): void
    {
        $fileData = explode("\n",file_get_contents('movie-list.csv'));
        $fileData = array_reverse($fileData);
        foreach($fileData as $line)
        {
            foreach(explode(',',$line) as $data){
                $q = urlencode($data);
                $movieList = new MovieList();
                $movieList->getMovieList($q);
                foreach((json_decode($movieList->result))?->results as $result){
                    DB::table('list')->insert([
                        'value' => serialize($result)
                    ]);
                }
            }
        }        
    }

    public function delete($id): void
    {
        
        DB::table('list')->where('id', '=', $id)->delete();
        print json_encode(['res'=>'true']);
    }

}
//(new MovieList())->saveCsvlist();
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    if(!isset($_POST['id'])){
        (new MovieList())->getResult();
    }else{
        //(new MovieList())->delete($_POST['id']);
    }   
}

⏩️映画、#真相をお話ししますを観ましたよ.感想なんかを書いていきます.

おはようございます.映画、#真相をお話ししますを観ましたよ.感想なんかを書いていきます.原作の小説が店頭に並んでいた頃からこの「#真相をお話しします」というタイトルには惹かれていた覚えがあります.とてもインパクトのある小説の映画化.

予告を観てB級かもしれないという思いもありましたが映画館に足を運んでみました.ちょっと違和感はあったものの、話が進んでいくに連れ映像も慣れて後半部分は違和感というものは払拭していました.

そして久しぶりにこんなにバッサリと画を切った終わらせ方を観たので、とても潔くて良かったです.なかなかこういう切り方を観なくなったのでとても清々しい気分になりました.

明日へ続く

⏩️こんなサイトを作りました.無償で制作します、続きがあるよ.

おはようございます.こんなサイトを作りました.無償で制作します、続きがあるよ.下記の画像を拡大してみてくれると分かるかと思いますが、無償でWEBサービス制作する代わりに運営権はこちらにあり、広告掲載を行って収益化を図るというもの.

https://x.o0o0.jp

収益化出来なかった場合はデジタル販売出来るところに置いて売る.設置等は分かる人に置いてもらうことになると思うけども、こちらとしては利益を得る可能性があるということでビジネス的には赤字になるけど依頼していたユーザーは買う可能性があるのでペイ出来れば良いかなと思っています.

なぜ、こういうサイトを作ったかというとこの頃アイディアが前よりあまり出てこなくなったので、ユーザーさんからアイディアを頂いて作るという仕組みを作ったのだけど、今のところ誰からも要望はないです.

これが有名なひとだったら依頼が来るだろうけど無名なので当分は来ないだろうなって思っています.

明日へ続く

⏩️映画、新幹線大爆破を観ました.結論から言うと大画面で見るとめちゃ良い.

おはようございます.ネトフリで映画、新幹線大爆破を観ました.結論から言うと大画面で見るとめちゃ良い.とても迫力とスリルがあってとても良かったです.それだけでは終わらなくて内容も濃い、ネタバレにならないレベルで言えば犯人が予想外だった、やばー!

海外ウケするかどうかは分からないけど、日本ウケは間違ないだろうなって思いました.まさにシン・ゴジラ的なところがあって良かったです.

この新幹線大爆破は映画館で上映しないのかな、結構お客さん入りそうな気がします.これスマホとかで観るより間違いなく大画面で観るように作られた映画.

これから映画、新幹線大爆破を観ようと思っている人は映画館並みの大きさの画面で観ることをオススメします.

明日へ続く