Photo by Ender Vatan on Pexels.com

文字数カウントは奥が深いよ。日本語より𓅇エジプト😇 #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バイトで表現しているとか習っていたのですが、それはカナリ古い知識だったみたいです😇。

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

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

Photo by NEOSiAM 2021 on Pexels.com

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;
}

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

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

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

自分用に短縮URLを作りました。自分以外短縮URLは登録できません。

2022.07.29

Logging

こんばんは、サービスの収益化はなかなかうまく行かない。

さて、今日は数分で開発した自分用の短縮URLです。外出先やスマホで長々とURLを直打ちするのも面倒です、ググるのもめんどくさい。そういう時のためにこういう物を作ったわけです。

https://zip358.com/http://t2t.jp/z
https://yahoo.co.jphttp://t2t.jp/y
https://google.co.jphttp://t2t.jp/g
https://www.youtube.comhttp://t2t.jp/yt
https://www.amazon.co.jp/http://t2t.jp/a
https://www.rakuten.co.jp/http://t2t.jp/r
https://newspicks.com/http://t2t.jp/n
https://www.tohotheater.jp/http://t2t.jp/t
短縮URL対応表

考え方はこんな感じ短縮URLを叩く(入力すると)、ルート場所で処理を行います。そしてあらかじめ登録してあるURLをデータベースのテーブルから参照し、URLの対応表の中にあればダイレクト転送処理を行うという形です。尚、こういうサービスを行なっている。サイトは結構あります、一番老舗はbitly.comです。

因みに短縮URLを登録する画面もあるのですが、そちらのURLはシークレットです。

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

2, 358, ahttps, Amazon, co, com, comhttp, ghttps, Google, ht, http, https, jp, jphttp, newspicks, nhttps, rakuten, rhttps, tohotheater, url, www, Yahoo, yhttps, youtube, ythttps, zhttps, zip, サービス, スマホ, ため, わけ, 今日, 収益, 外出, 数分, , , 登録, 直打ち, 短縮, 自分, 開発, 面倒,

クロスプラットフォーム開発(アプリ)をPythonで行う。

2021.05.21

Logging

PyQt5クロスプラットフォーム開発(アプリ)を行う事が出来るだってさ。ただし、PyQt5は商用利用に縛りがあるのだとか、個人で使用する分には問題なしだということ。CSSとPythonの記述が分かっていればそれほど難しくない難易度かと自分は下記の動画を見て思いました。

Create GUI App with PyQt5 – PART 1
pip install PyQt5

Python:パイソンがインストールしている環境で上記のコマンドを打つことでPyQt5はインストール可能です。あとはコードを書いて実行するだけでアプリが実行されます。

PyQt5の使い方を解説している人がいます。リンク先のように書けばチェックボックスなども設置可能です。因みにコードを一々書くのは面倒だという方はQt Designerと連携することでGUIの設計は楽になると思います。
環境構築を説明しているリンクを貼っときます。こちらでPyQt5のプログラムを使用しQt Designerで開発を行えます。

この頃はクロスプラットフォーム開発も多様化していろいろな言語で開発ができるようになってきてますね。楽になったものだと・・・。

追伸:商業利用でクロスプラットフォーム開発が行いたい場合はPySideを使用するべしです。理由はこちら
https://www.kimoton.com/entry/20181202/1543724518

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

5, css, Designer, GUI, install, pip, PyQt, Python, Qt, あと, アプリ, インストール, えま, クロス, コード, こちら, こと, コマンド, チェック, パイソン, プラットフォーム, プログラム, ボックス, リンク, 上記, 下記, , , 使い方, 使用, 個人, , 利用, 動画, 可能, 商用, 実行, , 構築, 環境, 縛り, 自分, , 解説, 記述, 設置, 設計, 説明, 連携, 開発, 難易, 面倒,

shopifyやBase、EC-CUBEどれが良い??

2020.12.07

Logging

