macOS の音声出力はデフォルトのサンプリングレートが低い

いわゆるハイレゾ音源は 96kHz/24bit といったフォーマットで配信されていることが多いです。

www.e-onkyo.com

macOSiTunes.app はこういったハイレゾ音源も再生可能になっています。

しかし、OS で設定されている音声出力フォーマットを確認すると、デフォルトでは 44.1kHz/24bit や 44.1kHz/32bit に設定されているため、そのままだとダウンコンバートされたような形で音声出力されることになります。

f:id:chrolis:20200813155741j:plain
MacBook Pro 2020 のスピーカーの、音声出力フォーマットの初期値

この音声出力フォーマットの設定は、 Audio MIDI設定.app でデバイスごとに確認・変更できます。(コマンドだと open -a 'Audio MIDI Setup')

f:id:chrolis:20200813161923j:plain
Audio MIDI設定.app

USB 接続の DAC などを利用していると、MacBook本体の出力デバイスよりも多彩なフォーマットから選択可能ですが、これもデフォルトでは 44.1kHz/16bit などが選択されているため、ハイレゾ音源を再生する際には再設定したほうがよさそうです。

f:id:chrolis:20200813160928j:plain
FiiO Q1 Mark II の例

音源にあわせて適切な音声出力フォーマットを選択してくれると嬉しいのですが、iTunes ではそのような機能は提供されていないようで、都度手動で変更する必要があるようです。

なお、 Audirvana では、自動で適切な音声出力設定に変更してくれるようでした。
(私は iTunes のインタフェースが好きなので利用していないのですが)

HFS 形式で USB メモリをフォーマットする

売られている USB メモリは FAT や exFAT でフォーマットされていることが多くて、パーミッションやらが保存されないので JHFSX (Case-sensitive Journaled HFS+) でフォーマットしたかった。

(*'-') < man diskutil
...
     eraseDisk format name [APM[Format] | MBR[Format] | GPT[Format]] device
                Erase an existing disk, removing all volumes and writing out a new partitioning scheme containing one new
                empty file system volume.  If the partitioning scheme is not specified, then an appropriate one for the cur-
                rent machine is chosen.  Format is discussed below in the section for the partitionDisk verb.  Ownership of
                the affected disk is required.
...

e.g.) diskutil eraseDisk JHFSX Sony_16GU /dev/disk2

引っ越しました

京都府に引っ越しました。12月2日から新居で生活を始めています。


東京では東新宿と呼ばれるエリアに住んでいたのですが、あのあたりはアクセスの良さと治安の良さを兼ね備えた良い場所だと思います。東新宿駅にある大戸屋にはめちゃくちゃお世話になっていて、多い時期では週に4回は行っていたんじゃないでしょうか。行くたびに宇治抹茶わらび餅を食べていたせいか、「今日は要らないんですか?」といってサービスしてくれた事もありました。いつも良くして頂いたあの社員さんにはお礼をしたい気持ちです。

徒歩で15分くらいで行ける 新宿〜新宿三丁目 あたりも特によく通っていました。大好きな映画が26時からでも見られるし、雰囲気の良い喫茶店も朝5時までやっているし、スイーツだって銀座に負けないくらいたくさんの選択肢があって、ボクの嗜好にとてもあう、大好きな地域のひとつです。

もともとは新宿御苑や西新宿のビル群が好きでいつでも行けるようにという、新海誠作品に影響されたような随分適当な理由で選んだ場所なのですが、それを抜きにしても、機会があったらまた住みたいなあと思うくらいには、今でもやっぱりとてもとても名残惜しい場所です。


一方で 新宿に限らず東京都はどこに行っても人の山で、電車や駅は特に酷く、「えっこれもう物理的に乗れないでしょ」みたいな電車に助走つけて突っ込んでくる人、駅に着いたのに乗車口付近を塞いでいる人、降りる人がまだいるのに我先にと乗ってくる人、歩きスマホで故意に周囲を無視するかのように進行してきて避ける気がなさそうな人、ダッシュで後ろからぶつかってきて何も言わずに駆け込み乗車していく人、

