JP7FKFの備忘録

ヒトは,忘れる生き物だから.

macにnokogiri入れるときに詰まる件

バカだからnokogiriインストールで詰まった.
n回目の事案なのにいちいちggってるのアホっぽいから書いておく.

はじめに

brew uninstall nokogiri

しておこうか.

bundle config build.nokogiri --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib/  
bundle install

やら

gem install nokogiri -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib/

で,解決.

参考に/usr/localの下にlibxml2とかがあるときのやつを載せておく.linkすればわかるよな.多分.

brew install libxml2 libxslt  
brew link libxml2 libxslt --force  
bundle config build.nokogiri --use-system-libraries --with-xml2-include=/usr/local/include/libxml2 --with-xml2-lib=/usr/lib/  
bundle install

Reference

Mac OSX YosemiteにNokogiriをインストールする

DeNAの障害検知

ただの備忘録.

DeNAでは以下のようなプロセスで、インターネット上で発生するネットワーク障害に対応できるよう備えています。
1. whoisにて、注視したいFQDNとAS番号を紐付ける。
2. 各ASのサンプルページにリーチャビリティがあるかどうかを定期的に確認する。
3. 結果を宛先ASごと・DeNAの使用回線ごとに集計し、失敗率を算出する。
4. 失敗率が予め定めた閾値を超えた場合に、失敗率が高いASに対してmtrを実行する。
5. 障害の原因となった場所を特定する。
6. 可能であれば迂回等の対策を行う。

へー.

Reference

TOTO TKGG31型の水栓のバルブカートリッジを交換した話

家の人から,蛇口の取っ手がガタガタして困っているという報告を受けた. 蛇口の取っ手のネジの緩みかと思ったが,締め直しても改善せず,取っ手を取り外して見てみるとバルブカートリッジの流量調整部の部分そのもの(レバーハンドルが取り付けられる場所)が若干がたついていた.数年使っているので,バルブカートリッジを交換することにした. うちの水栓のバルブカートリッジはTOTOのTKGG31型というのに当てはまるようで,これに適合するTHF29型というバルブカートリッジを発注した.
f:id:jp7fkf:20170503232236j:plain:w500
中身はこんなかんじ.カートリッジ本体とクリックユニット,あとはネジが2つ.
f:id:jp7fkf:20170503232253j:plain:w500
さて,早速水栓をバラしていきます.水道を元栓を閉めて作業を行います.これを忘れると大変. まずはレバーハンドルを取り外します.インデックスをマイナスドライバーやらで外して,蛇口を開き,六角レンチでレバーハンドルを固定しているネジを緩めます.
f:id:jp7fkf:20170503232256j:plain:w500
バーハンドルが外れるとこんな感じ.
f:id:jp7fkf:20170503232301j:plain:w500
カバーを軽く回して引き抜きます.
f:id:jp7fkf:20170503232303j:plain:w500
クリックユニットを外します.取るだけ.
f:id:jp7fkf:20170503232309j:plain:w500
するとステンレスのボルトが3本見えてきます.これとその下のプレートで,バルブカートリッジを押さえつけて止めています.この六角ボルトを緩めて外します.
f:id:jp7fkf:20170503232318j:plain:w500
するとバルブカートリッジが外れます.これを交換してやります. f:id:jp7fkf:20170503232531j:plain:w500
バルブカートリッジを入れるときは,向き等に注意して位置合わせをしっかりとやります.突起があるのでわかりやすい.
戻すときは全く逆の手順で戻します.これで終了です.簡単.
見事レバーハンドルのがたつきも解消し,水栓の開閉時の抵抗も少なくなりました.めでたし.

ULVAC GCD-051Xのオーバーホール