shopifyとBase、EC-CUBEなど簡単にECショップが開設できるサービスが乱雑していますが、どれが良いだろうかと悩んでいる方もいると思うので、簡潔に回答しますとどれでも良いです??。shopifyでは多国籍に販路が増やせるというメリットはあるものの、shopifyは月額費用が発生しますし、最低ランクでは多国籍には対応していないので結局の所、日本だけで商売するというのなら断然、Baseの方が使いやすいです。そして後からshopify使いたいなと思ってからでも遅く有りません。インポート機能があるので商品はすぐに登録できるようになっています。

いろいろ調べていくうちに、EC-CUBEが一番良いじゃないかと思っています。上記のshopifyとBaseなどは簡単にサイトが開設できる反面、ゴリゴリとオリジナリティを持つことが面倒(独自デザインは可能です)、そして何よりIPアドレスで、どのサービスで運営されているのかが分かってしまうところが一番、SEO的にはよろしくない。確かに決済などには信用されるかもしれませんが微妙ですね。

shopifyとBaseしか選択しない場合は、まずはBaseで始めてみて、収益化が出来そうならshopifyに乗り換えるでも遅くないと思います。shopifyはYOUTUBEとの連携する話も出ているのですが、それで収益化が出来る店舗は今まで売上が出ている会社だと思います。

EC-CUBEのマイナス点はオープンソースで運営する場合、ソースコードなどがオープンになる点です。sourceをクローズドで運営したい場合は、EC-CUBEを購入しないといけない点です。1ライセンス、26万円ぐらいします。因みに最新はEC-CUBE4ですが来年あたりにEC-CUBE5がおそらくリリースされます。これがEC-CUBEのマイナス点になります、サイトをゴリゴリとカスタマイズしているとEC-CUBE5に移行するのが結構大変になるということです。

EC-CUBEもクラウドサービスを出していますが、若干お高いお値段かと思います。コレだったら、自分で導入した方がお安いかと思います。

最終的にどのサービスが良いか?
社内にIT人材がいる場合はEC-CUBEが良いでしょう、予算もない場合はBaseから始めるのが安全です。月額の固定費も払えるよという場合はshopifyが良いでしょうというのが自分の見解です。

なお、時代はリスティング広告とSNS活用です、SEOは後付にかなり前からなっているようです、サイトまで誘導してもサイトがしっかりしているサイトでないと中々、売上には繋がらないと思います。なので、やはりどこかでデザイナーにサイトをデザインしてもらうことをオススメします。これからはSNSの地道な努力が大事になると思います、やはり人と人の繋がりだと思います。ネットはそれが躊躇に現れると思います。

因みに自分はshopifyとパートナー契約を結びました、誰でも今の所、パートナー契約を結べるようですね。

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

base, EC, EC-CUBE, IP, Shopify, アドレス, いろいろ, インポート, うち, オリジナリティ, こと, サービス, サイト, ショップ, デザイン, どれ, メリット, ランク, 上記, 乱雑, 反面, 可能, 商品, 商売, 回答, 多国籍, 対応, , , , 日本, 最低, 月額, 機能, 発生, 登録, 簡単, 簡潔, 結局, 販路, 費用, 運営, 開設, 面倒,

ios14のウィジェットをカスタマイズする方法。

2020.09.25

Logging

ios14のウィジェットをカスタマイズする方法を紹介している動画を2つ紹介します。どちらもウィジェットスミス(Widgetsmith)というiosアプリを使用してカスタマイズしています。下記の動画を見ていただければわかるかと思いますが、日本語対応していないので若干、面倒かなと思うかもしれませんが慣れれば簡単です。

ウィジェット定番アプリ「Widgetsmith」の使い方を徹底解説!
【iPhoneホーム画面】iOS14アップデートで秋っぽくおしゃれにカスタマイズ!おすすめアプリ紹介!📱

