HHKB Pro2を買った
HHKB Pro2を買いました。
友人がType-Sを使っていて遊んでいた墨無刻印モデルを安く譲ってくれたのですが、これはもっと早く買っとけばよかったと思います。
お決まりの無刻印でキーがどこだかわからないということも何度か発生してはいるのですが、どちらかというとそういうときには適当にキーを 押して正しいキーを探すタイプの人間なのでそこまで困ったりはしていません。
一日使ってやっと慣れてきたところなので、これからガッツリ使っていこうと思います。
譲ってくれた友人氏ありがとうでした。
Android端末の通知で光る富豪的BLEスカート作った
意味の分からないタイトルですが、タイトル通りです。 NeoPixelを搭載したスカートと、Raspberry Pi Zero、それとAndroid端末で、Android端末に届いた通知に応じて光るスカートを作りました。
動機
www.makuake.com こういうのを見てドール用にも欲しいなと思いました。
やってみた
ただ光らせるだけじゃ面白くないし、かと言って本家の機能と被っても面白く無いのでいつでもすぐそばにいてくれるドール的には同じいつでもそばにある携帯と、そこに届く通知によってなんかできないかと思いました。
Android端末の通知にはテーマカラーが設定できます。実際に使われている中では、Twitter公式が青だったりSoundCloudがオレンジだったりしますが、アイコンの背景の色と同じだと思います。そんなわけでそこから色を持ってきて、NeoPixelをその色で光らせるようにしました。
実ははじめ、BLE Nanoを使ってやろうとしていたのですが、どうしてもBLEが有効な状態でNeoPixelを点灯させることができず諦めてそこらに転がってたRaspberry Pi Zeroを使うことにしました。とても富豪的。まあそれでも$5で買えるし気にしない方向で……
USB接続のBluetoothドングルを変換アダプタ経由で繋いで使っています。サイズが大きくなってしまいましたがしょうがない。
RasPiの中では、Node.jsとBlenoを使ってBLEを待ち受けし、Pythonのコードを呼び出してGPIOを操作するという超残念仕様。PythonでBLE Peripheralとして動作できるライブラリがあればよかったのに。
Android端末側ではNotificationListenerServiceを利用して通知バーの変更を監視し、変更があった場合通知のカラーをRaspberry Pi Zeroに送信するという実装にしました。
動いてるところ↓
とりあえずAndroid端末の通知に連動してNeopixelを光らせるようにした pic.twitter.com/RLhXkYqb6S
— はる (@haru2036) 2016年8月6日
ひとまず通知が来るとそのテーマカラーで光るスカートができた pic.twitter.com/7VBYWZ65C0
— はる (@haru2036) 2016年8月10日
ESP-WROOM-02とWS2812
やってみようと思ったけどサンプル動かすまでに結構時間がかかりました。以下雑な自分用メモ
使ったもの
- GitHub - Makuna/NeoPixelBus: Adafruit enhanced NeoPixel support library
- ロジックレベル変換モジュール
- ESP-WROOM-02を普通に動かすのに必要そうなもの
ハマリポイント
- 電源足りない
- ピンが固定されて指定したものと違うことがある
こうしたら動いた
NeoPixelBus<NeoGrbFeature, NeoEsp8266BitBang800KbpsMethod> strip(PixelCount, PixelPin);
としてpin02につなぐ 電源のほうは別に取る
YesodアプリをDockerのコンテナでうごかす
Yesodで書いたWebアプリをDockerのコンテナとしていい感じにデプロイできないんかなあと思って調べてたらちょっと良さそうな方法が見つかった(たぶんいまさら)ので自分用メモ。
参考:
Yesod hosting with Docker and Kubernetes
stack.yamlに
docker: enable: true image: container: name: user/container-name base: fpco/stack-run add: config: /config static: /static
こんな感じでstack dockerを有効にしたりイメージ化するときのベースイメージやら名前やらを設定して、stack image container
でほぼ自動的にDocker用のイメージを作ってくれました。
あとはこれを煮るなり焼くなりで大丈夫でした。
書いてから気づいたけど参考のURLのとおりやっただけですね。すばらしくべんりですし、この後kubernetes用のファイルも書いてkubernetes上で動かすことも簡単にできました。 めでたし。
HaskellでPasoriをたたいてみる
結構前にやってみたのですが、放置気味だったのでとりあえずメモ。
libpafeというlibpasoriから派生したPasoriを叩くためのライブラリ(結構古いっぽい)があったので、それのHaskellラッパーを書いてみました。
Hackageに0.1.0.0が上がっています。0.1.1.0をその内あげたい。
hsc2hsを使ってバインディングをしただけです。とりあえずお手軽に叩いてお手軽に動かすことができたのですが、
- 型が守ってくれないつらい
- ここでちゃんと型を定義しないと全部死ぬ
というのが印象的でした。まあ仕方ないかんが。 cabal runしてセグフォとか結構新鮮でした。
あとHackageにパッケージを上げたのも初めてだったんですが、登録した時期が結構前でまだ自動でアップロード権限が付与されてない時期だったので泣きながらメールしました。 完全に意味が伝わらなさそうな英語メールに対応してくださった管理者の方ありがとうございます。本当に助かりました。
Cabal+FFIでビルド時にハマった(とってもしょーもない話)
ハマった。 いまPasori用のライブラリであるlibpafeをHaskellから使えるようにラッパーを書いているのですが、ドはまりしました。 最初リンクに失敗しまくって涙目になっていたので、先人の知恵を借りようということでtanakhさんのhsmecabを参考にしながら書いていました。
extra-libraries:
という項目に外部のライブラリ名を書くことで簡単に使えるっぽいのですが、
extra-libraries: mecab
と同じノリで
extra-libraries: libpafe
と書いてもうまく動作しません。
そういえばmecabはlibmecabというファイル名でした。 liblibpafeなんて名前のものを探していることに気がつくまで30分くらいかかった…… 正解は
extra-libraries: pafe
だったようです。