よつばとひめくりカレンダー 2015

昔からこれ欲しかったのだけど、今年ついに買ってしまった。

これで少しでも会社の空気が和んだらいいかなぁ・・・って、別にそんなに殺伐としてるわけでもないけど。

f:id:tamaxyo:20150321212607j:plain

とはいえ、よく考えたら会社に置いとくと週末だの祝日だの、ひめくりにならない日が多すぎてちょっともったいない気がしてきた。更には最近会社でメモ用紙とかもほとんど使わなくなってるから、裏紙用途もいまひとつないという事実。

さてさて、どう運用していこうかなぁ。楽しみ

ちなみに、会社でメモ用紙を使わなくなってる理由の一つはこちら。とても便利

tamaxyo.hatenablog.com

机の上を整理するためにステンレスボードを買ったら便利だった話

綺麗にしようと思っても机の上は散らかってしまうもの。その原因の一つにメモ用の付箋紙を机に一つは置いてしまってるのがあったので、ちょっとしたメモが取れて使いまわせる何かが欲しくて探してたら、たまたまこれを見かけて試してみた。

スリーバイスリーシアトル To Do ステンレスボード

スリーバイスリーシアトル To Do ステンレスボード

TODOリストみたいにちょっとしたタスクを書いておいたり、誰かと話をする時に簡単なお絵かきに使えたりしてとても便利。なにより、ボードの奥の溝(?)に付箋紙とか置いておけるから、いざという時に使いたい付箋も綺麗に置いておけて助かってる。

正直、最初に手にした時は思ったよりも大きくてちょっとビックリしたけど、使ってみると程よく書き込みが出来てちょうどいい大きさだなぁと感じてる次第。デザインもスッキリしているし、机に向かう時の気分がちょっとよくなりましたとさ。

おすすめ

MBPの台座を買ったらだいぶ快適で驚いた

先日、見かけてたこいつを買ったら快適だったという話。

元々MBPは平置きして使ってたし、ラップトップというのはそういうもんだと思っていたのであまり傾けて使うこともなかったのだけど、これを見かけた時は持ち運びも便利そうだし、雰囲気もよさそうだしで、何故か試してみようと思って買ってみた。

で、届いたのがこれ。思ったよりも立派な箱でビックリする。 f:id:tamaxyo:20150228225938j:plain

しかも、無駄に小窓から見える便利機能付き。別にここから取り出せるわけではない。 f:id:tamaxyo:20150228230138j:plain

早速開けて使ってみたところ。MBPの下に置くなら雰囲気ピッタリでかなりよい。 f:id:tamaxyo:20150228230031j:plain

15インチMBPで使ってみると、Apple Wireless Keyboardよりもだいぶ傾いた感じになるので、最初は傾き過ぎでは?とも思ったけど、使ってるとだいぶ手首が楽でとても快適。 適度に滑りにくいので作業中に変にMBPが動くこともないし、一方で位置の微調整もそんなに大変でもない程よい支え具合。 携帯性もかなり良いデザインなので、これは外でもお世話になりそうな予感(まだ持ち出しはしてない)。

よい買い物でした、おすすめ。

【日本正規代理店品】Just Mobile Lazy Couch アルミニウム製ノートPC冷却スタンド JTM-ST-000001

【日本正規代理店品】Just Mobile Lazy Couch アルミニウム製ノートPC冷却スタンド JTM-ST-000001

gcpja night #29 に行ってきた

GCPもさることながら、k8s周りの情報収集に参加してきた。細かい内容はまぁ、誰かまとめてくれるでしょう。 いくつか気になった点だけメモとして残しておく。

GCP周りのお話

GCP全般について最近のアップデートの紹介があったのだけど、一番気になったのはlocal SSDで将来的にライブマイグレーションがサポートされるかもって話。これ、技術的に激ムズだと思うので、どうなっていくのか非常に楽しみ。

あとはFirebaseのデモ見てて、やっぱりインパクト強いよなぁと思った。自分はReactiveプログラミングと聞くと真っ先にMeteorを思い浮かべるし、Meteorは開発環境としてなかなか面白いのだけど・・・Firebase使うとどうなるのかな?と純粋に興味があるので、今度簡単なもので試してみるつもり。

GASのお話

toretaでの活用事例とか7&iでの活用事例とか聞いてて、便利そうだなぁという感じ。サーバサイドでお手軽にJavaScriptを動かす環境としてはかなりよさそうだし、SpreadSheetとかと連携して簡単にViewっぽいのを作れるのもよい。自分もちょっと勉強しようっと

