読者です 読者をやめる 読者になる 読者になる

GoogleCloudPub/Subのfluentdプラグイン fluent-plugin-gcloud-pubsub-customを作った

プログラミング fluentd Ruby

マネージド・メッセージ・キューのGoogle Cloud Pub/Subを利用するためのfluentdプラグインとしてfluent-plugin-gcloud-pubsub-customを作りました。

リポジトリは以下です。 github.com

もともと GitHub - mdoi/fluent-plugin-gcloud-pubsub というプラグインがあったものの、最近更新されていなさそうでしたのでforkして新しいプラグインとして公開しました。

元になったfluent-plugin-gcloud-pubsubから大きな変更点として以下があります。

  • google-cloud-rubyのバージョンアップに追随
  • Pub/Subの各種クォータの制限に対応
    • file bufferも使えるように lightening buffer への依存を排除しています。
  • formatter, parserプラグインに対応してjson形式以外も指定できるようにした
  • エラーハンドリングを改善
  • inputプラグインにHTTP RPCでメッセージのpullをstop, startできる機能を追加
    • デプロイ時や流量のコントロールなどに使えると思います。

使い方はREADMEを参照してください。

Pub/SubにはAttributeを付与できる機能があるので、Attributeにtagを入れて、pullするときはそれを使ってtagを付与できる機能を、そのうち実装したいと思っています。 forestプラグイン等でtopicをたくさん増やす必要がなくなって便利かなと。

しばらく自分でも使ってみて特に問題は発生していないですが、もし使ってみてバグや欲しい機能とかありましたら、何かでご連絡ください。

【10/30追記】

マルチスレッドでメッセージをpullできる機能をinput pluginに追加しました。

MicroPythonでmicro:bit互換のchibi:bitを動かす

電子工作 プログラミング mbed Python

f:id:mia_0032:20160820155544p:plain

chibi:bitはスイッチサイエンスから発売されているmicro:bit互換のマイコンボードです。

micro:bitはmbed enableなのでC++(mbed)でも開発できますし、JavaScriptやBlockEditor, MicroPythonでも開発することができます。

WebIDEを使うと、非常に簡単にコードを動かすことができます。 コンパイルされたhexファイルをダウンロードできるので、hexファイルを通常のmbedと同じようにディスクへ書き込めば動きます。

しかしWebIDEではなくローカルPCで開発したいという人もいると思います。 そこで、この記事ではローカルPCでMicroPythonのコードをビルドしてchibi:bitで動かす手順を紹介します。

1. ローカルで開発できる環境を作る

Pythonのバージョンは 2.7.12 でやりました。OSXでの手順になります。

$ python --version
Python 2.7.12

Pythonで書かれたコードをhexファイルにコンパイルして書き込んでくれるuFlashというパッケージをインストールします。

$ pip install uflash

ビルドにはyottaも必要そうなのでインストールします*1

$ brew install cmake ninja arm-none-eabi-gcc
$ pip install yotta

2. HelloWorld.py

以下のコードを HelloWorld.py として保存します。

from microbit import *
display.scroll("Hello, Python World!")

chibi:bitへ書き込みます。

$ uflash HelloWorld.py /Volumes/MBED

3. 動作確認

MBEDデバイスが取り外されれば書き込みが完了した合図なので、あとはリセットボタンを押すだけです。

f:id:mia_0032:20160820155043g:plain

ちゃんと表示されました!

*1:特に依存しているようには見えないものの、インストールされていない状態だとhexファイルが書き込まれませんでした

『トコトンやさしい歯車の本』『やさしい機械図面の見方・描き方』他を読んだ

読書

トコトンやさしい歯車の本 (今日からモノ知りシリーズ)

LED日時計を製作するにあたり、歯車の仕組みを理解するために読みました。

歴史から理論的な計算式まで一通り網羅されていてだいぶ役立ちました。

やさしい機械図面の見方・描き方(改訂2版)

やさしい機械図面の見方・描き方(改訂2版)

やさしい機械図面の見方・描き方(改訂2版)

これも同じくLED日時計を製作するために図面を描く時に読んだ本です。

図面の描き方自体は、大学の頃に多少かじったことはあるものの、だいぶ忘れていたので良い復習になりました。

nginx実践入門 (WEB+DB PRESS plus)

nginx実践入門 (WEB+DB PRESS plus)

nginx実践入門 (WEB+DB PRESS plus)

Nginx使うなら読んでおくべき本でした。何となく使っていた細かいパラメータの意味までちゃんと書いてあり、非常に勉強になりました。

[24時間365日] サーバ/インフラを支える技術 スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)

[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)

[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)

若干内容が古くはなってきている感じはするものの、基本的な考え方は今でも通用する本です。

止められない大規模なシステムを安定稼働させ続けるために、とりうるサーバー/インフラ構成(冗長化、チューニング。モニタリング)について書かれています。

[Web開発者のための]大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ (WEB+DB PRESS plusシリーズ)

「サーバ/インフラを支える技術」よりも、アプリケーションレイヤー寄りの話が多いです。内容としては同じく、止められない大規模なシステムを安定稼働させ続けるために、やれることについて網羅されています。

初めてのAnsible

初めてのAnsible

初めてのAnsible

Ansibleでどういったことができるかについて詳細に解説している本です。 「初めての」とついていますが、他のオライリー本と同じく、完全な初心者向けの本ではないです。 Ansible自体は触ったことがあり、上手い使いこなし方がわからない、という段階で読む本だと思いました。

考えなしの行動?

考えなしの行動?

考えなしの行動?

昔、英語版を読んだことがあったものの、日本語版は読んだことがなかったので改めて読んでみました。 英語版は写真だけが載っていて文章が書かれていないのですが、日本語版ではちょっとした解説が載っています。

普段、何気なくやってしまう行動を改めて写真に撮ってみると、なぜそうした行動をとってしまうのか、ということを考えさせられる本です。