@Blog{zip358.com}
日常日誌からプログラムやYOUTUBER紹介、旅日記まで日々更新中です。

T2がコードを10年書いている。Milliseconds-エラー対応編
2021.10.27
今回はエラー対応編です、ミリ秒を逐次表示するだけのコードだけどいろいろなひっかかる部分があるという事が動画を通して分かっていただければ幸いです。動画は高速なのでわかりにくいかもしれません、そんな人はgithubのヒストリーを閲覧ください。制作過程でどのような問題が現れたのかがわかると思います。
徐々に難しくなるかもしれませんが、一応、初心者が見て覚えると盗んで覚える、そして動画を見てプログラムって面白そうって思えるようなものを作っていきたいと思います。基本的に初心者がやってみたいなと思えるものを作っていければなと思っています。
思っていますが、それが出来るかは自分自身、分からないですけどね。なるべく心がけて作っていこうと思います。
https://github.com/zip358/T2_pg/commits/main/Milliseconds/assets/js/main.js
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
10, 2, github, Milliseconds-, いろいろ, エラー, コード, それ, ヒストリー, プログラム, ミリ, もの, 事, 人, 今回, 初心者, 制作, 動画, 問題, 対応, 秒, 自分, 自身, 表示, 過程, 部分, 閲覧, 高速,

Twitterカードを確認するための公式チェックページが便利。
2021.10.26
先週は寒かったですが、今週からまた暖かくなると天気予報のキャスターが言っていたそうですが、どうなることやら。
Twitterカードを確認するための公式チェックページが便利です。そもそもTwitterカードって何と思った方もいると思いますので、簡単に説明するとTwitterでシェアする時にホームページ画面の画像やホームページの説明が表示されるアレです。因みにTwitterカードの設定をしていないとURLだけがタイムラインに流れていきます。

どうやればTwitterカードが設定することが出来るか?答えは結構かんたんです、HTMLタグのヘッダー部分に下記のmetaダグを記載してあげることでTwitterカードが表示されます。因みに今回はフェイスブックでシェアした時にも対応した形のソースコードです。フェイスブックの部分は良いよという方は、その部分は除いてください、また、ご自身のURLや表示したい説明に変更するようにしてくださいな。
<meta property="og:url" content="https://zip358.com/tool/tenji/">
<meta property="og:type" content="website">
<meta property="og:description" content="日本語を点字に変換します。α版です(日本語、英数字などを含むものを日本語点字に変換します)。">
<meta property="og:image:alt" content="tenji-image">
<meta property="og:image" content="https://zip358.com/tool/tenji/images/web-image.png">
<meta property="og:locale" content="ja">
<meta property="og:site_name" content="日本語を点字に変換する機械">
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@zip358com" />
<meta name="twitter:domain" content="zip358.com" />
<meta name="twitter:title" content="日本語を点字に変換します。α版です(日本語、英数字などを含むものを日本語点字に変換します)。" />
<meta name="twitter:creator" content="@zip358com" />
<meta name="twitter:image" content="https://zip358.com/tool/tenji/images/web-image.png" />
最後に上記の設定した後、上手くTwitterカードが機能しているかを確認するためのTwitter公式のチェックページがあります、そちらにチェックしたいページのURLを記入することによりチェックが可能です。
https://cards-dev.twitter.com/validator
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
html, meta, Twitter, url, アレ, カード, かんたん, キャスター, コード, こと, ご自身, シェア, ソース, タイムライン, タグ, ため, チェック, フェイスブック, ページ, ヘッダー, ホームページ, 下記, 予報, 今回, 今週, 便利, 先週, 公式, 変更, 天気, 対応, 形, 方, 時, 画像, 画面, 確認, 答え, 簡単, 表示, 記載, 設定, 説明, 部分,

T2のお問い合わせフォームフロント側が緩く完成、続きは今の所なしかな。
2021.10.26
朝起きは三文の徳ですが・・・。本当なのでしょうか、朝方からお問い合わせフォームのちょこちょこと残りを制作しておりました。
T2のお問い合わせフォームフロント側が緩く完成しました、パチパチ?。この雛形を元に制作してくださいと業者へ持っていくと値引きはしてくれるとは思います。即興ですが一応、汎用性がある作りにしています。
フロント側は実はあまり得意ではないです、全然わからない訳ではないのですがこの頃、コードを書かなかったら抜け落ちている部分が結構あり反省しております?
ソースコードはgithubに置いてありますのでご自由にご使用くださいませ。あまり労力とかかけていないのですが、pushしてもgithubのページに反映されないという事象が何度もありまして反映待ちで結構な時間を取られました。
https://github.com/zip358/T2_pg/tree/main/inquiry
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
2, am-BShXaVuI, com, github, https, push, watch, www, youtube, お問い合わせ, コード, ソース, フォーム, フロント, ページ, 三, 事象, 今, 何度, 作り, 使用, 元, 制作, 労力, 即興, 反映, 反省, 完成, 得意, 徳, 所, 時間, 朝方, 朝起き, 本当, 業者, 汎用性, 結構, 訳, 部分, 雛形, 頃,

プログラム言語レッスン動画じゃない緩いやつ始めます。いやハジメマシタ!!
2021.10.25
プログラム言語レッスン動画じゃない緩いやつ始めます。YOUTUBEでむかし、ズブズブなPHP言語レッスン動画をUPしていました、今回は音声説明も何もないダダ、コードを書いている緩い動画を日々UPしていきます。動画に音楽を添えたスタイルにしようと思いますが、その他の解説や何やら動画に組み込みません。解説は概要に書くか、難しくなってきたらブログ記事にしようと思います。書いたコードサンプルはGithubにでもUPしていきます。
ネタが尽きたら動画UPの頻度が落ちると思います。タイトルは『T2がコードを10年書いている』です、今のYOUTUBEチャンネルを使ってUPしていきます。
トイウコトデ早速UPしました。
初回はIF文で動作するプログラムになります。ソースコードは下記に置いていますのでご自由に使用くださいませ。
https://github.com/zip358/T2_pg
追記:音声での解説を検討中。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
10, 2, com, github, https, if, php, Qq-ctgcMRWQ, UP, watch, www, youtube, コード, サンプル, スタイル, ズブズブ, ソース, その他, タイトル, だだ, チャンネル, トイウコトデ, ネタ, ハジメマシタ, ブログ, プログラム, むかし, やつ, レッスン, 下記, 今, 今回, 何, 使用, 初回, 動作, 動画, 文, 日々, 概要, 解説, 言語, 記事, 説明, 音声, 音楽, 頻度,

