タグ

ブックマーク / shokai.org (25)

  • 橋本商会 » Node.jsでYahooから天気予報とリアルタイム降雨データを取得する

    Node.jsでYahooから天気を取得するnpmを作った。 https://www.npmjs.com/package/weather-yahoo-jp YOLP(Yahoo Open Local Platform)のリアルタイム降雨情報のAPIと、Yahoo天気の予報の取得ができる。 Nodeに日の天気関係のnpmが無かったのと、今まで使っていたRubyのお天気系Rubygemが全て動かなくなっていたので自作した。 天気をスクレイピングして取ってくる部分がHTMLの変更により動かなくなってしまう事が多いみたいなので、CircleCIで毎日テストを走らせる事により異常にすぐ気づけるようにしてある。 現時点でv0.2.0 forecastの方はまだ多少項目追加する予定なので(気温の前日との差や降水確率など)最新情報はREADMEを見ると良い エラーや要望はissueかtwitterにどう

    橋本商会 » Node.jsでYahooから天気予報とリアルタイム降雨データを取得する
  • 橋本商会 » coffeeからES6(babel)に少しずつ書き換える

    coffee-scriptで書いていたwebアプリをES6(babel)に書きなおした。 全部を一気に書き直してハイ動いたーとやるのは無理なので、coffeeとES6のファイルが混在しても動かせるようにして、少しずつ書き直した。 書き直したのはこれ React+Fluxxor+socket.ioでfluxなチャットを作った https://github.com/shokai/node-flux-boilerplate インストール % npm install babel babelify browserify watchify -save-dev とやっていたのだが、数日前にbabelが5から6にアップデートされて、babel-coreやbabel-preset-*など色々分割されて、大分色々変わってしまった。周辺ツールも対応の過渡期だったのでbabel5系を使うようにバージョンを指定した

  • 橋本商会 » Enterキー押す毎にJXAでiTerm2の背景を変える

    指定ディレクトリの下の写真をランダムにiTermの背景設定するコマンドができた。 https://gist.github.com/shokai/872e375c0b0636b0c2ae Enterキーを押す毎に画像を切替えるようにzshを設定してみたらすごい疲れる感じになった。これでアニメgifが再生できたら最高だったんだけどただの静止画になってしまう。 写真.appの中身をランダムに表示している。写真.appの顔認識機能が作ったサムネイルも読み込まれるせいで、たまたま撮った写真に写っている知らない人の顔ドアップサムネイル画像もたまに表示されて誰コイツ感がある。 定期的にtumblrとかから画像を取ってきても楽しそう。 ふつうにプログラムを書いたりしているところ AppleScriptの代わりにJavaScriptで書けるというJavaScript for Automationを使ってみた

    橋本商会 » Enterキー押す毎にJXAでiTerm2の背景を変える
    monyurin
    monyurin 2015/06/30
  • 橋本商会 » HerokuのHubotをProcess Schedulerで寝かす前に報告させる

    HerokuのHubotを寝させる 無料で使うには1日6時間寝かせないとならないので Heroku | Heroku’s Free (as in beer) Dynos dashboard.heroku.comからaddonにProcess Schedulerを追加して6時間寝させる。 参考:HerokuでHubotを指定の時間に寝かせる – はらへり日記 寝る前に報告させる 寝る前に「寝ます」とか「寝ましょう」とか言ってくれた方が安心感がある。 herokuはプロセスの終了時にSIGTERMを投げてくるので、それを受ければいい。 nodeだとprocess.on(‘SIGTERM’, function(){ });でキャッチできるはずだけどHubotではできなかった。ソースをよく見たらbin/hubotが先にSIGTERMにイベントを登録して、その中でexitしていた。なのでSIGTER

    橋本商会 » HerokuのHubotをProcess Schedulerで寝かす前に報告させる
  • 橋本商会 » capybara-webkitでWebページのスクリーンショットを撮る

    縦長のwebページを画像として保存したかったので久しぶりにcapybara-webkitを使った。 インストール Macで使うにはqtが必要 % brew install qt % gem install capybara-webkit % gem list | grep capybara capybara (2.4.4) capybara-webkit (1.5.2) キャプチャ 久しぶりに使ったらインタフェースが変わってたけど、ドキュメントが無いみたいなのでlib/capybara/webkit/driver.rbを読んで適当にやったらキャプチャできた。 capybara-capture.rb require 'capybara-webkit' require 'uri' exit 1 if ARGV.empty? url = ARGV.shift driver = Capybara:

    橋本商会 » capybara-webkitでWebページのスクリーンショットを撮る
  • 橋本商会 » watchifyでcjsxをビルド

    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

    橋本商会 » watchifyでcjsxをビルド
  • 橋本商会 » React+Fluxxor+socket.ioでfluxなチャットを作った

    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

    橋本商会 » React+Fluxxor+socket.ioでfluxなチャットを作った
  • 橋本商会 » WEB+DB PressのReactの記事が良かったのでcoffeeで書きなおした

    昨日か今日ぐらいの発売の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リストはみたまま

    橋本商会 » WEB+DB PressのReactの記事が良かったのでcoffeeで書きなおした
  • 橋本商会 » Macのlaunchdからnodeが起動しなくなったのでpathを追加した

    何もしていないのに壊れたんです brew updateしてnodeをv0.10.28(だったかな?)からv0.10.32にしただけでlaunchdから起動しなくなった 普通にCLIからnpm startとかcoffeeとかからなら起動するけど、 launchd→npm start→coffee が起動しない。 env: node: No such file or directory というエラーがログに出る これやったら解決した MacOSX – Mountain Lionでのシステムワイド環境変数の設定方法 – Qiita /etc/launchd.conf を作って setenv PATH /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin OS再起動したら元気にnodeが起動した

  • 橋本商会 » express+socket.io+mongooseのテンプレ作った

    作った https://github.com/shokai/express-template 簡単なチャット。チャットログはMongoDBに保存する。 https://express-chat-template.herokuapp.com/ ガチwebサービスではなくゆるふわプロトタイピング用のテンプレになっている。expressあんまりよくわかってないから変な所あったらissueとか建てて盛大にdisって欲しい。 基的にgeta6/coahを参考にしてるんだけど、ブラウザの為にcoffeeをコンパイルしてjsにするとか諸々の強烈なasset pipelineを取り外した。 構成はこんな感じ express 4.4 socket.io 1.0 mongoose 3.8 coffee-script ブラウザもcoffee-script.js herokuにデプロイ mocha + supe

    橋本商会 » express+socket.io+mongooseのテンプレ作った
  • 橋本商会 » Node.jsで実世界UI

    先週のReal.UIで発表してきたスライドです。ハードウェアとかNode.jsでやったほうが安定するしいいよという話をした。 会場のスマートニュース社は勉強会とかできる場所とオフィスとその真ん中にビールとか置いてあるカウンターがあってフロアがスコーンと抜けるように全部見えてて広々していた。ビール何種類もあってよかった。おいしかったです。

  • 橋本商会 » Bluetoothが載ってるArduino派生ボード「BlendMicro」とNode.jsでBLEした

    追記:npmにしたり、firmata作った — Mac OSXで動かしてるNode.jsとBluetoothで通信できるようになった。無線でArduino制御するの超簡単になっちゃった。 もうXBeeとか無くていいと思う。ミニ四駆とかに乗せるのに良さそう。 試したのはちゃんとコネクションはって双方向通信するやつ。次はAdvertisementパケットにセンサーの値でも乗せて垂れ流すのをやってみたい。 ソースコードとかはgithubにおいてある https://github.com/shokai/blendmicro-study ArduinoMicroにBLE(Bluetooth Low Energy)を追加したBlend Microというボードが先月末に出たので、買って試した。 1枚$36なので、2枚買った。注文して1週間ぐらいで届いた。 普通のArduinoMicroより1000円高い

    橋本商会 » Bluetoothが載ってるArduino派生ボード「BlendMicro」とNode.jsでBLEした
  • 橋本商会 » Node.jsでiBeacon

    bleaconを使うとMacをiBeacon発信機にできた。もう一台Macを用意すれば受信もできた。 https://gist.github.com/shokai/0354aaf8a72873f4412b nodeの発信側は、プロセス終了してすぐ再起動するとうまく動かない。最低でも2,3秒まってから再起動する。 % npm i bleacon % uuidgen 発信 Bleacon = require 'bleacon' uuid = process.argv[2] || "805D6740-F575-492A-8668-45E553EB9DF2" major = 1 minor = 1 console.log uuid Bleacon.startAdvertising uuid, major, minor, -50 受信 Bleacon = require 'bleacon' Blea

    橋本商会 » Node.jsでiBeacon
  • 橋本商会 » Engine.IO単体でチャットを作った

    友達に「Socket.IOはメモリリークヤバイから、新規開発なら迷わずEngine.IOを使え」と言われたのでEngine.IOを直接さわってみた。 Engine.IOはSocket.IOの内部で使われている部品で、「websocketでもajaxでも何でもいいのでとにかく通信ができる状態」を作るライブラリ。 もともとSinatra::RocketIOやlinda-socket.ioやRuby用socket.ioクライアントを作る時に中身は覗いてたけど単体で使った事はなかったし、どういう実装か忘れがちなのでメモする。 Chatを作った とりあえずchatを作った。Herokuでwebsocketを動かしている。 サーバーもクライアントも50行ぐらいで書けた。 デモ ソースコード 感想としては、Engine.io単体で使うと、綺麗なアプリケーションを書くにはその上に(フル機能ではないにしても

  • 橋本商会 » DockerとdokkuをMacにインストールして自分をHeroku化した

    dokkuを普段持ち歩いてるMacbook AirのVirtualBoxのUbuntu12.04に入れた。 dokkuはDocker環境をセットアップしてくれて、そこに個人用のHerokuのようなものを建立してくれる。 dokku体は100行ぐらいのshellscriptで実装されている。そこから作者のprogrium氏が作った色々なツールが呼び出されるので、実体としてはもっと大きいけど。 vagrantとかchefとか全く使わずに、アプリをgit pushするとVMが建つ環境が簡単に作れる。 gitのhookでdockerコンテナが作られて、フロントのnginxのproxyが設定されて、websocketも通る。 コンテナ構築にはherokubuildpackが使われているので、アプリの内容に応じて自動的にnodeとかrubyとかの環境がセットアップされる。 buildpackはhe

    橋本商会 » DockerとdokkuをMacにインストールして自分をHeroku化した
  • 橋本商会 » IRKitのファームウェアを改造して温度センサーを追加した

    前:IRKitのファームウェアを改造してセンサー読めるようにする /tempeにHTTP-GETすると温度が返ってくるファームウェア https://github.com/shokai/irkit-device/compare/master…tempe_sensor センサーはLM35DZを使っている。電圧から摂氏温度に変換してjsonで返す。今23度だってわかる。 新しいrouteを追加するのに、GS_MAX_ROUTESの数を増やさねばならない事にしばらく気づかなかった。 analog 0〜4を全部読んで、jsonで返してくるファームウェア /sensorsにHTTP-GETするとアナログピン全部読んで返す。 https://github.com/shokai/irkit-device/compare/master…sensors_json なお現在のIRKitだと、この2つを同時に実

    橋本商会 » IRKitのファームウェアを改造して温度センサーを追加した
  • 橋本商会 » IRKitのブートローダーを破壊したので直した

    ファームウェアを改造していたら、ブートローダーを壊した。 その結果、新しいファームウェアを書き込めなくなり、文鎮と化した。 AVRライターかArduinoがあれば直せる。 壊した原因 プログラムが28672byteを超えたため、Arduino互換機であるIRKitのブートローダー領域を上書きした。Arduinoはブートローダーと実行プログラムが同じプログラムメモリ上に共存しているのだ。 普通のArduino IDEを使っていれば書き込み前にサイズチェックして、こういう事にはならないのだが、inoだと考慮てくれないらしい。 githubでissueを立てたら助けてもらえた。 ファームウェアを書き換えられなくなってしまった · Issue #1 · irkit/device 28672 byte以上書き込むとbootloader領域破壊する 書き込む前に.hexのサイズをチェックする % /A

    橋本商会 » IRKitのブートローダーを破壊したので直した
  • 橋本商会 » irkitコマンドで家の外からIRKitを操作する

    前:赤外線学習リモコンIRKitrubygemを作った irkit gemに付属のirkitコマンドは、Internet APIも使えるので家の外からIRKitを操作できます。 解説しておく。 インストール % gem install irkit % irkit --help デバイスをirkitコマンドに登録する 最初のこの設定だけはIRKitと同じLANの中にいなければならない。 % irkit -device:add デバイス名 なお2つ以上IRKitを持っている場合は、-addressでIPアドレスを指定すればそれぞれ保存できる。 % irkit -device:add デバイス名 -address 192.168.1.123 登録されているか確認 デバイスリストと赤外線データのリストが見れる。LAN内のIRKitもbonjourで探す。 % irkit -list なおこのデー

    橋本商会 » irkitコマンドで家の外からIRKitを操作する
  • 橋本商会 » 赤外線学習リモコンIRKitのrubygemを作った

    IRKitはよく「iOSから操作できる赤外線リモコン」と説明されるけど、そのAPIはHTTPなのでiOS以外からももちろん使えます。 というわけでRubyから使いやすいようにした。 ソースコードはgithubにある。不具合等はissueかtwitterにお願いします。 irkitコマンドという便利ツールも入れておいた。 bonjourでLAN内のIRKitを発見する機能や、赤外線データのgetとpost(と保存)、家のLANの外からIRKitを操作するInternet API関連が実装されているので プログラムを書かなくてもirkit gemをインストールすればすぐIRKitが使える。 なんでこういうツールが付いているかというと、デバイス系はコマンド一発で全部実行できるテストコードが書きにくい部分がかなりあって、しょうがないから各機能をテストしやすい実行可能コマンドを作るぐらいしかない。

    橋本商会 » 赤外線学習リモコンIRKitのrubygemを作った
  • 橋本商会 » 895円の超小型Ardunoクローン DigiSparkを買った

    とにかく小さくて安いのに、ほぼArduinoとして使える。 そしてズボンのコインポケットに入れて持ち歩けるので電車内hackに便利。 Digispark購入ページ DigiSpark wiki ソースコードはここに置いておいた。 デジタル出力・アナログ出力・アナログ入力・Mac上のRubyとのUSB通信を試した。 https://github.com/shokai/digispark-study 「webサービスと連動したちょっとしたハードウェア」にはArduinoはオーバースペックだと思うので、DigiSparkちょうどいいと思う。 普通のArduinoとの違い 詳しくは digispark:tutorials:basics [Digistump Wiki] 多少制限はある。 IOピン数が6PCとUSB通信する場合は4しか無い プログラムを書き込めるメモリ領域が6Kbyteしかない

    橋本商会 » 895円の超小型Ardunoクローン DigiSparkを買った