2012/04/19

Xperia acro HD (IS12S) で公式にはサポートされていないアプリをインストールして利用できる(かもしれない) 方法

先日、IS03 の調子悪さに我慢の限界が来て衝動的に Xperia acro HD (IS12S) に機種変してしまった。
IS03 で 2 年間頑張るつもりだったけど、ムリだった。
カクカク、もっさりはまだ我慢できるが、しょっちゅう SD カードを認識しなくなって一日に 2, 3 回は再起動する生活には耐えられなかった。
docomo に MNP することも考えたが、誰でも割の解約月じゃないのと、最近の docomo のニュースにはあまりいいイメージがないため見送った。

で、この IS12S だがすごいね。サクサク快適。
これまで IS03 で twicca や MT2 のページングがもたつくのは 3G 回線だしなーと思っていたんだけど、違った。単なる処理能力不足だった。
非常に満足である。
IS03 の名誉のために言うと、IS03 は名機だった。
初のおサイフスマホとして購入した価値は十二分にあった。
バッテリーの持ちや安定性への不満はあったものの、国産スマホ黎明期に十分その役割を果たしたと思う。
ありがとう IS03、IS04 にしなくて本当によかった。

さて、この IS12S にも不満はある。
メニューボタンと戻るボタンがこれまでと逆になってるとか、下にありすぎてタッチしにくいとかあるが、これは IS03 への慣れからくるものだから仕方ない。
一番の問題は、対応していないアプリが結構あることだ。

  • 楽天銀行
  • ローソンモバイルアプリ(のうちのモバイルPONTA)
  • SQUARE ENIX MARKET のゲーム全般
購入してまだ3日だが、ぶち当たっただけでもこれだけある。
どれもかなりメジャーなアプリだし、どれも Xperia acro (IS11S) には対応しているのにだ。
今回、上記のうちいくつか解決できたのでそのメモを残しておく。

au one market 経由でインストール可能な場合がある

楽天銀行はなぜか Google Play で検索しても検索結果に表示されなかった。
PC からは検索結果に表示されるのに。
で、まあ PC で確認したところ、IS12S には対応していなかったのでそのせいかな?と半分納得しておいた。
唯一持ってるネットバンクなのでどうにかならんかなーと試行錯誤してみた。
IS12S で楽天銀行のサイトにアクセスすると Google Play ではなく、au one market に誘導される。
そして au one market からだとダウンロードできるし、インストールできた。
振込はまだ試していないが、残高確認などは問題ないようだ。

IS11S を装ったら可能な場合がある

ローソンモバイルはインストールできるし、検索機能などは使用できる。
ただモバイル PONTA が対応していない。
モバイル PONTA の認証時に未対応です。とはじかれてしまうのだ。
PONTA カードを持ち歩かなくて済むから導入した俺にとってはまったく意味がないアプリになってしまう。
調べてみると、どうやらブラウザの UserAgent で機種判別しているらしく、UserAgent を偽装してしまえば認証できるとのことだった。
  1. Opera モバイルをインストールする
  2. Opera の URL 欄に opera:config と入力して、設定画面を表示させる
  3. かなり下の方に User Prefs という項目があるのでタップして詳細項目を表示させる
  4. 詳細項目の中に Custom User-Agent という項目があるので、そこに "Mozilla/5.0 (Linux; U; Android 2.3.3; ja-jp; SonyEricssonIS11S Build/3.0.1.C.0.33) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1" と入力する。(コーテーションは除く)
  5. この状態の Opera でモバイル PONTA の認証を行う
これで無事、モバイル PONTA の認証ができ、実際にローソンでポイントを貯めることができた。

下記のサイトを参考にさせて頂きました。ありがとうございました。

では、SQUARE ENIX MARKET は?

SQUARE ENIX MARKET のゲームはブラウザからダウンロードするため、同じく UserAgent の偽装でいけるんじゃないか?
アクセスしてみると、偽装しないときは「未対応です」と表示されてダウンロードできないが、偽装した場合だとダウンロードボタンが表示されて、ダウンロードすることができた。
しかし、インストール時に「お使いの機種は未対応です。」と言われてしまった。
さすがにこれは現時点ではどうしようもないだろうと諦めた。
早いとこ対応お願いします。ENIX SQUARE さん

