Photo by Victor Dunn on Pexels.com

AIで記事を学習して新たな記事を生み出すにはお金が必要だと思っていたがそうでも.

2025.06.22

Logging

おはようございます.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に書かせるのは難しいかもしれません。しかし、ちょっとした工夫で「何とかなる」レベルの記事生成は十分に可能です。

  1. 少量のデータでファインチューニング: 大量の記事データは不要です。あなたが書きたい記事のテーマやスタイルに合った、質の良い記事を数十〜数百程度集めてLlama 3を学習(ファインチューニング)させれば、その分野に特化した記事生成能力が格段に向上します。
  2. プロンプト(指示文)の工夫: AIへの「指示の出し方」は非常に重要です。具体的で明確なプロンプトを与えることで、チューニングが完璧でなくても、驚くほど質の高い記事が生成できます。これはまるで、優秀なアシスタントに的確な指示を出すようなものです。
  3. 効率的な学習方法の活用: 「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

OFUSEで応援を送る

タグ

```, ;;), )。, アウト, アシスタント, アダプター, あたり, アップ, あなた, いくつ, ウォーム, エポック, エラー, エントリ, オープン, オプティマイザ, お金, クラウドサービス, グループ, クン, ゲーミング, コード, コア, ここ, こと, コミュニティ, コメント, これ, サイズ, サンプリング, サンプル, シーケンス, スクリプト, スケーリング, スケジューラー, スタイル, ステップ, スペック, すべて, ソース, そこら, タイプ, ダウンロード, タスク, ため, チューニング, ツール, データ, データセット, テーマ, ディレクトリ, テキスト, デバイス, デフォルト, トー, トークナイザー, とき, どれ, トレーナー, ドロップ, バイアス, パス, バッチ, パディング, パラメータ, バランス, ファイル, ファイルサイズ, ファインチューニング, ファインチューニングコード, フリーズ, プロ, プロンプト, マシン, マッピング, メモリ, モード, モデル, もの, ユーザー, よう, ライター, ライブラリ, ラベル, ランク, リモート, レベル, レポート, ローカル, ロード, ログ, 一般, 一部, 上記, 不要, 世界, 世界中, 並み, 並列, 予算, 付与, 以下, 以降, 企業, 使い, 使用, 係数, 保存, 個人, 優秀, 入力, 公開, 共有, 具体, 処理, 出力, 分割, 分散, 分野, 初期, 利点, 利用, 制御, 削減, 削除, 創造, 加速, 助け, 効率, 動作, 勾配, 十分, 参考, 反映, 可能, 向上, 味方, 因果, 場合, 多様, 夢物語, 大幅, 大量, 失敗, 学習, 完了, 完全, 完璧, 実現, 実行, 実質, 寄与, 対応, 専門, 導入, 少量, 工夫, 希望, 常識, 強力, 形式, 必要, 思い, 性能, 手元, 手法, 技術, 抜群, 指定, 指示, 挿入, 推奨, 推論, 提供, 整形, 新た, 方法, 日々, 明日, 明確, 明示, 時代, 時間, 最大, 最新, 最適, 有効, 未知数, 本格, 格段, 格納, 構築, 様々, 比率, 民主, 活用, 活発, 消費, 混合, 済み, 温度, 準備, 無効, 無料, 特定, 特権, 現実, 理由, 環境, 生成, 発生, 登場, 的確, 相性, 短時間, 確認, 秘訣, 移動, 程度, 管理, 節約, 精度, 終了, 結合, 結果, 続行, 能力, 自体, 自分, 自動的, 蓄積, 表現, 言語, 計算, 記事, 設定, 許可, 調整, 費用, 軽量, 追加, 通常, 適用, 選択, 重み, 重要, 量子, 開始, 開発, 関数, 閾値, 非常, 高速, 高額, 魅力,

Photo by Chris G on Pexels.com

映画、Flowを観ましたので感想を残しときます.

2025.03.15

Logging

おはようございます.映画、Flowを観ましたので感想を残しときます.映画、Flowを観ました.セリフ無しの映画を観るのははじめてでしたがまずまず良かった気がする.ラストシーンの事を語るとネタバレにも繋がるので何も言えないけど.この映画の大きなテーマに生命という物があると思います.そして動物達を通して人を描いている気がする.

あと、この映画はかなり没入感があり何だかリアルな感じに思えたのが不思議でした.これをもっと大きなスクリーンで観えたらもっと没入しそうでした.それぐらい臨場感があり良かったです.

そしてこの映画は映画館でないとほぼ良さが伝わらない気がしています.何故、大きなスクリーンで観ないといけないかは映画館でみないと分からないと思いますが、絵(CGアニメ)の中に本当に引き込まれてしまいそうな何か変な感覚を持ったことは確かです.

前列でみないと分からないかもですけど.

明日へ続く

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

アニメ, かなり没入感, スクリーン, セリフ無し, テーマ, ラストシーン, , 前列, 動物達, 感想, 感覚, 映画, 映画館, , , 生命, , 臨場感,

Photo by Pixabay on Pexels.com

映画、海の沈黙を観てきましたので感想を残しときます.

2024.12.06

Logging

おはようございます.映画、海の沈黙を観てきましたので感想を残しときます.この映画は無名の天才画家の半生を描いた作品です.原作小説は倉本聰 氏が手掛けたものになります.倉本聰 氏が世の中へ伝えたい思いが映画でも表現されていたということは映画を観ると良く理解出来ると思う.

11.22公開『海の沈黙』予告編

だけども、この映画が万人に受ける映画だとは中々思えないが、とても意義のある作品になっている事は分かる.そして伝えたい思いは映画のラストシーンに詰まっている.

美をテーマにしているけれども、実際のテーマは他人の良し悪しで動くのではなく自分で考えを持つことの重要性説いている映画だと.

まとめ:万人受けする映画だとは言えないけれど意義のある作品.

明日へ続く

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

テーマ, まとめ, ラストシーン, , 他人, 作品, 倉本聰, 半生, 原作小説, 天才画家, 実際, 意義, 感想, 映画, 沈黙, , 無名, , 自分, 重要性,

テレビ見ない人が好きなコマーシャル

2023.11.28

Logging

おはよう御座います、テレビ見ない人が好きなコマーシャルを記載しときます。これが掲載されているときにはリンク切れになっていたりするかも知れません。そんな時はYOUTUBEで検索してください。

誰がアーカイブしているから見つかると思います。

カロリーメイト CM|「光も影も」篇 120秒
藤巻亮太 「3月9日」 (カロリーメイトCM『夢の背中』篇フルバージョン)
ブルーハーツの名曲「人にやさしく」受験生の歌声で繋ぐ感動CM  カロリーメイト新CM「心の声」篇
加藤清史郎&東京03・飯塚が受験生と教師を熱演 カロリーメイト受験生応援シリーズ第7弾 新CM 『見えないもの』篇
総勢760人がダンス!ポカリスエット新CM「青ダンス 魂の叫び」篇 60秒

ほとんど、カロリーメイトとポカリスエットのCMになっているのは受験や学生時代をテーマにしたのが好きなだけ、短い動画だけどそこに感動や躍動感があるのって凄い考えられて本当に凄いです。

そして何よりこんな短い動画なのに感動したり心が動くのが何よりいい。最後に受験をテーマした動画ではないけど番外編としてこれも良いですね。

【西武・そごう】わたしは、私。|炎鵬の逆転劇 スペシャルムービー

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

CM, youtube, カロリーメイト, コマーシャル, テーマ, テレビ, ポカリスエット, リンク切れ, , 動画, 受験, 学生時代, , 感動, 最後, 番外編, 短い動画, 躍動感,

Photo by Andree Brennan on Pexels.com

WPでWeb サーバーにアクセスする必要がありますの対処編:インフラ周り。

2022.07.03

Logging

おはようございます。WP(ワードプレス)でテーマや更新の際にFTPやSFTPのパスワードを求められたときの対処を記載します。この問題はApacheサーバーでもエンジンエックス(Nginx)でも対応は同じです。巷ではApacheグループに任意のユーザー名を付与しなさいという記載がありますが、其れだけでは駄目な場合があるのです。

gpasswd -a [ユーザー名] [グループに追加したいユーザー名]
gpasswd -a hoge apache

なので、phpのphp-fpm.dのディレクトリ配下にあるwww.confファイルの記載(user名とグループ名)を変更してあげる必要があります。変更後、php-fpmとhttpdを再起動してあげてください。

sudo vi /etc/php-fpm.d/www.conf
sudo systemctl restart php-fpm
sudo systemctl restart httpd

そうすれば、「Web サーバーにアクセスする必要があります」というような文言は非表示なり問題なく動作すると思います。

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

A`, Apache, conf, etc, FTP, gpasswd, hoge, httpd, nginx, php, php-fpm, restart, SFTP, sudo, System, systemctl, user, vI, web, wp, www, アクセス, インフラ, エックス, エンジン, グループ, サーバー, テーマ, ディレクトリ, とき, パスワード, ファイル, プレス, ユーザー, ワード, 付与, 任意, 其れだけ, 再起動, , 周り, 問題, 場合, 変更, 対処, 対応, , 必要, 更新, 記載, 追加, 配下, , 駄目,