などなど枚挙に暇がないのですが、そういった、ボクの主観ではモラルが欠けたよう人が母数の多寡によらず東京にはたくさんいる気がして、みかけたり、関わったりする度に心のどこかが壊れていって、ある時期から適応障害と診断されて休職していたこともありました。

まあ疾患は考慮せずとも、つまるところ通勤と、モラルの無い人と出会うのが嫌だったのだと思います。


ボクは寂しがり屋なので、東京の友人たちに会う機会が減ってしまうのはつらいし、新宿や銀座や丸の内のスイーツを食べに行く機会が減ってしまうのもつらいです。映画も新宿ほど自由ではありません。(というか映画にかんしては新宿が異常なんだと思います。)

でも、新居は職場まで徒歩でいけるし、東京と比べると人もまばらだし、精神的にも安定して生活できている実感があります。これなら疾患も寛解してくれそうな気がしています。

後悔が全く無いわけではないですが、まともに働けそうだし、賃料も安いし、可処分所得は増えそうです。仕事で東京に行くこともあるでしょう。数年後にはまた新宿に住んでいる可能性だってある気がします。

東京に行くときにはどこかで言うと思うので、これからもどうぞよろしくおねがいいたします。


https://www.amazon.co.jp/registry/wishlist/1OQNP4Y5D0JSC/

12月はボクの誕生月です。よろしくおねがいいたします。

Mac で Docker から USB デバイスにアクセスする方法

tl; dr

Docker for Mac ではできないが、docker-machine を使えばできる

詳細

  1. virtualbox をインストール
    • brew cask install virtualbox
    • brew cask install virtualbox-extension-pack
      • USB 2.0 以上を利用するために必要
  2. docker-machine で VM を作る
    • docker-machine create -d virtualbox vbox
  3. VM に USB デバイスをアタッチする
    • VM を一旦止める
      • docker-machine stop vbox
    • VM の USB xHCI を有効にする
      • VBoxManage modifyvm vbox --usbxhci on
    • USB デバイスを一覧して VendorId, ProductId を得る
      • VBoxManage list usbhost
    • VM に USB Device Filter を追加する
      • VBoxManage usbfilter add 1 --target vbox --name 'SanDisk Cruzer Colors+' --vendorid 0x0781 --productid 0x5170
      • --name は何でもよい。上記例は Manufacturer, Product の出力を参考にしている。
    • VM を起動する
      • docker-machine start vbox

確認

確認のために fdisk を実行してみる

