最近買って幸せになれたもの (2016/4〜2017/4)
この 1 年間で買って良かったなと思ったものについてつらつらと書いていきます。
Sony DSC-RX100M3
SONY デジタルカメラ Cyber-shot RX100 III 光学2.9倍 DSC-RX100M3
- 出版社/メーカー: ソニー(SONY)
- 発売日: 2014/05/30
- メディア: エレクトロニクス
- この商品を含むブログ (9件) を見る
もともと都会の夜景などが好きで、適当なところにのぼって夜景を撮影するのがちょっとした楽しみだったのですが、 手持ちのスマートフォン (Xperia Z3 Compact) で適当に撮るだけでは細部まで綺麗に撮れずにモヤモヤしていました。 ただあまり大きなカメラを持ち歩くのも厳しいので、高画質なコンデジを買おうと思って色々と検討していました。
適当に Google で検索したり、Twitter でプロの方々から アドバイスを募った ところ、 DSC-RX100M3 を買うのが良いというアドバイスを複数の方 (鳥さん など) から頂いたので、これに決めました。
他のカメラを持っているわけではないので、画質がどうとか細かいことはなにも言えないのですが。
手持ち夜景モードで適当に撮ってもそこそこ?キレイに撮れるっぽいので良さがあるなぁ pic.twitter.com/cY5VJe4VsI
— わふれるか。 (@wafrelka) 2016年10月12日
隅田川から pic.twitter.com/miLrhbnLbu
— わふれるか。 (@wafrelka) 2016年11月7日
新橋方面だけど望遠が弱いので東京タワーがちょこんと写っただけ pic.twitter.com/a1jeGt1yeV
— わふれるか。 (@wafrelka) 2016年11月7日
@sugim48 @yosupot 絶対何か送ってくると思ってこっちも用意しておきました pic.twitter.com/uS4dpsLUo3
— わふれるか。 (@wafrelka) 2016年11月27日
こういう写真などを撮影して楽しんでいます。 Twitter にアップロードしているので画質が落ちていますがスマホよりはずっと綺麗に撮れます。 カメラから直接 SNS へ投稿する機能などはついていませんが、 NFC 機能付きのスマホなら専用アプリを入れることでスッと写真が転送できるのであまり不便は感じていません。
夜景もごはん画像も綺麗に撮影できるようになったのでかなり満足しています。
GIANT ESCAPE R3 2016
クロスバイクを買いました。
いわゆる普通の自転車と比べて重量がだいぶ軽く、ひょいっと持ち上げられる程度の重さです。 漕ぎ出しが軽くてスピードも出やすいので、街の中をかなり軽快に動けるようになりました。
カメラを持って自転車で出かけて適当に写真を撮ったりして帰ってくるのは楽しいです。
(長距離を走ろうと思うとロードバイクが欲しくなってくるのかも……)
DELL U2515H
Dell ディスプレイ モニター U2515H 25インチ/WQHD/IPS非光沢/6ms/DPx2(MST),HDMIx2/sRGB99%/USBハブ/フレームレス/3年間保証
- 出版社/メーカー: Dell Computers
- 発売日: 2015/05/13
- メディア: Personal Computers
- この商品を含むブログを見る
25インチ, 薄型ベゼル, WQHD (2560x1440).
絵描きでもデザイナーでもないので発色の良さはよくわからないのですが綺麗な方だと思います。 Twitter が捗るようになりました。 DP などのインターフェースの調子が若干悪いようなのが玉にキズですが……。
(特に書くことがない)
エムピウ ストラッチョ
https://m-piu.com/catalog/straccio-goat
とても小さな財布です。キャッシュカードをすこし大きくしたくらいのサイズ。
最近はだいたいどこでも Suica で決済できるようになっているので、 少額決済のほとんどを、財布に入れている Suica (オートチャージ付与済み) に頼って生活しています。 すると小銭を扱うことがあまりないので、取り出しやすさなどを重視した小さめの財布に変えたほうが嬉しいかな、と思って買いました。
お札が謎の 3 つ折になるという欠点はありますが、カード・小銭・紙幣がそこそこ収納できるのにサイズがとても小さいので気に入っています。 最初は「ふにゃふにゃだし使いにくそう」「中身を落としたりしないかな」などと思っていたのですが、 ここ数ヶ月使ってみたところとくに気にならなかったです。
蔵前にあるエムピウの 実店舗 に行くと実物が置いてあるので気になるひとは行ってみるといいと思います。 他の取扱店だとストラッチョは置かれていないことが多くて残念だったので……。 直営店以外では東銀座にある藤巻百貨店にもストラッチョが置かれていました。
(2018/05/04 追記) ゴート革のものは 在庫限りで販売終了 だそうです。 他の素材でほぼ同じ財布を作っているようなので買うならそちらの方になるかも。
Withings Activité Pop
なぜか Pop のほうのページにアクセスしようとすると Steel のほうのページに飛ばされるのでリンク先は Steel のほうになっています。
"睡眠をトラッキングしたい" + "充電は面倒なのでなるべく避けたい" という条件のもとで検索したら Activité になりました。 睡眠が可視化できて嬉しいです。(嬉しいだけ)
Raspberry Pi で動いている Docker の中から PulseAudio 経由で音を鳴らす
環境
- ホスト: Arch Linux ARM on Raspberry Pi 2 Model B
- コンテナ: armv7/ubuntu:14.04 on Docker
たぶんホストが Arch Linux ARM ではなくても pacman
が apt-get
に変わるとかそれぐらいだと思います。
コンテナも ARM 版 Ubuntu である必要はないはずです。保証はしませんが……。
ホストの設定
PulseAudio のインストール
pacman
経由で PulseAudio をインストールします。
pulseaudio --start
で PulseAudio のデーモンが立ち上がり、
/run/user/$uid/pulse/native
というファイルができます
($uid
はデーモンを起動したユーザーのユーザー ID です)。
このファイルは Unix ドメインソケットになっていて、ここにデータを書き込むことで音声を再生できるようになります。
また、pulseaudio --kill
でデーモンを終了させることができます。
基本的にソケットファイルはデーモンが動いている間だけ存在しますが、
systemd のソケットアクティベーションという機能を使うと、
/run/user/$uid/pulse/native
にアクセスがあった場合に自動で PulseAudio を立ち上げることができるらしいです。
systemctl --user start pulseaudio.socket
でこの機能を有効化できて、
systemctl --user enable pulseaudio.socket
でこの機能を永続化できます。
クッキーの設定
デフォルトでは /run/user/$uid/pulse/native
への書き込みの際にクッキー (?) を用いた認証機能がついています。
この認証によって、音声を再生するためにはソケット (/run/user/$uid/pulse/native
) への書き込み権限のほかに、
クッキー (/home/$user/.config/pulse/cookie
) の読み込み権限が必要になります (/home/$user
はデーモンを立ち上げたユーザーのホームディレクトリです)。
/etc/pulse/default.pa
をいじることで、この機能を無効にできます。
load-module module-native-protocol-unix
という行を
load-module module-native-protocol-unix auth-anonymous=1
に変更することで達成できます。
認証が有効なままでもクッキーをコンテナへとマウントしてしまえばほとんど問題はないので、
以降は無効化しないときの設定方法を記述します。
無効化すると以降の記述で /home/$user/.config/pulse/cookie
および $SERVER_COOKIE
に関する
設定をスキップできます。
コンテナの設定
ソケット・クッキーのマウント
docker run
でコンテナを作成するわけですが、
その際に以下の 2 つを -v
オプションなどを使ってコンテナ内部にマウントします。
/run/user/$uid/pulse/native
/home/$user/.config/pulse/cookie
$user
と $uid
は適切なものに置き換えておいてください。
また、マウントしようとしているファイルがきちんと存在することも確認してください。
環境変数の設定
以下の環境変数をコンテナ内で設定します。
PULSE_SERVER=unix:/path/to/native
PULSE_COOKIE=/path/to/cookie
/path/to/native
および /path/to/cookie
はそれぞれ
/run/user/$uid/pulse/native
と /home/$user/.config/pulse/cookie
のマウント先のパスを指定してください。
PulseAudio のインストール
apt-get install pulseaudio
するだけです。
こうすることで、コンテナ内のプログラムたちは PulseAudio を通じてホスト側に音声を送ることが可能になります。
[ユーザープログラム] → [PulseAudio in Docker] → [Unix ドメインソケット] → [PulseAudio in Host] → [スピーカーなど]
おそらくこういう経路で音声が送られるはずです。
mpg321
音声を再生するプログラムとして今回は mpg321 を使います。
apt-get
経由でコンテナ内にインストールしてください。
あとは設定がうまくいっていれば mpg321 test.mp3
で音声が再生できていると思います。
デフォルト設定では mpg321 は ALSA を使って音声を再生しようとします。
これはコンテナ側の Ubuntu では (たぶん apt-get install pulseaudio
のときに ALSA から PulseAudio へのリダイレクトが自動で設定されるので) 問題ないですが、ホスト側の Arch Linux で mpg321 を用いて音声の同時再生をしようとすると問題になります。
ホスト側では /etc/libao.conf
の中身をすべて削除して default_driver=pulse
と書くことで解決できます。
pulseaudio-alsa パッケージをインストールして ALSA から PulseAudio へのリダイレクトを設定すると解決するのかもしれませんが、そちらの解決方法はよくわからなかったのでやめました。
参考資料
- https://wiki.archlinux.org/index.php/PulseAudio
- https://wiki.archlinux.org/index.php/PulseAudio/Configuration
感想
GTX970 を買いました
概要
前回の構成でそこそこ満足していたわけですが Cities: Skylines というゲームを高画質な感じでプレイしたくなったのでケースを買い替えて dGPU を載せることになりました。
いい感じのケースが Lian Li から出ていたのですが 日本では未発売だったので ebay で適当に買いました。送料高かったです……。
dGPU は迷いに迷って結局 GTX970 になりました。
構成
- CPU: Intel - Core i7 6700K
- M/B: ASRock - Z170M-ITX/ac
- Memory: UMAX - DCDDR4-2133-16GB HS
- GPU: Gigabyte - GV-N970IXOC-4GD [New]
- Case: Lian Li - PC-Q04 [New]
- PSU: SILVERSTONE - SST-SX500-LG [New]
- CPU Cooler: GELID Solutions - SlimHero CC-Shero-01-A
- Case Fan: GELID Solutions - Silent14 PWM [New]
感想
ケースの大きさがけっこうギリギリだったので GPU の装着に苦労しました。
Ubuntu 14.04.3 を使っているのですが nouveau ではなぜか壊れたので仕方なく いったん iGPU からの出力で画面を映してプロプラドライバをインストールしました。 その後はとくに問題なく動いているように見えます。
アイドル時の消費電力が 20W → 30W となったのでもうちょっと nVidia には頑張ってもらいたいところです。
エアフローが悪化したためかすこし作業をするだけでわりと CPU のファンが回るようになりました。 そんなにうるさいわけではないですがやはり気になります。うにゃうにゃ。
(追記: PSU の騒音が気になったので SST-ST45SF-G から SST-SX500-LG に買い換えたところアイドル時の騒音はそこそこ静かになりました)
FPGA ことはじめ
経緯
大学の課題で「FPGA を使ってデジタル時計を作る」というものが出たのでそのときに試行錯誤した記録を適当に残しておこうと思います。
使った FPGA 開発ボードなど
まずは FPGA 開発ボードを買ってくる必要があります。
kivantium プロの記事 に載っていた Papilio One 500K を買おうと思って秋月に行ったのですが売り切れていたので仕方なく Cmod S6 Kit というものを買いました。web で検索してもこのボードに関する日本語な記事はほとんど出てこなかったのできちんと使えるのか不安でしたが、結果としてはあまり苦労せずにプログラムを書き込んで動かすことができました。専用のソフトウェアを用いて USB 経由で書き込めるので手軽に FPGA で遊べて良いと思います。
あとは適当にブレッドボードとか 7 セグメントの表示器とか抵抗とかを買ってつなげました。ボタンは面倒だったので Cmod S6 Kit についていたものを使いました。チャタリング対策をどこかでしておかないとボタンの挙動がおかしくなるのですが面倒だったのでなにも対策しませんでした。
実際に配線などをするには digilent のウェブサイトに載っている 基板の概要 と 基板の配線図 を頑張って読み解く必要があります。
開発環境のインストール
kivantium プロの記事 を参考にしました。 http://cellspe.matrix.jp/parallella/inst_ise.html に載っている手順に従って ISE Design Suite をインストールしてガチャガチャしました。
ISE Design Suite をインストールしただけでは USB 経由でボードに書き込みをすることはできません。Gentoo Wiki に載っている適当な記事 を参考にしてプラグインなどを入れておくと iMPACT から直接書き込みを実行できるようになります。
けっこう前だったので細かいことは忘れました……。
VHDL を書く
基本文法
kivantium プロが学科 slack にあげてくれた資料を見て適当に雰囲気をつかみました。 ここに上げておくといろいろダメな気がするのでどうにかしてその資料を手に入れるかネットで入門記事を漁るかしてください……。
テスト
levelfour 先輩の記事 を参考に GHDL を入れてテストを書いて手で回しました。
成果物
github にあげました。あとは察してください。面倒なので……。ちなみに元の課題では「1 秒間隔で DP などが点滅」という指定があったのですが頭が悪かったので 2 秒間隔で点滅するようなコードになっています。
実際に動作しているところを撮った動画はどこかに消えてしまいました。
PowerPC64 アセンブリ課題がつらい
なにこれ
大学の課題で PowerPC64 のアセンブリを書く必要があったけど浮動小数点数の扱いでつらい気持ちになったのでそのときの気持ちを書いた記事です。
適当に書いたので間違ってそう……。
レジスタ幅の確認
- GPR (整数とか扱うやつ) → 64bit
- FPR (浮動小数点数とか扱うやつ) → 64bit
GPR から FPR への転送
直接転送できなさそうなのでメモリを経由するしかなさそうです?
std rA, d(rM)
- rA の値を d(rM) から d+7(rM) に書き込む
stw rA, d(rM)
- rA の下位 32bit の値を d(rM) から d+3(rM) に書き込む
lfd fA, d(rM)
- d(rM) から d+7(rM) を倍精度浮動小数点数とみなして読み込む
lfs fA, d(rM)
- d(rM) から d+3(rM) を単精度浮動小数点数とみなして読み込む
- 適当に倍精度に変換したあと fA に格納される
r3 の下位 32bit に単精度っぽいデータが入っているとして std r3, 0(r1)
したあと lfs で読み込もうとするときは、バイトオーダーの関係で lfs f1, 0(r1)
ではなく lfs f1, 4(r1)
としないと壊れるので注意が必要です。まぁひっかかるひとはそんなにいなさそう……。
定数表現 (がんばるやつ)
FPR に適当な即値を突っ込みたいことがあります。このときも GPR に適当に即値を入れてからメモリ経由で渡すことで実現できます。直接突っ込む方法があるのかもしれないですが調べてないです。
そもそも命令長が 32bit 分しかないので即値として入れられるものは 16bit 幅のものだけです。シフト命令とかを使ってわいわいすることで倍精度 (64bit) とかそこらへんの定数を表現できます。
li %r3, 16384 sldi %r3, %r3, 48
とすると %r3 には倍精度浮動小数点数で 2.0 を表すデータが入るのであとは転送すれば良いです。
定数表現 (data セグメント使うやつ)
data セグメントで
.data pi: .double 3.14
と書いておいてプログラム中で
lis %r4, pi@highest ori %r4, %r4, pi@higher sldi %r4, %r4, 32 oris %r4, %r4, pi@h ori %r4, %r4, pi@l
とすることで %r4 に data セグメント中の pi の先頭アドレスが入るので lfd %f1, 0(%r4)
で転送できるというテクニックもあるらしいです。
定数表現 (fcfid するやつ)
fcfid fA, fB
- fB にある値を符号付き整数とみなして double に変換したあと fA に代入する
こういう強い命令があるらしいのであとは上で使っていたメモリ転送などを用いて適当な FPR にいい感じの値を入れておくだけでよさそうです。
参考文献
- PowerPC assembly | IBM developerWorks
- Power ISA Version 2.05
- fcfid (Floating Convert from Integer Double Word) instruction | IBM Knowledge Center
ふぇぇ
この記事で触れてない色々なことは kivantium プロの活動日記を見るとだいたいなんとかなります。
Raspberry Pi 2 Model B に GW-USEco300 をさして無線 LAN で通信するはなし
前提
前提として手元には ARM 版 Arch Linux が入った Raspberry Pi 2 Model B があるものとします。入ってないひとは Arch Linux の公式ページ を参考にして入れてください。MicroSD カードに書き込むだけでインストールできるので楽です。
不安定だったというはなし
Raspberry Pi 2 Model B を無線 LAN につなぎたくなったのですが、電源周りが貧弱っぽいので省電力っぽさそうな無線 LAN アダプタとして GW-USEco300 を買いました。
http://www.amazon.co.jp/dp/B00ESA34RO
これをらずぱいに挿すとなにもしなくても認識されるので嬉しい……かと思いきや、なんだか通信が不安定です。ネットで適当に検索して色々試してみるもダメ。通信がいきなり途切れてしまったりで正直使い物になりません。
解決策
どうもカーネルに組み込まれている RTL8192CU 向けのドライバがダメみたいです。Yaourt 入れて AUR にある 8192cu-dkms というドライバをインストールすることで解決しました。
以下は長々とした手順です。
Yaourt のインストール
下準備
yaourt などを自分でビルドしてインストールすることになります。 まずは下準備として
$ pacman -S base-devel
でビルド用ツールをインストールします。
package-query のインストール
AUR の package-query のページ に載っている Download snapshot というリンクから package-query.tar.gz をダウンロードします。あとはビルドしてインストール。
$ curl -O https://aur.archlinux.org/cgit/aur.git/snapshot/package-query.tar.gz $ tar xvzf package-query.tar.gz $ cd package-query $ makepkg -si
yaourt のインストール
package-query のインストールと同様に AUR の yaourt のページ から yaourt.tar.gz をダウンロードして以下略。
8192cu-dkms のインストール
$ yaourt -S 8192cu-dkms
ヘッダファイルについていろいろと聞かれるのですがそれっぽいものを選べば OK です。 (忘れた)
$ systemctl enable dkms
で dkms サービスを有効化すればカーネルがアップデートされても自動でモジュールもアップデートされます。
たのしいたのしい ICPC つくば大会
概要
sigma 氏, wo 氏と一緒に "sleep 18000" というチームを組んで 9 位を取ってきました。以下は適当な感想文です。
1日目
到着まで
わざわざチームメンバーと待ち合わせするのも面倒なので直接つくばに集合ということにしたら現地で「会場に入るためにはチームメンバーが全員揃っていないといけない」という制約を初めて聞かされて待ちぼうけしてました。
あと sigma 氏が当日朝に「誤って消費期限切れの牛乳を飲んでしまった」と発言していたのでかなり心配でした。結局大丈夫だったっぽいので良かったのですが……。
ところで消費期限が切れてるという理由で寮の共用冷蔵庫から出されてた僕の牛乳、さっき見たら29日までだったので切れてないやんけって思って飲んだら10/29だった、クソクリーミーだった やばい
— オーバーフローって知ってますか (@sigma425) November 28, 2015
Practice など
Practice ではお菓子をたくさん食べました。おいしいお菓子が大量に用意してあったのでとても良かったと思います。
コンテスト用のキーボードは大会側が用意したものしか使えない、という話だったのですが、実際にコンテスト会場に行くと珍しいキー配置をしたキーボードが置かれていました。「これを本番でも使わないといけないのか……」と少し気が滅入りました。ちなみに Amazon でもそれほど 評価 が高くなさそうな感じでした。エンターキーのさらに右側に一列ぐらいいろいろなキーが配置されていてそこら辺のキーの感覚が完全崩壊して本番でも入力ミス頻発だったので実際かなり厳しかったです。
Practice のあとに Java チャレンジがあったのですがサーバーが重すぎてうーんという感じでした。最後の 10 分ぐらいになってからまともな AI を書こうと頑張ったのですが提出が 10 秒ほど間に合わずけっきょくサンプル AI を提出しただけになりました。
夕食パーティー
とても豪華な食事だったのでびっくりしました。唐揚げなどをたくさん食べてぽよ活しました。
チーム紹介の時間があったのですが、チーム Cxiv-Dxiv のスライドがとてもおもしろくていろいろ吹っ飛びました。
iiyo koiyo pic.twitter.com/NHY3tmqIBH
— hysy (@hysy__) November 28, 2015
宿泊施設
壁が薄いし雨漏りみたいな音が聞こえてくるし 23 時頃は暴走族がうるさかったしあんまり環境としては良くなかった気がします……。
緊張のせいか環境のせいかよくわからないのですが結局寝付けたのが 2 時頃だった気がします。
2日目
コンテスト
後述。
表彰式
とにかく待たされたような気がします……。順位はあまりよくなかったことが事前にわかっていたのでもにょもにょ。
夕食パーティー
ごはんをたくさん食べて知り合いの人々とわいわいしていました。
コンテスト
簡単な問題しか解いてないのにバグを無限に出してしまい戦犯でした。人権を得られず終了です。
A 問題
めんどくさいだけ。
C 問題
やるだけなのに無限にバグらせてしまい戦犯に……。けっきょくコードを印刷してチームメイトにバグ取りしてもらいました……。
F 問題
やるだけなのに無限にバグらせてしまい終了。
総評
キーボードと宿泊施設の件を除けばとても楽しかったです。 コンテスト自体はとくに問題なく終わって、懇親会などでは普段なかなか会わない人々と楽しくわいわいできたので、行ってよかったと思っています。
チームメイトに迷惑かけてばかりだったのでもうすこし精進しておくべきでした……。