流体シミュレーション

2024.04.15

Logging

おはようございます、Misaki Nakano(@misaki_mofu)さんの流体シミュレーション作り方を書かれた記事が素晴らしい.これは今年初の「うぉ」っていう驚きの内容でした、分かりやすく丁寧に解説してくれています.まだ半分ぐらいしか良いでいないけど、なんか自分でも出来そうなだなって思える内容.

https://mofu-dev.com/blog/stable-fluids

賢い人には敵わない気もするけど、環境を人を作るのだなって思うこともあります.因みにMisaki Nakano(@misaki_mofu)さんはgithub社に所属しているそうです.いやー天と地ほど能力に差があるけれども、近づけるように努力したいなって思えたwebサイトでした.

明日へ続く.

タグ

github社, Misaki Nakano, misaki_mofu, WEBサイト, , 内容, , 半分, 地ほど能力, , , 敵わない気, 流体シミュレーション作り方, 環境, 素晴らしい.これ, 自分, 記事, 賢い人,

バッド・ランズを観ました。

2024.01.13

Logging

おはようございます、大晦日にバッドランズを観ました。全然良かったんだけどヤバいなとも思った作品です。バッドランズとは悪地(住みにくい良くない土地)という意味だとか、映画を観ていると何となくだけども、その意味する所が分かる気がする。

環境が人を作るというのが正しいのか分からないけれども、少なからず環境が起因することはあると思います。そういう事を考えながら観ているとちょっと疲れはするものの、どういう結果で終わるのかと思うとやっぱり最後まで観てしまう映画でした。

◤本予告◢ 9/29(金)公開 映画『BAD LANDS バッド・ランズ』

明日へ続く。

タグ

バッドランズ, , 作品, 土地, 大晦日, 悪地, 意味, , 映画, 最後, , 環境, 結果,

新語:物魂電才『ぶっこんでんさい』。#生成AI時代

2023.07.30

Logging

おはようございます、皆さん生成AI使ってますか?自分は日に一回は確実に業務で使用しています。今回はシン・ニホンを書かれた安宅和人 氏の動画をみていて日本結構大変ですね(・・;)。日本は結構瀬戸際に来ているじゃないかなって思います。そして世界も日本と同じ問題を潜んでいるということとか、結構たいへんな課題。

【シン・ニホン 2023:安宅和人】生成AIで起きた3つの変化/AIを議論しすぎ/世界の2大課題は「地球との共存」と「人口減少」/日本の勝ち筋は「物魂電才」/米中は「電魂物才」/ロボットは日本が勝てる

安宅和人 氏を聞いているとAIより世界的な問題などになりつつある。環境の問題などへ焦点を向けているなって思っています。AIの先の話をしているように感じました。まだYOUTUBEにUPされていない後半の部分、恐らくそういう事が今後大事になってくる。

close up photography of group of people
Photo by Sahil prajapati on Pexels.com

AIをどう使い今後の世界的な問題などとどう向き合うかが大切になってくるのではと動画をみていてそう受け取りました🗿。因みにこの記事をUPしている頃にはPIVOTに後半がUPされている頃になると思います。

タグ

AI, Photo by Sahil prajapati on Pexels.com, PIVOT, シン・ニホン, 世界, 使い今後, , 動画, 問題, 安宅和人, 後半, 業務, 瀬戸際, 焦点, 環境, 皆さん生成AI, 自分, , 課題, 部分,

デジタルツインが胸熱かも。NVIDIA強し。

2023.01.21

Logging

おはようございます、毎日、タスクを消化していく日々です。

さて、今日はデジタルツインが胸熱っていうお話です。デジタルツインとはリアルの世界と同じ環境をデジタルの中で作ってシュミレーションして見るというお話です。

Mercedes-Benz Adopts NVIDIA Omniverse for Vehicle Assembly and Production Planning
デジタルツイン

シュミレーションした良い結果は、リアル世界に反映していくという事でとても効率よい方法です。いま、この手法でロボットの学習させたり、自動運転のテストを何度も繰り返してAIに学習させたりしています。ある程度学習を積んだAIでリアル世界で実地テストするという感じです。

因みにこの世界も実は仮想世界かも知れないというのは、否定出来ないのかって思っています。まぁその話はまた今度しますが、デジタルツインは結構胸熱ですよ。

タグ

AI, タスク, デジタル, デジタルツイン, テスト, リアル, リアル世界, ロボット, 仮想世界, 何度, 効率よい方法, 実地, 手法, 日々, 環境, 程度学習, 胸熱, 自動運転, 良い結果, ,

dockerでlaravel環境構築したお話。 #hosts

2022.12.08

Logging

おはようございます、今日は早朝に明日の記事を書いています😆。

さて、dockerでlaravel環境構築したお話を書いていきます、Dockerの環境でApacheをインストールし、バーチャルホストを設定してwindows側のhostsも変更しDocker側のhostsも設定、起動確認も取れたので、一旦Dockerを終了し再度立ち上げるとDocker側のhostsが初期値に戻っている🤔。

これDockerの仕様らしいので、下記のようにdocker-compose.ymlを設定(extra_hosts)するか、Docker runでコンテナを立ち上げる場合はパラメーター–add-hostを付与してあげないといけない😳。

version: "3"
services:
  web:
    image: almalinux:latest
    container_name: Apache_v2.4
    ports:
      - 80:80
    privileged: true
    command: /sbin/init
    extra_hosts:
      - "example1.com:127.0.0.1"
      - "example2.com:127.0.0.1"
    volumes:
      - E:\var\www\html:/var/www/html
docker run --add-host=example1.com:127.0.0.1 .....

尚、Docker側のhostsを変更しないまま、立ち上げてもLaravelは動かないと思います。何故、動かないかはここでは割愛させて頂きます🙇。

タグ

--add-host, , almalinux, ap, Apache, container, docker, docker-compose, extra, hosts, image, Laravel, latest, name, quot, run, services, Version, web, Windows, yml, インストール, お話, これ, こんてな, バーチャル, パラメーター, ホスト, 一旦, 下記, 今日, 仕様, 付与, , 再度, 初期, 場合, 変更, 早朝, 明日, 構築, 環境, 確認, 終了, 記事, 設定, 起動,

諦めたいと思った時が続ける時だ。 #KeepGoing

2022.11.24

Logging

おはようございます、昨日はPM4時頃から晴れましたね、高知県の話ですけどw。

さて祝日後の仕事は憂鬱かもですね。そんなモチベーションを下がった時に見る動画。動画でも強調している継続(努力)出来ない人が多い、継続は力なんだと思いますよ。

https://www.youtube.com/watch?v=nxb86cEPp6s

因みに、仕事で大事なのは何かと言えば気持ちです。前向きな気持ちになれる環境が大事になります、人を貶しているような環境の職場ヤバい、そんな環境では生産性は上がりません。そういうのは伝染します、そうなったら足の引っ張り合いが始まり大きな発展はしません。

環境作りは大事だということ、皆がやるぞという環境を作るのが上司の役割なのかなって思います、ダメなものはダメだという意識付けが大事なんだと思います。

マインドが大事、それは技術よりもです、技術は熟していくと最低限の技術は付きます。人を称えない会社に未来あるのかな🤔。

