yumetodoの旅とプログラミングとかの記録

旅や登山の記録やプログラミング関連の話とかフリーソフト紹介とか

MinecraftのMod PackであるUltimate Alchemyの攻略 Part9

「はじめに」の前に

手元で記事はすでにPart 10まで書き終わってるんですが、画像をGoogle Photosに上げてMarkdownを置換するのを自動化しようと格闘していたらとっても時間がかかりました。

github.com

まあその話はまたそのうち話せるでしょう。

はじめに

しばらくプレイ期間が空きました。今試験期間なのでまた間隔が空くでしょう。

前回の

今回は攻略じゃなくてバグと戦っていました。次回から普通に攻略します。

という言葉通り攻略していきます。

Nether Quartz Oreの作成

知らなかったのだが、NetherRackからのマナプール変換でNether Quartz Oreが手に入れられる。

img

粉砕すればNether Quartzが手に入る。

img

Black Quartzの作成

Actually Additionsの追加鉱石から通常手に入れるこれはExU2のResonatorで作成するレシピが追加されている。

まずRedstone dustResonatorで加工してCrushed Brack Quartzを作る。

img

これを焼けばBlack Quartzの完成だ。

img

ModpackのバージョンアップとRefined Storageの更新追従

年が明けてからのプレイ。Modpackにバージョンアップが来ていた。

img

重要なのはRefined Storageの更新。バージョンが1.6.5から1.6.12に上がった。前回苦しめられたバグは1.6.7でfixされていたからようやく修正が降ってきた。

レシピ変更への対応

Processor Bindingというアイテムが追加され、これを使うようにRaw Basic Processor,Raw Improved Processor,Raw Advanced Processorのレシピが変更されていた。

img

img

img

img

img

ダメージ値のあるアイテムを使うクラフトがうまくいかない

一個バグが消えればもう片方がバグるものらしい。Redstone Powder,Glowstone Dust,Ender ShardIron pickaxeを耐久消費で使用するレシピで作るのだが、どうもダメージ値を無視してくれない。鉱石辞書無視とか押してもだめ。バグか?(あまり調べてない)

というわけでRFToolsのCrafterを使うようにする。

Coal作成自動化

CoalCharcoalを粉砕してできるPulverized CharcoalCoke Ovenで処理すると作れる。謎技術だ・・・。

img

img

TEのパイプだとラウンドロビンにアイテムを送れるようなので、これを使う。

img

ところがこれに謎の苦戦をした。

Coke OvenにはCoalからCoal Cokeをつくるレシピもあるのだが、これができてしまうのだ。

img

TEパイプをまともに使ったことが今までないので、「そっか~、Filterつければいいんだね!」と迷走してみたり

img

Hopperを噛ませたりしたが、結論から言うとTEは悪くなかった。

Coalの取り出しにExU2Item Transfer Nodeを使っていたのが原因だった。

Item Transfer Nodeはインベントリを持っていて、吸い出したアイテムを一度そこに入れ、挿入先を探索しだす。

ところがそのインベントリが問題で、そこから自動搬入されてしまう。

結局搬出をTEのパイプに置き換えた。

Ender Pearl自動化

Ender Pearlを自動で作ってくれるようにする。

Snowball自動作成

まずSnowballが必要なのでGlacial Precipitatorを作成する。

img

水を搬入すれば作成してくれる。右にDrawerを置いてストックしてもらう。

img

img

Blizz Powder自動作成

Magma Crusibleを作成する。

img

Statue of "The Thinker"をbufferのStorage Crateから取り出すように設定する。

img

img

次にFluid Transposerを作成する。

img

SnowballをbufferのStorage Crateから取り出すように設定する。

img

img

あとはbufferのStorage Crateに向けてCrafterを設置する

img

これでCryothum Dustを作ることができる。

img

Ender Pearl

本題。まずはEnder ShardをbufferのStorage Crateから取り出すように設定する。

img

Magma Crusibleでを溶かしResonant Enderにする。

img

Cryothum DustをbufferのStorage Crateから取り出すように設定する。

img

そしてFluid TransposerCryothum Dustに注入するとEnder Pearlができる。

img

あとはbufferのStorage Crateに向けてCrafterを設置する

img

Signalum Ingot自動化

