start

DT4282の1000V/0.63Aヒューズを飛ばして痛い目をみた

日置のマルチメーターDT4282の電流レンジでJ-FETの選別をしてた際、誤ってプローブをショートさせてしまった。ピーッという音と共に画面が赤くなり最初は何事かと思ったが、測定値が出ないのを見てなるほどガッテン、ヒューズが飛んだんだなと。秋葉原に行くのが面倒で秋月通販したばっかなのに、結局ヒューズ1本のために出向くことになるのかチクショーなどと思いつつテスターを開けると、なんか見たことないヒューズが入ってるんですけど。

白くてデカくて見るからに高そうな雰囲気(写真上。下のは比較用のミゼットヒューズ)。大きさは実測37.95mm×10.31mmなので、38mm×10.3mmないし38mm×10mm規格のセラミック管ヒューズと思われる。定格の1000V/630mAで検索してみたが、販売店が日置の公式ショップしか出てこないという…。しかも1本860円(税抜き)と超高い!普通のヒューズの10倍以上だよ!!その上、送料540円が加算される罠。貧乏人の味方、eBay、AliExpressでも適合品見つからないしまぢ詰んだ。ここでトンでもないミスをやらかしたんだと思い知らされた。ヒューズが飛んだだけに。

送料かかる位なら秋葉原まで行くわ、ってもんでラジオセンターのHIOKIショップに行ってみたら在庫なしで取り寄せになってしまった。結局、発注と受取の電車2往復で540円より高く付いた\(^o^)/まぢつらたん。

左が飛んだヒューズで右が買ってきたやつ。印字の色が違うけど問題はないそうで。まぁ定格が合ってるんだから当然か。モノ自体はHOLLYLANDのヒューズっぽいけど、ほぼHIOKI専用品のようだ。/-まぁ、サイズが適合する元の定格より低い安物で代用できると思う。1000Vなんてまず使わんし500V0.5Aとかので大丈夫じゃね?-/

電流レンジを使うときは、ちゃんと電流制限機構を入れないとダメですな……人は失敗によって成長するのだ………。

InnoDB File-Per-Tableモードではinnodb_data_home_dirは無視される

MySQL/MariaDBにinnodb_data_home_dirというシステム変数がある。InnoDBのデータファイル置き場を明示する変数だが、InnoDB File-Per-Tableモードでは指定値が無視される。File-Per-Tableモードとは、InnoDBのテーブル毎にファイルを作成するモードの事でinnodb_file_per_table変数で制御可能である。MySQL 5.6.6以降でデフォルト有効になったため、innodb_data_home_dirは事実上意味がなくなってしまった。

よって、File-Per-TableモードではZFSのrecordsizeprimarycacheをストレージエンジン毎に最適化する、という手法が取りにくくなった。(DBごとにフォルダが作成され、その中にInnoDBやMyISAMのファイルが混在することになるため。)自分のメモも兼ねて最適とされるパラメータを下表にまとめる。

ストレージエンジン recordsize primarycache
MyISAM 8kBall
InnoDB(データ) 16kBmetadata
InnoDB(ログ) 128kBmetadata

WITH_CHARSET, WITH_XCHARSETを指定するのは止めにしよう

FreeBSDでPrtsからPortsからMySQL/MariaDBを入れる際、よく指定されるオプションにWITH_CHARSET, WITH_XCHARSETがある。調べてみたら、なんとmysql55で廃止されていた。

今まで盲目的に指定していたのだけど、なんとなく気になってググってみても、これぞという解説が見当たらない謎オプション。とりあえずFreeBSD Ports独自のオプションで、日本以外での使用例は殆どない。やむなくportsの更新履歴や8-RELEASE以前の古いportsツリーをあさってみると、mysql51-serverのportsのMakefile(MySQLそのもののMakefileじゃないよ)には以下の記述があるが、mysql55-serverからは消えているという事実が判明。MariaDBはMySQL 5.5からのフォークなので言わずもがなである。

.if defined(WITH_CHARSET) && ${WITH_CHARSET} != ""
CONFIGURE_ARGS+=--with-charset=${WITH_CHARSET}
.endif
.if defined(WITH_XCHARSET) && ${WITH_XCHARSET} != ""
CONFIGURE_ARGS+=--with-extra-charsets=${WITH_XCHARSET}
.endif

御覧の通り、portsのWITH_CHARSET, WITH_XCHARSETオプションは、それぞれMySQLの–with-charset, –with-extra-charsetsオプションに対応している。そして、MySQL 5.5からは–with-charset自体が消えてるっぽい。似た所で–extra-charsetsってのはあるみたいだけど。そして–with-extra-charsetsの方もデフォルト値がallとなったため、ports側から敢えて指定する必要がなくなり、オプションが削除されたのだと思われる。

