Xperia Playで遊んでみた!

Xperia Playで遊んでみた。
Play_clash
クラッシュ・バンディクーをやってみましたが、ラグもなく結構遊べます。

よくわかってないのですが、クラッシュ・バンディクーと他のゲームは扱いが違う?ようで
Androidアプリで、Xperia Playに最適化されたものと
クラッシュ・バンディクーはPlayStation Suiteのコンテンツのようです。

他のゲームを探してみると、アサシンクリードなど、結構イロイロありました。
※アサシンクリードはアクセスしたら、ありません適な表示になりました。
list

あと本体カラーは黒のみだと思っていましたが
発売日くらいに白もあると知って、Xperiaが白なので迷いましたが
今回の黒は光沢のあるきれいな黒なので、満足しています。
ura

ケースの情報はあまりないので、ガジェット系の情報サイトを見ながら探しています。
Engadget
物欲.ネット

Xperia Playが届いた!

Xperia Playが届きました。
Play
クラッシュ・バンディクーとなぞのブルース・リーの格闘ゲームなど
いくつかゲームがプリインストールされていました。

スライドさせてゲームパッド?を出すと、ゲーム画面が表示されます。
Game
クラッシュ・バンディクーは起動するとなつかしのPS起動時のPSロゴが表示されます。

設定が悪かったのかもしれませんが、SPモードのAPへアクセスは出来なかったので
モペラ生活へ戻るかもしれません。

ドコモショップに電話で聞きましたが

・SPモードにつながれば、SIMフリーでもOKです。
・XperiaはAndroidなので大丈夫だと思います。

という微妙な返答だったのでスマートフォンケアに聞いたら

・テザリング機能がなければ1万以下の定額で、あれば1万300円コース
・SPモードは規制してるのでつながらないハズ
・ドコモ以外のSIMフリーは基本テザリング機能アリなので1万300円コース

といわれました。

Sony好きとして、次はうわさのSonyタブレットに期待。

Xperia Playがすぐそこまで!

eXpansysが発送済みなった後、次はFedExからメールが届きました。

荷物追跡画面のURLが記載されており、香港を4/4の午後出発して
4/5の朝には成田空港まで来ています。

FedEx

FedExによれば、本日夕方に到着予定。

Xperia Playがもうすぐ届く!

eXpansysからメールが届きました。

Your order has been shipped.

注文履歴を確認してみると

Xperia Play

4営業日で届く予定。。

Node.jsのイベントループ

Node.jsのイベントループについて

JavaScriptはシングルスレッドなので「並行処理」を行うために、「ノンブロッキングI/O」で「非同期処理」を実現しており
Node.jsはイベントループと呼ばれるモデルを採用しています。

イベントループのイベントキューにイベントが登録され、イベントハンドラを実行します。
イベントハンドラの完了した結果は、イベントキューにコールバック関数を登録することで受け取ります。

そのため、シングルスレッドでブロックするI/Oを行った場合、そのイベント完了後に次のイベントが実行されてしまう。
並行処理させるためには、ノンブロッキングI/Oを使ってイベントの完了を待たずに次のイベントハンドラを実行させます。

Node.jsはイベントを生成と処理の制御を行うので
ファイルのリード、DBへのクエリ発行、HTTPサーバがリクエストを受けた時などにイベントが生成されます。

例えばテストファイルを作って試すとわかります。

test.js

var oHttp = require('http');
var oFs = require('fs');
oHttp.createServer(function(req, res) {
    console.log("Start");
    oFs.readFile('index.txt', function(err, content) {
        res.writeHead(200, { 'Content-Type':'text/html; charset=utf-8' });
        res.end(content);
        console.log("Response");
    });
    console.log("End");
}).listen(8080, '127.0.0.1');
console.log('ListenStart');

読み込むファイル

<html/>
 <head/>
   <title/>index</title/>
 </head/>
  <body/> みれた? </body/>
</html/>