ダメになってる真空ポンプをオーバーホールしてみたので書いて見ます.
雑にオーバーホールしただけなので,精密なことや,消耗品交換はしていません.
しかしながらサビやらなにやらで回らなくなっていた真空ポンプは回るようになり,普通に使えるレベルになったのでとりあえずはいいかなという感じ. オイルを抜いて,モータを外して,オイルで満たされている部分を開けるとこんな感じのポンプ部が出ます.
f:id:jp7fkf:20170503225333j:plain:w500
ちょっとこの取り付け間違っていて,本当は一番手前の部品,45度反時計回りにつけるべきものです.間違えた時に撮影してしまって….
f:id:jp7fkf:20170503225342j:plain:w500
その部品を外して,開けてやるとこんな感じ.
f:id:jp7fkf:20170503225355j:plain:w500
さらに分解を進めて…
f:id:jp7fkf:20170503225425j:plain:w500
この下が2ndステージ,さらに下が1stステージです.
この先の写真を撮るのを忘れてしまっていました….
f:id:jp7fkf:20170503225441j:plain:w500
全部バラすとこんな感じになります.
f:id:jp7fkf:20170503225458j:plain:w500
ロータリ部分のブラシ?はカーボン製,バネが入っていて外壁にカーボンブラシが密着するようになっています.
ツーステージポンプなので,部屋が2つあって,1段目は大きく,2段目は少し小さい部屋です.1stステージで圧縮したものをさらに2ndステージで圧縮して,ワンステージポンプよりも高真空が得られるようになっています.
部品点数はそれほど多くなく,簡単に分解清掃できました.
サビを落としたり洗浄して,適度に真空ポンプ用オイルを塗りながら再度組み上げを行い,モータを取り付ける前に人間の力で軽く数回回してあげて抵抗がありすぎてモータがストールするようなことがないかをチェックします.六角レンチとかをカップリングのところに噛ませてよいしょと回す感じ.交流モータの力で回る程度なら問題ないでしょう.最初は周りがしぶくてモータをストールさせてしまいました.モータに安全ブレーカが入っていた(過電流時にボタンが飛び出るタイプのアレです)のでなんとか助かりました.焼けるところだった.
そして数時間ほどガスバラストバルブを開けて,吸気口には適当に抵抗をかけて(ふさいで)あげて(この真空ポンプは10kPa以上の高真空が不得意ですので),慣らし運転をしてあげます.これでポンプのお部屋もカーボンによって研磨されて,可動部の細かなサビも擦れて取れてくることでしょう.一旦回るようになればあとは回すことで抵抗はだんだんと減って普通に使えるポンプになるはずです.直して動かした感じではちゃんと引けてそうでした.もとの到達圧力になるか,排気速度は保てているか,など,評価の指標はたくさんありますが,必要に応じて測定すればよいでしょう.私の用途ではそれは重要ではないので,ある程度きちんと引けてくれればよし,ですので,これでOKです.というか油回転ポンプなんてそんな用途でしか使わないことが多いでしょうから,そこまで厳密な性能は多くの場合で必要ないのではないでしょうか,と思います.
というわけでオーバーホールできました.めでたし.

DC Blockを作ってみた話

DC Blockとは何か

スペアナとかネットアナとか,高周波測定器とかを使うようになると, DC Blockと呼ばれるものが欲しくなったりする.
これは一体何かと言うと,その名の通り,高周波のみを通過させ,DCを通さないようにする部品である. 感の良い人はすぐにわかるであろうが,つまりキャパシタを伝送線路に対して直列につければよい.というわけで私でも作れるはずである. しかしながらこれがなかなか曲者なのである.高周波部品である以上,できるだけS21特性,S11特性などがよいものであってほしいものだ. S21パラメータは周波数が上がるにつれ,小さくなって行く傾向にあり,S11特性は大きくなる傾向にある.GHz帯で用いるパーツとしては,この特性が良好な機材を作りたいものである.

作った

今回は,〜8GHz程度までを対象としたDC Blockを2つ作製した. 伝送線路はマイクロストリップ線路を用い,コネクタはSMAコネクタのメス(秋月の安いやつ)をつけた. 1つ目は1000pFのチップキャパシタ(1608)をつけたもの. 2つ目は1000pF,2200pF,3300pFを並列にしたものを伝送線路に対して直列につないだものだ. それぞれ制作したものの画像は以下のようになっている.
- 1000pF
f:id:jp7fkf:20170404221936j:plain:w500
- 1000pF, 2200pF, 3300pFパラ
f:id:jp7fkf:20170404221932j:plain:w500

