ksino's diary

覚えたことを忘れないように、小さなことでも書いていく。

WSL環境におけるDNS解決失敗の改善

WSL2+Ubuntu 24.04環境で発生していた以下の問題に対応しなおしたのでメモ。 ksino.hatenablog.com

上記記事の対応は元に戻し、下記の対応を行った。

resolv.confの自動生成を止める

sudo vi /etc/wsl.conf

以下の内容を記載する。

[network]
generateResolvConf = false

PowerShell等で下記コマンドを実行し、WSLを終了する。

> wsl --shutdown

nameserverの設定

WSLを再度起動し、以下のコマンドを実行する。

sudo rm /etc/resolv.conf
sudo vi /etc/resolv.conf

以下の内容を記載する。

nameserver 8.8.8.8

再びWSLを再起動する。(これは不要かも?)

ついでに…

以下の記事の設定も元に戻してみたが、当時の事象は発生しなかった。 改善されたのかな? ありがたや。。 ksino.hatenablog.com

WSL上のClaude CodeでAPI Error (Request timed out.)

WSL上のClaude Codeに命令を与えると、以下のエラーが連続して全く動きませんでした。

API Error (Request timed out.) · Retrying in 1 seconds… (attempt 1/10)

私の環境ではIPv6を無効化すると解決できました。

/etc/sysctl.confに以下を追記します。

net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6=1

追記した設定を有効化します。

sudo sysctl -p

↓ですかね・・・? 改善されるといいな。。。

github.com

WSLでDNS解決が遅い

WSLからの名前解決が遅く、sdkmanがまともに動かなかったり、git cloneに失敗するという状況でした。
解決策はいくつかあるようですが、渡しの場合はdnsTunnelingで解決できました。

{USERHOME}\.wslconfig ファイルを作成し、下記の内容を保存します。

[wsl2]
dnsTunneling=true

WSLを停止し、再起動します。

> wsl --shutdown

ポート3000で起動できない

遅ればせながらClaude Codeを触ってみようと、
とりあえずnode.jsで簡単なREST APIを作ってもらったのですが、、何やら権限エラー?とかで起動できない。
管理者権限で起動したPowerShellから実行しても同じ状況。

> npm start

> hello_node@1.0.0 start
> node index.js

Server running at http://localhost:3000
Server listen error: Error: listen EACCES: permission denied 0.0.0.0:3000
    at Server.setupListenHandle [as _listen2] (node:net:1918:21)
    at listenInCluster (node:net:1997:12)
    at Server.listen (node:net:2102:7)
    at Function.listen (C:\work\202507\hello_node\node_modules\express\lib\application.js:605:24)
    at Object.<anonymous> (C:\work\202507\hello_node\index.js:15:20)
    at Module._compile (node:internal/modules/cjs/loader:1730:14)
    at Object..js (node:internal/modules/cjs/loader:1895:10)
    at Module.load (node:internal/modules/cjs/loader:1465:32)
    at Function._load (node:internal/modules/cjs/loader:1282:12)
    at TracingChannel.traceSync (node:diagnostics_channel:322:14) {
  code: 'EACCES',
  errno: -4092,
  syscall: 'listen',
  address: '0.0.0.0',
  port: 3000
}

何故・・・?と調べたところ、権限ではなくポートが予約済みであったことが原因のようでした。

> netsh interface ipv4 show excludedportrange protocol=tcp

プロトコル tcp ポート除外範囲

開始ポート    終了ポート
----------    --------
      2774        2873
      2874        2973
      2974        3073
      3074        3173
      3174        3273
      3274        3373
     50000       50059     *

* - 管理されている除外ポート。

サーバの起動ポートを、上記で予約された範囲外(3374とか)に指定すれば解決しました。

↓このあたりが関連してそうですが深堀りしてません。
https://github.com/docker/for-win/issues/3171#issuecomment-554587817

↓こいつ無効化すれば解決するのかな・・・?(WSLに悪影響出そう)

Vision Studioのデモを使いたい