PHPのこれは知っているでしょ。知らない人でもエンジニアしている人はいるけどね。#駆け出し
2021.10.14
今日から書く時間、正確には記事のUPする時間を変更しました、変更した理由はソーシャルメディアからの流入を増やそうという事から時間帯を変更しました。PS.この頃、ダイエットの一環で自転車に乗って小一時間運動しています。
さて、PHP言語をこの頃、触っていなかったので、久々にサンプルコードを書きました。前々の会社ではクラスの概念を知らない人がいてその人にオブジェクト指向を丁寧に教えてたのですが、何だか覚えたら何か自分で覚えたみたいに言っていて、やるせない気持ちになった事を覚えています。
今回書いたサンプルコードは?と?は同じコード動きをするものだという事は理解できると思います、プログラムって、最終的に正確な動作していれば問題ないのです。最初からシンプルなコードを書こうとはせず、今の自分のベストコードを書けば良いです。大体、過去のコードを見るともっとシンプルに書けるなと思います、それは自分の技術が成長している証です。そういう事ですので日々努力していれば道がひらけます。
自分みたいにダラダラと生活していると中々、道がひらけないので注意してくださいな。
https://zip358.com/tool/demo45/
以上、現場からでした。
<?php
//?
function foo1 (){
return new class {
public static function hoge(){
print "foo1->class->hoge".PHP_EOL;
}
};
}
foo1()->hoge();
//?
function foo2(){
//return array("hoge"=>"foo2->hoge");
return ["hoge"=>"foo2->hoge"];
}
print foo2()["hoge"].PHP_EOL;
//?
function foo3(){
$obj = new class{
public static function hoge(){
print "foo3->class->hoge".PHP_EOL;
}
};
return $obj;
}
foo3()->hoge();
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
php, PS, UP, エンジニア, オブジェクト, クラス, コード, これ, サンプル, シンプル, ソーシャル, ダイエット, プログラム, ベスト, メディア, もの, 一, 一環, 丁寧, 久々, 事, 人, 今, 今回, 今日, 会社, 前々, 動作, 変更, 大体, 帯, 指向, 時間, 最初, 概念, 正確, 気持ち, 流入, 理由, 理解, 自分, 自転車, 言語, 記事, 運動, 過去, 頃, 駆け出し,

ブラウザに画像をドロップして表示させる部分的な処理(javascript)。これを使って?
2021.10.07
本日はブログを更新するのがいつもよりかなり遅めです?、2000記事を超えてからネタが尽きているようにも思いますが、何とか毎日更新出来ています。ネタが尽きたら少し充電しようかなと思います。
さて、ブラウザに画像をドロップして表示させる部分的な処理(javascript)を作りました。これらを使ってちょっとしたサービスを作っています。まだ完成はしていませんが完成できたらこちらで紹介しようと思っています。尚、部分的な処理なのでドロップしても画像をサーバーに保存させたりすることはないです。
ソースコードはこちらになります。
全体のソースコードはこちらにアクセスしてブラウザのデバッグ機能で見ることが出来ます。
https://zip358.com/tool/demo43/
var obj_input = document.createElement("input");
obj_input.type = "file";
obj_input.accept = "image/png,image/jpeg";
var element = document.getElementById("dropArea");
element.addEventListener("dragover", function(e) {
e.preventDefault();
this.classList.add("dragover");
});
element.addEventListener("dragleave", function(e) {
e.preventDefault();
this.classList.remove("dragover");
});
element.addEventListener("drop", function(e) {
e.preventDefault();
element.classList.remove("dragover");
if (/\.((png)|(jpeg)|(jpg))/i.test(e.dataTransfer.files[0].name) === true) {
var obj = element;
obj.innerHTML = e.dataTransfer.files[0].name;
var imgfiles = e.dataTransfer.files;
obj_input.files = imgfiles;
var fr = new FileReader();
fr.readAsDataURL(obj_input.files[0]);
fr.onload = function() {
obj.style.backgroundImage = "url(" + fr.result + ")";
obj.style.backgroundSize = "cover";
};
}
});
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
2000, createElement, document, inp, input, javascript, obj, quot, var, アクセス, かなり, コード, こちら, こと, これ, これら, サーバー, サービス, ソース, デバッグ, ドロップ, ネタ, ブラウザ, ブログ, 保存, 充電, 全体, 処理, 完成, 少し, 更新, 本日, 機能, 毎日, 画像, 紹介, 表示, 記事,