Redstone dust10個をMagma Crucibleで溶かしたものとPulverised Copper3個とSilver Ingot1個を乾式製錬炉で溶かすことで、Signalum合金ができる。

img

img

これを自動化する方法を色々考えたが、乾式精錬炉にPulverised Copper3個とSilver Ingot1個を順番に搬入してくる方法がRefined StorageのCraferしか知らない。

というわけでもう一個Refined Storageのネットワークを立ち上げることにした。

img

img

img

図にするとこんな感じ。

img

Crafterは2つある。1つ目はMain Networkのもので、1つ目のStorage Crateに向けて設置されている。

img

もう一つはSub Networkのもので、Seared Furnace Controllerに向けて設置されている。材料からRedstone Dustが消えていることに注意したい。

img

2つ目のStorage CrateにつけられたSub NetworkのExporterにはCrafting Upgradegが取り付けられていて、常時クラフト発注されている状態である。

img

溶岩自動生成機構の改良

随分前に溶岩自動生成機構を作ったがいくつか課題が出てきた。

  • 木炭を原木から作っているが、Main Networkに大量に余っている木炭を使いたい
  • 溶岩生成速度が遅い
  • ExU2の自動作業台にはアイテム保持機能がなく、Input Bufferの材料が偏る

というわけで、RFToolsのCrafterに切り替え、Main Networkを伸ばしてきてExporterをそれに取り付けて木炭を搬出させるようにした。さらにBasic Capacitor Bankを増設した。

img

img

またSurvival Generatorを増強した。

img

Bottlerからの取り出しはHardened ServoHardened Fluiductに切り替えた。

img

IMMの水力発電

Refined Storageの自動クラフトを整備していった結果ちょっと電力不足気味である。本腰を入れる前につなぎでIMMの水力発電を組み立てた。

このようにKinetic Dynamoを設置して、

img

さらにこのように囲うブロックを設置して

img

水源を設置していく。水源の横にはHardend Copper Glassを、それ以外にはSeared Glassを利用してみた。

img

松明のところが水源の位置。

img

塞いで完成。

img

出力は88RF/tくらいで少ない。まあもっと序盤に作るもんだし。

img

土自動生産

正確には土自動増殖か。EnderIOの導管が大活躍する回です。

img

前にお世話になったCoarse Dirtを作って地面に置いて耕すとDirtになるというルートを自動化する。

まず土をDrawerからItem Conduitで取り出しCrafterに搬入する。

同時にPulverizerExporterCobblestoneを搬入し、GravelCrafterに搬入する。

CrafterからItem Conduitで取り出しMechanical Userに搬入する。

img

img

Pulverizerに取り付けたItem Conduit

img

Pulverizerに取り付けたRefined Storage ConduitBasic Item Filterを搬出側に取り付けている。

img

Basic Item FilterはBlack Listに設定している。これでCobblestoneを粉砕したときの副産物のSandをMain Networkに取り込む。 img

Mechanical Userに取り付けたItem Conduit

img

Basic Drawerに取り付けたItem Conduit

img

Mechanical UserではCoarse DirtRedstone signalがOffの時前面に設置する。

img

ここにはRedstone Conduitがつながっている。

img

Basic DrawerにはRedstone Upgradeが積まれている。

img

Redstone Comparatorで信号強度14のsignalと比較して信号を出力、Redstone Conduitを通してMechanical Userにつながる。

Basic DrawerにはExternal Storageが取り付けられている。

img

つまり約15k個の土がストックされるまで、信号強度が14を下回るため信号が出力されず、Mechanical UserCoarse Dirtを設置し続ける。

もう一つのMechanical UserにはIron HoeExporterで搬入される。なおCrafting Upgradeが付いている。そして常にUse Item On Blockになっているので、延々と耕し続ける。この時耕すCoarse Dirtの上にパイプなどの何かしらのブロックがあるとうまく耕せない。

img

img

DestructorホワイトリストDirtのみ破壊するように設定している。これによりRefined Storageのネットワークを介してBasic Drawerに土が戻る。

img

Part8<<Prev | Next >>Part10

dockerで遊んでたらPCのDisk残量がどっかーんとしまったのでパーテションを分けた話

母親氏、異変に気がつく

母「なんかPCログインできんのやけど?」

