2014/07/19

charは「ちゃー」だと思う

いくつかの事例を考える。
bin=「ビン」、proc=「プロック」、spec=「スペック」などを見てみると、短縮された場合は必ずしも元の語の発音に忠実に読む必要はないことがわかる。
元の発音を気にするならば、上の例はそれぞれ「バイン」「プロシ」「スピーシ」のように読まれるはずである。
よって、同様に考えてchar=「チャー」≠「キャラ」であると思われる。

ちなみにenum今まで脳内では「イーナム」と読んでいたが、よく考えると「{イ,エ}{ナ,ヌ}ム」のように読まれるはずである。
音節を区切ってe-numのように読めば合理性は説明できなくもない気はするが、4文字と短い略語でこのように音節を切るのは適切なのだろうか。
それはともかく「エニューム」はやはりおかしいと思った。

2014/07/13

squid,dnsmasq,openresolv on gentooで幸せになろう

wpa_supplicantで無線を使っているが、ネットワークを切り替えるとsquidが動かなくなる。
squidを通さなければ普通にネットワークが使えるので、どうも名前解決あたりで駄目になっているのではないかと考えたが、結果的に正解だった。
squidは内部に独自の名前解決の仕組みを持っているらしく、せっかくopenresolvとdnsmasqでローカルに正しく変更の反映されるDNSを持っているのに、それを利用してくれない(「dns_nameservers 127.0.0.1」しているにも関わらず、である)。
この挙動はsquidのconfigureオプションで「--disable-internal-dns」を指定することで変更でき、外部のDNSを使わせられるらしい。
ここでgentooの強みが生きる。

configureのオプションは普通ebuild内で指定されるが、configureスクリプトがautotoolsによるものの場合に限り、EXTRA_ECONF環境変数をオプションとして渡してくれるらしい(詳しくはManpage of EBUILD の"Compile"のところのebuildの説明を参照のこと)。
そんなわけで、merge時に「ECONF="--disable-internal-dns"」を指定できれば良いわけだが、ここでいつぞやの「jdkのヘッダにパスが通ってなくてemergeが失敗した話。」のケースを思い出す。
このときも環境変数(C_INCLUDE_PATH)を弄ろうという話だった。つまり、/etc/portage/package.envあたりを弄ってやれば良いだろう。

/etc/portage/package.env (追記)
net-proxy/squid squid-disable-internal-dns
/etc/portage/env/squid-disable-internal-dns (新規作成)
EXTRA_CONF="--disable-internal-dns"

んで、あとはsquidをmergeしなおしてやれば完了。
幸せだ。