パスコードをランダムで生成するコードです。JavaScriptで書いてみました。
2021.08.27
今日は朝から蒸し暑さを感じます。あの一週間も続いた雨はどこに行ってしまったのでしょうか?東京では立て続けに悲惨な事件が起きています、報道することにより模倣犯を増やしているような気がします。
さて、今日はパスコード(パスワード)をランダムで生成するコードをJavaScriptで書いてみました。パスコードの強度はそれ程、高くないかもしれませんが一応、パスコードを生成する事が出来ます。ソースコードを書いていてうっかりミスをしてしまいまして、無限ループを発生させてバグ取りに5分ぐらい費やしました。ループした原因は違う変数を判断文で使っていたという初歩的なミスです。この頃はそういうミスは稀ですが・・・その結果、無限ループに陥っていました。
パスコードというものを作ってみて案外簡単に作れるものだと実感。これを作る前にパスコードメーカーを作成するという動画を見ました。githubにソースコードも記載していましたので考え方は参考にしましたがコードは違うと思います。たにぐちさんの動画はvue.jsを使用してパスコードを作っているのに対して、自分はネイティブjsでパスコードを生成しているという違いがあります。
https://zip358.com/tool/PassCode/
document.getElementById("btn1").addEventListener("click", () => {
const mode = {
mode0: !document.getElementById("mode0").value ? 8 : document.getElementById("mode0").value,
mode1: document.getElementById("mode1").checked ? true : false,
mode2: document.getElementById("mode2").checked ? true : false,
mode3: document.getElementById("mode3").checked ? true : false,
mode4: document.getElementById("mode4").checked ? true : false
};
const data = {
txt_cnt: mode.mode0,
txt1: mode.mode1 ? "0123456789" : "",
txt2: mode.mode2 ? "ABCDEFGHIJKLMNOPQRSTUVWXYZ" : "",
txt3: mode.mode3 ? "abcdefghijklmnopqrstuvwxyz" : "",
txt4: mode.mode4 ? "#$&*@+-" : "",
};
// console.log(mode,data);
let str = "";
if (mode.mode1 || mode.mode2 || mode.mode3 || mode.mode4) {
let txt_str = data.txt1 + data.txt2 + data.txt3 + data.txt4;
do {
str = "";
for (let i = 1; i <= data.txt_cnt; i++) {
str = str + txt_str.substr((getRandomInt(txt_str.length) - 1), 1);
}
} while ((() => {
let flg = [];
flg[0] = mode.mode1 ? /[0-9]/.test(str) : true;
flg[1] = mode.mode2 ? /[A-Z]/.test(str) : true;
flg[2] = mode.mode3 ? /[a-z]/.test(str) : true;
flg[3] = mode.mode4 ? /[#|$|&|*|@|+|\-]/.test(str) : true;
return (() => {
let f = true;
for (const key in flg) {
if (!flg[key]) {
f = false;
}
}
return f;
})();
return false;
})() === false);
document.getElementById("view").value = str;
} else {
alert("どれかを選択してください");
}
});
function getRandomInt(max) {
return Math.floor(Math.random() * max);
}
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
5, github, javascript, コード, こと, これ, ソース, どこ, バグ, パスコード, パスワード, ミス, メーカー, もの, ランダム, ループ, 一, 事, 事件, 今日, 作成, 判断, 前, 動画, 原因, 報道, 変数, 実感, 強度, 悲惨, 文, 朝, 東京, 模倣犯, 気, 無限, 生成, 発生, 立て続け, 簡単, 結果, 記載, 雨, 頃,

クリックでON、OFFする表示だけど。無数の書き方があると思ふ?
2021.08.26
不要不急の町内アナウンスが流れる中、この記事を書いています。不要不急ってなんだろう、人によって解釈が違ってしまうし判断もかなり違うような気がします。
さて、今日は凄く単純なJS(javascript)のコードを書いてみました。とても簡単なコードですが素人が書くともっとコード数は増えると思いますし、玄人が書くともっとコードを短く書くことも可能かと思います、例えば自分はonoffという変数をスイッチ代わりに使用していますが、本当はこれもいらないです。そうなるともっとコード数は少なくなります。なぜ要らなくなるかと言えば、表示されている文字で判断することが可能だからです。
今回はそのコードは記載しませんので、ご自身で考えてみてください。
プログラムコードは無数にあります、最初は短く書くという事が難しいかもしれませんが徐々に上達していくものだと思います。なので、手を動かしながら学ぶことは大切かと思います。駆け出しのエンジニアさんはいろいろなコードを見て先人の技を盗んでくださいませ。
このソースコードは美しいという考え方はわかります。数式が美しいと意味は似ているように思えてなりません。数式はわかりませんがね?。
https://zip358.com/tool/demo39/
onoff = 0;
document.getElementById("c").addEventListener("click",()=>{
document.getElementById("view").innerHTML = (()=>{
onoff = !onoff?1:0;
return onoff?"on":"off";
})();
});
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
javascript, JS, off, ON, onoff, アナウンス, かなり, クリック, コード, こと, これ, ご自身, スイッチ, プログラム, もの, 上達, 不要不急, 中, 事, 人, 今回, 今日, 使用, 判断, 単純, 可能, 変数, 大切, 手, 文字, 書き方, 最初, 本当, 気, 無数, 玄人, 町内, 簡単, 素人, 自分, 表示, 解釈, 記事, 記載,

C#でwebview2を使用して情報を収集するためのサンプルコード。
2021.08.22
今日は日曜日ですね。先日は久しぶりにお天気になったので外へ出ていっておりました。これを投稿する日は晴れているでしょうか。
さてjavaを勉強している合間にC#も勉強しております。javaを勉強しているとC#に応用が効くのでとてもやりやすいですね。webview2というオブジェクトをインストールして使用しました、VC#2019で開発しているのですが既存のwebBrowserというオブジェクトは全然というほど役に立ちません。例えばYahooのトップページを開いたらjavascriptエラーのアラートが表示されたりして動作してくれません。おそらくwebBrowserというオブジェクトを使用して何か開発している人はあまりいないじゃないかなと思います。
今回、作成したサンプルコードはYahoo!ニュースのITニュースのタイトルとリンクを収集するものですが、この方法を応用してブラウザの作業を自動化することはそれ程難しくないと思っています。
サンプルコードの一部を記載します=ボタンをクリックする場所に埋め込んだソースコードになります。因みにawaitを使用しているのでボタンクリックにはasyncしてあげる必要があります。
※注意事項としてYahoo!ニュースのソースコードが変わればそれに対応したコードを記載する必要があります。
PM> Install-Package Microsoft.Web.WebView2 -Version 1.0.902.49
async private void button1_Click(object sender, EventArgs e)
{
var result = await webView21.ExecuteScriptAsync(
"(()=>{let obj = document.querySelectorAll(\"#uamods-topics > div > div > div > ul > li > a\");" +
"let str = \"\";" +
"for (let i = 0; i < obj.length; i++)" +
"{" +
"str += obj[i].innerText + \"[\" + obj[i].href + \"],\";" +
"}" +
"return str;" +
"})();"
);
richTextBox1.Text = result.Replace(",","\n").Replace("\"","");
}
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
2, 2019, IT, java, javascript, VC++, webBrowser, webview, Yahoo, アラート, インストール, エラー, オブジェクト, コード, こと, これ, サンプル, タイトル, ため, ドップ, ニュース, ブラウザ, ページ, もの, リンク, 久しぶり, 人, 今回, 今日, 作成, 作業, 使用, 先日, 勉強, 動作, 収集, 合間, 外, 天気, 役, 応用, 情報, 投稿, 方法, 既存, 日, 日曜日, 自動, 表示, 開発,

継続は力なりっていう言葉と好きこそ物の上手なれが合致する人。
2021.08.20
派遣からお仕事の紹介電話がかかってくる事は有り難いことなのだけど、派遣からお仕事は何かダーク感があったりする気がしてどうも一歩前に進めないでいます。そして今の歳から数年間、派遣で働いていて派遣切りにあったときに次の職業は今よりももっと見つからないだろうなって思います。そんなでフリーランスなのか無職なのかわからない位置にいます。
さて、TAKUYAさんという人をITエンジニアなら聞いたことがある人もいると思います。自分のブログでもちらっと紹介した人です、そして自分が一方的に憧れている人でもあります。やっぱ違うなというのは動画を見ていただければわかると思いますが、殆どのコードディングを補完機能を使っていないところなんかを見ると「あぁー」只々、凄いなと思います。ここまで出来るようになるには毎日(昔)、コードを書いている(プログラミングしている)からと好きこそ物の上手なれという事につきますよね。そして継続を惜しまない人はさらに高度な技術を身につけていくのだなと感じます。
動画を見て個人開発者になりたいと感じる人も多いと思います、そして単なるラッキーで個人開発者になれたんじゃなくて努力と失敗などを繰り返して今があるだなと思います。自分もなにか秀でるぐらいの突起した技術や能力を身に着けたいと動画を見てそう思う人は少なからずいると思います。自分で頑張るしかないよね。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
IT, TAKUYA, エンジニア, お仕事, コード, コードディング, ここ, こと, ダーク, とき, ところ, フリー, ブログ, プログラミング, ランス, 一, 上手, 事, 人, 今, 位置, 力, 動画, 合致, 感, 数, 昔, 機能, 次, 歳, 殆ど, 毎日, 気, 派遣, 無職, 物, 紹介, 継続, 職業, 自分, 補完, 言葉, 電話, 高,

java言語を勉強していて結構つまずく。ゴリゴリとコードを書きたいな。
2021.08.19
家のクーラーの付いている環境にいると日中が寒いぐらいですね。洗濯物を干すのに自分の部屋が活躍しているのでクーラーが切れないのです。早くお天気の日にならないものか??
さて、java言語を今、勉強していると書きましたが本当にメチャクチャな勉強方法なので、基本的な順番をすっ飛ばしているような気がします。コマンドラインでoとxを入力出来るものを作りました。それ以外を入力すると再度、入力してもらうという単純なアルゴリズムですが、PHP言語のような文字判定をしていたので三項演算子で正しいデータを入力しているのに否定を返すように処理が動いてしまってつまずきました。
こんな感じで毎日、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("最終結果");
}
}
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
java, php, アプリ, アルゴリズム, クーラー, コード, コマンド, それ, データ, めちゃくちゃ, もの, ライン, 一, 三, 今, 今回, 入力, 再度, 処理, 初, 初心者, 判定, 前, 勉強, 単純, 否定, 天気, 字, 家, 感じ, 文字, 方法, 日, 日々, 日中, 本当, 毎日, 気, 洗濯物, 活躍, 演算子, 環境, 自分, 言語, 部分, 部屋, 順番,

