ようへい

2012年8月30日木曜日

8/30 Android ニュースひとまとめ

ベルリン IFA 2012 で、サムスンがペン入力対応Android端末の新モデル Galaxy Note II を発表しました。画面は5.5インチ 1280 x 720 ピクセルの HD Super AMOLEDディスプレイ。初代 Galaxy Note の5.3インチから対角は長くなっていますが、幅が800 から720ピクセルになり、アスペクト比は16:9に変わっています。

プロセッサは4コア1.6GHz駆動のサムスン Exynos。先代のデュアルコアから、Galaxy S III (非LTE版) 同等にパワーアップしました。厚さは初代より薄い9.4mm。ながら、バッテリー容量は3100mAhに増えています。Androidのバージョンは 4.1 Jelly Bean プリインストール。そのほか仕様は背面8MPカメラ、前面1.9MPカメラ、16GB / 32GB / 64GB 内蔵ストレージなど。
サムスン Galaxy Note II 発表。5.5型16:9 有機ELと4コア Exynos、Android 4.1搭載 - Engadget Japanese
http://japanese.engadget.com/2012/08/29/galaxy-note-ii-5-5-16-9-el-4-exynos-android-4-1/
ペンで絵や文字を書けるのは魅力的。
スペックもかなり高性能。
欲しいけど・・・高そうだなぁ。
Galaxy Note II やWindows 全域カバーな ATIV ファミリなど多数の新製品が披露されたサムスン IFA 2012 イベントですが、ある意味もっとも度肝を抜いたのはこのGALAXY Camera かもしれません。サムスン EK-CG100 『GALAXY Camera』 は、名前から想像できるとおりのAndroid採用カメラ製品。

AndroidをカメラOSのベースにしたり、素のAndroidをカメラに載せた例は従来にもありましたが、GALAXYカメラ (GALAカメ?) はモニタ側のほぼ全面が4.8インチ1280 x 720p の高精細マルチタッチ液晶だったり、高速なクアッドコアプロセッサを採用したり、WiFi だけでなく3G / 4G データ通信機能を内蔵してSIMスロットがあるなど、仕様がいちいちただごとではありません。Androidのバージョンは最新版 Android 4.1 Jelly Bean。GoogleのNexus 製品も担当したサムスンらしいところです。
サムスン Galaxy カメラ発表。Android 4.1搭載で光学21倍ズーム、WiFi / 4G対応 - Engadget Japanese
http://japanese.engadget.com/2012/08/29/galaxy-android-4-1-21-wifi-4g/
PanasonicがAndroid連携機能を搭載した洗濯機をリリースする一方、サムスンはAndroid搭載カメラを発表。
日本のメーカーもこれくらいやって欲しいですね。
シマンテックによれば、家事や育児に追われる主婦層をターゲットとしたとみられるAndroidマルウェアが出回っているという。

同社が8月に入って確認したもので、スパムメールでありがちな「仕事紹介サイト」に見せかけた不正サイトへ誘導。「子育てや家事を行いながら自宅でメールするだけで簡単に副収入が得られる」などと騙し、トロイの木馬「Android.Loozfon」をダウンロードさせる。

また「裕福な男性を紹介する」などと説明する別の手口でも攻撃も展開。メール上のリンクをクリックさせることで、不正アプリをダウンロードさせていた。
【セキュリティ ニュース】「副収入」で主婦層を狙うAndroidマルウェア:Security NEXT
http://www.security-next.com/033394
副収入を謳い文句にしたマルウェアが出回っているようです。
端末上のアドレス帳情報を盗み出す可能性があるとのことです。
インストール経路は、メールからのダウンロードとのことなので、不正な経路でのダウンロード、インストールにはご注意ください。
アイディアファクトリーから、Android向けアプリ『神次元アプリ ネプテューヌ』が配信された。iOS版も近日配信予定。さらに、 “ネプテューヌ”の守護女神たちがカードゲームに参戦した『ネプテューヌコレクション』が配信されることも明らかになった。
『神次元アプリ ネプテューヌ』Android版配信開始 ゲイムギョウ界の女神がキミの生活をサポート!?  - ファミ通App
http://app.famitsu.com/20120830_86768/
ねぷねぷがAndroidに!!
とは言っても、アクセサリアプリのようです。
関連記事

2012年8月29日水曜日

エポック秒、エポックミリ秒コンバーター

エポック秒(1970/1/1 00:00:00 +0000 からの秒数)、エポックミリ秒(1970/1/1 00:00:00 +0000 からのミリ秒数)を相互変換します。
UNIXタイムスタンプとも言う。
タイムゾーンはローカルタイムです。
タイムゾーンにも対応した新しいコンバータはこちら
[タイムゾーン対応] エポック秒、エポックミリ秒コンバーター
設定
変換種別
オフセット
変換
関連記事

2012年8月26日日曜日

Greasemonkey 1.0 リリース

ついに、Greasemonkey 1.0 がリリースされました。
やっと安定版というところでしょうか。
Greasespot: Greasemonkey 1.0 Release
http://www.greasespot.net/2012/08/greasemonkey-10-release.html 1.0での主な変更点は、@grantという権限パラメタがMetaブロックに追加されています。
スクリプト内で使用しているGM_関数を、あらかじめ@grantで宣言しなければいけないようです。
Greasemonkey 1.0 adds a special Metadata Block imperative: @grant. As of version 1.0:

 If a script does not specify any @grant values, Greasemonkey will attempt to auto-detect the right settings.
 If a script specifies any values (or they have been auto detected), then it will be provided with only those API methods that it declares.
 The valid values are the names of those GM_ prefixed values that you wish your script to be granted access to. 
 Otherwise the script will be granted no special API privileges, and thus run without the security constraints Greasemonkey scripts have traditionally had. If you want your script to operate in this mode, you should explicitly declare @grant none.