さくら VPS の Ubuntu Server 10.04 に色々導入 vol.1

iptables の設定も終わったので、そろそろ本格的にさくら VPS の環境を作っていきましょう。
とりあえず、サーバに導入するものは・・・
  • Webサーバ(済)
  • データベース
  • ソース管理
  • ファイルサーバ
  • Java
  • Ruby
ぐらいかな、現状だと。
ソース管理はこれを機に Git を導入します。
Subversion は使う要件が出てきてからでいいや。
データベースは PostgreSQL を入れる。MySQL よりも PostgreSQL 派です。
ファイルサーバは Webdav 入れるかどうか迷い中。個人で使うなら Git でいいし。
まあ、どれも今まで何度もインストールしてきているので大して問題ないはず。
# base softwares
$ sudo aptitude install -y build-essential zsh vim-nox lv

# PostgreSQL
$ sudo aptitude install -y postgresql libpq-dev

# Git
$ sudo aptitude install -y git-core

# Java
$ sudo aptitude install -y python-software-properties
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo aptitude update
$ sudo aptitude install -y sun-java6-jdk
ここで、問題発生。
なぜか sun-java6-jdk がインストールできない。
今まではこれで大丈夫だったのに。
No candidate version found for sun-java6-jdk
とか言われます。
どうやら Oracle になって、なんだかんだのためになくなったようで・・・
先日も Java API で色々あったよねぇ、そういや。
という訳で、ぐぐる。

とりあえず、すえん学録: Ubuntu 10.10(64bit版)にJDK6をインストールするを見つけた。(候補1)
できれば、aptitude 完結したいので保留。
次にsun-java6-jdk not available - CCcam Forumを見つけた。(候補2)
Debian のリポジトリを登録するのは、他に影響でないのか?怪しいので保留。
そして、Ubuntu 10.04 LTSにSun Javaをインストール - hrendohの日記こんなのもあった。(候補3)
先月末の話なので、これもダメかもしれないが前2つよりはシンプルである。
あと、これで入るのは少しバージョンが古いようだ。

とまあ、どれも一長一短ではあるがシンプルさを考慮して候補3→候補2→候補1の順で試すことにする。

$ sudo add-apt-repository ppa:sun-java-community-team/sun-java6
$ sudo aptitude update
$ sudo aptitude install -y sun-java6-jdk
なんか、依存パッケージがインストールできて肝心の Java のインストールでコケた。
もっかい、sudo aptitude install -y sun-java6-jdk したら無事インストールできた。
というわけで候補2、候補1を試すまでもなく無事に java がインストールできた。
バージョンが少し古いが、大昔ってわけじゃないのでとりあえずよしとしよう。
しかし、この先 Java のインストールでめんどくさくなるのは正直勘弁していただきたいね。
apt や yum 向けのリポジトリを Oracle で管理していただきたいものである。

さくら VPS (Ubuntu Server 10.04)設定エントリ一覧

2012/04/18

Google Apps (+α) 導入時にやったこと

Google Apps 導入時にやったことをメモしておく。
1. ここから Google Apps を mkt-sys.jp で登録
2. さくら VPS のサーバに apache を導入。コマンド一発。
$ sudo aptitude install apache2
3. さくら VPS のサーバに所有権確認用のファイルを配置。
4. お名前.com にてレンタル DNS レコードを設定。
ホスト名 TYPE VALUE 優先 備考
未入力 MX ASPMX.L.GOOGLE.COM. 10 メール用
未入力 MX ALT1.ASPMX.L.GOOGLE.COM. 20 メール用
未入力 MX ALT2.ASPMX.L.GOOGLE.COM. 20 メール用
未入力 MX ASPMX2.GOOGLEMAIL.COM. 30 メール用
未入力 MX ASPMX3.GOOGLEMAIL.COM. 30 メール用
未入力 MX ASPMX4.GOOGLEMAIL.COM. 30 メール用
未入力 MX ASPMX5.GOOGLEMAIL.COM. 30 メール用
mail CNAME ghs.google.com. メールサイトURLを http://mail.mkt-sys.jp/ にする
blog CNAME ghs.google.com. blogger をカスタムドメインにする

