try another color:
try another fontsize: 60% 70% 80% 90%
INK-i ラボ
INK-i ラボでは様々なWebサービスを公開しています

開発全般

gem mysqlではまったのでメモ

rubyを1.8.6から1.8.7に上げる必要が出たのでwindows環境でrubyを再インストールしたら見事にmysqlにつながらなくなりました。

gemのmysqlも正しくインストールされているし困り果てていた時、何気にgemのmysqlのドキュメントを見ていたらlibmysql.dllがパスが通っているところにないとだめだよみたいに書かれていたのでmysql本体のインストールされているbinフォルダにパスを通してみても改善されませんでした。

途方に暮れいていると実際のファイルはlibmySQL.dllって大文字になっていたので力技でこのファイルをrubyのbinにコピーして名前を全て小文字にしたら解決しました。

とりあえず動いているので今後のためにもメモしておきます。

twitterでお絵かきやパラパラ漫画を共有できるサイトを公開しました

twitterでお絵かきやパラパラ漫画を共有できるサイトを公開しました。

twitterでお絵かき・パラパラ漫画

このサイトではtwitterのアカウントを使って
・パラパラ漫画・お絵かきを投稿
・作品へコメントやretweet
・お気に入りへ追加
などができます。

またサイトへのログインはtwitterサイドで認証できるoauthに対応しているのでこのサイト内でパスワードの入力を行う必要はありません。
twifliptwiflip

windows上でAWS::S3を使うとファイルアップロードでタイムアウトになる

現在EC2サーバで運用している関係で、rubyから定期的に画像ファイルをAmazonS3サーバにアップロードするロジックをAWS::S3ライブラリを使って作成中です。

そこで、コーディングはあっているのになぜかタイムアウトになってしまうので調べていると、同じ問題を解説しているブログがあったのでメモとして残しておきます。

Why are You doomed being Ruby developer on Windows platform

この記事によれば、詳細は省きますが、AWS::S3のサンプルにあるようにアップロードの記述をするとWindows環境ではタイムアウトになってしまうとのことです。