実行

[root@dti-vps-srv34 ~]#node test.js

ブラウザで「http://127.0.0.1:8080」にアクセス。

[root@dti-vps-srv34 ~]#node test.js
ListenStart
Start
End
Response

EndがResponseより先になっています。
これはreadFile()にコールバック関数を登録しているので、非同期となり
読み込み完了した時点で関数が呼び出されているからです。

プログラムの書き方によっては非同期の部分をロックしてしまうので注意。

Node.jsとは

Node.jsとはサーバサイドJavaScriptの一種

サーバサイドJavaScriptとはサーバサイドのアプリケーションの実装言語として、JavaScriptを使用する言語および環境のこと
ブラウザ(クライアント)サイドと同じ開発言語で、サーバサイドの開発が出来るので、開発効率が上がるといわれている。

サーバサイドJavaScriptにはこれらがある。

  • Node.js
    googleが開発したエンジン、V8で実行する環境
  • Rhino
    JavaVM上で実行するJavaScript言語処理系
  • Aptana Jaxer
    Aptana社がオープンソースとして配布している。

でもそれだけならそんなに自分は興味を持ちませんでした。
node.jsの何がすごいと感じたかというと

  • WebSocketが簡単そう。
  • サーバーの負荷分散に期待あり。

です。

WebSocketが簡単そうは「node.jsでTwitteのタイムライン取得」でも書きましたが
ほんとに簡単に実装が出来ました。
npmというパッケージマネージャーでフレームワークなどのライブラリを取り込めるのでいろいろ可能性があります。

負荷分散はC10k 問題で「apache vs nginx」=「スレッド対イベントループ」を取り上げています。
Apacheはスレッド、nginx はイベントループで、スレッドモデルは実行スタックをコピーするので
スレッド(アクセス)が増えるほどメモリ使用率が上昇するが、イベントループはプロセスは1個なので
メモリ使用量はあまり上がらないので、大量のアクセスに関してはイベントループが有利ということ。

そして、Node.jsは後者のイベントループ
これによって、特定の重い処理を待つことなく、次の入力を受け取れるので
トランザクションを重視するより、短縮URLのようなIOを優先されるような場合で活用できそう。

MySQLのパスワード忘れ

本番稼動しているサーバならともかく、テストで色々やっていると
MySQLのrootのパスワードを忘れてしまったことがあります。

対策はこれをつけて、MySQLの再起動を行うと、パスワード認証なしでアクセスできます。

vi /etc/my.conf
追加→skip-grant-tables

mysql_safeの起動オプションでも指定できます。
その場合は「–skip-grant-tables」で実行します。

起動後、MySQLへログインして、パスワードのリセットを行いましょう。

SET PASSWORD FOR ユーザ@"ホスト名"=password('パスワード');

リセット後は「skip-grant-tables」は危ないので、必ず消してください。

MySQLのバイナリログへの書き込み

バックアップとしてバイナリログのことを書いたが
動きのあるサイトのバイナリログを見てたら、どうやら書き込みが遅い?というかリアルタイムではない。

環境にもよるのかわかりませんが、ある程度溜まってから書き込まれます。

答えはmy.confへの設定

sync_binlog=1

これでコミットがリアルタイムに反映されるようになった。

いろいろな資料を見ていると
InnoDBの場合はデータファイルへの書き込みやInnoDBログファイルの方が
IOは多いらしいので、書き込みドライブを変える等すれば性能低下はすくなく、対障害性をあげられそう。

MySQLのバックアップ

サーバ構築するたびに思い出しがてら調べるのが面倒なので、メモ

一番簡単?なコールドバックアップから。
インスタンスを止めた上体から全バックアップする。

MySQLのdatadirは「/data/mysql」の仮定ですすめます。

まずは、停止

①/etc/rc.d/init.d/mysqld stop
②mysqladmin shutdown --user=root --password=pass123 --soket=/data/mysql/mysql.sock
③kill 'cat /data/mysql/mysql.sock'