その他にも、colorwidgetsというアプリもあるそうですね。そのうち、日本語対応のウィジェットアプリがリリースされるとは思いますが、今の処、日本語対応のゴリゴリカスタマイズできるウィジェットアプリはリリースされていないようです。

ウィジェットを「効率的に」設置できる便利アプリをご紹介!

あと自分としてはPaypayの純正のウィジェットが便利だなと思っています。人目で残高確認ができますし、支払いのショートカットとしても優秀かなと思っています。ただ、いま例の問題(不正引き落とし問題・2020/09/25:現在)でチャージが地銀などから出来ない状態が続いているので支払いは控えてます。

〆ios14のウィジェットカスタマイズの方法(手順解説)でした。

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

09, 14, 2, 2020, 25, colorwidgets, iOS, Paypay, Widgetsmith, アプリ, いま, ウィジェット, うち, カスタマイズ, ショートカット, スミス, その他, チャージ, どちら, リリース, 下記, 不正, 人目, , 使用, 便利, 優秀, , 動画, 問題, 地銀, 対応, 方法, 日本語, 残高, 現在, 確認, 簡単, 純正, 紹介, 自分, 若干, 面倒,

鳴子を機械学習で認識させる事が出来たよ!

2020.09.02

Logging

高知県なのでよさこい、よさこいと言えば鳴子を持って踊るがルール。
鳴子を持っているかを判断する機械学習を作ってみようという事で今回の考えが思いつき、早朝から機械学習で鳴子認識させる事に取り組んでみました。

難易度はかなり低いのでそこらへんのITエンジニアなら出来ると思います、出来なければITエンジニアなのかな?と思ってしまうぐらいの難易度かと思います。

大変だったことは教師あり学習なので認識させるのが面倒だった。
鳴子の写真を30枚ぐらい機械学習で認識させました、、、。

今回、使用した機械学習のライブラリはDlib(ディーリブ)というものです、
ググるとインストール方法からプログラム方法まで参考サイトが結構あります。

自分のサイトでは機械学習させた後、静止画を認識させるコードを掲載しときます。

import cv2
import dlib
detector = dlib.simple_object_detector("yosakoi.svm")
image = cv2.imread("yosakoi.jpg")
naruko =detector(image)
for f in naruko:
        print("left, top, Right, bottom : ", f.left(), f.top(), f.right(), f.bottom())
        cv2.rectangle(image, (f.left(), f.top()), (f.right(), f.bottom()), (255,0,0), 2)
print("{} naruko".format(len(naruko)))
photo = dlib.image_window()
photo.set_image(image)
photo.add_overlay(naruko)
cv2.imwrite("yosakoi-naruko.jpg",image)

因みに動画も認識させてみようと思ったのですが、こちらは上手く認識できなかったです・・・。

鳴子の機械学習モデルを置いときますのでご自由に使用ください。
学習したモデルを読み込んで上記のソースコードで試してみてください、尚、リナックス環境で動作します!!?

鳴子機械学習モデル?ダウンロード?

https://zip358.com/ML/YOSAKOI/yosakoi_Model.zip

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

2, 30, cv, detector, Dlib, import, IT, object, qu, simple, インストール, エンジニア, かなり, コード, こと, サイト, そこら, ティー, プログラム, べん, もの, よさこい, ライブラリ, リブ, ルール, , 今回, 使用, 写真, 判断, 参考, 大変, 学習, , 掲載, 教師, 方法, 早朝, 機械, 自分, 認識, 難易, 静止画, 面倒, 高知県, 鳴子,

手前味噌な機械学習!?。

2020.09.01

Logging

分類分けで機械学習教師ありのモデルを作り、新たなデータで推測するという一連の過程をやってみたよーーー?
ちなみに分類分けとしてはあまり機能していないだけどね・・・。
何が難しかったか・・・Pythonをサーバで動かすようにするところと・・・何故かすんなり動いてくれなかった。そして機械学習させるデータを作るのがやはり面倒だった、途中から分類分けって感じじゃなく1分類という感覚で重み付けしました。