@grant - GreaseSpot Wiki
http://wiki.greasespot.net/@grant
@grantの追記は大きな手間ではなかったのですが、1.0にすると以下のエラーが出るようになりました。
なお、@grantにGM_xmlhttpRequestは追記済みです。
[Exception... "A parameter or an operation is not supported by the underlying object"  code: "15" nsresult: "0x8053000f (InvalidAccessError)"  location: "chrome://greasemonkey/content/xmlhttprequester.js Line: 86"]
ちなみに、xmlhttprequester.jsの該当行は以下。
// this function is intended to be called in chrome's security context, so
// that it can access other domains without security warning
GM_xmlhttpRequester.prototype.chromeStartRequest =
function(safeUrl, details, req) {
  this.setupReferer(details, req);

  var setupRequestEvent = GM_util.hitch(this, 'setupRequestEvent', this.wrappedContentWin);

  setupRequestEvent(req, "abort", details);
  setupRequestEvent(req, "error", details);
  setupRequestEvent(req, "load", details);
  setupRequestEvent(req, "progress", details);
  setupRequestEvent(req, "readystatechange", details);
  setupRequestEvent(req, "timeout", details);
  if (details.upload) {
    setupRequestEvent(req.upload, "abort", details.upload);
    setupRequestEvent(req.upload, "error", details.upload);
    setupRequestEvent(req.upload, "load", details.upload);
    setupRequestEvent(req.upload, "progress", details.upload);
  }

  req.mozBackgroundRequest = !!details.mozBackgroundRequest;

  req.open(details.method, safeUrl,
      !details.synchronous, details.user || "", details.password || "");

  if (details.overrideMimeType) {
    req.overrideMimeType(details.overrideMimeType);
  }
  if (details.timeout) {
    req.timeout = details.timeout;
  }

  if (details.headers) {
    var headers = details.headers;

    for (var prop in headers) {
      if (Object.prototype.hasOwnProperty.call(headers, prop)) {
        req.setRequestHeader(prop, headers[prop]);
      }
    }
  }
どうやらGM_xmlhttpRequestのtimeoutパラメタが悪さしているみたい。
ということで、一時的にGM_xmlhttpRequestのtimeoutパラメタをコメントアウトすることで回避できました。
ちなみに以下のページから、0.9系をインストールして確認すると、上記のようなエラーは出ませんでした。
おそらく、1.0でのバグだと考えられます。
Greasemonkey :: Versions :: Add-ons for Firefox
https://addons.mozilla.org/ja/firefox/addon/greasemonkey/versions/ ちなみに、@grantを設定していないスクリプトで表示される警告メッセージはabout:configのgreasemonkey.showGrantsWarningをfalseにすることで、表示しないようにすることが出来るようです。

後日談

timeoutを設定した際にエラーを吐いた件は使い方がまずかったみたい。
[Greasemonkey] timeout と synchronous の関係について - ログろいど
関連記事

2012年8月23日木曜日

8/23 Android ニュースひとまとめ

 スクウェア・エニックスは本日(2012年8月23日),「ファイナルファンタジー レジェンズ 光と闇の戦士」(iOS / Android)の配信を8月31日に開始すると発表した。価格は,序章が無料,第1章が250円,第2章~第4章が各850円,全章一括購入は2500円となっている(いずれも税込)。
4Gamer.net ― iOS/Android「ファイナルファンタジー レジェンズ 光と闇の戦士」が8月31日に配信開始。FFの王道とも言うべき物語やシステムを採用
http://www.4gamer.net/games/168/G016859/20120823023/
高っ!!
日本のデベロッパーは周りを見るべき。
面白そうだけど・・・値段的に保留だな。
ファイナルファンタジー レジェンズ | SQUARE ENIX
http://www.square-enix.co.jp/smart/ffdl/jp/
ニコンが COOLPIX の新作4モデルを発表しました。フラッグシップは 28 - 200m 相当で f/2-4 の P7700 ですが、それ以上に目を引くのは Android を搭載した S800c です。Android デジカメがこれまでになかったわけではありませんし、デジカメブランドのスマートフォンに至ってはたくさんありましたが、他ならぬカメラ屋のニコンが手がけたあたりに、時代の趨勢を感じます。

S800c は 3G にこそ対応していないものの、802.11b/g/n WiFi に対応しており、撮影した写真をそのままスマートフォン同様の感覚で編集したり、ソーシャルメディアに投稿できます。ニコンが運営するフォトサービス my Picturetown 用アプリももちろん搭載。スマートフォン間とのワイヤレス転送をサポートする専用アプリも iOS / Android 向けに提供予定です。

また、まともに Android 端末ですので YouTube などのアプリも一通り搭載し、カメラ背面に備えた3.5型・800x480解像度の有機ELタッチパネルでアプリを楽しむことも可能。Google Play Store にもちゃんと対応しています。ちなみに Android 2.3.3 で、プロセッサは Coretex-A9、RAM は
512MB。ベンチマークしてみたいものです。
ニコン COOLPIX S800c 発表、Android 2.3 & WiFi 搭載デジカメ - Engadget Japanese
http://japanese.engadget.com/2012/08/22/coolpix-s800c/
こういった試みは良いですよね。
Panasonic(笑)も見習うべき。
関連記事

[GAE/J] Google App Engine Java SDK 1.7.1 がリリースされました

Google App Engine Java SDK 1.7.1がリリースされました。
リリースノートは以下。
You can download the latest version of the SDK here

App Engine SDK - Release Notes
Version 1.7.1 - August 21, 2012

 The URLFetch API now supports multiple cookie headers.
 http://code.google.com/p/googleappengine/issues/detail?id=3379 
 You can download 90 days worth of Usage Reports for your application from the Billing History page of the Admin Console.
 Task Queue requests now include an X-AppEngine-TaskExecutionCount that counts the number of times a task was run by an instance.
 Added support for multiple files to be deleted using the Files API.
 Added support to delete files from Google Cloud Storage using the Files API.
 Added a REQUEST_LOG_ID to be written in the logs and as an environment variable. This can be used to later identifying that request in the application logs.
 The Memcache Viewer now supports namespaces.
 http://code.google.com/p/googleappengine/issues/detail?id=7245 
 The Mail API now supports the following headers for outgoing mail: List-Id, List-Unsubscribe, On-Behalf-Of, Resent-Date, Resent-From, Resent-To.
 http://code.google.com/p/googleappengine/issues/detail?id=2559
 http://code.google.com/p/googleappengine/issues/detail?id=7672 
 PyCrypto 2.6. is now supported in the Python 2.7 runtime.
 http://code.google.com/p/googleappengine/issues/detail?id=7884 
 NDB now throws a BadProjectionError when trying to perform a projection query on an unknown or unindexed property.
 NDB Tasklets use the namespace from when it was called, not the namespace from when it is performed.
 http://code.google.com/p/appengine-ndb-experiment/issues/detail?id=190 
 NDB Properties' string representation size is limited to the max string length for Blob and Text properties.
 Appstats provides an interactive shell for observing RPC behavior of calls immediately.
 Appstats now contains information about the cost of the RPCs made during the request.
 The Images API now supports specifying the default pixel color to fill in for image types that don't support transparent images, such as JPEG.
 We've added full asynchronous API support in the Images API.
 Added an error to the Images API to indicate when a blob being referenced is not found or not accessible.
 Made the Python search limits public in the Search API.
 Added namespace support for the Search API in the Python SDK.
 http://code.google.com/p/googleappengine/issues/detail?id=7670 
 Added support in the Search API for simple sorting in the SDK.
 http://code.google.com/p/googleappengine/issues/detail?id=7456 
 The Testbed testing framework now supports the Logservice API.
 Added support in the Files API to list Google Cloud Storage files.
 Improve the MapReduce File API Reader to support multiple files and file formats.
 Fixed an issue with the App Engine satisfaction survey in the Admin Console which was released in 1.6.6, which will be re-enabled in this release.
 Fixed an issue with Search API websafe cursors not being returned as a websafe value.
 Fixed an issue where SearchRequest was returning errors that weren't available as search.Error subclasses.
 Fixed an NDB issue where entities over 1000000 bytes where written to memcache, causing failure.
 http://code.google.com/p/appengine-ndb-experiment/issues/detail?id=193 
 Fixed NDB AutoBatcher error handling.
 http://code.google.com/p/appengine-ndb-experiment/issues/detail?id=196 
 Fixed an issue where Appstats assuming all objects have a class attribute resulted in an error.
 http://code.google.com/p/googleappengine/issues/detail?id=5668 
 Fixed an issue where there was unbalanced string quoting in Appstats formatting.
 http://code.google.com/p/googleappengine/issues/detail?id=5976 
 Fixed an issue where search indexes were not persisted in the SDK.
 http://code.google.com/p/googleappengine/issues/detail?id=6791 
 Fixed an issue where an error in formatter.py in Appstats was being thrown.
 http://code.google.com/p/googleappengine/issues/detail?id=7034 
 Fixed an issue in the SDK where the Search API did not support boolean queries on a field.
 http://code.google.com/p/googleappengine/issues/detail?id=7247 
 Fixed an issue where numeric and date comparators were not supported in the Search API in the Python SDK.
 http://code.google.com/p/googleappengine/issues/detail?id=7247 
 Fixed an issue where Appstats didn't show a detailed view of an RPC when using the Python 2.7 runtime.
 http://code.google.com/p/googleappengine/issues/detail?id=7558 
 Fixed a search issue where snippets failed to highlight when a capital letter is used in a search term.
 http://code.google.com/p/googleappengine/issues/detail?id=7665 
 Fixed an issue where the SDK Admin tool couldn't browse search indexes containing unicode characters.
 http://code.google.com/p/googleappengine/issues/detail?id=7791 
 Fixed an issue where traffic splitting by cookie was not working.
 http://code.google.com/p/googleappengine/issues/detail?id=7813 
 Fixed an issue where RequestTooLargeError was being incorrectly thrown using Python 2.7.
 http://code.google.com/p/googleappengine/issues/detail?id=7820 
 Fixed a memcache race condition.
 http://code.google.com/p/googleappengine/issues/detail?id=7864 
 Fixed a Search issue in the SDK where a query that does not match all search terms resulted in divide-by-zero.
 http://code.google.com/p/googleappengine/issues/detail?id=7943
SdkReleaseNotes - googleappengine - Google App Engine Python SDK Release Notes - Google App Engine - Google Project Hosting
http://code.google.com/p/googleappengine/wiki/SdkReleaseNotes
Eclipseの更新サイトにはまだアップされていないようです。
関連記事

2012年8月18日土曜日

8/18 Android ニュースひとまとめ

そういえば数か月前にはまだAndroidマーケットだった Google Play ストアで、アプリのアップデートを高速化するSmart App Update の導入が始まりました。

今年6月末の開発者イベント Google I/O 2012 で発表された Smart App Update は、アップデートの際に新バージョンのバイナリ (.apk) をまるごと落とすかわりに差分だけをダウンロードする仕組み。データ量は平均で1/3になり、時間・帯域・バッテリーの節約になります。
Google Play ストアが Smart App Update 開始、差分だけで高速更新 - Engadget Japanese
http://japanese.engadget.com/2012/08/16/google-play-smart-app-update/
Smart App Updateが始まっているようです。
それは良いんですけど、私の使っているIS11Sは内蔵メモリが512MBしかないので、最近のGoogle Mapsの更新でももうギリギリ・・・。
せめて外部ストレージに移動できれば・・・。
スマフォ買い換えようかな。
関連記事

2012年8月16日木曜日

8/16 Android ニュースひとまとめ

 ユーザーが、不正な他のAndroidアプリケーションを使用した場合、該当するグリー製Androidアプリのデータ領域にある情報が漏洩する可能性がある。対策として、グリーが提供する最新版アプリへのアップデートを呼びかけている。

 JVNの分析によると、脆弱性が存在するのは「GREE(グリー) 1.4.0およびそれ以前」「探検ドリランド 1.0.7およびそれ以前」「聖戦ケルベロス 1.1.0およびそれ以前」など8種類のアプリ。グリーが提供するSDK(ソフトウエア開発キット)に脆弱性(WebViewクラスに関する脆弱性)が存在するため、このSDKを使用しているAndroidアプリに影響が波及している。
ニュース - グリー製Androidアプリ8種に脆弱性、情報漏洩リスクも:ITpro
http://itpro.nikkeibp.co.jp/article/NEWS/20120816/416281/?top_tl2
インストールしている人は最新版へのアップデートで対応できるようです。
そんなGREEですが、こんなニュースも。
ソーシャルゲーム各社の高成長が曲がり角をむかえ、ゲーム開発会社に配信プラットフォームの見直す動きが出ています。バンダイナムコゲームスはApp StoreやGoogle Playにゲームの配信を開始し、コナミも米ソーシャルゲーム大手と提携して配信していくということです。またKLabも今後配信する30本のソーシャルゲームのうち19本はApp Storeに展開するなど、グリーとDeNAに偏っていた配信先を多様化しています。グリーやDeNAに配信すると、売上の6割が開発会社の取り分となりますが、App Storeだと7割が取り分になるので両社から離れた方が利益が上がると話すゲーム会社もでてきています。
ソーシャルゲーム、グリーとDeNAから離れる動きも・・・朝刊チェック(8/15) | インサイド (その他、全般のニュース)
http://www.inside-games.jp/article/2012/08/15/58960.html
陳腐な作りでガチャで儲ければ良いという考えが嫌いな私は、GREEやDeNAが嫌いです。
この会社がゲームを出しはじめてから、ゲームの質が落ちたと思うのは私だけでしょうか。
中国 Xiaomi (小米) が、人気Androidスマートフォンの最新機種 Xiaomi Phone 2 (小米手机 2) を正式に発表しました。Xiaomi は2010年に北京で創業したばかりの新興メーカーながら、初代 Xiaomi Phone は高性能&高品質と価格の安さで大人気端末となり、Qualcomm や IDGから数億ドルの出資を獲得するなど注目の企業です。

発表された Xiaomi Phone 2 (以下「米2」)は、事前のうわさどおり Qualcomm の最新クアッドコアプロセッサ Snapdragon S4 Pro、2GB RAM、シャープ製の4.3インチ1280 x 720 IPS液晶、裏面照射8Mピクセルセンサ + F2.0 広角27mm カメラ、Android 4.1 Jelly Bean ベースの " MIUI " UIなどを搭載するウルトラハイエンド端末。非常に高いスペックを備えつつ、価格は前モデルと同じ1999人民元 (約2万4900円)に設定されています。
小米フォン 2 正式発表、4コアKrait / 2GB RAM / Jelly Bean で約2万5000円。Retina超の342 ppi IPS液晶採用 - Engadget Japanese
http://japanese.engadget.com/2012/08/16/2-4-krait-2gb-ram-jelly-bean-2-5000-ret/
あまり聞かないメーカーですが、スペックはなかなかですね。
液晶にはシャープの液晶を使っているとの事。
シャープの液晶は当たりを買えればいいんですけど、ハズレると、ドット抜けで苦しまされた思い出が・・・。
関連記事

[JavaScript] ログ出力ライブラリ (console へ 出力レベル機能を追加)

作成に至る発端

Log4js もあるが、ほとんどデバッグ目的のログ出力なので、console.assertconsole.dir、可変長引数の console.log で出力する事が多い。
文字列のみを出力する Log4js はオブジェクトや、XMLの出力において、console での出力に圧倒的に劣る。
また、Log4js自体のファイルサイズも大きい。
しかし、console は、ログ出力レベルを指定して出力をコントロールするといった機能が無い。
そんな事を考えていると、以下の記事が目に入り、ライブラリを作るかという事になった。
console.log は長くてつらい #JavaScript - Qiita
http://qiita.com/items/6f2ae599207fa9af323a

挫折

難しくないだろうと、こんなコードを書いた。
var LoggerLevel={
  ALL:-99,
  DEBUG:-1,
  INFO:0,
  WARN:1,
  ERROR:2,
  OFF:99
},
self=null;
var Logger=function(level){
  self=this;
  self.level=isNaN(level) ? LoggerLevel.INFO : level;
};
for(var key in console){
  var level=LoggerLevel[key.toUpperCase()];
  if(!level){level=99};
  (
    function(k,l){
      Logger.prototype[k]=function(){
        self=this;
        if(self.level<=l){
          return console[k].apply(console, arguments);
        }
      }
    }
  )(key, level);
};
こんな感じで実行する。
var logger=new Logger(LoggerLevel.INFO);
logger.debug("debugメッセージ");
logger.info("infoメッセージ");
logger.warn("warnメッセージ");
logger.error("errorメッセージ");
logger.dir([1,2,3,4,5]);
ブラウザのコンソールを確認すると、うまく出力されているようだ。
ん・・・コンソールに表示される、どこでログ出力が呼ばれたかという行番号が、logger.js の console[k].apply の行番号になっている。
本当は、logger.info等を実行している行番号が出てほしいんだけど・・・。
これじゃデバッグが不便になるな。
うむ~まいった。
なやんでいると、こんな記事を見つけた。
console.logのエイリアス - hokaccha.hamalog v2
http://d.hatena.ne.jp/hokaccha/20111216/1324026093 bindね。
これを使うと、bindされたファンクションを、コンストラクタとして扱えるようになるという事。
bind | Mozilla Developer Network
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/bind

そして完成

bindを使い、以下のように書き直した。
var LoggerLevel={
  ALL:-99,
  DEBUG:-1,
  INFO:0,
  WARN:1,
  ERROR:2,
  OFF:99
},
self=null;
var Logger=function(level){
  self=this;
  self.level=isNaN(level) ? LoggerLevel.INFO : level;
};
for(var key in console){
  var level=LoggerLevel[key.toUpperCase()];
  if(!level){level=99};
  Logger.prototype[key]=(
    function(k,l){
      self=this;
      if(self.level<=l){
        if(Function.bind){
          return console[k].bind(console);
        }else{
          return console[k].apply(console, arguments);
        }
      }
    }
  )(key, level);
};
先ほどと同じように実行してみる。
今度は、ちゃんと呼び出し元のファイル名、行番号でコンソールに出力された。
めでたしめでたし。

ちょっと修正

上のコードでも問題ないんだけど、ちょっと見直し。
ログ出力の度いちいちFunction.bindを判定するのもなぁ・・・と思ったので以下のようにした。
var LoggerLevel={
  ALL:-99,
  DEBUG:-1,
  INFO:0,
  WARN:1,
  ERROR:2,
  OFF:99
},
self=null;
var Logger=function(level){
  self=this;
  self.level=isNaN(level) ? LoggerLevel.INFO : level;
};
for(var key in console){
  var level=LoggerLevel[key.toUpperCase()];
  if(!level){level=LoggerLevel.OFF};
  if(Function.bind){
    Logger.prototype[key]=(
      function(k,l){
        self=this;
        if(self.level<=l){
          return console[k].bind(console);
        }
      }
    )(key, level);
  }else{
    Logger.prototype[key]=(
      function(k,l){
        self=this;
        if(self.level<=l){
          return console[k].apply(console, arguments);
        }
      }
    )(key, level);
  }
};
Loggerのprototypeを作る際にあらかじめ判定するようにしてみた。
console.timeとか使った際に、判定が入ることによる誤差を無くすための処置。

更に修正

var LoggerLevel={
  ALL:-99,
  DEBUG:-1,
  INFO:0,
  WARN:1,
  ERROR:2,
  OFF:99
};
var Logger=function(level){
  var self=this;
  self.level=isNaN(level) ? LoggerLevel.INFO : level;
  self.make();
};
Logger.prototype.make=function(){
  var self=this;
  for(var key in console){
    var l=LoggerLevel[key.toUpperCase()];
    if(!l){l=LoggerLevel.OFF};
    if(self.level<=l){
      if(Function.bind){
        Logger.prototype[key]=(
          function(k){
            return console[k].bind(console);
          }
        )(key);
      }else{
        Logger.prototype[key]=(
          function(k){
            return console[k].apply(console, arguments);
          }
        )(key);
      }
    }else{
      Logger.prototype[key]=function(){};
    }
  }
};
さらに無駄な処理を省いた
一応最終版。

ダウンロード

非圧縮版(915B)
https://sites.google.com/site/logroid/files/logger.js
圧縮版(661B)
https://sites.google.com/site/logroid/files/logger.min.js
関連記事

2012年8月12日日曜日

8/12 Android ニュースひとまとめ

アップルのターン!に証拠として提出されたのは、アップルが2010年にサムスンに対してプレゼンしたという「サムスンのスマートフォンにおけるアップル特許の使用」なる文書。サムスン製品のどの部分がアップルの特許を盗用している(とアップルが考える)かを、90ページにわたって詳細に示す内容です。

続きに埋め込んだプレゼン文書を眺めると、メッセージのキモは「サムスンはアップルの重要なパートナーである」。しかし「Androidプラットフォームは、アップルの知的財産を無許諾で多数使用している」。さらに「 Androidは、採用企業に iPhone のプロダクトデザインと戦略を模倣させるように設計されている」。よって「アップルからライセンスを得ずにAndroidを採用したサムスンの決定は、より重要なアップルとの関係を損なう」。
アップル、サムスンにスマホ1台につき30ドル・タブレット40ドルを要求(2010年)。資料90ページ公開 - Engadget Japanese
http://japanese.engadget.com/2012/08/11/1-30-40-90/?ncid=jpInfoEN
ここまで来ると、AppleとSumsungのパートナーであること自体が疑問。
Apple側も、「もうSumsungには頼りません」と言っちゃえば良いのに。
まぁ、そうもいかないんでしょうけど。
関連記事

2012年8月11日土曜日

[JavaScript] 正規表現はコンパイルしたほうが処理速度が速いのか?

今までJavaScriptにおいて、正規表現は使い捨ての正規表現を除いてコンパイルした方が早いと思っていました。
そして、コンパイルした方が早いのか確認するためのベンチマークツールを作ってみました。
チェックツールは以下から利用できます。
[JavaScript] ベンチマークツール - ログろいど
なんと、Firefox、Chromeではコンパイルした方が遅い。
Firefoxでは、コンパイルした場合と、しない場合の差は大きくないが、Chromeでは大きな差が出ました。
ちなみに、Firefoxで指定しているJavaScript JITコンパイラは JaegerMonkey。
私の実行環境はこんな感じ。
OS Windows 7 Professional Service Pack 1 32bit
CPU Intel Core i5 M 560 2.67GHz
RAM 2GB
テストコードは以下。
パターン1
"hogehogehogehogehoge".replace(/h/g,"H");
"hogehogehogehogehoge".replace(/h/g,"H");
パターン2
var r=new RegExp();
r.compile("h","g");
"hogehogehogehogehoge".replace(r,"H");
"hogehogehogehogehoge".replace(r,"H");
パターン3
"hogehogehogehogehoge".replace(/h/g,"H");
"hogehogehogehogehoge".replace(/h/g,"H");
"hogehogehogehogehoge".replace(/h/g,"H");
"hogehogehogehogehoge".replace(/h/g,"H");
"hogehogehogehogehoge".replace(/h/g,"H");
"hogehogehogehogehoge".replace(/h/g,"H");
"hogehogehogehogehoge".replace(/h/g,"H");
"hogehogehogehogehoge".replace(/h/g,"H");
"hogehogehogehogehoge".replace(/h/g,"H");
"hogehogehogehogehoge".replace(/h/g,"H");
パターン4
var r=new RegExp();
r.compile("h","g");
"hogehogehogehogehoge".replace(r,"H");
"hogehogehogehogehoge".replace(r,"H");
"hogehogehogehogehoge".replace(r,"H");
"hogehogehogehogehoge".replace(r,"H");
"hogehogehogehogehoge".replace(r,"H");
"hogehogehogehogehoge".replace(r,"H");
"hogehogehogehogehoge".replace(r,"H");
"hogehogehogehogehoge".replace(r,"H");
"hogehogehogehogehoge".replace(r,"H");
"hogehogehogehogehoge".replace(r,"H");
確認を行ったのは以下のブラウザ。
  • Mozilla Firefox 14,15,16.17
  • Google Chrome 21
  • Windows Internet Explorer 9
このうち、IE9のみ、パターン4ではコンパイルした方が早いという結果になりました。
皆さんもチェックツールの結果をお教えください。
以下のリンクを開くと、上記のテストコードが入力された状態で開きます。
[JavaScript] ベンチマークツール - ログろいど
関連記事

[JavaScript] ベンチマークツール

JavaScriptのベンチマークを確認できます。
ベンチマーク結果は別ウィンドウで開くので、ポップアップを許可してください。
動作確認ブラウザ
  • Mozilla Firefox 14,15,16.17
  • Google Chrome 21
  • Windows Internet Explorer 9
基本情報

1セットでの実行回数

セット数

jQuery


jQueryのバージョンは、1と指定した場合、1系の最新が使用され、1.7と指定した場合、1.7系の最新が使用されます。
パターン
関連記事

2012年8月9日木曜日

8/9 Android ニュースひとまとめ

NFCで簡単にペアリングしてBluetoothで通信する製品は見かけますが、TK-FNS040BK は本体中央部にスマートフォンを載せて直接NFCで接続するため、ペアリングそのものがありません。使用する周波数帯は13.56MHz帯、通信可能距離はスマートフォンの表面から約10mm。ユーザーは「ELECOM 日本語入力 powered by ATOK」を無償でダウンロードできます。

本体にコイン型二酸化マンガン・リチウム1次電池を内蔵しており、一日8時間の利用で約18か月のあいだ利用できます。ただしユーザーによる電池交換には非対応。電池が切れた場合は「ご使用いただけなくなります」という驚異の使い切り製品である点も特徴です。

シリコンタイプのキーボードには独自の左右分割45鍵配列を採用。キーピッチは15mm、ストローク1mm。三つ折りに畳んで付属の専用ケースに収納できます。重さは約114g。対応Androidスマートフォンは Android 2.3.4 ~ 2.3.7 または 4.0以上。発売は8月下旬、メーカー希望小売価格は1万8690円。
エレコムからNFC接続のAndroid用三つ折りキーボード、内蔵電池で18か月駆動使い切り - Engadget Japanese
http://japanese.engadget.com/2012/08/07/nfc-android-18/
NFCのキーボードが発売されました。
値段はなかなか良い値段しますね。
最近スマフォで文字を打つのがわずらわしくなってきたのでBluetoothの折りたたみキーボード探してるのですが、良いキーボード無いかなぁ・・・。
 多くのスマートフォンユーザーがバッテリーの寿命に不満を感じていることにつけ込んで、「電池節約アプリ」「エコ電池アプリ」「ソーラー式の電池充電アプリ」といった名称のアプリが、スパムメールを通じて紹介されているという。しかしこれらのアプリにバッテリー消費改善効果はなく、デバイスの「連絡先」に保存された情報などを盗み取ってしまう。

 ほかに、「電波改善アプリ」も報告されているほか、映画「ヘルタースケルター」の主演女優、沢尻エリカの無料ビデオが観られるアプリをかたったものも発見されたという。
「わんこアプリ」の正体は「電池長持ち」、悪質アプリが次々発見 - @IT
http://www.atmarkit.co.jp/news/201208/09/malapp.html
連絡先を盗み見るアプリが報告されています。
端末をチェックして、インストールされていたらアンインストールしましょう。
関連記事

2012年8月7日火曜日

8/7 Android ニュースひとまとめ

 Galaxy Note 10.1 は、タッチとS-Pen スタイラス入力に両対応した10.1 型タブレット。二月末のイベントで先行公開された際はデュアルコアプロセッサに1GB RAM という当時としては平均的な仕様でしたが、新たに公開された製品版ではGalaxy S III と同じ4コアExynos プロセッサに2GB RAMにパワーアップしています。

グローバル向けの販売スケジュールは、WiFi版および3G版が8月から、LTE版はそれ以降の年内発売予定。公開された五分超のツアー動画では、タブレットのサイズを活かし横に二画面を並べて見ながら&読みながらノートを取る、ブラウザなど様々なアプリからペンでコンテンツを切り取ってスクラップするといった使い方が示されています。アプリもadobe Photoshop touch をプリインストールするなど、ペン入力のプロダクティビティが多数。

また手書き文字のテキスト化や図形の清書、さらには手書き数式の認識など、なんちゃってスタイラスではなくデジタイザベースのS-Pen入力に注力していることが伺えます。なお、画面解像度は1280x800。うわさのRetina級高解像度タブレットはもう少し待つ必要がありそうです。
サムスン Galaxy Note 10.1は今月発売、S-Pen手書きと4コアExynos & 2GB RAM 搭載 (動画) - Engadget Japanese
http://japanese.engadget.com/2012/08/06/galaxy-note-10-1-s-pen-4-exynos-and-2gb-ram/
ついに2GB RAM搭載モデル出るみたいですね。
かなり楽しみなモデルですけど、値段もそれなりに高いんだろうな・・・。
またdocomoからのみ販売って事にはならないと良いんですけど。
絵を描くのも趣味にしてるので、S-Pen対応はかなり心動かされますね。
値崩れしたEee Pad TF201を買うべきか・・・。
う~ん。
関連記事

2012年8月5日日曜日

ARROWS X F-10D の情報まとめ

私の周りでF-10Dを買った人が居るのだが、なんせバッテリーの減りが早いということで、ネット上での情報をまとめてみた。

スペックに対するバッテリー容量

F-10Dのスペック抜粋
CPU バッテリー容量
Tegra 3 1.5GHz (4Core) 1,800mAh
ちなみに、Galaxy S Ⅲを買った人は、バッテリー持ちがかなり良いと言っていた。
比較対象としてGalaxy S Ⅲのスペック抜粋
CPU バッテリー容量
MSM8960 1.5GHz(2Core) 2,100mAh
富士通、搭載CPU、コア数に対してバッテリー容量低くないか?
Tegra 3だから平常時は1Coreで動いていると思うけど。

先読みブラウジング機能

Webページをサクサク読み込む
先読みブラウジング

現在見ているページから、ページ内の複数あるリンク先のページを先に読み込むことで、リンクをタッチした時の回線状況に関わらず即座に表示できます。
携帯電話(F-10D) 製品情報 - FMWORLD.NET(個人) : 富士通
http://www.fmworld.net/product/phone/f-10d/info.html
F-10Dには、先読みブラウジングという機能が搭載されている。
表示しているWebページのリンク先をあらかじめ読み込んでおくというプリフェッチ機能だ。
表示するかもわからないページのデータをあらかじめ読み込むというこの機能。
無駄にCPU、バッテリーを消費するのは明らかです。

防水ゆえの通気性の悪さ

ARROWSは相変わらず防水モデルなのですが、防水という機能を望んでいるユーザが果たして何人いるのか。
防水の搭載と引き換えに本体の熱がこもって、機能制限かかりますけど、防水はそれに見合う程の機能なんでしょうかね。

ベンチマーク比較

 ハイパフォーマンスが謳われているクアッドコアCPU『Tegra 3』を搭載している『ARROWS Z ISW13F』、『ARROWS X F-10D』ですが、現時点でのベンチマーク結果を見たかぎりでは、少々残念な結果と言わざるを得ません。
クアッドコアスマホARROWSの最新実機でベンチマークテスト12本実施
http://weekly.ascii.jp/elem/000/000/097/97415/
F-10Dと、Galaxy S Ⅲのベンチマーク結果を比較すると、F-10DはTegra 3の性能が生かしきれていないみたいですね。

さまざまな問題

口コミ評価とクレーム - ARROWS X F-10D docomo - 富士通 | 投書箱.jp
http://toshobako.jp/電子・電化製品/富士通_arrows-x-f-10d-docomo 再起動ループは他のAndroidスマフォでもありますが、スリープ状態での過度なバッテリー消費、置くだけ充電完了画面が消えない、バッテリーの発熱など機種固有の問題があるようです。
また、発熱後は、スマフォの各種機能が制限されるという仕様。
制限される機能は以下。(他にもあるかもしれません)
  • Wifi使用不可
  • カメラ使用不可
  • 画面輝度強制低下
  • 充電不可

地雷モデル 2位

続いて第2位は、防水で大画面、ワンセグ、おサイフケータイ、赤外線などを搭載した、富士通モバイルコミュニケーションズの「ARROWS X」と「ARROWS Z」。国産メーカーによる”全部入り”フラッグシップモデルだが、防水のために気密度が高く熱がこもりやすいという欠点がある。ネットでは「スマホ型電子カイロ」と揶揄されるなど、あまりにも高温になることが話題になっている。

「本当に熱で停まって驚いた!だめかこれ!」
「クアッドコア搭載 ARROWS X F-10D に発熱の不具合?」
「発熱させない方法思いついたwww電源入れなきゃいいじゃんwww」
「防水ARROWSに熱がこもってリブート繰り返すので氷水に浸したら浸水して起動すらしなくなったでござる」
最新アンドロイド端末 買ってはいけない「地雷モデル」ワースト1位は? | 【EXドロイド(エックスドロイド)】
http://exdroid.jp/d/42285/
最新モデルの中では、地雷モデルという不名誉の称号を与えられてしまっています。

毎回といってもいいほど、さまざまな問題が出るARROWS。
次のモデルはどうなりますかね・・・。
あとがき
8/10、F-10Dを所持している人が、電源が入らなくなったということで、ドコモショップへ持ち込み。
最終的に新品と交換になりました。
ただ、新品になったからといってバッテリーの減りは変わらないとの事です・・・。
関連記事

2012年8月4日土曜日

[Android アプリレビュー] Toy Defender R

情報
  • URL:https://play.google.com/store/apps/details?id=manastone.game.td_r_google
  • デベロッパー:MANASTONE
  • 更新日:2012/07/12
  • レビュー時点でのバージョン:1.00.00
  • カテゴリ:アーケード&アクション
  • サイズ:31M
  • 価格:無料
  • レビュー時点での評価(5段階):
    ★★★★★
    ★★★★★
    (4.3)
  • レビュー時点での評価数:86
  • 実行環境:Xperia acro (IS11S) - Android OS 2.3.4
Toy Defender R
Toy Defender R
Toy Defender R
Toy Defender R
Toy Defender R
Toy Defender R
Toy Defender R
チャレンジモード
Toy Defender R
新しいエリアは有料・・・
おもちゃが舞台のタワーディフェンスゲーム。
おもちゃの兵隊の持ち主の子供がモンスターにさらわれそうになり、おもちゃの兵隊が抵抗するも力及ばずさらわれてしまい、子供を取り戻す旅にでかける・・・というようなストーリー。
タワーにかなり個性があり、他のタワーディフェンスにもあるような矢を打つタワー、爆弾を投げるタワーの他、兵舎のようなタワー(最大4ユニットの兵士を置くことが可能)、ヒーローと呼ばれるユニットを置くことが可能なタワーなどがある。
また、それぞれ、ブロックとよばれるポイントで強化する事が可能で、タワー自体の能力強化、別のタワーへの進化、補助効果の追加などを行う事が可能。
最近はこればっかり遊んでます。
チャレンジモードも増え、やり込み十分。
難易度も高すぎず、低すぎず、タワーディフェンス好きにオススメのゲーム。
攻略
基本的には、連射性が高いARCHERを中心に配置し、ARCHERの手前にHEROARMYを置いて足止め。
HEROや、ARMYを配備する位置は変更できるので、矢が届くくらいのエリアに配備する。
時々、コース中盤くらいに敵が降ってくるので対処できるようにコース後半の守りも忘れず。
SKILLはマップ中の敵を一掃出来ますが、課金しないと追加で入手できないようなので、慎重に。
マップをクリアしていくと、タワー自体を強化できるようになります。
Easyでクリアしても、アンロックされる要素は変わらないので、Normalが難しければEasyで一旦クリアするのもアリ。
BLOCK稼ぎは、チャレンジモードがオススメ。
チャレンジ条件によって、BLOCKを多く稼ぐことが出来ます。

Toy Defender R 攻略
Toy Defender R
動作
アプリケーションの安定性
価格
コストパフォーマンスが良いかどうか
関連記事

2012年8月1日水曜日

8/1 Android ニュースひとまとめ

TOLOTは、オンライン上で簡単にフォトブックの作成・注文ができるパーソナル・パブリッシング・サービス。専用のスマートフォンアプリ「TOLOT 500円フォトブック for au」を使えば、画面上で順番に写真を選んでいくだけでフォトブックを作成でき、注文することができる。

登壇したTOLOT代表取締役社長の末松亜斗夢氏は、同社のサービスを「コンピュータと紙の良さをつなぐ新しいパーソナル・パブリッシングのプラットフォームになるもの」と説明する。同氏によれば、日本のフォトブックサービス市場は欧米と比べるとまだまだ規模が小さいという。「人々のライフスタイルを変えてしまうような、新しいフォトブックサービスを展開していきたい」と力強く語った。

フォトブックはA6文庫本サイズ、64ページの体裁で自由にテキストが添えられるほか、オリジナルのテンプレートを利用すれば作品集やオリジナル手帳、ノート、メッセージブックなどとして仕上げることも可能だ。

送料は無料、1冊500円(消費税込み)でサービス展開している。印刷機・製本機は業界最上位機種を利用。説明員によれば、極限までオートメーション化し人件費を削減したことで、質の高いフォトブックを低価格で提供できるようになったのだという。
【レポート】KDDIが5億出資した将来有望なスマートフォンアプリとは? - Infoseek ニュース
http://news.infoseek.co.jp/article/01mycom20120801p72
出資見誤ってるんじゃ・・・。
こんなのいくらでもありそうで、画期的でもなんでもないし。
プリントサービスもしているみたいで、L版が5円は安いけど、インクの質はどうなんでしょうね。
家庭用プリンタと同じように退色するような質のインクだったら家庭用プリンタで印刷したほうがいいですし。
私はもっぱらカメラのキタムラ使ってます。
一番安心できるので。
さっそく起動してみると、

「ほら、笑って。僕は笑顔のキミが好きなんだ。ねぇ、どうして笑わないの? 今日、ほかの男と話していたときは笑っていたよねッ!!」

と、ドキッとするようなセリフが流れる。さらに、イラストをタップすると

「こんなに身体が震えて、かわいそうに。フフッ、僕が抱きしめてあげる……。」
「キミの携帯の待ち受け……なんで僕じゃないの?」
「キミに近づく男は、僕が排除してあげる。」
病んだカレシに束縛されるアプリ「ヤンデレカレシ」 アンドロイド版が登場 | 【EXドロイド(エックスドロイド)】
http://exdroid.jp/d/42194/
これがヤンデレなのか・・・
ストーカーにしか見えないw
アプリ名開発元評価価格マーケットリンク
ヤンデレカレシ for AndroidChillin Software
★★★★★
★★★★★
4.8
11
無料
ヤンデレ彼女 for AndroidChillin Software
★★★★★
★★★★★
4.7
250
無料
  • アプリ名のカッコ内の文字は英名のアプリ名
  • 評価のカッコ内の数値は評価数
  • 価格は記事投稿時のストア価格(アプリ内課金の価格を除く)
「みんなの野望Neo」は、東北から九州まで、全国61ヶ国の統一を目指す、簡単操作の本格戦国シミュレーションゲームです。
1565年と1582年から始まる2つのシナリオを選び、535人の武将の中から好きな武将でプレイすることができます。女性キャラとの結婚や育児、武将毎の特技、そしてロフィー集めやクリア達成率、各種ランキングといったやりこみ要素もあり、長く遊ぶことができます。

日本製パソコン全盛期の時代のオールドスタイルな歴史シミュレーションゲームの面白さを継承しつつ、ストレスになる要素を軽減した、初心者からゲーマーまで楽しめるゲームに仕上がっています。
4Gamer.net ― Android向け戦国SLG「みんなの野望Neo」の配信が本日スタート
http://www.4gamer.net/games/178/G017804/20120801132/
ボーシム研変化球来ましたね。
信長の野望好きとしてはなかなか、そそられます。
アプリ名開発元評価価格マーケットリンク
みんなの野望Neo 戦国SLGBoosim Lab
★★★★★
0.0
0
¥315
  • アプリ名のカッコ内の文字は英名のアプリ名
  • 評価のカッコ内の数値は評価数
  • 価格は記事投稿時のストア価格(アプリ内課金の価格を除く)
Sony Tablet の新モデルとされる資料が、ドイツ Mobiflip で公開されています。見た目は現行の Sony Tablet S を踏襲した、片方が膨らんだデザイン。ただ 10.1 - 20.6 mm と、それなりにあった厚みは、全体で4割ほど薄型になっています。9.4型、1280x800解像度というディスプレイはそのまま。

一方、プロセッサは Tegra 2 から Tegra 3 に。プラットフォームは Android 4.0 以降となっており、Bluetooth 3.0、1メガピクセルのフロントカメラなど細かな強化ポイントもあります。バッテリーは6000mAh。ストレージは 16 / 32 / 64 GB で、3G対応モデルも引き続き提供される模様です。
新 Sony Tablet は Xperia Tablet に改名? 薄型化、キーボード付きカバーも - Engadget Japanese
http://japanese.engadget.com/2012/08/01/xperia-tablet/
Sonyもキーボード付きか。
ノートPCユーザの層を狙ってるのかな。
まぁ、コスパ悪いと思いますけど。
関連記事

[Android アプリレビュー] 大盛グルメ食堂

情報
  • URL:https://play.google.com/store/apps/details?id=net.kairosoft.android.restaurant_ja
  • デベロッパー:Kairosoft Co.,Ltd
  • 更新日:2012/05/25
  • レビュー時点でのバージョン:1.0.2
  • カテゴリ:カジュアル
  • サイズ:4.9M
  • 価格:¥450
  • レビュー時点での評価(5段階):
    ★★★★★
    ★★★★★
    (4.3)
  • レビュー時点での評価数:252
  • 実行環境:Xperia acro (IS11S) - Android OS 2.3.4
大盛グルメ食堂
大盛グルメ食堂
大盛グルメ食堂
大盛グルメ食堂
大盛グルメ食堂
食堂を経営して、売り上げを伸ばしていく経営シュミレーション。
最初は面白かったのだが、メニューの多さに加え、メニューが次週に引き継がれない事も相まってなかなかコンプリートに時間がかかる。
そして、引き継がれる項目といえば、メニューのパラメタ、店員のスキルや給与など。
これにより、一歩間違うと、次週の攻略が資金不足となりかなり難しくなる。
3週ほどしましたが、ついに作業プレイになって放置してしまいました・・・。
引継ぎ項目が見直されれば楽しいかも。
攻略
2週目を考えると、初期メニューの強化が必須となる。
むしろ、1週目は初期メニューのみ強化でも良い。
店員のパラメタが高くなった2週目以降になって余裕が出てきたころに他のメニューの強化を行う。
私は1週目での強化はほとんどオムライスに費やしました。
店舗が増えたら一度に強化できるメニューも増えてほしいなぁ・・・。
大盛グルメ食堂
動作
アプリケーションの安定性
価格
コストパフォーマンスが良いかどうか
関連記事

IE8ではIE7互換モード、IE9は標準でレンダリングさせる方法

私は Internet Explorer が嫌いだ。
IE9になっても、まともにサポートされないHTML5。
という事で、このサイトはIEでの動作確認をあまり行っていない。
また、これまで、以下のMETAタグをヘッダに挿入し、強制的にIE7互換モードでレンダリングするようにしてきた。
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/>
これが無いと、IE8でまともに表示されない。
IE9まではこれで良かった。
IE9になり、CSSのサポートがマシになってきたので、IE8はIE7互換モード、IE9は標準でレンダリングさせたいと思い、調べていると以下のブログを見つけた。
Bloggerのカスタマイズでお馴染み、クリボウさんのブログ。
Internet Explorer でレイアウトが崩れる Blogger テンプレートは、IE 7 互換モードのタグを削除してみるといいかも | クリボウの Blogger Tips
http://www.kuribo.info/2012/07/blogger-ie7-compatibility-tag.html
IE9のブラウザーモードとドキュメントモード - hachy.net
http://www.hachy.net/2010/08/ie9.html 複数指定できるなんて知らなかった。
という事で、METAタグを以下のように書き換えてみた。
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7; IE=EmulateIE9"/>
これで、IE8はIE7互換モード、IE9は標準でレンダリングされるハズ。
関連記事