その結果、こうなる。(塗りつぶしはさくら VPS の固定IP)
5. Google Apps にてメールの URL を http://mail.mkt-sys.jp/ に変更する。
6. Blogger にて URL を http://blog.mkt-sys.jp/ に変更する。
今のところ Google Apps のメール以外は使う予定なしなので、ここまでやって反映されるまで放置したらおしまい。

さくら VPS (Ubuntu Server 10.04)設定エントリ一覧

独自ドメインに切り替えた

フリーランスになって一ヶ月半が過ぎた。
フリーになったので自分のドメインのメールアカウントを Google Apps で作成した。
せっかくなので、この blog もそっちのドメインで運用していこうと思います。
というわけで、今後は http://blog.mkt-sys.jp/ でよろしくお願いします。

2012/04/17

Ubuntu Server 10.04 に iptables の設定を行う

さくら VPS の Ubuntu Server 10.04 では、iptables の初期設定はオールスルーになっている。
$ sudo iptables -L
Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
これはさすがにアレなので、設定しましょう。
# 設定の永続化に使用する iptables-persistent をインストール
$ sudo aptitude install iptables-persistent

# iptables 用ディレクトリの作成
$ sudo mkdir /etc/iptables

# 設定スクリプトを作成(内容は後述)
$ sudo vi /etc/iptables/iptables.sh

# 設定スクリプトの実行
$ sudo sh /etc/iptables/iptables.sh

# 正しく設定されているかを確認
$ sudo iptables -L
Chain INPUT (policy DROP) target prot opt source destination ACCEPT all -- anywhere anywhere DROP all -- 10.0.0.0/8 anywhere DROP all -- 172.16.0.0/12 anywhere DROP all -- 192.168.0.0/16 anywhere ACCEPT icmp -- anywhere anywhere icmp echo-request ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT tcp -- anywhere anywhere tcp dpt:www ACCEPT tcp -- anywhere anywhere tcp dpt:https ACCEPT tcp -- anywhere anywhere tcp dpt:ssh LOG all -- anywhere anywhere limit: avg 1/sec burst 5 LOG level warning prefix '[IPTABLES INPUT] : ' DROP all -- anywhere anywhere Chain FORWARD (policy DROP) target prot opt source destination LOG all -- anywhere anywhere limit: avg 1/sec burst 5 LOG level warning prefix '[IPTABLES FORWARD] : ' DROP all -- anywhere anywhere Chain OUTPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere
# iptables.rule が作成されているかを確認 $ ls /etc/iptables
iptables.rule iptables.sh
# 現在の設定を永続化する $ sudo service iptables-persistent start
iptables.sh の中身はこんな感じ
#!/bin/sh

# テーブル初期化
/sbin/iptables -F
# 定義チェインを削除
/sbin/iptables -X

# デフォルトルールの設定(受信:破棄, 送信:許可, 通過:破棄)
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD DROP

# 自ホストからのアクセスを許可
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT

# プライベートIPアドレスからのアクセスを破棄
/sbin/iptables -A INPUT -s 10.0.0.0/8 -j DROP
/sbin/iptables -A INPUT -s 172.16.0.0/12 -j DROP
/sbin/iptables -A INPUT -s 192.168.0.0/16 -j DROP

# ping を許可
/sbin/iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

# 内部から行ったアクセスに対する外部からの返答アクセスを許可
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 拒否IPからのアクセスを破棄
# 拒否IPは /etc/iptables/drop_ip に1行ごとに記述する
if [ -s /etc/iptables/drop_ip ]; then
    for ip in `cat /etc/iptables/drop_ip`
    do 
        /sbin/iptables -I INPUT -s $ip -j DROP
    done
fi

# 各サービスで使用するポートを許可
# HTTP
/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# HTTPS
/sbin/iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# ssh
/sbin/iptables -A INPUT -p tcp --dport 12345 -j ACCEPT

# 上記のルールにマッチしなかったアクセスはログを記録して破棄
/sbin/iptables -A INPUT -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES INPUT] : '
/sbin/iptables -A INPUT -j DROP
/sbin/iptables -A FORWARD -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES FORWARD] : '
/sbin/iptables -A FORWARD -j DROP

# 保存
/sbin/iptables-save > /etc/iptables/iptables.rule