これらをネットワークアナライザを用いて測定し,S21,S11パラメータを測定した. 特性の参考にMini-CircuitsのBLK-89+というDCブロックと比較をしてみた.
f:id:jp7fkf:20170414141625p:plain:w500
f:id:jp7fkf:20170414141642p:plain:w500
さすが製品なだけあって,Mini-Circuitsの特性は非常に良い.
DC_Block_001が1000pFをつけたもので,DC_Block_002が3つキャパをつけたやつ.DC_Block_001の特性はお世辞にも良いとは言えない.3GHz付近でS11は-20dBを超えてしまっている.S21も7GHzあたりでは-2dBくらいある.DC_Block_002では,概ね8.5GHzまでS11は-20dB以下,S21は-1.5dB以下となっている.こちらは使い物になりそうである. BLK-89+はさすがであり,S11は概ね-25dB以下,S21は-0.5dB以下である.曲線も美しく,素晴らしい特性である.DC_Block_002のほうは,S11的にはBLK-89+に引けを取らないような感じに見える.5dBくらい負けていたりするけど.S21のほうは悪くないが,BLK-89+と比較してしますとやはり劣るように見える.しかしながらそれなりに使い物にはなりそうである.おそらくSMAコネクタの損失等でS21が低下している部分もあるのだろうなぁと思う.まともなコネクタをつけて,半田付けをもっと上手にするとか工夫すればもっとよくなりそう.とりあえずは使えそうなのでこれでしばらく使ってみようと思う.

References

Mini-Circuits, DC Block, BLK-89+ Datasheet

HDL-GTをLinux(Debian)箱にする

HDL-GT1.0というI-O DATAのNASの筐体を手にいれた.
HDL-GTシリーズ
手にいれたのは筐体だけである.HDDやHDDのソケットすらない.手にいれたNASに電源をいれてみると,一応電源は付いた.故障はしてないようである. NASなので,アクセスするにはネットワークが必要.I-O DATAの取説を読む限りWEB GUIで状態を見ることができるようである.このGUIが動いていれば,モノは壊れてなさそうである.まずネットワークに接続し,IPを特定する.

ping [そのネットワークのブロードキャストアドレス]
arp -a

などを用いて特定し,ブラウザでアクセス.WEB GUI でのアクセスが確認できた. が,このNASはあらかじめ特定のデータが書き込まれているI-O DATAの専用HDDでしか動かないようだ. 空いて居るHDDを直接SATAと電源の端子に繋いでも認識しなかった.

少し調べていると,HDDにLinuxをいれておいて,それから起動させて,Linuxの箱として使えるようにする手法があるようだった.これはHDL-GTシリーズ,HDL-GTRシリーズ,HDL-GXR シリーズで使えるOPEN LANDISK PLATFORMと呼ばれるもので,I-O DATAの名前がついたReadmeなどと共にどこかの場所で公開されている.今回はその手法の流れを備忘録として残しておく.
主として参考にしたのは以下のサイトである.
HDL-GT2.0 素敵NASへの転生の道〜システム構築編〜
これを参考に行った動作だけを簡潔に備忘録として残そうと思う.

まずは適当なHDDを準備する.
今回はUbuntu Server 15.04.02 LTSを用いてこのHDDにイメージを書き込んでいく.

sudo mount /dev/sd* #*はそのHDDの位置

fdiakやらdiskutil(Macだったら)やらを使ってパーティション分割.

番号 ID サイズ
1 83 任意 (通常、128MB 程度を確保します)
2 82 任意 (通常、1GB 程度を確保します。fsck 時などで必要になります) 
3 83 任意 (通常、最低 2GB 程度必要です。)

こんな感じを参考に.私はパーティションを4つ切った.番号3で割り当てる領域が多すぎたので,Linuxに割り当てる番号3の領域をほどほどにしておいて,あとの領域はNASの保存領域だったりとして使えるようにした.
切ったらフォーマット

mkfs.ext3 /dev/sd*1
mkfs.ext3 /dev/sd*3
mkswap /dev/sd*2

そしたらそれぞれの領域をマウントしてやることやる.

mount /dev/sd*1 /mnt
cp [OLP02_boot_etch20071203a.tgzのある場所] /mnt/
tar xvfz OLP02_boot_etch20071203a.tgz -C /mnt
mv /mnt/uImage.OLP02GXR /mnt/uImage
umount /mnt

mount /dev/sd*3 /mnt
cp [OLP02_base_etch20071203a.tgz] /mnt/
tar xvfz OLP02_base_etch20071203a.tgz -C /mnt
umount /mnt

