slackでhubotに頼むとドアあけてくれるようになった。hubotはじめて使った。 増井研はインドア派なので、ハローワールドするためにドアを開ける。 あと部屋を指定してスピーカーからmacのsayが流せる。 iBeaconで位置をはかって、誰が近づいたとか通知される。 試験的に、近づいたらドア勝手に開くようにしてみた。 電気ついたりとか、そういうセンサー値の大きな変化も通知される。 hubotがslackにつながってて、コマンドを待ち受けたりしてる。センサーとか実世界系の操作はnode-lindaに投げてる。 node-lindaの下にはraspberry pi+arduino+センサやサーボモータ色々のセットとか、dockerコンテナとかがたくさんぶら下がってて、色々処理してる。 そのうちくわしく書く羽目になると思う
わからない。 自分以外、だれも使っているのを見たこと無いし、自分が使っているとよくナニソレって聞かれるので書いておく [システム環境設定]→[キーボード]→[キーボードショートカット] 「次のウィンドウを操作対象にする」に適当にさわりやすい所ショートカットキーを設定する。command+spaceにしている。 command+spaceはデフォルトではIMEを順に切り替えるのに割り当てられているが、英数・かなキーがあるのでいらない。USキーボードはおっさんが使えばいい。 どうなるかというと 左上のウィンドウでコード書いている時に、もうひとつのウィンドウに行きたい場合 command+spaceを押すと入れ替わる。 blog書くために複数ブラウザ開いている時なんかにも便利。keynoteやイラレで複数のドキュメント開いている時も便利。chromeと開発パネルを交互に見比べる時も便利。 こんな
ためしに、URLを入れるとaタグのhref属性とxy座標と幅と高さが取れる簡単なアプリを作ってみた。herokuでwebkitが動いててサーバー側でいったんページをレンダリングしてるから、座標とかがわかる。 http://phantom-getlinks.herokuapp.com/ ソースコード https://github.com/shokai/sinatra-heroku-phantomjs readmeに書いてある通りやればローカルでもHerokuでもすぐ動かせるのでcloneしてみるとよい。 PhantomJSでページをレンダリングしてからaタグの座標とか読む PhantomJSはプロセス内にwebブラウザ(webkit)を起動して、しかもその中のJavaScriptにアクセスできる → 橋本商会 » PhantomJSでwebページ内のJavaScriptを読む Phantom
ちょうど料理し始めて1年経過したので、今までに考えた事・良かったことを書きなぐっておく。 基本的に研究したり新しいプログラム言語を勉強したりするのと同じ方法でやってた。 (画像はイメージです) 最初に作りたいものを書き出す 自分が食べたいものを書き出す。 最初に作りたい料理を30個ぐらい、現時点で作れそうにない物も書きだした。 レシピを並べてみたら共通の部分があったので、なるべく簡単かつ発展性がありそうな所から攻める事にした。 俺の場合、主にこの2つから行く事になった。 1. ペペロンチーノがおいしく作れれば、そこからトマトパスタとか色々派生できる。具は少し手を加えればパスタ以外にも使える。 2. 肉じゃが・カレー・ポトフ・シチューあたりは途中までの工程が似てる。 このへんから攻めた。まず最初は食べたいものを書きだして効率良さそうな所を見つけると良いと思う。 あとは和食の醤油味の煮物系で、
チャットに画像のURLが貼られた時に、安全にimgタグを埋め込みたいという議論があったので書いておく。 一番単純な実装だと、 var s = "はろー http://shokai.org.ex/example.jpg てすとてすと"; s.replace(/(https?:\/\/.+)\.(jpe?g|gif|png)/g, "<img src=\"$1.$2\">$1.$2</img>"); のようにすると "はろー <img src="http://shokai.org.ex/example.jpg">http://shokai.org.ex/example.jpg</img> てすとてすと" になるのだが、よく考えると http://tumblr.com/logout#.png みたいなのを貼られるとimgタグが描画された瞬間にログアウトしてしまう。 正規表現がショボいのも悪いけど
レス画像検索No.1/画像会話なら ちくわぶ インストール gem install tiqav 画像を検索、保存 require 'rubygems' require 'tiqav' ## 検索 images = Tiqav.search 'ちくわ' images.each do |img| puts "(id:#{img.id}) #{img.permalink} => #{img.url}" ## 全部保存する img.save(img.filename) puts "saved!! => #{img.filename}" end ## ランダム img = Tiqav.random puts img.url puts img.thumbnail puts img.glitch ## 幸運 puts Tiqav.feeling_lucky 'ちくわ' 最初はスクレイピングで実装した。
プログラミング初心者が写経する時に気をつけると良い事を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 こうなる。 上から書かないのが重要。プログ
Dropboxにチャット機能を付けるとても便利なクライアント「drochan」を開発しました。 共有フォルダに参加している他のメンバーと会話する事ができます。 発言するとこのように通知がでます。 drochanの利点は Dropbox以外のツールが必要ない drochanを使っていないユーザも、Dropbox標準のgrowl通知でチャットを読む事ができる 相手がオフラインでも、メッセージを送ることができる メンバー管理が楽。Dropboxの共有に招待したけどチャットに招待しわすれた、なんて事が無くなる ■使い方 drochanをダウンロードしてpathの通っている場所に置く。 7行目あたりの DIR = "#{ENV['HOME']}/Dropbox/drochan" を自分のDropboxの共有フォルダ名に変更する。(この場合はdrochanというフォルダを共有している) Dropbox
emobileが月1100円安くなってPocketWifiがもらえるプランに契約するとインターネットが半分使えなくなるの続き。 6/6(月)、サポートから電話がかかってきた。 契約内容の説明が不十分だったので、契約は全てリセットする Pocket WiFiの返送用の箱を送るので送り返してほしい との事。 「ssh等が使えないデータプランBから元に戻すのは2,3日中にできるか?」と聞いたところ、「今月中には・・」と言葉を濁された。 プランを戻すけど、戻したタイミングで電話連絡等はしないので、たまにemb1のアクセスポイントに戻して確認してみてほしいと言われた。 まさか、まだ月頭なのに丸一ヶ月元に戻らないとか無いよな〜とか思いつつ、ありがとうございますと言って電話を切る。 その後、3日に1度ぐらいの頻度で、emb2からemb1のアクセスポイントに設定を切り替えてデータプランBから元に戻っている
(この記事の続きはここに書きました) sshが使えなくなって困っています。WWW以外をたくさん使う人は契約しない方が良い。 5月半ば、イーモバイルから電話がかかってきた。 橋本さんは月4980円のプランで契約しているけど、通信料が多くないので3880円のプランに変更しませんか おまけにPocketWifiを1円であげる という内容。 何かデメリットは無いのか聞いたところ、 あと残り3ヶ月だった2年縛りは、2011年6月から24ヶ月にリセットされる イーモバイル解約時の違約金は、残りの月数×900円 とのこと。 まあ損は無さそうなので契約した。 5月末にPocketWifiが届き、6月から3880円のプランになった。するとgithubにpush/pullできなくなっている。 3880円のプランはデータプランBという物で、試してみたらたくさん制限があった。 pingが通らない ほとんどのpor
作った → https://github.com/shokai/iphone-js-console iPhone用のJavaScript shellのようなもの。FirebugやChromeの開発パネルみたいな感じで使う。 chrome拡張やiPhoneシミュレータでiPhone用のwebページの動作は確認できるが、加速度センサやGeo Location APIなんかは実機で動かさないとデバッグできない。 しかしデバッグをしようにも、iPhone上で大量のalertを出すと気が狂ってしまう。iPhoneで実行中のwebページ上の任意のオブジェクトの中身を、Macから覗いたり値を書き換えたり関数を実行したりするツールが必要だったので作った。 なお、Androidのブラウザにはwebsocketが無いのでこのツールは動かない。Androidではlogcatで adb logcat | grep
昨日、男の店主がメルマガで、「急に三田二郎を食べたくなったから昼の営業は休みます」「今神保町で二郎食べたけど、これから用心棒も食べるから夜は19時からになります」と言っていて面白かったから作った。 ■インストール gem install otokonoramen500yen ■使う gem installすると、otokonoramen500yenというコマンドが使えるようになる。 otokonoramen500yen 実行すると、最新のメルマガの日時と本文が表示される。 これでterminalで作業している時に、ブラウザを開かなくても今日営業しているかパッと調べられるので便利です。 ■開発者向け情報 一応gemなので、本文と発行日時を取得できるようにしておいた。 例えば、センサーで取得した自身の健康状態と、男のらーめんの営業状態とを連動させた健康促進システムの開発などへの応用が期待できる
最近、湘南台民のあいだで話題になっている男のらーめんに行ってきた。 男のらーめん500円専用Tumblr 「メルモ」男のらーめん(湘南台)のメルマガです。バックナンバー 調べたら2chが面白くて気になった。 湘南台にできた二郎インスパのインスパのインスパくらいの勘違いなお店。 今藤沢で一番熱くて寒いお店だ!(ドアがないからなw) 味が安定していなくて、ここ半年ぐらいでだんだん美味しくなってきているらしい。 湘南台駅西口のダイソーの前のあたりを線路の方に路地を入る 看板があるのでここを曲がる。二郎っぽい匂いがするのでわかる。 なんか緑色の何屋かわからない店がある メニュー でかい。次の日の昼になっても腹が減らない。男のらーめんで食糧問題が解決する 一緒に行ったひろたは食べきれなくてスープにいろいろ隠して逃げた。
SFCが計画停電グループ1なのでしょっちゅう停電している。 ほぼ1日1回停電するし、停電するとサーバーで長い処理をしている人や3Dプリンタを使っている人はレジュームができなくて大変らしいので簡単にSFCの状況を調べられるツール作った。 gem install sfc_ikiteru して(適宜sudoつける) sfc_ikiteru すると というふうにどれぐらい生きてるかわかる。 物理的に離れてそうなサーバーがいくつか入っているので、これでどの建物が停電しているかもなんとなく察しがつくはず。 もちろん、gemなのでmoduleとしても使える。返り値はtupleで受け取る require 'rubygems' require 'sfc_ikiteru' per, details = SfcIkiteru.ikiteru p per p details perは1.0〜0.0の少数が返ってく
SinatraやRailsは開発は楽だけどデプロイ方法がいろいろあって悩む。 最近はpassengerを使う方法が流行ってるけど、あいにく学校に置いたサーバーでサブドメインが使えないので同一ホスト名でapacheと共存させるしかない。 passengerでもRailsBaseURIだったか?を設定すればサブディレクトリでRack対応アプリを動かせるが、 今回は1年前からRails+mongrelのデプロイに使っているapache2のサブディレクトリをmongrelで起動してるrailsにプロキシする – 橋本詳解と同じ方法でSinatra+Thinをデプロイした。 Railsではmongrel_clusterで複数起動させたrailsにapache2のmod_proxy_balancerでアクセスを割り振ったが、同じ設定でsinatra+thinにも割り振れる。 結果、橋本商会 Twitt
Rubyでwavファイルのフォーマットを読んだり、データチャンクを編集するためのgemを作った。 ベースは以前作ったやつで、ついでにwavファイル操作のサンプルをたくさん追加してrubygems.orgに登録しておいた。 あくまでサーバーで音を合成して返すようなwebサービスで使う事を想定している物で、マイクからの入力をリアルタイムに音声処理するための物ではない。 ■インストール gem install wav-file ■使う フォーマットとデータチャンクを読む require 'rubygems' require 'wav-file' f = open("input.wav") format = WavFile::readFormat(f) dataChunk = WavFile::readDataChunk(f) f.close puts format するとこんな感じにフォーマット
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く