タグ

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

  • 橋本商会 » Wikiを作ったのでblog移転する、あとYAPC2016でトークする

    wikiを作った semiraraというwikiを作った。blogとして使えるgyazz(アウトラインエディタ的なwiki)を目指したもので、既にwordpressより書きやすいので今後はこっちに書いていく。 http://wiki.shokai.org/shokai Reduxとkoa v2とasync-awaitとサーバーサイドレンダリングの練習がしたかったので色々やった。 こんな感じでカーソルのある所だけwiki記法がむき出しになる。 くわしい解説 semirara: このwikiのこと – shokai しばらくしたらこのblogのfeedも転送する 2日目(7/3 日曜日)の14時からwikiについて喋らせてもらう。 トーク概要 ReactでWikiを自作して運用している話 · Issue #94 · hachiojipm/yapcasia-8oji-2016mid-timeta

    橋本商会 » Wikiを作ったのでblog移転する、あとYAPC2016でトークする
  • 橋本商会 » 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ページのスクリーンショットを撮る
  • 橋本商会 » 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なチャットを作った
  • 橋本商会 » exiftoolでmp4のメタデータを編集する

    exiftool 9.31だとメタデータ見るだけしかできなかったけど、9.76にアップデートしたら書き換えもできるようになってた。 exiftoolのサイトにもR/W可能って書いてある % brew update % brew unlink exiftool % brew install exiftool % exiftool video.mp4 '-title=これはまじでやばい' mp4のメタデータはexiftoolで読めることからもexifを使っているのだ、とてっきり思っていたけど、XMP(extensible metadata platform)というXML形式を使っているらしい。 それの読み書きもサポートしているexiftoolってもはやexifでもなんでもないなと思った

  • 橋本商会 » HerokuのSinatraにバックグラウンドワーカーを詰め込んで節約

    Webアプリと同じプロセスにworker入れてお金節約できる。 Webアプリは “リクエスト来る→サーバーで処理→レスポンス返す” というのを繰り返すわけだが、サーバーでの処理に時間がかかる場合にそこを別のプロセスに任せて、先にレスポンスを返しておいて、あとで結果は取りに来てよ、という実装をする事がある。 時間がかかる処理は2つに大別できる。 動画をエンコードするとか。CPU負荷が高くて時間がかかるのでWebサーバーとは別の場所で動かしたい Twitter APIを10回ぐらい使った結果をまとめて返すとか。CPU負荷は低いけどIO待ちが長い 2の方について、HerokuRuby環境で安く上げる方法をまとめる。 手法 HerokuのcedarスタックでRuby使う時はwebサーバーとしてThinが起動する。 ThinはEventMachineの中で動いてるので、EM::defer等が使え

  • 橋本商会 » FeedlyでRSS購読するbookmarklet

    インターネット検索すると、DOMの中からRSSを探してfeedlyで開くブックマークレットしか見つからなくて、ちゃんと発見できなかったり複数のfeedが見つかった時の挙動が気に入らなかったので作りなおした。 [Feedly Subscribe] feedlyにはfeedを探すAPIがあるので、それにURL渡してるだけ。

  • 橋本商会 » node-webkitでNHK Newsを連続自動再生するアプリ作った

    あまりにも世情にうといので作った。 NHKRSSを定期的にチェックして、新着ニュースの動画を連続自動再生する。 とてもテレビっぽい。おかげで4日後にオリンピックが開催されるという事を知れた。 ソースコード https://github.com/shokai/nhk-news-app zipでダウンロード https://github.com/shokai/nhk-news-app/releases node-webkitはネイティブアプリ作成のためにwebkitが改造されたwebブラウザで、HTML/JavaScript/CSSが実行できるだけでなくnode.jsのAPIもそのまま呼び出せる。 つまりjQueryでDOM操作すると同時にnodeのライブラリを使うような処理が、同じプログラムファイルにまとめて書ける。変にブリッジを書く事なくいつものnodeのように require(‘モジュ

    橋本商会 » node-webkitでNHK Newsを連続自動再生するアプリ作った
  • 橋本商会 » 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化した
  • 橋本商会 » 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単体で使うと、綺麗なアプリケーションを書くにはその上に(フル機能ではないにしても

  • 橋本商会 » 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を買った
  • 橋本商会 » Lindaによるブラウザ上での分散処理の例

    いわゆる分散処理の例を作ってあってsinatra-rocketio-lindaのsampleの中に入れてあったんだけど、blogに書くのを忘れていたので書きます。 センサーのデータを流して受け取る、いわゆる「pub-sub」的な使い方の他にも、Hadoopがやっているようなタスク分散が簡単に書けるよという例です。 実行環境 http://hello-linda.shokai.org ソースコード https://github.com/shokai/linda-hello-world というのも昨日wise9さんに取り上げていただいて、そういえば全然サンプルコードとか整備・整理してない事を思い出したので書こうと思った。 wise9 › 30分で試せる分散並列プログラミング Linda (起動編) wise9 › 30分で試せる分散並列プログラミング Linda (PC遠隔操作編) PC遠隔操

    橋本商会 » Lindaによるブラウザ上での分散処理の例
  • 橋本商会 » Ruby書くならBundler使え

    Rubyでプログラム書くにあたって、bundlerを使わないプログラムは1年ぐらい経つと動かなくなってる事が多々あって、bundlerマジ重要なのと ぐぐってもあまりbundlerの利点や説明がまとまってる記事がなかったので 研究室のwikiに書いた記事を転載しておく。 Bundlerとは Bundler: The best way to manage a Ruby application's gems プロジェクト内で使うRubygemsを管理するしくみ。 プロジェクトの一番上のディレクトリに「Gemfile」というテキストファイルを置き、その中にgemの名前(と必要あればバージョンも)書く。 % bundle install というコマンドで、gemが一括インストールできる プログラム内で require 'bundler' Bundler.require と書くと、gemが一括req

  • 橋本商会 » Ruby初級入門という勉強会やりました

    まず全員Ruby2.0.0をインストールさせつつ、俺がRubyの色々なことを紹介したり、ライブコーディングした。 今日の資料です Rubyそこそこ使ったことある人と全く使ったこと無い人が半々だった。 使ったことある人は前半がためになったとのこと。 ない人は後半のArrayやHashにsortやuniqやreverseなどをチェーンしていったり、mixやmaxやfindなど痒い所に手がとどくの良かったようだ。 スライドを前日からtwitterで公開していたら、@shigeyas先生からgem紹介にpryとawesome_printがあったほうがいいのでは、というツッコミがあって追加した。 「gemの使い方を調べる」のところでpryとawesome_printを使って色々調べるのも追加した。 教育体験のせいで1時間以上のスライドでも3時間ぐらいあれば作れるようになってしまった。 実演 最後にぶ

    橋本商会 » Ruby初級入門という勉強会やりました
  • 橋本商会 » ArduinoとRubyで赤外線リモコン作ってWebから操作できるようにした

    (追記)色々改良された → ArduinoとRubyで赤外線リモコン をgemにした ————- 帰宅前にスマホからクーラーをつけれるようにした。Arduinoと合計150円ぐらいの部品と、このRubyで書いたアプリ https://github.com/shokai/arduino_ir_remote だけで使える。 ソフトウェア部分はまだアップデートされるだろうけど、(rubygemにするとか)ハードウェアはもうこれ以上変更しないので是非自作してお試しください。 動かなかったり欠陥があったら、githubのissueかtwitterで@shokaiにどうぞ。 動いている証拠動画 実際に使いたいのはエアコンだけど、エアコンは地味なのでテレビでやってみた。 研究室にあるパナソニックとシャープのテレビで試したら両方とも動いた。 パナソニックテレビから学習した赤外線データはgistに貼った。

    橋本商会 » ArduinoとRubyで赤外線リモコン作ってWebから操作できるようにした
  • 橋本商会 » 別ドメインのiframeの中身をフレーム外からスクロール

    諸事情あって、iframeの中身をフレーム外側のページからJavaScriptでスクロールできるのを作った。 ふつうは別ドメインのページをiframeに読み込むとスクロールできないんだけど、(marginに負の値を入れたりして)iframeごと上下左右に動かしたり、iframeの外側にbox要素2つ付けてはみだした部分を表示しないようにcssでなんか色々やったりしたらそれらしい物ができた。 デモ XFrame.js shokai/xframe.js · GitHub 使い方は簡単である js読み込んで <script src="xframe.js"></script> XFrameを出したい箱を作って <div id="tv"></div> 読み込む var xframe = new XFrame("div#tv"); xframe.load("http://shokai.org"); あ

  • 橋本商会 » Sinatra RocketIOというプラグイン作った、これでWebSocketとCometが使える

    nodeのSocket.ioっぽい物のRuby版を作った。 https://github.com/shokai/sinatra-rocketio 依存 EventMachineが有効なWebサーバー(thinとか)と、jQueryが必要。 Rubyは1.8.7〜2.0.0まで動く。 Sinatraで使う インストール gem install sinatra-rocketio ブラウザとか回線に応じてWebSocketとCometの使える方が自動的に選ばれる。 切断されても定期的に再接続を試みるようになってる。 sinatraに読みこむだけで使える。sinatraのプロセス内にwebsocketサーバーも組み込まれる。 require 'sinatra' require 'sinatra/rocketio' modular styleではclass内でregisterすればok class

  • 橋本商会 » Mobage運用技術勉強会に行ってきた

    Web公開制限が無いらしいので、殴り書いたメモを貼り付けておく。 謎のアルゴリズムで集められたはてなユーザーに、モバゲーの運用技術を惜しげもなく教える勉強会に行ってきた。 インフラもPerlも全然わかんないんだけど何故誘われたのか謎。 モバゲーすごい・・・台風激しかったけど行ってきて良かった。特にモニタリング手法が面白くて、一瞬だけ全プロセスにデバッガをアタッチして待機状態のプロセス数を調べるとか、DBバックアップサーバーの遅延を監視してるとSlaveへの遅延発生が予測できるとか。頭いい。 たぶんMobageを支える技術に書いてある内容の一部だと思われるので、も買ってみる。 あと社で閉店前に「モバゲ〜」って歌が流れててわかめ高校みたいで面白かった。 2012年6月19日 @ DeNA 渋谷ヒカリエの21階 台風きてるからヤバかったらすぐ帰りましょう インフラ部門紹介(小野氏) 世界展開

  • 橋本商会 » いかにしておっぱい画像をダウンロードするか〜2012 をRubyで書いた

    元ネタ:いかにしておっぱい画像をダウンロードするか〜2012 – ゆーすけべー日記 昔、yusukebeさんとは大学で同じ研究室だった。 俺がまともにプログラムを書けるようになったのは、研究室に入った時に新入生向けのyusukebeサブゼミに入って、Flashで実装されたRSSリーダーのソースコードを見せてもらったあたりがきっかけだった気がする。 俺も高校生が(Rubyで)プログラミングをはじめるきっかけになりたいので、Ruby版を作ってみました。 Rubyもこういうwebクローラーを作るのに向いている言語だし、最近のMacなんかには最初からインストールされているので試してみると良いよ。 まずjson gemをインストールする。 sudo gem install json oppai.rb #!/usr/bin/env ruby require 'rubygems' require 'op

  • 橋本商会 » Mac OSXにおける近代的なAVRマイコン開発環境

    久しぶりにAtmel AVRマイコンを直に使うプロジェクトをやるので、環境を整えてみた。@rain_yukizoraと@qt_fbが色々教えてくれた。 これが最強の組み合わせだ!! Mac OSX Snow Leopard Cross Pack for AVRに入っているavr-gcc macportsでインストールしたavrdude aitendoで売ってるusbasp 秋月やマルツで売っているATMega168か168pか328p この記事では、MacでのAVRマイコン開発環境の構築と、ATMega168pでLEDを1秒間隔で点滅させるプログラムを作成して、マイコンに書き込んで動作させる所までを解説します。 Macbook Air + usbasp + ATMega168pで開発しているところ ■Cross Pack for AVRをインストールする CrossPack – A Dev

    橋本商会 » Mac OSXにおける近代的なAVRマイコン開発環境