k8sの話

k8sに関しては、"Googleが培ってきたコンテナデプロイのノウハウが詰め込まれている"というのが一番納得感があり、なるほどぉと思ったところ。 加えて、log収集にfluentdが採用されたあたりの話を引き合いに、open mindedな開発体制について賞賛があったのが印象的だった。ちなみに、fluentd採用に関しては、事前に他のプロダクトと比較して、純粋に技術的に優れているということで採用したのだそうだ。すごいな、fluentd。

あとk8sのmonitoringの話もあって、あれもすごい参考になった。k8sはコンテナ(というかPodか)の配備とか、そこへのロードバランスとか、要するにスケジューリング的なところは解決してくれるけど、それで何でもまかなえるという話にはならないので、k8s周辺部分を誰がどう固めていくのか?っていうのもこれから気になるところ。

GCPUGのお話

GCPUG(じーしーぱぐ)設立のアナウンスがあって、これは国内でGCP利用を促進するいい話なんじゃないかと思った。GCPって毎度情報を仕入れる度に驚かされることが満載なんだけど、案外出回ってる情報が少なくて、敬遠されてるところはあるんじゃないかと思うので。 今後は支部を作って、勉強会とかハンズオンを開催していくとのこと。

ちなみに、ロゴかわいい。これ、多分すごく重要

最後に

GCPは毎度話を聞く度に新しい驚きがあってとても楽しいので、こういう機会は非常に有難い。主催者の方々、発表者の方々に感謝。

pixivでgolangの現状を確認してきた

pixivの公開社内勉強会(?)的なものに参加して、golangの現状を確認してきた。ざっくり言うと、少人数で持ち寄ったお菓子をつまみながら、発表者もビールを飲みながらのゆる〜い感じながらも、よい確認の場でした。

pixivエンジニア勉強会 - Golang利用の現状確認会 - pixiv Inc. エンジニア勉強会 | Doorkeeper

golang使ってると、何をどうしたらgolangっぽいの?と悩むポイントがチラホラあるのだけど、案外似たようなことをみんな悩んでたりしてたし、そこに対する反応も様々な感じがあったので、よい情報交換の場になったなぁという印象で参加した甲斐があったかな。 内容的には38億PVを4台でさばくとかすごいなぁとか、golangXML扱えるからってsvgやっちゃうのかよ!とか、Circus便利そうだなぁとか、そのへんの印象が残ってるかな。

あとは、勉強会終了後にpixivメンバの迷惑を顧みず、二時間近く中の話を雑談がてら聞かせてもらって、サービス開発の裏側にある背景とか考え方とか、そういうのを聞かせてもらってへーって感じだった。とてもよい機会でした、多謝

おまけ:資料が公開されてたので、貼っとこうっと

golangにおけるテキスト処理のあれこれ

golangでテキスト処理をやってた時にあるあるネタにぶつかったので、覚書程度に。

文字列の長さを知る

テキスト処理をしてるとある文字列の長さを知りたくなる。が、単純にlen(str) とかやると文字列のバイト数が分かるだけで、文字としてのカウントにならない。golangは内部的にUTF-8を使ってるので、日本語だと文字数よりもだいぶ長い。 そんな時はunicode/utf8func RuneCountInString(s string) (n int) を使えばよい。

文字列の次の一文字を取得する

文字列の最初の一文字を取得する場合はfunc DecodeRuneInString(s string) (r rune, size int)を使う。最初の文字(rune)とそのバイト数(size)を返してくれるので、最初から一文字づつ読み込んで処理していくなんて時にも使える。

いっそのことループで回したい

文字列を一つづつ読んでもいいけど、どうせ全部ループして読み込むならfor pos, ch := range s {} でsを構成する文字を一つづつ読み込んでループ処理が出来る。ちなみに、この場合のposはバイト数で数えた時の先頭位置が返される。くれぐれも文字数と勘違いしないように。

その他もろもろ

上に書いたxxxInStringは名前の通り引数に文字列を受け取るけど、InString部分をのぞいた名称でバイト列を受け取るメソッドも用意されてるし、その他にもいくつかメソッドが準備されてるので、これ以外はこちらを参照のこと : https://godoc.org/unicode/utf8

Intel EdisonでBluetoothを使う

