もちろん Illustrator を起動してエクスポートなり別名で保存なりすればいいのだけれど、複数ファイルを頻繁にコンバートしたいときやはり面倒なのでコマンドラインで自動化したい。

今まで .ai ファイルが .pdf 互換ということで、.ai の拡張子だけを変更してコピーするみたいなことをしていたけど、ファイルサイズがかなり大きくなってしまう。PDF として見るだけなら必要ないデータもあるはずなのでお手軽に削減したい。

ghostscript を使う

http://askubuntu.com/questions/113544/how-to-reduce-pdf-filesize に書いてある通りだけどコピペしておく

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input1.ai input2.ai

こうするとスクリーンをターゲットに最適化される。ベクターデータとかは特にクオリティーは落ちず、余計なデータが省かれるだけになる。入力には .ai ファイルも指定できる。

ビットマップデータはかなり高圧縮になってしまってクオリティがかなり落ちたりするので、そういう場合は -dPDFSETTINGS=/ebook を指定するとサイズが多少増えつつもマシになる。

これ、入力ファイルを複数指定すると結合した1つのファイルができて便利。

こんな感じ

-rw-r--r--@ 1 cho45  staff   1.5M  9  1 20:07 2-block.ai
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=2-block.pdf 2-block.ai
-rw-r--r--@  1 cho45  staff    51K  9  2 22:19 2-block.pdf

_人人人人人_
> 30分の1 <
 ̄Y^Y^Y^Y ̄

ベクターデータだけだと全く見た目には見分けつかない。

全体的に

Perl 以外の話が例年にも増してたいへん多かったように感じた。といってもやっぱり Perl を知ってること前提にして他の話題、というパターンが多いように感じた。リアルタイムで聞けなかったトークも結構多かったので録画の公開が楽しみ。

以下のほかにもいろいろ聞いたけど、特に印象深かったものについて

Dockerで遊んでみよっかー - YAPC::Asia Tokyo 2014: Dockerとか vagrant とかちょっともはや人に聞けない感じになりつつあるけど、自分で試すモチベーションが今まで沸いてなくてさっぱり知らなかったので、発表で概要だけでも掴めたのがよかった。

TWiki − Perlで書かれたプログラマブルでglueでスケーラブルなCMS - YAPC::Asia Tokyo 2014: モルガンスタンレー社内の Wiki システム (TWiki) の話だったんだけど、社内システム自体が1都市につき2つのDC、そのセットが世界3箇所に冗長化されてるとからしくて、なんかすごかった。あと TWiki の集計マクロとかがやたら高機能で、なるほどな〜と思ったりした。

Scala In Perl Company : Hatena - YAPC::Asia Tokyo 2014: コンパイル遅いのがかなり厳しい。sbt で差分コンパイルしても最高の依存元を最高に書き変えるとやっぱりフルビルドだぜって言ってた。コンパイル時間とか全く本質的ではないのに、依存元へのコード変更を入れるのを避けるモチベーションになるのは厳しい感じがする。

Perl meets Real World 〜ハードウェアと恋に落ちるPerlの使い方〜 - YAPC::Asia Tokyo 2014: 自分の発表と結構かぶりそうだなと思ってビクビクしつつ聞いたけど、マコピーさんはちゃんと体系的に電子工学学んだ人みたいで、仕事でも使っているようなので、ちょっと自分とはレベルが違いすぎるんだけど、そういう人でもハードウェアっぽい人とは出会いがないのか〜と思うところがあった。

LT の g0v.tw の話、かなり面白かった。日本でもできるのかな〜と考えてしまう。

自分の発表について

完全に Perl に関係ないし、普段の温度感から、みんなあんまりドライバとか物理層には興味がないのだと思っていて、発表もシーンとなるのを想像していたが、思ったより人がいっぱいきてくれたし、ウケが良かった。「やってみたくなった」という人が何人かいたので嬉しかった。

その後ちょくちょく質問があったけれど、仕事では一切物理層触っていないので、これは完全に趣味の話です。

僕は、回路設計や基板設計といえば、それ系の大学いって体系的に勉強した人しかできないものだ、という思いこみがあったのだけれど、プログラムを書くのと同じように独学でもそれなりに楽しんで理解しながら学習することができるということが、最近わかってきた。

とはいえ、とにかくこういうのは基礎が大事で、特に質の高いエネルギーを広範囲に扱う分野なので、うっかり事故を起こして火事とか起こさないようなベース知識がとにかく必要だし (ICは良く燃える)、設計はできないけど既存の組み立てるだけはやるみたいな電子工作おじさんになりたくないみたいな気持ちが大きくあって、そういう意味でも基礎が大事と感じる。

