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で応援を送る

タグ

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

サーバー移行に1日欠けた.一斉に12ドメインの引っ越しました.

2025.04.28

Logging

おはようございます.サーバー移行に1日欠けました.一斉に12ドメインの引っ越しましたという話を書いていきます.先日の休みの日の早朝にサーバーの移行を思い立ちました、何故に今かと言えばGWの連休を使いたくないのでやるなら今かなと思い実行に移しました.ちなみに自分は思い立ったら吉日という性格なので思い立つとその日の内に始めることが多いです.

今回も事前に計画を立てた訳ではないけど無事、全部のドメインを1日で引っ越しました.強引な引っ越しなので表示されない時間帯もあり、その時は収益化出来なかったのでその日はあまり収益が入って来なかったですが、やっぱ安定したサーバーの方が良いです.

当分はレンタルサーバーで運用しつつレンタルサーバーで出来ないことはVPSサーバーのバックエンドで投げるという形を取り運用しつつ.VPSサーバーを綺麗にして再度運用するかダウングレードしてバックエンド処理として使用するかを今考えています.

今回、Docker運用してたけどDockerってかなりメモリを食うことが判明してメモリやCPUが圧迫したら解放や再起動行うことを低レイヤーで処理していただけど、あまりにもお粗末な対応だと思ったので一旦引っ越しした経緯もありますが計画していた訳では無いです.

付け加えると自分としてはVPSサーバーを再構築したいという気持ちの方が強いけど、ボチボチするつもりでいます.今度はDocker使用しません.

明日へ続く

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

かなりメモリ, サーバー, サーバー移行, ドメイン, バックエンド, バックエンド処理, メモリ, レンタルサーバー, 一旦, 低レイヤー, 再度, 収益, 吉日, 実行, 性格, 早朝, 移行, 経緯, 解放, 連休,

yieldの発音としては「イィールドゥ」が該当するが、日本語では「イールド」と読むのが一般的らしい

2025.04.01

Logging

おはようございます.yieldの発音としては「イィールドゥ」が該当するが、日本語では「イールド」と読むのが一般的らしい、そもそも自分は読むことすら最初は出来なかったのですが、イールドの意味は生む、生産する、収率などなどの意味があります.PHPではジェネレータ処理の時に使用されますね.

ジェネレータ(generator)とは生産機などの意味があります、因みに古のPHP 5.5 から導入されたイテレータ(iterator)を簡単に実装できる機能で、反復処理においてメモリを節約しながら処理できるというものでとても理にかなっています.

イテレータという古の呪文を唱えなくても簡単にできる点で言えばアレに似ています.JavaScriptのasync awaitが登場する前にとても似ています…

ジェネレータ処理はストリーミング処理と相性が良いです.ストリーミング処理といえば大量のデータを扱う時に相性が良いということです.

尚、LaravelではLazyCollection(レイジーコレクション)というものがジェネレータ処理に当たります.レイジーとは怠け者🦥という意味らしいです.

最後にLazyCollection(レイジーコレクション)のドキュメントリンクを貼っときます.

https://readouble.com/laravel/11.x/ja/collections.html#:~:text=LazyCollection

明日へ続く

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

アレ, イールド, イィールドゥ, イテレータ, ジェネレータ, ジェネレータ処理, ストリーミング処理, ドキュメントリンク, メモリ, レイジー, レイジーコレクション, 反復処理, 収率, , 呪文, 怠け者, 最後, , 発音, 相性,

Photo by John Petalcurin on Pexels.com

お茶をデスクにぶちまけてしまった話.キーボードがバグる、一週間ぐらい放置して.

2025.03.28

Logging

おはようございます.お茶をデスクにぶちまけてしまった話を書いていきます.お休みの日にデスク周りを配置換えしようと整理していたらお茶を置いていることを忘れていて手がカツンと当たってしまいキーボードやデスクにお茶をぶちまけてしまったという事が起きてしまいました.