disられてる?勘違いでもない気がするかも?。

2020.08.11

Logging

なんかdisられてる気がする。勘違いでもない気がするかも?、疲れているのかなぁ?ディスリスペクトしているひとはイケハヤさんなのだけど、どうもイケハヤ大学とセカンドチャンネルでディスられてる気がする。ここ最近のここのブログネタとイケハヤさんの動画投稿を見比べてみてください、なんか軽くディスられているような気がします、勘違いかもしれないけれども・・・。

【有料級】「テーマ」がない人は、SNSで稼げません。

どうもイケハヤさんこの頃ネタがないじゃないのか・・・と。イケハヤさんの動画をブログに貼り付けたことが原因だろうけど、残念だけど別にテーマ決まっていなくても良いですよ。

確かにテーマ決めると読まれやすいので、自分も過去に同じようなアドバイスした事があります。だがしかし、絵日記系はテーマいらいないのですね、デザイン系やプログラム系のごった煮でも需要がアレばアクセスは付きます。

要は需要に答えれているかということです。そしてもし本当にディスられても自分はどうでも良いです。自分もたまにネタにしているわけだから。

『ふぅ?。』

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

dis, アクセス, アドバイス, アレ, イケハヤ, ここ, ごった煮, こと, セカンド, チャンネル, テーマ, ディス, デザイン, ネタ, ひと, ブログ, プログラム, リスペクト, , 動画, 勘違い, 原因, 大学, 投稿, 最近, 本当, 残念, , 絵日記, 自分, , , 過去, 需要, ,

