タグ

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

  • 橋本商会 » 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なチャットを作った
  • 橋本商会 » Edisonに最新のNode.jsを入れた

    Raspberry Piにnode.jsインストール と同じ方法 Edisonのopkgにあるnodeが0.12とかで古すぎるので、自分で5.5を入れた。 CPUはAtomなので、linux-x86のビルド済みバイナリをダウンロードしてくればすぐ使える http://nodejs.org/dist/ % wget http://nodejs.org/dist/v5.5.0/node-v5.5.0-linux-x86.tar.gz % tar -zxvf node-v5.5.0-linux-x86.tar.gz % mv node-v5.5.0-linux-x86 ~/node 最初から入っている/usr/bin/nodeを消す方法がよくわからなかったのでホームディレクトリに置いてしまった PATHを前の方に通した .bashrc export PATH=$HOME/node/bin:$PA

    橋本商会 » Edisonに最新のNode.jsを入れた
    mactkg
    mactkg 2016/02/04
    patchとか結構当ててたから入らないもんだと思ってたけど普通にいけた野知らなかった
  • 橋本商会 » lernaでmonorepoした

    monorepoという1つのリポジトリに複数プロジェクトを入れる開発手法がある。 この記事で知った。 単一リポジトリで複数package|projectを管理することをmonorepoというそう – なっく日報 そういえばRocketIOやnode-lindaを作っていた時は自作のライブラリ/パッケージが3,4層に積み上がっていて、単一パッケージ内で生じるバグはテストを書けば潰せるけどパッケージ間で起こるバグは非常に解決が難しかった。イベント発火のタイミングによるものとか。パッケージをまたがったテストをどこに書くのかという問題がある。 複数パッケージで起こったバグはどっちのissueに書けばいいのかわからないし、両方でブランチ切って同時に修正してリリースしたりとか超面倒だった。 バージョン毎の依存関係も、serverの1.3に対応してるのはclientの1.5で・・とか依存関係を書くのがや

    橋本商会 » lernaでmonorepoした
    mactkg
    mactkg 2016/01/29
    monorepoおもしろい
  • 橋本商会 » PlatformIOでArduino開発する

    PlatformIOというArduino/mbed/MSP430などに対応したパッケージマネージャ兼ビルドツールをセットアップした。 http://platformio.org https://github.com/platformio/platformio 体はPythonで書かれている。 たしか半年ほど前に気づいたんだけど、githubのArduino関係のリポジトリにlibrary.jsonというファイルを追加するプルリクが大量に送られていた。何だこりゃと思ったらplatformioの中の人が新しいパッケージマネージャ作ったから〜と送りまくっていた。library.jsonはNode.jsのpackage.jsonを参考にしているらしくてだいたい同じ仕様になっている。 地道な努力のおかげかすでに260個もライブラリが登録されている。 そもそもArduinoにはパッケージマネージャな

    mactkg
    mactkg 2015/08/14
    便利っぽい気がする
  • 橋本商会 » Enterキー押す毎にJXAでiTerm2の背景を変える

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

    橋本商会 » Enterキー押す毎にJXAでiTerm2の背景を変える
    mactkg
    mactkg 2015/06/30
    おもろい
  • 橋本商会 » Edisonをsshfsでマウントする

    組み込みLinux上でエディタを起動するとCPUもメモリもつらい事になる。 EdisonのディスクをMacでマウントして、Macで起動したemacsでプログラムを書く。実行はEdisonにログインしておこなう。 sshfsのインストール % brew install osxfuse sshfs osxfuseのインストールログに表示される通り設定する % sudo /bin/cp -RfX /usr/local/opt/osxfuse/Library/Filesystems/osxfusefs.fs /Library/Filesystems/ % sudo chmod +s /Library/Filesystems/osxfusefs.fs/Support/load_osxfusefs Edisonへのsshログイン設定の設定をしたうえで % mkdir /Volumes/edison %

    mactkg
    mactkg 2015/06/19
    メッチャ便利
  • 橋本商会 » 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をビルド
    mactkg
    mactkg 2015/05/02
    “watchify”
  • 橋本商会 » 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した
  • 橋本商会 » HubotでWiKiの更新通知

    何度もメールをやりとりして結果をwiki等にまとめるのではなく、wikiに書いて適当に通知が飛ぶようになっていると便利だと思う。 実際便利なので研究室ではMLにメール月2,3通しか来てない。情報は全部ちゃんとしたフォーマットのストック情報になってて、それが適当にフロー情報として切りだされて流れてくるという感じで、自動的でよい。 gyazzをnodeで書き直してて、ページの更新がJSONのwebhookで通知されるようになった。「.通知」というページを作ってURLを改行区切りで書いておくとwebhookしてくる。 webhookをhubotで受信して、redisに貯めて前回とのdiffをslackに流すようにした。あまり同じページをまとめて通知しても細かすぎるので、webhookを受けてから1分間はデバウンシングする gyazz-notify.coffee # Description: #

    mactkg
    mactkg 2014/09/15
    参考にしたい
  • 橋本商会 » どうやって部品を選ぶかについての話

    いい話だった どうやって部品を選ぶかについての話 | スイッチサイエンス マガジン 俺はスイッチサイエンスの人ほど格的に実装しないけど、部品(ソフトウェアも含めて)の選び方について便乗して書いてみる。 IRKitBlendMicro、DigiSpark、Jawbone Up24もこのへんを概ねクリアしてたので安心して買えた。 生きてる プロジェクトが死んでる可能性がある。リポジトリの最終更新日を確認するべき。 テストされてる ハードウェアだとテストコード書くの難しいし、テスト用の治具とか必要だったりするけど、それでもテストコードだけでも同梱されてると安心できる。ちゃんとテストしてるんだなと思えるしテスト漏れてそうな所とかもチェックできる。 ソフトウェアのライブラリの場合はテスト読んで、手元でテスト走らせてみる。 縛られてない ライセンスの問題があるかもしれない。Web APIの場合、無

    mactkg
    mactkg 2014/07/01
    すごくいいエントリ
  • 橋本商会 » Lindaで離れた部屋の人々の活動を云々してリア充化する

    Ruby上に並列言語拡張Lindaを実装してWebSocket/Cometで使えるようにした の続き。 諸事情あって研究室がSFC内で3箇所に分散している。 しかし分散していても学に誘ったりとかしたい。 その為には – 別の部屋にいる気配を感じる手段 – メシに誘う手段 が必要なので、Lindaで作った。 shokai/linda-light-notify · GitHub デルタ棟の部屋の電灯がon/offされたら、他の部屋のMacが「デルタ棟で電気が点きました」「消えました」と喋ったり、研究室のskype chatやtwitterに投稿したりする。 もちろん他の部屋で電気ついたり消えたりしたらデルタ棟にも通知される。 プログラムはこれ1つを動かしておくだけで、全部屋の装置が連携する。 RocketIO上に実装されたLindaは分散並列処理のための共有メモリであり、そこには各部屋に設置

    橋本商会 » Lindaで離れた部屋の人々の活動を云々してリア充化する
  • 橋本商会 » Ruby上に並列言語拡張Lindaを実装してWebSocket/Cometで使えるようにした

    Lindaは1990年ごろに出来た言語。 タプルスペースという共有メモリ空間でタプル(オブジェクト)を共有して、in/out/rd/inp/rdpという命令で操作する事で大抵の並列処理が記述できるという物。 仕様は単純なんだけどセマフォなどのロック機構やジョブキューも超簡単に記述できる。いわば分散並列処理のための最小セット。 既にCやJavaの実装があり、Rubyでも咳さんのRindaがある。 で、今回作ったLinda gemではタプルのマッチング判定とオンメモリのタプルスペースの読み書き機能と、それぞれのテストコードしか実装されていない。 複数のプロセスからタプルスペースに接続して読み書きする機能は実装されていない。 マッチングは配列タプルは要素の前方一致、Hashタプルは自身のKeyとValueが相手に全部含まれていればtrueとしている。 Linda RocketIO Linda g

    mactkg
    mactkg 2013/09/20
  • 橋本商会 » プログラムの写経

    プログラミング初心者が写経する時に気をつけると良い事を4つ説明します。 画像はイメージです プログラムを勉強する時に、写経しろ(すでに完成しているプログラムをから書き写せ)とか言われるが、ちょっと意識するとだいぶ違うと思う 1. 外から書け 例えば、1からnまでの数字を全部表示するプログラムがあるとする。 def run(max) 1.upto(max).each do |i| puts i end end run(10) これを写経する時、上から下に1行目から順に書くのではなくて、まず def run(max) end いちばん外側を書いて def run(max) 1.upto(max).each do |i| end end 中を書いて def run(max) 1.upto(max).each do |i| puts i end end こうなる。 上から書かないのが重要。プログ

    橋本商会 » プログラムの写経
  • 1