CheerCatsをリリース

cheerpetcats

cheerpetcats


2011/10/28 にCheerCatsをiTunesストアにリリースしました。ネコの写真専門の写真共有アプリです。無料です。
今回はCheerDogsのコードをXcode4環境に移行してから作成しました。
目新しい機能は特になく、作業はアイコンを変えただけです。

書くこともあまりないので技術のお話を書きます。
CheerCatsのサーバー構成は以下になります。

- サーバー: CentOS
- WEB:Apache2
- DB: MongoDB
- プログラム:PHP

目新しいものですと、MongoDBでしょうか。
MongoDBのプロダクトは社内で3件目になります。
MongoDBはパフォーマンスに優れたデーターベースで、複数のリクエストを高速に処理できます。
MySQL 5.1 だと、複数のリクエストがあると極端な速度低下が発生しますが、MongoDBはかなり安定した動作をします。
MySQL 5.5 から複数リクエストに強くなったそうなので時間があるときに評価したいものです。

No Comments

Apache Range Header DOS 検証補助ツール

Apache HTTPD 1.3/2.xにおいて、RangeヘッダーのDOS脆弱性(CVE-2011-3192)が先日発見されました。

リモートから、Apacheに冗長なRangeヘッダーのリクエストを送信することによって、サーバーのメモリやCPU資源を大きく消費させることができるというものです。なお、最新のアドバイザリでは、1.3に関しては脆弱ではないものの、RangeヘッダーDOSを受けた場合には、それなりに高負荷になるとの指摘があります。

その対策として、Apache開発チームが提示した方法の一つに mod_setenvif や mod_rewrite のモジュールを使って、冗長なRangeヘッダーのリクエストがあった場合には、Rangeヘッダーを無視したり、あるいは、そのリクエストを拒否するというものがあります。

その対策設定をした場合の事後チェックが簡単にできるPerlプログラムを作成しました。
このプログラムを使うことで、mod_setenvif や mod_rewriteを用いた制限が有効であるかを調べることができます。

http://code.google.com/p/apache-range-header-test/wiki/JapaneseManual

以下がその実行例です。例では、Range-Headerで10個の範囲指定をしたリクエストをホストに送信します。「Warning」が返ってきた場合には、制限が効いておらず、Range-Header の要求を Apacheが正常に受け入れられたことを示します。

$ ./httprangetest.pl foo.example.local
[Warning] foo.example.local: Host can accept more than 5 ranges.

次の結果では、Range-Headerの制限が効いており、Range-Headerが無視されています。

$ ./httprangetest.pl bar.example.local
[Info] bar.example.local: Host ignored Range-Header.

次のように第一引数を数値にして、Range-Headerでの範囲指定を任意の数値にすることができます。例では、2個の範囲指定であるため、制限には引っかからず、Apache がリクエストを受け入れています。このプログラムでは、6個以上の範囲指定をApacheが受け入れた場合には、Warning を出します。アドバイザリでは6個以上の範囲指定を制限しており、それに合わせた形です。

$ ./httprangetest.pl 2 bar.example.local
[Info] bar.example.local: Host can accept 2 ranges.

mod_setenvif や mod_rewrite のモジュールを使って、制限を実施した。あるいは、これから実施しようとされている人には、このプログラムを使うと検証が楽になるかもしれません。

なお、RangeヘッダーDOSの脆弱性が閉じられているかどうかを検証するものではないので、その点はご注意ください。

(CVE-2011-3192)

No Comments

iPhoneアプリのリリース


本日 「CheerPet for Dogs」をApp Storeにリリースしました。
今年の4月初めに、「自社開発でiPhoneアプリを作れないか?」と発言があり、白羽の矢が当たった私が開発することになりました。

最初はどのように進めるかが全く決まっておらず、先ずはプロトタイプを4月中旬に作成。
プロトタイプが出来たことから、4月末には開発者2名の社内プロジェクトとして5月末リリースを目標に発足したのですが、
結果としては、6/6にiTunes Connectに申請となり、本日6/16にリリースの運びとなりました。

開発の間にはGWもあり、開発日数は意外に短かったと思います。
思えば色々とありました。(‘ – ‘ ) . o O

エピソード1:2年前にiPhoneアプリを作ろうと社内プレゼンをしたけど、受け入れてもらえなかった。
エピソード2:iPhoneを持っていないので開発者に任命となったので自前でiPod Touchを買ってきた。
エピソード3:社内プロジェクトに昇格させる為に必死に家でコードを書いた。
エピソード4:4月に書いたプロトタイプが気に入らない。会社の就業時間内に書きなおすことは出来そうにないので、GWを利用し基礎構造を評価しなおし書き直した。

と、紹介するとSEってやばい仕事じゃね?ってエピソードですね。

そんなこんなですが、弊社でもiPhoneアプリ開発実績なるものが誕生となりました。
クライアントの皆様iPhoneアプリ発注くださいね!

それでは、SEのみなさん身体だけは気をつけて ( ‘д’ )ノ

No Comments

ストリートビューの[x]が押しにくい

iPad用の地図ページを作成していて思ったのですが、ストリートビューモードが使いにくいです。
[x](閉じる)が反応しない。。
仕方ないので地図の外にリンクを作りました。

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>

<script>
var LatLng = new google.maps.LatLng(35.3353548, 134.1196615);
var map = new google.maps.Map(document.getElementById(‘gmaps’), {
zoom: 10,
center: LatLng,
});
var panorama = map.getStreetView();
google.maps.event.addListener(panorama, “visible_changed”, function () {
if (panorama.getVisible()){
$(‘#StreetView’).show();
} else {
$(‘#StreetView’).hide();
}
});

function StreetViewClose(){
var panorama = map.getStreetView();
panorama.setVisible();
}
</script>
<div id=”StreetView”><font size=+2><a href=”javascript:StreetViewClose()”>地図に戻る</a></font></div>

No Comments

スマートフォン用サイトのviewportについて

明けましておめでとうございます、そして初めまして

ソリューション事業部の内田です、新年から色々忙しいですが頑張っていきます!

さて、今回スマートフォン用サイトをいじる機会があったのでそこで知らなかった知識を

1つ紹介したいと思います。

スマートフォン用サイトを作る際のviewportの記述方法について。

機種ごとの横幅を検出し、自動的に横幅設定するには

<meta name="viewport" content="width=device-width" />

さらに拡大縮小禁止にするには

<meta name="viewport" content="width=device-width,user-scalable=no" />

拡大縮小禁止を違う方法で実現するには

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" />

各項目説明

・width=device-width・・・デバイス毎の横幅を指定してくれる

・user-scalable・・・noで拡大縮小禁止、yesで拡大縮小可能

・initial-scale・・・倍率の初期値(100%の場合は1.0,120%の場合は1,2等)

・maximum-scale・・・倍率の最大値

・minimum-scale・・・倍率の最小値

以上が今回使用したviewportの一覧です、今年はさらにスマートフォンが活性化してくるようなので

こういったことを学ぶ機会は多くなってきそうだなと思います。

No Comments