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

taiyoh's memorandum

@ttaiyoh が、技術ネタで気づいたことを書き溜めておきます。

golangでBME280から情報を吸い出してよしなにする

相変わらず、goではなるべくニッチそうなlow layerなところを攻めております。 go用のI2C周りのライブラリはいくつかありますが、embdが割と素直な印象で、 実は先日BMP180というチップも買って、こちらであっさりと動かせるということを確認していました。B…

電力モニター「はやわかり」に記録されているデータをgoで吸いだしてmackerelに送ってみる

承前↓ taiyoh.hatenablog.com ついに前回のエントリの「hogehogeする」の中身が決まりました。 2年間完全に塩漬けにしてましたが、ふと思い立ったのでやることに。 当時吸い出す部分まで作って止めていたのは2つ理由があって、 amd64->armのクロスコンパイ…

ubuntu版chromeでpulseaudioが落ちた時の対処

もう一度音が出るようにするには、現状、以下の2ステップを踏む $ pulseaudio --startでpulseaudioを起動し直す chromeを親プロセスから再起動する(単にウィンドウを閉じるのではなく、アドレスバーにchrome://restartを打ち込む) というのも、どうやらub…

iRKitを買ったお話

lirc+lirc_webのシステムを作ったのが去年の話なのですが、肝心のエアコンの信号はlircでは認識できなかったし、今年に入って例のブレッドボードで組んだ回路が動かなくなったんですね。そもそもブレッドボードはそんな長く使うものじゃない筈なんですが。。…

Macじゃない環境でもIRCで流れてくる画像を表示したい人生だった

Mac版LimeChatのサムネイル表示機能が羨ましすぎるのですが、今使ってるマシンがUbuntuだったりして、悲しみが募っていたわけです(Macに変えればいいじゃん、というのは根本的すぎるのでスルーします)。そんな悲しみを紛らわすためにずっとIRCツールを探し…

radikoで聞ける番組をcronで録音したくなったので

作った → taiyoh/p5-radiko · GitHub rtmpdump、swftools、ffmpegがないと動きません。あとPerl側の依存モジュールはFurlとMIME::Base64、Class::Accessor::Lite::Lazyくらいか。 → 簡易Radiko録音ツール。要swftools/rtmpdump/libxml/wget/ffmpeg/lame こち…

電力モニター「はやわかり」に記録されているデータをgoで吸いだしてhogehogeする

数年前にイギリスから発売された製品に「OWL+USB」というのがあります。ブレーカーから延びてるケーブルに同梱されている送信機についたクリップを取り付け、それを無線で飛ばして受信機で受け取った後、表示・記録する、というものです。各国対応版となって…

cgoでのバイト列の受け渡し・受け取りについて

(今年、まだ更新するネタがあったぞ) 先週末くらいからGoをちょっと触り始めました。まだ始めて通算3日目くらいなんですが、なぜか色々すっ飛ばしてcgoなんてやっております。。。どうぞお手柔らかにお願いします。 諸事情あって、Goで定義したバイト列を…

IFTTTのiOS版での位置チャンネルを使って、家のリモコンを操作する

(なんか、半年ぶりにここに書くけど今年最後のエントリな気がする) 承前→lirc_webを使ってどこからでも赤外線リモコンの操作ができるようにする - taiyoh's memorandum 表題以上のことはなにも無いんですが、やってみましたよ、ということで。 今IFTTTの僕…

earthquake.gemのnotifyをim.kayac.comに向けてみる

これを使って、緊急地震速報のアカウントだけ通知するようにしてみた。最近地味に地震増えてきてて、揺れた瞬間にtwitter見て揺れたところを確認するのが面倒になってきたので、これでアプリとか開かないでも速報が確認できる。

アメッシュの画像を解析して、家に雨雲が近づいたら通知するツールを作った

まあ、タイトルの通りなんですが。 アメッシュの監視ってだけなら他に作ってる人がいるっぽいのですが、僕がやったのは、エリアごとに緊急度を付けて、家に雨雲が近づけば近づくほど緊急度が上がってるというのが分かるようになってます。 これって要は、目…

Data::ChangeFinderとData::AnomalyDetectなんてもんをこしらえてみた

→ taiyoh/p5-Data-ChangeFinder · GitHub → taiyoh/p5-Data-AnomalyDetect · GitHub fluent-plugin-anomalydetectの動作がかっこよかったので、もうちょっとfluentに頼らずにカジュアルに使えないかな、と思ったのが発端です。 変化点検出のアルゴリズムはい…

earthquake.gemの表示を少しだけ変更する

最近、PC環境でのtwitterクライアントにearthquake.gemを使っています。twitter上を検索するとか、特定のアカウントのツイートだけ見るとか、今までは全部マウスでポチポチしてたのですが、earthquakeだと一つのプロンプトに集約できるのでいいですね。どう…

nginxで同じパスでPCとSPのページ出し分け(簡易版)

今更ながら、nginxにmapという機能があることを知った。 → HttpMapModule ということで、以下のことを試してみた。serverブロックの外側に以下のような記述を追加してみる(中に書くと怒られる)。 map $http_user_agent $myindex { default /index.html; ~(…

lirc_webを使ってどこからでも赤外線リモコンの操作ができるようにする

335先生から「早く書け」とプレッシャーが来てるのでメモっておく。 用意するもの こちらのブログに書いてある部品一式 ブレッドボードあると楽ですね lirc (これはapt-getでインストールできる。上記ブログ参照) lirc_web 特に回路図の載っているこちらの…

MTでエントリ以外の要素を任意のタイミングで自動的に再構築する

MT情弱なのでぐぐってもなかなか出て来なかったし、ましてやPluginやToolも書きたくなかったので、頑張って探したら、これが出てきた → alfasado/mt-tools-rebuild-archives · GitHub やや古いツールだけど、一応現時点のMT最新版(5.2)でも動く。 どの形式の…

hubotにもunazu_kun的な機能を追加する

「unazu_kunって何?」って方は以下を参照。 → 社内IRCがカビ臭くてピリピリしてたので癒し系botを投入した後、リマインダー機能を搭載した話 - kenjiskywalker no memo → 多分結構バージョンの古いコード hubotで提供してるものがどれもかわいくないので、u…

nagiosで通知先を追加する、もしくはnagiosのalertをhubot or ikachanに渡してIRCに通知させる

hubotをIRC連携するのは「Ukigumo + hubot-ircでビルド結果を通知 - taiyoh's memorandum」を参照。ikachanなら元からインターフェイスがあるので省略。 これを承前として、/etc/nagios/objects/commands.cfgに以下を追加。 define command{ command_name no…

nagiosでsocket.ioのレスポンスを監視する

nagiosのcheck_httpだとhttp通信の監視しかできないので、websocketというか、socket.ioの通信を監視するのはだいぶ厳しいなー、と思ったので、以下のようなスクリプトを作った(当然部分的にボカしてる)。socket.io-clientとoptimistを予めnpm installして…

Ukigumo + hubot-ircでビルド結果を通知

hubotをIRC通知するやり方はあちこちで書かれてるが、僕としてはhubot-irc-runnableを使った方がカジュアルなのでオススメ。 →jgable/hubot-irc-runnable · GitHub その上で、scripts/httpd.coffeeに以下のコードを追加する #http://chobie.hatenablog.com/e…

socket.ioで下層パスで通信する

メモ書き。例えば/path/toなんてパスの下でコンテンツの表示もsocket.ioの通信もしたい時。 // in node var app_path = "/path/to/app"; io.set('resource', app_path); io.of(app_path).on('connect', function() { // do something }); とやって、表示する…

Perlでのfactory_girlもどきのもの

ちょっと作ってみた。 → taiyoh/p5-Test-Factory · GitHub PerlだとO/R Mapperが乱立しまくってて何かに依存したモジュールにするのは汎用性が低すぎてないわー、って感じだったので、DBIとSQL::MakerでDB毎の処理は抽象化させて、SQL的にはinsertだけに絞っ…

Amon2のコントローラをRailsっぽくしてみる

ただしルーティングはDispatcher::RouterSimple限定だけど。 これをコントローラクラスでuseしておくと、before_filterとafter_filterが使えるようになる。(ちゃんとテスト書いてないので思いつきレベル) ただ、Module::Functions::get_public_functionsを…

自作のオートマトンのモジュールをCPANに上げた

承前→ 有限オートマトンの習作として - taiyoh's memorandum 半年くらい前にこんなエントリ書いていたんですが、気づいたら2月中旬に知らない人がFSM::Simpleって名前でCPANに上げてて、しかも僕の実装より全然シンプルじゃなくて腹が立ったので、"FSM::Tin…

node-fiberでライフチェンジングとか煽ったことを若干後悔してる

承前→ node.jsのvmとsynchronizeはライフチェンジング - taiyoh's memorandum @hokaccha先生の記事読んで、やっぱインフルエンサーが書くと内容の充実度も反応も全然違うなー、とか思ってたのですが、特にあの記事をぶくましてるけどfiber使ったことない人は…

ただのメモ書き、またはArk::ModelsライクなものをAmon2でも用意する

調子に乗ってAmon2::Modelsとかあるといいかも、って思ってたけど、 package MyApp::Models; use strict; use warnings; use Object::Container '-base'; sub import { $_[1] = 'model'; # or something goto \&Object::Container::import; } register confi…

Emacsのflymakeでcarton+plenvな環境でも無理矢理@INCを通す

なんか最近Perlづいてます。今日は環境周り(Emacs)。 久々にちゃんとflymake使おうと思ったので、karupaneruraさんの作成したplenv.elを使って、plenvで構築したperlバイナリでチェックかけるようにしました。ただこれだけだと、cartonでインストールした…

tokuhirom氏のリファクタリング見てすげーなー、と思った、って話

typo氏からも「はよ」とか急かされたので、裏ですったもんだした挙句CPAN Authorになってしまいました。 → http://search.cpan.org/~taiyoh/ どうぞ宜しくお願いします>< さて、本題ですが。 今回Amon2::Web::Dispatcher::RouterSimple::Extendedというモ…

Amon2のDispatcher::RouterSimple、個人的にこんなのだといいなー、という例

[追記] tokuhirom氏に「よさげ」って言ってもらえたので、調子にのってgithubに上げました(シーパン王サーじゃないので)。Amon2::Web::Dispatcher::RouterSimple::Extendedって名前にしております。::RailsLikeとかも考えたけど、関数名違うから混乱するの…

結果だけじゃなくてプロセスも大切なんだよ、ってお話

「手段がどうかじゃなくて最終的に何をゴールにするかだよね」っていう言説をよく見る気がしていて、まあそれは真理だよねと思いつつ、どこかでずっと引っ掛かってたけど、やっとそこが言葉に出来た気がする。 一番気になっていたのは、上記の言葉がどういう…

node.jsのvmとsynchronizeはライフチェンジング

[追記 5/29] synchronizeというかfiberには以下の問題点があるのでそちらを参照の上、このエントリをご覧ください → node-fiberでライフチェンジングとか煽ったことを若干後悔してる - taiyoh's memorandum [追記 終わり] node.jsをお使いのみなみなさま、コ…

ミサワのページから画像をブッコ抜きつつmarkdownのテキストも出力するchrome拡張書いた

→ taiyoh/misawa-markdown · GitHub やっぱり使いたい画像で即座にミサワ画像使いたいよねー、というのと、 chromeの拡張書いたことなかったので、試しにやってみよう、ということで作ってみました。 ↑使用イメージストアとか載せるの面倒臭いし、多分もっと…

node.jsでtwitterのstatuses/update_with_mediaに対応

var Twitter = require('twitter') , request = require('request') , fs = require('fs'); Twitter.prototype.updateStatusWithMedia = function(text, params, callback) { var self = this , oauth = this.oauth , form, orderedParameters, r , url = 'h…

express.jsにgettext系の_関数を仕込む

引き続きnode.js系tips。 node-localizeというモジュールでの言語の管理がちょっとお手軽だったので、これとexpressを組み合わせるようにしてみた。 // express-localize.js var Localize = require('localize'); module.exports = function(path, defaultLo…

node.jsでのクイックハック

jquery-deferredを使ったなんちゃってトランザクション。 まだnode-mysqlでの使用しか想定してないので。 var $ = require('jquery-deferred'); function transaction(conn, callback) { var d = $.Deferred(); d.done(function() { conn.query('COMMIT'); }…

有限オートマトンの習作として

PerlでFSM::Simpleというモジュールを書いてみた。 #!perl -w use strict; use warnings; use FSM::Simple; my $count = 0; my $fsm = FSM::Simple->new({ rules => { init => sub { my $state = shift; if ($count < 20) { $state->next('add'); } else { $…

Sub::Deferredなんてモジュール書いてみた

最近、全然ブログ書いてないな、と思ったのですが、よくよく考えると、今年に入ってコード全然書いてなかったわけで、こりゃちょっといかん、と思いまして。 リハビリついでに、jQuery1.7の$.Deferredの機能をなるべくほぼそのままPerlに移植してみました。…

Test_myqld.phpを更新しました

以前のエントリ→ "Test_mysqld", ported from cpan's Test::mysqld - taiyoh独言 →taiyoh/Test_mysqld-php · GitHub このモジュールを作ってまもなく、id:memememomoさんに色々直していただいたのですが、 例外でプログラムが終了しないように気をつけるよう…

はてな x DeNA合同企画 Mobage 運用技術勉強会に行ってきた

はてなの方からメールにて招待いただき(ありがとうございます!)、折角だからと体調悪い上に台風近づいてるにも関わらず昨日行って来ました。 口外するな、と書かれていたので、相当やばい情報も話してくれるのか、とか、「活発に」リクルーターが話しかけ…

nginxでステータスコード404,500,503時に特定の静的なファイルを表示する

というメモ。 server { listen 80; server_name example.com; root /path/to/docroot; access_log logs/example.access.log main; location ~ ^/(js/|img/|css/|swf/) { index index.html index.htm; } error_page 404 /404.html; error_page 500 /500.html;…

mac osxにmroongaをインストールしてみる

承前として、osxにはmysqlとgroongaはインストールされているものとする(どちらもbrew installできますね!) $ wget https://github.com/downloads/mroonga/mroonga/mroonga-1.11.tar.gz $ wget http://downloads.mysql.com/archives/mysql-5.5/mysql-5.5.…

「モチベーション3.0」読了

モチベーション3.0 持続する「やる気!」をいかに引き出すかダニエル・ピンク 大前 研一 講談社 2010-07-07売り上げランキング : 783Amazonで詳しく見る by G-Tools 昼間、bookoffに行ったら950円で売られていて、しかも三が日は半額になるらしく、500円弱…

SQL_SketchなるPHPのライブラリ書いてます

→ taiyoh/sql-sketch-php - GitHub これは何かというと、PHPでもSQL::Maker的なモジュールが欲しかったので、書いてみました、ということです。510行くらいしかなくて、あんまりコーナーケースに対応したSQLは書けないです。でも、よくあるSQL文の7割くらい…

WebService::GoogleDirectionAPIというモジュールを書いた

本当はもう誰かがやってる可能性高いけど。 → Google Directions API - Google Maps API Web サービス - Google Code 経路探索をするgoogleのAPIをPerlから操作するためのものです。 #!perl use strict; use warnings; use WebService::GoogleDirectionA…

Archerのオレオレプラグイン書いた

真っ当な設計のアプリケーションなら、各種設定ファイルに環境依存の情報を入れておくと思います。 このプラグインは、Archerで持ってるdest_dir等の情報を埋め込みつつ、所定のパスに設置します。

Archer::Plugin::Rsyncもなんかエラーがでる

Odd number of elements in hash assignment at /home/homepage/perl5/perlbrew/perls/perl-5.14.2/lib/site_perl/5.14.2/Archer.pm line 164. Archer::Plugin::Rsync [debug] sending incremental file list ですと。A::P::Rsync周りでlogメソッドを使って…

typeofを使わずに配列かどうかを判別(ただし失敗)

jsdo.itユーザのtsmallfieldさんから以下のお題が出た。 (本物の)配列かどうかを判断するのにvar isArray = function(arg){ return [].concat(arg)[0] !== arg; };ではどうだろう?とふと思ついたのでテスト。 http://jsdo.it/tsmallfield/isArray 10分ほ…

Archer::Plugin::Confirmをちょっといじってみた

某案件でちとArcherを使ってみようと思って触ってるのですが、Archer::Plugin::Confirmが動かない。こんなエラーがでる Can't call method "opened" without a package or object reference at /Users/taiyoh/perl5/perlbrew/perls/perl-5.14.2/lib/site_per…

最近PHP(5.3.8)で「えー」と思ったこと

function() {}) } これもシンタックスエラー。 array('baz' => 0)) public function __construct() { $b = $this->_foo['bar']; $b['buz'] = 1; } public function…

daemontoolsを使ってる際のnginxのgraceful restart

$ sudo svc -h /service/nginx that's all.