頑張りましょう、いってらっしゃい!!。

タグ

4, KeepGoing, PM, , こと, それ, ため, マインド, モチベーション, もの, 上司, , 仕事, 会社, 伝染, , 前向き, , 努力, 動画, 大事, 強調, 役割, 意識, 憂鬱, 技術, 昨日, , 最低限, 未来, 気持ち, 環境, 生産性, 発展, , 祝日, 継続, 職場, , , 高知県,

文字数カウントは奥が深いよ。日本語より𓅇エジプト😇 #javascript #code #プログラミング #unicode

2022.10.05

Logging

おはようございます、先日(日曜日のこと)は久しぶりに本屋さん巡りしていました😋。本屋📖は良いですね落ち着きます。

さて、文字コードのカウントは奥が深いなって話を記載していきます。人目線からすれば文字をカウントするという至って簡単な話にですが、PC(コンピューター)にとっては奥が深いです・・・日本語漢字も面倒だけどエジプト系の象形文字系(unicode)は本当に面倒そうです。まだ、作りかけですがツイッターの用な文字コードのカウントするjavascriptコードを書きましたのでサンプルコードとしてご使用ください

※WindowsOSの環境下でChromeブラウザ動作させ検証しました。コピペ文字には対応していません😇。UTF-8 ではない違う文字コードを貼り付けてみてください、変なことになると思います😂。例えばEUC文字コードだとか・・・。

動作サイトはこちらです。

        function moji(o) {
            let m = o.nextElementSibling;
            //ads
            let h = ((o) => {
                let l = o.value.match(/(https?:\/\/[a-z|A-Z|0-9|\-|_|%|\.|\/]{0,})/giu);
                let ml = l ? ((l) => {
                    return sum = l.reduce((s, e) => {
                        return s + e.length;
                    }, 0);
                })(l) : 0;
                return l ? {
                    len: (l.length * 23),
                    mlen: ml
                } : {
                    len: 0,
                    mlen: ml
                };
            })(o);
            //zenkaku            
            let k = ((o) => {
                let l = o.value.match(/[^\x20-\x7e]/giu);
                let ml = l ? ((l) => {
                    return sum = l.reduce((s, e) => {
                        return s + e.length;
                    }, 0);
                })(l) : 0;
                return l ? {
                    len: (l.length * 2),
                    mlen: l.length
                } : {
                    len: 0,
                    mlen: ml
                };
            })(o);
            m.innerHTML = "【 " + (o.value.length + h.len - h.mlen + k.len - k.mlen) + "文字{半角/280} 】";
            if ((o.value.length + h.len - h.mlen + k.len - k.mlen) >= 280) {
                m.innerHTML = "<span class='text-danger'>【 " + (o.value.length + h.len - h.mlen + k.len - k.mlen) + "文字{半角/280} 】</span>";
            }
        }
                    <label for="my-textarea" class="h3">文字を入力してください。</label>
                    <textarea id="my-textarea" class="form-control" oninput="moji(this);" name="" rows="3"></textarea>
                    <span class="h3"></span>

尚、サンプルコードは1バイトを一文字としてカウントしていきます、そしてURL文字はどんなに長くても23文字にカウントされます、これはTwitter社の仕様と合わしています。URL文字はURL短縮が行われ23文字の短縮URLが生成されるからその様にカウントしているのですが、なんか本物と違うですよね挙動が・・・🙇‍♂。因みに絵文字がどのようにカウントされるかは確認していません。

UTF8では絵文字(unicode)を3バイトで表記させているそうです。昔、UTF-8は2バイトで表現しているとか習っていたのですが、それはカナリ古い知識だったみたいです😇。

タグ

8, Chrome, Code, EUC, javascript, PC, Unicode, UTF-, WindowsOS, エジプト, カウント, コード, こと, コピペ, コンピューター, サンプル, ツイッター, ブラウザ, プログラミング, 久しぶり, 人目, 使用, 先日, 動作, , , 対応, , 文字, 日曜日, 日本語, 本屋, 本当, 検証, 漢字, 環境, , 簡単, 記載, , 象形, 面倒,

Dockerは楽だなという事を今頃理解しましたよ。 #vbox #docker

2022.10.03

Logging

おはようございます、月曜日の朝はテンション低めな方も多いはず😇。

さて、今日は先週の木曜日と金曜日にふと今後のためにDockerをもう少し触ってみようと思い作業終了後触ってみました、触れて気づいた事は開発環境を作るのがとても楽だということ(気づくの遅い?🫠)。自分は昔の人間なのでvisualboxばかり触っていたのですがDockerは素晴らしい。サーバー周りが得意な人にイメージを作ってもらってそれを共有すれば皆、同じ環境下で開発が出来るので良いという事に今頃気づいた・・・。

 docker run -it -d -v C:\var\www\html\:/var/www/html --privileged -p 80:80 --name こんてな命名 イメージid /sbin/init

※Visualboxでも可能ですけどね。Dockerのだとそこが楽だしマウント(フォルダ共有)もスムーズに行くので自分は良いなと感じました。

ちょっと残念だった点は自宅で作業している中、バッファローのNAS🍆に作業ファイルを入れているのですが、それとは共有出来なかった点です、対応として実PCをrobocopyしてNASと同期を取るという形にしました。これで問題はなくテスト環境下で開発ができます。尚、高級なNASではそういう問題なく上手くいくそうですよ。※NASはバックアップデータになりました。

robocopy <コピー元> <コピー先> /E /DCOPY:DAT

尚、mirのオプションにしなかったのには理由があります。コピー元のファイルが消えたり、ディレクトリが破損した場合、コピー先のファイルやディレクトリが消えて無くなるらしいので・・・。完璧なミラーリングは辞めました。

こんな感じで快適なテスト環境が作れます(上記のコマンド参考に)。

タグ

--privileged, -p, -v, 80, D-, docker, html, ID, init, IT, name, run, sbin, var, vbox, Visualbox, www, イメージ, こと, こんてな, サーバー, スムーズ, そこ, それ, ため, テンション, パス, フォルダ, マウント, , , 人間, 今後, 今日, 今頃, 低め, 作業, 先週, 共有, 可能, 周り, 命名, 得意, , , 月曜日, , 木曜日, 理解, 環境, , 終了, 自分, , 金曜日, 開発,

Sqliteで作った簡易掲示板のコードを配布致します。#php #code

2022.09.20

Logging

おはようございます。台風は過ぎ去りましたがせっかくの三連休が残念です💦。

今日は先日、Sqliteを使用して簡易掲示板を作ってみましたのでコードを配布致します、尚、PHP8の環境下で動作させています(PHP7系でも動作すると思います)。

Sqliteってnow()関数がなかったりだとか、Deleteする時に、noカラムを昇順しlimitを使用して削除出来ないだとか、いろいろとMysqlとは違う所があり、面倒だなと思いながらコードを書きました、尚、SqliteはWebサーバーの階層に置かないように、置いても良いですが・・・。そのままの状態だと誰でもダウンロードが可能になってしまいますのでご注意ください。自分は地下に眠らしています😅。

