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

※この記事は著者が40代前半に書いたものです.

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

OFUSEで応援を送る

タグ

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

Kotlin言語をはじめて使用してアプリを作ろうとしています。

2021.11.09

Logging

Kotlin言語をはじめて使用してアプリを作ろうとしていますが、こちらでアプリのお披露目をする事は考えていません。自分の本名のドメインで紹介することになると思います。一度、桁読み漢字変換はfulluter言語で作ったことがあるのですが、リリースはしていません。今回は作ってリリースまで行いたいと思っています。それ程、難しいことはないと思っているので、リリースは数週間で出来ると思います(審査も含めて)。

kotlin言語をはじめて使用してアプリを作ろうとしています。

何故、Kotlin言語でアプリを開発しようと思ったか?、簡単に言えばiosにも移植出来るとのことなのでKotlin言語を選びました、そしてそれなりに勉強になるかなぁと思ったからです。動画を見てもらえれば分かる通り、いきなり動的な処理で制御しています。たぶん、いろいろな事を飛ばして勉強しています。参考書も持っていないのでサイトとYOUTUBEで調べつつ理解していこうと今、奮闘中です。今回書いた、ソースコードも調べたものです。

package com.example

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.text.Editable
import android.widget.EditText
import  android.text.TextWatcher
import android.util.Log
import android.widget.TextView

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        var editText = findViewById<EditText>(R.id.editTextTextN1)
        var textview = findViewById<TextView>(R.id.textView)
        editText.addTextChangedListener(object : TextWatcher {
            override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {

            }

            override fun afterTextChanged(s: Editable?) {

            }

            override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
                Log.d("テキストが入力されました","$s")
                textview.text = s.toString()
            }
        }
        )
    }
}

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

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

OFUSEで応援を送る

タグ

fulluter, iOS, Kotlin, youtube, アプリ, いろいろ, お披露目, コード, こちら, こと, サイト, ソース, ドメイン, リリース, 一度, , , 今回, 何故, 使用, 処理, 制御, 勉強, 動画, 参考書, 変換, 奮闘, 審査, , 本名, , 漢字, 理解, 移植, 簡単, 紹介, 自分, 言語, 調べ, 通り, 開発,

HUNTERxHUNTERの文字が生成できるサービスを作りましたよ。

2021.10.22

Logging

今日はお昼ぐらいから、天気が良くなりましたね、、昨日はどんよりしていて自分のテンションもどんより気味でしたのでブログをお休みしていました。そんな中でも一応、プログラムして一つのサービスを世に出しました?!

さて、タイトル通りHUNTER☓HUNTERの文字が生成できるサービスを作りましたよ。ってお話です。これを作った経緯はこういうサービスは有るには有るけど、精度がいまいちなものばかりだったので作ったわけです。今回は漢字をひらがなに変換する機能は使用していません、理由はレンタルサーバーでは漢字をひらがなにするという処理を自前が出来ないのです、だからAPIに頼る必要があるのです。しかしながら、、、このサービスが軌道に乗り回転数(PV)が上がればAPI制限の上限に達しAPIが使用できない懸念があるのでAPIを使用するのは控えました。

今はそんな事はないのですけどね。そんな理由からハンター文字生成サービスは、あまり負荷のかからない処理にしています。Twitterでシェア出来るので共有して頂けたら幸いです😁。

追記:※漢字で入力してハンター文字に変換できるように対応しています.

https://hxh-moji.com/

追記:HUNTERXHUNTERの作者である漫画家、冨樫先生はいつ連載再開出来るのでしょうかと思っているファンも多いかと思います。自分も首を長くして待っていますが、中々、難しいじゃないかなと…。いろいろな説が出ているのですが、本当のことを知っているのは関係者ぐらいのものでしょう。恐らく病気かなにかの説が正しいような気がします。言えないってことはそういう事なのかなぁって思います。いちファンとしては、期待せずに待つのみですね。

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

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

OFUSEで応援を送る

タグ

API, API制限, HUNTER×HUNTER, PV, Twitter, タイトル通りHUNTER☓HUNTER, テンション, レンタルサーバー, 上限, 作者, 冨樫先生, 懸念, 漢字, 精度, 経緯, 自前, , 負荷, 軌道, 追記,

ネタがなくて九九表なんか作っている訳ではなく。

2021.08.10

Logging

暑い暑い日曜日、台風9号の影響は日曜日の夕方から夜中までかなとか思いながら記事を書いています。因みにこの頃、予約記事のストックが切れそうですね。ネタが思いつく時は一気に数記事書けるのですがネタが出てこないスランプに落ち込むと記事のネタが思いつかなくて書けない日が続くこともあります。

ネタがなくて九九表なんか作っている訳ではなく。単純に自分の頭は九九表がかけた頭になっていたので、そのために作っただけです。計算とかをパソコンなどに委ねていると自分の頭は退化する一方です。暇で何もせずにズゥーっと頭を使わないと呆けるというのは、本当なのかもしれません。

何もしないと漢字は書けなくなるし、基本的な計算することすら出来なくなるのですよね。プログラミングは毎日のようにしているのだけど、それ以外の事は何ひとつしていないので文字を書く時の筆圧具合いがめちゃくちゃだったりもして・・・、本当に基本的なことが全然できなくなってきています。