S3Object.store("sample.jpg", open("sample.jpg", 'pictures')

これを

File.open("sample.jpg", ‘rb’) {|f| contents = f.read

amazonのec2にサーバーを移行しました

現在、自宅サーバーでwebサービスの運用を行っているのですが、ADSLのネットワークがとても不安定でエラーが大量に発生したり、これから夏に向けて熱対策が憂鬱だったりしたのでamazonのEC2に移行してみました。

ちょうど一年前にそれまで海外のレンタルサーバをすてて自宅サーバーの導入に踏み切りました。

理由は海外のサーバーは値段の割に良くなかったからです(安いのは使えなし、そこそこ使えそうなのは高い)

自宅サーバーは総費用6万円のコア4つにメモリ8Gで快適この上ありませんでした。しかし外との回線がADSLでは上記で書いたように不安定でサーバーに余力があっても回線に問題ありでした。

そこでamazonのEC2が候補に挙がりました。何といってもタイミングよく前金・長期契約が始まり、1年間前払いで月額3000円ぐらいになるのだから、インフラの心配をしなくてもいいamazonのEC2には今が乗換時と判断したわけです。

構成としてはEC2+EBS+EIP+ACFのフル利用です。

EC2
サーバー本体:RORとmysqlを動かしている
EBS
mysqlのデータを格納
EIP
固定グローバルIPアドレス

actionscriptの描画が遅くなったらcacheAsBitmapでキャッシュしましょう

最近パラパラ漫画作成サイトの作品で超大作がアップされるようになってきました。
うれしい限りです。

しかし、1つのコマに大量に書き込みがあるとどうしてもコマの切り替えに時間がかかり、パラパラ漫画とは言えないくらいの遅い再生になってしまうこともありました。

そこで何かいい案はないか探していたところベクターオブジェクトをビットマップ形式でキャッシュするプロパティを見つけました。

cacheAsBitmap=true

これをtureにすると、2度目目以降のコマの切り替えが劇的に早くなりました。一番驚いたのは、再生時のCPU使用率が100%に張り付いていたのが10~20%ぐらいで納まっていることです。

たった一行で解決できました。よかった。

こんなことは常識かもしれませんがとりあえずご報告まで。

yahooモバイルの携帯検索が役に立つ

すでに当たり前の情報かもしれませんが、とっても役に立っているので紹介します。

YahooのPCサイトからもYahooモバイルのページへいけます。いけるといってもYahooモバイルの紹介ページに行くだけですが。

そのページにある携帯検索がとっても役に立ちます。

yahoo携帯検索yahoo携帯検索

この携帯検索はパソコンで見ているYahooモバイルのページだけで携帯で見ることができる各検索エンジンの検索結果を調べることができるのです。

しかもSoftBankだけでなくDocomoやauの携帯で検索した結果まで調べることができます。

たとえば「アマゾントレンド」(私の運用しているサイト)で検索すると
こんな感じになります。

yahoo携帯検索docomoyahoo携帯検索docomo

yahoo携帯検索auyahoo携帯検索au

Googlebot-Mobileに対応するためにjpmobileに手を入れました

携帯向けのサイト作成にはrailsとjpmobileを使っています。

jpmobileは携帯サイト開発にはなくてはならないライブラリで便利に使わせてもらっています。

ただ、携帯でセッションを対応させるためにtrans_sidを有効にしてURLにセッションIDを付加させるやり方だと、googleのクローラーがこのセッションIDもそのままインデックスに登録していしまいます。

jpmobileの作りではau、softbank携帯からのアクセスの場合、セッションIDのURLへの付加は行わずPCからのアクセス同様にCookieでセッション管理をします。

docomoの場合はCookieに対応していないので上記のセッションIDをURLに付加します。

このdocomoの場合の処理がgoogleのクローラーに不都合なのです。

googleのクローラーは現状ではdocomoの携帯端末に成りすましてアクセスするためにURLに必ずセッションIDが付いてしまうわけです。

実現したかったことはgoogleのクローラーの場合、セッション管理はしないようにしたかったわけです。googleで色々検索したのですがなかなかうまい対処を発見することができなかったのでjpmobileのソースに手を入れてしまいました。本当はしたくなかったのですが・・・

内容は単純でdocomoの場合、Cookieに対応しているか返すメソッドsupports_cookie?が必ずfalseを返すようになっていたのでUser Agent にGooglebot-Mobileが含まれていたらtrueを返すようにしてしまいました。(docomo.rbのsupports_cookie?メソッドです)

とってもお気楽な対応をしてしまったのですがとりあえず動いているようです。

これじゃまずいよとか、もっといい方法があるよという方はお知らせいただければ助かります。

うちは裸のPCサーバーでWebサービスを公開しています

AntecのオープンエアPCケース SKELTON 国内販売という記事でこんなケースが発売されるを知りました。

実はこのサイトで公開しているWebサービスの大半は自宅に置いてある同じような裸のサーバーです。

お金がないのでケースは100円ショップでそろえることができるケースです。 これでこの夏を乗り越えたので熱対策も少なからず効果があったのではないでしょうか。(写真汚くてすいません)

PCPC

ちなみにスペックは

  • CPUはCore 2 Quad Q6600
  • メモリは8GB
  • HDDは160GB
  • OSはCentOS
こんな感じです。

apache mongrel rails 設定備忘録

apacheとmongrelクラスタの設定ではまったので自分用に備忘録

現在のサーバーはapache+バランサー、rails、mongrelクラスターを使って稼働させています。

携帯サイト、特にドコモのCSSに対応させる前は特に設定に気をつけていたわけではなく、ネットで見つけた設定をそのまままねていました。

しかし、最近ドコモのCSS対応したサイトを作るようになり設定を見直す必要が出てきました。

というか、もともと非効率な設定で稼働させていたようです。

問題点

今回発覚した問題は、railsのキャッシュ機能で作成された携帯向けhtmlを再表示させるとドコモではCSSが認識されないっといった現象でした。
要するにドコモの携帯でCSSを認識させるにはContent-Typeがapplication/xhtml+xmlでなくてはならないのですが、キャッシュされているページを返す時はtext/htmlになってしまっていたわけです。
それならばと、携帯向けページがキャッシュされるディレクトリに.htaccessファイルを作り強制的に全てのhtmlをxhtmlで返すように設定したのですが、全く.htaccessの設定が有効にならない。

原因

コンテンツ配信