タグ

ブックマーク / blog.katsuma.tv (16)

  • blog.katsuma.tv

    明けましておめでとうございます。 年も明けたことだし、意識高めにRuby2.0+Rails4な(スケルトンの)アプリを作成しました。 roomkeepr 我が家はiRemoconを使って家電を管理しているのですが、テンプレートを変更するのがあまりに面倒なので全部Webベースにしちゃえばいいや、と思ってせっかくなので最新のエッジな環境で作ってみよう!とおもった次第です。実際、Sinatraで十分なんだけど。。 微妙にハマる個所もありましたが、rspecでテストが動くところまで確認できました。 以下、そこまでのメモです。 Ruby2.0 RVMでpreview2版がインストールできます。 まずは、ビルドツールを最新にしておきます。Homebrewを利用している場合はこんなかんじ。 brew update brew tap homebrew/dupes brew install autoconf

    kamipo
    kamipo 2013/01/03
  • blog.katsuma.tv

    (2011/1/23 23:00追記) macrubycはLLVMから入れなくてもmacrubyをインストールするだけで一緒にインストールされます。下記内容は誤りを含んでいますのでご注意ください。ご指摘いただいたwatson1978さん、ありがとうございました。 最近Macアプリケーションが気になっていて、Cocoa周りの話を調べています。その一環でRubyMacアプリを作る方法についての話です。 MacRuby Mac上でRubyでアプリケーションを作る場合、最初からインストールされてあるRubyCocoaと、最近盛り上がっているMacRubyの2通りの手段があります。 どちらもCocoaを含むいろんなフレームワークをRubyから直接叩けるのですが、RubyCocoaはプロキシオブジェクトを介してCocoaフレームワークを叩くのに対して、MacRubyはプロキシを必要とせずに直接Obj

  • blog.katsuma.tv

    CSSでDOM要素に対してアルファフィルターを適用させたいときは、クロスブラウザを意識すると次のような記述になると思います。 もうすこし古いMozilla系ブラウザを対象にするなら-moz-opacityの定義も追加してあげるとことになりますが、 今回はIEに絞った話のため、そのあたりは割愛します。 element { filter: alpha(opacity=0); /* IE / opacity: 0; / その他のモダンブラウザ */ } さて、普段は特に何も考えずにfilter:alpha~と記述していたのですが、 実はIEはある条件下によってまったくfilterが効かない場合があります。 ActiveXが無効 そもそもの話ですが、filterはActiveXを利用したレンダリングを行っています。 そのため、そもそもセキュリティの設定などでActiveXを無効にされていると、fi

    kamipo
    kamipo 2011/03/21
  • blog.katsuma.tv

    YSlowの評価に対する改善シリーズ、その2です。mod_deflateを利用してHTTPレスポンスを圧縮させる方法はこちらから。 YSlow対策でmod_deflateを利用してHTTPレスポンスをgzip圧縮 前回で、総合ポイントが「F」だったサイトをレスポンス圧縮することで、総合ポイントを「D」にまで上げることができました。今回は、残りの「F」項目の中の「Add an Expires header」についての処理を行いたいと思います。 YSlowの公式サイトによると、「リッチサイトはCSSやらJSやら多くのファイルをロードするために、リクエスト回数も増えちゃうよね。でも変更が少ないファイルについてはExpiresヘッダを追加することで、ユーザにキャッシュさせ、リクエスト回数を減らすことができるよ(大雑把な意訳)」と、あります。つまり、Apache側でExpiresヘッダをレスポンスに

  • blog.katsuma.tv

    前回「Mac OSXにredisをインストール」で、redisを動かす環境まではできたので、せっかくなんでテスト的に何かサービスを作ってみよう、ということでTwitterクローンのRedTweetを作ってみました。 RedTweet redisを使ったTwitterクローンは、PHP版のRetwisと、それをSinatraで書き直したRetwis-RBがあるのですが、サンプルコードはいくらっても世の中に少しは役立つだろうと思ってRails版で実装してみました。オンラインで動作できる環境はないので、git cloneしてscript/serverで手元の起動で確認ください、、と投げやり気味ですみません。とりあえず次の項目は一通り実装しています。 ユーザID発行 Login / Logout Follow / Remove 自分のTimeline, Public Timeline, 各ユーザの

    kamipo
    kamipo 2011/01/21
  • blog.katsuma.tv

    Flash Media Serverの(ほぼ)完璧なクローンとして、Wowza Media Serverというものがあります。元Adobe(しかもFMS担当だった気が)の社員がスピンアウトして立ち上げたもので、Javaで書かれていてMacでも動いたり、614,250円払わなきゃオリジン、エッジサーバの構成ができないFMSと違って$995で全てがそろってしまうナイスなストリーミングサーバです。詳細な違いは糸柳さんが詳しい説明を書いてくださっているので、そちらが大変参考になります。 ちなみに同じくFlashのストリーミングサーバでオープンソース版でRed5もありますが、以前のエントリーのとおり、FlashPlayerのバージョンで動作が異なったり、SharedObjectの挙動が怪しいときがあったりと、まだまだ安定さは欠ける模様です。 Wowza Media Serverのインストール このW

  • blog.katsuma.tv

    当然のごとくmemcachedが最速だろう。。。と思いきや、そうでもない結果に。むしろ一番遅い結果に。なんだこれーーーと思って調べ続けていたのですが、バインディングのgemのコードを追いかけるかぎり、どうもこれはmemcache-clientの実装が原因のよう。 これは、memcache-clientの実装はpure-rubyで実装されているのに対して、TokyoCabinet/TokyoTyrantのバインディングの実装はnativeコードで実装されてあるのが原因のようです。事実、TokyoTyrantはmemcacheプロトコルを実装しているので、memcache-clientを利用してTokyoTyrantにアクセスすると両者はこんな結果になりました。 user system total real

    kamipo
    kamipo 2010/07/12
  • blog.katsuma.tv

    もう、いろんなニュースサイトで言われていますが、 Yahooからページパフォーマンス計測ツールの「YSlow for Firebug」が リリースされました。Firebugをインストールしている上で、YSlowをインストールすると、Webサイトの高速化を行うためのポイントと、 現状についてのポイント表示を行ってくれます。 これ、実際に試してみるとよく分かるのですが、いかに工夫をしていないサイトは、改善の余地があり余っているか。。 ほんと身を引き締められます。ちなみにYSlowでは次の項目をポイントに挙げています。 Make Fewer HTTP Requests Use a Content Delivery Network Add an Expires Header Gzip Components Put CSS at the Top Move Scripts to the Bottom

  • blog.katsuma.tv

  • blog.katsuma.tv

    久々のBlog更新、というわけでリハビリがてらJavaScriptで軽く遊んでみたいと思います。 いま、巷で流行ってるMapReduceのオープンソース実装Hadoopは「Hadoop Streaming」という標準入出力でデータのやりとりができる仕組みを使って、 Hadoopの実装言語であるJavaにとらわれず、RubyPerlなど他の言語でもMap+Reduceの処理ができることが1つのウリになっています。 で、僕たちwebエンジニアはみんなJavaScript大好きなので、「JavaScriptでもMap Reduceやりたい!」という流れになるのは必然です。 そこで、試行錯誤でいろいろ試してみると割とさっくり出来たのでそのメモを残しておきたいと思います。 環境の整備 Mac OSX上のVMWare FusionにCentOSの仮想マシンを2台立ち上げて、環境セットアップしました。

  • blog.katsuma.tv

    ここ数日、PHPの開発でかなりハマってたことがありました。ハマり内容はこんな感じ。 ある共有ライブラリhoge.soをphp.iniのextension_dirに設置 php.iniにextension=hoge.soを指定 環境変数LD_LIBRARY_PATHにhoge.soのフルパスを指定 ターミナルからhoge.soを必要とするスクリプトfoo.phpを実行(php foo.php)すると、正常に動作 でも、Webブラウザからのアクセスによる実行だと、hoge.soが読み込まれず、エラーが発生 要するに、Apacheの実行ユーザとして、環境変数LD_LIBRARY_PATHが読み込めていないor認識できていない、という問題です。これApacheの実行ユーザを「apache」以外の別ユーザ、たとえばkatsumaにした上で、katsumaユーザでターミナルから実行しても正常動作で、あ

  • blog.katsuma.tv

    前回、JavaScriptMap Reduceのコードが書けるHadoop Streamingについて紹介しました。 標準入出力さえサポートされてあれば、任意のコードでMap Reduuceの処理が書ける、というものでしたが、エンジニアはそもそも面倒くさがり。コードも書くのも面倒です。 と、いうわけで、今回はもうコードすら書かずにSQLライクでMap ReduceできるHiveというプロダクトについて、まとめたいと思います。 Hive Hiveとは、簡単に言うとHadoop上で動作するRDBのようなものです。 HDFSなどの分散ファイルシステム上に存在するデータに対して、HiveQLというSQLライクな言語で操作できます。 で、面白いのがHiveQLの操作は基的にMap Reduceのラッパーになっていること。 要するに、SELECT文実行すると裏でMap&Reduceのタスクが走り出

  • blog.katsuma.tv

    GmailやLDRなどもそうですが、最近はWebアプリケーションでも「起動させっぱなし」を基路線に置いているものも増えてきています。そういうときにポイントとなるのが「(サーバ側で変更が発生したときに)サーバからの通知をブラウザにどうやって知らせるか?」ということ。ブラウザでページを開かれている場合だと、変更箇所を専用のボックスエリアを設けて、適当に目立たせておけばいいのですが、別タブで開かれている場合などには、タブをユーザが切り替えるまでは、その変更を通知することができません。そんなときに、「差分の大きな複数のfavicon(*)を動的に変更させることで通知と同等の効果が期待できないか?」という話。(全然違うfaviconをアニメーションさせることで目立たせられないか?という狙い) faviconの変更は割と単純 まずfaviconが動的に変更させることができないか?の検証ページを作って

  • blog.katsuma.tv

    greeさんで開催されたKey Value Store勉強会に行ってきました。 時間にして4時間超え、内容も国内のKey-Value Storeなソフトウェアの最前線の話ばかりで相当なボリューム。以下、メモってたのを残しておきたいと思います。(誤字、脱字、内容に誤りを含むものなどありましたらお伝えください)また、発表者の方やプロダクトについて、ざっくり調べてURL見つけられたものについてはリンク張っています。 森さん / 末永さん   groonga Sennaの後継エンジン 融通が効かないのがSennaのデメリット スコア算出式のカスタマイズなど Sennaの転置索引 索引の構成部品を自由に組み合わせて使える APIもいろいろ QL DB Low Level memcached互換のkey-value store バイナリのみ対応 計測 クライアント memstorm-0.6.8 mem

  • blog.katsuma.tv

    Cakeではgettextを利用して多言語化(国際化対応)が簡単にできる仕掛けが用意されています。 __()関数を利用して文字列生成 cakeコンソールでpotファイルを作成 poエディタなどで各言語別に翻訳 実際は、こんな流れになります。詳しくは次のサイトなどが非常に詳しい情報が掲載されています。 CakePHP1.2の簡単国際化 - CakePHP のおいしいべ方 CakePHPで国際化の方法を試してみましたCommentsAdd Star - アシアルブログ 1.2系の多言語対応メモ(1) - Writing Some Code さて、この国際化対応のときに盲点となるのが「検索エンジン対応」です。 そもそものこの言語の切り替えというのは、HTTP RequestのAccept Languageを調べてそこで切り替えが行われています。(ブラウザでの優先する言語で設定できるやつですね。

  • blog.katsuma.tv

    (2008.12.19 22:00追記) peer IDをnear IDに修正 先日のAdobe MAXでFlashの新しいプロトコルRTMFPを扱うことができるサービス「Stratus」について発表がありました。これは簡単に言うと、ブラウザで何もインストールすることなくP2Pを実現できる神がかったプロトコル(=RTMFP)と、RTMFPをサポートするサービス(=Stratus)、という位置づけです。上の写真は実際にStratusを介してRTMFPによる通信で僕の家とオフィス(夜中なので真っ暗ですね)をつないでいるものです。 これらについては、Adobe Labsでの次の文章が非常に分かりやすいです。 Stratus service for developing end-to-end applications using RTMFP in Flash Player で、この文章があまりに分

  • 1