リソースを準備する必要があります。
その場でCreate a new resourceから作れる・・・?ようなのですが、私は何故か作れなかったので、ポータルからあらかじめ作りました。

Azure AI services multi-service accountは有償です。

Computer VisionはFree版も選択できます。

Heroes of Might and Magic (HoMM1)

ChatGPTが教えてくれたのでメモ。

初心者向け攻略ガイド (HoMM1)


1. 基本ルールと目標

  • ターン制の戦略ゲームで、ヒーローを操作して軍隊を指揮
  • マップ上の資源を集め、街を発展させて最強の軍を作る
  • 最終目標は敵ヒーローを倒し、すべての城を支配すること

2. 勢力の選び方

HoMM1では4つの勢力があります。

勢力 特徴 初心者向け度
Knight バランス型 ★★★★ (おすすめ)
Barbarian 攻撃力特化 ★★★
Sorceress 魔法特化 ★★
Warlock 強力ユニット&魔法 ★ (上級者向け)

おすすめは Knight
理由: ユニットのコストが安く、防御力が高めで扱いやすい


3. 序盤の進め方 (最初の10ターン)

  • 1ターン目: ヒーローを雇用し、近くの資源を回収
  • 2ターン目: Town Hall を建設 (毎ターンのGold収入UP)
  • 3〜5ターン目: 木材・鉱石を集めながらユニットの建物を建設
  • 6〜10ターン目: 強いユニット (Cavalry, Minotaurなど) を雇い、近くの敵を倒す

4. ヒーローのスキル選び

スキル 効果 優先度
Logistics 移動距離UP ★★★★★
Leadership モラルUP ★★★★
Wisdom 高レベル魔法習得 ★★★
Ballistics 城の攻撃力UP ★★
Scouting 視野範囲UP ★

初心者なら Logistics と Leadership を優先的に取ればOK!


5. おすすめユニット (Knightの場合)

ユニット コスト 特徴 優先度
Pikeman 安い 序盤の盾役 ★★★
Archer 安い 射撃ユニット ★★★★
Cavalry 高い 高速突撃ユニット ★★★★★
Paladin 超高い 回復スキル持ち ★★★★★

6. 戦闘のコツ

  • 敵の射撃ユニットは真っ先に倒す
  • 射撃ユニットは後列に配置し、前列に盾役を置く
  • 小さな戦闘は弱いユニットで戦って被害を抑える
  • モラルが高いと2回行動できるので Leadership のスキルが超重要

7. 資源の優先順位

資源 優先度 使い道
Gold ★★★★★ すべてのユニット
Wood ★★★ 建物の建設
Ore ★★★ 建物の建設
Crystal ★★ 強力ユニット (Paladin)
Gems ★★ 魔法ギルド

8. 魔法の使い方 (初心者向けおすすめ魔法)

魔法 効果 おすすめ度
Haste 味方の移動力UP ★★★★★
Slow 敵の移動力DOWN ★★★★★
Lightning Bolt 大ダメージ ★★★★
Cure 味方回復 ★★★
Blind 敵ユニットを行動不能 ★★★★★

勝つための3つのコツ

  1. 敵の城は一気に落とす!長引かせると敵が強くなる
  2. ヒーローを複数使ってチェイン移動でアイテムをリレー形式に運ぶ
  3. 魔法の使い方で勝敗が決まるので、マナを無駄に使わない

おすすめの戦法

  • Knight軍で序盤から大量のCavalryを作る
  • Logisticsスキルで敵より先に移動
  • Haste魔法で突撃して一気に倒す

まとめ

項目 おすすめ
勢力 Knight
ヒーロー Lord Kilburn
魔法 Haste, Cure
スキル Logistics, Leadership
ユニット Cavalry, Paladin

テスト用のcsvファイルを生成する

import csv


def main():
    with open("bigdat.csv", "w", newline="", encoding="UTF-8") as f:
        writer = csv.writer(f, quoting=csv.QUOTE_ALL)
        for i in range(1_000_000):
            row = ["a", "b", "c"]
            writer.writerow(row)


if __name__ == "__main__":
    main()