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

AIで記事を学習して新たな記事を生み出すにはお金が必要だと思っていたがそうでも.
2025.06.22
おはようございます.AIで記事を学習して新たな記事を生み出すにはお金が必要だと思っていたがそうでもなくローカルPCでそこら辺に落ちているLlamaモデルを持ってきてチューニングすれば何とかなるじゃねぇという思いに至った.
実はあなたの手元にあるPCと、そこら中に「落ちている」オープンソースのAIモデル、特にLlama 3があれば、十分記事が生成できるんです。
ローカルAI記事生成は、もはや夢物語じゃない
「AIで記事生成」と聞くと、SFのような世界や、大企業だけが使える特権のように感じるかもしれません。しかし、今は違います。オープンソースの強力な言語モデル、特にMetaが公開したLlama 3の登場は、この常識を大きく覆しました。
Llama 3は、その性能の高さにもかかわらず、誰でも無料で利用できるという点が最大の魅力です。さらに、80億パラメータの8Bモデルであれば、最新のゲーミングPCとまではいかなくとも、ある程度の性能を持つPCであれば十分に動作します。これにより、高額なクラウドサービスを利用せずとも、自分のPCでAI記事生成の環境を構築することが現実的になりました。
なぜLlama 3があなたのPCと相性抜群なのか?
Llama 3がローカルPCでの記事生成に適している理由はいくつかあります。
- 完全無料のオープンソース: 利用に費用がかからないため、予算を気にせずAIを試したり、本格的に導入したりできます。
- 選べるモデルサイズ: Llama 3には様々なサイズのモデルがあり、PCのスペックに合わせて選べます。特に8Bモデルは、個人利用に最適なバランスを持っています。
- 活発な開発者コミュニティ: 世界中の開発者がLlama 3を使った新しいツールや効率的なチューニング方法を日々共有しています。困ったときには助けを借りられる心強い味方です。
- 「量子化」でさらに軽量に: モデルのサイズを大幅に小さくする「量子化」という技術を使えば、より少ないメモリでLlama 3を動かせるようになります。これにより、より多くのPCで利用の道が開けます。
あなたのPCを「記事生成マシン」に変える秘訣
もちろん、いきなりプロのライター並みの記事をAIに書かせるのは難しいかもしれません。しかし、ちょっとした工夫で「何とかなる」レベルの記事生成は十分に可能です。
- 少量のデータでファインチューニング: 大量の記事データは不要です。あなたが書きたい記事のテーマやスタイルに合った、質の良い記事を数十〜数百程度集めてLlama 3を学習(ファインチューニング)させれば、その分野に特化した記事生成能力が格段に向上します。
- プロンプト(指示文)の工夫: AIへの「指示の出し方」は非常に重要です。具体的で明確なプロンプトを与えることで、チューニングが完璧でなくても、驚くほど質の高い記事が生成できます。これはまるで、優秀なアシスタントに的確な指示を出すようなものです。
- 効率的な学習方法の活用: 「LoRA(Low-Rank Adaptation)」のような効率的なファインチューニング手法を使えば、少ないGPUメモリでも短時間でモデルを特定のタスクに最適化できます。
あなたの創造性が、今、AIで加速する
かつては一部の専門家や企業にしか手の届かなかったAIによる記事生成が、今やあなたのPCで実現できる時代になりました。これはまさにAI技術の「民主化」です。
とまぁそういう訳なので何とかしてみますが、ファインチューニングにどれぐらい時間がかかるのかが未知数だったりする.
ファインチューニングPythonコード
以下のPythonコードは、Llama 3モデルをロードし、提供されたテキスト記事でファインチューニング(LoRA使用)を実行し、結果を保存します。 上記の入力値は、このコードに自動的に反映されます。 このコードをPythonファイル(例: `finetune_llama.py`)として保存し、実行してください。
import os
import torch
from datasets import load_dataset
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig, TrainingArguments, Trainer
from peft import LoraConfig, get_peft_model, prepare_model_for_kbit_training, TaskType
# GPUの利用可能性を確認
print("GPUが利用可能か確認中...")
if not torch.cuda.is_available():
print("GPUが見つかりません。Fine-tuningにはGPUが強く推奨されます。")
# GPUがない場合は、ここでスクリプトを終了するか、CPUモードで続行するか選択できます。
# exit("GPUがないため終了します。")
else:
print(f"GPUが利用可能です: {torch.cuda.get_device_name(0)}")
# --- 1. モデルとトークナイザーのロード ---
# Llama 3モデルのパスを指定します。Hugging Faceのモデル名(例: "meta-llama/Llama-3-8B")
# またはローカルにダウンロードしたモデルのパスを指定してください。
MODEL_NAME = "meta-llama/Llama-3-8B" # ユーザーが入力したパスがここに挿入されます
print(f"モデルとトークナイザーをロード中: {MODEL_NAME}")
# 4bit量子化設定 (GPUメモリの節約に役立ちます)
# bnb_4bit_compute_dtypeは、Ampere以降のNVIDIA GPUに推奨されるbfloat16を使用しています。
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_use_double_quant=True,
bnb_4bit_quant_type="nf4", # NF4 (NormalFloat4) 量子化タイプ
bnb_4bit_compute_dtype=torch.bfloat16
)
# トークナイザーをロード
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, trust_remote_code=True)
# Llama 3はデフォルトでbos_tokenを付与しないことがあるため、明示的に追加。
# また、padding_side='right'はLlamaモデルに推奨される設定です。
tokenizer.pad_token = tokenizer.eos_token
tokenizer.padding_side = "right"
# モデルをロードし、量子化設定を適用し、自動的にGPUにマッピングします。
model = AutoModelForCausalLM.from_pretrained(
MODEL_NAME,
quantization_config=bnb_config,
device_map="auto", # 利用可能なデバイス(GPU)に自動的にモデルを分散
trust_remote_code=True # リモートコードの実行を許可
)
print("モデルロード完了。")
# k-bit学習用にモデルを準備 (PEFTライブラリのため)
# gradient_checkpointingを有効にすることで、メモリ使用量をさらに削減できます。
model.gradient_checkpointing_enable()
model = prepare_model_for_kbit_training(model)
print("k-bit学習用にモデルを準備しました。")
# --- 2. データセットの準備 ---
# あなたのテキスト記事ファイルが格納されているディレクトリを指定します。
# 例: 'your_article_data/' の中に 'article1.txt', 'article2.txt', ... と置かれている場合
DATA_DIR = "./your_article_data/" # ユーザーが入力したパスがここに挿入されます
print(f"データセットをロード中: {DATA_DIR}")
# 'text'形式でデータセットをロードします。指定されたディレクトリ内のすべての.txtファイルを読み込みます。
# 各ファイルが1つのエントリとして扱われます。
try:
dataset = load_dataset('text', data_files={'train': os.path.join(DATA_DIR, '*.txt')})
print(f"データセットのサンプル数: {len(dataset['train'])}")
except Exception as e:
print(f"データセットのロード中にエラーが発生しました。ディレクトリとファイル形式を確認してください: {e}")
exit("データセットロード失敗。")
# データセットをトークン化する関数
# 長い記事をモデルの最大入力長に分割します。
def tokenize_function(examples):
# Llama 3の最大入力長は通常8192ですが、お使いのGPUのVRAMに合わせて調整してください。
# ここでは一般的な値として2048を設定しています。
max_length = 2048
# truncate=Trueで最大長を超えるテキストを切り捨てます。
return tokenizer(examples["text"], truncation=True, max_length=max_length)
# データセットをトークン化します。
# num_procはCPUコア数に応じて並列処理を行い、処理を高速化します。
tokenized_dataset = dataset.map(
tokenize_function,
batched=True,
num_proc=os.cpu_count(),
remove_columns=["text"] # 元のテキスト列は学習に不要になるため削除します。
)
print("データセットのトークン化が完了しました。")
# --- 3. PEFT (LoRA) の設定 ---
# LoRA (Low-Rank Adaptation) は、元のモデルの重みをフリーズし、
# 小さなアダプター層を追加して学習させることで、効率的にファインチューニングを行います。
# これにより、GPUメモリの使用量を抑えつつ、高い性能を実現できます。
lora_config = LoraConfig(
r=16, # LoRAのランク。値を大きくすると表現力が増すが、メモリ消費も増える。
lora_alpha=32, # LoRAのスケーリング係数。rの2倍程度が推奨されることが多いです。
target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"], # LoRAを適用する層。Llamaモデルで一般的な層。
bias="none", # バイアスを学習しない設定。
lora_dropout=0.05, # ドロップアウト率。過学習を防ぐために設定します。
task_type=TaskType.CAUSAL_LM, # タスクタイプを因果言語モデルに設定。
)
# モデルにLoRAアダプターを追加します。
model = get_peft_model(model, lora_config)
print("モデルにLoRAアダプターを適用しました。")
model.print_trainable_parameters() # 学習可能なパラメータ数を確認します。
# --- 4. 学習の実行 ---
# 学習済みモデルを保存するディレクトリ
OUTPUT_DIR = "./llama3_finetuned_model/" # ユーザーが入力したパスがここに挿入されます
# 学習の設定
training_args = TrainingArguments(
output_dir=OUTPUT_DIR,
num_train_epochs=3, # エポック数。データセットのサイズと希望する精度に応じて調整してください。
per_device_train_batch_size=1, # GPUあたりのバッチサイズ。VRAMが少ない場合は1に設定。
gradient_accumulation_steps=4, # 勾配を蓄積するステップ数。実質的なバッチサイズは per_device_train_batch_size * gradient_accumulation_steps になります。
optim="paged_adamw_8bit", # 8bit AdamWオプティマイザを使用し、メモリ効率を向上させます。
save_steps=500, # 500ステップごとにモデルを保存します。
logging_steps=100, # 100ステップごとにログを出力します。
learning_rate=2e-4, # 学習率。
fp16=True, # 混合精度学習を有効化 (GPUが対応している場合)。VRAM削減と高速化に寄与します。
max_steps=-1, # num_train_epochsに基づいて学習します。
group_by_length=True, # 同じ長さのシーケンスをグループ化し、パディングを削減します。
lr_scheduler_type="cosine", # 学習率スケジューラーのタイプ。
warmup_ratio=0.03, # ウォームアップ比率。
report_to="none", # レポート先を指定しない (wandbなどを使用しない場合)。
)
# トレーナーの初期化
# data_collatorは、モデルの入力形式に合わせてデータを整形します。
trainer = Trainer(
model=model,
train_dataset=tokenized_dataset["train"],
args=training_args,
data_collator=lambda data: {
'input_ids': torch.stack([f['input_ids'] for f in data]),
'attention_mask': torch.stack([f['attention_mask'] for f in data]),
'labels': torch.stack([f['input_ids'] for f in data]), # 因果言語モデルでは、入力自体がラベルとなります。
},
)
# 学習の開始
print("Fine-tuningを開始します...")
trainer.train()
print("Fine-tuningが完了しました。")
# --- 5. 学習済みモデルの保存 ---
# LoRAアダプターのみを保存します。これにより、ファイルサイズが小さく、効率的に管理できます。
trainer.save_model(OUTPUT_DIR)
print(f"学習済みLoRAアダプターが '{OUTPUT_DIR}' に保存されました。")
# 保存したアダプターを使って推論を行う方法の例 (コメントアウトされています):
# このコードは、ファインチューニング後にモデルをロードして推論を行うための参考例です。
# from peft import PeftModel
#
# # 元のモデルをロード (学習時と同じ量子化設定を使用します)
# base_model = AutoModelForCausalLM.from_pretrained(
# MODEL_NAME,
# quantization_config=bnb_config,
# device_map="auto",
# trust_remote_code=True
# )
#
# # 保存したLoRAアダプターを元のモデルに結合します。
# peft_model = PeftModel.from_pretrained(base_model, OUTPUT_DIR)
#
# # 推論モードに設定します。
# peft_model.eval()
#
# # テキスト生成の例
# prompt = "ローカルPCでのLlama 3ファインチューニングの利点とは"
# inputs = tokenizer(prompt, return_tensors="pt").to("cuda") # 入力をGPUに移動
#
# with torch.no_grad(): # 勾配計算を無効化し、メモリ使用量を削減
# outputs = peft_model.generate(
# **inputs,
# max_new_tokens=200, # 生成する新しいトークンの最大数
# do_sample=True, # サンプリングによる生成を有効化
# top_p=0.9, # Nucleusサンプリングの閾値
# temperature=0.7, # 生成の多様性を制御する温度
# eos_token_id=tokenizer.eos_token_id # 終了トークンID
# )
# print("\n--- 生成されたテキスト ---")
# print(tokenizer.decode(outputs[0], skip_special_tokens=True))
明日へ続く
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
```, ;;), )。, アウト, アシスタント, アダプター, あたり, アップ, あなた, いくつ, ウォーム, エポック, エラー, エントリ, オープン, オプティマイザ, お金, クラウドサービス, グループ, クン, ゲーミング, コード, コア, ここ, こと, コミュニティ, コメント, これ, サイズ, サンプリング, サンプル, シーケンス, スクリプト, スケーリング, スケジューラー, スタイル, ステップ, スペック, すべて, ソース, そこら, タイプ, ダウンロード, タスク, ため, チューニング, ツール, データ, データセット, テーマ, ディレクトリ, テキスト, デバイス, デフォルト, トー, トークナイザー, とき, どれ, トレーナー, ドロップ, バイアス, パス, バッチ, パディング, パラメータ, バランス, ファイル, ファイルサイズ, ファインチューニング, ファインチューニングコード, フリーズ, プロ, プロンプト, マシン, マッピング, メモリ, モード, モデル, もの, ユーザー, よう, ライター, ライブラリ, ラベル, ランク, リモート, レベル, レポート, ローカル, ロード, ログ, 一般, 一部, 上記, 不要, 世界, 世界中, 並み, 並列, 予算, 付与, 以下, 以降, 企業, 使い, 使用, 係数, 保存, 個人, 優秀, 入力, 公開, 共有, 具体, 処理, 出力, 分割, 分散, 分野, 初期, 利点, 利用, 制御, 削減, 削除, 創造, 加速, 助け, 効率, 動作, 勾配, 十分, 参考, 反映, 可能, 向上, 味方, 因果, 場合, 多様, 夢物語, 大幅, 大量, 失敗, 学習, 完了, 完全, 完璧, 実現, 実行, 実質, 寄与, 対応, 専門, 導入, 少量, 工夫, 希望, 常識, 強力, 形式, 必要, 思い, 性能, 手元, 手法, 技術, 抜群, 指定, 指示, 挿入, 推奨, 推論, 提供, 整形, 新た, 方法, 日々, 明日, 明確, 明示, 時代, 時間, 最大, 最新, 最適, 有効, 未知数, 本格, 格段, 格納, 構築, 様々, 比率, 民主, 活用, 活発, 消費, 混合, 済み, 温度, 準備, 無効, 無料, 特定, 特権, 現実, 理由, 環境, 生成, 発生, 登場, 的確, 相性, 短時間, 確認, 秘訣, 移動, 程度, 管理, 節約, 精度, 終了, 結合, 結果, 続行, 能力, 自体, 自分, 自動的, 蓄積, 表現, 言語, 計算, 記事, 設定, 許可, 調整, 費用, 軽量, 追加, 通常, 適用, 選択, 重み, 重要, 量子, 開始, 開発, 関数, 閾値, 非常, 高速, 高額, 魅力,

お金の本 図解だからわかると貧乏人はお金持ちをパラめくして
2025.06.21
おはようございます.「お金の本 図解だからわかる」と「貧乏人はお金持ち」を電子書籍で読んでみて率直にひろゆき氏が書いた「お金の本 図解だからわかる」が読みやすい、逆に貧乏人はお金持ちは読みづらい、何故か過去の歴史のウンチクが多く内容が残らないと思う人が多いのではないかなと思いました.
書いている内容はわかるだけど、明確なアドバイスを書いているのはひろゆき氏のゴースト?が書いたものが良さげかと思います.
それぞれの本の内容をAIに解説してもらいました、気になる人は手にとって見てください.
「お金の本 図解だからわかる」は、ひろゆき(西村博之)氏が著者のお金に関する本です。正式なタイトルは「図解だからわかる お金の本 ー 死ぬまでお金にこまらない!」です。
この本は、以下のような特徴と内容を持っています。
- 図解で分かりやすい: タイトルの通り、図やイラストを多く用いて、お金に関する知識や考え方を直感的に理解できるように工夫されています。
- ひろゆき流のお金とのつきあい方: 2ちゃんねるやニコニコ動画、4chanの管理人として知られるひろゆき氏が、自身の経験に基づいた「お金に困らないための考え方」や「頭のいいお金とのつきあい方」について解説しています。
- 実践的な内容: 「お金の無駄遣いを減らす」「生活レベルを上げない」「ストレス解消にお金を使わない」「自己投資をする」「競争相手のいない分野で稼ぐ」といった、具体的な行動や考え方が提示されています。
- 現代のお金と社会の変化に対応: 生命保険、株、宝くじ、リボ払い、ソシャゲ、結婚、生活保護などのコスパをひろゆき氏の視点から一刀両断し、これからの時代のお金の稼ぎ方、貯め方、使い方について触れています。
- 「幸せ」とお金の関係: 本書で一貫して主張されているのは、「幸せになるにはお金を使わないこと」や「楽しいの最大化を目指すより不安や不幸をどれだけ減らせるかが重要」といった考え方です。
この本は、お金の運用的な話だけでなく、お金とは何か、お金との付き合い方や心掛けといった基本的ながらも大切な話がシンプルで端的に語られており、お金の知識を体系的に学びたい人や、ひろゆき氏の考え方に触れてみたい人におすすめの一冊と言えるでしょう。
橘玲さんの「貧乏はお金持ち」は、グローバル資本主義が進む現代において、会社に依存せず、「雇われない生き方」で経済的自由を掴むための具体的な戦略とファイナンスの技術について書かれた本です。
主な内容は以下の通りです。
- サラリーマンの「楽園」の終焉: 現代のサラリーマンが置かれている厳しい状況、つまり、企業に縛られ、税金や社会保険料で手取りが減っていく現状を指摘しています。
- フリーエージェント化する世界: 終身雇用が崩壊し、誰もがフリーエージェントとして生きる時代が来ていることを示唆しています。
- 「マイクロ法人」の活用: 本書の中で最も特徴的なのが「マイクロ法人」の活用法です。一人社長の小さな会社を設立することで、税制上の優遇措置を受けたり、国の制度の「歪み」を合法的に利用して富を築く方法が解説されています。
- サラリーマンでは決してできなかった税金の最適化(所得税と法人税の仕組みの違いを利用)
- まとまった資金を無税で運用する方法
- 低金利で融資を受ける方法
- ファイナンスの知識の重要性: 自分の人生を自分で選択し、自由に生きるためには、お金に関する知識(ファイナンス)が不可欠であると説いています。
- 「国家を道具として使う」という発想: 国家の制度や法律を「道具」として活用し、自身の経済的な利益を最大化するという、従来の常識を覆す視点を提示しています。
本書のターゲット層と評判:
- 会社に依存しない生き方を模索している人、独立や起業を考えている人、税金や社会保険料の負担に疑問を感じている人などに響く内容です。
- 税制や会計に関する専門的な内容も含まれるため、予備知識がないと難しく感じる部分もあるという意見もあります。しかし、サザエさん一家を例に出すなど、分かりやすく解説されている箇所も多く、税理士の知識がなくても理解できるよう工夫されています。
- 出版されてから時間が経っているため、税制などの情報が古くなっている部分もありますが、2024年には「新・貧乏はお金持ち」としてアップデート版も出ており、最新の状況に合わせた内容が加筆されています。
要するに、「貧乏はお金持ち」は、現代社会の経済システムを深く理解し、その中でいかに賢く生き、自由な人生を築いていくかを、大胆かつ具体的な方法で提案する一冊と言えるでしょう。
因みにどちらも自分がメンタルが沈んでいる時に購入した本で積本でした、メンタル沈んでいる時はこういう本がメンタルの栄養剤になるだと思います.あと、AIが解説した内容は概ね合っていますが概ね止まりですがまぁ無いよりはある方が良いと思い記載しています.
あと自己啓発ではないけど、自己啓発的な感じなので試して失敗しないように!
明日へ続く
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
!」, アップデート, あと, アドバイス, イラスト, うんちく, おすすめ, お金, グローバル, ゴースト, コスパ, こと, サザエさん, サラリーマン, サン, システム, シンプル, ストレス, ソシャゲ, それぞれ, ターゲット, タイトル, ため, チャン, どちら, どれ, ひろ, ファイナンス, フリーエージェント, マイクロ, メンタル, もの, ゆき, よう, リボ, レベル, 一刀両断, 一家, 一貫, 不可欠, 不安, 不幸, 世界, 主張, 主義, 予備, 人生, 仕組み, 以下, 企業, 会社, 会計, 体系, 使い方, 依存, 保護, 保険, 優遇, 具体, 内容, 出版, 分野, 利用, 利益, 制度, 加筆, 動画, 博之, 合法, 啓発, 図解, 国家, 基本, 変化, 大切, 大胆, 失敗, 宝くじ, 実践, 対応, 専門, 崩壊, 工夫, 常識, 幸せ, 従来, 心掛け, 情報, 意見, 感じ, 戦略, 所得, 手取り, 技術, 投資, 指摘, 措置, 提案, 提示, 方法, 明日, 明確, 時代, 時間, 書籍, 最大, 最新, 最適, 本書, 栄養剤, 楽園, 模索, 正式, 歪み, 歴史, 法人, 法律, 活用, 無税, 無駄遣い, 特徴, 状況, 独立, 率直, 現代, 現状, 理解, 生き方, 生命, 生活, 疑問, 発想, 直感, 相手, 知識, 示唆, 社会, 社長, 税制, 税理士, 税金, 端的, 競争, 箇所, 管理, 終焉, 終身, 経済, 経験, 結婚, 考え方, 自分, 自己, 自由, 自身, 著者, 融資, 行動, 西村, 視点, 解消, 解説, 記載, 設立, 評判, 負担, 貧乏, 貧乏人, 資本, 資金, 購入, 起業, 通り, 運用, 過去, 道具, 違い, 選択, 部分, 重要, 金利, 金持ち, 関係, 雇用, 電子,

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
タグ
コード, コピー, セット, ソースコード, バグ, パスワード, パスワード生成, ほしいところ, ランダム, 修正, 初期化, 数値, 数字, 文字, 次第, 生成, 補助, 補完機能, 記号, 選択,

一週間の予約が出来るデモコードです。良かったらどうぞ😌。 #php #code
2022.09.17
おはようございます、今日から台風接近らしいですね。この投稿は昨日書きました。
さて、一週間の予約(時刻表から)が出来るデモコードを書きました。これを書いたキッカケは昔の職場の方がこんな感じのUIを作られていたのを見て、自分も書いてみようと思いDEMOコードを朝起きて調べながら書きました。調べたことは選択を解除する方法だけで、後はオリジナルコードです、設計書も何もなく組み立ていきましたので、欠陥があるかもです。また、Qiitaにも記載しましたが、コメントをほぼ書いていません。書かずともプログラマーなら分かるだろうという感覚です。
肝心の確認部分は記載していないのにも訳があります。営業妨害になっては駄目だからです。そういう理由で確認部分以降は書いていません。
こちらにもソースコードを掲載しときますね。
<?php
ini_set("display_errors",0);
/**
* @param array $holiday
* @return string $str
*/
function fn_header($holiday = [])
{
$str = "";
$date = new DateTime();
for ($i = 0; $i < 7; $i++) {
!$i ? "" : $date->modify('+1 day');
$w = $date->format("w");
$tabindex = $i*7;
$ho = (function ($days, $holiday = []) {
return (array_search($days, $holiday) !== false) ? "holiday" : "";
})($date->format("Y-m-d"), $holiday);
$str .= "
<th tabindex=$tabindex>
<span class='header_no week_no_$w $ho'>" . $date->format("Y-m-d") . "</span>
</th>";
}
return $str;
}
/**
* @param int $h_min
* @param int $h_max
* @param int $m_interval
* @param array $cnt
* @param array $reserve
* @param array $holiday
* @return string $str
*/
function fn_time($h_min, $h_max, $m_interval,$cnt=[],$holiday = [], $reserve = [])
{
$str= [];
for ($h = $h_min; $h <= $h_max; $h++) {
for ($m = 0; $m < 60; $m = $m + $m_interval) {
print("<tr>\n");
$date = new DateTime();
for ($i = 0; $i < 7; $i++) {
$cnt[$i]=!$cnt[$i]?(((($h_max - $h_min)+1)*(60/$m_interval))*($i))+7:(++$cnt[$i]);
!$i ? "" : $date->modify('+1 day');
$w = $date->format("w");
$ho = (function ($days, $holiday = []) {
return (array_search($days, $holiday) !== false) ? "holiday" : "";
})($date->format("Y-m-d"), $holiday);
$time = sprintf("%02d:%02d",$h, $m);
if ($ho) {
print("
<td class='' tabindex={$cnt[$i]}>
<span class='header_no week_no_$w $ho'>" . $time . "</span>
</td>");
} else {
$r = (function ($days, $reserve = []) {
return (array_search($days, $reserve) !== false) ? "reserve" : "";
})($date->format("Y-m-d") . "_" . $time, $reserve);
if (!$r) {
print("
<td class='date_" . $date->format("Y-m-d") . "_{$time}' tabindex={$cnt[$i]} data-date='" . $date->format("Y-m-d") . "_{$time}'>
<a class='time_{$m}_" . $date->format("Y-m-d") . "_{$time}' data-sortno={$cnt[$i]} href='#?data=" . $date->format("Y-m-d") . "_{$time}'><span class='header_no week_no_{$w} {$h}'>{$time}</span></a>
</td>");
} else {
print("
<td class='' tabindex={$cnt[$i]}>
<span class='header_no week_no_$w $r'>" . $time . "</span>
</td>");
}
}
}
$date = null;
print("</tr>\n");
}
}
return "";
}
?>
<!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">
<title>予約-時刻表(デモ版)</title>
<style>
table,tr,td{
user-select: none;
}
</style>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-12 text-center">
<h1 class="display-1">予約-時刻表<br></h1>
<h5>{予約:時刻をクリックするか、<br>
左クリック選択状態で複数選択可能です<br>
(日付またぎは禁止しています)}</h5>
<h5>{ダブルクリックすると予約画面に遷移します。<br>
※DEMO版ですので予約登録画面は御座いません}</h5>
</div>
</div>
</div>
<div class="container-fluid text-center">
<div class="row">
<div class="col-12">
<table class="shadow-lg table table-hover table-bordered">
<thead>
<tr>
<?= fn_header() ?>
</tr>
</thead>
<tbody>
<?=fn_time(10, 20, 10,[],["2022-09-18","2022-09-23"],["2022-09-19_10:40","2022-09-19_10:50"]) ?>
</tbody>
</table>
</div>
</div>
</div>
<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>
let date_obj = document.querySelectorAll("td");
let submit_url = "https://example.com";
let is_date_data = [];
let cnt = 0;
date_obj.forEach(function (elm, key) {
elm.addEventListener("mouseout", select_in_value);
elm.addEventListener("click", sp_select_in_value);
elm.addEventListener("touchend", sp_select_in_value);
elm.addEventListener("dblclick", select_out_value);
});
function check_value(o, e) {
if (is_date_data.length === 0) {
return true;
}
let d = o.getAttribute("data-date");
return d ? ((d) => {
let f = is_date_data.find(element => {
let pattern = new RegExp(d.split("_")[0]);
return !element.match(pattern);
}) ? false : true;
if (!f) {
select_clear(o, e);
is_date_data = [];
cnt = 0;
}
return f;
})(d) : false;
}
function select_in_value(e) {
if (e.buttons === 1 && check_value(this, e)) {
if (this.getAttribute("data-date")) {
this.style.backgroundColor = "#555";
this.children[0].style.color = "#fff";
if (is_date_data.indexOf(this.getAttribute("data-date")) && is_date_data.indexOf(this.getAttribute("data-date"))) {
is_date_data[cnt] = this.getAttribute("data-date");
cnt++;
}
}
}
}
function sp_select_in_value(e) {
if (check_value(this, e)) {
if (this.getAttribute("data-date")) {
this.style.backgroundColor = "#555";
this.children[0].style.color = "#fff";
if (is_date_data.indexOf(this.getAttribute("data-date")) && is_date_data.indexOf(this.getAttribute("data-date"))) {
is_date_data[cnt] = this.getAttribute("data-date");
cnt++;
}
}
}
}
function select_out_value(e) {
if (is_date_data.length) {
let is_data = is_date_data.map(function (elm, index) {
return "date[" + index + "]=" + elm;
});
window.location.href = submit_url + "?" + is_data.join("&");
}
}
function select_clear(o, e) {
let is_ClassName = [];
is_ClassName = is_date_data.map(function (d) {
return "date_" + d;
});
is_ClassName.map(class_name => {
document.getElementsByClassName(class_name)[0].style.backgroundColor = "#fff";
document.getElementsByClassName(class_name)[0].children[0].style.color = "#0d6efd";
})
}
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
0, Code, com, demo, https, ligaLgY-uZ, php, qiita, UI, watch, www, youtube, オリジナル, キッカケ, コード, こちら, こと, コメント, これ, ソース, デモ, プログラマー, 一, 予約, 今日, 台風, 営業, 妨害, 後, 感じ, 感覚, 投稿, 接近, 掲載, 方, 方法, 昔, 昨日, 時刻表, 朝, 欠陥, 理由, 確認, 職場, 肝心, 自分, 解除, 記載, 設計書, 訳, 選択, 部分, 駄目,

基本情報技術者試験を無料で勉強する方法を教えます🤔。
2022.09.02
おはようございます、マスクをすると直ぐに肌に痒みを感じます💦。
前置きとして基本情報技術者試験は来年(2023年)からいつでも基本情報技術者試験が受けれるようになります。年二回の試験は今年で最後です、最後の試験も予約してCBT(Computer Based Testing(コンピュータ ベースド テスティング))で受ける形になります。CBTとは簡単に言えばパソコンを使用して回答するものになります、回答は選択式なので今までの筆記試験と変わりません。全問回答した後、直ぐに正答率が分かります。そこが筆記試験とは違う形になります😶。
さて、基本情報技術者試験を無料で勉強する方法を教えます。まずはYOUTUBEを使います。YOUTUBEで基本情報技術者などと検索すると基本情報の午前(A)問題や知識を解説しているYOUTUBERがいますので自分が分かりやすいなと思った人の動画を見ると良いでしょう。
次に動画解説を見た後に基本情報技術者の過去問を徹底に解くことが大事になります。因みに基本情報の午前は過去問題集を9割解けるようになれば確実に本試験でも7割は取れます。過去問題を解くのに最適なサイトで一夜漬け情報処理サイトがありますのでそちらを活用ください。
午前は大体、この方法で合格出来ますが、問題は午後(B)です。午後を解説しているサイトは少ない理由は午前は暗記問題ですが、午後は自分で考える力が大事になってきます。アルゴリズムの概念やデーターベースの概念、プログラムを読む力、また文章の読解力も必要になってきます。その為、まずは午後の問題をひたすら自分で解く事により解く力を身につけましょう。分からないことは自分で調べ、再度、問題を解くという反復学習により午後の試験を解く力が身につきます。尚、最初は時間制限を設けずに解くようにして、最後まで自分で解く力を養うようにしましょう。
このような事に気をつけながら勉強することで確実に合格に近づきます。後は毎日、勉強することですね。皆様、基本情報技術者試験頑張って下さい。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
2023, Based, CBT, Computer, https, Testing, www, YO, youtube, YOUTUBER, いつ, コンピュータ, そこ, テスティング, パソコン, ペースト, マスク, もの, 予約, 二, 人, 今年, 使用, 全問, 前置き, 勉強, 動画, 午前, 問題, 回答, 基本, 年, 形, 後, 情報, 技術者, 方法, 最後, 来年, 検索, 正答, 無料, 知識, 筆記, 簡単, 肌, 自分, 解説, 試験, 選択,

今日はエイプリルフールズですが、もう滅ぶと思ってます。
2022.04.01
おはよう御座います、4月になりましたね😪。
今日はエイプリルフールズですが、もう滅ぶと思ってます。理由はコロナやロシア軍のウクライナ進行とか、宜しくないことが立て続けにありますからね。
コロナ前は企業アカウントがエイプリルフールズに、いろいろな嘘をネットで呟いたりしてバズったりしていましたが、こんなご時世になったらエイプリルフールズのつぶやきはある意味命がけのつぶやきになりますリスクが大きすぎるのです、だから企業さんは自粛を選択する、それが数年続けばエイプリルフールズなんて言葉が死語になるって自分は思っています。
因みにグーグルがエイプリルフールズに呟く、どうしようもない本気のガジェットが好きでした。この頃、エイプリルフールズさけてますけど・・・。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
4, アカウント, いろいろ, ウクライナ, エイプリル, ガジェット, グーグル, こと, コロナ, ご時世, それ, ネット, バズ, フールズ, リスク, ロシア軍, 今日, 企業, 命がけ, 嘘, 意味, 数, 本気, 死語, 理由, 立て続け, 自分, 自粛, 言葉, 進行, 選択, 頃,

airpodとsonyのlinkbudsどちら買おうかと思案してます。
2022.03.30
おはよう御座います☀。日の出も徐々に早くなってきてますね。
ipodとsonyのlinkbudsどちら買おうかと思案してます。airpodとの良いところはインイヤー型のイヤホンって所なんですね。自分は耳の中までフィット感のあるのは、ちょっとゴワゴワ感が感じるので無理なんですね、、なんでインイヤー型のイヤホンをいつも選択しています。
linkbudsは外部の音も物理的に取り入れているところが売りのイヤホンです、こちらもインイヤー型のイヤホンです。
書いていて分かったのですが、airpodを買います。理由は旅先で使うときに外部音はいらないので・・・。そういう事を考えるとairpodが良いかなって思います。本当はインイヤーのairpod proがあればそちらを購入していると思います。
そう思うとairpodにノイズキャンセリング機能がつくまで待つのも良いかなって、それまでは保留にしておくのも良いかもしれないな。
それが今の心の声です。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
2, 4, 5, airpod, com, https, ipod, linkbuds, Pro, SONY, watch, www, youtube, YqrlOr, イヤー, イヤホン, いん, こちら, そちら, とき, ところ, どちら, フィット, 中, 事, 売り, 外部, 思, 思案, 感, 所, 旅先, 日の出, 本当, 理由, 耳, 自分, 購入, 選択, 音,

windows11のアップグレードされるまであともう少し?
2021.09.27
今日は朝、ヤシイパークまで自転車で行ってきました、行き帰りで結構な消費カロリーになるらしいですけど未だにあと10kgの体重が落ちません。今年中にはマイナス5kg落としたいなと思っています。
さて、話変わりまして10月の前半にはwindows10がwindows11へ条件を満たしていればアップグレードされます、因みに自分は条件を満たしているのでアップグレード対象者です。なんだかWindows11ってあのvistaに近い雰囲気がありますよね。今回のアップグレード、成功するかのかなぁ・・・。エンジニアが受けなくても一般ユーザーから好評だったら問題なく浸透するでしょうね。
アップグレードするとブラウザの変更が難しくなるとか言われています。初期設定で選択したブラウザから他のブラウザへ変更できないとか言われていますが、独禁法に接触すると思うので早々に変更できるようになるでしょう。なのでそういう面はあまり気にしていないのだけど、やはりGUI(グラフィックユーザーインターフェース)が大きく変わるとなれるまで時間がかかる気がします。
開発者としてはウィジェットが復活するらしいので、そこらへんは良いかなと思いますし、Androidアプリとかも仮想上で動かせるようになるのだとかで、そこらへんも良いかと思います。windows10でもアプリをインストールすれば仮想上で動かせるですけどね。
本当にあともう少し無償アップグレードが走ってwindows10とおさらばすることになるだなぁと思うと自分は複雑な気分になります。皆さんはどうですか?
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
10, 11, 5, kg, vista, Windows, アップ, エンジニア, カロリー, グレード, ブラウザ, マイナス, ヤシイパーク, ユーザー, 一般, 今回, 今年, 今日, 他, 体重, 初期, 前半, 変更, 好評, 対象者, 成功, 接触, 朝, 未だ, 条件, 気, 浸透, 消費, 独禁法, 結構, 自分, 自転車, 行き帰り, 設定, 話, 選択, 雰囲気, 面,

サブスクを再々見直してよかった件。Spotify解約はなかなか手強い。
2021.06.16
サブスクを見直してSpotifyをフリープランに変更しました、これからはYOUTUBE MUSIC+YOUTUBE Premiumで音楽やら動画を見るようにします。そもそもYOUTUBE Premiumは辞めれなかった。やっぱりYOUTUBE見るのに広告を見ないといけないのは正直なところ時間を消費しているような気がするので、それだったらその時間を買ったほうが良いなと思ったので、そういう選択をしました。これで年間、一万円ぐらい出費が消えるので良いかなと思います。自分にとって高価なアドビのイラレだけが…未だに重い出費ですね。
重い出費なので労働の仕事を始めようと動いています。高知県の地元IT企業はあまり気乗りしないので、もうIT企業は引退すると思います。技術はこれからも高めては行きたいとは思いますが、仕事としては副業でするという事に留めておきたいです。再復帰は今の所考えていません。
尚、つぶやきに書いていますが、プレイリストをエクスポートするなら、自前のコードを書いたほうが安全です、それが出来ない場合、クラウドワークスなどでお金を払って作ってもらった方がまだ安全なのかもしれないです。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
IT, MUSIC, Premium, Spotify, youtube, アドビ, イラレ, これ, サブ, スク, それ, ところ, プラン, フリー, 一万, 事, 今, 仕事, 件, 企業, 出費, 副業, 労働, 動画, 地元, 変更, 年間, 広告, 引退, 復帰, 所, 技術, 時間, 未だ, 正直, 気, 気乗り, 消費, 自分, 解約, 選択, 音楽, 高価, 高知県,

映画、騙し絵の牙を観てきました。
2021.03.30
映画、騙し絵の牙を観てきました。率直に感想を書くとするならば好みが分かれる映画かなと思いました。これまで生きてきた人生観により受ける印象が、かなり違うかなと思います、自分は騙し絵の牙はとても楽しめたし、面白い映画だと感じました。因みに自分は騙された感はなかったかな?
映画で印象に残ったのは、ラストあたりに『難しい事にトライすることが良い』という様なセリフがありましたが、やっぱりそうだなとあらためて感じました。難しい選択をしていないと生き残れないだなと実感。ついつい楽な方に行きがちだけどそこはレッドオーシャンなんだなと。
世の中、目まぐるしいぐらい変化しているように思えます。ここ一年で価値観や常識がいろいろと上書きされているように思えます。時代の転換期にきているように思えます。そんな事を考えながら映画を観ていると良いかもしれません。
最後に原作小説も読んでみたいなと感じる映画でした。今のタイミングで観てよかった?。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
いろいろ, オーシャン, かなり, ここ, こと, セリフ, そこ, タイミング, トライ, ラスト, レッド, 一, 上書き, 世, 中, 事, 人生観, 今, 価値観, 印象, 原作, 変化, 好み, 実感, 小説, 常識, 感, 感想, 方, 映画, 時代, 最後, 牙, 率直, 絵, 自分, 転換期, 選択,
paypayの現金チャージがしたい、方法書いているじゃんか!
2020.09.28
paypayの現金チャージがしたい方、公式サイトにチャージの方法が記載されています。セブン銀行ATMを使えば現金チャージが出来ます。
ここでそれって口座開設しないといけないじゃと勝手に思い込んでいましたが、口座開設の必要はなくチャージ出来るとのことです。
そうなんだ、ここ数日、チャージが出来なくて残高が1000円まで落ち込んでいたので、これは良かったなと思いました。
テキスト解説はこちらに記載されています。公式なので安心して参照ができるかと思います。
https://paypay.ne.jp/help/c0087/ 【セブン銀行の方法を参照ください】
動画で手順を解説している人がいますのでそちらも貼っときます。
尚、初回に銀行チャージなどを選択している方はセブン銀行とは表示されていないかと思います。チャージを選択して次にセブン銀行を選択するという手順で同じようにペイペイに現金チャージが出来るようになりますのでお試しください。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
0087, 1000, ATM, help, https, jp, ne, Paypay, ここ, こちら, こと, これ, サイト, セブン銀行, そちら, それ, チャージ, テキスト, ペイペ, 人, 公式, 初回, 動画, 勝手, 参照, 口座, 安心, 必要, 手順, 数日, 方, 方法, 残高, 現金, 表示, 解説, 記載, 選択, 銀行, 開設,

ECサイトのBASEショップを独自ドメインに!
2020.09.21
ECサイトのBASEショップを独自ドメインにする方法を書いていきます。まずはお名前ドットコムでドメインを取得します。下記の動画で解説していますのでそちらを参照ください。もし動画のリンクが切れていた場合、YOUTUBEで『お名前.com ドメイン取得』などとググってみてください。ドメインの購入方法が説明されている動画があると思います。
次にドメインが所得したあと、DNSの設定よりサブドメイン、『wwwか任意の名(shopなど)』ドメインのサーバ住所(在処)をBASEショップのサーバ住所に変更しなくてはならない為、ブルダウンメニューからCNAMEレコードを選択し『cname.thebase.in』と入力する必要があります。また左端の入力部分にはサブドメイン名を入力してください。
下記の画像を参照してください、手順を参考にしてサブドメインとCNAMEの値を設定し設定ボタンを押してください。(設定する値はwwwか任意のサブドメイン名となり、CNAMEの値はcname.thebase.inになります。)
最後にBASEサイトにログインし上記で設定したサブドメイン(wwwか任意の名(shopなど))を下記の動画を見本に申請してみてください。申請後、数時間で独自ドメインがECサイトで表示されている事が確認できると思います。
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
base, CNAME, com, DNS, EC, in, shop, thebase, www, youtube, あと, サーバ, サイト, サブ, サブド, ショップ, そちら, ダウン, ドットコム, ドメイン, ドメイン名, プル, ボタン, メニュー, リンク, レコード, 下記, 任意, 住所, 値, 入力, 動画, 参照, 参考, 取得, 名, 名前, 在処, 場合, 変更, 左端, 必要, 所得, 手順, 方法, 為, 画像, 解説, 設定, 説明, 購入, 選択, 部分,
感覚が違うよイーロン・マスク!
2019.12.21
スペースXのYOUTUBE動画を観ていたら
2017年にこんな動画があった…。
宇宙船を飛行機のように使うというもの。
いやこれは普通の人は考えないよな、、、その感覚がない。
飛行機の倍の予算で乗ることが出来ればこちらを選択する人はいるはず。
そして国から国へと移動するのが20?50分で出来てしまう・・・。
日本からアメリカへ行くのも1時間以内で行くことが
出来るようになれば、なんだか物事の考え方が変わっていくように
思います。
著者名
@taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
0, 1, 20, 2017, 50, com, youtube, zqE-ultsWt, アメリカ, イーロン, こちら, こと, これ, スペース, パス, マスク, もの, 予算, 人, 倍, 動画, 国, 宇宙船, 感覚, 日本, 普通, 物事, 移動, 考え方, 選択, 飛行機,

画像をタイル状に分離して一括ダウンロードさせるジェネレーター
2019.09.07
画像をタイル状に分離して一括ダウンロードさせるジェネレーターを
作ってみました。画像は自動的に削除されます?
あることをすれば他人の画像がアップした画像も削除されます。
ちなみに一括ダウンロードbuttonを押すと画像がサーバー上に保存され
強制ダウンロードが始まります。
動作はブラウザChromeオンリーです。
また一括ダウンロードを押すと複数のファイルを一括ダウンロードするか
どうかの問い合わせが表示されますので「はい」を
選択してください。尚、30秒以内に保存されていないファイルは
次々と削除されます。
サイトはこちらから
https://zip358.com/tool/demo5/index-14.html
ソースコードは下記になります。
ページ(base64生成+画像ダウンロード処理)
追記:zipファイルにより格納するように処理を変更しました。
参考にしたサイト:https://ex1.m-yabe.com/archives/4215
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>画像分離してダウンロード:画像分離ジェネレーター</title>
<meta name="description" content="画像分離してダウンロード:画像分離ジェネレーター">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="../jquery/jquery-3.4.1.js"></script>
<link rel="stylesheet" href="../bootstrap/css/bootstrap.css">
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-71682075-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-71682075-1');
</script>
<style>
body{
background-color: black;
color: antiquewhite;
}
img{
margin:10!important;
padding:10!important;
}
#container{
width: 100%;
}
#container img{
margin:10px;
}
</style>
</head>
<body>
<span id="bat"></span><a id="dl"></a>
<input class="form-control" type="file"></input>
<div id="container"></div>
<script>
$(function(){
$("[type=file]").on("change",function(){
$('#container').html("");
$("#bat").html("");
console.log($(this));
if(!$(this).prop('files')[0].type.match(/[png|jpg|jpge|gif]/)){
alert("ファイル形式エラー");
return false;
}
var canvas = document.createElement('canvas');
var reader = new FileReader();
reader.onload = function(event) {
var image = new Image();
image.onload = function() {
sprite = {width:50,height:50};
canvas.width = sprite.width;
canvas.height = sprite.height;
var ctx = canvas.getContext("2d");
var x = 0;
for(var i=0; i*sprite.height<image.height; i++){
for(var j=0; j*sprite.width<image.width; j++){
ctx.drawImage(
image,j*sprite.width,i*sprite.height,
sprite.width,sprite.height,
0,0,
sprite.width,sprite.height
);
var spriteElement = new Image;
spriteElement.src= canvas.toDataURL();
$('#container').append(spriteElement);
}
}
$("#bat").html("<input type='button' value='一括ダウンロード' onclick='bat_img()'>");
}
image.src = event.target.result;
}
reader.readAsDataURL($(this).prop('files')[0]);
});
});
function bat_img(){
var data = [];
for(var i=0; i< $("img").length;i++){
data.push({"base64":$("img").eq(i).attr("src"),"no":i});
}
$.ajax({
type: 'POST',
url: 'bat_img.php',
data:{"obj":data},
dataType: 'json'
}).done(function(obj){
if(obj[obj.length - 1 ].chk=="ok"){
var link = document.getElementById("dl");
link.href = obj[obj.length - 1].zippath;
link.download = "zipimg.zip";
link.click();
var data2 = [];
for(var i = 0 ; i < obj.length ; i++){
if(i==0){
data2.push({Path:obj.path,no:obj.no,t:obj.t,"zipimgpath":obj[obj.length - 1].zippath});
}else{
data2.push({Path:obj.path,no:obj.no,t:obj.t});
}
}
var del = function(){
$.ajax({
type: 'POST',
url: './bat_del.php',
data:{"obj":data2},
dataType: 'json'
});
};
del();
}
});
}
</script>
</body>
</html>
<?php
$i=0;
foreach($_POST["obj"] as $key=>$val){
$b64 = base64_decode(str_replace("data:image/png;base64,","",$val["base64"]));
$no = (int)$val["no"];
$t = time();
$Path = "./bat_img/tmp/$t-$no.png";
$re = @file_put_contents($Path,$b64);
if($re){
$obj[$i]["chk"] = $re?"ok":"ng";
$obj[$i]["name"] = "$t-$no.png";
$obj[$i]["path"] = $Path;
$obj[$i]["no"] = $no;
$obj[$i]["t"] = $t;
$i++;
}
}
$obj[--$i]["zippath"] = zipfile($obj);
print json_encode($obj);
function zipfile($obj){
$ZipFiles = function($obj){
foreach($obj as $key=>$val){
$path[] = $val["path"];
}
return $path;
};
$Zip_Files = $ZipFiles($obj);
$zipFileName = time().'_zipimg.zip';
set_time_limit(0);
$zip = new ZipArchive();
$zipTmpDir = './tmp/zip/';
$result = $zip->open($zipTmpDir.$zipFileName, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE);
if( $result !== true ){ //エラー処理
echo 'error!';
exit();
}
foreach ($Zip_Files as $key=>$filepath) {
$filename=basename($filepath);
// ZIP圧縮するファイルを追加
// ファイルパス・ファイル名としないと圧縮ファイルを解凍するとフルパスになる
$zip->addFile($filepath,$filename);
}
//ZIP 出力
$zip->close();
return $zipTmpDir.$zipFileName;
}
<?php
unlink($_POST["obj"][0]["zipimgpath"]);
foreach($_POST["obj"] as $key=>$val){
$Path = $val["Path"];
$no = (int)$val["no"];
$t = (int)$val["t"];
$cmd = function(){
foreach(glob("./bat_img/tmp/*") as $file_name){
$command = "rm -rf " . realpath($file_name);
exec($command);
}
};
if(pathinfo($Path)["extension"]=="png" and preg_match("/bat_img\/tmp/",$Path)){
if(is_file($Path)){
sleep(30);
unlink($Path);
}else{
$cmd();
}
}else{
$cmd();
}
}
著者名
@taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
1, 14, 30, 358, 4, 5, 64, archives, base, button, Chrome, com, demo, ex, html, https, index, m-yabe, tool, www, zip, アップ, オンリー, コード, こちら, こと, サーバー, サイト, ジェネレーター, ソース, タイル, ダウンロード, はい, ファイル, ブラウザ, ページ, 一括, 下記, 他人, 保存, 処理, 分離, 削除, 動作, 参考, 問い合わせ, 変更, 強制, 格納, 生成, 画像, 表示, 複数, 追記, 選択,
学校に行かないという選択。
2017.09.05
学校に行かないという選択はありだと思います。
いじめにあっている自分自身が一番、苦痛な時間を過ごす学校に
わざわざ通う必要はないかと思います。
もし親が無理やり学校に行かないといけないと言えば
一度、議論し合うことが大事になると思います。転校しても
いまはSNSがあり前の情報が筒抜けになっていたりと心機一転という事が
なかなか出来ないというのが今の現状かなと思います。
だったら、学校に行かないが一番の得策です。
ネットで勉強するという考え方や塾を使うという考え方、
社会出ていちばん大事なのは、今までの勉強だったりします。
高度な職になればなるほど今までの勉強の大切さがわかります。
そう世の中、結構厳しくて緩いです。
学校に行かない場合、20代になる前にできるだけ資格は必要になります。
簡単に言えば学力の証明書がないので、証明する資格が必要になります、
高卒認定試験(旧大検)には必ず合格しときましょう。だた世の中、厳しいので
それだけでは難しい。そこで自分が興味のもった国家資格を取得することを強くオススメします。
国家資格や高度資格は社会に出てからも自分の身を助けます。
学校に行かないを選択することにより
見えない不安が絶えず心の何処かに持つと思います。
なので、まずは自分が取れそうな資格から取得すること、そして
土日は外に出ることが大事です。ずっと家の中にいると知らず知らずの内に
負の考えが溜まっていきます。そうなると最初は頑張ろうと思っていたことも
投げ出してしまいます。なのでメリハリをつける意味でも
土日は外に出ることをオススメします。
また、学校に行ってみようと考えも出てくると思いますが
何度か挑戦して駄目だったことを繰り返して自分を追い詰めるより
いまの環境で飛躍する方が大事です。
著者名
@taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
B00HTXB4G0, アニメ英会話学習法, メリハリ, 世の中, 何処か, 何度か, 国家資格, 土日, 学校, 得策, 心機一転, 旧大検, 社会, 筒抜け, 考え方, 証明書, 選択, 高卒認定試験,
何者にもなれなかった症候群。
2016.10.04
何者にもなれなかった症候群。
「俺は海賊王になる!」と言った少年達が
いつの間にか年老いて中年になる、そして気づく
「自分、何者にもなれなかった」と、それはとにかく痛々しい。
35歳過ぎても、何かを目指している人は
ある意味、人生を賭けた賭けだと思います、そんな人を冷ややかな視線で見つめる人もいると思いますが
「人生は自分自身の選択で決める」訳なので結局、他人が指図する必要はないと思っています。
いまの中年は第一氷河期世代です。
この氷河期世代は、いまでも放ったらかしで政府も手厚い援助もなしで、今に至っている人が大半だと思います。社会も政治も信用していない。そういう中で生きてきた中年、フリーター達はいまでも「悶々」とした気持ちがある意味、他の世代より強い傾向があるのではないかと思います。
もしくは、諦めているかどちらかだと。
この氷河期世代に「諦めろ」というのは、はっきり言って「人生諦めろ」と言っているようなモノ
なので、それは駄目だと感じます。
じゃどうするか、「勝つまでやれ!」「違う土俵で戦え!」と彼らに叱咤激励する事を進めます。おそらく彼らは
「何者にもなれなかったわけでもなく」、もう何者になっているのですが、ただ時代が悪かったという側面があり
フリーターとして生きているわけです。
その今までの経験を「違う土俵」で生かさない限りおそらく彼らは「何者にもなれなかった」とつぶやく事になるだろうと感じます。
彼らに言いたい事は考えをシフトすることです。
(自分へ贈る言葉+同世代へ贈る言葉)
著者名
@taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
35, いま, それ, どちらか, フリーター, もの, 一, 世代, 中, 中年, 人, 人生, 今, 他, 他人, 何か, 何者, 信用, 俺, 傾向, 大半, 少年, 必要, 意味, 指図, 援助, 放ったらかし, 政府, 政治, 気持ち, 氷河期, 海賊, 症候群, 社会, 自分, 自身, 視線, 訳, 賭け, 選択, 駄目,
結局、SNSなんてものは暇な時しか使わない?
2016.05.05
結局、SNSなんてものは暇な時しか使わない?
もしくは宣伝か、やり取りぐらいか、感情の放出の時しか
使わなくなった気がする。
Twitterだったら使い出すとあれもコレも
呟くことも有るけど、リアルと関係のあるSNSっていうのは
そうも行かず、無難なことしか呟かないことが多いし
ましてや、人とつながりのあるSNSアプリでは
大体の人は無難なことしか言わないのではないだろうかと
思っています。
文字で書くと感情がうまく伝わらないことが多い。
おそらく文字より音声、音声より動画の方が
感情が伝わりやすい気がします。
これからの世代は殆どのひとがSNSとうまく
付き合っていかなくてならないだろうと思います。
もしくは全然、使わないという選択をする人も出てくると
思います。
自分はネットが好きですし、これからもSNSというものを
使っていくと思います。
コノ頃思うことは、
もう少しSNSの交流関係を増やしたいなと思うのですが
中々、広がらないですね・・・。
著者名
@taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
SNS, SNSアプリ, コノ頃思うこと, ソーシャルメディア論, つながり, ひと, やり取り, 世代, 中々, 交流関係, 宣伝, 感情, 放出, 文字, 殆ど, 結局, 選択, 関係, 音声,

99%ありがとうをパラ読みして(`・ω・´)
2014.08.28
藤田正裕さんは正直ものだと99%ありがとうをパラ読みして思った。
交換しよっか?
おまえとおまえのつまんねー生活への愚痴や言い訳、もう散々・・・・正直、クソくらえ。
この文面を読んだ時、この人は強いわ。もう十分、ALSという病に勝っている、あとは根治させる薬を待つだけです。たぶん、この人はALSという病に勝つと思います。病に勝つという気持ちを持っている人はその時点でもう勝っているだと自分は思います。毎日、生と死の戦いをしている、それだけでも並外れた精神力です。そして生きるを自分で選択している。
普通の人は病に侵されると精神がまいります{なんで自分は、こうなるのだと思うんです普通は}、そこから這いがってくる人は少ない、それに打ち勝つ人が中にはいます。そういう人は精神力が強い。何クソかという生へ執着心=精神力が強い人だと思います。ALSに勝ってほしいと自分は心から思います。
こういう人こそカッコイイっていうだなと心底おもいます。
著者名
@taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
99, ALS, nbsp, あと, おまえ, クソ, そこ, それ, それだけ, もの, 中, 交換, 人, 何, 執着心, 心底, 愚痴, 戦い, 散々, 文面, 時, 時点, 普通, 根治, 正直, 正裕, 死, 毎日, 気持ち, 生, 生活, 病, 精神, 精神力, 自分, 薬, 藤田, 言い訳, 選択,