HHKB Pro2を買った

HHKB Pro2を買いました。

友人がType-Sを使っていて遊んでいた墨無刻印モデルを安く譲ってくれたのですが、これはもっと早く買っとけばよかったと思います。

お決まりの無刻印でキーがどこだかわからないということも何度か発生してはいるのですが、どちらかというとそういうときには適当にキーを 押して正しいキーを探すタイプの人間なのでそこまで困ったりはしていません。

一日使ってやっと慣れてきたところなので、これからガッツリ使っていこうと思います。

譲ってくれた友人氏ありがとうでした。

HomeBrewでcurl: (51) SSL: certificate verification failed (result: 5) になって困った

HomeBrewを使ってるのですが、先日brew updateした時にcurl: (51) SSL: certificate verification failed (result: 5) とのエラーが出て全部ソースからビルドしようとしてたので困っていました。

似たような問題はいろいろなところであるらしく、ぐぐったらいろんな解決法が引っかかったのですが結局一つを除いてどれも効果がありませんでした。

export SSL_CERT_FILE=""

が唯一効果があった解決法です。個人的メモ。

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に送信するという実装にしました。

動いてるところ↓

ESP-WROOM-02とWS2812

やってみようと思ったけどサンプル動かすまでに結構時間がかかりました。以下雑な自分用メモ

使ったもの

ハマリポイント

  • 電源足りない
  • ピンが固定されて指定したものと違うことがある

こうしたら動いた

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ラッパーを書いてみました。

github.com

Hackageに0.1.0.0が上がっています。0.1.1.0をその内あげたい。

hsc2hsを使ってバインディングをしただけです。とりあえずお手軽に叩いてお手軽に動かすことができたのですが、

  • 型が守ってくれないつらい
  • ここでちゃんと型を定義しないと全部死ぬ

というのが印象的でした。まあ仕方ないかんが。 cabal runしてセグフォとか結構新鮮でした。

あとHackageにパッケージを上げたのも初めてだったんですが、登録した時期が結構前でまだ自動でアップロード権限が付与されてない時期だったので泣きながらメールしました。 完全に意味が伝わらなさそうな英語メールに対応してくださった管理者の方ありがとうございます。本当に助かりました。

Cabal+FFIでビルド時にハマった(とってもしょーもない話)

ハマった。 いまPasori用のライブラリであるlibpafeをHaskellから使えるようにラッパーを書いているのですが、ドはまりしました。 最初リンクに失敗しまくって涙目になっていたので、先人の知恵を借りようということでtanakhさんのhsmecabを参考にしながら書いていました。

github.com

  extra-libraries:  

という項目に外部のライブラリ名を書くことで簡単に使えるっぽいのですが、

  extra-libraries:  mecab

と同じノリで

  extra-libraries:  libpafe

と書いてもうまく動作しません。

そういえばmecabはlibmecabというファイル名でした。 liblibpafeなんて名前のものを探していることに気がつくまで30分くらいかかった…… 正解は

  extra-libraries:  pafe

だったようです。

github.com