taslamの日記

>>mizincogrammerに移転しました。こちらは、今後更新されません。<<

2008-08-21

[]電子マネー機能だけじゃないんだね

恥ずかしながら、「Felica=何か電子マネー関係」ぐらいの認識しかなかったんだけど、どうやら『三者間通信』機能を使えばおサイフケータイブラウザを起動して所定のURLへアクセスさせたりできるらしい。『ぐるなび タッチ』なんかで活用されているとのこと。QRコード的な使い方もできるわけだ。それだけじゃなくiアプリと連動させたり・・・とか。iアプリはうといのでなんとも、だけど。

これは何か面白そう。ひさびさにCあたりでプログラミングかな?瓦版と絡めてなにか面白いことができそうだ。

もっとも、今日うちに「おサイフケータイをかざすだけで所定のURLへ誘導させるLED看板」の営業に来て、上司がこの仕組み、うちでも何かにつかえんかな?と言われて調べてみたわけなんだけどね。

2008-08-14

[][][]我が家にオカヤドカリがやってきた

f:id:taslam:20080814203021j:image

カインズで2匹入りパック400円程で売られていたオカヤドカリくん。

昨日見かけてどうしても気になったので、飼い方を調べて今日買ってきました。

それにしてもホームセンターってやつは生体への扱いがぞんざいだよね。

殆ど知られていない、というか店員も知らないだろうけど、オカヤドカリって天然記念物なんだよね。

2008-08-11

[][]CentOS5(x86_64)にNginxをインストール

軽量なWebサーバ、Nginxが人気の様なので、リバースプロキシとして導入してみた。

EPELの導入

RHEL互換ディストリビューション用の追加リポジトリのひとつ「EPEL」を設定する。

wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-3.noarch.rpm
rpm -ihv epel-release-5-3.noarch.rpm

Nginxのインストール

yum install nginx

nginx.x86_64 0:0.6.31-3.el5がインストールできた。

NginxでSSLやDAVを使うには./configure時にオプションを指定する必要があるが、このパッケージでは有効になっているようだ。

[]Nginxでリバースプロキシ

2つのRailsアプリにリバースプロキシを使ってそれぞれ振り分ける例。

ディレクトリベースで振り分ける例

user              nginx;
worker_processes  4;

error_log         /var/log/nginx/error.log;

pid               /var/run/nginx.pid;

events {
  worker_connections  1024;
}

http {

  # Railsアプリの静的コンテンツはmongrel_clusterだと遅いのでもっと高速なサーバで
  upstream static {
    server 192.168.0.12:80;
    server 192.168.0.13:80;
  }

  # Railsアプリ mongrel_cluster
  upstream app1 {
    server 192.168.0.12:3000;
    server 192.168.0.12:3001;
    server 192.168.0.13:3000;
    server 192.168.0.13:3001;
  }
  upstream app2 {
    server 192.168.0.12:3010;
    server 192.168.0.12:3011;
    server 192.168.0.13:3010;
    server 192.168.0.13:3011;
  }

  # 静的ページかCGIだけ apache
  upstream web {
    server 192.168.0.8:80;
  }

  server {
    listen      80;
    server_name .taslam-example.jp;

    proxy_set_header  X-Real-IP       $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header  Host            $http_host;
    proxy_redirect    false;
    proxy_max_temp_file_size          0;

    # 静的コンテンツ
    location ~ ^/(app1|app2)/(javascripts|stylesheets|images)/.* {
      proxy_pass http://static;
      break;
    }

    # アプリケーション1に振り分け
    location /app1 {
      proxy_pass http://app1;
      break;
    }

    # アプリケーション2に振り分け
    location /app2 {
      proxy_pass http://app2;
      break;
    }

    # 上に当てはまらないものはwebサーバに振り分け
    location / {
      proxy_pass http://web;
      break;
    }
  }

}

ドメインベースで振り分ける例

user              nginx;
worker_processes  4;

error_log         /var/log/nginx/error.log;

pid               /var/run/nginx.pid;

events {
  worker_connections  1024;
}

