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

Reactでパスワード生成にバグがあって数値、記号が確実に入らなかったので.
2025.04.22
おはようございます.Reactでパスワード生成にバグがあって数値、記号が確実に入らなかったのでその修正を先日行いました.そういやそうだなってソースコードを見返して思った次第です…
修正したコードはこちらになります.その話とは別にVScodeにもAI補助が付いてから自分も生成AIと言う物を個人開発するときに使用するようになっただけど…
import RingLoader from "react-spinners/RingLoader";
import { useState } from "react";
import "./App.css";
function PasswordTmp() {
const [passwordLength, setPasswordLength] = useState(8);
const [password, setPassword] = useState("");
const [includeSymbols, setIncludeSymbols] = useState(false);
const [includeNumbers, setIncludeNumbers] = useState(false);
function makePassword(passwordLength, includeSymbols, includeNumbers) {
const lowercase = "abcdefghijklmnopqrstuvwxyz";
const uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
const numbers = "0123456789";
const symbols = "!@#$%^&*()_+[]{}|;:,.<>?";
let characters = lowercase + uppercase; // 文字のセットを初期化
if (includeNumbers) {
characters += numbers; // 数字を追加
}
if (includeSymbols) {
characters += symbols; // 記号を追加
}
let result = remakePassword(characters,includeNumbers,includeSymbols);
setPassword(result);
}
function remakePassword(characters,includeNumbers,includeSymbols){
let passwords = "";
let NumbersChecking = true;
let SymbolsChecking = true;
for (let i = 0; i < passwordLength; i++) {
const randomIndex = Math.floor(Math.random() * characters.length);
passwords += characters[randomIndex]; // ランダムな文字を選択
}
if (includeNumbers) {
NumbersChecking = passwords.match(/[0-9]/g) ? true : false;
}
if (includeSymbols) {
SymbolsChecking = passwords.match(/[\!@#\$%\^&\*\(\)_\+\[\]\{\}\|;:\,\.<>\?]/g) ? true :false;
}
return NumbersChecking && SymbolsChecking?passwords:remakePassword(characters,includeNumbers,includeSymbols);
}
return (
<>
<div>
<h1>パスワード生成</h1>
<p>
<input
type="number"
value={passwordLength}
placeholder="パスワードの長さ"
max={99}
min={3}
onChange={(e) => setPasswordLength(e.target.value)}
/>
</p>
<p>
<input id={'Symbols'}
type="checkbox"
value={1}
checked={includeSymbols}
onChange={(e) => setIncludeSymbols(e.target.checked)}
/>
<label for={'Symbols'}>記号を含める</label>
</p>
<p>
<input id={'Numbers'}
type="checkbox"
value={1}
checked={includeNumbers}
onChange={(e) => setIncludeNumbers(e.target.checked)}
/>
<label for={'Numbers'}>数字を含める</label>
</p>
<button
className="btn"
onClick={() =>
makePassword(passwordLength, includeSymbols, includeNumbers)
}
>
パスワードを生成
</button>
<button
className="btn"
onClick={() => navigator.clipboard.writeText(password)}
>
パスワードをコピー
</button>
<p>生成されたパスワード: {password}</p>
<p>パスワードの長さ: {passwordLength}</p>
<p>記号を含める: {includeSymbols ? "はい" : "いいえ"}</p>
<p>数字を含める: {includeNumbers ? "はい" : "いいえ"}</p>
</div>
</>
);
}
export default PasswordTmp;
この頃、補完機能がとても「うざったく」思う時と「ありがとう」と思うときが存在していてなんとも言えない.特にウザって思うときは自分が望んでいないコードが出てきた時は正直困る.コードを直打ちしないといけないので今までの補完機能がやはり良いなと思います.
自分としては生成AIの補完機能をOFFに出来る機能がほしいところ、それがあればとてもコードを書くのは快適ですねー.あるのかなぁー🤔調べてみます.
明日へ続く
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
コード, コピー, セット, ソースコード, バグ, パスワード, パスワード生成, ほしいところ, ランダム, 修正, 初期化, 数値, 数字, 文字, 次第, 生成, 補助, 補完機能, 記号, 選択,

Reactの簡単なものなら今でも作れるのだけども.#簡単止まり.
2025.04.20
おはようございます.Reactの簡単なものなら今でも作れるのだけども簡単止まりなところを1UPしたいなと思っています.Xにもポストしたんだけどパスワード生成出来るものをReactで作ったのでソースコードを公開しますね.
Reactは基本そのままだとさくらレンタルサーバーなどでは動かないだけど、viteというモノを使用してビルドするとJavascriptに変換されたソースコードが出力されるので、それをレンタルサーバーにファイルアップロードする事によりレンタルサーバーでも動くようになります.
Reactにviteというモノを導入するに当たってDockerにUbuntuかcentOSなどを構築してその中にNodeJsとApache2を入れて自分はビルドしたモノを確認しています.
普通はNodeJsでサーバー立ててそちらで確認するのが普通なんだと思うのだけど、それだとレンタルサーバーで動いているかどうかが分からないので自分はビルド後のdistフォルダを中をApacheと紐づけて確認している形です.
トイウコトデ、ソースコードとサイトのリンクを貼っときます.
import RingLoader from "react-spinners/RingLoader";
import { useState } from "react";
import "./App.css";
function PasswordTmp() {
const [passwordLength, setPasswordLength] = useState(8);
const [password, setPassword] = useState("");
const [includeSymbols, setIncludeSymbols] = useState(false);
const [includeNumbers, setIncludeNumbers] = useState(false);
function makePassword(passwordLength, includeSymbols, includeNumbers) {
const lowercase = "abcdefghijklmnopqrstuvwxyz";
const uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
const numbers = "0123456789";
const symbols = "!@#$%^&*()_+[]{}|;:,.<>?";
let characters = lowercase + uppercase; // 文字のセットを初期化
if (includeNumbers) {
characters += numbers; // 数字を追加
}
if (includeSymbols) {
characters += symbols; // 記号を追加
}
let passwords = "";
for (let i = 0; i < passwordLength; i++) {
const randomIndex = Math.floor(Math.random() * characters.length);
passwords += characters[randomIndex]; // ランダムな文字を選択
}
setPassword(passwords); // パスワードを更新
}
return (
<>
<div>
<h1>パスワード生成</h1>
<p>
<input
type="number"
value={passwordLength}
placeholder="パスワードの長さ"
max={99}
min={3}
onChange={(e) => setPasswordLength(e.target.value)}
/>
</p>
<p>
<input id={'Symbols'}
type="checkbox"
value={1}
checked={includeSymbols}
onChange={(e) => setIncludeSymbols(e.target.checked)}
/>
<label for={'Symbols'}>記号を含める</label>
</p>
<p>
<input id={'Numbers'}
type="checkbox"
value={1}
checked={includeNumbers}
onChange={(e) => setIncludeNumbers(e.target.checked)}
/>
<label for={'Numbers'}>数字を含める</label>
</p>
<button
className="btn"
onClick={() =>
makePassword(passwordLength, includeSymbols, includeNumbers)
}
>
パスワードを生成
</button>
<button
className="btn"
onClick={() => navigator.clipboard.writeText(password)}
>
パスワードをコピー
</button>
<p>生成されたパスワード: {password}</p>
<p>パスワードの長さ: {passwordLength}</p>
<p>記号を含める: {includeSymbols ? "はい" : "いいえ"}</p>
<p>数字を含める: {includeNumbers ? "はい" : "いいえ"}</p>
</div>
</>
);
}
export default PasswordTmp;
明日へ続く
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
コピー, さくらレンタルサーバー, セット, ソースコード, トイウコトデ, ところ, パスワード, パスワード生成, ビルド後, フォルダ, ランダム, レンタルサーバー, 初期化, 形, 数字, 文字, 普通, 生成, 紐, 記号,

iPhoneに関してだけ言えばだけども買うのは?の方が良い🦅。
2022.06.17
おはようございます、たまに自然を聞くのは良いですね、実際、川や山にいくと虫もセットになりますが、今ではYOUTUBEでそのサウンドを聞くことが出来ます。
いま、iPhone14を購入しようか悩んでいます。その理由の一つは親のiPhoneがios16非対応製品になってしまったことです、よってセキュリティやアプリの対応で問題が生じる可能性が出てきました。
そのため、今のiPhoneを親に譲って自分はiPhone14を購入することになるかもなって思っています。iPhoneとAndroid端末を比べてみるとAndroid端末でも十分なような気がしますが、自分は長年iPhone端末を使用してきているので、なんだかiPhoneの方がしっくりときます。
iPhoneだけの話で言えば買い替え時は最新の上位機種に買え替えたほうが長く使用できます。ios16発表時にiPhone7を切ってくるとは正直なところ思わなかったのですが、残念ながらiPhone7は対象から外されましたね。ともあれ、再来年までには最新鋭の機種に買えかえます😌。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
14, 16, 7, Android, iOS, iPhone, youtube, アプリ, いま, こと, サウンド, セキュリティ, セット, たま, ため, ところ, わなか, 一つ, 上位, 今, 使用, 可能性, 問題, 実際, 対応, 山, 川, 思, 方, 最新, 機種, 正直, 気, 理由, 発表, 端末, 自分, 自然, 虫, 製品, 親, 話, 購入, 長年,

YOUTUBEプレミアムの年間契約キャンペーンはあと3日で終了する。
2022.01.20
YOUTUBEプレミアムの年間契約キャンペーンはあと3日で終了するので、契約したい方はこの方法で契約してみてくださいな。ここをクリックして年間契約の手順に沿って契約してみてくださいな。
因みに年間契約にすると支払いがお得になります。何でもそうだけど長く使用するサブスクは年間契約の方がお得になります。YOUTUBEプレミアムは3540円の割引になります、尚、YOUTUBEプレミアム年間契約キャンペーンは1月23日に終了します。
もしかすると日本でも今年中にYOUTUBE Premium Liteという定額サービスが始まるかもしれません、YOUTUBEプレミアムはYOUTUBEの広告無しやYOUTUBEミュージックがセットになったサービスです、それに対してYOUTUBE Premium LiteというのはYOUTUBEミュージックがなく、YOUTUBEの広告無しだけのサービスです。
音楽をよく聞く人で、他に音楽のサブスクリプションを契約していないのならばYOUTUBEプレミアムをおすすめします、逆にSpotifyなどのサービスを使用しているのならば、YOUTUBEライトのサービスが日本で始まるのを待つのも良いかもしれませんね。
自分は月契約から年契約に変更しました。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, 23, 3, 3540, LITE, Premium, youtube, キャンペーン, クリック, ここ, サービス, サブ, スク, セット, それ, プレミアム, ミュージック, 今年, 使用, 割引, 契約, 定額, 年間, 広告, 手順, 方, 方法, 日本, 終了, 音楽,
部屋の温度と湿度をリアルタイムでうぅううします。
2018.09.01
https://zip358.com/tool/kion_shitudo/
IOTとかいう奴ですね、Raspberry Piを使用して部屋の温度と湿度を
90秒置きに表示するようなものを作りました。
あぁぁエアコンとか平日はつける事はないので
部屋の温度はこの時期、汗だくです・・・。
ふふふうふ?。
ちなみに温度センサーのプラスとマイナスをRaspberry Piに反対接続して
なんか温度センサーが熱い状態になってましたが
何とか問題なくいまは動いてます・・・・。
あとはPHPとPythonでそれぞれプログラムコードを書いて
ゴニョゴニョしてサーバ側に表記しています。
著者名
@taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
-Physi, 01, 3, 4, 90, asin, Clear, com, CSFZ, Decker, IoT, JG, jp, kion, model, php, Pi, ple, Python, Raspberry, shitudo, tool, zip358, あと, いま, エアコン, ケース, コード, ゴニョゴニョ, サーバ, セット, センサー, それぞれ, ふうふ, プラス, プログラム, ポート, マイナス, もの, リアルタイム, 事, 使用, 反対, 奴, 対応, 平日, 接続, 時期, 温度, 湿度, 状態, 表示, 表記, 部屋,
映画、検察側の罪人を観てきました。
2018.08.25
こんな見応えある映画は久しぶりだ。
— 田岡 寿章@taoka_toshiaki🦌 (@taoka_toshiaki) August 25, 2018
久しぶりに見応えたっぷりの映画を観てきました、
結構それだけでかなり満足感があります。
ただ、この映画は感動するとかいうストーリー展開はありませんし
悔しい映画でもありません、正義とはなんだということを
この映画を通して考える映画になっていることは
間違いないですね。
※結構、真面目な映画であります。
著者名
@taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
0, 07, 1033207577276952576, 2, 3, 358, 4167907844, asin, com, FBXJVM, http, jp, kensatsugawa-movie, status, Twitter, wzvmvESzuv, youtube, zip, かなり, クリア, こと, ストーリー, セット, それだけ, なん, ファイル, フライヤー, 久しぶり, 二宮和也, 展開, 感動, 映画, 木村拓哉, 検察, 正義, 満足感, 真面目, 結構, 罪人, 見応え,