そのとき私は猛烈にトイレに行きたかった。とりあえず投げやりに

私「じゃあ再起動して」

これで解決するかに思われたが、トイレの中にまでヘルプを求める声が。

母「再起動したらログイン画面すらでなない」

ようやくトイレを出てPCを見るとその瞬間なぜかログイン画面にはたどり着いた。

原因をたどる

ログインして起動するとこんな通知が。

notification

Diskがあいてない・・・?

我が家では

/
/home
/boot/efi
swap

のようにパーテションを切っていて、この内/が残り50.8MBくらいしかなかった。

Diskを専有しているのは誰だ?

おもむろに

sudo du --exclude=home / | tee log.txt

して眺めていると/var/lib/docker/に差し掛かった。

・・・docker?

docker、心当たりがある!

github.com

つい昨日これのCIを組み立てるためのdocker imageを作るためにいろいろ試行錯誤していた。これのせいか!

du --summarize -h /var/lib/docker/

すると23GBと表示された。

パーテション分け

眺めていると/homeには空きがまだある。このパーテションを削ってあげれば/var/lib/docker/を割り当てられる気がする。

GParted

PCを終了し、手元にあったUbuntu 18.04のLive USBで起動する。

コマンドラインでパーテション操作とか余裕で無理ゲーなのでおとなしくGPartedを使う。

流石に100GBも割り当てれば足りるだろう。というわけで/dev/sdb1を100GB削って、新しく/dev/sdb3を作った。

GParted

結局40分くらいこの作業にかかった気がする。

copy

まずは移動元と移動先のパーテションをマウントしないといけない。

面倒臭がってキーボードの設定をしないで作業したので_とか打てない、つらい。

$ cd /mnt
$ sudo mkdir croot
$ sudo mount /dev/sdb1 /mnt/croot/
$ sudo mkdir ndocker
$ sudo mount /dev/sdb3 /mnt/ndocker/

さて、copyだ。コマンドはおなじみcpを使うとして、属性とかをそのまま引き継いでほしい。それには-aが必要だ。あと進捗が見たいので-vもつける。

ここでちょっとミスをしてしまう。

$ sudo cp -av /mnt/croot/var/lib/docker/ /mnt/ndocker/

するとndockerの中にdockerがコピーされてしまった。本当は