そういう事で基本の基に立ち返ろうとしているわけです?。

小学生の勉強につまずくとその後、全部の勉強につまずくことになります。なので小学生の勉強はかなり大事だと思います。

因みに今回のjavascriptのソースコードはこんな感じになります。

9×9:九九表はこちらから

https://zip358.com/tool/9×9/

document.getElementById("Q9_select").innerHTML = (function () {
    let str = "";
    for (var i = 0; i <= 9; i++) {
        str += !i ? "<option value=''> " + "選択してください" + "</option>\n" : "<option value=" + i + ">" + i + "の段</option>\n";
    }
    return str;
})();
document.getElementById("Q9_select").addEventListener("change", function (e) {
    let Q = this.value ? this.value : 0;
    let str = "";
    let view_flg = 1;
    for (var i = 1; i <= 9; i++) {
        let ans = Q * i;
        str += "<p class='h2'><span class='text-primary'>" + Q + "</span> × " + i + "= <span class='Q9_ans' style='visibility:visible'>" + ans + "</span></p>";
    }
    str += "<p class='text-center'><button class='h2 btn btn-primary' id='view'>九九の解を<span id='txt'>非表示に</span>する</button></p>";
    document.getElementById("Q9_view").innerHTML = str;
    document.getElementById("view").addEventListener("click", function () {
        let object = document.getElementsByClassName("Q9_ans");
        for (const key in object) {
            if (Object.hasOwnProperty.call(object, key)) {
                const element = object[key];
                element.style.visibility = view_flg ? "hidden" : "visible";
            }
        }
        view_flg = view_flg ? 0 : 1;
        document.getElementById("txt").innerText = view_flg ? "非表示に" : "表示";
    });
});

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

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

OFUSEで応援を送る

タグ

, こと, ズゥー, ストック, スランプ, それ, ため, ネタ, パソコン, プログラミング, めちゃくちゃ, 一方, 九九, 予約, , , 具合い, 単純, 台風, 夕方, 夜中, 影響, , 文字, , 日曜日, , , 本当, 毎日, 漢字, 筆圧, 自分, 計算, 記事, , 退化, , ,

数値を日本語桁数の読み方に変換するWEBサービスを作りました。

2020.06.20

Logging

数値を日本語桁数の読み方に変換するWEBサービスを作りました。リンクは下記になります。何故、作ったのか?、検索すると同じようなサービスがありましたが、リアルタイムに数値を漢字に変換してくれないので自分でリアルタイムで検索できるものを作った次第です、コードはあまりキレイではないし改良できる部分はあります、Qiitaなどに公開しないので良いかと思い変数の命名も適当な感じです。

https://zip358.com/tool/ketayomi/ (?リンク先には数字の読み方 表もあります)

直でリンクに飛んでもらうのも良いですし、無料サービスから試していただくのもありです。これも無料サービスの一環として作りました。それなりに使えるじゃないかなと思ったりしています?。数値を日本語全漢字にするロジックを考えたとき、面倒くさいなと思ったので、、、データとして持つことにしました。

こういうのあまり使う人がいないけど、使う人は仕事などで使用する可能性があるかなとか思ったりしています。こういうニッチなサービスを無料サービスとして公開していけば数撃ちゃ当たるじゃないかと思います。今回の数値を日本語桁数漢字にするサービスは単純なものなので誰でもプログラマーなら出来る範囲だと思います。駆け出しプログラマー、エンジニアでも作れる品物ではないかと…。

次回はもっといろいろな人が使うお手軽サービスを作りたいですね。シェアして頂けると幸いです。

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

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

OFUSEで応援を送る

タグ

qiita, エンジニア, コード, プログラマー, リアルタイム, ロジック, 一環, 命名, 品物, 変数, 手軽サービス, 数値, 数字, 日本語桁数, 日本語桁数漢字, 次回, 漢字, 範囲, , 駆け出しプログラマー,

知っていますか?

2020.06.10

Logging

知っていますか、じぶんの名前に濁点(だくてん)を付けると悲惨な名前に変わることを、、、この事を中学生時代に知った私はかなり嫌でした。名前の漢字はじぶん好きなんですが、読みは実はあまり好きではなかったりします。

名前に反しているのか、これから良くなるのか?どうなんだろう?、こればかりは自分の頑張りというのも関わってくるでしょうし、運もかなりあるかもしれないなというのも、この頃思うところです。

運の良い人はいますよね。何故、運が良いのかわからないけど、、何となく上手く事が運ぶ人がいます。それに関係しているのは努力とかいうよりも人当たりが良い人かなと自分は思います。引き寄せの法則という言葉もあるぐらい、そういうのって有るじゃないかなと。どんなに秀でた才能があっても人との関係が上手くいっていない人はやはり良い人生を歩みにくいと思います。

お金より人との縁が大事ですねと、この頃つくづく思います。

著者名  @taoka_toshiaki

※この記事は著者が40代前半に書いたものです.

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

OFUSEで応援を送る

タグ

お金, かな, かなり, こと, これ, こればかり, じぶん, それ, ところ, 中学生, , , 人当たり, 人生, 努力, 名前, 大事, 悲惨, 才能, 時代, 法則, 漢字, 濁点, , , 自分, 言葉, , 関係, ,