一応、二重投稿防止の為に20秒経過しないと再投稿出来ないようにしています😌。トライしていない事は禁止ワード等がありません🤔。つけようと思ったのですがまぁ良いかなと、、、。

動作している環境のリンクはこちら。

https://reborn9.sakura.ne.jp/

軸となるPHPのソースコードを2つ貼っときますね。

<?php
session_start();
$toke_byte = openssl_random_pseudo_bytes(16);
$csrf_token = bin2hex($toke_byte);
$_SESSION['csrf_token'] = $csrf_token;
?>
<!DOCTYPE html>
<html lang="ja">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <meta name="Description" content="Enter your description here" />
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.1.0/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
    <link rel="stylesheet" href="assets/css/style.css?<?= time() ?>">
    <title>掲示板</title>
</head>

<body class="p-3 text-white">
    <div class="p-4 shadow rounded" style="background-color:#d6dbdf;">
        <div class="container mt-5">
            <div class="row">
            <div class="col-12 text-center">
                <h1 class="shadow" style="color:#195a57;">掲示板::version 2.5</h1>
            </div>
                <div class="col-12">
                    <div class="input-group shadow rounded">
                        <div class="input-group-append">
                            <span class="input-group-text bg-dark text-white" id="my-addon">ニックネーム</span>
                        </div>
                        <input class="form-control" type="text" name="name" placeholder="ニックネームを入力" aria-describedby="my-addon">
                    </div>
                    <div class="form-group shadow rounded">
                        <label for="my-textarea">コメント</label>
                        <textarea id="my-textarea" class="form-control" name="comment" rows="7"></textarea>
                    </div>
                    <button id="btn" class="mt-2 btn btn-info text-white shadow rounded" type="button">投稿する</button>
                </div>
            </div>
        </div>
        <div class="container mt-5">
            <div class="row">
                <div id="view" class="col-12"></div>
            </div>
        </div>
    </div>
    <footer>
        <a href="/">TOP</a> :: © Reborn9.sakura.ne.jp <?=date("Y")?>
    </footer>
    <input type="hidden" name="csrf_token" value="<?= $csrf_token ?>">
    <script src="https://code.jquery.com/jquery-3.2.1.min.js" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/2.9.2/umd/popper.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.1.0/js/bootstrap.min.js"></script>
    <script src="assets/js/main.js?<?= time() ?>"></script>
</body>

</html>
<?php
class db
{
    var $pdo = null;
    function __construct()
    {
        try {
            $this->pdo = new PDO("sqlite:../../bbs.sqlite3");
            $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);        //code...
        } catch (\Throwable $th) {
            //throw $th;
            print $th->getMessage();
        }
    }
    function select_limit()
    {
        if($this->pdo){
            $stmt = $this->pdo->prepare('select * from bbs order by no desc limit 0,5');
            $stmt->execute();
            $result = $stmt->fetchAll();
            $stmt = null;
            $this->pdo = null;
            return new view($result);
        }
    }
    function insert($name,$comment,$sns_cnt=0)
    {

        try {
            $stmt = $this->pdo->prepare('INSERT INTO bbs (`time`,`name`,`comment`,sns_cnt)values(strftime(\'%Y年%m月%d日 %H時%M分%S秒\',CURRENT_TIMESTAMP, \'localtime\'),:name,:comment,:sns_cnt)');
            $stmt->bindParam(':name', $name, PDO::PARAM_STR);
            $stmt->bindParam(':comment', $comment, PDO::PARAM_STR);
            $stmt->bindParam(':sns_cnt', $sns_cnt, PDO::PARAM_INT);
            $stmt->execute();
            $stmt = $this->pdo->prepare('DELETE FROM bbs WHERE bbs.no = (SELECT no from bbs ORDER BY no ASC LIMIT 1);');
            $stmt->execute();
            $stmt = null;
            $this->pdo = null;
            return true;
        } catch (\Throwable $th) {
            print $th->getMessage();
            return false;
        }
    }
}

class view{
    var $item = null;
    function __construct($item)
    {
        $this->item = $item;        
    }
    function view_item($item="")
    {
        try {
            $item = $item?$item:$this->item;
            ob_start();
            ?>
            
            <?php
            foreach($item as $key=>$value){
                ?>
                <div class="mt-2 row txtbox shadow rounded">
                <div class="col-3 name_<?=$value["no"]?> rounded-start fs-6">
                    ニックネーム::<?=$value["name"]?>さん
                </div>
                <div class="col-9 time_<?=$value["no"]?> fs-6">
                    投稿日時::<?=$value["time"]?>
                </div>
                <div class="col-12 comment_<?=$value["no"]?>">
                    <?= nl2br($value["comment"])?>
                </div>
                <div class="col-12 sns_cnt_<?=$value["no"]?>">
                    <!-- <?=$value["sns_cnt"]?> -->
                </div>
                </div>
                <?php
            }        
            ?>
                
            <?php
            $ret["view"]= ob_get_clean();
            $ret["msg"]= "done";
    
        } catch (\Throwable $th) {
            //throw $th;
            $ret["msg"] = "error";
        }
        return $ret;
    }
}

session_start();
$ret = null;
$mode =  xss_defence($_POST["mode"]);
// $time =  ;
$name =  xss_defence($_POST["name"]);
$comment =  xss_defence($_POST["comment"]);
$sns_cnt =  (int)xss_defence($_POST["sns_cnt"]);
if (isset($_POST["csrf_token"]) 
 && $_POST["csrf_token"] === $_SESSION['csrf_token'] && (function($t){
    return time() - $t > 20?true:false;
 })($_SESSION["save"])) {
    if($mode==="save"){
        $name = !preg_replace("/[ | ]/","",$name)?"匿名":$name;
        $comment = !preg_replace("/[ | ]/","",$comment)?"":$comment;
        if($comment){
            $db = new db();
            $db->insert($name,$comment);
            $_SESSION["save"] = time();
        }
    }
    $db = null;
    $db = new db();
    $ret = $db->select_limit()->view_item();
    print  json_encode($ret);
}
function xss_defence($value){
    if(is_array($value)){
        foreach($value as $key=>$val){
            $value["$key"] = strip_tags($val);
            $value["$key"] = htmlspecialchars($value["$key"],ENT_QUOTES);
        }

    }else{
        $value = strip_tags($value);
        $value = htmlspecialchars($value);
    }
    return $value;
}

配布コードはこちらです。

タグ

20, 7, 8, Code, Delete, LIMIT, MYSQL, no, Now, php, Sqlite, web, いろいろ, カラム, コード, ご注意, サーバー, せっかく, そのまま, ダウンロード, トライ, ワード, 三連, , , 今日, , 使用, 先日, 削除, 動作, 可能, 台風, 地下, , 投稿, 掲示, 昇順, , 残念, , 状態, 環境, 禁止, 簡易, 経過, 自分, , , 配布, 関数, 防止, 階層, 面倒,

1万件のCSVを読み込みテーブルに保存する雛形コード #PHPCode

2022.09.08

Logging

おはようございます、徐々に秋ぽっい日差しになってきましたね(まだ暑いけども😌)。