気が付いたらハッカソン終わって一週間も経ってるわけで・・・とりあえず作業ログ的なものとしては最後のBluetoothの設定周りについてまとめておく。

Bluetoothを動かす準備

Edison自体にはBluetoothが組み込まれてるのでハード的には利用可能な状態が整っているが、ソフトウェア的には利用出来ない状態になっているので、まずはそこから解除する。 bluetoothが抑止されてるかどうかはrfkill listで確認出来る。多分、こんな感じの出力が得られるので、なんとなく抑止されてるのが分かる。

0: phy0: wlan
        Soft blocked: no
        Hard blocked: no
1: brcmfmac-wifi: wlan
        Soft blocked: no
        Hard blocked: no
2: bcm43xx Bluetooth: bluetooth
        Soft blocked: yes
        Hard blocked: no

これを解除するには、rfkill unblock bluetoothを実行すればよい。もう一度listを表示すれば、解除されてるのが分かるはず。

Bluetoothの設定をする

Bluetoothが動く準備は出来たので、設定を整える。Bluetoothの設定はbluetoothctlでやればよい。以下、bluetoothctlでの作業内容。

Bluetoothコントローラの確認

show

有効化

power on

デバイススキャン開始

scan on

スキャン終了

scann off

ペアリング開始

pair DeviceID

信頼出来るデバイスであることを登録

trust DeviceID

で、最後に接続

connect DeviceID

だいたいこんな感じでうまくいく・・・はずだったのだけど、どうも上手く接続が出来ない。 話を聞いてみると、どうやらEdisonに最初から入ってるYactoOSだとBluetoothを上手く扱えないんだそうだ orz

ここから紆余曲折あるけど、長いので後述。最終的にBeacon発射するだけで乗り切ったので、そこまでのやり方を先にまとめておく。ちなみに、Beacon発射するだけなら上記手順のpower onまで終わってれば大丈夫。

Beaconを飛ばす

Edison環境でBeaconを飛ばす場合、BLEACONというnodejsライブラリを使うと便利。普通にnpmでインストールできるので、この程度のコードでBeaconを飛ばすことが出来る(uuidとかその他の値は適当)。ハッカソン現場では特定の出力ピンのHIGH/LOWに合わせて、majorの値を1/0で切り替えることで情報送信を行った。

send bluetooth beacon from edison

なお、BLEACONを使うためには事前にbluzのライブラリインストールが必要なので、実施しておくこと。 /etc/opkg/base-feeds.confというファイルを作って以下を記述。

src/gz all http://repo.opkg.net/edison/repo/all
src/gz edison http://repo.opkg.net/edison/repo/edison
src/gz core2-32 http://repo.opkg.net/edison/repo/core2-32

インストール実行

opkg update

でbluez5-devがインストールされる(参考にしたサイト)。

EdisonでBluetoothを使うならubilinux

とりあえず、上の状態でBeaconを使ったやりとりは実現出来たけど、ちゃんとしたBluetooth通信ができているわけではない。これを実現するためには、ubiniluxというdebianベースのosに載せ替えた上で、ドライバ周りをゴニョゴニョする必要があるらしい。であればと、こいつのインストールには取り組んでみたけど、うまくいかなくて断念した。 自分が躓いたポイント

  • Macからインストールする場合にはファイルシステム初期化が必要らしいが、それが上手くいかなかった
  • VirtualBoxubuntu入れてそこから更新かけようとしたが、USBデバイスがうまく捕捉出来なかった

前者はIntelの方に後から話を聞いたのだが、Macからだと一工夫必要らしい。ちなみにとても質の悪いことに、Macからインストールプロセスを実行すると普通に上手く動いたように見えて、エラーは何も出ない。が、再起動すると普通にYactoOSとご対面するので、とても凹むこと間違いなし。

それではと仮想マシンとしてubuntuを用意して、そこからインストールしようとしたのだけど、これがまた上手くデバイスが捕捉出来なかった(今思うと、微妙に手順間違えてた気がしなくもないが・・・まぁ、それはそれ)。USBデバイスは基本全部捕捉してたはずなんだけど、たまにEdisonが顔出してたり出してなかったりするあたりが怪しかったし、実際Intelの方にも捕まえるの大変と言われたので、きっと難しいんだろう。

結論

ということで、Bluetoothを使うというタイトルの割にいまいちな状況を晒すだけになってしまったわけですが、まぁBluetooth使うのは大変ですよということで。 今度ちゃんとリトライしてみます、はい