http {

  # Railsアプリの静的コンテンツはmongrel_clusterだと遅いのでもっと高速なサーバで
  upstream static {
    server 192.168.0.12:80;
    server 192.168.0.13:80;
  }

  # Railsアプリ mongrel_cluster
  upstream app1 {
    server 192.168.0.12:3000;
    server 192.168.0.12:3001;
    server 192.168.0.13:3000;
    server 192.168.0.13:3001;
  }
  upstream app2 {
    server 192.168.0.12:3010;
    server 192.168.0.12:3011;
    server 192.168.0.13:3010;
    server 192.168.0.13:3011;
  }

  # 静的ページかCGIだけ apache
  upstream web {
    server 192.168.0.8:80;
  }

  # アプリケーション1に振り分け
  server {
    listen      80;
    server_name app1.taslam-example.jp;

    proxy_set_header  X-Real-IP       $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header  Host            $http_host;
    proxy_redirect    false;
    proxy_max_temp_file_size          0;

    # 静的コンテンツ
    location ~ ^/(javascripts|stylesheets|images)/.* {
      proxy_pass http://static;
      break;
    }

    location / {
      proxy_pass http://app1;
      break;
    }
  }

  # アプリケーション2に振り分け
  server {
    listen      80;
    server_name app2.taslam-example.jp;

    proxy_set_header  X-Real-IP       $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header  Host            $http_host;
    proxy_redirect    false;
    proxy_max_temp_file_size          0;

    # 静的コンテンツ
    location ~ ^/(javascripts|stylesheets|images)/.* {
      proxy_pass http://static;
      break;
    }

    location / {
      proxy_pass http://app2;
      break;
    }
  }

  # Webサーバに振り分け
  server {
    listen      80;
    server_name www.taslam-example.jp;

    proxy_set_header  X-Real-IP       $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header  Host            $http_host;
    proxy_redirect    false;
    proxy_max_temp_file_size          0;

    location / {
      proxy_pass http://web;
      break;
    }
  }
}

[]NginxでSSLラッパー

クライアント---(HTTPS)---Nginx---(HTTP)---Webサーバ

という使い方もできる。

user              nginx;
worker_processes  4;

error_log         /var/log/nginx/error.log;

pid               /var/run/nginx.pid;

events {
  worker_connections  1024;
}

http {

  upstream web {
    server 192.168.0.8:80;
  }

  # Webサーバに振り分け
  server {
    listen      443;
    server_name www.taslam-example.jp;

    # --------------- SSLの設定ここから ---------------
    ssl                     on;
    # サーバ証明書(サーバ証明書に中間CA証明書を連結したもの)
    ssl_certificate         /usr/local/certs/chained.crt;
    # 秘密鍵
    ssl_certificate_key     /usr/local/certs/server.key;
    # --------------- SSLの設定ここまで ---------------

    proxy_set_header  X-Real-IP       $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header  Host            $http_host;
    proxy_redirect    false;
    proxy_max_temp_file_size          0;

    location / {
      proxy_pass http://web;
      break;
    }
  }
}

[][]mixiエコー

8月4日に、twitterっぽい機能が期間限定で公開されています。

『mixi』で楽しむ手軽なコミュニケーション「エコー」

とはいっても、twitterなんて普通の人は知らないので、チャットとして認識されている感じですかね?

id:d14aさんが、twitterとの違いなどを詳しくまとめてくれています。

mixiのエコーについて個人的にまとめてみた

また、クライアントid:kyoro353が公開しています。

mixiEchoAlert

まだ殆ど使っていないのでなんともいえませんが、(活発に使われれば)楽しそうではありますね。

また、みじんこプログラマとしては技術者ブログも興味深いところです。


でもなんで期間限定なんですかね。

試験運用といったところでしょうかね?

2008-08-08

[]WEB+DB Press vol.45 を眺める

金欠でようやく買えた。

もう今月vol.46出ちゃうよ。

小飼弾アルファギークに逢いたい

シックス・アパートの宮川さん。