一瞬、フリーズしたのですがティシュなどを使用して溢したお茶を吸い取って何とかなったと思ったのも束の間、キーボードがzを押してもzlとか意味不明な入力が返ってくる.

「あっ基盤かな」と思ったので一週間ぐらい放置して天日干しようかなと思ったのですが、イラレなので1日置いてキーボードを分解して基盤にあった水玉を拭き取って復活.

自分的にはよかったって感じですね.

そう言えば先日からPC周りがトラブルが頻発している、先日の仕事中にパソコンが固まって強制終了、再起動したところ何だか起動音はするのだけど、そこからログイン画面が全然出てこない状態になってしまい「えっ買い替えないといけないのか等など」が頭をよぎったのですが、、、

何とかサブノートパソコンからWindows11をダウンロードしてきてUSBにISOをコピーしてUSB上のWindows11を立ち上げてバックアップ時点にデータを戻して復旧.

因みに何故かUSBに書き込みを行った時にUSBメモリも壊れてしまって一個御臨終になりました.まぁこれで三回トラブルが起きたので当分の間はパソコンでのトラブルは無さそうですがトホホですねー.

明日へ続く

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

お茶, カツン, キーボード, サブノートパソコン, ティシュ, デスク, デスク周り, トホホ, バックアップ時点, メモリ, 一個御臨終, 一瞬, 基盤, 天日干しよう, 復旧, 復活, 束の間, 水玉, , 配置,

Photo by SevenStorm JUHASZIMRUS on Pexels.com

休日のひとり反省会と知見とかを書いていきます.慣れないことは慣れるまで.#恥は書き捨て

2025.01.27

Logging

おはようございます.先日、レンタルサーバからVPSサーバに移行したのだけど結構たいへんでした.今回はエンジンエックスをプロキシサーバして使い、Apacheサーバに飛ばしているという仕様ですがやってみて己の知識の無さを痛感しました.知識の無さを生成AIで補って何とか安定した運用になっているみたいです.

メモリがカツカツになって当初計画していた運用は断念しました.人生思い通りに、計画していた通りにならないという事を改めて痛感.まず、コンテナ運用はメモリを食うということを学びました.

メモリを食うならメモリを掃除してもらうアプリを入れたら良いじゃないのかと思うでしょうけど、2Gのメモリでは直ぐにカツカツになります.なので先日も書いた通りコンテナは少なめに抑えましょう.

次にプロキシサーバとかにしているとWordPressページを開くとループしてしまう問題があります.そちらを解決策はこちらを参照ください.

次にコンテナで運用しているとWordPressで書き込みが出来なくなるという事が発生する場合があります.そちらを解決するには下記の方法が良さげかと思います.

usermod -u 1000 apache && groupmod -g 1000 apache

あとWordPressのコンフィグに下記の設定しておくのも良いです.

define('FS_METHOD', 'direct');

因みにメールサーバは外部サービスを使用しています.このサーバが落ちてもメールサーバは動くという形になります.

一番、時間を費やしたのがファイル転送です.コマンドでもファイル数が多いと転送に時間がかかります、なにせ45G有ったみたいなので…チリツモで一番このドメインが多かったです.

scp -rp ユーザの名前@リモートのホスト名:コピーするリモートのファイル ローカルのコピー先

これでかなり速く転送してくれます.レイヤーが低いほど速いですねぇ.FTPソフトとか使用していると萎えます.

あと、今回知ったのですが広告掲載とかしている人でプロキシサーバ経由でサーバ起てている人は下記の設定をApacheサーバに記載が必要になります.これは警告を受けたわけではないのだけども、やっとくと損はないと思います.

RemoteIPHeader x-forwarded-for

以上が今回得た教訓であり知見です.

明日へ続く

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

エンジンエックス, コマンド, こんてな, コンフィグ, サーバ, チリツモ, プロキシサーバ, プロキシサーバ経由, メールサーバ, メモリ, ユーザ, リモート, レイヤー, レンタルサーバ, , 教訓, 痛感, 知見, 警告, 転送,

Photo by FOX on Pexels.com