NASと書いてナスと呼ぶ、お茄子のナスではありません。
2021.08.11
台風9が通り過ぎてから、なんだか暑さの中に涼しさを感じるようになりました、朝方とか結構涼しいなと感じますが日中はまだまだ暑い日が続きます。
さてお休みの日にYOUTUBEのオススメに出てきた、「NASを取り付けてみたら快適になった」とかいう動画を二本ほど立て続けに見ました。これをエンジニア目線で見ると古くなったPCにリナックスを入れてNAS化するので良いじゃんとは思ったものの、外からアクセスしたいなと思った時はセキュリティーによほど、自信がないと駄目だなと感じます。
そう思うと市販のNASが良さげに感じますよね。ただ自分はグーグルのバックアップで良いじゃないのと思っているし、ソースコードはgithubなので十分ですよねと思ってます。容量の多い動画を取り扱っているわけでもないので欲しいなという気持ちはあるものの、ここは心を鬼にしてポチるのを辞めました。
いま、ポチりたいのはCドライブを取っ替えたいという事だけです、まだ不安定なSSDを使用しております。
因みにNASってなんだよってのは、動画を見て頂けたら分かると思いますが簡単に説明するとファイルなどの保管庫(バックアップ)です、もしもパソコンのHDDが壊れたりした時にバックアップとして機能するものです。クラウドにファイルなどを預けることがなかった時代は耐久性が今より悪かったので、RAID技術などを使って自宅のPCの守っていたものですが、今はそういう事をする人は少なくなっていると思います。
尚、サーバーやクラウドではRAID技術は今でも使用されております。特に金融機関はそういう技術は強固に作られています、データが消えたら大変なことになりますからね。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
9, com, github, https, NAS, PC, www, youtube, アクセス, エンジニア, おすすめ, お休み, グーグル, コード, ここ, これ, セキュリティー, ソース, ナス, バックアップ, ぽち, リナックス, わけ, 中, 二, 動画, 台風, 外, 容量, 市販, 心, 快適, 日, 日中, 時, 朝方, 気持ち, 目線, 立て続け, 自信, 自分, 茄子, 駄目, 鬼,