さくら VPS (Ubuntu Server 10.04)設定エントリ一覧

2012/04/16

お名前.comの独自ドメインをさくらVPSに割り当てる

せっかく VPS を契約したのだから独自ドメインで運用したい。
というわけで、お名前.comで取得した独自ドメインにさくらVPSを割り当てましょう。
  • お名前.comにログイン
  • ドメイン設定 → ネームサーバーの設定 → レンタル DNS レコード設定
  • 設定するドメインを選択
  • サブドメイン無しで、TYPE: A、VALUE: さくら VPS の IP アドレスを登録
  • サブドメイン www に対して、TYPE: A、VALUE: さくら VPS の IP アドレスを登録
  • ポチポチ進めれば完了
  • しばらくして、登録されていることを確認する
ここまでで、ドメイン側の設定は終わり。
次は、サーバ側を変更する。
まずは、さくらのVPSホームでホスト名を変更する。
ssh でログインし、 /etc/hostname と /etc/hosts の該当箇所を変更する。
サーバを再起動すれば設定完了。お疲れ様でした。

Ubuntu Server 10.04 の ssh ポートを変更する

前回 ssh を鍵形式ログインに変更したけど、念の為ポートも変更しましょう。
# クライアントから ssh でログイン
% ssh user@[server]

# サーバーの sshd_config を編集
$ sudo vi /etc/ssh/sshd_config
- Port 22 + Port 12345
# /etc/services も変更しておく $ sudo vi /etc/services
- ssh 22/tcp # SSH Remote Login Protocol - ssh 22/udp + ssh 12345/tcp # SSH Remote Login Protocol + ssh 12345/udp
# サービス再起動 $ sudo service ssh restart
ssh start/running, process 6331
# 一旦接続を閉じる $ exit
logout Connection to [server] closed.
# 再度ログイン % ssh user@[server]
ssh: connect to host [server] port 22: Connection refused
ポート 22 でログインできなくなりました。
ログインするにはポートを指定すればOK。
% ssh user@[server] -p 12345

2012/04/13

Ubuntu Server 10.04 に SSH を設定する

まずは、パスワードで SSH ログイン。
最初から ssh は入っているようなので、設定ファイルを書き換える。
# vim 入ってなかった
$ sudo vi /etc/ssh/sshd_config
# root でのログインを不可 - PermitRootLogin yes + PermitRootLogin no
まだカギを生成指定なので、とりあえず root でのログインだけ封じておく。
サービスを再起動
$ sudo service ssh restart
ssh start/running, process 1043
パスワードでログインだと不安なので、鍵を使ったログインにしましょう。
クライアントの Ubuntu で鍵を生成。
% ssh-keygen -t rsa
Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa): # 何も入力せず Enter Enter passphrase (empty for no passphrase): # SSH用パスワードの入力 Enter same passphrase again: # パスワード確認のためもう一度入力 Your identification has been saved in /home/user/.ssh/id_rsa. Your public key has been saved in /home/user/.ssh/id_rsa.pub. The key fingerprint is: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX user@host
これで $HOME/.ssh/ 以下に id_rsa, id_rsa.pub が作成された。
% ls -al ~/.ssh
合計 20 drwx------ 2 user user 4096 2012-04-13 07:14 . drwxr-xr-x 57 user user 4096 2012-04-13 07:19 .. -rw------- 1 user user 1743 2012-04-13 07:14 id_rsa -rw-r--r-- 1 user user 398 2012-04-13 07:14 id_rsa.pub -rw-r--r-- 1 user user 442 2012-04-13 06:46 known_hosts
id_rsa が秘密鍵で、id_rsa.pub が公開鍵なので id_rsa.pub を接続したい先のサーバに登録してやる。
% scp .ssh/id_rsa.pub サーバのIPアドレス:~/
id_rsa.pub 100% 398 0.4KB/s 00:00
次はサーバ側でこの鍵を登録する。
# なかったので作成
$ mkdir .ssh
# 登録。最初だから > でもいいけど、今後のことを考えて >> でやるようにしとく
$ cat id_rsa.pub >> .ssh/authorized_keys
これで今後、このクライアントからのアクセスは鍵方式での認証になる。

2012/04/12

さくらのVPS 2G に Ubuntu Server 10.04 をインストール