8割のドメインをVPSサーバーで運用に切り替えました.あとの2割

2025.01.25

Logging

おはようございます.8割のドメインをVPSサーバーで運用に切り替えました.あとの2割も切り替える予定です.正直な所、もう一ランク上のVPSサーバーで運用するべきだったと後悔しています.メモリ2Gあれば十分かと思っていたけどそうでもない.

因みに移行していないドメインはここのドメインとHドメインとTドメインになります.こちらのドメインも来週中に移行する予定です.ただメモリの関係上、移行することができない場合もあります.たぶんギリ大丈夫そうなんですけどねぇ.

サーバー移行の際にエンジンエックスプロキシ(リバースプロキシ)のコンテナ起てて、ドメインをそれぞれのコンテナに振り分けて運用しているわけですが、WordPressのサーバーがドメインを叩くと無限ループに陥るのですね.この解決策を探るのにかなり時間を費やしました.

解決策はwp-config.phpにこれを記載すれば無限ループから開放されます.

define('FORCE_SSL_ADMIN', true);
if ( ! empty( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' ) {
       $_SERVER['HTTPS']='on';
}

明日へ続く

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

```, エンジンエックスプロキシ, かなり時間, キリ, こんてな, サーバー, サーバー移行, それぞれ, ドメイン, メモリ, リバースプロキシ, , , 無限ループ, 解決策, 運用, 関係上, ,

Line3.8bバージョンとline1.7b バージョン使ってみたけど何か。

2023.08.20

Logging

おはようございます、Line3.6bバージョンとline1.7b バージョン使ってみたけどエヌビディア(GPT)が入っていないと動かないだって、でもどうしても動かしたいと思っている方!CPUでも動かせるように変換してくれている人がいます。ありがたや~☺。

上記のURLへ移動して頂き、READMEを参照すればメモリが2Gあれば何とか最小のモデルが動かせるみたいです、ローカルで動かしたい方はエヌビディアさんのCUDA(Compute Unified Device Architecture)とCUDAツールキットも必要になります。あと、torch(pytorch)のバージョンとドライバが合っていないと上手く動かないようです。参考リンクはこちら👉https://qiita.com/nabenabe0928/items/7962dcf3030889667de4 https://pytorch.org/get-started/previous-versions/

なお、Windowsでは今のところ動かない可能性が高いですね(・・;)、ウブントゥとエヌビディアが最強ポッい。

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

Compute Unified Device Architecture, CPU, CUDA, CUDAツールキット, GPT, Line3.6bバージョン, pytorch, README, torch, url, Windows, ウブントゥ, エヌビディア, エヌビディアさん, ドライバ, バージョン, メモリ, モデル, 最小, 最強ポッい,

30万件のデータを扱っている方の話を聞いて一瞬😱となる。 #laravel #Queue #worker #jobs

2022.12.01

Logging

おはよう12月!!。皆さんおはようございます。今日から寒くなるそうですね。

先日、面談の中で30万件のデータを扱っている方の話を聞いて一瞬尻込みしましたが、自分でもその処理を捌くことが出来そうだなと思ったので、ダミーデータを作って今月中に捌いてみようと思います。なお、ローカルサーバーを使用して捌くのでレンタルサーバーやクラウドサーバーでメモリリークなんかで落ちたりしたらごめんなさい🙇。

因みに30万件のデーターをどう捌いているかといえば、非同期処理(Queue)で捌いているとの事。フレームワークはLaravelを使用し、非同期処理はララベルの機能であるキューを使用してバックエンドで処理を立ち上げているとの事。要は個々プロセス複数立ち上げて並列処理で動かすという事です、プロセスを立ち上げ過ぎたら、メモリ食いすぎてサーバー事態が落ちる可能性があるので別サーバーで動かすのが理想ぽっい、その場合はコネクションの設定してあげないといけない事やプロセスをどれぐらい立ち上がると良いのかなどの設定が必要みたいですね。

php artisan queue:table
php artisan migrate

ともあれ自分でダミーデータを用意して試してみないと感覚が掴めないし、実際上手くいくかなどが分からないので試してみます😳。

明日、1万件のダミーデーターを複製(コピペ)して30万件のエクセルファイル作る方法を記載します。

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

12, 30, jobs, Laravel, Queue, worker, エンド, キュー, クラウド, こと, サーバー, ダミー, データ, データー, バック, フレームワーク, プロセス, メモリ, ララベル, リーク, レンタル, ローカル, 一瞬, , 並列, , , 事態, 今日, 今月, 使用, 個々, 先日, 処理, , 可能性, 同期, , 機能, 皆さん, 自分, 複数, , , 面談,

staticかdynamicか、php-fpmの話。#php #apache

2022.11.01

Logging

おはようございます、メモリが肥大化して落ちました🤮。

先週の朝、メモリが肥大化して落ちてしまいました。今まではphp-fpmを1時間置きに再起動していましたが、それを変更した途端。メモリを食ってしまい落ちたわけです。

php-fpmの対応はこちらのサイトを参考にしました、尚、対応方法はそちらの記事を参照ください。その記事を読んでいて思ったことはやはりサーバーを増強したいということです。

でもVPSレンタルサーバーはサクサク表示させるには、結構お金がかかってしまいます、だったら固定IPを引いて自宅サーバーで運用した方が良いのかもしれないなってこの頃、思っています。

そうすればメモリはかなり詰めるし処理もそれなりに早くなります。恐らく瞬速で表示されるようになりますが、震災などが起きると忽ちダウンしてしまいますよね。

そう考えると・・・微妙ですね。

やはりVPSサーバーをもう一つ借りて調整するか、VPSサーバーと自宅サーバーを同期して運用するかだと…。

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

, Apache, dynamic, IP, php, php-fpm, static, VPS, お金, かなり, こちら, こと, サーバー, サイト, そちら, それ, それなり, ダウン, はり, メモリ, もう一つ, レンタル, わけ, , 先週, 再起動, 処理, 参照, 参考, 固定, 増強, 変更, 対応, 微妙, , 方法, , 瞬速, 自宅, 表示, 記事, , 途端, 運用, 震災, ,

東証システム障害の考察してみた。#東証システム障害考察

2020.10.02

Logging

7時4分にアラートが上がっていた?が、現場がアラートに気が付かず、後続の処理が流れ売上の前処理バッチ処理が走った時点なのかな。そこでようやく現場がアラートが出ていることに気づく、この時点でベンダーに現場が支持を仰いだのか、マニュアル通りフェイルオーバーしたんだろう。フェイルオーバーさせたけど失敗。メモリリークがおそらく原因でサーバーの切り替えが出来なかった。ここでベンダーに支持を仰いだ可能性もありそう。そしてベンダーがここらへんから介入して監視端末のログなどを調査したら、メモリリークのエラーログを確認したんだと思う。

※失敗したジョブがどこかに格納されるだろう?。フェイルオーバーさせるより後続の処理をストップさせて、ベンダーに支持を仰いだ方が良かったのかもしれないなと。でも現場は混乱していただろう。

メモリーリークが起きていたと思うと実際は前処理バッチ処理をして失敗していたんだろう。遮断して本日の東証での取引は出来ないようにしたのは正解だと思う。

メモリリークの原因は、メモリの物理的破損だったのでメモリが悪いと判断した。メモリエラーが監視端末のログにクリティカルなエラーとして表示されていたのかは不明だけど、おそらく見落としだと思う。

7時時点で相場や売上の前処理を取り込むのなら、何だか整合性がつきそうです。おそらく手動で前処理が走るのではなく全自動で前処理が走るシステムだったんだろう。従業員が端末の監視も7時からだったのかな?

資料が時系列で書かれていないので良く分からないけど、自分なりに東証システム障害を考察してみた。

現場のヒューマンエラーも疑われるけど、末端の従業員は下請け業者何だろうな?。ベンダーは常時、東証システムの現場にいたのか?とかいろいろな事が問われるかもしれないよな。

おそらく本日から正常に東証は取引できると思います。メモリを取っ替えだろうしメモリチェックもしているだろうし。

最後に頑張れ東証システムの現場!!
末端が解雇されないことを切に願う、これで直ぐに切られたら次の職には絶対につけなくなるよ。でも末端が悪いという事ならば数年後、数ヶ月後にはクビになる可能性は高いかもな。

ちなみに上記が昨日のツイートまとめになります。

https://twitter.com/zip358com/status/1311620709412605952

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

4, 7, アラート, エラー, オーバー, ここ, ここら, こと, サーバー, システム, ジョブ, ストップ, バッチ, フェイル, べん, ベンダー, マニュアル, メモリ, メモリー, リーク, ログ, 介入, 処理, 前処理, 原因, 取引, 可能性, 失敗, 実際, 後続, 支持, , 時点, 本日, 東証, 格納, , 混乱, 現場, 監視, 確認, 端末, 考察, 調査, 遮断, 障害,

アマゾンウェブサービスってどうなの?

2018.01.17

Logging


アマゾンウェブサービスってどうなのか?
お安いのかお高いのかというのが自分が一番気になる所です。
試しに一度使ってみようかなと思ったことが
何度かありますが、どうも踏み切れないですよね。
セキュリティ対策などは結構簡単に対策を
取ることが出来るみたいなので便利だなと思う反面、
あまりにも機能が多いのでどれを使用すればよいのか、
迷います。おそらく最初はAmazon EC2を使用して
サーバ構築を行い、その後静的アドレスとドメインを結びつける事により
サーバ稼働するのだろうけれど、設定等を行うのが
正直なところ難儀だなと感じます。
サーバとの通信回線が早いので
応答速度はかなり改善するのではないかなと、
メモリは2Gぐらいが妥当かなとか・・・。
上記の設定などは自分でまぁ出来ます、SSLの設定も出来ますが
問題はお値段なんです、あまりにも月の値段が高ければ
やなんですよね。あとメールサーバーも構築しないと駄目なので
そこのところも難儀です。
ひとつのドメインではなく全てのドメインを引っ越すつもり。
これ以上、サーバ代を増やしたくないので出来れば
ひとつのサーバに集約化したいわけです。
そういう事を考えると安定して動いているXサーバで良いかなと
思ってしまうのですね。
「あぁどうしよう」orz

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

, Amazon EC2, Amazon Web Services, Xサーバ, アマゾンウェブサービス, サーバ, サーバ代, サーバ構築, セキュリティ対策, ドメイン, ネットワーク, ひとつ, メールサーバー, メモリ, 何度か, 応答速度, 改訂版, 設定, 通信回線,

機械学習:ディープラーニング(TensorFlow)をインストールしてみた。

2017.03.24

Logging

yum -y install python
yum -y install python-pip python-dev python-virtualenv
export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.11.0-cp27-none-linux_x86_64.whl
pip install --upgrade $TF_BINARY_URL
python -m tensorflow.models.image.mnist.convolutional

https://www.tensorflow.org/versions/r0.11/get_started/os_setup#using-pip
上記を参照に機械学習:ディープラーニング(TensorFlow)をインストールしてみてください。
試しにイメージ学習(数字)をさせます。最初はエラー率が高いのですが徐々にエラー率が減っていきます。
自分はあまりメモリもCPUも積んでいない仮想サーバでしたが、何とか動きましたが
本気で機械学習をさせたい場合などは、それなりにCPUとメモリを積んでいないと
レンタルサーバー会社からサーバ負荷のため、停止させられる可能性がありますので
注意しないといけない点かもしれません。
学習後、数字の画像を与えるとで詰まるという方は、いろいろな本が出ているので
片っ端から読破するか、Netで調べるかになります。ちなみに今、じぶんは
片っ端から読破する方法を選びました。そこで気づいたのは、Pythonの言語を理解したほうが
良いということです。ノードが機械学習をする上で鍵になります!!
ということで?
時期を置いて続きを別記事として公開しますね。
!!(T_T)
https://github.com/tensorflow

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

AM, B01IT509EY, export TF_BINARY_URL, m tensorflow.models.image.mnist.convolutional, NextPublishing, pip install, y install python-pip python-dev python-virtualenv, yum, エラー率, サーバ負荷, ディープラーニング, ノード, メモリ, レンタルサーバー会社, 仮想サーバ, 別記事, 数字, 最新Googleマシンラーニング, 機械学習, 片っ端,

ワンコインでVPSが使用できるレンタルサーバーDTI!!

2017.03.14

Logging


http://dream.jp/vps/
ワンコインでVPSが使用できるレンタルサーバーDTI!!
何気にすごいお得ださくらサーバーVPSやお名前.comのVPSサーバーが
有名だけど、メモリ1Gで月々467円って安いと思います。
ホントに安いな・・・損益分岐点になる人数を
知りたいな。たまに個人でサーバの切り売りしている強者も
いますが、こんな事を企業がやってしまうと太刀打ちできない
じゃないかとさえ思ってしまう。
値段はかなりお手頃価格なので
あとはレスポンスなどが気になるところですけど
実際、VPSで練習のためサーバを構築するのは
これで十分ですね。

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

CentOS 7, VPSサーバー, お名前, かなりお手頃価格, サーバー徹底構築, さくらサーバーVPS, メモリ, メモリ1G, レスポンス, レンタルサーバーDTI, ワンコイン, 人数, 何気, 実践, 強者, 損益分岐点, 月々467円,

クローラーするサービスの基礎。

2016.11.19

Logging

クローラーするサービスの基礎のソースを載せときます。殆どサイボウズ・ラボの人が書いたコードです。
このサンプルソースをそのまま貼り付けても一階層のリンクしか取得できません。
再帰処理の部分をコメントアウトしているからです。ちなみにコメントアウトを外してもメモリオーバーでおそらく
大体のサーバでエラーが出力されます。どうしたら良いのかといえば、DBに1階層目のリンクデータ、2階層目のリンクデータという様に保存する機能を施す。次にajaxで階層を受け渡しながら、再帰処理を行う。
再帰処理が終わる要素はそれ以上、下階層がないことを判断する。そのためには保存したデータを検索することが重要になる。=(イコール)
新規にデータを登録しているうちは、再帰処理を終わらせないようにすることが大事になる。
これの機能を加えることで巡回する事が可能になる。ここで注意しないといけないのが、外部リンクを保存しないことです。外部リンクまで保存していると巡回は永遠に終わらないでしょう・・・。
トイウコトデ
ほぼ??コピペソースを貼っときます。

<?php
echo json_encode($obj);
exit;
function get_linkarray($link)
{
	$context = stream_context_create(array("http" => array("method" => "GET", "header" => "User-Agent: simplecrawler.library.php 0.0.1")));
	$resultR = array();
	$resultS = simplecrawler($context, $link, $link, parse_url($link));
	foreach ($resultS as $k => $v) {
		$resultR[] = $v;
	}
	return $resultR;
}
function simplecrawler($context, $link, $burl, $base, $linkArrayDat = array())
{
	$linkArrayPre = crawler_link(crawler_page($link, $burl, $base, $context), $link, parse_url($link));
	foreach ($linkArrayPre as $k => $v) {
		if (!isset($linkArrayDat[$v])) {
			$linkArrayDat[$v] = $v;
			//$linkArrayDat = array_merge($linkArrayDat, simplecrawler($context, $v, $burl, $base, $linkArrayDat));
		}
	}
	return $linkArrayDat;
}
function crawler_page($link, $burl, $base, $context)
{
	if (strpos($link, $burl) === 0) {
		$page = @file_get_contents($link, false, $context);
		return $page === FALSE ? null : $page;
	} else {
		return null;
	}
}
function crawler_link($page, $burl, $base)
{
	$linkArray = array();
	if ($page === null) {
		return $linkArray;
	}
	preg_match_all("/[\s\n\t]+href\s?=\s?”(.*?)”/i", $page, $href);
	for ($i = 0; $i < count($href[1]); $i++) {
		$link = $href[1][$i];
		if (preg_match("/^http(s)*\:\/\//", $link)) {
			$result = $link;
		} elseif (preg_match("/^\/.+$/", $link)) {
			$result = $base["scheme"] . "://" . $base["host"] . $link;
		} else {
			// echo $base["path"] . “\n”;
			$b = preg_split("/\//", dirname($base["path"]));
			$t = preg_split("/\//", $link);
			foreach ($t as $v) {
				$l = $v === "." ? true : ($v === ".." ? array_pop($b) : array_push($b, $v));
			}
			$result = $base["scheme"] . "://" . $base["host"] . join("/", $b);
		}
		$linkArray[$result] = $result;
	}
	return $linkArray;
}

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

, 2, ajax, db, アウト, イコール, うち, エラー, オーバー, クローラー, コード, ここ, こと, コメント, これ, サーバ, サービス, サイボウズ, サンプル, ソース, それ, ため, データ, トイウ, メモリ, ラボ, リンク, , , , , 保存, 再帰, 処理, 出力, 判断, 取得, 可能, 基礎, 外部, 大事, 大体, 巡回, 新規, 検索, 機能, 殆ど, 永遠, 注意, 登録, 要素, 部分, 重要, 階層,

CSVのデータ数万行とかをVBAでデータを加工するよりも

2016.05.30

Logging


CSVのデータ数万行とかをVBAでデータを加工するよりもPowerShellから加工するべし、、
まず、いま勤めてる会社、WEB会社なんですが
WEBシステムに使うデータの加工をする機会が結構あったりします。
時には数万行とかのデータを取り込んで
加工することがあるですね。
今まで数万行のデータは分割して
処理をしていたのですが、PowerShellで取り込んで処理する
方法があるみたいなので、これからはソチラで
加工しようかなとか思っています。
ちなみにExcelやPHPだとMバイトのデータを
扱うと処理が落ちる場合が結構あります。
とくにPHPだとファイルをアップロードする場合や
扱えるメモリの設定により処理落ちする事は
多々あります。
なので、PHP側でどうしても
処理を行いたい場合は事前にファイルを分割するか、
処理する時点でshellなどを使いコマンドラインで
ファイルを分割するかなどの方法を
取らないといけないのです。
ファイルをアップロードする時点で
処理を行うか前もって処理を行なったデータを
SQLで読み込むかなど、いろいろな方法があります。
 

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

CSV, Excel, Mバイト, php, powershell, SQL, VBA, WEBシステム, コマンドライン, ソチラ, データ, データ数万行, ファイル, メモリ, 事前, 処理, 処理落ちする事, 加工, 方法, 時点,

Windows10が発表されました。正直、買う必要あるの?

2014.10.02

Logging

Windows10は正直、買う必要あるのか疑問です。散々、ユーザーから叩かれたWindows8を改善した結果、マイクロソフトのとった決断は原点回帰だったというオチです。ほぼ、Windows 7と同じユーザーインターフェイスです。機能はいろいろと変わってたりしますが、基本的にはWindows 7を高機能にしたという感じですね。ちなみに自分はWindows8からWindows8.1に変更し最近、Windows 7にダウングレードしました。 ちなみにWindows10は来年にリリースされるそうですよ。
そろそろパソコンも買い替えを考え中なのですけど…。メモリ(DDR4)の値段が落ち着くまで様子見な自分です。
 
https://www.youtube.com/watch?v=F_O-LrGL-YQ

 
 

著者名  @taoka_toshiaki

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

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

OFUSEで応援を送る

タグ

, DDR4, Windows 7, Windows10, Windows8, Windows8.1, オチ, ダウングレード, パソコン, マイクロソフト, メモリ, ユーザー, 値段, 原点, 正直, 決断, 疑問, 考え中, 買い替え, 高機能,