[10:36:04] ~
(*'-') < docker $(docker-machine config vbox) run -it --rm --privileged debian
root@6bc97aaa2212:/# lsblk -o +VENDOR,MODEL
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT VENDOR   MODEL
sda      8:0    0  19.5G  0 disk            ATA      VBOX HARDDISK
|-sda1   8:1    0  18.6G  0 part /etc/hosts
`-sda2   8:2    0 964.8M  0 part [SWAP]
sdb      8:16   1   3.8G  0 disk            SanDisk  Cruzer Colors+
sr0     11:0    1    48M  0 rom             VBOX     CD-ROM
zram0  251:0    0 177.1M  0 disk [SWAP]
root@6bc97aaa2212:/#
root@6bc97aaa2212:/# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.29.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x0b7a7d6f.

Command (m for help): p
Disk /dev/sdb: 3.8 GiB, 4022337024 bytes, 7856127 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0b7a7d6f

経緯

USB メディアに対して syslinux コマンドを使いたかったのだけど OS X で動かすの大変そうだったので docker から操作できたら便利だなあと思って調べていた

nginx で map_hash_bucket_size を map より後に書くと怒られる

nginx で以下のように map $foo $bar { ...; } より後に map_hash_bucket_size を記述すると、"map_hash_bucket_size" directive is duplicate と言われて configtest に失敗する。

## 設定
http {
    ...
    map $status $_status {
        default 42;
    }
    map_hash_bucket_size 64;
    ...
}
## configtest
root@e35c2d9282ba:/etc/nginx# service nginx configtest
2017/08/08 08:40:01 [emerg] 405#405: "map_hash_bucket_size" directive is duplicate in /etc/nginx/nginx.conf:36
nginx: [emerg] "map_hash_bucket_size" directive is duplicate in /etc/nginx/nginx.conf:36
nginx: configuration file /etc/nginx/nginx.conf test failed

解決策

これは恐らく最初に map を呼び出した際に map_hash_bucket_size が暗黙的に設定されるためなので、以下のように map より先に設定すればよい。

    map_hash_bucket_size 64;
    map $status $_status {
        default 42;
    }
## configtest
root@e35c2d9282ba:/etc/nginx# service nginx configtest
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

環境

root@e35c2d9282ba:/etc/nginx# nginx -V
nginx version: nginx/1.13.3
built by gcc 6.3.0 20170516 (Debian 6.3.0-18)
built with OpenSSL 1.1.0f  25 May 2017
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -fdebug-prefix-map=/data/builder/debuild/nginx-1.13.3/debian/debuild-base/nginx-1.13.3=. -specs=/usr/share/dpkg/no-pie-compile.specs -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-specs=/usr/share/dpkg/no-pie-link.specs -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie'

Tweetbot で既読位置を同期する

Tweetbot では、デバイス間で既読位置の同期が可能です。

設定方法

※執筆時点の各Tweetbotのバージョン

  • Tweetbot for Mac: 2.2
  • Tweetbot for iOS: 4.1

Mac

Tweetbot for Mac では Preferences (+,) から Account -> Services -> Sync で設定します。

f:id:chrolis:20151119123329p:plain

同期方法には iCloudTweet Marker があり、それぞれ同期される内容に若干の差異があるようです。(かなり古い情報なので今は違うかもしれない)

なお、Visual Sync Marker を有効にすると、同期されている位置にこんな感じのマークがつきます

f:id:chrolis:20151119123343p:plain

iOS

Tweetbot for iOS では アカウント管理画面 -> 設定 -> アカウント設定 から設定します。 (選択する同期方法は各デバイス間で一致させる必要があります。)

f:id:chrolis:20151119123449p:plain

また、複数のアカウントを同期したい場合は、各アカウントごとに同期設定が必要です。

どうなるの?

例えばMac版で Timeline の 2015/11/19 12:00:00 まで既読になっている状態でiOS版を起動すると、起動直後に同じ位置まで自動的にジャンプします。超便利!!

(Tweetbot を使い出してもう3年ほどですが、今まで知らなかった…)

補足: iCloud 同期

iCloud 同期にする場合、あらかじめ同期対象の各デバイスで以下の設定が必要です。

  1. iCloud Drive を有効化
  2. iCloud Drive 上への Tweetbot による保存を許可

Amazon S3 は BitTorrent プロトコルに対応している

CloudFormation のテンプレートを書いている時に S3 に設定可能な属性ってどんなのあったっけなと思って awscli で aws s3api help を眺めていたんですが

f:id:chrolis:20151118164643p:plain

ふむふむ

f:id:chrolis:20151118163017p:plain

むっ

f:id:chrolis:20151118163029p:plain

ん?

f:id:chrolis:20151118163530p:plain

!?!?!?

えっ S3 って torrent 対応してるの!!!??

ドキュメント読んだ

要点をまとめてみる:

  • 追加料金なし(通常の利用方法と同じ課金)
    • BitTorrent 配信への課金方法

      BitTorrent プロトコルによるデータ転送は、クライアント/サーバー方式による配信の場合と同一のレートで課金されます。正確には、ダウンロードを行う BitTorrent クライアントがAmazon S3 「シーダー」にオブジェクトの「一部」をリクエストした場合、REST または SOAP プロトコルを使って匿名リクエストがその「一部」に対して行われたのと同じように課金されます。

  • オンデマンド生成なので初回は時間がかかる
  • 容量が5 GB 未満のオブジェクトについてのみ取得可能

こういうのすごいわくわくするので機会があったら使ってみたいですね