海外かぁ〜まず英語をどうにかしないと( ´゚д゚)(゚д゚` )ネー

アクアリストとしてはドイツ語の方が興味あるんだが。

ここがキミの脆弱なところ・・・!

CSRFクロスサイトリクエストフォージェリ)について。

何も分からない人に解説しているように見せかけるマンガと見せかけて、やっぱり素人には分からない内容だったりする。

でも相当やさしく解説してくれてるので、もし書籍化なんかされれば、ネットワークセキュリティの初心者向けとしてそれなりの成果がありそう。

しーさーふに萌える日が来るとはおもわなんだ。

水着は大変良いものです。

イマドキケータイ開発実践入門

ケータイ動向2008

携帯電話のあゆみ。

MobaSiF

かの有名なモバゲータウンのノウハウ満載のフレームワークMobaSiFを紹介しつつ、携帯サイト構築時の留意点を考えていこうという感じの記事。

MobaSiFについては、携帯のコミュニティサイトに特化したフレームワークで、割り切った設計だけに、携帯サイトの構築にはかなり良さそうという印象。

テンプレートエンジンの実装などは、富豪そのもののRailsとは対極だなぁと感じた。日本の携帯に特化してるからこそ可能なんだろうけども。

FlashLite入門

あんまり興味なかったので飛ばしちゃった。

ActionScript3ならまだ読む気になるんだけど・・・

というかパケ定額環境ないしなぁ、家にも会社にも。

携帯サイトのテスト

おなじみのi-mode toolをはじめとした、各種エミュレータのまとめ。

詳解!MySQL 5.1

まだパラパラとしか目を通してない。

MySQL 5.1入門
開発者向けの新機能
運用・管理者向けの新機能
MySQL Cluster 5.1
MySQL 5.1へのアップグレード

OpenID 2.0 徹底解説

既存のライブラリを使って、Yahoo!OpenID他の基本的な認証を実装したことはあるけど、ぼんやりとしか理解できてないという方(つまり僕)は読んどくべき。認証の仕組みから、Yadis等の関連技術、セキュリティについてなど詳しく載ってる。だが読んでると瞼が重くなる。だがもっと眠い文書を読むよりマシ。

RSpecで実践 BDD入門

TDDに慣れてきて、テスト依存症となった人に対して、テストっつーか仕様を書けばいいじゃん、コードで。そしたらもっと自然にできんじゃん?BDDっつーんだよ。ってかんじ。

BDDというのがどんなものなのか、テストフレームワークRSpec」を使って解説してくれている。

ちょうどそろそろ勉強しないとな、と思っていたところだったので大いに助かった。ありがとう、Yuguiさん。

iKnow!構築ノウハウ

Rails製の英語学習SNSを題材に、主にチーム開発のノウハウについての記事。

ひとりぼっちでの開発しか経験のない僕にはとても興味深い。

実践の場がないけど。

ついでにいうと友達いないのでプライベートでもぼっちです。嫁だけ。

SQLアタマアカデミー

vol.44の特集「SQLアタマ養成講座」のミックさんの新連載。

これから読む。

SQLアタマ養成講座」はとても参考になったので期待大。あの記事で、SQLの考え方(レコードの集合単位)を知った。SQLで出来ることが確実に広がった。

Practical Ruby Programming!

これも新連載。今回はRuby1.8.7についてらしい。

これから読む。

Javascript+ブラウザ探検

Firefox3。

これから読む。

良いコードへの道

名前付け重要。まつもとさんもよく言ってるよね。

これから読む。

月間少年FLASH

RIAクライアントサーバ間でのデータ連携のためのOSSBlazeDS」を使って翻訳機能付チャットをつくるらしい。

これから読む・・・スルーするかもしれない。

Recent Perl World

Perl5でモダンオブジェクトシステムだと!興味有り。後から読む。

どうもPerl5のオブジェクト指向に慣れなくて・・・

Java Traveler

JavaでリッチなアプリケーションUIを手に入れる、とのこと。

まだ読んでない。

そういえばもう何年もJava触ってないなぁ・・・

RESTレシピ

この連載にも大分お世話になっております。リンクは大事というお話と予想。

これから読む。

ステップアップPHP

PHPなんか嫌い。



2008-08-06

[]オートコンプリート

いくつか、オートコンプリート(オートサジェスト)のライブラリはあるけど、眺めてみた限りではsuggest.jsがよさそう。

  • Autocompleter(script.aculo.us.js
    • Prototype.jsが必要。
    • 日本語の検索候補のときちょっと動作が怪しい感じ。
    • Autocompleter.Localならあらかじめ検索候補を配列で用意しておくタイプなので、とても高速。サーバに負荷もかからない。
    • これだけの為にPrototype.jsを用意するのはちょっと・・・
  • suggest.js
    • 国産だけに、日本語でも完璧に動くのが素敵。日本語変換ソフトとの親和性も高く快適。
    • あらかじめ検索候補を配列で用意しておくタイプなので、とても高速。サーバに負荷もかからない。
    • ver.2では他のライブラリに依存しない。
  • jquery.autocomplete.js
    • jQueryが必要。
    • あらかじめ検索候補を配列で用意しておくタイプなので、とても高速。サーバに負荷もかからない。
    • 日本語が使えない。