2013年11月10日日曜日

Nexus5をDocomo SIMで1週間使ってみた

Nexus5を発表初日に注文して、ドコモSIMで1週間ほど使ってみました。
NFC対応していますが、おサイフ携帯としては利用できません。少なくともEdyアプリは使えません。
その点を覗いては概ね満足しています。

今回は、Nexus5をドコモSIMで利用する際の設定をまとめたいと思います。

moperaの契約

そもそもの話ですが、ドコモSIMは通常契約ではドコモ端末以外では使えません。
SIMフリー端末でドコモSIMを利用するにはmoperaを契約する必要があります。
ネット(My Docomo)からでも契約できますが、 私はドコモショップでmoperaを契約しました。moperaの契約には月額525円がかかります。

moperaの契約が終われば、Nexus5を設定します。

初期設定

moperaを契約したSIMをNexus5に突き刺して、初期設定を行います。 基本は、普通のAndroidの設定を行えばよいです。ただし、モバイルネットワークはmoperaを選びます。 私の端末ではmoperaを選ぶだけで、問題なく通信が出来ました。
一応、ブラウザでウェブサイトが表示できることと電話が受信できることを確認して、初期設定は完了。 好みでアプリをインストールします。

spモードメールのGmail統合

Nexus5はドコモ端末ではないので、当然のことながらspモードが使えません。
最近ドコモメールが出たので、そちらを使っても良いのですが、 使い慣れたGmailアプリでspモードメールが見れればそれに越したことはありません。
昔はできなかったのですが、ドコモがiPhone販売を開始したことで、状況が変わりました。

要は、spモードのPOPサーバとSMTPサーバが公開されました。
GmailでPOPとSMTPの設定をして@docomo.ne.jpのメールを受信してしまえばいいわけです。

方法はこちらのサイトで詳しく書かれています。
ざっくりとした流れは、

  1. spモードが使えるAndroidを用意する。
  2. OperaブラウザでUser-AgentをiPhone 5Cに偽装
  3. ドコモのサポートページでspmodeprofile.mobileconfigというファイルをダウンロードする
  4. ダウンロードしたファイルに書いてあるPOPサーバ、SMTPサーバ、ユーザID、接続パスワードを利用してGmailのPOP設定をする
以上です。
これでGmailでspモードメールが受信できるようになりました。

その他の設定

あとはNexus5が使いやすくなるようにいろいろ設定しました。
まずはアプリ開発ができないといけないので、開発モードを有効化します。 例によって、ビルド番号連打で有効化出来ました。

あとはアプリ設定して、使いやすくしました。この辺は完全に好みなので、割愛します。

2013年8月7日水曜日

[HTML][CSS]width:100% - 100pxみたいなことを実現する方法

お久しぶりです。
今回はCSSネタ。

CSSを書いていて、相対値と絶対値を併用したいというケースはよくあると思います。
例えば、

.hoge {
    width: 100% - 100px
}
みたいなケースです。(上記のコードは動きません)

もうちょっとすると、calcが実装されて簡単に上記のようなコードが書けるようになるかもしれませんが、 現時点では難しいです。

しかし、こういうケースは試用として存在しうるので、 私は以下のようにして対処しています。

html

css

.div1 {
    position: relative;
    width: 100%;
    box-sizing: border-box;
    padding-left: 50px;
    padding-right: 50px;
}

.div2 {
    position: relative;
    width: 100%;
}

こうすると、.dvi2の幅が 100% - 100px になります。

2013年5月17日金曜日

[Windows8]ユーザを日本語で作ってしまった時の対処法

ちょっとした手違いで、Windows8でユーザを作るときに日本語名でユーザを作ってしまっていて、
ちょくちょくめんどくさいことになっていたので、ユーザ名を英語に変えました。

まずは、見かけのユーザ名を変えます。
これはコントロールパネルや Windowsキー+R で control userpasswords2 から変更できます。

次に、ホームディレクトリを日本語名に変更します。
ディレクトリ名を管理者権限で変更するのは危険なので、
英語名でシンボリックリンクを張って、レジストリで英語名を指定するという手段を取ります。

まず、管理者権限でコマンドプロンプトを立ち上げて、

cd c:\Users
mklink /J username ユーザ名

で英語名シンボリックリンクを作ります。
次にregeditで
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-******
で ProfileImagePath というパラメータを変更して完了。

これでPCを再起動すると、コマンドプロンプトを立ち上げるとパスが英語になっているはずです。

2013年4月20日土曜日

Google Code Jam 2013に挑戦(予選)

どうもです。

日本時間の4月13・14日にかけてGoogle Code Jam 2013の予選が開かれました。
完全に忘れててTwitterのTLで偶然思い出して滑りこみ参加。

予選は特に通過人数の制限もないようで、35点取ればいいらしいので、一時間くらいで解けそうな問題解いてRound 1の参加権だけとってしまいました。

