サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
買ってよかったもの
shokai.org
hubot-osietekunというhubot scriptを作った。 https://www.npmjs.com/package/hubot-osietekun https://github.com/shokai/hubot-osietekun 誰に質問するべきか教えてくれる。 新参者に便利だし、他にもchat roomが複数あって見通せない時に誰が詳しいのか探せるので便利そう。 「hubot 教えて 単語」 で誰が詳しいか教えてくれる。 インストール npm install hubot-osietekun -save あとは普通にexternal-script.jsonに書けば読み込まれる。 外部サービスを一切使ってなくて、hubot内だけで完結してる。 実装 hubotが発言を全部kuromojiにかけて誰がどの名詞を使ったかカウントしてる。 形態素解析器kuromojiがnpmで提
Gruntでwatchしてbrowserifyでcjsx(coffeeで書いたReactのjsx)をビルドしてるって書いたけど WEB+DB PressのReactの記事が良かったのでcoffeeで書きなおした たくさんnpmをrequireする様になったら毎回5〜6秒かかって遅くなったので、gulpにしなければならないのか?とか思ったけどgulpのデバッグが難しすぎて挫折した。 watchifyはbrowserifyのラッパーで、ファイル更新を検知してbrowserifyしなおしてくれる。 ただ更新見てるだけだろって思ってスルーしてたんだけど、よく見たら更新されたファイルだけを変換しなおしてた。 速い。2回目のビルドから1秒弱になる。 オプション verbose指定しないとビルドした事すら表示されないので付ける。 あとはbrowserifyに付けるオプションと同じものが使えて、–debu
fluxxorとsocket.ioを使ってチャットを作った。大変ミニマムな感じの実装を心がけてて、今後何かWebアプリを作る時はこれを少し組み替えて作るぞというのを意識してる。ようするに低機能最低限でしょぼい。サーバー側はexpressとmongodb。 https://github.com/shokai/node-flux-boilerplate herokuでも動く https://node-flux-boilerplate.herokuapp.com/ クライアントはこんな実装 Fluxアーキテクチャ Reactはなんとなくわかってfluxをやるか、と思ったらflux npmの中がdispatcherしかなかった。 flux.DispatcherのwaitForの実装 まずこのへんを読んでフムフムなるほど(わかったようなわからないような)となる。 Flux | Application
Promiseもコールバックも使ってないのにDispatcherのwaitForで順番の制御ができる。どういう事なのか気になったので調べた。 Reactはなんとなく使えるようになった気がしたので、fluxでやろう、StoreとかActionとかどう書くんだと調べてて、とりあえずflux npmというFacebookの中の人によるfluxアーキテクチャの説明とDispatcherが一つだけ入っているnpmを見ていた。 Dispatcherは使ってみた感じ、イベント名が無いEventEmitterみたいな感じで、登録順に実行される。 flux = require 'flux' Dispatcher = new flux.Dispatcher Dispatcher.register (action) -> console.log "1 - #{JSON.stringify action}" Di
昨日か今日ぐらいの発売のWEB+DB Press vol.86のp123~のnaoya氏のReactの記事が良いらしいからみんなで勉強しましょう、って増井先生が言ってたので、昨日夕方数人で読んでて家帰ってから実際にコード書いてみた。 JavaScript苦手なのでcoffee-scriptで写経した。 https://github.com/shokai/react-coffee-study observer modelかつデータの流れを1方向にするのをFluxアーキテクチャと呼ぶのとか、DOM切り貼り職人のつらみとVirtualDOMの差分更新とかそういう概念の話は知ってたけど、なぜかなかなかReactそのものを使う機会が無かった。 Reactの感想 触ってみた感じではBackbone+Marionetteよりとっつきやすい。 WEB+DB Pressの記事の前半のtodoリストはみたまま
http://npmjs.org/package/ricoh-theta 音量設定オプションをthetaコマンドに付けた。 THETAにWiFiで接続してから % npm install ricoh-theta -g % theta --volume 0 0x502C AudioVolume | RICOH THETA Developersを使って設定している。 初期型の2013年モデルはシャッター音が消せないという公式見解だけど、消せた。去年ファームウェア入れた気がするのでそのせいかもしれないけど。
Yoは最近はダッシュボードからbotアカウントを作れるようになっていて、俺もいくつか作って使っている。 botがYoを受信するとあらかじめ指定しておいたコールバックURLにHTTP-GETでwebhookしてくれる。 https://自分のhubot.herokuapp.com/yo/webhook?token=kazudon とか指定しておくといい。GETのパラメータでusername, user_ip, tokenが来る。 Hubotで受信するとしたらこんな感じ。Hubotにはexpressが内蔵されていてrobot.routerで使える。 環境変数YO_WEBHOOK_TOKENを設定する必要がある。 本当にYoのサーバーからのリクエストかを確かめるのにコールバックURLにtokenを含めるのと、HTTPSを使う。 誰でもYoからプログラム実行できても困るので、許可するYoユーザーを
前:Web+DB Press vol.85でRICOH THETAについて書いた THETAの数だけVM起動すれば複数接続できる。 THETAはWiFiで接続する必要があるので、USB WiFiアダプタがあるとよい。接続したいTHETAの数だけ用意する。USB WiFiを追加しないと、Macbookの内蔵のWiFiがTHETAに専有されてしまってインターネットできなくなる。 MacにTHETAを1つ接続する MacのWiFiはインターネットに接続するのに使う。 追加のWiFiアダプタをUSB接続し、そっちをTHETAに接続する。planexのGW-USVALUE-EZが小さくていい感じなので使ってる。 「ネットワーク環境設定」の左下の歯車メニューから、「サービスの順序を設定」して内蔵WiFiを追加WiFiよりも上に持ってこないと、Macがインターネットにつながらないので注意する。 なお、T
菅原 元気 磯辺 和彦 山口 与力 澤登 亨彦 濱田 章吾 宮田 淳平 松本 亮介 海野 弘成 佐藤 歩 泉水 翔吾 佐藤 太一 hide_o_55 青木 良樹 武本 将英 道井 俊介 伊藤 直也 橋本 翔 渡邊 恵太 舘野 祐一 中島 聡 はまちや2 竹原 牧 大輔 工藤 春奈 技術評論社 売り上げランキング: 806 1週間前に発売のWeb+DB Press 85号で全天球カメラ RICOH THETAのAPIについて書きました。 THETAのAPIをNode.jsのricoh-theta npmから使う 全天球画像をブラウザで見れるビューアをWebGL(Three.js)で作った 応用例:全天球Webカメラを作る という話を書いた。 全天球Webカメラ リモートから1分毎に撮影してその画像をPCに取り込み、Socket.IOでクライアント(webブラウザ)に配信して表示させるというも
前:Node.jsとMIDIコントローラでHueを調光する 音楽やる気はないけどMIDIデバイスは入出力デバイスとして面白い。スライダーとかツマミとか色々あるし、MIDIで制御できるドラム叩きロボットとかもある。 とりあえず電子工作なしで買ってきたデバイス接続するだけでPCでもスマホでもWebブラウザから使えるというのは面白い。 Web MIDI APIはブラウザでMIDIデバイスが使えるHTML5のAPIで、現在はGoogle Chromeだけが対応している。 chrome://flags でWebMIDIを有効にし、MIDIデバイスを接続してからChromeを再起動する必要がある。 Chrome起動後にMIDIデバイスつなげても認識しないので注意。 試した http://shokai.github.io/WebMidiAPIStudy/ Android版Chromeも対応しているので、
できた MIDIコントローラ、安いしツマミとかスライダーがいっぱい付いてて便利だと思う。 ツマミで色相(hue)、スライダーでbrightness(輝度)を調整できる。 動画では使ってないけど横のボタンで彩度(saturation)を0にして真っ白にもできる。 pic.twitter.com/P2qlXGGsjM — oʇoɯıɥsɐɥ oɥs (@shokai) February 15, 2015 ソースコード これをgit cloneしてnpm installしてnpm startすれば起動する。 https://github.com/shokai/hue-korg-control MIDIコントローラの制御にはkorg-nano npmを使っている。KORG nanoKontrolを操作すると”knob:1″とか”slider:3″とか”button:play”というイベントを発火さ
Yosemiteにアップデートしていないのでまだapplescript使ってる。 # 音量設定取得 % osascript -e "get volume settings" output volume:40, input volume:50, alert volume:100, output muted:true # 音量だけを取得、0〜100で返ってくる % osascript -e "(get volume settings)'s output volume" # 音量を50に設定 % osascript -e "set volume 50/100*7" # ミュートされているか確認、true/falseで返ってくる % osascript -e "(get volume settings)'s output muted" # ミュートする % osascript -e "set vo
印象としてそんな感じがする。 だいたいプルリクする時って、バグを見つけて直すのはすぐできるんだけど、自分の修正が何か別のところで副作用を起こしているかもしれない、という不安があってグダグダ色々検証したり他の部分のコードも一応読んだりする時間の方が長いと思う。 そういう時にとりあえずテスト通っていれば、テスト書いたリポジトリ主がokしているような気になってくるから、すぐプルリク出せる。 なるべくrake testとかnpm testとかコマンド一発実行すればテストが走るようにしておいてくれるとプルリクしやすくてうれしい。 プルリク受け入れる側も、Travis CIとかでプルリク自体にテスト通過しましたバッジがついていると安心感がある。 テストの書き方色々ある 去年からnode.js使い始めて、色々作ってるんだけどテストの書き方色々ある気がするのでメモしておく。 具体的な書き方は各リポジトリの
node.jsでRICOH THETAを操作できるnpmを作った。nodeが入ってるMacやLinuxをWiFiでTHETAに接続して使う。 https://github.com/shokai/node-ricoh-theta https://www.npmjs.com/package/ricoh-theta 不具合・質問などはtwitterやgithubのissueにお願いします。 ネットを探した感じだと、thetaのシャッターを切るコード片は色々な言語で実装されてた。 でもそれらはちゃんとPTP-IPのコネクションやセッションを管理せず撮影命令のパケットを送るだけなので、撮影した写真を吸い出したり、リスト取得、削除はできない。 そこでptp.jsにそれらの機能を追加して、それをさらにラップしてricoh-theta npmを作った。 インストール グローバルにインストールするとthet
hubot-slackアダプタ v3の中で使われているnode-slack-clientを見ていたら、slackで発言に星を付けた時に通知が来ていたのでそれを別のroomに流すようにしてみた。 slackには自分のstarを見る画面はあっても他人のstarを見れる画面がない。API使ってstars.listが取れるけど、starまとめ的なページを作るにはユーザの数だけ定期的にクロールしなきゃだめなのかー・・・と思ってたけど、hubotにサーバープッシュされて来ていた。 starsというroomをあらかじめ作って、hubotを/inviteしておく必要ある https://gist.github.com/shokai/e52dd7fdd5d2592878b0 # Description: # notify "star_added" event for slack.com # # Author
hubot-slackアダプタを今までv2.x系を使っていたんだけど、先月ぐらいに出てたv3系にアップデートした。 hubot-slack アダプタ v2 から v3 へ | 半月記が参考になった。 hubot-rss-readerがv3で動かない機能があったりしたのも直した。 結論 v3系は色々おかしい気がするのでまだv3にアップデートしないほうがいいと思う。 とにかく今v2のhubot integrationをslackで使ってるなら、設定画面から削除はしないほうがいい。消したらv3しか使えなくなる。 slackの設定 slackに新規にhubot integrationを追加するとv3じゃないと使えないようになっている。 今まで使っていたintegration消して、新しいintegration作ってつなげた。 新規作成時に、hubotにアカウントを設定されるようになった。 /inv
原田 騎郎 吉羽 龍太郎 山口 陽平 青木 雅弥 松下 誠太 三宅 英明 高橋 征義 南川 毅文 伊藤 直也 海野 弘成 高安 洋輝 佐藤 歩 泉水 翔吾 佐藤 太一 横江 直輔 舘野 祐一 橋本 翔 渡邊 恵太 中島 聡 はまちや2 小沢 邦雄 長沢 智治 技術評論社 売り上げランキング: 265 hueはフルカラーLED電球なんだけど、よくある専用のスマホアプリから調光できるLED電球と違ってHTTPから操作できるAPIがある。あとHSV/CIE/Mired色温度などで細かく色指定できたり、電球が点灯しているかどうかもAPIで取得できたりする。 記事ではcurlやRubyでhueを操作したりとか、俺が(家の外で)プログラム書いたりgit commitすると家の電球が明るくなったり暗くなったり色が変わったりして、家族に俺ががんばってる感が伝わるシステムを作ったりした。 天気を電球で表示す
tesselのaudioモジュールを使うとLine出力でスピーカーに接続し、音がだせる。 再生できるのはmp3とwavファイル。 普通のmp3を再生 こんなコードで再生できる。tesselで実行するjsファイルと同じ階層に”cabbage.mp3″をを置いたら、fs.readFileSyncで読めた。実装をちゃんと追ってないから詳細はわからないがファイルシステムがあるらしい。 tessel-study/audio-play-mp3 at master · shokai/tessel-study var tessel = require('tessel'); var fs = require('fs'); var audio = require('audio-vs1053b').use(tessel.port['A']); audio.on('ready', function(){ cons
SlackなどのチャットサービスをRSSリーダーにできるhubotスクリプトであるhubot-rss-readerにRSSを探す機能を付けた v0.5.3になった。 えらい人のはてブとかを読み込んだチャンネルをSlackにいろいろ作って、それをみんなでウォッチしたりできる。 RSSではない、ふつうのwebページのURLを追加しようとするとRSSを探すようになった。 nikezono君のfind-rssを使ったら簡単だった。 callbackを全部Promiseで書きなおした ちゃんとテスト書いてあれば、mochaならcatchを自動的にやってくれるしcallbackからpromiseへの書き直しすんなりできると思う。hubot-rss-readerの他にも1つ全体を書きなおしたのがあるけど特にハマる所は無かった。 bluebirdを使った。 bluebirdはpromisifyAllにオブ
Node.jsが動くマイコンボードtesselを買ったのでさっそくカメラモジュールとwifiとtiny-routerというWAFを使ってtessel自体をwebサーバーにし、撮影した画像を配信できるようにしてみた。 ライブカメラというほどの速度は出ないけど、tessel単体で定期的な撮影とhttpでの配信ができた。 マイコンでNode.jsが動くとはいっても、例えばTCPのlistenはWiFiチップと通信しているからチップの状態次第で失敗するし、WiFiの設定をしている間にcameraのreadyイベント取りこぼしたりするから色々とタイミングがシビアでつらい所がある。でもNodeなのでeventemitterがあるからそれほどストレスフルではなくて面白い。 WiFi tesselのwifiは802.11b/gの1〜11チャンネルしか使えない。WiFiアクセスポイントがチャンネル12〜14
herokuは1時間アクセスが無いとDynoが寝る たとえsocket.ioをつなぎっぱなしにして頻繁に通信していても寝てしまうのでこうして20分おきに自分で自分にHEADリクエストを送って寝ないようにしてる request = require 'request' module.exports = (app) -> return unless /^https?:\/\/.+/.test process.env.HEROKU_URL setInterval -> console.log 'ping' url = "#{process.env.HEROKU_URL}?time=#{Date.now()}" request.head url, (err, res) -> if !err and res.statusCode is 200 console.log 'pong' , 60 * 100
最初、Qでなぜかcatchでエラーが捕まえられないぞ?と書いていたけど、require(‘q’).Promiseを使うんだと教えてもらった。ありがとうございます。 — 色々なNodeのライブラリがそれぞれで好きなPromiseライブラリ使ってるけど、それらのライブラリ達をいっしょにアプリ内で混ぜてつなげても大丈夫なのか?ちゃんと相互にthenでチェインしたりエラー捕まえたりできるのか? という事と、async.eachSeriesのようにURLのリストを1つずつ順番に処理完了するのを待ちながら処理していくのはPromiseでどうやって書くのかな? というのが気になっていたのでちょっと調べた。 勉強用リポジトリ https://github.com/shokai/promise-study 環境 node v0.10.29 + coffee-script v1.8.0 なのでまだPromis
前:Web+DB Press vol.82にJawbone Up24について書いた 先月末に発売されたWeb+DB Press vol.82で、コードが長すぎてページが足りなくて入りきらなかったネタ 研究室でにわかにjawbone up24が流行り始めていて、slackの#newsというチャットルームに「起きた(5時間寝た、3回二度寝した)」とかログが流れてくる。 そこに「何歩歩いた」あるいは「活発に活動中」というログも流すようにした。 これは記事の中に書いた俺APIというJawbone APIのプロキシを使ってる。Bluetooth LEで自動同期できるup24がちょっと歩く毎にガンガンwebhookでpushしてくるのを俺APIが受信して、さらにそこからsocket.ioでhubotに再配信してくれる。 JawboneのAPIはOAuth2で認証しないと使えないんだけど、もっと細かくて
よいよい MacDown: The open source Markdown editor for OS X. github.com/uranusjr/macdown Mou.appの改良版で(といってもフルスクラッチで作り直しているようだが)、 Mouで表示ができなかった、GitHub Flavored Markdownのコードハイライトが使えるようになっている。つまり ```ruby def hello puts "hello work" end ``` のようなコードブロックが色付きで綺麗に表示される。絵文字や画像とかもちゃんと出る。 というかまさにこれが色がつかないどころか表示が崩れて読めなくなる所だけがMouで不満なところだった。 欠点はちょっと動作が重いところ。スクロールするとわかるけど、普段はそんなに気にならない。 あとctrl+bでblockquoteが挿入されるという謎の
8/24(日)のプログラミングシンポジウム(夏)で発表してきたスライド。 少し修正したり、質疑応答の内容とかも追加した。 Lindaをnodeとsocket.ioで実装したら便利だったので、色々使ってるよという話をした。 俺の周囲ではLindaとは何なのか説明しなければならない人しかいなかったので、プレゼンの最初のほうで「Linda知ってる人〜」って言ったら15人ぐらい手あがって完全アウェーに来たと思った。 懇親会で、昔Linda使ってた人とかに褒められてうれしかった。
scripts/ の下に置く anonymous-post.coffee hubot anon 帰りたい とか hubot anon @shokai 帰れ とか hubot anon #general はい とかで投稿できる # Description: # hubot anonymous post # # Commands: # hubot anon MESSAGE # hubot anon #general MESSAGE # # Author: # @shokai config = to: '#general' module.exports = (robot) -> robot.respond /anon (.+)$/i, (msg) -> from = msg.message.user.name args = msg.match[1].trim().split(/\s+/) if
githubにherokuへのデプロイボタンが付けれるようになった Heroku | Introducing Heroku Button Creating a 'Deploy to Heroku' Button | Heroku Dev Center ので、node版gyazzのREADME.mdにDeploy to Herokuボタンを付けた。 ボタンを押すと、2分ぐらいで自分のHerokuアカウントでGyazzが動かせる。 アドオンも使える。 アドオンや環境変数の設定はapp.json Schema | Heroku Dev Centerで説明されているとおり、リポジトリのルートにapp.jsonを置いて指定する。city72のapp.jsonも参考になった。 Herokuボタンは https://heroku.com/deploy へアクセスした時のリファラがgithubのリポジトリ
山口 徹 Jxck 佐々木 大輔 横路 隆 加来 純一 山本 伶 大平 武志 米川 健一 坂本 登史文 若原 祥正 和久田 龍 平栗 遵宜 伊藤 直也 佐藤 太一 高橋 俊幸 海野 弘成 五嶋 壮晃 佐藤 歩 吉村 総一郎 橋本 翔 舘野 祐一 中島 聡 渡邊 恵太 はまちや2 竹原 河合 宜文 技術評論社 売り上げランキング: 330 前の号から「Hack the Real World」という、オープンなAPIがあるガジェットで何か面白い・便利な物作ろうという連載をやってる。 今回はJawbone Up24という腕輪型のアクティビティロガーについて書いた。 Up24は睡眠や運動のログを記録して、BLEでスマホと同期し、さらにjawbone.comからそれを取得できるAPIがある。 webhook APIもあって、運動したり起床したりすると瞬時にデータをサーバーpushしてくれたりもしてす
何度もメールをやりとりして結果をwiki等にまとめるのではなく、wikiに書いて適当に通知が飛ぶようになっていると便利だと思う。 実際便利なので研究室ではMLにメール月2,3通しか来てない。情報は全部ちゃんとしたフォーマットのストック情報になってて、それが適当にフロー情報として切りだされて流れてくるという感じで、自動的でよい。 gyazzをnodeで書き直してて、ページの更新がJSONのwebhookで通知されるようになった。「.通知」というページを作ってURLを改行区切りで書いておくとwebhookしてくる。 webhookをhubotで受信して、redisに貯めて前回とのdiffをslackに流すようにした。あまり同じページをまとめて通知しても細かすぎるので、webhookを受けてから1分間はデバウンシングする gyazz-notify.coffee # Description: #
次のページ
このページを最初にブックマークしてみませんか?
『shokai.org - 橋本商会』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く