タグ

ブックマーク / blog.masuidrive.jp (57)

  • VagrantでリモートのVirtualboxを実行するvagrant-remoteを作ってみました

    もうちょっとで新しいMacBook 12″が出ますよね。軽いのにRetinaですごく良さそうなのですが、CPUが非力なのが気になります。 私はサーバサイドの開発がメインで開発環境の構築にはvagrantを使っています。vagrantはメモリもCPUうのでMacbookではちょっと厳しそう。特にテストの実行は数十分待たされそうな予感もあり、メインの開発には力不足です。 別にvagrantの実行はローカルホストで行う必要はないので、aws providerを使ってEC2上で動かしてみたりしたのですが、ネットワークやインスタンスコストの問題で常用は躊躇していました。 検索していくと、家のIssuesでもvagrantをリモート実行する議論が行われていました。そこで紹介されているプラグインを試してましたが用途とは合いませんでしたし、バージョンアップの多いvagrantで使い続けられるか心配で

    VagrantでリモートのVirtualboxを実行するvagrant-remoteを作ってみました
  • Ajaxを劇的に簡単にするReact.js

    ここ数年、Javascript界隈でフレームワーク戦争が勃発してきました。クライアント開発の規模も年々大きくなり、jQueryだけでは複雑な画面遷移などを管理しきれなくなってきたのが原因だと思います。 私も昨年までAngularとbackboneを試しましたが、サーバサイドをMVCにしているのに、クライアントでもMVCを作るMVCの2階建ては、やり過ぎなのではないかと思っていました。フレームワークそのもの覚えるまでにも一苦労というのも面倒に感じました。 2014年、海外でブームに火が付いたReact.js そんな中、2014年の後半からFacebook発のReact.jsの採用事例が聞こえてくるようになりました。AirBnBや米Yahoo! Mailなど大手がReact.jsを積極的に採用し出したので気になり、年末年始を使って色々調べてみることにしました。 Rails以来の衝撃 色々試して

    Ajaxを劇的に簡単にするReact.js
    t_43z
    t_43z 2015/03/05
  • チャットで勤怠管理する「みやもとさん」をリリースしました

    トレタで使っている、チャットで勤怠管理する「みやもとさん」をオープンソースでリリースしました。 https://github.com/masuidrive/miyamoto Slackの#timesheetsという部屋で、「おはようございます」と書き込みと出勤が記録され、「お疲れまでした」と書き込むことで退勤となります。「明日はお休みさせて頂きます」と書き込むと、休暇の届け出になります。 チャットで勤怠管理する最大のメリットは、オフィスに居なくても誰がいつ出勤・退勤したのか全員が分かることにあります。出退勤管理アプリは色々出ていますが、営業で直行直帰する人や、リモートワーカーなどは、帰った時間がリアルタイムでわかりにくいという欠点があります。 「みやもとさん」では、チャットでやりとりする事でみんなの見える形で出退勤が記録され「あ、帰る前にあれも!」など、ありがちなコミュニケーションがスムー

    チャットで勤怠管理する「みやもとさん」をリリースしました
    t_43z
    t_43z 2014/10/20
    GoogleAppsScript使えばサーバ不要っていうのはいい気づきだ
  • リビングにIKEAで作る2畳の快適仕事環境

    予定では年内に、AppceleratorのHQのある、Mountain Viewに行く予定だったのですが、いろいろありまして、アメリカへ戻ることなく、しばらく日で腰を据えることになりました。引き続き、日でよろしくお願いします。 そこで東京でマンションを契約して、半年以上アメリカに置きっぱなしだった荷物を取り寄せることにしました。アメリカでの家具や家電はほとんど処分してきたので、また全部買い直しです・・・ orz 「IKEAと5万円で作る快適仕事場」が好評だったので、今度は日バージョンで書いてみることにしました。前回と同じでリビングで快適に仕事をするための環境を作ることを目標にしています。予算も前回と同じぐらいな感じで。 リビングに机を置くため、家を探すときにも、都内でリビングが広い1LDKを中心に探しました。家探しについては、Togetter – 「@masuidrive / @ka

    リビングにIKEAで作る2畳の快適仕事環境
  • [訂正版] Javascriptでクラスを継承する

    Photo by spud murphy 先ほどの記事のコードにミスがあり、継承を行うと、親クラスも書き換えてしまうバグがありました。コメントやTwitterで報告いただいた方々ありがとうございます。 あの後、調べて見れると、あまりスマートに継承を実現する方法は無いみたいですが、ユーザが作ったクラス(StringなどのAtomic型を除く)は下記のコードで継承が行えます。 特に、Array型を継承するのは、無理なようです。[]を上書きできないので、どうしようも無いみたいです。残念。 <body> <div id="result"></div> <script> var puts = function(str) { var el = document.getElementById('result'); el.innerHTML = el.innerHTML + str + "<br/>";

    [訂正版] Javascriptでクラスを継承する
  • 緯度経度を文字列で表すGeoHash - @masuidrive blog

    なんか世間的に位置情報アプリが流行ってるらしいし、Google App Engine(GAE)も楽しそう。どうせだから、GAEでなんか位置情報アプリでも作ってみよう!と思ってTwitterに書き込んだところ、Geohashという、位置情報のプロトコル?を教えてもらいました。 これは、その名の通り、位置情報をハッシュで表す規格なのですが、いろいろおもしろい特徴があり、調べているうちに楽しくなってきたので、勢い余ってPure Rubyのライブラリまで書いちゃいました。 そのあと、結局ライブラリを作ったところで満足して、アプリは何も作らなかったので、せめてGeohashの解説でも書いておこうと思います。 位置情報は通常、緯度経度で表します。たとえば東京タワーの緯度経度は35.65861, 139.745447です。 北を上にした地図でいうと、緯度がY座標で経度がX座標です。英語では緯度をlati

  • Webでの非同期処理を考えてみる [長い記事だけどコメント求む!]

    Photo by harry harris いまPhotoShareのサーバの実装を大きく変えようとして悩んでいます。 (参考: Life is beautiful: マルチスレッド・プログラミングの落とし穴、その2) Rails 2.2でThread safeになるとか、NeverBlockで12倍速くなるっていう話もあるんだけど、負荷が上がればレスポンスが悪くなるのは、どうしようもない。マシンを増やせば解決できる部分もあるけど、マシンを増やせばコストは上がる。 Life is beautifulで書かれていますが、確かに全部の処理を同期的に行う必要はないんですよね。 PhotoShareでも、既にいくつかのページは非同期にerbを生成して、それをRailsとerubisで読み込んで実行しています。 しかし、Railsだけではこういった非同期の処理やviewの一部を事前に生成するという処

    Webでの非同期処理を考えてみる [長い記事だけどコメント求む!]
  • 近況報告&アイディア募集

    アメリカに来て約3か月がたち、やっと生活も落ち着いてきました。 現在、BigCanvasでは、7月のAppStoreオープンに向けてiPhone向けのアプリを中島さんと作っています。 当は、私もCocoaで遊ぶつもりだったのですが、このプロジェクトを始めたのが4月で時間が無いため、アメリカでも引きこもりの様にRailsのコードを書いています。早くもっとCocoaでアプリを書けるようになりたいなぁ。 ネットへの依存度が高いので、日に居てもアメリカに居ても生活全般、あまり違いがない気がします。 ただ、デザイナやPR会社との打ち合わせなどが英語なので、そこが違うかな。 これが一段落したら、自分でも書きたいiPhoneアプリがあるので、自分でも色々書いてみようと思っています。 自分のアイディア以外でも色々作ってみたいと思っていますので、ぜひ「こんなiPhoneアプリ欲しい!」とかありましたら、

    近況報告&アイディア募集
  • Ubuntu / OSXにPerlbalをインストールする

    Photo by stebulus nginxなども調査してみたのですが、Perlbalが一番細かくキャッシュコントロールできること、Perlで書かれているので改造がしやすいことから、これを使う方向で進めてみることにしました。 まずは、S3にreproxyする場合に、認証用のヘッダを付けるようにしないとな。 ときどき死ぬとの情報もあるのですが、これはプロセス監視と複数起動することで対処することにします。 OSXや、UbuntuにPerlbalのパッケージが無かったので、インストールする方法をまとめておきます。 パフォーマンスはまだ計測していないけど、WassrもPerlbalを使ってるんですね。 # CPANの初期設定 cpan <<EXIT no o conf urllist push http://t.ring.gr.jp/pub/CPAN/ o conf prerequisites_

    Ubuntu / OSXにPerlbalをインストールする
  • [メモ] AmazonS3とEC2を使う時にはX-REPROXY-URL

    S3+EC2を使っていると、S3に保存したムービーや画像と言った大きなデータを、クライアントに返したい場合があります。 そのときにリバースプロキシを使う方法もあるけど、権限やユーザによって振り分けたい場合などは、単純なリバースプロキシではうまくいきません。 Rails側でNet::HTTPなどを使ってS3からデータを取ってくる方法もあるのですが、それだとパフォーマンスが悪すぎです。 負荷分散することを考えると、これはApacheモジュールか、リバースプロキシ側でやって欲しい作業です。自分で書こうと思ったけど、調べてみたらやっぱり同じようなのがありました。 リバースプロキシなどの中には、X-REPROXY-URLというヘッダをサポートしているものがあり、これを戻すとリバースプロキシが代わりにこのURLにアクセスしてデータを返してくれます。 Perlbalが始めにサポートしたらしいですが、li

  • hatana_bookmark_anywhere.jsの設置方法とカスタマイズ

    Photo by Marco Gomes hatana_bookmark_anywhere.jsを設置してくださった方々ありがとうございます。 ブログへの設置方法を書いてくださっている方がまとめておきます。他のブログへの設置方法を書いていただける方、ご連絡お待ちしています。 WordPressへの設置方法 をかもとさんが、プラグインを公開しています。 WordPress Plugins/JSeries » Hatena bookmark anywhere Voxへの設置 今書いた記事のブクマを見る – file-glob こと k.daibaの日記 ココログベーシックへの設置方法 去りにし日々、今ひとたびの幻: [blog]ブログにはてブのコメントを表示する Movable Typeへの設置方法 はてブのコメントを好きな場所に表示する Seesaa ブログへの設置方法 この際、言いたい放題

    hatana_bookmark_anywhere.jsの設置方法とカスタマイズ
  • masuidrive on rails - ブログにはてブのコメントを表示するhatana_bookmark_anywhere.js

    Photo by puddles for snails ブログを書いていると、はてなブックマークにいいコメントが付くことがあって、これが多くの人に見てもらえないのは、勿体ないなぁーと思うことがたまにあります。 当はブログのコメント欄に残してもらえるとうれしいのですが、敷居が高いのかなかなか書いてもらえません。 それなら、ブログにはてなブックマークのコメントを表示すればいい!と思って作ってみました。 どこでもはてなブックマークのコメントを表示するスクリプト、「hatana_bookmark_anywhere.js ver 0.1」をリリースします。 実際の設置例はこのページの下の方を見てください。 設置方法は超簡単。https://raw.github.com/masuidrive/hatena-bookmark-anywhere/master/hatena-bookmark-anywhe

    masuidrive on rails - ブログにはてブのコメントを表示するhatana_bookmark_anywhere.js
    t_43z
    t_43z 2008/04/17
    結局WordPressとかMTとかその他のブログエンジンのプラグインにするしかないのかなぁ。はてブの存在を意識できない人にこのスクリプトを貼れというのは敷居が高い気がする。
  • RESTはWebAPIの代わりにはならない

    Photo by Pulpolux !!! bobchinさんの日記から「やっぱRESTは厳しいのかな?」。 RESTでは、リソースに対して一意のURLに、これって結局データストレージとして使えるっていうだけなんだと思います。MVCでいうmodelの部分。 これは、これでとても大切な部分なのですが、モデルを検索したり、いろいろ機能をRESTで提供するのは、うまくいかないと思います。 Railsだと、create, show, update, destroyメソッドはいいのですが、index(list)メソッドをXMLで返すようにしても、あまりうまくいかないケースが多いと思います。1画面に出る情報が多岐にわたるので、きれいに表現できないんですよね。 1つのコントローラでHTMLとXMLを返す上での最大の問題は、メソッド名の変更が出来なくなることだと思います。APIとして外部に公開してしまうと

    RESTはWebAPIの代わりにはならない
    t_43z
    t_43z 2008/04/16
    うーん、HTMLを返す、というか、HTMLはクライアントでHTML内のJavaScriptがRESTfulAPIにアクセスするという考え方だと?
  • AtomPPのエラー処理

    Photo by JosephH 先日の「レスポンスコードでステータスを判断するとFreeSpotとかで問題にならない?」で、たけまるさんから、詳しいお返事をいただきました。 たけまる / AtomPub のエラー処理について AtomPPは全然わからないので、詳しい方に返事をいただけて光栄です。 たけまるさんのhikiは、GDataを調べてる時に、Google経由で何度も参考にさせていただいてます。 残念ながらWebDB+Pressは日を離れるときに全部処分してきてしまいました。 やはりAtomPPでは、エラーの規定はないのですね。ほかのRFCで拡張されているのかなと思ったのですが、それもないのですね。 エラーの内容を返すときに、Atom Entry形式を使うか、errorタグで返すかが迷うところです。ブログのAPIを見ているとerrorタグで返しているケースが多いように感じます。 F

  • Apache(mod_rails)とmongrelでHTTPレスポンスヘッダに特定の値を返す

    Photo by icanteachyouhowtodoit レスポンスコードでステータスを判断するとFreeSpotとかで問題にならない?からの続き。 ステータスコードで200が帰ってきたときに、ほんとに自分が通信したいサーバから帰ってきたかを検証する方法を考えてみました。 ほんとに相手のサーバを認証したい場合はSSLを使うべきですが、そんなに大事にしたくない場合は、HTTPレスポンスヘッダに特定の値をセットすることで、相手を特定できるのではないかと思います。 Railsのbefore_filterなどでresponse.headersをセットしてもいいのですが、これだとcacheに入った場合など、Railsを通らないときには、ヘッダが追加されません。 そのため、mod_railsの場合はApacheで、mongrelの場合はmogrel内でヘッダにセットする必要があります。 Apach

    Apache(mod_rails)とmongrelでHTTPレスポンスヘッダに特定の値を返す
  • Amazon EC2でインスタンスを終了しても消えないディスク領域を年内にリリース

    Photo by callumalden Amazon EC2を人に勧めると必ず言われるのが、「インスタンスを再起動したらディスクが消えるのが怖い」。 これは「インスタンス」を再起動であって、OSを再起動してもディスクは消えないのだが、確かに起動に必要なファイルを消してしまって、OSが起動できなくなってしまうと、確かに取り出せなくなってしまいます。 ただ、このようなケースは相当少ない上に、S3という巨大なストレージがあるので、再起動まえなどバックアップをマメに行なう事で、ほぼ解消できる。事実、Stickaでは1時間おきにdumpを取って、1週間分をS3に保持するようにしています。 それでも、やはり容量が大きなデータベースを構築する場合などは、dumpを取るのが難しいなどの問題は出てきます。 これに対する回答として、Amazonがやっと、EC2でも使えるインスタンスを終了しても消えないディス

    t_43z
    t_43z 2008/04/14
    ほー。
  • [mod_rails]gemsでアプリをインストールしたらApacheの再起動が必要

    mod_railsでは、Gemsで新しいパッケージを導入した場合、Apache自体を再起動しないと、アプリからそのパッケージを読み込めない模様。 p.s Passenger architectural overviewを見ると大体の構造が分かるみたい。ちゃんと読んでみよう。 Ruby Enterprise Editionなんかも出る予定なのか。matzの日記で言及されているパッチとかが取り込まれたRubyなのかな?CoWが効くなら、Railsの様なサーバプロセスのメモリ削減には効果的だろうな。

  • mod_rails(passenger)はmogrelの3倍メモリを食う?

    Rails運用時で気になるのは、安定性とパフォーマンス。安定性はいろいろ負荷テストをして時間が経たないと分からないので、まずはメモリのパフォーマンスから調べてみます。 とりあえず、ちょっとしたサンプルをmongrelで動かしてみると、44Mほどメモリを確保しています。 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 1003 14412 0.0 2.2 44316 23556 ? Sl Apr10 0:01 /usr/bin/ruby1.8 /var/lib/gems/1.8/bin/mongrel_rails start んで、同じプロセスをmod_rails(passenger)で起動すると、143Mほど確保されます。 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAN

    t_43z
    t_43z 2008/04/14
    このメモリの使い方ならあまり気にする必要なさそうだなぁ
  • mod_rails用のdeploy.rbとapache用設定ファイルジェネレータ

    Railsで一番めんどくさかったアプリの公開を、Apache httpdが動いているサーバに、普通にアップロードするだけで行える様にするモジュール、mod_railsがリリースされました。 いままで似たようなものにmod_rubyがあったのですが、ずっとメンテナンスされていない上に、構造的にRailsには向かないようになっていたので、Phusion社が新しく作ったものです。 日語での紹介はmoongiftさんの記事をご覧ください。インストール方法や使い方は、こちらの記事を参考にしてください。 このモジュールの評価が高まれば、レンタルサーバでもRailsサポートをしてくれる所が増えるんじゃないかと期待してます。 早速、自分のサーバ(EC2)に入れてみた所、特に問題もなくあっさり動きました。 ただ、Capistranoを使っている場合、mongrelの時のままだと、サーバの起動などで失敗する

  • EC2の固定IPを使ってみる

    初期状態では、一つのインスタンスに、EC2の中だけで使えるPrivate IPと、外部からアクセスするためのPublic IP(グローバルアドレス)が割当たってます。 インスタンス自体への割当IPはPrivate IPですが、上位のルータに1:1のNATがあり、これによって外部からPublic IPでアクセスできる様になっています。 今までの、Private IPとPublic IPに加えて、今度は固定IPのグローバルアドレスが割り当てられるElastic IPを選択出来るようになりました。 これは、Public IPと同じ様に、外部からアクセスするためのグローバルアドレスですが、AWSアカウント毎に発行されるので、インスタンスの再起動などによって代わる事はありません。 これを使えば、EC2で最大の問題点であった、「インスタンスを再起動するとIPアドレスが代わる」という問題から解放されます