独学で体系的に電子工学を1からモチベーションを保ちながら学ぶ良い方法があったらいいけど、結構むずかしい。特にモチベーションを保つためには「適度な問題」の供給が必須だけど、普通の教科書ではそういった問題は載っていない。

アマチュア無線について

もうちょいアマチュア無線の話も聞きたかったみたいなことを一瞬聞いたけど完全に時間に入らないのと、YAPC の趣旨からすると離れすぎるので (話したいことはあるけど) 殆ど入れなかった。

アマチュア無線をはじめて良かったのは「適度な問題」がたくさんあって、「次はあれをやろう」というのが結構続きやすいとかがある。すぐ思いつくだけでも以下のようなものがそこそこの難易度かつ実用的に実装できる。

  • エレキー
  • オーディオピーキングフィルタ
  • USB インターフェイス

これは本来アマチュア無線をはじめるときに思っていた意図とは違うけど良かった。それと試験勉強のためにオームの法則から基礎をやりなおしたのも役に立っている。

この日記読みかえすとアマチュア無線周辺の問題意識から Chrome App でログツール作ったり、golang で SDR っぽいことしたりもしていて、今までやったことないことをはじめるきっかけとして多大に役に立ってる。

「勉強」できないエンジニアなので、適切な問題の供給がされないと学習が全くできない。これは基本的に非効率だけど、適切な問題さえあれば楽しいので無限に掘りさげて学習できる。きっかけを作るためのアマチュア無線というのは結構いいなと考えてる。

Raspberry Pi Model B+ (Plus) -

3.0 / 5.0

第一級アマチュア無線技士試験問題集 (合格精選400題) - 吉川忠久

吉川忠久

3.0 / 5.0

基礎からよくわかる無線工学―第1級・第2級アマチュア無線技士国家試験準拠 - 吉川 忠久

吉川 忠久

3.0 / 5.0

Slack 側の設定

チームアドミンの Gateways で Enable IRC gateway してもらう

Tiarra 側の設定

plain text を有効にしない場合 SSL のみになるので tiarra 側でも SSL の設定をする。Tiarra over SSL without stone に書かれている通りだけど、リリース版の tiarra はだいぶ古いっぽいので、最新のを svn でチェックアウトしてくる

$ svn co http://svn.coderepos.org/share/lang/perl/tiarra/trunk/ tiarra-head

IO::Socket::SSL を入れた perl を用意する (普通に開発してると入ってるけど、デフォルトでは入ってないっぽい)

/path/to/my/perl /path/to/tiarra-head/tiarra


で起動するように変える。

Tiarra の conf

networks に

name: xxxx-slack

を追加して設定を書く。設定は https://my.slack.com/account/gateway に書いてある。エンコーディング設定を忘れずに…

xxxx-slack {
    host: xxxx.irc.slack.com
    port: 6667 
    user: xxxx
    password: xxxxxxx
    in-encoding: utf8 
    out-encoding: utf8 

    ssl {
        version: sslv23
        ca-path: /etc/ssl/certs
    }    
}

ca-path は ubuntu の場合は上でいい (sudo apt-get install ca-certificates が必要)

まとめ

Tiarra は実行環境 (perl) アップデートしても Tiarra 自体をアップデートしても config 全く書きかえず使い続けられてやばい。10年以上普通に使ってる。

ちょっと時間に対して話したいことが多すぎて、各分野での掘り下げが足りなかったとは思いますが、一通り下のほうまで盛りこみました。

電子工学について:自分は学校で電子工学を体系的に学んだことはありません。

YAPC 会期中はそこらへん歩いてます。

Raspberry Pi Model B+ (Plus) -

3.0 / 5.0


アセンブリ関係

電子工作まわり

三菱レイヨン・クリンスイ 蛇口直結型浄水器 クリンスイ モノ MD101 MD101-NC -

4.0 / 5.0

これ買った。クリンスイのボトルタイプを使ってたけど、めんどくさいので蛇口取り付け型を買ってみた。

ネットでいろいろ調べてみたけど、うちの水栓に対応しているか?が最後までわからなくて、かなり不親切な感じ。だいたいどのメーカーも同じなのかもしれないけど、水栓に詳しくないのでよくわからない。結局附属の部品だけでちゃんと取り付けられた。

味は明らかに違うので水飲む頻度が増える。蛇口直で即浄水された水が出るのは便利。

今までエアコンの室外機や給湯器から1mも離れていないところにアンテナを建てていたので、一念発起して場所を少し移動した。といっても、ベランダが大変狭いので、最大 2.5m 程度しか離せない。