今日は、1万件のCSVを読み込みテーブルに保存する雛形コードを昨日、ちょちょっと書きましたので記載します。ファイルをダウンロードして使いたい方はGithubのリンクを下に貼っときますので、ご使用頂けたらと思います。尚、テーブルなどはCSVを参考にご自身で構えてください。

※動作環境はPHP8系です、なのでPHP7系では一部エラーが出ます。fgetcsv…nullを0へ変更。

Githubのリンクはこちら

Qiitaの方に記載しようかどうしようか、迷ったのですが第一弾目がアクセス数がそこそこ伸びたのでこれ以上、注目されるのは嫌なのでブログの方に記載しました。1万件のCSVを簡単に読み込ませる方法はPHPコードを書くのではなく、SQLのコマンドで実行した方が実は早いですけど・・・。

https://twitter.com/taoka_toshiaki/status/1567489169919975424
有言実行

早いですけど、その場合、CSVがちゃんとしたファイルではないと上手くテーブルに保存されない場合や、そもそもコマンドラインで操作出来ない場合もあったりしてPHPコードなどで制御しないと駄目な事もあります。そんな時に、このコードをサンプルとして使って頂ければ良いなと思い作りました。

1万件のCSVを読み込ませるPHPコード雛形。

そんなにコードを書かなくてもまぁ動くんですよ。ちなみにソースコードには、あまりコメントを書いていないですが、プログラマーなら大体の人が理解できるレベルかと思います。

<?php
//ini_set("display_errors","On");
session_start();
require "db_config.php";

//読み込みCSVファイル名セット
class csv
{
    /**
     * @param string $filename
     * @param int $cnt
     * @return Object
     */
    public function ini_csv($filename = "", $cnt = 0)
    {
        return new csv_read($filename, $cnt);
    }
}

//CSVデータを読み込ます
class csv_read
{
    var $max = 10000;
    var $cnt = 0;
    var $handle = null;
    /**
     * @param string $filename
     * @param int $cnt
     */
    public function __construct($filename = "", $cnt = 0)
    {
        $this->cnt = $cnt;
        $this->handle =  fopen($filename, "r");
        $_SESSION["offset"] ? fseek($this->handle, $_SESSION["offset"]) : $this->handle;
    }
    /**
     * @param int $header_skip
     * @return Object
     */
    public function reader($header_skip = 0)
    {
        if ($this->handle !== FALSE) {
            $response = null;
            $data = fgetcsv($this->handle, null, ",");
            if (!$header_skip || $_SESSION["offset"]) {
                if ($data !== FALSE) {
                    $_SESSION["offset"] = ftell($this->handle);
                    $response["data"] = $data;
                    $response["cnt"] = $this->cnt > $this->max ? 0 : ($this->cnt + 1);
                    $flag = true;
                } else {
                    $_SESSION["offset"] = null;
                    $flag = false;
                }
            } else {
                $_SESSION["offset"] = ftell($this->handle);
                $response["cnt"] = $this->cnt > $this->max ? 0 : ($this->cnt + 1);
                $flag = false;
            }
        } else {
            $_SESSION["offset"] = null;
            $flag = false;
        }
        return new table_save($flag, $response);
    }
}

//tableにCSVデータを保存
class table_save
{
    var $flag = false;
    var $result = null;
    /**
     * @param boolean $flag
     * @param array  $response
     * @return void
     */
    public function __construct($flag, $response)
    {
        $this->flag = $flag;
        $this->result = $response;
        $this->column_name = "name,,...";
    }
    /**
     * @param string  $column_name
     * @return void
     */
    public function tbl_save($column_name = "")
    {
        if ($this->flag) {
            $column = $column_name ? $column_name : $this->column_name;
            $is_column = explode(",", $column);
            foreach ($is_column as $key => $val) {
                $is_value[$val] = $this->result["data"][$key];
            }
            try {
                $pdo = new PDO(DSN, USERNAME, PASSWORD);
                $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                $sql = (function ($is_column) {
                    $INSERTFIRST = null;
                    $INSERTLAST = null;
                    foreach ($is_column as $key => $val) {
                        $INSERTFIRST[] = "$val";
                        $INSERTLAST[] = ":$val";
                    }
                    $INSERTSQL = "(" . implode(",", $INSERTFIRST) . ")values(" . implode(",", $INSERTLAST) . ")";
                    $UPDATESQL = null;
                    foreach ($is_column as $key => $val) {
                        $UPDATESQL[] = "$val = :$val";
                    }
                    return "INSERT INTO " . TABLENAME . $INSERTSQL . " ON DUPLICATE KEY UPDATE " . implode(",", $UPDATESQL) . ";";
                })($is_column);

                $stmt = $pdo->prepare($sql);
                foreach ($is_value as $key => &$value) {
                    $is_type = ($key === "test3" || $key === "test13") ? PDO::PARAM_INT : PDO::PARAM_STR;
                    $stmt->bindValue(":$key", $value, $is_type);
                }
                $this->result["sql"] = $stmt->execute();
            } catch (\Throwable $th) {
                //throw $th;
                $this->result = null;
                print $th->getMessage();
            }
        }
        print json_encode($this->result);
    }
}

//RUN...POST DATA
if (isset($_POST["csrf_token"])  && d_xss($_POST["csrf_token"]) === $_SESSION['csrf_token']) {

    $_SESSION["offset"] = (int)d_xss($_POST["reset_flag"]) === 1 ? null : d_xss($_SESSION["offset"]);
    $filename = d_xss($_POST["filename"]);
    $cnt = (int)d_xss($_POST["cnt"]);

    $column_name = "test1,test2,test3,test4,test5,test6,test7,test8,test9,test10,test11,test12,test13,test14,test15";
    $header_skip = 1;

    $csv = new csv();
    $csv->ini_csv($filename, $cnt)->reader($header_skip)->tbl_save($column_name);
    $csv = null;
} else {
    print "";
}
function d_xss($data){
    $data = strip_tags($data);
    $data = htmlspecialchars($data,ENT_QUOTES);
    return $data;
}
<?php
 // ログインした状態と同等にするためセッションを開始します
 session_start();
 // 暗号学的的に安全なランダムなバイナリを生成し、それを16進数に変換することでASCII文字列に変換します
  $toke_byte = openssl_random_pseudo_bytes(16);
  $csrf_token = bin2hex($toke_byte);
  // 生成したトークンをセッションに保存します
  $_SESSION['csrf_token'] = $csrf_token;
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="Description" content="Enter your description here"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
<title>CSV</title>
</head>
<body>
    <input type="hidden" name="csrf_token" value="<?=$csrf_token?>">
    <span class="h3" id="cnt"></span><br><br>
    <span class="h4" id="read_csv"></span><br><br>
    <span class="h4" id="debug"></span><br><br>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.1/umd/popper.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.min.js"></script>