案件9割完成して案件に申し込むみたいな事は非効率だけど。
2021.08.05
今日、先日にツイートした案件の締切日ですが・・・(*´ω`*)、未来の自分は案件取れたでしょうか?来月の支払いをペイ出来る額ですので取れると良いですね。さて、案件9割完成して案件に申し込むみたいな事は非効率だけどこの非効率で仕事に応募している理由は、やっぱ安価な仕事でも仕事は仕事ですよという気持ちで取り組んでいます。
因みに今回はこういう案件を作りました。JSのコードの行数は約800行、PHPのコードは約200行で合計、1000行のコードを2日間で書きました・・・?。サイトを動的な処理で動かしているので結構、無駄にコードを書いています。いつもの通り設計はなし、頭の中でさっさと考えて作っております。
もし案件が取れなかったらコードなどを自分の名前のサイト、もしくはgithubに公開します?ので、その時はご利用ください、可能性としては50%ぐらいの確率で請け負う事が出来ると考えています。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1000, 2, 200, 50, 800, 9, github, JS, php, コード, ご利用, サイト, ツイート, ペイ, 中, 事, 今回, 今日, 仕事, 先日, 公開, 処理, 効率, 可能性, 合計, 名前, 安価, 完成, 応募, 日, 時, 未来, 来月, 案件, 気持ち, 無駄, 理由, 確率, 締切, 自分, 行数, 設計, 通り, 頭, 額,

アンフォローが多発しているのでアンフォローした人には自動でお礼コメントする。
2021.07.15
アンフォローが多発しているのでアンフォローした人には自動でお礼コメントするようにプログラミングコードを書いて五分間で処理を実行するようにcrontabに設定しました。ソースコードの一部を記載しますのでご自分の環境に合わしてご自由にお使いくださいませ。尚、TwitterOAuthライブラリを使用しておりますが、ライブラリの導入などに関しては割愛しております。
何故、こんなコードを書いたのか余談。フォロワーさんが外れるのはあまり嬉しいことではないですよね。離れていく人を食い止めようとは思いませんが、最後のお礼コメントぐらい言わせてくださいなという考えの元、今回のお礼コメントをするPHPのコードを書きました。相変わらずソースコードにコメントはありません、悪しからず?。
尚、一回目は一部コメントアウトして実行ください?
<?php
require_once("../vendor/autoload.php");
use Abraham\TwitterOAuth\TwitterOAuth;
if ($argv[0]) {
require_once "./tw-config.php";
$f_data = @file_get_contents("followers.dat");
$f_data = $f_data?explode(PHP_EOL,$f_data):[];
date_default_timezone_set('Asia/Tokyo');
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
$response = $connection->get("followers/ids", array(
'screen_name' => 'zip358com',
'count'=>1000
));
$unFolloewers = array_diff($f_data,$response->ids);
$data = @implode(PHP_EOL,$response->ids);
file_put_contents("followers.dat",$data);
if($unFolloewers){
foreach($unFolloewers as $key=>$val){
$response = $connection->get("users/show", array(
'user_id' =>$val
));
$text = "@".$response->screen_name. " さん 今までフォローありがとうございました(¯―¯?)。{フォロー解除されました? ([atmark]zip358comより自動投稿)}";
print $text;
$connection->post("statuses/update", array("status" => $text . " \n"));
}
}
}
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
aut, crontab, lt, once, php, quot, require, TwitterOAuth, vendor, アウト, アン, お使い, お礼, コード, こと, コメント, ご自分, ソース, フォロー, フォロワー, プログラミング, ライブラリ, 一, 一部, 五, 人, 今回, 何故, 余談, 使用, 元, 処理, 割愛, 多発, 実行, 導入, 最後, 環境, 自動, 記載, 設定,

LINE messaging apiでブログの配信通知するプログラムコード。
2021.07.14
暑い日が続いています、夕立になった後のアスファルトの匂いを嗅ぐと夏だなぁって思うのは自分だけでしょうか?
さてLINE messaging apiでブログの配信通知するプログラムコードを書きましたのでお裾分けします?、コードはいつもの通りコメントなんてものはありません。この2つのコードは何をしているのかだけ、解説しますね。
1つ目のコードは私のLINEチャンネルを友だち追加してくれたら、データベースにuseridを登録するコードです。解除したらuseridの削除もちゃんとしています。
2つ目のコードは私のLINEチャンネルに登録してくれた方々に最新の記事を送信しています。自分は毎日、9時に最新の記事を送信するようにcron登録しました。
一部、defineを設定している部分がありますのでコードに追加してください、よろしくお願いします?
※LINEチャンネル登録よろしくお願いします。
<?php
class line{
function webhook($webhook_object=null){
if(!$webhook_object)return false;
$obj = json_decode($webhook_object);
$type = $obj->events[0]->type;
$userId = $obj->events[0]->source->userId;
$replyToken = $obj->events[0]->replyToken;
if($type==="follow"){
$pdo = self::db();
if($pdo){
$sql = "insert into user (userid)values(:userid)";
$sth = $pdo->prepare($sql);
$sth->bindValue(":userid",$userId,PDO::PARAM_STR);
$sth->execute();
}
}
if($type==="unfollow"){
$pdo = self::db();
if($pdo){
$sql = "delete from user where userid = :userid";
$sth = $pdo->prepare($sql);
$sth->bindValue(":userid",$userId,PDO::PARAM_STR);
$sth->execute();
}
}
if($type==="message"){
}
}
function db(){
try {
$pdo = new PDO(DSN,USERNAME,PASSWORD);
return $pdo;
} catch (\Throwable $th) {
//throw $th;
return false;
}
}
}
if($data = file_get_contents('php://input')){
print line::webhook($data);
}
<?php
class blog_post_msg_line{
function db(){
try {
//code...
return new PDO(DSN,USERNAME,PASSWORD);
} catch (\Throwable $th) {
//throw $th;
return false;
}
}
function rss(){
$obj = simplexml_load_file("https://zip358.com/feed");
$post_message[2] = $obj->channel->item[0]->title ."\n". $obj->channel->item[0]->link;
$post_message[1] = $obj->channel->item[1]->title ."\n". $obj->channel->item[1]->link;
$post_message[0] = $obj->channel->item[2]->title ."\n". $obj->channel->item[2]->link;
return $post_message;
}
function main(){
$pdo = self::db();
if($pdo){
$post_message = self::rss();
$sql = "select userid from user;";
$sth = $pdo->query($sql);
$res = $sth->fetchAll(PDO::FETCH_ASSOC);
if($res){
foreach($res as $key=>$val){
$user_id = $val["userid"];
self::line_post($user_id,$post_message);
}
}
}
}
function line_post($user_id ='',$post_message=null){
$text = [
[
'type' => 'text',
'text' =>"最新の記事をお届けします"
],
[
'type' => 'text',
'text' =>$post_message[0]
],
[
'type' => 'text',
'text' =>$post_message[1]
],
[
'type' => 'text',
'text' =>$post_message[2]
]
];
$message = [
'to' => $user_id,
'messages' => $text
];
$message = json_encode($message);
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . ACCESS_TOKEN, 'Content-Type: application/json'));
curl_setopt($ch, CURLOPT_URL, 'https://api.line.me/v2/bot/message/push');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $message);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
curl_close($ch);
}
}
if($argv[0]){
blog_post_msg_line::main();
}
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, 2, 9, API, cron, define, line, Messaging, userid, アスファルト, いつも, お裾分け, お願い, コード, コメント, チャンネル, データベース, ブログ, プログラム, もの, 一部, 何, 削除, 匂い, 友だち, 夏, 夕立, 後, 方々, 日, 最新, 毎日, 登録, 私, 自分, 解説, 解除, 記事, 設定, 追加, 送信, 通り, 通知, 部分, 配信,

彼のVue.jsの入門解説動画が分かりやすいかも。超入門は理解しました。
2021.07.12
vue.jsを勉強したい方はよしぴーのYouTubeプログラミングスクールの超Vue.jsの入門解説動画が分かりやすいかも。自分は入門版は理解しました。尚、bodyにID付けて試すのは辞めとけよ。bodyにIDを付けて動かないなぁとかしないように!!ドキュメントにもbodyにIDを付けるのは推奨しないと記載しております。動画を見て背景の色を動的に変えるvue.jsの簡単なサンプルプログラム作りました。コード書いていてjavascriptで書くよりもvue.jsなどのライブラリ?を使用して書くほうが短いコードで書けるので良いなと実感。
htmlコードとvue.jsのコードは下記になります、最終的にはvue.jsでアプリ作りたいな(時間がない?^^;)。SPAに関して難しいという意識がある人も触っていくうちに慣れると思います。因みに学習能力が高い人はこんなの作れちゃうみたいですね、学習してまだ二週間しか経過していなくてゴニョゴニョ作れている所がへぷさん(@HEP1147)、凄いところ!!ですね。
<!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.3/css/all.min.css">
<style>
#el{
width: 100vw;
height: 100vh;
}
</style>
<title>背景の色を変える</title>
</head>
<body>
<div id="el" v-on:mousemove="mouseXY($event)">
<span v-on:click="colorclick('#000')"style="color:#000">■</span>
<span v-on:click="colorclick('#fff')"style="color:#fff">■</span>
<span v-on:click="colorclick('#4eaeec')"style="color:#4eaeec">■</span>
<span v-on:click="colorclick('#4eeccc')"style="color:#4eeccc">■</span>
---{{ color }}---
X={{x}},Y={{y}}
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.slim.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 src="https://cdn.jsdelivr.net/npm/vue@2"></script>
<script src="./main.js?<?=time()?>"></script>
</body>
</html>
var vm = new Vue({
el:"#el",
data:{
color:"#fff",
x:0,
y:0
},
methods:{
colorclick:function(c){
this.color = c;
document.body.style.backgroundColor = c;
return true;
},
mouseXY:function(event){
this.x = event.clientX;
this.y = event.clientY;
}
}
});
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
body, html, ID, javascript, JS, SPA, vue, youtube, アプリ, うち, コード, サンプル, スクール, ドキュメント, プログラミング, プログラム, よし, ライブラリ, 下記, 人, 使用, 入門, 勉強, 動画, 学習, 実感, 彼, 意識, 推奨, 方, 時間, 理解, 簡単, 背景, 能力, 自分, 色, 解説, 記載, 超,

Twitterプロフィールからスパムみたいなアカウントかを機械学習で判定してみた。
2021.06.28
Twitterプロフィールからスパムみたいなアカウントかを機械学習で判定してみました。
何故、このような事を考えたかはスパムみたいなアカウントってぱっと見で人は区別できるよねって思ったのでLobeというソフトを使って画像解析(機械学習)してモデルをエクスポートし、そのモデルをテンソルフローで使用して動作確認してみました。
結果は、まぁまぁの精度だったのでモデルをお裾分けしますね。因みにTwitterのプロフィール画像のスクリーンショットを行った時のソースコードも提供します。
尚、機械学習に使用したプロフィール画像は400枚ほど(少ない?)です、ok-image(一般人)とng-image(スパムみたいなアカウント)というラベルを付けて学習させてます。
model::https://zip358.com/ai-model/tw-profile/saved_model.pb (?モデルの中身はtensorboardでご確認を!)
zip358com
zip358
# Generated by Selenium IDE
import time
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.support.ui import Select
class twss():
def setup_method(self):
self.driver = webdriver.Chrome(ChromeDriverManager().install())
self.vars = {}
def teardown_method(self):
self.driver.quit()
def screenshots(self):
self.driver.get("https://twitter.com/")
self.driver.set_window_size(945, 900)
with open('twname.dat','r',encoding="utf-8") as f:
for line in f:
FILENAME = "X:\\var\\www\\html\\labo_ai\\twss\\image\\screen_" + line.replace('\n', '') +".png"
self.driver.get("https://twitter.com/" + line.replace('\n', ''))
time.sleep(2)
self.driver.save_screenshot(FILENAME)
f.close()
self.driver.quit()
twss = twss()
twss.setup_method()
twss.screenshots()
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
358, 400, ai-model, com, https, lobe, model, ng-image, ok-image, SA, tw-profile, Twitter, zip, アカウント, エクスポート, お裾分け, コード, ショット, スクリーン, スパム, ソース, ソフト, テンソル, フロー, プロフィール, モデル, ラベル, 一般人, 事, 人, 何故, 使用, 判定, 動作, 区別, 学習, 提供, 時, 機械, 画像, 確認, 精度, 結果, 解析,

今はよく使う無名関数と即時関数というモノ?
2021.06.21
javascriptを例に無名関数と即時関数をよく書いています。尚、PHPでも同じ要領で無名関数と即時関数がかけます。たぶんいろいろな言語に同じ要領で書けるようになっていると思います。但しPHPにアロー関数での無名関数と即時関数がどうか分かりません。因みにPHPの方に即時関数があることは結構、最近になって知りました。
自分は無名関数の存在は知っていましたが、あまり使うことがなく使い方もヘンテコな使い方をしていましたね。
無名関数や即時関数を使わない人もいると思います、駆け出しのエンジニアさんに配慮して書かないという職場もあるでしょうし、制約で書けない場合もあるかもしれません。
そんな感じで仕事をしているといろいろ制約の中でコードを書くことになるので、ちょっと窮屈感を感じる人も多いと思います。特に開発に新しい技術を取り入れるような実験が出来る職場は少ないです。大規模開発になればなるほど、実験的な事ができなくなる傾向にあると思います。それも仕事だと割り切るしか無いかなと思います。使いたい技術は私用で開発するときに使うようにしましょう。そういうITエンジニアは結構いますよ。
//functionで無名関数
var mumei1 = function(a){
return a;
};
console.log(mumei1(123));
//アロー関数で無名関数
var mumei2 = (a)=>{
return a;
};
console.log(mumei2(123));
//functionで即時関数
console.log((function(a){
return a;
})(123));
//アロー関数で即時関数
console.log(
((a)=>{
return a;
})(123));
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
javascript, php, アロー, いろいろ, エンジニア, コード, こと, ヘンテコ, もの, 中, 事, 人, 今, 仕事, 使い方, 例, 傾向, 制約, 即時, 場合, 大規模, 存在, 実験, 感, 感じ, 技術, 方, 最近, 無名, 窮屈, 職場, 自分, 要領, 言語, 配慮, 開発, 関数, 駆け出し,

TensorFlow Lite(テンソルフロー ライト)をインストールしモデル実行まで。
2021.06.14
ラズベリーパイ3にTensorFlow Lite(テンソルフロー ライト)をインストールしモデル実行まで軽く字幕で紹介した動画が下記になります。インストール方法は公式に書かれた通りに実行すれば上手くインストール出来るはずです。比較的に低スペックのマシンでも動くはずなのです、どうしてもエラーが出て動かないようであれば、それはおそらくあなたのマシンに問題があります?。
動画でハマりどころがあるという事をブログで解説しますと書いていますので、そのハマりどころを解説します。。。
TensorFlow Lite(テンソルフロー ライト)で動かす場合、label_image.pyの修正箇所が公式に書かれていると思いますが・・・?、ここで自分がハマり、実行するコマンドを打ってもパラメーターがどうたらというエラーが出力されて動きませんでした。結論から言うと原因はマスターのソースコードにあったのです。修正を要領よく修正しては駄目だった。直接的な原因となったのは–num_threadsのパラメーターを投げていたのが原因でした。
公式では下記の内容に変更しなさいと書かれています。tf.lite.Interpreterの部分を置き換えればよいだろうと思っていたのです。
interpreter = tf.lite.Interpreter(model_path=args.model_file)
マスターのソースコードは若干、公式とは違ってこのようなソースコードになっていました。
interpreter = tf.lite.Interpreter(
model_path=args.model_file, num_threads=args.num_threads)
渡す引数が一つ増えていたので、自分はそれを残していたのですが・・・?、これでは動かないのです。そう・・num_threads=args.num_threadsは削除してあげないとモデルを動かすことが出来なかったのです。それがわからず渡すパラメーターが駄目なんだとか思って四苦八苦していました。
自分みたいな修正方法している方も中にはいると思ったので、今回、初心者がハマった沼を紹介しました?。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
3, image, label, LITE, py, tensorflow, あなた, インストール, エラー, コード, ここ, コマンド, スペック, ソース, それ, テンソル, はい, パス, パラメーター, フロー, ブログ, マシン, マスター, モデル, ライド, ラズベリー, 下記, 事, 修正, 公式, 出力, 動画, 原因, 問題, 場合, 字幕, 実行, 方法, 箇所, 紹介, 結論, 自分, 解説, 通り,

お問い合わせフォームとメールフォームの考え方は同じ。
2021.06.07
お問い合わせフォームとメールフォームの考え方は同じです。AからBにデータを送信してそれを元に処理をしているだけです。これはフォームに限らず、プログラムはデータを元に計算などを行い結果を出力しているに過ぎないのです。コンピュータというのは高速にデータを分類したり、計算したりしているだけなのです。
プログラミングに挫折する人は、いろいろな事に疑問を持って先に進まない人が多いです。どうしてそうなるのかという所まで考えようとしていて前に進まない人が多いです。
逆にそうなるだという事を受け入れる人の方が覚えが早いです。最初はルールを覚えたほうが良いですね。
小学生でプログラミングを始めたい方は、人のプログラミングコードを模写して、そのコードの一部の数字などを変更してみて、こうするとこうなるのかという形で覚えていくほうが良いと感じます。参考書には難しい言葉を使って書いている事が多いので、そのような形で覚えるほうが良いでしょう。
今回のソースコードを貼っときますので、コピーするのではなく自分で書いて動かしてみてください!
※因みにphp言語が動作する環境が必要になります。
https://www.sakura.ne.jp/standard.html#plan
<!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="お問い合わせ"/>
<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.2/css/all.min.css">
<title>お問い合わせ</title>
<style>
body{
background-color: #f8f9fa;
}
</style>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-12 mt-5">
<h2>お問い合わせ</h2>
<input class="form-control mt-1" type="text" name="name" placeholder="お名前を入力ください">
<input class="form-control mt-1" type="text" name="email" placeholder="メールアドレスを入力ください">
<div class="form-group mt-1">
<label for="my-select">お問い合わせ</label>
<select id="my-select" class="form-control" name="ptn">
<option value="問い">お問い合わせ</option>
<option value="意見">ご意見</option>
</select>
</div>
</div>
</div>
<div class="form-group mt-1">
<label for="my-textarea">内容</label>
<textarea id="my-textarea" class="form-control" name="text" rows="3" placeholder="内容を入力ください"></textarea>
</div>
<button class="btn btn-primary" id="btn" type="button">送信</button>
</div>
<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>
document.getElementById("btn").addEventListener("click",function(){
let data = {};
data["name"] = document.getElementsByName("name")[0].value;
data["email"] = document.getElementsByName("email")[0].value;
data["ptn"] = document.getElementsByName("ptn")[0].value;
data["text"] = document.getElementsByName("text")[0].value;
$.ajax({
type: "POST",
dataType: "json",
url: "./send.php",
data: data,
success: function (response) {
if(response){
console.log(response);
}
}
});
});
</script>
</body>
</html>
<?php
print json_encode($_POST);
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
いろいろ, お問い合わせ, コード, これ, コンピュータ, それ, データ, フォーム, プログラミング, プログラム, メール, ルール, 一部, 事, 人, 元, 処理, 出力, 分類, 前, 参考書, 変更, 小学生, 形, 所, 挫折, 数字, 方, 最初, 模写, 疑問, 結果, 考え方, 言葉, 計算, 送信, 逆, 高速,

簡易的なメールフォームとメール送信のプログラムを書くのにかかる時間は?
2021.05.28
簡易的なメールフォームとメール送信のプログラムを書くのにかかる時間は?大体10分?15分ぐらいかと思います。本当はエラーチェックなどの機能をちゃんとした物に置き換える必要があるけど、ざっくり考え方はこれだけで良いじゃないかなと思っています。下記のコードを制作するのに参考にしたサイトのリンクを貼っときますね。
https://techplay.jp/column/550、https://techacademy.jp/magazine/19300
上記のコードを拝借してコードを書き、簡易的な二重送信防止対策と簡易的なエラーチェックをプログラミングしていますが、ここにreCAPTCHAなどの機能を入れてあげるとボット対策にもなるので良いかもしれません。ソースコードを見て後から気づいたのですが、ポストしているnameのデータを受け取っていない事があとから気づきました。因みにPOSTの生データが欲しいと言うときはこのように書くと取得することが可能ですよ。
<?php
$data = file_get_contents('php://input');
?>
<?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/4.6.0/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.2/css/all.min.css">
<link rel="stylesheet" href="assets/css/style.css">
<title>sendmail</title>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-12">
<form method="post" action="./sendmail.php">
name<input class="form-control" type="text" name="name">
email<input class="form-control" type="text" name="email">
<div class="form-group">
<label for="my-textarea">Text</label>
<textarea id="my-textarea" class="form-control" name="text" rows="3"></textarea>
</div>
<input type="hidden" name="csrf_token" value="<?=$_SESSION['csrf_token']?>">
<?=$_SESSION["sendmail"]!=="ok"?'<button class="btn btn-primary" type="submit">submit</button>':"NG"?>
</form>
</div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.slim.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>
</body>
</html>
<?php
session_start();
?>
<!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.2/css/all.min.css">
<link rel="stylesheet" href="assets/css/style.css">
<title>sendmail</title>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-12">
<?= EmailSend() ?>
</div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.slim.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>
</body>
</html>
<?php
function EmailSend()
{
$check = function ($val = "") {
return isset($val) ? $val : false;
};
mb_language("Japanese");
mb_internal_encoding("UTF-8");
$to = $_POST['email'];
$title = "test-mail";
$message = $_POST['text'];
$headers = "From: from@example.com";
if (
isset($_POST["csrf_token"])
&& $_POST["csrf_token"] === $_SESSION['csrf_token']
) {
if (($check($to) && $check($title) && $check($message)) && mb_send_mail($to, $title, $message, $headers)) {
$_SESSION["sendmail"] = "ok";
return "メール送信成功です";
} else {
$_SESSION["sendmail"] = "ng";
return "メール送信失敗です";
}
} else {
return "不正なリクエストです";
}
return false;
}
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
10, 15, 2, 550, 8, cHW, column, com, https, jp, name, POST, reCAPTCHA, techplay, watch, www, xqg-zp, youtube, あと, エラー, コード, ここ, これだけ, サイト, ソース, チェック, デー, データ, フォーム, プログラミング, プログラム, ポスト, ボット, メール, リンク, 上記, 下記, 事, 二, 制作, 参考, 大体, 対策, 後, 必要, 拝借, 時間, 本当, 機能, 物, 生, 簡易的, 考え方, 送信, 防止,

クロスプラットフォーム開発(アプリ)をPythonで行う。
2021.05.21
PyQt5でクロスプラットフォーム開発(アプリ)を行う事が出来るだってさ。ただし、PyQt5は商用利用に縛りがあるのだとか、個人で使用する分には問題なしだということ。CSSとPythonの記述が分かっていればそれほど難しくない難易度かと自分は下記の動画を見て思いました。
pip install PyQt5
Python:パイソンがインストールしている環境で上記のコマンドを打つことでPyQt5はインストール可能です。あとはコードを書いて実行するだけでアプリが実行されます。
PyQt5の使い方を解説している人がいます。リンク先のように書けばチェックボックスなども設置可能です。因みにコードを一々書くのは面倒だという方はQt Designerと連携することでGUIの設計は楽になると思います。
環境構築を説明しているリンクを貼っときます。こちらでPyQt5のプログラムを使用しQt Designerで開発を行えます。
この頃はクロスプラットフォーム開発も多様化していろいろな言語で開発ができるようになってきてますね。楽になったものだと・・・。
追伸:商業利用でクロスプラットフォーム開発が行いたい場合はPySideを使用するべしです。理由はこちら
https://www.kimoton.com/entry/20181202/1543724518
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
5, css, Designer, GUI, install, pip, PyQt, Python, Qt, あと, アプリ, インストール, えま, クロス, コード, こちら, こと, コマンド, チェック, パイソン, プラットフォーム, プログラム, ボックス, リンク, 上記, 下記, 事, 人, 使い方, 使用, 個人, 分, 利用, 動画, 可能, 商用, 実行, 方, 構築, 環境, 縛り, 自分, 行, 解説, 記述, 設置, 設計, 説明, 連携, 開発, 難易, 面倒,

SEOって意味があるのかわからないけれどAll in One SEOの採点は気にしてる。
2021.05.14
SEOって意味があるのかわからないけれどAll in One SEOの採点は気にしてる自分。ワードプレス(WordPress:WP)にはオールインワンSEO(エスイオー)というプラグインがあり、最新版には記事単位でSEO採点をしてくれる機能が無料でついている。このWPプラグインのコード(中身の処理)がどうなっているかは知らないけれど、恐らく記事のデータはWPプラグインの提供元(All in One SEO)へデータを送信していることは間違いないのではないかと思っています。このSEO採点基準は投稿フォームの下の方にヒントとして記載されているので、その基準に記事を書けばスコアは最低でも70点以上の採点になるはずです。
因みにこの頃、書いている自分の記事は大体、80点以上の採点になることが多くなってきている。この機能が導入されてから記事を見返したり、SEOの得点を気にするようになった。それでも前から言っているように最終的に記事を読むのは人なので人が読んで評価が良いものを投稿する事こそが最強のSEOだと思っています。
しかし記事が検索サイトに表示されないと人目につかないので、SEOはある程度意識しないといけないなというのが今の自分の考えだったりします。昔に比べて検索の上位を狙うのが難しくなっていることは確かな事で数撃ちゃ当たる戦法はもう難しくなってきています。YOUTUBEは今の所、それが通用するみたいです。
なぜ、数撃ちゃ当たるの戦法が難しくなってきているかといえば、SEOを熟した企業が記事を量産しているから、個人で記事を書いている人が太刀打ちが難しくなってきているのが現状です。
ならば、プログラムで記事を量産させようと思い立ち、先日、記事を自動生成するサービスをいろいろ調べていた。調べると量産させるサービスがあった。そのサービスは「Articoolo(日本語はベータ版:2021年)」というサービスで人工知能の機能を使用し記事が作成されるものだった。試してみた結果、日本語が整っていなく未完成な記事が生成された、今のところは使用できるレベルではない(2021/05)。
まだ、先の話になるのだけどこんな取り組みがある。LINEは日本語に特化した人工知能モデルを作ろうとしている。そのサービスが完成すればそれを使用して記事の自動制作を行えないかという事を自分は考えています。おそらくベータ版サービスは無料で作成できそうなので精度が良ければ使用してみたいと思っています。
今でも自然言語処理と人工知能のことを正しく理解している人であれば、記事を量産できるかもしれないが・・・。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
70, 80, all, in, one, SEO, WordPress, wp, エスイ, オー, オールインワン, コード, こと, スコア, データ, パス, ヒント, フォーム, プラグイン, プレス, ワード, 下, 中身, 処理, 単位, 基準, 大体, 導入, 得点, 意味, 投稿, 採点, 提供, 方, 最低, 最新版, 機能, 気, 無料, 自分, 記事, 記載, 送信, 頃,

Proofreading(校正)というリクルートが開発したAPIを使って。
2021.04.27
Proofreading(校正)というリクルートが開発したAPIを使って、今まで投稿した記事に誤字がないかを判別してもらった。因みに1000文字を超える文章は対象にならないのでワードプレスで取得した記事を900文字程度で切って判断してもらうことにしています。誤字があった場合、1を最大値として値が渡されるので、その平均値を取ればその文章の誤字率が判定できる。今回は平均値を取らず、最大値を判断材料として文章をスコア化しました。一応、判断した値をCSVで出力するプログラムをちょこちょこと制作したので参考にして頂ければ幸いです。正直なところ、ProofreadingのAPIが制度が良いのか疑わしいものがあるがAPIを取り扱うのが始めてという人は勉強になると思います?。
ソースコードはこちらになります。
<?php
require "../../wp-load.php";
global $wpdb;
$proofreading = function($text=""){
$url = "https://api.a3rt.recruit-tech.co.jp/proofreading/v2/typo";
$params = [
'apikey' => '取得したAPIKEY',
'sentence'=>"$text",
'sensitivity'=>"high"
];
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
curl_close($curl);
$obj = (object)json_decode($response);
$score = 100;
if($obj->alerts){
$max = 0;
foreach($obj->alerts as $key=>$val){
$max = $max<$val->score?$val->score:$max;
}
$score = 100 - ($max * 100);
}
return $score;
};
if($argv[0]){
file_put_contents("blogscore.csv","");
$query = "SELECT * FROM $wpdb->posts WHERE post_status = 'publish' and post_type = 'post'";
$results = $wpdb->get_results( $wpdb->prepare($query));
foreach($results as $row) {
$id = $row->ID;
$title = $row->post_title;
$score = $proofreading(mb_strimwidth(preg_replace("/[\r|\n]/","",strip_tags($row->post_content)),0,900,"…"));
$str = "'$id'".",'".$title."',"."'$score'";
print $str.PHP_EOL;
file_put_contents("blogscore.csv",mb_convert_encoding($str."\n","SJIS","UTF-8"),FILE_APPEND);
}
}
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, 1000, 900, API, CSV, lt, php, Proofreading, quot, require, wp-load, コード, こちら, こと, スコア, ソース, ところ, プレス, プログラム, もの, リクルート, ワード, 人, 今回, 値, 出力, 判別, 判定, 判断, 制作, 制度, 勉強, 参考, 取得, 場合, 対象, 平均, 投稿, 文章, 最大, 材料, 校正, 正直, 記事, 誤字, 開発,

今読まれてますというWPプラグインの作り方
2021.04.19
今読まれてますというWP(ワードプレス)プラグインの作り方はこれだけです。ボット対策の部分はお見せできませんがこんなソースコードで動いています、なお、自分が閲覧してもツイートすることはないようにしています。因みに昨日もボットみたいなのが何度も来たのでその対応を行いました。尚、TwitterOAuthというライブラリを導入してautoload.phpを使用しuseで呼び出し使用しています(※autoloadを置いている任意の場所に変更してください)。
ワードプレスのプラグインの作り方の動画を貼っときます。英語ですが理解できるかと思います。動画で分かりづらかった方は『自作、WordPress、プラグイン、PHP』という様な検索すると先人たちが方法をネットに公開しているのでそちらを参考にしてください。
プラグインを作るにあたってソースコードに書かれているコメント部分は必須なのだけど、プラグインを配布しない人はプラグイン名だけ記載しプラグインと同じフォルダを構えるだけでプラグインとして認識します。
<?php
/*
Plugin Name: article-live-tw
Plugin URI:
Description: 今、ユーザーが読んでいる記事をツイートする
Version: 1.0.0
Author: @zip358com
Author URI: https://zip358.com
*/
session_start();
require "/vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
add_action("wp_head","article_live_tw");
function article_live_tw(){
define("CONSUMER_KEY", "CONSUMER_KEY");
define("CONSUMER_SECRET", "CONSUMER_SECRET");
define("ACCESS_TOKEN", "ACCESS_TOKEN");
define("ACCESS_TOKEN_SECRET", "ACCESS_TOKEN_SECRET");
global $post;
$flg1 = is_bot();
$flg2 = empty($_SESSION["reading-zip358-".$post->ID.$_SERVER['REMOTE_ADDR']]);
$flg3 = ip_check("reading-zip358-".$post->ID.$_SERVER['REMOTE_ADDR']);
if(!$flg1 && $flg2 && !$flg3 && $post->ID){
$_SESSION["reading-zip358-".$post->ID] = 1;
$tw_title = get_post($post->ID)->post_title;
$tw_link = get_permalink($post->ID);
$kigolist = ["?","?","?","?","?","?"];
$kigo = $kigolist[floor(rand(0,5))];
if(!current_user_can('administrator')){
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
$connection->post("statuses/update", array("status" => "#今読まれてます $kigo ??? \n".$tw_title . " \n" . $tw_link . " \n #ブログ zip358.com \n" . date_i18n('Y/m/d H:i')));
//$ua = print_r($_SERVER,true);
//@file_put_contents("./log/".date('Y-m-d-H-i').".log",$ua);
}
}
}
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
15, 7, autoload, com, https, php, QfH-s-, TwitterOAuth, use, watch, WordPress, wp, www, youtube, お見せ, コード, こと, これだけ, ソ, ソース, そちら, ツイート, ネット, プラグイン, プレス, ボット, ライブラリ, ワード, 今, 任意, 何度, 作り方, 使用, 先人, 公開, 動画, 参考, 場所, 変更, 対応, 対策, 導入, 方, 方法, 昨日, 検索, 理解, 自作, 自分, 英語, 部分, 閲覧,