止まったか確認

ps -ef | grep mysqld grep -v grep

ソケットの場所などは環境に合わせてください。

止まっていれば

cp -rp /data/mysql /home/backup/mysql-backup

この場合は、ドライブの異なるhomeへとりました。
外部デバイスなどに逃がすか、とった後別のサーバへ転送したほうがいいです。

これで一式を退避させることができるので、戻す場合は

rm -rf /data/mysql
cp -rp /home/backup/mysql-backup /data/mysql 

でもこの方法だと、止めなきゃいけない+最新には戻せない(かも)なので
タイミングにもよるけど、運用には耐えられない。
なので、1週間に1回日曜にフルでとって、それ以外トランザクションログを使ってできる限り最新状態に近づける。

トランザクションファイルはmy.confに設定を追加する。
サーバ構築するたびに思い出しがてら調べるのが面倒なので、メモ

一番簡単?なコールドバックアップから。
インスタンスを止めた上体から全バックアップする。

mysqlのdatadirは「/data/mysql」の仮定ですすめます。

まずは、停止

①/etc/rc.d/init.d/mysqld stop
②mysqladmin shutdown --user=root --password=pass123 --soket=/data/mysql/mysql.sock
③kill 'cat /data/mysql/mysql.sock'

止まったか確認

ps -ef | grep mysqld grep -v grep

ソケットの場所などは環境に合わせてください。

mkdir /data/mysql/bin_log
chown mysql:mysql /data/mysql/bin_log
vi my.conf
追加 → log-bin=/data/mysql/bin_log/mysqllog

設定が終わったら、mysqlを再起動。
これで、/data/mysql/bin_log/に「mysqllog.000001」というログができます。

この中にはトランザクションの情報が記載されています。
バイナリ形式なので、見たい場合は

mysqlbinlog --disable-log-bin /data/mysql/bin_log/mysqllog.000001 > /tmp/mysqllog.000001.sql 

でSQL形式に変換できます。

ログはどんどん書き込まれるので、スイッチする場合は

mysqladmin flush-log --user=root --password=pass123 --soket=/data/mysql/mysql.sock

これで、連番の別ファイルが作成されてそっちに書き込まれるようになります。

2つのバイナリを反映させる場合は

mysqlbinlog --disable-log-bin /data/mysql/bin_log/mysqllog.000001 /data/mysql/bin_log/mysqllog.000002 > /tmp/mysqllog.sql 
mysql --user=root --password=pass123 --soket=/data/mysql/mysql.sock < /tmp/mysqllog.sql 

ってな感じです。

XperiaがAndroid2.3へアップデート予定

SonyEricssonが Xperia X10のAndroid2.3(Gingerbread)へのアップグレードを公表しました。

去年の今頃に購入し、1.6から2.1へアップデートされ、シングルタッチからマルチタッチ対応など、今までの携帯ではありえないほどの
アップデートがされてきたXperiaですが、さらに2.3へのアップグレード予定が発表されました。
情報はSony Ericsson Product Blogで公開されています。

ソース

エキサイトでの翻訳抜粋

 私たちは、今年の終わりのQ2/前のQ3のときに一般的な貿易キットへの
XperiaTM X10にアップグレードをAndroid Gingerbreadにもたらすのを計画しています。 
私たちは、ずっとあなたの要求を聞いていますが、今日までこれを確認できませんでした。
 2011年の私たちの製品のXperiaTM PLAY、XperiaTMアーク、
およびXperiaTMへのかなりの作業は、新実際に特別プロジェクトにおける仕事が
GingerbreadをXperiaTM X10に私たちがもたらし始めるのを可能にしました。

XDAなどではカスタム2.3が導入されていたので
無理は無いだろうと思っていましたがまさかの公式アップデートです。

メモリ以外は、めだって?大きく進化していないArcにどこまで追いつけるか見ものです。