zipコマンドでWordファイルとかExcelファイルとかと、他のいくつかのファイルを圧縮しようと思ったら、なぜかWordファイルがぶっ壊れて開けなくなって変な汗出てるみなさん、ようこそいらっしゃいました。まずは深呼吸して落ち着きましょう。
Continue reading →
Author / nobby
FizzBuzz2: A Powerful Fizz Buzz Engine
駆け出しエンジニアと繋がりたいみなさんこんにちは。もうFizzBuzzは実装できますか?
普段はできても、口頭試問では緊張して実力を発揮できないかもしれません。そんなあなたのために、わたしが極めて強力なFizzBuzzエンジンを実装しておきました。
https://pypi.org/project/fizzbuzz2/
自分で書かないとだめだよ
面接官はそう言うかもしれません。間髪入れずにこう返して下さい。
御社では車輪を再発明しているんですか?
Tsubame: Python Quick Traceroute
Hello there,
I implemented a quick traceroute in Python. First of all, let me show you an example of command execution.
$ time sudo tsubame example.com traceroute to example.com (93.184.216.34), 32 hops max 1 192.168.0.1 0.458 ms 0.472 ms 0.436 ms 2 203.0.113.1 10.294 ms 10.286 ms 10.227 ms 3 203.0.113.2 10.195 ms 10.243 ms 10.281 ms 4 203.0.113.3 155.828 ms 156.041 ms 156.458 ms 5 203.0.113.4 168.941 ms 169.190 ms 169.366 ms 6 206.223.116.170 221.656 ms 221.944 ms 222.206 ms 7 152.195.84.131 223.444 ms 223.719 ms 223.928 ms 8 93.184.216.34 221.037 ms 222.064 ms 222.325 ms real 0m0.416s user 0m0.137s sys 0m0.046s
QZSS 災害・危機管理通報サービスのデコーダを作った
準天頂衛星みちびきには災害・危機管理通報サービスというものがあり、GNSSモジュールで気象や地震などの様々な災害に関する情報を受信することができます。きょうはその衛星からの信号をデコードするPythonスクリプトを書いたので紹介します。デコーダのなまえはAzarashiです。
GitHub – Azarashi: A QZSS DCR Decoder
使い方はGitHubに書いたのでそれを見ながら使ってもらえば大丈夫です。いろんな応用があると思います。たとえば緊急地震速報を受信したらスマートリモコンと組み合わせてライトを点けるとか。
ということで、このブログには受信に必要な機器を簡単にまとめておきます。
Continue reading →
緊急警報放送を復調する
緊急警報放送は災害時にラジオなどの受信装置を自動起動するための信号です。このブログに辿り着いている時点で、そんなことは知ってるわいって感じですかね。でも一応書いておかないことには記事として成立しないので書きます。
EWSは災害時にラジオやテレビ放送で聞くことがある、あの不穏なピロピロ音です。全く一般には普及していませんが、あれにはデジタル信号が含まれていて、それを検知すると自動起動する機能があるラジオなどがあります。どうやっているかというと、デジタル信号の0と1をそれぞれ640Hzと1024Hzの音に置き換えて表現します。これを変調といい、とくに0と1のデジタル信号を2つの周波数の変化に置き換える方式をBFSK(Binary Frequency Shift Keying, 二値周波数偏移変調)といいます。この切替を1秒間に64回行うので変調レートは64Bd(ボー)で、1回の変調で1ビットを送りますから転送レートは64bpsです。
さて、アルゴリズムについてですが、音声周波数の変化をどうやってを0と1に戻すのかというと、たとえば640Hzの波は言い換えれば1/640秒に1周期の波なので、振幅軸上の特定のポイントを通過する時間間隔を測定して1/640秒と一致すれば640Hzの波だと判断できるわけです。ちなみに64Bdなので1変調の1/64秒あたりの640Hzなら10周期、1024Hzなら16周期です(取りこぼしもあるので、何回この周期を検知したら信号とみなすかは調整が必要です)。さいごに640Hzを検出したら0、1024Hzを検出したら1に置き換えればデジタル信号になります。
ソースはこちら。
https://github.com/nbtk/EWSDemodulator
Raspberry Pi 4とUSBオーディオアダプタで動作確認しました。