薬味備忘録

Aonori Tech Diary

macOSXとDockerでdns鯖を立てる

2018年秋に24回分割払い手数料無料キャンペーンに引きつられ買ったものの、 もっぱら4Kモニタの隅っこで鎮座し続けているmac mini (2018)を有効活用すべく、 Dockerで何かしらの常駐鯖を立ててみることに。

DNS鯖を立てる

DNS鯖のLinuxディストリとしてBINDが有名ですが、色々と問題が指摘されているので、今回はNSDを選択。

初期ファイル構成は以下のようにしました。

├── docker-compose.yml
└── nsd
    └── Dockerfile

Dockerfileを書く

ここではhardware/nsd-dnssecをベースにセットアップ。

FROM hardware/nsd-dnssec
USER root

RUN addgroup -g 991 -S nsd
RUN adduser -G nsd -s /sbin/nologin -H -u 991 -S nsd
RUN chown nsd:nsd zones

docker-composeを書く

docker-composeを使えば複数コンテナの管理だけでなく、ボリュームマウント、ポートフォワードなども分かりやすく書けるので活用。

version: "3"
services:
        nsd:
                build: nsd
                restart: always
                container_name: nsd
                ports:
                        - "53:53"
                        - "53:53/udp"
                volumes:
                        - ./nsd/conf:/etc/nsd
                        - ./nsd/zones:/zones
                        - ./nsd/db:/var/db/nsd

起動して設定ファイルを編集

docker-compose.ymlが存在するディレクトリで以下のコマンドを実行。

$ docker-compose up -d 

コンテナを起動すると、nsdフォルダ以下にconf zones dbフォルダが作成されるので、設定ファイルを書いていきます。

conf/nsd.confの編集

nsdの設定については、例によってArchWikiを参照すると分かりやすい。

例えば、ドメインexample.comについて、192.168.0.***/24の範囲で解決するとき、 正引き・逆引きの両設定を書くので、実際のnsd.confは以下のような形に。

server:
  server-count: 1
  ip4-only: yes
  hide-version: yes
  identity: ""
  zonesdir: "/zones"

remote-control:
  control-enable: yes

zone:
  name: "example.com"
  zonefile: "example.com.zone"

zone:
  name: "0.168.192.in-addr.arpa"
  zonefile: "0.168.192.in-addr.arpa.zone"

zoneの編集

続いて先ほど指定したzoneファイルを実際に書いていきます。ここでは192.168.0.2をhostnameというホストに割り当てる設定で。

正引きのzoneファイル
@        IN  SOA dns.example.com.    root.example.com.   (
                2019040400  ; Serial
                3600        ; Refresh
                900     ; Retry
                604800     ; Expire (1week)
                3600 )      ; Negative Cache TTL

; Name Server
        IN  NS  dns.example.com.

; localhost
localhost   IN  A   127.0.0.1

; Servers
hostname        IN  A   192.168.0.2
逆引きのzoneファイル
@    IN  SOA dns.example.com.    root.example.com.   (
            2019040401  ; Serial
            3600        ; Refresh
            900     ; Retry
            604800     ; Expire (1week)
            3600       ; Negative Cache TTL
)

; Name Servers
@   IN  NS  dns.example.com
@   PTR example.com.
@   IN  A   255.255.255.0

2   IN  PTR hostname.example.com

起動

ここまで書けば最低限の設定は完了です。docker-compose up -d --buildで立ち上がればおわり。

CNC 2418を導入した #1

CNC 2418を買いました

昨年秋に行われたJPHACKS 2018にてTemp Coasterを作り、審査員特別賞を頂きました。その時の賞金の一部を使って年末にCNC 2418を購入しました。

開封の儀

f:id:aonrjp:20190421210039j:plainf:id:aonrjp:20190421210256j:plain

アリで買ったので、いつものぐるぐる巻きで大陸から送られてきます。気を抜いていると開封時にアルミ粉塵が舞うのでご注意(2枚目参照)