ワードプレス電光掲示板プラグインを作りました。

2019.12.05

Logging

電光掲示板(お知らせ)のプラグイン取扱に関して記載します。

プラグインに関してはワードプレス5.2以降を推奨としテーマファイル(外観)のheader.phpのbody直下に下記の記述が存在しない場合は追加記述を
お願いいたします。

<?php wp_body_open();?>

尚、プラグインのソースコードはご自由に変更頂き二次配布も構いませんが
ひとつ注意事項があります。参照した記事にリンクを貼ってください、
なお、事前の連絡等入りません。

電光掲示板(お知らせ)のソースコードは下記になります。
現在、テキストはHTMLタグを許していますので、いろいろと自由に
変更することが可能かと思います。

ちなみにこういった電光掲示板みたいな流れる仕様のコードは
インターネットの初期のころは多く見られましたが
このごろは全然、見なくなりましたね。。。

CSSの記述に関してはとくめいさんの記述を使用させて頂きました。
https://creatorclip.info/2014/06/css3-electric-bulletin-board/

とくめいさんも同じようなことを記事に記載しておりますが
自分もそのように感じました。

とくめいさんへ断りもなく使用してすみません、
Twitterで連絡しようかなと思ったのですが、それもなんだかと思い
勝手ながらこのような手段を取りました。

お知らせ(電光掲示板)のダウンロードは下記になります。
下記のファイルを解凍しワードプレスのプラグイン領域にフォルダごと
アップロードしプラグインを有効にするとご使用頂けます。

https://zip358.com/plugin/Z-Electric-bulletin-board.zip