尚、サンプルとして表示しているのは、機械学習させてモデルを保存させるやつです。この他にもいろいろなファイルがあるのだけど、例えばデータを生成させたりする処理ファイルや保存したモデルから推測させる処理ファイルなどいろいろなファイルがあるのだけど、全て解説するのはちょっと面倒なので今回はこれだけです。

あと質問箱と連携するのは今後の質問によって決めようと思います。いちおう、ほぼその部分も完成しています。コードを手直してそれぞれをファイル連携してゴニョゴニョするという作業が残っています。

追記:きっちり分類分けしてそのデータをansの中に正解解答としていれてあげて学習させるとまぁまぁ良い感じです。

from sklearn.linear_model import LinearRegression
model = LinearRegression()
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
import pickle
X = pd.read_csv("Question.csv", header=None).values.tolist()
ans = []
val = 0
for num1 in range(len(X)):
	for num2 in range(len(X[num1])):
		if float(X[num1][num2])>=0.5:
			val = val + 1
	val = float(float(val) / float(len(X)) * 100)
	ans.append(str(val))
	val = 0
model = DecisionTreeClassifier(max_depth=999)
model.fit(X,ans)
print(ans,"<==>",model.predict(X))
# モデルを保存する
filename = 'Q_model.sav'
pickle.dump(model, open(filename, 'wb'))

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

, Python, あと, いろいろ, コード, これだけ, サーバ, サンプル, それぞれ, データ, ところ, ファイル, モデル, やつ, 一連, 今回, 今後, , , 保存, 全て, 処理, 分け, 分類, 学習, 完成, 感覚, 手前味噌, 手直, 推測, 教師, 機械, 機能, 生成, 表示, 解説, 質問, 途中, 連携, 過程, 部分, 重み, 面倒,

座る立つを繰り返して。

2020.08.13

Logging

座る立つを繰り返していたのですが、この頃お腰の痛みがなくなりかけつつあります。最近までお腰が痛くて長時間椅子に座ることが出来なかったのですが、痛みを感じたら立ち上がり部屋の中をウロウロしてまた座るということを繰り返していたら、痛みが、かなりなくなりました。

こうなるまでに3ヶ月ぐらい時間が経過しているのですが、それでも治ったというのはデスクワークする人には朗報の話かなと思ったので記事として書きました。

椅子に一日中座って作業するというのは傍から見れば楽な仕事だと思われがちかと思いますが、案外そうでもないですね。頭も使いつつ、お腰や肩にかなり負担がかかります。あと電話がある会社はますます面倒でその対応をしつつ実務も行わなければならず結構大変なんです。

その中でも一番、痛めたら致命傷になるのが、お腰です。お腰を痛めると業務にかなりの確率で支障をきたすことになります。なのでなんか痛いなお腰と思ったら絶対軽い運動を行うことを強くお勧めします。お腰を痛めると本当に大変ですからね。

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

, お勧め, かなり, こと, それ, デスク, ワーク, , , 仕事, 会社, 作業, , 大変, 実務, 対応, 支障, 時間, 最近, 朗報, 椅子, 業務, 確率, 経過, , , 致命傷, 記事, , 負担, 運動, 長時間, 電話, 面倒, , ,

大体のYOUTUBERの稼ぎが分かるサイト?

2020.01.23

Logging

これでHikakinTVチャンネルの収益を覗いてみると月の収入が凄いことになっている。もう一生分稼いでいるよね・・・。これぐらい稼ぎ出すと働くことの考え方が変わりそうな気がします。ちなみに自分の登録者数は片手で数えることが出来ます、そのためお金をYOUTUBEから貰えません。1000人以上で且つ再生回数規定の上限を満たしていれば貰えます。長い道のりで挫折しそうですがまずは登録者数を増やしたいと思っていますが増えない。
登録お願いします!!!!!!!!
https://www.youtube.com/channel/UCXjtswW2Yh9vF6jrIkHW9Fg?sub_confirmation=1

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