組み立て

CNCは組み上げを丁寧にした方が、実際に動かし始めてからの調整が楽です。垂直を出せる工具を使った方が安心かも。

CDを読み込む

f:id:aonrjp:20190421211927j:plain

同梱されているCDに、組み立て方や制御ソフトなどが入っていますので読み込んでおきます。このサイズのCD久しぶりに見たな。しかもなぜか説明書がpdfじゃなくてdocxというw

アルミフレームを組み上げる

f:id:aonrjp:20190421210049j:plainf:id:aonrjp:20190421210030j:plain

Y軸、X軸方向のアルミフレームをそれぞれ組み上げます。説明書と照らし合わせながら組み上げればおk。

f:id:aonrjp:20190421210025j:plain

図面には寸法が入っていますが、基本的には三角形の部品を合わせていけば正しい位置に。ただし、このねずみ色の部品はバリが多いので、軽くやすりがけしてから使うことをお勧めします。

組んだフレーム同士を組み合わせる

f:id:aonrjp:20190421210108j:plainf:id:aonrjp:20190421210044j:plain

組んだ2つのフレームを組み上げると、アルミフレーム部分は完成。ここも同様に、バリ取りをしておくと垂直が出しやすいです。

Y軸方向のシャフトを取り付ける

f:id:aonrjp:20190421214312j:plainf:id:aonrjp:20190421210102j:plain

Y軸方向からシャフトを取り付けます。まず、位置を測りながらシャフトの軸受を固定。次に、台座プレートの軸受を通しつつ、シャフトを軸受に刺します。 この時、台座が自重でスムーズに動くように調整すると、完成後にキコキコ鳴りづらくなります。満足いくまで調整しましょう。グリスも忘れずに。

残りを取り付けて完成

ここまでやれば、あとは同様にX軸も組み上げます。CNC 2418はZ軸が組み上がった状態なので、他はそんなに難しくないはず。

f:id:aonrjp:20190421210033j:plain

試し彫り

f:id:aonrjp:20190421224611j:plain

とりあえず同梱のVカッターで、制御ソフトのサンプルに同梱されていた謎のロゴ()を彫ってみました。そんなに悪くない。

雑談

しっかりしてるからとテレビ台の上に置いたら、共鳴してとんでもなくうるさくなったw 次は一緒に購入した5500mWのレーザーを試します。

Macintosh SE/30 Repair #2

FDDのギア交換

Macintosh SE/30に内蔵されていたFDD「MP-F75W-01G」くんですが、これがSonyタイマーかと言わんばかりのギア欠けがw

f:id:aonrjp:20190420215708j:plainf:id:aonrjp:20190420220522j:plain

このままではフロッピーが自動Ejectできないので、修理することにしました。

3Dプリンタで印刷してみた

ちょうど大学に3Dプリンタがあったので、まずはこれで複製してみることに。

現物を実測してFusion 360モデリング...と言いたいところですが、すでに手元の現物は歯がほとんど欠けていて分からない。 ので、ネット上の同じギア画像をいくつか見比べつつ、現物も測りながらなんとか完成。

f:id:aonrjp:20190420220739p:plain

ええやんけ。で、印刷した結果がこれ。

f:id:aonrjp:20190420214756j:plain

おぞましい何かが出来上がった。

いやね、流石にそんなにノズルが細くないような積層プリンタで刷るには細かすぎましたわ。

eBayで買う

しばらくググると、どうやらこのギア欠けで困っている人間は世界中にいるようで。 優秀な交換用ギアがeBayで売ってましたんで、迷わず購入。

ebay.us

1週間ほどでItalyから届きました、便利な世の中やな。

f:id:aonrjp:20190420221855j:plain

無事修理完了!スムーズに吐き出すようになりました。

余談

f:id:aonrjp:20190420223111j:plainf:id:aonrjp:20190420223114j:plainf:id:aonrjp:20190420223057j:plain

自動Ejectできても読み込めねぇ...

Macintosh SE/30 Repair #1