が、やってみたらエアコンや、室内の電子機器から入るノイズはだいぶ減ってくれた。あとなぜか7MHz帯の全体的なノイズがS1からS2(2分の1から4分の1) 減ってだいぶ聞きやすくなった

before:


after (FFT後にソフトウェアでゲインの補正を入れてあるので上記とちょっと違うけど):

アンテナの位置を変えるというのは、すなわち調整しなおしなので結構なダルさがある。マルチバンドモービルホイップなため

  • 全バンドでSWRがそれなりに下がるようにカウンターポイズを試行錯誤する
  • 全バンドで共振点が狙ったところになるようにエレメント長を調整する

だいたい2時間ぐらいでとりあえずいい感じにはなった。カウンターポイズ自体もエアコンの室外機になるべく近づけないようにした。

しかし一方で、18MHz 帯のノイズが増えて厳しい感じになった。どこから入ってるのか検討もつかないけど、自分の範囲外の環境雑音っぽくてかなり厳しい。

(下の画像で横に線が連続で入ってるのはOTHレーダーかな?だいぶうざいですね)

ノイズ源の特定までやったはいいが、うまい対策をうたなければならない。

このノイズ源特定のときは、とりあえず電源ラインに内径1cmぐらいのパッチンコアを挟んでみたが、うまくいかなくて悲しい、という状態で終わった。その後、対策を考えなおした。

  • 室内機の電源ラインにもっと大きなコアを巻いてみる
  • 室内機と室外機とを繋ぐ線にCMFを入れる

室内機の電源ラインにもっと大きなコアを巻いてみる

ハムフェアにて内径19mm外形40mmの大型のコアを購入したので、これを5ターンほどエアコンの電源ラインに巻いてみた。

これは効果が抜群だった。(コアは内側を1回通る=1ターンなので、この画像で5ターン)

対策前

対策後:

コアを閉じた瞬間から減りはじめて感動的な体験をする

室内機と室外機とを繋ぐ線にCMFを入れる

かなり狭い領域かつパッツンパッツンなので、あまりコアを入れる余地がない。

とりあえず1ターン入れてみたが、あまり効果が見られなかった。複数個入れれば違うのかもしれないけど、入れるスペースがなかったためひとまず諦めた。

基本的に巻数の2乗に比例してインピーダンスが上昇するので、複数回巻けないというのはかなり厳しい。5ターンのコア1つと同じインピーダンスを1ターンのコアを複数で解決しようとすると単純に25個必要になる。

今回の教訓

1回小さいコア入れたぐらいで諦めず、複数回巻けるコアでも試してみる。

あと根本的にコアのデータシートから「このぐらいのインピーダンスが主流」っていうのを感じとっておいて、巻数でどれぐらいインピーダンスが上がるか、目安程度でも感覚的に想像できるようになると便利そう。最近得た知見としては

  • ローバンドほど対策が厳しい
    • 元々低い周波数だとコアのインピーダンスが低いので、かなり巻きまくる必要がある
    • 例えば7MHzで20Ωのインピーダンスのコアだと、1つのコアに13回巻かないと目安となる3kΩにならない。
  • 巻きすぎるとハイバンドでの特性が悪化する

村田製作所がコアの選定方法というページを公開していて便利

移動用の小さいパドルが欲しいなと思っていた。あまり使わないと思うので最低限キーイングができればいいかな、というぐらいの温度感だけど、割と高価なものが多い (最低でも10k) ので買ってなかった。最悪PCキーイングだけでなんとかするというのでもいいけど、割と考えが保守的なのでキーなしで運用とかビクビクしてしまう。

ハムフェアで何かいい感じのを自作している人がいたら買ってみようと思っていたが、いろいろ悩んだ結果「どこでもパドル MINI」というのを買ってみた。Wood のキットバージョンで3000円だった。

大変可愛いらしい見た目で、メインの機構はマイクロスイッチになっており、これは板バネなので細かい調整はできないが、使ってみると思ったよりかなり気持ちいい。

キットで買ったのだけれど、無鉛ハンダまでついていて親切感がだいぶ高かった (露出して手が触れやすいところにハンダ付けする必要があるための配慮のようでかなり嬉しい)

土台は買わなかったので、手元にあった金具でKX3の本体ローレット部分に固定してみた。結構いい。けど、振動でローレットとかがゆるむので、もうちょっといい形で固定したい。

縞黒檀を選んだけどかなり可愛い。自分は渋いのが好きらしい。

バンドスコープ を作ったのはいいが、41.1kHz サンプリングだし、0Hz付近にUSB オーディオデバイス由来の強力なノイズが入ってるのがイケてないので、良さげな192kHz サンプリングのUSBオーディオデバイスが欲しくなった。