今回はGoogle Code Jam 2013 予選(https://code.google.com/codejam/contest/2270488/dashboard)の参加記録です。
ちなみに言語はJavaで書きました。

問題A
4×4のOXゲームの勝利判定問題。
ワイルドカードを含めて縦横ななめでOかXが一列並んだほうが勝ち。

勝利パターンが10パターンしかないので、全探索してしまえばいい。

問題B
芝刈り機問題。
一直線に端から端まで刈ってしまう芝刈り機で、1ラインを刈り切るまで途中で芝刈り機の刈り取る高さは変更できない。
で、入力パターンの高さ(模様)になるようにかることができるかを判定できるかという問題。

[僕の回答]
刈り取るエリアは最大で100x100。芝の高さは1mm〜100mm
例として
2 1 2
1 1 1
2 1 2
はYesで、
2 2 2 2 2
2 1 1 1 2
2 1 2 1 2
2 1 1 1 2
2 2 2 2 2
はNoなので、
アルゴリズムとしては以下のようにしました。

0.テストケースの中のMAXとMINを求める
1.縦横のラインですべての数字が等しいラインが存在するかどうか判定
       → 存在しなければ、即No
2.すべての数字が等しいラインの数字がMINの場合、そのラインの数字を+1
3.2のあと配列にMINが存在するかどうか判定
       → 存在する場合は 1.を行う
       → 存在しない場合は MIN++して1.を行う。

以上をMIN==MAXになるまで回して、NoでなかったらYes

このアルゴを実装して、Smallケース、Largeケースともに正解

この時点で35点を超えたので、問題C以降は大して考えてないです。

[問題C]
回文問題
121のようなに左か読んでも右から読んでも同じ場合を回文という。
さらに、121は11x11で回文^2のようになっている。
このようにX=回文かつX=回文^2のようなXをfairと呼ぶことにする。
2つの自然数A,Bが与えられ、AとBの間のfairな自然数の個数を答えよという問題。

この問題の最大の課題はA,Bが非常に大きな数字であることA = 10^100までの可能性がある。
なので、通常の平方根 sqrt(A) が使えない。
そこで、2分探索で平方根を出す関数BigSquareを作成。
で、BigSquare(A)<= X <= BigSquare(B) なXを対象に
1.X=回文
2.X^2=回文
の2つを判定するアルゴを実装。

これでサクッとSmallはとける。
しかし、1.が思ってるより時間がかかってしまうことが判明。
Largeは制限時間内に解くことができなかった。

改良策としては、1.のようなXを瞬時に生成する必要がある。
とりあえず思いつくところとしては、桁数を決めて回文なXを生成してしまう。
ざっと計算量を考えてみる。
最大でA<=10^100
BigSquare(A)<=10^50
BigSquare(A)以下の回文の個数 <= 10^25
うーん、でかい。
これじゃ終らない。

後日、ちょっと考えて、制限時間内に解くことができました。
「2乗した時に各桁で繰り上がりが発生したら無視する」

繰り上がりが起きるのは以下の場合です。
1.各桁のどれかが4より大きい
2.各桁の総和が10以上
3.各桁に「2」が3個以上(3は論外)
これで、計算量がどの程度になるかというと、
2.で10^5くらいになります。
これなら余裕で計算出来ます。

しかし、10^5を1000回やるのは得策ではないので、
10^100までのfairな数をすべて生成してしまいます。
(この際に、fairな数がintを超えてしまうとまた考えないといけませんが、今回は40000個ほどで、特に問題はありませんでした)

fairな数のリストが出来たら、A<=X<=B (X is fair)なXをカウントしていくだけです。

以下にgithubにソース起きました。
https://github.com/taharactrl/google-code-jam-2013-practice-c/blob/master/MainC.java

これが本番中にできるようにならないとなあ

2013年3月7日木曜日

[Xperia][Root化]Xperiaを130でRoot化

今回はXperiaをファームウェアのバージョンが130の状態でもRoot化を維持する手法を紹介したいと思います。

前提として117のファームウェアの状態でRoot取得済みで117のftfを持っている必要があります。

ざっくり言うと、130でもRoot化で使用するセキュリホールが潰されているので、
1.117の状態で130Root化で必要な/data/local.procを作っておいて
2.Sony Update Serviceで130にアップデート
3.  2.で取得した130のデータからFlashToolで130のftfを作成
4.130のままではRootが取れないので、117のkernelだけ焼く
5.117のkernelならRootがとれるので、さくっとRootを取得
6.130のkernelを焼き直して完了


詳細を書きたいところですが、Root化スクリプトは僕が書いたものではないので、
参考にしたブログエントリを紹介するにとどめておこうと思います。
バッチファイルを読めば別にWindowsにこだわらずMacやLinuxからもadbコマンドで
Root化できるはずです。

参考ブログ:http://blog.huhka.com/2012/12/xperia-sx70d1130root.html?m=1

2013年2月16日土曜日

[Yeoman][Windows]Yeomanをインストールしてみた


YeomanをWindows8にインストールしてみました。
この手のツールをWindowsにインストールする時、依存関係が大変だったりして挫折することが多いです。
MacだったらportとかUbuntuだったらapt-getみたいなツールがWindowsにはないから。
と思っていましたが、Windows用のパッケージ管理ツールが存在するみたいです。
「Chocolatey」
これでコマンド一発でYeomanをインストール出来ました。

まずは、Chocolateyのインストール。
コマンドプロンプで次のコマンドを叩きます。
(ちなみに僕はコマンドプロンプトでUnixコマンドが使えるようにしてます。そのへんはGoogle先生にお任せ)

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('http://bit.ly/psChocInstall'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bin

これだけ。

次にYeomanのインストール。これもコマンド一発
cinst yeoman
これでしばらく待ってると、
Ruby、Sass、Compass、Node、Git、PhantomJS、Python、Yeoman
と順にインストールしてくれます。

あとは別のコマンドプロンプトを立ち上げて
yeoman init
が動くことを確認して終了。
なんて簡単!

Chocolateyで管理できるパッケージが増えないかな~

2013年2月13日水曜日

[Android][CSS3]Android WebViewのCSS3対応状況

まじめにWebViewがどの程度CSS3を実装してるか知らなかったので、
ACID3で調べました。

まあ、結果はXperia GXだと100点だったので、現時点で使用に存在するCSS3は全て実装されている。
つまり、可能な限りWebアプリのアニメーションはCSSに投げてしまえば良い。
なぜなら、CSSアニメーションはGPUアクセラレーションが効くから。