調べてみたい人はGさんでノックスインフルエンサーYOUTUBE分析サイトなどで検索するとヒットすると思います。ググルの面倒だと思うのでリンクを貼っときますね。 https://jp.noxinfluencer.com/

ちなみにノックスインフルエンサーで公開している収益は上記の動画でも言っている様にあくまでも目安です。

別話:自分のブログ名をググって見るとなんだか似たようなサイトが有りました。「まったりWEB」で検索すると一番に表示されるかと思いきや2番目でした・・・結構凹む。やっぱ一番に表示されたいな。一番に表示されているサイトもさくらサーバで運営されているようですが、自分よりサイトのレタリングが早い。これから5G(ファイブジィー)が普及すればここらへんが上位表示の判断基準から変わっていくと思いますが・・・まだ数年先の話なので今は早くサイトが表示できて情報の質が良ければGさんの評価は良いです。

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

1000, com, HikakinTV, jp, noxinfluencer, youtube, YOUTUBER, インフルエンサー, お金, お願い, ググル, こと, これ, これぐらい, サイト, ため, チャンネル, ノックス, ヒット, ブログ, リンク, 一生, 上記, 上限, , 公開, 再生, 分析, 動画, 収入, 収益, 回数, 大体, 挫折, , 検索, , 片手, 登録, 登録者, 目安, 考え方, 自分, 規定, , 道のり, 面倒,

gitとかgithubとかgitlabを一通り勉強して

2019.06.02

Logging

gitとかgithubとかgitlabを一通り勉強して
githubやgitlabは遠隔でプロジェクト組んで開発する人以外には
必要ないような気がします。
確かにGUIでほぼ面倒な手順は消えてなくなります。
gitとは何かバージョン管理と言われます、
簡単に言えばファイルの世代管理です。
githubやgitlabは何か、リポジトリ管理です。
リポジトリ管理とはなにか、簡単に言えば
バージョン管理を集約したものを管理するものと思ってください。
リポジトリというものを管理したいディレクトリの配下に
置くことでその中のファイルはコマンド打てば
管理下に置くことが出来、世代管理が可能になるということ
ただ、それだけの事です。
ローカルで管理していたものをリモートに置く場合、
プッシュ=アップロード。ダウンロードしたい場合は
プルという事。管理したいファイルはアッドする。
コミットをした時点でファイル履歴となる等など…。
複数人で開発する場合は
グールプを作りその中にユーザを作成し
ローカルからリモートへ接続を行えば良い…
これぐらい覚えとけば良いかなと後はブランチ機能なども
ありますが、この機能を使用すると複雑怪奇になりそうな気がします。
 

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

git, github, gitlab, GUI, アッド, アップロード, こと, コマンド, コミット, それだけ, ダウンロード, ディレクトリ, バージョン, ファイル, プッシュ, プル, プロジェクト, もの, リポジトリ, リモート, ローカル, 世代, , , , 勉強, 可能, 場合, 手順, , 管理, 簡単, 遠隔, 配下, 開発, 集約, 面倒,

σ(゚∀゚ )オレ的速報:基本情報技術者解答生成ツール

2019.03.10

Logging

σ(゚∀゚ )オレ的速報:基本情報技術者解答生成ツール
4月の試験日にお使い頂ければと制作しました。
作った経緯は
自分がスマホからツイートするときに
手入力するのは面倒だったんで
これを作ったのです。
リンク貼っときますね。
https://zip358.com/tool/kihon2/

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

2, 358, 4, com, kihon, tool, zip, オレ, お使い, これ, スマホ, ツール, ツイート, とき, リンク, 制作, 基本, 情報, 手入力, 技術者, 生成, 経緯, 自分, 解答, 試験, 速報, 面倒,

年賀状CSVを作りました。SJISで保存してください。

2018.12.30

Logging