これで再起動するとDebian etchが起動するはず.
etchをlennyにアップデートする.
これはこちらを参考にした.
HDL-GXRをDebian Lennyで使えるようにする

/etc/apt/sources.list
--
deb http://archive.debian.org/debian/ etch main non-free contrib
deb-src http://archive.debian.org/debian/ etch main non-free contrib
deb http://archive.debian.org/debian-security/ etch/updates main non-free contrib
deb-src http://archive.debian.org/debian-security/ etch/updates main non-free contrib
--

apt-get update
apt-get install debian-archive-keyring

/etc/apt/sources.list
--
deb http://archive.debian.org/debian/ lenny main non-free contrib
deb-src http://archive.debian.org/debian/ lenny main non-free contrib
deb http://archive.debian.org/debian-security/ lenny/updates main non-free contrib
deb-src http://archive.debian.org/debian-security/ lenny/updates main non-free contrib
--

aptitude update
aptitude upgrade
shutdown -r now #一旦再起動しておく.
aptitude dist-upgrade

これでetchからlennyになる.

cat /etc/debian_version

でバージョンを確認できる.

で,実はこいつはARM EABIを使っておらずOABIを使っている.つまりarmのパッケージを用いている.つまりlenny(armアーキテクチャ用のバージョンがある)からsqueeze(armアーキテクチャ用のバージョンなし,代わりにarmelがある)への直接のアップデートはできないようである.クリーンインストールをしてarmel対応のものにアップデートすることは可能だ.armelはarmをサポートするらしいので,ちゃんとkernelをコンパイルしていい感じに作ってやれば今の最新のjessieでも動きそうである.現状ではlennyまでしかアップデートはできないようだ. いつかカーネルコンパイルして最新版として使いたい.

References

HDL-GT2.0 素敵NASへの転生の道〜導入編〜
HDL-GT2.0 素敵NASへの転生の道〜システム構築編〜
HDL-GXRをDebian Lennyで使えるようにする
Debian 5.0 (lenny) からのアップグレード
Debian 7 から Debian 8 へバージョンアップ
Debian Squeeze-lts で GPG エラー
玄箱/PROをlennyからsqueezeにアップグレードする(armel)

Ubuntu Server 16.04.2 LTSでSNMPを使えるようにする話

ubuntu server に snmp をいれよう

Ubuntu Server 16.04.1 LTSでsnmpを使えるようにした.
というものの,実はZABBIXサーバをUbuntu Server で立てていたのだけど,外部のsnmp agent にSNMPで情報を取ろうとしたら,parse系のエラーが出ており取得できず.原因はsnmp はapt-getで入ってたけどsnmp-mibs-downloader を入れていなかったのと,/etc/snmp/snmp.conf を適切に編集していなかっただけだったようだ.ということで,まともにsnmp を使えるようにしたという話.これでMIBからOIDがちゃんと引けるようになった.

apt-get で必要なパッケージをぶちこむ.

sudo apt-get install snmp snmpd snmp-mibs-downloader

で,基本的なsnmpを用いる時に使うツールは入るはずだ.
/etc/snmp/snmp.conf のmibs: となっているところをmibs allに書き換えてやる.
例えば次のように.

sed -ibak "s/mibs :/mibs all/" /etc/snmp/snmp.conf

これでsnmpを使えるようになるはず.snmpwalk とか,snmpgetとかできるようになる…はずなのだが, snmptranslateしようとしたらエラー,snmpwalkとかで英字名MIBで表示されない.

Bad operator (INTEGER): At line 73 in /usr/share/mibs/ietf/SNMPv2-PDU

これは次のように解決.

sudo wget http://www.iana.org/assignments/ianaippmmetricsregistry-mib/ianaippmmetricsregistry-mib -O /usr/share/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB
sudo wget http://pastebin.com/raw.php?i=p3QyuXzZ -O /usr/share/mibs/ietf/SNMPv2-PDU
sudo wget http://pastebin.com/raw.php?i=gG7j8nyk -O /usr/share/mibs/ietf/IPATM-IPMC-MIB

使えるようになりました.
ちなみにzabbix-server をすでに起動している場合にこの変更を適用するにはrestart する必要があります. めんどくさいのでマシンごと再起動すればいい気がする.

References