<script>
    window.onload = function(){
        read_csv(0,1);
    };
    function read_csv(cnt,reset_flag){
        try{
            $.ajax({
            type: "post",
            url: "./assets/php/class_csv.php",
            async: false,
            data: {csrf_token:document.getElementsByName("csrf_token")[0].value,reset_flag:reset_flag,filename:"dummy.csv",cnt:cnt},
            dataType: "json",
            success: function (response) {
                    if(response){
                        cnt = response.cnt;
                        document.getElementById("cnt").innerText = cnt;
                        if(response.data){
                            document.getElementById("read_csv").innerText = response.data[0] + response.sql;
                            document.getElementById("debug").innerText = cnt ===21?response.data:document.getElementById("debug").innerText;
                        }
                        setTimeout(function(){read_csv(cnt)},0);
                    }
                }
            });
        }catch(e){
            console.warn(e);
            read_csv(cnt);
        }
    }
</script>
</body>
</html>

タグ

0, , 7, 8, CSV, fgetcsv, github, null, php, PHPCODE, qiita, SQL, アクセス, エラー, コード, こちら, コマンド, これ, ご使用, ご自身, ダウンロード, ちょ, テーブル, ファイル, ブログ, リンク, , 一部, , , 今日, 保存, 動作, 参考, 変更, 実行, , 方法, 日差し, 昨日, 有言実行, 注目, 環境, , 簡単, 記載, 雛形,

先日、サーバーを移行しました。AWSさようなら。

2022.06.30

Logging

おはようございます。初夏らしいですが初夏? 増暑です…😆。映画、SLAM DUNKが待ち遠しいです。

其れはさておき、サーバーをAWSからさくらVPSサーバーに移行しました、迷っている暇は無かった・・どんどんと経費がかさむので止む得なく急遽、平日の休みを使用してサーバーを移行しました。移行したんだけど、少しミスってアクセスの多いサーバーを見えなくなるという現象が出てしまいました。40分ほど閲覧できなくなってしまっていた。

結構焦りますよね。

閲覧できない状態が数時間とか続いたら大変ですよ本当に…。仕事では失敗したくないなって思います。今回の反省点はやはりサーバー移行すると何かしら環境が違うので動かなかったりする。

そういう時は落ち着いて深呼吸でもして、ログを見ることが大事、結局のところログに答えが載っていることが多いです。今回もそんな感じでした。

因みに以前書いた、サーバー移行時にscpを使う方法。これはFTP使用するよりも時間短縮になるから覚えていたほうが賢明です。