https://zip358.com/tool/nenga/
ブラウザ上で完結しています。
禁則処理などはありません、ただ純粋に入力したものが
CSV形式の文字列で出力されます。
これ何のために使えるかといえば
https://nenga.yu-bin.jp/
こちらのサイトで住所録を登録する際に使用できます。
タイトルにも描きましたがSJISの文字コードで出力をお願い致します、
また、データベースに保持などはしていないため
リロードしてしまうと全てのデータが消えてしまいます。
これを作った経緯。
自分が郵便年賀.jpで登録するのが面倒だったため作りました。

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

358, com, CSV, jp, nenga, SJIS, tool, yu-bin, zip, お願い, コード, こちら, これ, サイト, タイトル, ため, データ, データベース, ブラウザ, もの, リロード, 住所, , 使用, 保存, 保持, 入力, 全て, 処理, 出力, 完結, 年賀, 年賀状, 形式, 文字, 文字列, 登録, 禁則, 純粋, 経緯, 自分, 郵便, , 面倒,

副業はしない方向へ但し!?

2017.11.01

Logging


副業はしない方向へ但し
副収入や運用とかするつもりでいますし、しています。
副業するのが結構面倒くさい、仕事が終わってクラウドソーシングの仕事が請け負えるどうかワカラナイものにチャレンジするよりも、運用とか株式運用とかしている方が自分にはあっているのかなと思えてきた。
運用ではそれなりに収益も出てるからその方が良いかなと。
ちなみに株式運用とか口座は有るけれどまだ始めてはいません。
来年から始める予定でいます。二年ぐらい運用してオリンピックが始まった頃に現金化し、オリンピック後一時期、日本は不景気になるだろうから株価が下がった頃に、じぶんがコレだなと思う銘柄を購入するつもりでいます。
副業することが一番、収入が増えると思いますが本業が終わった後、副業するのは正直な所、面倒です。
体力的にも大変ですし、体を壊したりしたら元も子もないので、今のところ副業する事は一旦、保留にします。
でも、今のお給料で一人暮らしは大変かなと。

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

オリンピック, お給料, クラウド, こと, コレ, じぶん, ソーシング, それなり, チャレンジ, つもり, ところ, もの, 一人暮らし, 一旦, 一時期, 不景気, 予定, , , , 仕事, 但し, , 保留, , 副業, 収入, 収益, 口座, 大変, , , , , 方向, 日本, 本業, 来年, 株価, 株式, 正直, 現金, 自分, 購入, 運用, 銘柄, 面倒, ,

文字の置き換えはコマンドラインから

2017.09.19

Logging


文字の置き換えは「sed」というコマンドを使うことで
文字の置き換えは可能ですが、文字の置き換えを行なった後、
ファイルの保存もしくは上書き保存を行わないと意味が無いので
注意が必要になります。
例えばリナックス系のサーバで文字を置きたい場合、このような感じに
記述すると文字の置き換えが可能となります。

sed -i -e "s/utf8mb4/utf8/g" mysql.sql

結構、大きめサイズのテキスト形式のファイルも難なく
置き換えが可能です、ちなみにWindowsでも同じようにコマンドから
文字の置き換えすることは可能ですが少々面倒なので、リナックスでの
置き換えを自分は推奨します。
ちなみに文字コードがUTF8ではない場合は
文字コードをiconvでUTF8に置き換え後、文字列の置き換えを
すれば良いのでとても楽です。


ちなみにこちらの動画は悪い例↑
?

著者名  @taoka_toshiaki

Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki

タグ

-i, 4, 8, e-, iconv, mb, MYSQL, quot, sed, SQL, UTF-, Windows, コード, こちら, こと, コマンド, サーバ, サイズ, テキスト, ファイル, ライン, リナックス, 上書き, , 保存, 動画, 可能, 場合, 大きめ, 形式, , 必要, 意味, 推奨, 文字, 文字列, 注意, 自分, 記述, 面倒,