Macintosh SE/30を購入した

ちょうど東京へ用事があり秋葉原に寄っていたとき、ふとAKIBA PC Hotline!でクラシックMacintoshのジャンクが紹介されているのを発見。

akiba-pc.watch.impress.co.jp

しかもいつも覗いていたBEEPさんで扱ってると言うもんだがら、まずは見に行ってみることに。

通電不可のMacintosh SE/30

店内ほぼ中央、レジ前の棚の前に佇んでいたのは、HDDなし通電不可Macintosh SE/30だった。

店員のおっちゃんに聞くと、他はもう売れて最後の一台とのこと。コンパクトMacとはいえ、流石に滋賀まで持って帰るのは大変か〜と30分ほど悩み、流石に諦めて店を出ることに。 が、店を出た瞬間「今買わんと後悔するぞ!」という心の声が聞こえたので、結局買うことに。

レジ横のくじ引き

BEEPさんで1,000円以上の買い物をすると、レジ横のくじ引きゲームができる。さすがレトロゲーハード屋さんだけあって、このくじ引きゲームもまたレトロハードで大変良い...

でもって、いざ引いたらなんと『1等賞』、店員共々おったまげw

f:id:aonrjp:20190418140517j:plain

次もまた何か買いに来ます。

なんとか持って帰ってきた

4日分の旅行道具とともにコンパクトMacを背負い、なんとか滋賀まで帰ってきた。

通電不可とはいえど、その割に外観がかなり綺麗である。何も確認せずにいきなり火入れはやばいので、まずは分解することに。 お約束の電池液漏れチェックをすると、電池も液漏れなし。コンデンサもこれといったひどい劣化は見られず。

これは起動できるのではという機運が高まる...

ネットワークカード爆発

一通り状態を確認し、組み直し完了。
しかし、念じながら火入れした瞬間、ポシュッという音とともに立ち上がる紫色の煙が...

なんと刺さっていた拡張カードから煙が吹き上がったのである 0(:3 )~

SE/30拡張カード
煙を吹いた拡張カード

急ぎ電源を落とし、カードを外してからもう一度電源投入するも動作の気配なし。こりゃ駄目か?

画面輝度調整ダイヤル

諦めかけた矢先にふと、画面輝度調整のダイヤルが左下にあったことを思い出し、くるくると回してみると...

なるほど、通電不可というよりも画面真っ暗状態だったwww

とりあえず電源が入るところまでは確認できましたが、音が鳴らなかったり、たまにシマシマックになるなど色々不安定さがあります。

余談

試しにフロッピー入れたら、排出するときにギアが欠けた。
聞くところによればこのFDDは、このギアだけ脆いらしい。

購入したMacintosh SE/30は、Made in USAモデルではないので、Steve Jobsのサインは無し。 まあ、ケースの状態はかなり良いので満足である。

ジャンク屋はどこだ

電気街といえばジャンク屋でしょ!

関西地区の民たるもの、電気街といえば大阪日本橋。難波からオタロードを通ってシリコンハウス方面へと抜けていく。

東京へいくとあらば、秋葉原に行かぬことはまずないし、秋葉原へ行ってメイド喫茶…には行かぬが電気街には必ず行っている。

PC NETの閉店

昨年5月には「PCNET秋葉原ジャンク通り店」も閉店し、残るは日本橋のPC NETのみ...と思っていたらそちらも閉店。

なんてこった、もうこの日本にジャンク品の宝庫は存在しないのか...
と思っていた矢先、TwitterのTLに流れてきたのは衝撃の店名。

秋葉原最終処分場。さん

『 秋 葉 原 最 終 処 分 場 。』

f:id:aonrjp:20190418023059j:plain

名前からしインパクトがすごい。しかも立地はラジオデパート地下一階、最強やんけ。 注意点としては、今のところ営業日が金・土日・祝日のみです。
お店としては、同じくラジオデパート1階「家電のケンちゃん」さん (こちらは同人ハードを買うときにお世話になってます)の系列ということで、買取はそれ以外の曜日でも受付とのこと。