scp -irp /~/example.pem /var/www/html/* root@example.com:/var/www/html/
# scp -irp [鍵.pem] [転送元ディレクトリ] [ユーザー@ホスト:転送先ディレクトリ]

タグ

40, AWS, DUNK, SCP, SLAM, VPS, アクセス, こと, サーバー, さくら, ところ, ミス, ログ, 今回, 仕事, 以前, 休み, 使用, 先日, 其れ, 初夏, 反省点, , 大事, 大変, 失敗, 少し, 平日, 感じ, , 方法, 映画, , , 本当, 深呼吸, 状態, 現象, 環境, 移行, 経費, 閲覧,

物体認識ではラズパイが必ず必要でもないとふと思った。

2022.06.24

Logging

おはようございます。記事の投稿の時間帯から変えようか悩んでいます。

さて、今日のお題は「物体認識ではラズパイが必ず必要でもないとふと思った。」です。Iot(Internet of Things)で脚光を浴びたのが小さなパソコンとも言われるラズベリーパイです。これを使用して温度計や湿度、気圧などを測ったりそれを記憶出来たりします。ラズパイにカメラを接続し機械学習させて物体認識なども可能です。

ただ、物体認識に言えばお使いのWindowsやMacの入ったパソコンでもそういや出来てしまうなと思ったので、それを記事にしました。物体認識で重要なのはやはり学習なのですが世の中にはオープンソースで機械学習をある程度してくれているモデルが出回っています。なので、そちらをベースに再学習させる事により学習が可能かと思います。

物体認識するためには、WEBカメラが必要ですし、機械学習が出来る環境構築も必要になります。例えばTensorFlow(テンソルフロー)が動作出来る環境だとか、、、因みに古いパソコンでもTensorFlow(テンソルフロー)のバージョンを変えれば動きます。githubのmasterを使用せず古いバージョンを使いさえすれば。

タグ

Internet, IoT, Mac, of, te, Things, web, Windows, オープン, お使い, カメラ, これ, ソース, そちら, それ, ため, はい, パソコン, ベース, モデル, ラズ, ラズベリー, , , , 今日, 使用, 可能, 学習, , 必要, 投稿, 接続, 時間, 構築, 機械, 気圧, 温度計, 湿度, 物体, 環境, 脚光, 記事, 記憶, 認識, 重要, ,

Windows10~起動時にアプリ(ソフト)を自動起動させる方法です。

2022.06.23

Logging

おはようございます。隠しフォルダーが見える環境です。

さて、今日のお題はITエンジニアなら朝飯前のことだと思います。「Windows10~起動時にアプリ(ソフト)を自動起動させる方法です。」知らなかったら恐らくとても運の良いITエンジニアかと思います。方法を箇条書で記載しますねーーー😌。

  1. 隠しフォルダが表示できるようにエクスプローラーの設定を変更します(ググって)。
  2. 下記のフォルダ場所まで移動します(ユーザー名はご自身の環境によって違います)。
  3. 移動したフォルダにご自身が自動起動したいアプリのショートカットリンクファイルをコピペ(コピーアンドペースト)します。
  4. 再起動してみてアプリが自動起動している事を確認する。
C:\Users\ユーザー名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

職場のPCが変わったりした時は必ず最初にやっていた作業になります。これをすることで出社しPC立ち上げ後、アプリの立ち上げなどは全くしなくて良くなります。因みにショートカットリンクにパラメーターを与えてあげることで、もっと短縮できる可能性があります。そこは割愛します。

タグ

10, AppData, IT, menu, microsoft, PC, Programs, Roaming, start, Startup, users, Windows, アプリ, アンド, エクスプローラー, エンジニア, こと, コピー, コピペ, ご自身, ショートカット, ソフト, ファイル, フォルダ, フォルダー, ペースト, ユーザー, リンク, 下記, , 今日, 再起動, 場所, 変更, 方法, , 朝飯, 環境, 確認, 移動, 箇条書, 職場, 自動, 表示, 記載, 設定, 起動, , ,

サーバーの引っ越しのヒントです。いや答えですねw😌

2022.06.16

Logging

おはようございます。あと一ヶ月もすれば炎天下の下でお仕事をする人もいるでしょう。大変ですね。

昔はよくサーバーの引っ越しを仕事でしていました。代わりに誰か出来る人もいなかったので自分が行っていましたが、サーバーの引っ越しほど時間のかかる仕事はありません。

scp -r -p /var/www/html/ user@example.com:/home/user/www/
scp [コピー元のファイル] [コピー先のユーザー名@コピー先のホスト] [コピー先のファイル]

何より責任、重大ですから色々と経験して思ったのは、サーバーの移行作業後に何らかの「動かない」というバグとりを速やかに行えるかどうかが大事かと思います。それはある意味、経験が物を言う世界かもしれません。こんなズブの素人でも少しだけサーバーの事を理解できたので、今思えば良いことなのかもしれません。

因みに上記に記述しているコマンドを旧サーバー環境で実行すれば新サーバーへファイル転送出来ます。いちいちFTPソフトでダウンロードしてアップロードするという事を行わなくて良いです。そして何よりパーミッションやタイムスタンプまで引き継いでくれるので便利かと思います。

タグ

-p, -r, com, example, home, html, SCP, user, var, , www, お仕事, こと, コピー, コマンド, サーバー, それ, どり, バグ, ヒント, ファイル, ホスト, ユーザー, , 上記, , 世界, , , , 仕事, 何より, 作業, 大事, 大変, 実行, 少し, 引っ越し, 意味, , 時間, 炎天下, , 理解, 環境, 移行, 答え, 素人, 経験, 自分, 色々, 記述, , 責任,

そろそろPHPのバージョン引き上げしないと駄目。WPの話。

2022.06.09

Logging

おはようございます。お腹が痛くなるとそれが一週間ほど続いたりします😭。

今日のタイトルは「自分のサーバーのPHPバージョンをアップさせない駄目。WPの話」です。いつの間にかWordPressのバージョンが6になりましたよね。いまの推奨環境ではPHP7.4以上になっています。ワードプレスのロードマップがどうなっているかは知りませんが、そのうちPHP7.4は非推奨になり何れ動作しなくなることは目に見えているので、近々、PHPのバージョンアップを行いたいと思います。

その際はサーバーを停止することもあるので、表示されないという事象が起こる可能性があります。

尚、cgi-binを使用して動かすようになると思います。エンジンエックスでcgi-binを使用するのは初めてですので、長い間、サーバーが不安定な状態になるかもしれません。

タグ

6, 7.4, cgi-bin, php, WordPress, wp, アップ, いま, うち, エックス, エンジン, お腹, こと, サーバー, それ, タイトル, バージョン, プレス, マップ, ロード, ワード, , 不安定, 事象, 今日, 何れ, 使用, 停止, 初めて, 動作, 可能性, 推奨, 状態, 環境, , 自分, 表示, , , , 駄目,

先を読む。未来を読む。

2022.05.31

Logging

おはようございます。5月も最後ですね、今年は梅雨入りしても即、梅雨明けするじゃないかって思っています。それがぐらい晴天の日が多い気がします。

今日のお題は「先を読む。未来を読む。」です、この力は何だか人より自分は強い気がします。そんな自分が今、未来はこうなると思っているのは、プログラマーという職は数十年後にはなくなっている気がする。コードはAIが自然言語から理解し生成してくれるので、AIが書いたコードを修正する人や正しく機能しているかなどを修正する人が必要になるぐらいなる。

デジタルの価値は限りなくZEROに近くなると思います。誰でもサービスが創り出せる世の中が到来する。これからはプラットフォームやコミュニティーを作れる人のほうが将来性があると思っていて、デジタルを知っていてそれを活かしつつ人との繋がりを提供するそういう環境やサービスを提供するほうが良いと考えている。昔も今も人は欲している。特に同じ考えを持った人々と語り合いたいと思っているので、デジタルを入り口にそういう環境を提供する人が生き残っていくだろうと。

banvox – open your eyes (feat. core mc)

自動運転だけが走る世の中になる、これは数十年先の話だけど恐らくそうなる。そうなったら殆ど交通事故がなくなるので、交通事故が重大事件のように放送されるだろうな。

自分たちが生きているうちに若返りが出来るようになる。たぶん、数年後には若返りの方法は発見され治療法が確立されるのに数年かかると思うけど、若返りは可能になると思います。それも注射一本で効果が現れると思います。これで世の中、大きく変わる特に日本は後期高齢者社会だったものが・・・、大きく変わると思います。

自分が考える未来を箇条書きに書いてみました…。こんなの当たらないよとか、失笑するかも知れませんが、多分これ。

タグ

5, AI, ZERO, コード, コミュニティー, これ, サービス, それ, デジタ, デジタル, プラットフォーム, プログラマー, , , , 人々, , 今年, 今日, 価値, 修正, , 到来, , 将来性, 必要, 提供, 数十, , , 晴天, 最後, 未来, 梅雨入り, 梅雨明け, 機能, , 理解, 環境, 生成, , 自分, 自然, 言語, , ,

開発環境はクラウドに持つべきか?いなか?悩ましすぎる問題🤔。

2022.05.29

Logging

おはようございます。

今まで開発環境はオンプレでしていましたが、外で開発した時やパソコンを買い替えるとデータなどをそのたびに移行しないといけなくなるという手間が発生したり、今ではあまり起きないのですがデータが消えたりする場合もありますよね。そう思うともうクラウドに開発データを移行しようかなって思っています。

MacBook Pro 14" M1 Pro Review For Programming

いろいろ調べた結果、開発データは手持ちのデータを使用してクラウドを使用する方法はあったのだけども全部クラウドで完結できる方法はイマイチ・・・、クラウドPCの中で開発するしか無さそうですね。実際、クラウドPCを使用したことがないのでなんとも言えないですが、それだと遅延などが発生しそう。

よってこの方法がベストかと思いました。

  1. 個人開発なのでローカルのデータをクラウドサーバーに転送後、削除。
  2. VScode拡張機能のsftpをインストールしてリモートでサーバーに接続。
  3. リモート側のデータを直接修正する。
  4. デプロイしたい場合はデプロイしたいサーバーへ転送。

因みにこんなサービスあるにはあります。githubを使用したりして・・・。

タグ

PC, SFTP, VScode, いなか, いまいち, いろいろ, インストール, オン, クラウド, こと, サーバー, それ, たび, データ, パソコン, プレ, ベスト, リモート, ローカル, , , 使用, 修正, 個人, 全部, 削除, 問題, 場合, , 完結, 実際, 手持ち, 手間, 拡張, 接続, 方法, , 機能, 環境, 発生, 移行, 結果, 転送, 遅延, 開発,

ゲームみたいに限界突破は簡単には出来ないけど何か😌

2022.05.09

Logging

おはようございます。

今日のお題は「ゲームみたいに限界突破は簡単には出来ないけど何か」。技術が必要とされている環境で自分の技術がそれを満たしていないことってあると思います。それで挫折する人も多くいると思いますが、どうやって限界突破を超えて改な技術を身に着けることが出来るか。

簡単に言えば毎日の鍛錬しかない、近道もない。ただ、勉強することや技術のために試行錯誤しながら身につけるしか無く、それが今日明日で身につく保証もないのです。もともと能力のある人ならそれほど時間をかけずに改な能力を身につけることが出来るかも知れませんが、凡人だとそうもいかない場合もあります。

FINAL FANTASY XVI “AWAKENING”

こんな事を書いたのは、自分もプログラムを勉強していて何度も壁にぶち当たった事がありました、結局、自分で勉強して身につけるしか無く誰かに助けてくれるわけでもないのです。

何故ならプログラムって数学みたいなもので自分で意味を理解しないと使いこなす事ができないようになっていたりします。なので、勉強や鍛錬しか限界突破することは出来ません。

そこの業界で仕事をしたいのならばやはり、頑張るしかない。でも、精神が蝕むまで頑張るのは辞めましょう。悔しい気持ちもあると思いますが、そこは諦めて新たなステージに目を向けたほうが賢明かと思います。今までやってきたことを全然活かせない職場に飛び込むのも良いかも知れません。

タグ

ゲーム, こと, それ, ため, プログラム, もの, わけ, , , 今日, , 何度, 何故, 保証, 凡人, 勉強, 場合, , 必要, 意味, 技術, 挫折, , 数学, 明日, 時間, 毎日, 理解, 環境, 突破, 簡単, 能力, 自分, 試行錯誤, 誰か, , 近道, 鍛錬, 限界, ,

デモ55ajax=jqueryを使わずに非同期通信するのが普通に。

2022.05.03

Logging

おはようございます。

祝日が始まりましたね、お休みの方も多いかと思います。

そんな中、連休からプログラミングの勉強を始めようと考えている方もいるかと思いましたので、フロントエンドエンジニアがバックエンドエンジニアとの連携で一番初めにぶち当たる壁である、非同期通信のコードを書きました。コードをコピペして階層など合わしてご自身の実行環境で実行してみてください。この頃ではフロントエンドエンジニアの方は非同期処理でコードを書いているので、非同期という言葉を聞くことも多くなったと思います。

非同期処理は処理の結果を待たずして次の処理を実行することです、非同期通信も同じです。バックエンド側に処理を問い合わせて処理の結果は待たずして行います。結果も順番に帰ってくる訳では無いのでフロント側で処理するときに注意も必要になります。

<!DOCTYPE html>
<html lang="ja">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <button id="api">非同期通信</button>
    <script>
        document.getElementById("api").addEventListener("click", api);

        function api() {
            let data = [];
            data.push({"name":"樹龍"});
            console.log(param(data));
            fetch("./api.php", {
                method: "POST",
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded'
                },
                body:param(data)
            }).then(
                response => response.json()
            ).then(data => {
                console.log('data', data);
            }).catch(error => {
                console.log('error', error);
            });
        }
        function param(data){
            let str = [];
            for(key in data){
                for(keyname in data[key]){
                    str.push(keyname +"="+ encodeURIComponent(data[key][keyname]));
                }
            }
            return str.join("&");
        }
    </script>
</body>

</html>
<?php
$name = htmlspecialchars(strip_tags($_POST['name']));
$response['res'] = $name;
print json_encode($response);

タグ

55, ajax, DOCTYPE, gt, html, jquery, lang, lt, quot, エンジニア, エンド, お休み, コード, こと, コピペ, ご自身, デモ, とき, バック, プログラミング, フロント, , 処理, 勉強, 同期, , 実行, 必要, , 普通, , 注意, 環境, 祝日, 結果, 言葉, , 通信, 連休, 連携, 階層, , 順番,

今頃になってdocker(ドッカー)を勉強していたりしている。

2022.04.30

Logging

おはよう御座います。4月も今日が最後になってしまいました。

皆さんGW(ゴールデンウィーク)は何処か行きますか?、自分はしれっと仕事しているかも知れません。明日は休みですが・・・。

さて、今頃になってdocker(ドッカー)を勉強していたりしてします。dockerとはなんぞやという人はエンジニアでは恐らくないと思います😭。知らない方はググってくださいな。

今までdockerなんて使わなかった、バーチャルボックスがあれば何でも出来ると今でも思っていますが、まぁ一応、dockerも触らないといけないなとか思いましてdockerを始めました。

dockerでイメージを作ってdocker Hubで公開しようと思います。公開する内容は、PHP5系から8系までの環境を構築出来る提供するつもりです。

公開したら追記としてURLを記載しますので、しばしお待ち下さい。来月の半ばまでには構築出来る環境を提供するつもりです。

尚、dockerのCUIなどの操作方法はこちらを参照すると良いですよ。

追記出来ました(5月を待たずして):https://hub.docker.com/r/zip358com/rockylinux-php-56-81-apache

docker pull zip358com/rockylinux-php-56-81-apache
docker run -d -p 80:80 --privileged --name 任意のコンテナ名 zip358com/rockylinux-php-56-81-apache /sbin/init

cgi-binを見てください。PHP5.6からPHP8.1まであります😌。

Apacheの設定、php-cgiを使用する方法はこんな感じです😀

<Directory "/var/www/cgi-bin">
    AllowOverride All
    Options FollowSymLinks
    Order allow,deny
    Allow from all
</Directory>
Action php-cgi-7.1.9 /cgi-bin/php-cgi-7.1.9
<Directory "/var/www/html/xxxx.site">
    Options +ExecCGI
    AddHandler php-cgi-7.1.9 .php .html
    AddType application/x-httpd-php .php
</Directory>

タグ

4, 5, 8, docker, GW, Hub, php, url, イメージ, エンジニア, お待ち, カー, ゴールデンウィーク, しれっと, つもり, バーチャル, ボックス, , , 今日, 今頃, 仕事, 休み, 公開, 内容, 勉強, 半ば, 提供, , 明日, 最後, 来月, 構築, 環境, 皆さん, 自分, 記載, 追記,

ITの仕事から遠ざかって数ヶ月、今思うこと。

2022.04.25

Logging

おはよう御座います。

たまには自分の近況を書いてみます。

ITの仕事から遠ざかって数ヶ月、今思うことは今の環境はとても良いと感じます。職業や職場を変えると、こうも違うのかと思う反面、IT技術で問題解決出来そうな場面を目にすると「こうすれば良いじゃね」と思う事もあります😌、しかし何も言わずに坦々と仕事をしています。

ITに戻りたいなと思う反面、このまま、この職場でいる自分も想像出来ます。でもお給与はかなり低くなりました。一番もらっていた時の手取りの半分ぐらいになっています。もし家族(子)が居たら恐らくこの職場で働くという選択肢はなかったと思います。

環境は良いです、会社としてもしっかりしているから潰れるという心配も無いじゃないかなって思っています。ですがいろいろと悩んでいます、それが本音です。

https://www.youtube.com/shorts/UxUe2JKxw0E

因みにニートだった時代は投資信託などや株の運用などやクラウドソーシングサイトで引き落としを相殺していました。そして引き落とし額も必要最低限にしていました、現在も基本その水準のまま生活しています。変わったのはお給与される様になったことです。毎月の引き落としの差し引いた額は貯蓄預金や投資信託へ廻せるようになった事です。徐々に最低レベルの固定費を中程度までに回復させたいなとは思っていますが、いろいろと入用です😌。夏頃まではマイナス運用かなって感じですね。

タグ

IT, いろいろ, かなり, クラウド, こと, このまま, サイト, ソーシング, それ, たま, ニート, , , 仕事, 会社, , 半分, 反面, 問題, 場面, , 家族, 心配, 想像, 手取り, 技術, 投資信託, , , 時代, 本音, , 環境, , 相殺, 給与, 職場, 職業, 自分, 解決, 近況, 運用, 選択肢,

シン・未来予測を読んでみました。読了しての感想などを書いてみた。

2021.11.19

Logging

ひろゆきのシン・未来予測」を読んでみました。読了して今、感想を書いています。一番、衝撃的だったのは20代の格差です。これはTweetした内容を読んでいただければわかるかと思いますが、かなりの格差です。自分は20代から貯蓄預金はしておいたほうが良いと思います。唯、一人暮らしをしていると中々、難しい人が多いとも感じます。一人暮らしで貯蓄預金が出来るのは大企業でも就職しないと難しいのではないかとも思っています・・・。

この内容は本の中盤辺りに書かれているものです、その後、自分たちの世代のことやメディア、大学大倒産時代などや環境問題などもひろゆきさん視点で書かれています。全体を通して読みやすい内容になっていたと思いますし、情報弱者が読むと得になる内容だと思います。書かれた内容を大体知っていたとしても文章で改めて読むことにより、日本は結構下り坂なんだなという事を俯瞰的に理解できて良いです、特に老後に備える資金はないと老後もずっと働かないといけなくなるだろうなという事がわかります。そして2000万円問題の計算式ってこういう事かというのも分かって良かったです。自分の場合、逆算すると2000万円では足りないという事がわかりました。

そして自分は今のままでは結構やばいなと理解しました。

タグ

20, Tweet, かなり, こと, これ, シン, ひろゆき, メディア, もの, 一人暮らし, 下り坂, 世代, 中々, 中盤, 予測, , , , 企業, 俯瞰, 倒産, 全体, 内容, 問題, 大学, 就職, 弱者, , , 情報, 感想, 文章, 日本, 時代, 未来, , 格差, 理解, 環境, 老後, 自分, 視点, 読了, 貯蓄, 資金, 預金,

iPhone13を買わない人です?、理由はコレコレさんですから。

2021.09.17

Logging

iPhone13を買わない人です?、理由はiPhone13の機能があまり向上していないとか、iPhone12のアップデート版だとかではなくて、iPhone13に買い替えてもその性能を引き出すことができる環境にいるかと言えば違うからという理由からです。性能を引き出すことが出来る環境というのは5G環境下にいないので慌てて買う必要なくね?という理由からiPhone14以降で自分は考えています。

【iPhone13】新機能は?バッテリーと動画の性能向上 新商品お披露目

あと自分としてはiPhoneも新ipad miniのようにUSBタイプCに変えてほしかったなという思いもあります。おそらくユーザーからタイプCは好評価を得ることが出来るので、iPhoneもゆくゆくはタイプCに置き換わると思います。

ずばり、iPad miniが最も買いです【Appleイベントまとめ】

iPhoneからアンドロイド端末に変えようかなとか思ったりしていますが、iPhoneから新iPhoneにデータを移行するのにも時間がかかるのにアンドロイド端末に移行するとなるとますます、面倒くさいのでアンドロイド端末はアプリなどの動作テスト用にしか使わないですね。

トイウコトデ、今回のiPhone13に自分が買い換えることは無さそうです・・・。もしかしたら、こっそりiPhone13に変えているかもしれないけどね。

タグ

12, 13, 14, 5, iPad, iPhone, mini, USB, アップデート, アンドロイド, こと, コレ, タイプ, データ, ユーザー, , 向上, 性能, , 時間, 機能, 理由, 環境, 移行, 端末, 自分, 評価,

老後の年金支給額見たら・・・老後が無理ゲーだと思った。早く働かないと貧困層に落ちそうな予感さえ。

2021.08.31

Logging

ジェニーハイの夏嵐という曲が好きで何度も聞いていたら、やっぱり飽きてしまいました。音楽って消費するという感覚がありますよね。どんな良い曲でも毎回聞いていると飽きます。逆に飽きのこない曲を作るとロングヒットしそうですね。

ジェニーハイ「夏嵐」

氷河期世代で自分みたいな環境にいるひとも中にはいると思いますが、先日ツイートした通り、現在の歳で国民年金を払うのをストップすると自分は65歳に貰える年金は3万8千円ということになります・・・?。年金って確か偶数月に2ヶ月分を貰えるようになっているらしいけど、二ヶ月分を足しても一か月分の生活費も捻出できないような気がします。もし65歳までに大地震でも起きたら、老後悲惨な事になりかねない気がしました。

タグ

こない曲, ジェニーハイ, , ひと, ロングヒット, 何度, 偶数月, 国民年金, 夏嵐, 大地震, 年金, 感覚, , , 氷河期世代, 環境, 生活費, 老後, 良い曲, 通り,

java言語を勉強していて結構つまずく。ゴリゴリとコードを書きたいな。

2021.08.19

Logging

家のクーラーの付いている環境にいると日中が寒いぐらいですね。洗濯物を干すのに自分の部屋が活躍しているのでクーラーが切れないのです。早くお天気の日にならないものか??

さて、java言語を今、勉強していると書きましたが本当にメチャクチャな勉強方法なので、基本的な順番をすっ飛ばしているような気がします。コマンドラインでoとxを入力出来るものを作りました。それ以外を入力すると再度、入力してもらうという単純なアルゴリズムですが、PHP言語のような文字判定をしていたので三項演算子で正しいデータを入力しているのに否定を返すように処理が動いてしまってつまずきました。

こんな感じで毎日、java言語に触れていたら「習うより慣れよ」という感じで日々、覚えていけるのではないかなと思います、今回躓きは初心者の初の字ぐらいの部分だと思いますが、こうやって覚えていくしかないなと思います。

あるアプリ会社を一年ぐらい前に受けたのですが二次面接で不採用になりました。その会社の紹介サイトを先日、拝見したら未経験の人を採用している紹介文を見て絶句しました。なんだろうか、この行き場のないやるせない気持ちは・・・と、そんなわけでjava言語のコードを記載します。

java勉強中
import java.util.Arrays;
import java.util.Scanner;
import java.util.function.BiFunction;
import java.util.function.Consumer;
public class Ox {
    public static void main(String[] args) {
        String [][] ox_list = new String[3][3];
        int x_max = 3,y_max = 3;
        BiFunction<Integer,Integer,Boolean> md = (x,y)->{
            Scanner kigo = new Scanner(System.in);
            System.out.printf("縦%d 横%d 番目の記号を入力してください{o,x}\n",y,x);
            ox_list[y][x] = kigo.next();
            return ((ox_list[y][x].equals("x") || ox_list[y][x].equals("o"))?true:false);
        };
        Consumer<String> Oxview = (s)->{
            System.out.println(s);
            String str = "";
            for (int i = 0; i < y_max; i++) {
                for (int ii = 0; ii < x_max; ii++) {
                    str+=  "|" + ox_list[i][ii] ;
                }
                str+= "|\n";
            }
            System.out.println(str);
        };
        for (int i = 0; i < y_max; i++) {
            for (int ii = 0; ii < x_max; ii++) {
                if(!md.apply(ii,i)){
                    System.out.println("入力が不正です");
                    ii = (ii-1)>=0?(ii-1):-1;
                }
                Oxview.accept("入力中");
            }
        }
        Oxview.accept("最終結果");
    }
}

タグ

java, php, アプリ, アルゴリズム, クーラー, コード, コマンド, それ, データ, めちゃくちゃ, もの, ライン, , , , 今回, 入力, 再度, 処理, , 初心者, 判定, , 勉強, 単純, 否定, 天気, , , 感じ, 文字, 方法, , 日々, 日中, 本当, 毎日, , 洗濯物, 活躍, 演算子, 環境, 自分, 言語, 部分, 部屋, 順番,