$ sudo cp -av /mnt/croot/var/lib/docker/* /mnt/ndocker/

としたかったのに、「そんなファイル名ないしDirectory名知らねー」と怒られてしまうから仕方なくこうした。なんでだったんだろうか。

とにかく仕方ないのでmvする。mvは属性とかはいじらない(読み取り権限ないと実行できないけど)

$ sudo ls -a /mnt/ndocker/ | xargs -I% sudo mv /mnt/ndocker/docker/% /mnt/ndocker/

これも*での展開がうまく行かずxargsを使ってる。とことんワイルドカードに嫌われている。なんでや?

リネーム

移送元も消さずにリネームして残しておく。

$ sudo mv /mnt/croot/var/lib/docker /mnt/croot/var/lib/docker_bk
fstab

wiki.archlinux.jp

これを眺めつつ設定する。UUIDはblkidコマンドをわざわざ叩かなくてもGPartedでも見れる。

#
# /var/lib/docker was moved to /dev/sdb3: 20190911
UUID=3a1ca756-0a42-4c33-9af0-83fd82ff76a8 /var/lib/docker ext4    defaults      0      2
シャットダウン

PCを終了してLive USBを抜く。

起動

起動しますようにと祈りつつ起動。

起動した。

dockerが普通に使えるか検証し動いたのでバックアップで残してた移送元を消して作業完了。

$ sudo rm -r /var/lib/docker_bk

その後

作業後20分もしないうちに国分寺市は猛烈な雷と雨に襲われた。

年に一度あるかないかくらいの雷だったのでPCとかTVのコンセントを抜いた数分後、瞬間的な停電に見舞われた。どっかーんという大きな雷が落ちる音がした。dockerがどっかーん(言いたかっただけ

https://twitter.com/tweet_egoiste/status/1171700198726193152?s=20

作業中に停電したら・・・

危ない。あぶない。

python 3.6.9をもっとガチでWindows10でx64 Release buildした

yumetodo.hateblo.jp

これはちょっと本気度が足りなかった。ほんとにビルドしただけで標準ライブラリ動かんし。インストーラーまで生成してこそやろ!

というか主目的のCodeLLDBの動作には至らなかったというだけなんですけどね、はい。

ビルドの準備

改めてビルドの準備をしていく。

.NET 3.5

Windows10では.NET 3.5がデフォルトで無効になっている。

blogs.technet.microsoft.com

に従って有効化する。

Visual Studio

2015以上であればよい。私はVisual Studio 2019を選んだ。C#C++コンパイルが普通にできれば十分だとは思うが、なんせ私の環境にはいろいろ入れているので最小構成がよくわからない。

MSVC v140 - VS2015 C++ ビルドツールとかも必要である可能性はある。

まあなんなら下にVS installerの構成ファイル置いておくので適宜いじって読み込ませてほしい。

gist.github.com

choclatey

必須というわけではないが、ないと説明が面倒くさいので。

chocolatey.org

にあるとおりに入れてほしい。

Mercurial

管理者権限のあるPowershellないしコマンドプロンプト

choco install hg -y
Python

PythonをビルドするにはPythonが必要である。おおっと、鶏と卵の問題というかブートストラップ問題だ。

choco install python3 -y
sphinx

さっそくPythonについてくるpipの出番だ。

pip install Sphinx
Tcl

これがなんなのかわかっていないがとにかく必要らしい。なんとなくIDLEのためじゃないかという気がするが・・・。

ftp://ftp.tcl.tk/pub/tcl/tcl8_6/

からtcl-core8.6.6-src.tar.gzをダウンロードする。

HTML Help Workshop

Visual Studio 2017以降のインストーラーでは入れられないので自分で持ってくる必要がある。Download Htmlhelp.exeをクリック。

docs.microsoft.com

ダウンロードしたら実行してどんどん次に進んでいけば終わる。

Build

Download & 展開

www.python.org

XZ compressed source tarballを落として展開する。

追加のファイル配置

その中にexternalsというディレクトリを作る。そこにtcl-core8.6.6-src.tar.gzを展開する。フォルダー名はtcl-core-8.6.6.0に。これをやらないと、下のTootのようなエラーに見舞われる。

環境変数の設定

VSの開発者コマンドプロンプトを立ち上げる。以下の環境変数を設定する。

rem python2.7もしくは3.4以降の`python.exe`のフルパス。
rem 今回はchocolateyで入れているから`"C:\Python37\python.exe"`
set PYTHON="C:\Python37\python.exe"
rem where sphinx-buildすれば教えてくれるだろう。
set SPHINXBUILD="C:\Python37\Scripts\sphinx-build.exe"
rem 1つ目はhg.exeの場所。where hgすれば教えてくれるだろう
rem もう一つはhhc.exeの場所。デフォルトでは"C:\Program Files (x86)\HTML Help Workshop\hhc.exe"
set PATH="C:\Program Files\Mercurial\hg.exe";"C:\Program Files (x86)\HTML Help Workshop\hhc.exe";%PATH%
ビルド

ビルドにはとても時間がかかる。PCを放置して別の作業をしたいが、PGOビルドをするときにネットワーク接続をしようとしてWindowsファイアウォールから許諾画面が出てくる。ただまあビルドの最終盤で気がついて許可したけど多分間に合ってなかったろうし、やっぱり放置してもいい気がする。

ビルドコマンドは極めてシンプルだ。-oにはビルド成果物を置く場所を指定する。

cd Tools\msi
buildrelease.bat -x64 -o "C:\tmp\python"

最終的に

               Total    Copied   Skipped  Mismatch    FAILED    Extras
    Dirs :         1         0         1         0         0         0
   Files :        71        28        43         0         0         0
   Bytes :   96.69 m   49.61 m   47.08 m         0         0         0
   Times :   0:00:00   0:00:00                       0:00:00   0:00:00


   Speed :           481735111 Bytes/sec.
   Speed :           27565.104 MegaBytes/min.
   Ended : 2019年8月27日 17:26:31

のようなログが出て終わった。

install

先程-oで指定したディレクトリにamd64というディレクトリが作られているはずだ。python-3.6.9-amd64.exeがよくお見かけするpythonインストーラーだ。

これを実行する。