詳細はTwitterをチェックしましょう。入荷情報もバンバン書いてくださってますから。 ジャンク大好きマンには良い意味で危険なお店です。時間を忘れてしまいます。何なら、ここが東京であることすら忘れます。

終いには、本当にハードを買うことになるとは...

BEEPさん

秋葉原最終処分場。さんの他に、もう一箇所おすすめのお店があります。

ジャンク品とは少し系統が違うのですが、コンピュータに興味がある同世代に行って欲しい思うのがBEEP さん。

www.akihabara-beep.com

じゃんぱらとホワキャンが目立つ建物の角、ひっそりと地下へと進む階段が。一見怪しく重厚な(?)扉ですが、開けるとそこは夢のような空間が広がっています。 レトロアーケード筐体やPC98筐体(しかもみんな動いて展示されている!)、同人誌や同人ハードも売っており、当時を知る方だけでなく若い人でも楽しめる空間です。

この後、まさか本当にハードを買うことになるとは...

余談

ところで関西大阪日本橋エリアにジャンク屋と自作キーボード専門店はいつになったらできるんです?

Dockerとpip installでexit code 137になった話

Dockerでpip installしてたら終了コード137で落ちた

少し重めのパッケージをinstallしていると、唐突にError code 137で落ちまた

f:id:aonrjp:20190418011239p:plain

悲しみ。結論から言えば、Dockerに割り当てていたメモリ容量不足でした。

Error Code 137 とは

http://tldp.org/LDP/abs/html/exitcodes.html

Error code 137128 + 9 = 137
すなわち、シグナル9の致命的なエラーで終了した。

Signal 9 とは

signal(7) - Linux manual page

シグナル9SIGKILLだってさ、強制終了やんけ。

Docker Engineにはメモリ割り当て量を指定できる

さて、VMware Fusion等と同じく、DockerEngineにもCPUコア数なりメモリ容量なり、割り当て量が設定できます。

f:id:aonrjp:20190418003911p:plain

Docker設定画面のAdvancedから設定できます。
実際の搭載容量とホスト側に残す量を考えながら割り当てましょう。

結果

f:id:aonrjp:20190418013027p:plain

無事成功、世界平和が訪れた。

参考

MeCab用のDockerfile - sanshonokiの日記

EagleのSchematicからlbrを救出する方法

Eagleのschからlbrを吸い出す

KiCadではシンボルとフットプリントが分かれているので、パッドの差し替えもすぐ出来ます。 一方Eagleでは、それらがセットになっているので、lbr単位で管理したくなります。

ところが、他人の作ったプロジェクトをもらってきたらlbrが同梱されていなかったりするとキレそうになる(schからlbrにはコピペできないので)

実はデフォで入ってる

ついこの前まで知らなかったんですが、Eagleではデフォルトでlbr抽出スクリプトexp-lbrs.ulpが用意されています。 手順は簡単で、

  1. 吸い出し元のschファイルを開く
  2. Eagleのコマンドラインrun exp-lbrsを実行
  3. 出力したいライブラリを選択してOKで出力

1. 吸い出し元のschを開く

言わずもがな、お好きな方法で開いてください。ただし、brdではなくschを開くこと。brdから実行すると正しく吐かれません。

2. コマンドラインからスクリプト実行

Eagleでschを開く

Eagleのコマンドラインからrun exp-lbrsと実行。

3. 出力したいものを選択

exp-lbrsのダイアログ

検出されたライブラリが並んでいるので、出力したいライブラリを選択。出力先ディレクトリを確認してOKを押せば出力される。

余談

以前はKiCadがmacでまともに描画されなかったのでEagle派でしたが、最近はそれなりにちゃんと動くので個人ではKiCadばかり使っています。 正直どっちが使いやすいか分からなくなってきたw

参考リンク

EAGLEのライブラリファイル.lbrを救出する - how to code something