Raspberry Pi ZeroにSHARP 7インチ IGZO-LCDパネルを接続する
SHARPの7インチ液晶、お手頃価格で高精細、表示はとても綺麗でオススメです。
ところで、この7インチ液晶をRaspberryPiに繋いで使う際には /boot/config.txt
ファイルを書き換える必要があります。
購入すると付いてくる説明書に書き換える内容が記載されているのですが、Raspberry Pi Zeroではその内容のとおり書き換えても動きませんでした(おそらくRaspi3でも動かない?)。
いろいろ検索し調べた結果、以下の内容で書き換えることで動くようになりました。
※ ちなみに秋月のページからダウンロードできる config.txt
はダメでした
ラズベリーパイ 7インチ ディスプレイ SHARP 7" 高精細 IGZO LCD for Raspberry Pi
- 出版社/メーカー: シャープ株式会社
- メディア: エレクトロニクス
- この商品を含むブログを見る
参考
neuralassemblyのメモ: SHARPのIGZO液晶用のスタンドをタミヤの楽しい工作キットで作り、Raspberry Piで使ってみた
ポモドーロ・テクニックでSlack見がち問題を解決する
Slack見がち問題がすこし話題になっていたので、自分もすこし書いてみる。
Slack見がち問題 - hitode909の日記
自分のSlack見がち問題対処法 - $shibayu36->blog;
問題
以前に Slackに気を取られすぎる問題とその解決 っていうのを書いていて、この頃は、こんな感じで対処していた。
これで、新規の投稿が目につかなくなり頻繁にSlackを見ることもなくなり、レポートにまとめられることで就業後にはキャッチアップできる、みたいな日々を思い描いていた。
だけど、これは失敗に終わっていて、ミュートされていても投稿がないか確認するためチャンネルめぐりをしてしまい、結果、むしろSlackに向かう時間が長くなるという結末になった。
GitHub - dopin/slack-silencer
GitHub - hogesuke/slack-reporter: 特定期間のSlackの投稿をまとめてレポートしてくれるツール
再 解決
ところで最近、ポモドーロ・テクニックっていうのを使って仕事している。簡単に言うと25分仕事して5分休むっていうのを繰り返す。
それで、
- 仕事をする25分の間はSlackを閉じて見ることができないようにする
- 休憩後、つぎの25分が始まる前にSlackを起動して投稿を確認する
というような運用をしている。
これが結構うまくいっていて、プログラミング中に「うーん」って悩んでて気づいたらSlack眺めてたみたいな状況がなくなった。(いや、ほんとうはたまにある…)
Slackは起動に時間かかるっていうのが逆に良く機能してて、仕事中に朦朧として起動してしまった際に「ハッ!いかんいかん」と正気を取り戻すことができる。
デメリット
基本、ポモドーロのサイクルにSlackを組み込むことでうまく運用できてるんだけど、デメリットもある。
DMが送られてきても、仕事中の25分間は気づけない。Slackを見忘れることもあるので1時間とか放置してしまう場合もある。
DMを送る場面ってわりと即答を期待している場合が多いし、いままで即答を貰えることで助かる経験を何度もしてきたので、できれば自分も早い返答をしたいという気持ちはある。
SlackのDMだけのクライアントが欲しいなっていう感じ。気が向いたら今度作ろうかな。
- 作者: 松下雅和,小島泰洋,長瀬敦史,坂本卓巳
- 出版社/メーカー: 技術評論社
- 発売日: 2016/06/28
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る
React + Reduxでテック系Podcastをピックアップして聴けるwebサービス、pickfmを作った
pickfmとは
テック系Podcastにでてくる話題を可視化し、好きな箇所をピックアップして聴けるwebサービスです。
下の画像はwada.fm Episode 52の話題を表示した様子です。このように、タイムライン状に表示された話題から聴きたい箇所をピックアップして再生することができます。
これをどう実現しているかというと、ディープラーニングを用いて音声認識をしてうんぬんとかそんなことは1ミリもありません。
このように非常にローテクな残念仕様となっております。
作った動機
「あの話、また聴きたいな」と思っても探しだすのが困難で、あっちこっちと這いずり回らないといけないのを何とかしたくて作りました。Googleで音声も検索できるようになればいいのになー。
あと、ニコニコ動画式に「この時この話題でこんなことを思った」っていうのをコメントで共有できたら面白いかもと思い、コメント機能も付けています。
こんな具合にコメントで盛り上がっている箇所がわかる。
構成
謝辞
wada.fmを配信されている和田さんには、pickfm上で扱うことをご了承いただきました。ありがとうございました。
おわりに
フィードバックありましたらIssue送りつけてください。また、PullRequestも募集しています。
github.com
リンク
Vue.jsで体感余命みえる君を作った
体感余命みえる君
http://life.hogesuke.net
体感余命みえる君 とは
体感余命がみえるWebアプリケーションです。
ジャネーの法則
歳をとるにともなって、1年の経過がどんどんはやく感じるようになっていませんか?
この現象をポール・ジャネーという人が心理学的に説明していて、ジャネーの法則って呼ばれているようです。
すでに人生はどれくらい終わっているか
歳をとるごとに1年の体感はどんどん短くなっていくので「寿命までの残り年数=体感の残り人生」とはなりません。体感余命みえる君では、ジャネーの法則に則って、すでに人生のナンパーセントが終了しているかを計算します。
例として25歳の若者の場合、現在何パーセントの人生が終わっているかを見てみます。
なんと、63%もすでに終了しているようです。おそろしい。
※ 真偽の程は定かじゃないのでジョークとして捉えてください
Vue.js
このWebアプリケーションにはVue.jsを使用しています。GWの課題として今回はじめて取り組みました。
触って感じたことを箇条書きにしてみます。
- 学習コストが低いという評判を良く目にしたけど、そうでもないように感じた。
学習コストの面ではReactが圧倒的に優位な気がする。 - ただ、Angular1系ほど覚えるのが大変という感じはなかった。
- Reactに比べ、バインディグやレンダリングに関する補助機能は充実しているのでラクできる部分は多そう。
- Reactと同じで、中・大規模なアプリケーションを構築する場合は別のライブラリ(Reduxとか)と組み合わせないと崩壊しそう。
- 簡素なSPAで、細かい制御を必要としない場合には、ラクにシンプルに実装できて良さそう。
終わりに
GW終わるのつらい…
Slackに気を取られすぎる問題とその解決
この記事は「さくらインターネット Advent Calendar 2015」の20日目の記事です。
Slackは非常に気の利いたチャットツールで、とても便利に使っています。
問題
しかし、このツールにも問題があります。
ジョインしているチャンネルが多くなると未読のメッセージがつぎつぎに溜まり、未読を消化したい欲と仕事に集中したい欲を常に戦わせる状態となります。
(そして、だいたい未読を消化したい欲が勝ちます)
解決
仕事の効率を高めるはずのツールで仕事の集中力を欠いてしまっては仕方がないので、この問題を2つのツールを使って解消します。
Slack Silencer
まず、Slack Silencerというツールを使います。
このツールは指定したチャンネルをミュートにしてくれます。ミュート状態のチャンネルはリスト上に薄く表示され、メッセージの未読を伝える白文字の表示になりません。また、メンションされた場合にはバッジが付きますが、通知は飛ばなくなります。
ジョインしておきたいけどリアルタイムでウォッチする必要がないチャンネルをミュートすることで、未読を消化したい欲に振り回されることがぐっと少なくなります。
使い方
1. SlackのAPI tokenを作成
Slack Web API | Slackより作成可能です。
2. tokenを環境変数に設定
export SLACK_API_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
3. Slack Silencerをgit clone
git clone git@github.com:dopin/slack-silencer.git
4. コマンドラインよりプログラムを実行
# foo, barのチャンネルがミュートされる
/path/to/slack-silencer/mute.rb foo bar
ちなみに自分は、就業時間の09:30-18:30の間だけミュートするため、以下のようにcrontabに設定しています。
# 9:30からミュート 30 9 * * * /path/to/slack-silencer/mute.rb foo bar # 18:30にミュート解除 30 18 * * * /path/to/slack-silencer/mute.rb
Slack Reporter
Slack Silencerを使うことで未読により集中力を削がれることはなくなりました。
しかし、ミュートにしている間に投稿されたメッセージは既読扱いにされてしまうため、就業後にゆっくりメッセージを読もうとすると探しだすのが大変という新たな問題が発生します。
そこで、この問題を解決するため、Slack Reporterというツールを作成しました。 このツールは指定の期間に投稿されたメッセージをレポートにまとめてくれるツールです。
レポートのサンプル
使い方
1. SlackのAPI tokenを作成 (※ Slack Silencerで実施済みの場合スキップ)
Slack Web API | Slackより作成可能です。
2. tokenを環境変数に設定 (※ Slack Silencerで実施済みの場合スキップ)
export SLACK_API_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
3. Slackのユーザ名を環境変数に設定(オプション)
設定するとSlackのダイレクトメッセージでレポートのパスをお知らせします。
export SLACK_USER=xxxxxxxxxx
4. Slack Reporterをgit clone
git clone git@github.com:hogesuke/slack-reporter.git
5. コマンドラインよりプログラムを実行
# 9:30から18:30のメッセージを対象にする場合 /path/to/slack-reporter/reporter.rb 0930 1830 # 現時刻から1時間前までのメッセージを対象にする場合 /path/to/slack-reporter/reporter.rb 60
これもcrontabに設定し、自動実行させると便利でしょう。
# 18:30にレポート作成 30 18 * * * /path/to/slack-reporter/reporter.rb 0930 1830
レポートファイルは/path/to/slack-reporter/contents/
ディレクトリにhtmlファイルとして生成されます。
一件落着(?)
Slack Reporterについては、このAdventCalendarを書いている直前までコーディングしていたため、まだ運用できていません…
追記
ブクマコメントにて、最近Slackに実装されたdo not disturb
で良いのでは?というご意見を複数いただいたので、ちょっと追記します。
do not disturb
を設定すると、メンションされた際の通知は飛ばなくなりますが、未読の状態は分かってしまいます。具体的には、チャンネルリストに白太文字で表示され、Slackアプリのアイコンに赤丸で未読が存在することが分かる表示になります。
インボックスゼロ派の自分としては、この状態が目に入ると未読を消化せずにはいられないので、上で紹介しているツールでサイレントな環境を作っています。
追記2
ブコメで使ってみるって書いてくださってる方、ありがとうございます!
ただ、実のところSlack Reporterに関しては、メンションやリンク、Botによる投稿などの表示が不完全で一部見づらいものになっています。これについては、使いながら徐々に改善していく予定です。
また、PullRequestも歓迎してます。よかったらPR送ってください。
- 作者: 松下雅和,小島泰洋,長瀬敦史,坂本卓巳
- 出版社/メーカー: 技術評論社
- 発売日: 2016/06/28
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る
YAPC::Asia 2015 は最高のフェスだった
Raspberry PiとOpenCVでスプラトゥーンの勝敗を自動記録する仕組みを作ってみた
ikashot.net
※ 現在、IEで画像が表示できない不具合があります。お手数ですがIE以外でのアクセスをお願い致します…すみません。
何を作ったか
スプラトゥーンではバトルの履歴を見れないようになっているので、勝率がわかりません。自分の勝率がどの程度なのか知りたいなーと思ったので、勝敗を自動記録する仕組みを作ってみました。
仕組み
以下のような流れで処理しています。
- Raspberry Piのpicameraで、TV画面をキャプチャする
- キャプチャ画像のなかにWIN or LOSEの結果が表示されているかOpenCVを使って判定する
- WIN or LOSEが検出されたら、WebAPIを通して結果画面のイメージと勝敗をアップロードする
不格好ですが、こんな具合にラズパイをセットしてTV画面をキャプチャしてます。
OpenCVの画像認識について
WIN or LOSEの判定はOpenCVを使用して行っています。
画像認識できるようにするまでの手順はだいたい以下のような感じです。
- サンプル画像の取得
- 特徴の抽出
- 検出器の生成
- OpenCVの画像認識コードの実装
サンプル画像の取得
まず、検出対象の「WIN」と「LOSE」のポジティブサンプルと、どちらでもないネガティブサンプルを用意する必要があります。
今回はWINサンプルを400、LOSEサンプルを300、またどちらでもないネガティブサンプルを3万用意しました。精度の高い検出をするには、数千単位でサンプルを用意する必要があるみたいですが、そこまでやるのは辛いので妥協しています。
左: WINサンプル 中央: LOSEサンプル 右: ネガティブサンプル
特徴の抽出
特徴抽出っていうのは、ここが目でここが鼻でここが口みたいなのを示してあげることです(たぶん)。
難しいことはよく分からなかったので、今回は結果画面の「WIN」「LOSE」っていうのはここのことだよっていう座標を示しています。
これにはTrainingAssistantというツールを使用しました。
github.com
このツールを使うとブラウザで簡単にポジティブサンプルとネガティブサンプルの分類と、特徴の抽出(検出対象座標の記録)ができます。
こんな具合です。詳しくは作者さんのブログ記事に記載されています。
OpenCV 2.4.2で分類器を作る - shkh's blog
検出器の生成
ツールを使って生成されたポジティブ、ネガティブの分類と特徴点が示されたテキストファイルをもとに検出器を生成します。 これにはOpenCVのコマンドを使用します。
これもTrainingAssistantの作者さんのブログ記事を参考に実行しました。
OpenCV 2.4.2で分類器を作る - shkh's blog
この工程が一番時間がかかります。Core i5、メモリ16GBのMacBookProで完了まで丸2日かかりました。
ただ今回はネガティブサンプルが3万とポジティブサンプルに比べて多すぎたことが原因かもしれません。減らせばもうちょい速くなりそう。
OpenCVの画像認識コードの実装
生成された検出器を使って実際に画像認識するコードを実装します。 これは検索するとたくさんサンプルコードが出てくるので、それを参考にすると簡単に実装可能です。
自分はこのQiitaの記事を参考に実装しました。
python+OpenCVで顔認識をやってみる - Qiita
こんな具合に検出してくれます。
一応、検出してくれますが精度は悪いです。部屋が暗いと認識されずらかったり、WINをLOSEと間違えたりします。
この精度の悪さを補うため実際のコードでは、20フレーム中に3フレーム以上認識したら正しい検出として画像をアップロードする、といったようなワークアラウンドを埋め込まんでます。
精度が悪い原因はポジティブサンプル数が少ないことだと思うので、しばらくしてサンプルが集まったら検出器を作りなおそうかと思います。
以上!
以上で、簡単な画像認識を実現できました。ツールやサンプルコードを上げてくれている方がけっこういるので、その恩恵にあずかると割と簡単に実現できますね。ほんとう、みなさんには圧倒的感謝です。
Raspberry Piについて
最近、ラズパイ2がでて性能が飛躍的に上がりましたが、自分は間違って古いモデルを買ってしまいました。
この古いモデルは、CPU1コア、メモリ512MBというスペックで、OpenCVのビルドに6時間、Pythonのビルドに2時間かかります。けっこう厳しいです。picameraでのキャプチャについても5fpsぐらいしか出ていなくて、だいぶカクカクです。
ラズパイを購入する際は、まちがって古いモデルを買わないようにご注意ください…
ラズパイのセットアップについても情報はネットにたくさんあるので、困ることはありませんでした。OSもRaspbianというDebian系のLinuxなのでDebianやUbuntuの情報を転用でき、情報がなくて困るということはまずないかなぁという気がしています。
もし使ってみたい方がいたら…
GitHubで検出器を含めてソースコードを公開していますので、自由に使っていただくことが可能です。
github.com
github.com
しかながら、インストール手順をまったく書けていません…
もし、使ってみたいという方がいましたら@hogesuke_1までメンションください。まじめにインストール手順を書こうと思います。
ところで
いま、さくらインターネットがRapidSSLを1年無料で使えるキャンペーンをやっています。イカショットもこのキャンペーンを利用してhttps化してみました。
さくらのサービスを使っている方は利用されてみてはいかがでしょうか(イカだけに)。
ラピッドSSL提供開始記念キャンペーン! | さくらインターネット