<?php
/*
Plugin Name: Z-Electric-bulletin-board
Plugin URI: https://zip358.com/plugin/Z-Electric-bulletin-board.zip
Description: お知らせ
Author: taoka toshiaki
Version: 1.0
Author URI: https://zip358.com/
*/
add_action( 'wp_head', function() {
    $color = get_option('ZEBB_color')?get_option('ZEBB_color'):"ffffff";
    $cssdata ="
    <style>
        /* =====================
            電光掲示板
        ======================= */
        .ledText {
            overflow: hidden;
            position: relative;
            padding:5px 0;
            color: #$color;
            font-size: 60px;
            font-weight: bold;
            background: #333333;
        }
        /* CSS3グラデーションでドット感を出す */
        .ledText:after {
            content: ' ';
            display: block;
            position: absolute;
            top: 0;
            right: 0;
            bottom: 0;
            left: 0;
            background-image: linear-gradient(#0a0600 1px, transparent 0px), linear-gradient(0, #0a0600 1px, transparent 1px);
            background-image: -webkit-linear-gradient(#0a0600 1px, transparent 0px), -webkit-linear-gradient(0, #0a0600 1px, transparent 1px);
            background-size: 2px 2px;
            z-index: 10;
        }
        /* CSS3アニメーションでスクロール */
        .ledText span {
            display: inline-block;
            white-space: nowrap;
            padding-left: 100%;
            -webkit-animation-name: marquee;
            -webkit-animation-timing-function: linear;
            -webkit-animation-iteration-count: infinite;
            -webkit-animation-duration: 15s;
            -moz-animation-name: marquee;
            -moz-animation-timing-function: linear;
            -moz-animation-iteration-count: infinite;
            -moz-animation-duration: 15s;
            animation-name: marquee;
            animation-timing-function: linear;
            animation-iteration-count: infinite;
            animation-duration: 15s;
        }
        @-webkit-keyframes marquee {
        from   { -webkit-transform: translate(0%);}
        99%,to { -webkit-transform: translate(-100%);}
        }
        @-moz-keyframes marquee {
        from   { -moz-transform: translate(0%);}
        99%,to { -moz-transform: translate(-100%);}
        }
        @keyframes marquee {
        from   { transform: translate(0%);}
        99%,to { transform: translate(-100%);}
        }
    </style>
    ";
    print $cssdata;
 });
add_action("wp_body_open",function(){
    $text = get_option('ZEBB_text')?get_option('ZEBB_text'):"";
    if($text)print '<p class="ledText"><span>'.$text.'</span></p>';
});
add_action('admin_menu','Z_Electric_bulletin_board_set');
function Z_Electric_bulletin_board_set(){
	add_options_page(
		'zip358.com:プラグイン',
		'電光掲示板設定',
		'administrator',
		'Z_Electric_bulletin_board',
		function(){
            if(isset($_POST["ZEBB_color"]) or isset($_POST["ZEBB_text"])){
                $color = preg_match("/[a-zA-Z0-9]*/",$_POST["ZEBB_color"])?$_POST["ZEBB_color"]:"ffffff";
                update_option('ZEBB_color', wp_unslash($color));
                $text = $_POST["ZEBB_text"];
                update_option('ZEBB_text', wp_unslash($text));
            }
            ?>
            <form method="post" action="">
                <h2>電光掲示板設定</h2>
                color code #<input type="text" style="width:350px" name="ZEBB_color" value="<?=get_option('ZEBB_color')?get_option('ZEBB_color'):""?>" placeholder="f7f7f7"><br>
                text <input type="text" style="width:350px" name="ZEBB_text" value="<?=get_option('ZEBB_text')?get_option('ZEBB_text'):""?>" placeholder="文字を記入してください"><br>
                テキスト文字を未入力にすると電光掲示板が表示されません
                <?php submit_button(); ?>
            </form>
            <?php
        }
	);
}

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

5.2, body, css, gt, header, html, lt, open, php, wp, いろいろ, インターネット, お知らせ, お願い, コード, こと, ころ, ごろ, ソース, タグ, テーマ, テキスト, トク, ひとつ, ファイル, プラグイン, プレス, メイ, リンク, ワード, 下記, 事前, 事項, , 仕様, 使用, 初期, 参照, 取扱, 可能, 場合, 変更, 外観, 存在, 推奨, 掲示, 注意, 現在, 直下, 自由, 記事, 記載, 記述, 追加, 連絡, 配布, 電光,

東大読書 10万部をパラっと。

2018.10.24

Logging


東大読書をパラっと見ました。
東大にはいるにはどうしたら良いということを
少し書いている本であるけれど、基本は読書術の書いた本です。
東大にはいるには、まず本に書いていることに疑問を持つことが
大事だとか、何故なら東大の試験は過去暗記だけで解ける問題ではなく
基礎をがっつり理解した上で、自ら考えて応用して解く問題が
東大の試験には多いだそうです。
ここらへん、漫画ドラゴン桜と同じことを書いていますよね。
この本のすごい所は読書術だけで282ページ書いている所です。
行間隔広いといえば広いですけど、それでも
読書術というテーマだけで自分は書けそうにないですね。


 

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

いまいち, ここら, すごい所, テーマ, 問題, 基本, 基礎, 少し, 暗記式, , 東大読書, 漫画ドラゴン桜, 疑問, 行間隔, 試験, 読書術, 過去, 過去暗記, 頭力,

映画、ローグワン・スター・ウォーズを観てきました。 #映画レビュー

2016.12.16

Logging


仕事帰りに映画、ローグワン・スター・ウォーズを観てきました。
結構期待していたので、期待よりはやや不満足気味なのですが
スター・ウォーズとしては間違いなく成立していた映画です。
自分としてはスター・ウォーズの枠を壊してほしいような
気がするのですね。昔ながらスター・ウォーズという伝統が
在るのも分かるのだけど、SFとしては何だか昭和ぽっい、
そこが良いという人もいると思うのですが
そのSFさを新たに平成バージョンに進化してほしいです。
ラストは言えない言ったら面白くないので言いませんが
ラストのラストは凄いなと・・ハリウッド・・・役者さんいらないな・・・。
もう・・・そんなレベルなのか。
https://www.youtube.com/watch?v=3lf_Bf3SAsU
 
今回のテーマは希望だったと思いますが
もっというと希望をつなぐというのが今回のテーマだったと思います。
そういう意味でも、もう一味欲しかった内容でした。
クドいようですが
良かったところもあるのですけど全体的に
ワンパが目立ったなって感じです、仕方がないと言えば
仕方がないですけどね。シリーズモノはそういう展開ですからね。
ちなみにローグとはゴロツキ、ならず者とか言う意味です。
 

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

, bf, com, https, lf, nbsp, SAsU, SF, watch, www, youtube, ウォーズ, スター, そこ, テーマ, バージョン, ハリウッド, ラスト, レビュー, レベル, ローグ, ワン, 一味, 不満足, , 今回, 仕事, 伝統, 内容, 希望, 平成, 役者, 意味, 成立, 映画, 昭和, 期待, , , 自分, 進化,

映画、ヴィンセントが教えてくれたことを観てきましたので感想なんかを。 #映画レビュー

2015.09.05

Logging

映画、ヴィンセントが教えてくれたことを観てきましたので感想なんかを残しておきます。最初はどうかなと思った映画だったんですけど最後でうまくやられた(´Д`)、良い映画でした。泣けるか泣けないかはその人の人生観とかそういうものに影響すると思うのですけど、じぶんは泣けた派です。ちなみに朝一番に映画見に行ったのですけど、お客さんは閑古鳥が鳴くぐらい少なかったですが映画の内容は悪く無いと思います。いじめをテーマにした映画ではないということだけは言っておきます。ヴィンセントが教えてくれたことと言うタイトル通りの映画です。じぶんも映画を観てヴィンセントに教えてもらった気がします。期待して見ないで行けばお釣りはきっと・・・おすすめですね。

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

ヴィンセント, おすすめ, お客さん, お釣り, こと, じぶん, タイトル, テーマ, もの, レビュー, , 人生観, 内容, 影響, 感想, 映画, 最初, 最後, 朝一番, 期待, , , 閑古鳥,