Android/Xperia

Xperia Playの運用

Posted by dowell on

Xperia Playをせっかく買ったので、運用を検討してみた。

使い方としては、Xperia(初代)は気に入っているので
たまに遊ぶ2台持ちにする予定。

sim 4

SIM差し替えも考えながら、イロイロ調べたら。

●Docomo SPモード
APにつながらなかった。
スマートフォンケアに聞いたら、対象機種以外はNG+パケホ対象外になる可能性大との事、多分「10,395円」コース

●Docomo mopera
きっといけるはず、だけどコレもパケホ対象外になる可能性大との事。
もし、技適マークありの機種をDocomoに持っていっても、テザリング機能がある場合は「10,395円」コースになるそうです。
「IMEI」とかで見て、ホワイトリスト以外はアウト扱いにする?ようです。(詳しくは分かりません。)

●UQ WiMAXのモバイルルータ
持ち物増える+技適マークないからホントはNG

●ヨドバシカメラのSIM
詳しくはわからないけど、「パケット使い放題のプランで月額4,995円」安いと思う。
だけど約5000円なら差し替えて「10,395円」コースでも良い様な気がしてくる。

●b-mobile fair
回線速度が早くてお試し(縛りがない)のは良いけど、120日間または1Gは自分としては9,800円の価値がなかった。

●b-mobile U300
300kb縛りで絶対に早くない、でも安い&縛りがない。

6ヶ月+1ヶ月のお得なパッケージがまだアマゾンに残っていたのと
差し替えが面倒に感じてきたでの、結果として「b-mobile U300」に決定。

2日程で届いたので、さっそく開封
b-mobile U300

b-mobileのロゴはなくて、完璧にDocomoのFomaカードです。
Foma

まず「186-0120-915-886」へ電話して、SIMカードのb-mobile U300の電話番号?を入力します。
番号はSIMカードのケース裏にテープで貼ってあります。

5分ほどで利用可能になるといわれるので
APの設定を行う。

パッケージに記載されている下記設定を行う。

AP名:bmobile
APN:dm.jplat.net
ユーザ:bmobile@sw
パスワード:bmobile

b-mobileのHPだと

AP名:bmobile
APN:dm.jplat.net
ユーザ:bmobile@u300
パスワード:bmobile

ユーザ名が違うけど、どっちでもつながりました。

U300

使った感想ですが、とにかく遅い。。
W-ZERO3を使っていたことがありますが、それに近い物を感じました。

アプリのダウンロードはちょっと厳しいかもしれない。

※Xperia Playは技適マークがないので、国内でWi-Fiは使ってはダメです、その辺は夢の話です。

Android/Xperia

Xperia Playで遊んでみた!

Posted by dowell on

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

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

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

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

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

Android/Xperia

Xperia Playが届いた!

Posted by dowell on

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

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

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

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

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

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

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

といわれました。

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

Android/Xperia

Xperia Playがすぐそこまで!

Posted by dowell on

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

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

FedEx

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

node.js

Node.jsのイベントループ

Posted by dowell on

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とは

Posted by dowell on

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のパスワード忘れ

Posted by dowell on

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

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

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

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

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

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

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

mysql

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

Posted by dowell on

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

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

答えはmy.confへの設定

sync_binlog=1

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

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

mysql

MySQLのバックアップ

Posted by dowell on

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

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

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 

ってな感じです。