タグ

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

  • 橋本商会 » Rails + Physical Computingする時の注意点

    最近まわりでRailsが流行っているんだけど、なんだか2ケタ以上の人が「webサービスと何か(?)をするにはRuby on Railsを使えば全部できる」という盛大な勘違いを起こしているので説明用資料を書いておく。Railsはそんなに万能ではないです。 Railsはwebアプリケーションを簡単に作れるMVCフレームワークで、HTTPを通してwebブラウザから使う事を前提にしている。マイコンとProcessingを接続してガジェットを作るのとは別の常識があります。 ■Railsが向いていること Railsは、おおざっぱに列挙するとこんなアプリケーションに向いています(無理すれば変な事も可能だけど後述) アクセスしたURLに応じて異なるHTMLやXMLが表示される 後ろにSQLなどのデータベースがあって、データを溜めたり取り出したりする ユーザ登録してログイン/ログアウトできて、同じURLでも

    fjwr38
    fjwr38 2015/06/30
  • 橋本商会 » RubyとArduinoとTwitterで天気予報を見る

    こういうのを数年おきに、その時の近代的な実装で作りなおしてみるとプログラミング環境の進歩がわかる。 1. 今日傘が必要かどうか表示してくれるてるてる坊主 晴れの時 雨が降る可能性がある時 ウチでは15分おきにその日の天気予報を取得して表示している。うちテレビ無いけどこれのお陰で傘を忘れたりしなくなった。 プログラムはものすごい単純になっている。Rubyのみ。 Macで開発してRaspberry Piにデプロイした。Ruby動くUNIX系ならどこでも動くはず。 require 'rubygems' require 'arduino_firmata' require 'weather_jp' arduino = ArduinoFirmata.connect weather = WeatherJp.get '東京' if weather.today.rain > 30 # 降水確率30%以上 a

    橋本商会 » RubyとArduinoとTwitterで天気予報を見る
    fjwr38
    fjwr38 2014/12/03
  • 橋本商会 » ruby-opencvをインストールして顔認識した

    ruby-opencvは5年ぐらい前に停止したopencvというgemを、ser1zwさんという方がOpenCV2.x系に対応させ、Ruby2.0に対応させ、と着実にアップデートしているプロジェクト。 先日これをみて、そういえば良いプロジェクトなのに全く試してなかったと思い出してまずインストールした。 ruby-opencvの進捗の話(2014年2月版) – ser1zw's blog 試しに作ったものはここに置いてある https://github.com/shokai/ruby-opencv-study 感想 まだ大した事試してないけど、感想としては、ドキュメントが無い。でもOpenCV体のドキュメント見てそのままRubyの常識にそって書き直したらふつうに動くのでドキュメントなくてもいいかなと思った。 Rubyだとそのオブジェクトが持っているメソッド一覧はObject#methods

    橋本商会 » ruby-opencvをインストールして顔認識した
  • 橋本商会 » 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

  • 橋本商会 » 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を連続自動再生するアプリ作った
  • 橋本商会 » Rackミドルウェアの作り方を勉強した

    今スイスにいる。 行きの飛行機の中での勉強用にこのページを保存しておいて、Rack middlewareの作り方を学んだ。 第25回 Rackとは何か(3)ミドルウェアのすすめ:Ruby Freaks Lounge|gihyo.jp … 技術評論社 というのもSinatra::RocketIOをRack::RocketIOにしたいからなんだけど、Rack Hijack APIがよくわからない。(hijackについてはそのうち書く) ソースコードはgithubに全部置いてある。 github.com/shokai/rack-plugin-study Sinatra/Rails/Padrino等のRuby製webアプリケーションフレームワークと、 webrick/thin/mongrel/unicorn等などのRuby製webサーバーを接続するしくみがRackです。 Webアプリフレームワーク

    橋本商会 » Rackミドルウェアの作り方を勉強した
    fjwr38
    fjwr38 2014/01/05
    分かりやすい
  • 橋本商会 » NodeにLindaを実装した

    艦これの冬のイベントやりながらcoffee書いてたらLindaができた。おかげで三隈大和大鳳以外全部集まったけどコミケに行けなかった。 前にRubyで実装したこれ Ruby上に並列言語拡張Lindaを実装してWebSocket/Cometで使えるようにした を Node+Socket.IOで実装しなおした。 https://npmjs.org/package/linda-socket.io RubyよりNode+coffeeの方が並列処理書きやすい。特に体よりもテスト、coffee+asyncにだいぶ助けられた。あとなんだかんだでEventMachineに気を使って書くのが疲れる。 Node版はタプルに配列が使えないようにした。全部Object(hash)にした。流れているデータを読んで意味がわかりにくいのと、request-response形式で返すタイプの時にマッチングがしにくいため

    fjwr38
    fjwr38 2014/01/05
  • 橋本商会 » crontabでrbenvのrubyを使う

    関連 crontabでRVMのRubyを使う crontabの頭で環境変数PATHに ~/.rbenv/shims を入れておけばおk うちではこんなふうになっている SHELL=/usr/local/bin/zsh HOME=/Users/sho PATH=/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/$HOME/bin:$PATH PATH=$HOME/.rbenv/shims:$PATH ## この下にcrontabが書かれている ちゃんと切り替えれているか確認 ruby -vでバージョンがでるので、 * * * * * ruby -v > $HOME/ruby_version と書いておけばホームディレクトリにruby_versionというファイルが毎分書き出される これがrbenvでglobal設定したrubyになっているか

  • 橋本商会 » 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初級入門という勉強会やりました
  • 橋本商会 » fluentdにsyslog-ngのログファイルを全部流し込みたい

    バイト先(大学)で、syslog-ngに流れてくるログをfluentdに流し込もう事になった。最終的にMongoDBに入れる。 windows/mac/unix系など色々なOSが入り乱れた環境なので、各ホストからはsyslogで飛ばすのがいいらしい。んで、最終的にモダーンなfluentdやmongodbに通して使おうという感じ。 (特にnt-syslogがすごいよくできてて、windowsなのにちゃんとutf-8で送ってくれるしえらい) fluentdのプラグインを作り始めたけどまだ完成してない。なんか間違ってるとかこうした方がいいという情報あったら教えてください。 (ちなみにgem search fluent –remote | grep tail で見つかる物は全部ソース読んだり試したけど要求仕様を満たすgemは無かったです) syslogをfluentdに流し込む fluentdのt

  • 橋本商会 » LAN内の全てのホストのIPアドレスとMacアドレスを取得する

    1から254までpingうって反応あったホストにarpしてMacアドレスを取得した。 昔LAN内の全ホストにgrowl送りつけたりしていた時と同じノリだ Raspberry PiがDHCPでどこに行ってしまったかもわかるし、定期的に実行すれば端末が(つまり人が)増えたり減ったりするのもわかって楽しい。 実行にはparallel gemが必要 gem install parallel ruby macaddrs.rb 192.168.1.1

    橋本商会 » LAN内の全てのホストのIPアドレスとMacアドレスを取得する
  • 橋本商会 » 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

  • 橋本商会 » PhantomJSでwebページ内のJavaScriptを読む

    Webページをスクレイピングしてる時、HTMLじゃなくてJavaScriptの変数をのぞきたい事が稀によくある。 インストール brew install phantomjs document.titleを取得 page_title.js var url = phantom.args[0] || 'http://shokai.org'; page = new WebPage(); page.open(url, function(stat){ if(!stat){ phantom.exit(); } else{ var title = page.evaluate(function(){ return document.title; }); console.log(title); phantom.exit(); } }); 実行 phantomjs page_title.js http://go

    橋本商会 » PhantomJSでwebページ内のJavaScriptを読む
  • 橋本商会 » Eclipseで作ったAndroidプロジェクトをantでbuildする

    ふつうに最初からEclipseで開発したプロジェクトのディレクトリ内で、 android update project --path `pwd` してから ant debug adb install -r bin/YourApp.apk でインストールできる。 android updateでantビルドに必要なbuild.xmlとlocal.propertiesが生成される。 local.propertiesにはandroid sdkの絶対pathが含まれているので、この2つはgitにcommitしない方が良いみたいだ

  • 橋本商会 » みなとみらいのバイクシェアリングBayBikeの出来が良い

    6月ごろからたまに使ってる。 良いサービスなのに、ネット上に感想が無さすぎてもったいないので感想を書いておく。 baybikeは横浜市とdocomoが行なっている社会実験で、みなとみらいに20箇所以上設置された無人自転車スタンドから自転車を借りられる。 借りた自転車はどの自転車スタンドに返しても良く、主要な駅や施設の周りに十分な数があるので、電車と併用して使いやすい。 申し込んでから4日ぐらいでカードキーが届いた。おサイフケータイなら申し込んで即使えると思う。 AndroidアプリとGoogleMap自転車の空き状況がチェックできるので、行ってみたら乗れないという事もない。 良いところ 安い。 最初の1時間が105円で、それから30分超過毎に105円かかる。 自転車を取り出すのにはおサイフケータイか会員登録したカードキーが必要。俺はカードキーを使ってる。 自転車スタンドのカードリーダーに

    橋本商会 » みなとみらいのバイクシェアリングBayBikeの出来が良い
  • 橋本商会 » 料理をはじめて1年経った

    ちょうど料理し始めて1年経過したので、今までに考えた事・良かったことを書きなぐっておく。 基的に研究したり新しいプログラム言語を勉強したりするのと同じ方法でやってた。 (画像はイメージです) 最初に作りたいものを書き出す 自分がべたいものを書き出す。 最初に作りたい料理を30個ぐらい、現時点で作れそうにない物も書きだした。 レシピを並べてみたら共通の部分があったので、なるべく簡単かつ発展性がありそうな所から攻める事にした。 俺の場合、主にこの2つから行く事になった。 1. ペペロンチーノがおいしく作れれば、そこからトマトパスタとか色々派生できる。具は少し手を加えればパスタ以外にも使える。 2. 肉じゃが・カレー・ポトフ・シチューあたりは途中までの工程が似てる。 このへんから攻めた。まず最初はべたいものを書きだして効率良さそうな所を見つけると良いと思う。 あとは和の醤油味の煮物系で、

    橋本商会 » 料理をはじめて1年経った
    fjwr38
    fjwr38 2012/09/01
    バリエーションすごい
  • 橋本商会 » Mobage運用技術勉強会に行ってきた

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

  • 橋本商会 » MacMiniにVirtualBoxでUbuntu12.04インストールした

    家のネットブックのUbuntuマシン(作ったgemLinuxで動くか確かめたりカメラ/マイク/シリアルポートを使うための実験用)を廃止してMacMiniのVirtualBox内で運用することにした。 GUI付きでインストールするが、GUIはSkype Botのためにしか使わない。基的にMacMini側からsshでログインしてCUIで操作する。 ■Ubuntuインストール VirtualBox Mac版 Ubuntu12.04 Destkop 日語版 32bit isoディスクイメージ それぞれダウンロードしておく。 VirtualBoxをインストールして、起動。 左上の「新規」から仮想ディスクイメージをHDD16GB/メモリ512MBで作った。 「起動」ボタンを押す。 何も入ってないカラのイメージなので、さっきダウンロードしたUbuntuのイメージファイルを選ぶ。 画面の指示に従って

    橋本商会 » MacMiniにVirtualBoxでUbuntu12.04インストールした
    fjwr38
    fjwr38 2012/05/29
    vmの上のubuntu設定
  • 橋本商会 » SinatraっぽいWAFを作る、46行で

    “Tamago”というWeb Application Frameworkを作った。 https://github.com/shokai/tamagoに置いてある。 昨日学校に行く前にメシをいながらHerokuやSqaleやらPaaSについて調べていたら、SinatraやRailsではなくRackを直接使ってPaaSで動かしている人たちが何人かいた。 sqale使ってみた – komagataとか。 で、電車の中でふとWAFを作ってみたらどうかと思って作ってみた。 最終的に学校に着く頃にこんな風に書けるのができてた。 GETやらPOSTで指定したパスへのアクセスを受け取って、Hamlのテンプレートが使えたりするDSLが使える。 get '/' do haml :index end post '/' do Time.now.to_s end get '/env' do ENV.keys.so

    橋本商会 » SinatraっぽいWAFを作る、46行で
  • 橋本商会 » いかにしておっぱい画像をダウンロードするか〜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

    fjwr38
    fjwr38 2012/03/01
    rubyクローラ