先日さくらのVPS 2G を契約した。
契約時点で Cent OS が自動的にインストールされているので、これを Ubuntu Server に変更しましょう。
コントロールパネルでOS再インストールを選択。
カスタムOSインストールへ。
OSを選択
実行をクリックすると QEMU が立ち上がる。
Java が実行できる必要があるので、インストールされていて、ブラウザで実行できる必要がある。
キーボードを選択。
OSの言語選択は出て来なかった。
キーボードのレイアウトを選択。
ブラウザ上に表示されているIPアドレスを入力。
ネットマスクを入力。
デフォルトとは違うこともあるので注意。
ゲートウェイを登録
パーティションの種類を選択。
ディスクを選択。
パーティションを確認される。
インストール開始。
管理者ユーザーの名前を入力。
めんどくさかったら、後で登録する管理ユーザーと同じでいい。
管理者ユーザーを登録。
管理者ユーザーのパスワードを登録。
確認のためパスワードをもっかい入力。
ホームディレクトリを暗号化するかどうか選択。
残りのインストールが行われる。
インストール完了。お疲れ様でした。
各選択肢でどれを選ぶかは用途にあわせてご自由に。
言われるままに進めるだけなので非常に簡単です。
さて、これから少しづつ環境を作っていこう。

2012/02/07

PostgreSQL の interval (と reltime)

PostgreSQL にて n ヶ月後の初日や最終日を文字列で返す関数を登録しようとした。
イメージとしてはこんな感じ。
create or replace function first_date_string_on_month(integer)
returns varchar
as 
$BODY$select to_char(date_trunc('month', current_date + interval '$1 months'), 'YYYY/MM/DD')$BODY$
language 'sql';
だがこれだとうまくいかなくて、引数に何を与えても 2012/03/01 が返ってくる。
'$1 months' が '1 months' とみなされている気がする。

で、次にやってみたのがこんな感じ。
create or replace function first_date_string_on_month(integer)
returns varchar
as 
$BODY$select to_char(date_trunc('month', current_date + interval ($1 || ' months')), 'YYYY/MM/DD')$BODY$
language 'sql';
構文エラーで登録すらできない。

interval だとだめなのかなと思って、interval のいらない current_timestamp で挑戦してみる。
create or replace function first_date_string_on_month(integer)
returns varchar
as 
$BODY$select to_char(date_trunc('month', current_timestamp + ($1 || ' months')), 'YYYY/MM/DD')$BODY$
language 'sql';
「ERROR: 演算子が存在しません: date + text」と言われる。

なるほど text だからキャストが必要なのかと言うことで varchar にキャストしてみる。
create or replace function first_date_string_on_month(integer)
returns varchar
as 
$BODY$select to_char(date_trunc('month', current_timestamp + cast($1 || ' months' as varchar)), 'YYYY/MM/DD')$BODY$
language 'sql';
これまた演算子が存在しないと言われる。

そういや、そもそも interval ってなんなんだ
と思って調べてみるとどうやらデータ型らしい。
interval '1 months' みたいに書くから識別子とかかと思ってたらデータ型でキャストというか型変換を意味していたのか!
というわけでこうしてみた。
create or replace function first_date_string_on_month(integer)
returns varchar
as 
$BODY$select to_char(date_trunc('month', current_timestamp + cast($1 || ' months' as interval)), 'YYYY/MM/DD')$BODY$
language 'sql';
登録できたよ。
select first_date_string_on_month(3)
--  → 2012/05/01
select first_date_string_on_month(-2)
--  → 2011/12/01
select first_date_string_on_month(0)
--  → 2012/02/01
ちゃんと動いてるよ。

ちなみに reltime というデータ型もあるみたい。
create or replace function first_date_string_on_month(integer)
returns varchar
as 
$BODY$select to_char(date_trunc('month', current_timestamp + cast($1 || ' months' as reltime)), 'YYYY/MM/DD')$BODY$
language 'sql';
とすると登録できて同じ結果が取得できた。
reltime型 を引数に取る interval 関数というのがあるので、それが関係していると思われるがよくわからない。
Google 先生で調べても PostgreSQL と realtime の検索結果が表示されるし。
とりあえず interval を使うのが正当だと思うのでそれでいいや。