SDR 用サウンドカードのまとめ みたいなページを見てみたけど、現状手に入るなかでよさそうなのは Steinberg UR22 というのしかない。これも注釈がついてて「ノイズがあるよ」って書いてあるけど、HFでは問題にならなそうとのことなので、買ってみた。

Steinberg 2x2 USB 2.0 オーディオインターフェース UR22 -

3.0 / 5.0

独自のドライバが必要で (UAC2 とかじゃない) 嫌な感じだけど、普通に Mac 用の提供されている (Yamaha Steinberg Driver とかでググる) のでそこらへんではハマらなかった。

しかしこれ、用途的に宅録みたいなの向けなので、入力や出力がちょっとややこしい。入力はXLR(キヤノンコネクタ)バランス入力・3極標準プラグ (ステレオ標準プラグ = 6.3mm) バランス入力・2極標準プラグ (モノラル標準プラグ = 6.3mm) アンバランス入力といろいろ対応されている。KX3 の出力は 2.5mm ステレオジャックでこれはアンバランスなので、2.5mm ステレオジャックからモノラル標準ジャック2本へ変換が必要になる。

2.5mm ジャック -> 3.5mm プラグへの変換は KX3 注文時に一緒に買ってあるので、以下のように3.5mmジャック・ジャックと、3.5mm プラグ → 6.3mm プラグ×2 の変換を買った。

audio-technica ラインケーブル ATL462A/1.5 -

4.0 / 5.0

audio-technica GOLD LINK Fine プラグアダプター ステレオミニ延長 AT509CS -

4.0 / 5.0

入力なしのとき

ちょっとノイズが立ってるところがあるけど、全域でだいぶノイズが少なくなった。中心周波数付近のノイズが皆無になったのはデカい…

±30kHz 付近のノイズは電源のスイッチングノイズで、直接オーディオインターフェイスに飛びこんでいるっぽい。それ意外の 60kHzぐらいから90kHz までのノイズはUSBインターフェイスのノイズっぽい。

入力いれたとき


両端に向かってゲインが下がっていくのは KX3 のマニュアルにも書いてあって、KX3 出力時点でこうなってしまう。FFT したあと補正するのがいいと思うけど、まだやってない。

The RX I/Q outputs from a receiver are not “flat” over an infinite frequency range; the signal-conversion process results in some slope (decrease in gain) as you move farther from the center frequency. In the case of the KX3, the signal will be reduced by about 2.5 dB at +/- 24 kHz, 4 dB at +/- 48 kHz, and 7 dB at +/- 96 kHz. The spectrum amplitude on the display, including the apparent noise floor of the receiver, will “roll off” by these amounts.

KX3 Owner's man Rev B4

192kHz の範囲が一望できるのがなんかすごい広くなる。

96kHz サンプリングだとあんまり気にならない範囲になる。狭くなるけど CW の場合 96kHz ぐらいで見たほうが選局しやすい気がする…

だいぶいい。

ウォーターフォール表示で遊んでいて、アマチュア無線のバンド全域に繰り返し強いノイズが入っていたり、部分的に超強力なノイズが入っていたりすることがあって、気になっていた。

少し自分の周辺機器をみまわして電源を切ったり入れたりしたらかなり変わったのでメモしておく

主要機器を切った状態

切れそうな機械の電源をだいたい切った状態


すぐ電源切れないデバイスも結構あるけど、かなり静かになった。

エアコン

規則的なノイズが全域に入る。エアコンはどのバンドでもノイズが入るけど、14MHz帯が一番ひどい。

空気清浄機

ダイキンの空気清浄機の電源を入れるとエアコンと似たようなノイズがかなり強く全域に入る。

モーターのブラシノイズなんだろうか? よくわからない。放電ノイズっぽくはないけど

スイッチング電源のノイズ

特定の周波数ごとに強力なノイズが入る。負荷に応じてノイズが揺らぐのが特徴っぽい。7MHz や 10MHz あたりが一番ひどい。ハイバンドになるほど強度が下がっていく。

蛍光灯のノイズ

14MHz帯に入っていた。画像はつけた直後で、なんか周波数を変えながら「ログインしてきました!」って面してるのが蛍光灯ノイズ。

これとは別に蛍光灯のデスクライト(インバーター制御)もあって、それはそれでこれとは違うノイズの入りかたをする。デスクライトのほうがだいぶ広範囲でひどい。

その他

USB HDD か、その電源アダプタ(スイッチング)かがノイズを出していたが電源ケーブルにコアを巻いたら、これはかなり改善した。HDD 側のノイズが電源ラインに戻ってたのかな?

今回、

  • 扇風機
  • MacBook Proの電源アダプタ

はノイズ源ではなかった。