upinetree's memo

Web系技術の話題とか。Qiitaも合わせてどうぞ (http://qiita.com/upinetree)

Digitech RP360のファームウェア更新に失敗した時の直し方

http://www.digitechjapan.jp/products/RP360/rp360.html

これ(マルチエフェクター)の話です。 ちょっと焦ったのと、日本語の情報がなかったので書き残しておきます。

結論

RP360本体を再起動し、Windows10以外のマシンでアップデートする。

詳しく

先日、Windows10 PCに専用ライブラリアンアプリNexus を入れて起動したらファームウェアアップデートせよと言われたので、表示に従ってアップデートを試みました。 ところが更新に失敗。

RP360側のモニタは

RP 360 Upd V2.0.0.0
IN UPDATER: WAITING FOR HOST…

と表示したままで、再起動しても変化せず。

下記に類似の現象が何件か報告されている模様だったので読んでみることに。

すると、2番めの記事の一番後ろに「Windows10じゃ動かないよ。Vistaでアップデートしたら解決したよ」とのコメントが…。

僕はVista持ってなかったので、Mac (Yosemite)でもう一度アップデートを行うと、成功。 まあなんかWindows10大丈夫かとは思っていたけど、まさかソフトウェアが起動しないとかじゃなくて、ファームウェアがいかれるとは思ってなかった。 そしてあとから確認すると、こんな記載が…。

注意書きも読まずに最新バージョンのOSを常に使ってるとハマるよという教訓でした。 直ってよかった。

rails newのときのテンプレのアレ作った

rails newするたびに同じ設定するの面倒になったのでマイテンプレつくった。

https://github.com/upinetree/rails_template

まだ途中だけど、ちょっとずつ育てていこうかなと〜。

参考:

転職から1年経ったのでTokyuRuby会議08で樽酒割った

と書いてみたものの、題名の前半と後半は実はあんまり因果関係ないです。

僕がこんなエントリを書いて転職してから、はや一年が経ちました。

2013-11-01 - 転職します - upinetree's tech blog

今読むと妙に力が入っていて恥ずかしい感じがします。一年しか経ってないのに。 でも、たぶんこれはこのときしか書けないことだったんだろうなあ。

一方で、TokyuRuby会議が11/29に開催されました。

TokyuRuby会議08 - Regional RubyKaigi

このイベントで、弊社は樽酒を提供する形で支援していて、そのためLT枠と樽酒を割る権利をいただけることになったのでした。 樽酒を割っている写真はインターネット上のどこかに漂っていると思います。樽酒、なかなか簡単には割れないんですね…。

さて、このLTの話が回ってきて、思わず「やります!」って言ってしまったは良いものの、樽酒スポンサーとしてどんな発表をしたものか頭を悩ませていました。 そこで、ちょうど僕が万葉に入社してから一周年だったということを思い出したわけです。 これも良い節目ということで、こんな発表をしてきました。

お酒入ることを想定してだいぶテンション高めです。

この発表で喋ったように、本当に僕を取り巻く環境は全然変わってしまって、一年しか経ってないのに不思議なものだなあと常々思っています。 入社当初はRailsアプリ全然書けなかったですし、前職までずっとWinユーザでLinux系はほとんどさわれなかったのを思い出します。そんな状態でしたが、今は未熟ながらも業務で日々新たな技術、課題と闘いながらたのしく働いています。 (今回はあまり喋れなかったお客さんとの働き方とか、そのための具体的なプラクティス的な話をどこかでしたいなあ)

そして、転職当初からずっと参加している勉強会のyochiyochi.rbにはとても感謝しています。引っ越した翌日だったかに第0会に参加して、最近こちらも一周年でしたね。なんかいろいろあって顔出す頻度落ちてますが今後共よろしくお願いいたします。

ところで、最近自分は甘ったれている気もして、前職で色々やっていたのは逆境だったからこそというのはあったんだなあと気付かされました。(その分内面はボロボロになっていたけど…) いや、甘ったれているというよりは、健全に意見を出せるようになったし、健全に議論できるようになったのかもしれないですが、なんかもうあと一歩踏み出したいなあという思いがあります。

まとまりのない文章になってしまいましたが、つまり、まとめると、"We are hiring!!"ってことです!

fluentdを使ってIdobataでニコレポを取得する

はじめに

先日ニコレポ用のfluentdプラグインを書きました。

https://github.com/upinetree/fluent-plugin-nicorepo

このまえ作ったニコレポgemを使って、ニコ動からニコレポを逐次取得してくれるすごいやつです。 (別にfluentdじゃなくてもいいじゃんというのはなしの方向で…)

いわゆる完全に俺得プラグインなんだけれども、使い方の説明の意味も含めて記事を書くことにします。

セットアップ

今回、fluentdはherokuで動かすことにします。 準備とかは下記のリンクが詳しいので参考にしつつやっていきます。

http://docs.fluentd.org/ja/articles/install-on-heroku

ひな形のClone

heroku-td-agentというheroku用の便利なひな形があるので利用します。

次のような感じでリポジトリ作りましょう。

$ git clone git://github.com/treasure-data/heroku-td-agent.git heroku-fluentd-nicorepo
$ cd heroku-fluentd-nicorepo
$ rm -fR .git
$ git init
$ git add .
$ git commit -m 'initial commit'

herokuアプリの作成とデプロイ

Heroku Toolbelt が入っていれば、次の方法でアプリの作成とデプロイができます。

$ heroku apps:create your-app-name
$ git push heroku master

動作確認

ここまで来たらひとまず動作確認します。

$ curl http://your-app-name.herokuapp.com/debug.sample -F 'json={"hoge": "fuga"}'
$ heroku logs --tail

2014-06-09T16:13:38.544846+00:00 app[web.1]: 2014-06-09 16:13:38 +0000 debug.sample: {"hoge":"fuga"}

上記みたいなのが出力されてたらOKです。

confの設定

さて、いよいよニコレポを取得してIdobataに流していきます。 あたりまえのことですが、ニコニコ動画のアカウントがあり、ニコレポで誰かをウォッチしている状態でないと、いつまでたっても何も流れてきませんのでご注意を。

今回、gemはfluent-plugin-nicorepofluent-plugin-idobataを使用します。 従ってGemfileは次の状態にします。

source 'http://rubygems.org'

ruby '2.1.2'

gem 'fluentd', '~> 0.10.48'
gem 'fluent-plugin-nicorepo'
gem 'fluent-plugin-idobata'

また、td-agent.confを次のように設定します。 今回は1時間おきに生放送だけを取りに行くようにしてみました。

<source>
  type nicorepo
  mail your@email.com
  pass yourpassword
  interval 1h
  kind lives
  tag nicorepo.idobata
</source>

<match nicorepo.**>
  type copy
  <store>
    type idobata
    webhook_url https://idobata.io/hook/url
    message_template <%= record[:body] %> @<%= record[:date] %> / <%= record[:title] %>: <%= record[:url] %>
  </store>
  <store>
    type stdout
  </store>
</match>

ニコ動のアカウントmail, passと、Idobataのwebhook_urlを書き換えるのを忘れないでください。 Idobataのwebhook_urlとは、流したいスレのRoom Settingsから'Add a Hook'して取れるEndpoint URLのことです。

再度デプロイしてあとは流れてくるのを待つだけです!

$ git add .
$ git commit -m 'setup nicorepo on idobata'
$ git push heroku master

あと、取得を1時間以上の間隔に設定する場合はこの設定やっておいたほうが良いかもです。

Heroku の Dyno を寝かせない - present

たまにheroku側で再起動して同じニコレポが2回やってきたりしますがご愛嬌。

お疲れ様でした。

NicorepoというRuby gemを公開しました

f:id:upinetree:20140501000122p:plain

ニコニコ動画のニコレポというのがあって、ニコ動版のツイッタータイムラインみたいなやつなんですが、これがまた情報が分類されてなくて読みづらいし、フィルタリングもできない、非常に廃人仕様なわけです。

毎日ニコレポに張り付くわけにも行かないけど、見たい動画は見逃したくない…ので、日々あふれるニコレポを効率よくまとめてチェックできるgemを作りました。

https://rubygems.org/gems/nicorepo

https://github.com/upinetree/nicorepo

といっても今まで自分で便利に使っていたやつを、みんなで使えるように手直ししてgem化しただけです…。Rubyをまだそこまでガッツリ使っていなかったときに書いたやつなので、ザクザクっとリファクタリングしてみました。

でもcliとかカオスすぎるので近々なんとかしたいし、コマンドもなんだか分かりづらい(自分は慣れたパターン)し、汎用性ないし…プルリクお待ちしております!

なお、ニコレポがAPIも提供してないのでかなり力技でぱーすしています。

使い方は大体READMEに書いてあるのですが、下手な英語なので分かりづらかったらお叱りください〜。

では、良いニコ動ライフを!

実行中Rubyプログラムのbinding.pryを全て無効にする

Pry version: 0.9.12.4 on Ruby 2.1.0.

これだけ

pry(main)> disable-pry

どんな機能かというと

pry(main)> help disable-pry
Usage: disable-pry

After this command is run any further calls to pry will immediately return `nil`
without interrupting the flow of your program. This is particularly useful when
you've debugged the problem you were having, and now wish the program to run to
the end.

As alternatives, consider using `exit!` to force the current Ruby process
to quit immediately; or using `edit-method -p` to remove the `binding.pry`
from the code.

ということらしい。

例えばループ中とかshared_examplesとかでbinding.pryしたとき、これを使えば目的の動作を確認した後にぐぬぬってならなくて済みますね。

ただ、binding.prynilを返す動作は変わらないのでそこだけ注意です。

他の方法としては、exit!を使うか、edit-method -pbinding.pryを削除してくれと書いてありますね。

ちなみに、edit-methodすると "DISABLED: Use edit instead." と怒られるので、指示に従ってedit -p method-nameとでもしておきましょう。

CoffeeScriptでインスタンスメソッドを関数バインディングする

忘れないようにメモ。

イベントをバインディングする時、関数をコールバックで渡すことがある。

$('.hoge_field').on('blur', (e) -> updateHoge(e.target))

updateHoge = (hoge_field) ->
  hogehoge

でも、インスタンスメソッドを渡すときは同様にこうしてはいけない。

index: ->
  $('.hoge_field').on('blur', (e) -> @updateHoge(e.target))

updateHoge: (hoge_field) ->
  hogehoge

なぜなら、コールバックとして渡す際、thisの示す先が変わり、updateHogeが未定義となってしまうから。

なのでこう書く。

  $('.hoge_field').on('blur', (e) => @updateHoge(e.target))

ファットアロー => を使うと、thisの示す先を変えずに扱うことができる。

JavaScript苦手意識あったけど、CoffeeScript触るようになってからわりと楽しくやってるかも。