WITH_CHARSET, WITH_XCHARSETオプションは、2001年1月25日にmysql323-serverに対する追加が初出のようだ。その時のコミットメッセージは「Add options for alternate charsets (WITH_CHARSET and WITH_XCHARSET).」といったもの。

というわけで、MySQL/MariaDBインストールでWITH_CHARSET, WITH_XCHARSETを付けるのはもう止めよう

FreeBSD 11.2-RELEASEでZFSのトップレベルvdevの削除機能が取り込まれてた

OpenZFS Developer Summit 2018を眺めてたら、Device Removalなるスライドを発見。タイトルの通りvdevの取り外しに関する機能である。

ご存知の通りZFSでは、一度プールに組み込んだデバイスの削除に非常に厳しい制約がある。プールのスケールアップは極めて容易な一方、スケールダウンは事実上不可能だった。しかしDevice Removalによって、ミラー構成のvdev限定ではあるものの削除が可能となる。

嬉しい人には嬉しいと思われるこの機能、なんとFreeBSD 11.2-RELEASEで既に取り込まれてた。11.2Rのmanから説明を引用してみる。

Removes the specified device from the pool. This command currently only supports removing hot spares, cache, log devices and mirrored top-level vdevs (mirror of leaf devices); but not raidz.

スライドの方にしか書いてないけど、この機能でミラー構成トップレベルvdevを削除するには、各vdevのashiftが同量じゃないと駄目らしい。ashiftはvdev単位での設定なので、デバイス追加時は注意が必要。

RAID-Zでも使えるようになってほしいけど、実装面ではRAID-Z Expansion頼みかしら…?こっちの進捗具合はどうなってんだろうなー。去年のちょうど今ごろRAID-Z Expansionに関する記事を書いたものの、とんと続報がない。FreeBSD 12で実装見込みとのことだったが、十中八九間に合わないだろうなー。現時点で12.0Rは12月頭のリリース予定だし…。

FreeBSDのportmasterで失敗ログが自動保存されるようになってた

家のFreeBSDサーバのportsたちをportmasterで更新していたところ失敗するやつがあった。失敗自体は取り立てて珍しいことでもないが、今回はThis command has been saved to /tmp/portmasterfail.txtという見慣れない行が現れた。メッセージの通り、失敗した時の結果が保存されるらしい。中身はというと…

portmaster <flags> lang/php71-extensions graphics/php71-gd x11/libXpm x11-toolkits/libXt x11/libICE x11/xorgproto x11/libSM x11/libX11 x11/libXau x11/libxcb devel/check x11/libXdmcp x11/xcb-proto x11/libXext math/php71-gmp security/php71-filter security/php71-mcrypt security/libmcrypt security/php71-openssl sysutils/php71-fileinfo sysutils/php71-posix textproc/php71-ctype textproc/php71-dom textproc/php71-simplexml textproc/php71-xml textproc/php71-xmlreader textproc/php71-xmlwriter www/php71-opcache www/php71-session

あ、うん、はい(白目

失敗部分のログが保存されてるかと思いきや、portmasterコマンドのログだけだった…。この機能は2017/2/3のportmaster 3.17.10で実装されたっぽい。まぁ、何も無いよりはマシか。

ちなみに今回の直接の失敗原因はxorgprotoとglprotoの競合だった。

===>  Installing for xorgproto-2018.4
===>  Checking if xorgproto already installed
===>   Registering installation for xorgproto-2018.4 as automatic
Installing xorgproto-2018.4...
pkg-static: xorgproto-2018.4 conflicts with glproto-1.4.17 (installs files into the same place).  Problematic file: /usr/local/include/GL/glxint.h
*** Error code 70

Stop.
make: stopped in /usr/ports/x11/xorgproto

こういう時はまず/usr/ports/UPDATINGを見てみる。特にportsの競合の場合は大抵解決策が書いてある。今回も見事に書いてあった。

20180731:
  AFFECTS: users of x11/xorg and all ports with USE_XORG=*proto
  AUTHOR: zeising@FreeBSD.org

  The xorg *proto packages have all been merged into one package,
  x11/xorgproto.  This might cause issues with upgrading.  If you
  get conflicts between xorgproto and old *proto packages, please
  remove the old package and install xorgproto again.

  In order to remove all orphaned ports, including all *proto port,
  the following can be used after the ports tree has been updated:
  pkg version -l \? | cut -f 1 -w | grep -v compat | xargs pkg delete -fy

X.orgのproto系パッケージがx11/xorgprotoに統合されたために、glprotoと衝突した事がわかる。最終行のコマンドを実行して解決。失敗したportmasterコマンドを再実行してインストール完了。あ、この時にportmasterfail.txtが役立つのか!

  • start.txt
  • 最終更新: 2022-07-27 15:26
  • by Decomo