iPhone 4 軽くまとめ

WWDC 2010でようやく iPhone 4 が正式発表されました。
はい、サラリと書きましたが、名称は iPhone 4 です。

簡単に書くと、


  • 内蔵チップはiPadと同じ Apple A4

  • 画面解像度は現在のiPhone 3G /3GSの4倍960x640

  • より決め細やかな表現が可能なRetinaディスプレイを搭載。

  • カメラ解像度も向上し、現在の 300万画素から500万画素

  • さらに5倍デジタルズームとタッチフォーカスを搭載

  • 動画撮影はHD動画の撮影が可能720p 30fps

  • LEDフラッシュを搭載

  • フロントカメラも搭載。

  • これによりテレビ電話も行える(FaceTime。ただし動画は双方がWi-Fi環境下にないと行えない)

  • 6軸加速度センサーを搭載。

  • バッテリーも向上し、待受時間は最大300時間、通話なら7時間、3Gインターネットなら6時間程度

  • iPadと同様に、SIMカードにMicroSIMを採用。

  • iOS4搭載(iPhone OS から iOSになった模様)

  • iOS4により、iBooksを搭載。またiBook Storeも近日オープン

  • 既存のiPhone OSからのバージョンアップは6月21日から提供開始。料金はiPhoneもiPod Touchも無料。(*)

  • 検索エンジンにMicrosoft社の Bing が追加。(iOS4)

  • 容量は16GB32GBの2種類

  • 色もの2種類

  • ノイズキャンセリング機能搭載

  • 価格は16GBが$199 (約2万円)、32GBが$299(約3万円)

  • 気になる発売日は 2010年6月24日 にアメリカ、イギリス、ドイツ、フランス、そして日本

  • オーストラリア、イギリス、ニュージーランド、香港などの一部の国は2010年7月、またその他88カ国では2010年9月に発売される。

  • 予約開始は6月15日から。

  • また、App StoreにてiMovie for iPhoneが発売される。価格は$4.99(約500円)



*初代iPod Touchは対象外。また、iPhone 3Gはすべての機能はサポートされない。

という内容でした。意外と盛りだくさん。
そしてなにより、米国などの一部の国々とあわせて日本でも真っ先に発売されることになったのは何よりも嬉しいこと!
っていうかもう2週間後ですよ!この間iPad発売されたばかりなのにこのラッシュ!
また2週間後に銀座と表参道が再び盛り上がることでしょう。

ServersMan@VPSがきたのでまず最初にしたこと

2010年4月中旬からDTIが開始したServersMan@VPSにGW中くらいに、申し込んだ。

月額490円〜という、これまでのVPSサービスとしては超格安でそこらの安いレンタルサーバ並での料金となるサービスなので、大変人気もある模様。上記の通り5月のGW中に申し込んだ結果、6月1日になってようやくVPSの申し込み完了+利用開始となった。

そんなわけで早速使ってみてます。
今回はエントリープランで申し込んだので、その構成でのメモを書いてみます。


まず申し込み完了後にDTIからは VPSサーバのIPアドレス、rootユーザアカウント(っていうかroot)、rootのパスワード、管理画面のURL(申し込んだIPアドレス内でのServersManログイン画面のURL)などが送られてくる。


早速そのIPアドレスに対してSSHでログインしてみる。もちろんrootアカウントしか通知されていないのでrootで。
するとrootユーザで自分のVPS環境にログインできる。


サーバインフラ環境を自分で用意したことがある人ならすでに当たり前ながら、SSHでrootでダイレクトに入れるのはセキュリティ上大変好ましくない。
なので、SSHでrootログインを拒否。



# vi /etc/ssh/sshd.conf

#PermitRootLogin yes
PermitRootLogin no

で、本当はパスワードログインも好ましいわけではないので、ログイン鍵を作ってそれで入るのがベスト!
…なのだけど、まだ最初の設定のところなので、取り急ぎ今は省略。後でやるようにしよう…。


次に、rootログインを拒否しただけだと今後入れなくなってしまうので、一般ユーザ用グループと一般ユーザを作成。
さらにパスワードの設定も忘れずに。


# groupadd www
# useradd -g www anon
# passwd anon
New UNIX password:

で、このままだとrootユーザでの作業がしにくいので一般ユーザに sudo 権限を持たせます。


# visudo

# 以下を追加
anon     ALL=(ALL) ALL


とりあえず、まずまずのところは完了。
ここまで来たら、rootアカウントのパスワードを削除して、suでもログインできないようにしてしまっても問題ないのですが、ここもひとまずはおいといて…。


次に、yumのアップデート。
yumのアップデートは yum update でできるのですが、エントリープランの場合、メモリが 256MBしかない関係もあり、メモリエラーでyumアップデートが実行できません。

なので、現在動いているデーモンなどを最低限にしてみます。
自分の環境ではsshdのほかにhttpdとvsftpfが稼働していたので、これらをいったん止めます。
必要なら後で再会すれば良いだけなので。


# /etc/rc.d/init.d/httpd stop
Stopping httpd:                                            [  OK  ]
# /etc/rc.d/init.d/vsftpd stop
Shutting down vsftpd:                                      [  OK  ]


ちなみに、ServersMan@VPSのOSはCentOS 5.5 なのですが、 CentOSやRedHat系で使える、 service コマンドは入ってないようでした。無くても特に困らないので問題ないですが、タイプが面倒なときには便利なんですけどね…。

# cat /etc/redhat-release 
CentOS release 5.5 (Final)

これでyumのアップデートが行えます。


# yum update
Loaded plugins: fastestmirror
Repository 'vz-base' is missing name in configuration, using id
Repository 'vz-updates' is missing name in configuration, using id
Loading mirror speeds from cached hostfile
* addons: centosk2.centos.org
* base: centosy.centos.org
* extras: centosv4.centos.org
* updates: centosk2.centos.org
addons                                                                                                                                                                                      

(中略)

Dependency Installed:
libsmbclient.i386 0:3.0.33-3.28.el5                                                                                                                                                                                                                                              

Updated:
apr-util.i386 0:1.2.7-11.el5                     audit-libs.i386 0:1.7.17-3.el5                      audit-libs-python.i386 0:1.7.17-3.el5     binutils.i386 0:2.17.50.0.6-14.el5         centos-release.i386 10:5-5.el5.centos       centos-release-notes.i386 0:5.5-0          
chkconfig.i386 0:1.3.30.2-2.el5                  cups-libs.i386 1:1.3.7-18.el5                       curl.i386 0:7.15.5-9.el5                  dbus.i386 0:1.1.2-14.el5                   dbus-libs.i386 0:1.1.2-14.el5               device-mapper.i386 0:1.02.39-1.el5_5.2     
device-mapper-event.i386 0:1.02.39-1.el5_5.2     device-mapper-multipath.i386 0:0.4.7-34.el5_5.1     dhclient.i386 12:3.0.5-23.el5             dmidecode.i386 1:2.10-3.el5                dmraid.i386 0:1.0.0.rc13-63.el5             dmraid-events.i386 0:1.0.0.rc13-63.el5     
ethtool.i386 0:6-4.el5                           filesystem.i386 0:2.4.0-3.el5                       glibc.i686 0:2.5-49                       glibc-common.i386 0:2.5-49                 hmaccalc.i386 0:0.9.6-3.el5                 httpd.i386 0:2.2.3-43.el5.centos           
iproute.i386 0:2.6.18-11.el5                     kpartx.i386 0:0.4.7-34.el5_5.1                      krb5-libs.i386 0:1.6.1-36.el5_5.4         less.i386 0:436-2.el5                      libacl.i386 0:2.2.39-6.el5                  libgcc.i386 0:4.1.2-48.el5                 
libsepol.i386 0:1.15.2-3.el5                     libstdc++.i386 0:4.1.2-48.el5                       lm_sensors.i386 0:2.10.7-9.el5            lvm2.i386 0:2.02.56-8.el5_5.4              man-pages.noarch 0:2.39-15.el5_4            mkinitrd.i386 0:5.1.19.6-61.el5_5.1        
module-init-tools.i386 0:3.3-0.pre3.1.60.el5     nash.i386 0:5.1.19.6-61.el5_5.1                     net-snmp.i386 1:5.3.2.2-9.el5_5.1         net-snmp-libs.i386 1:5.3.2.2-9.el5_5.1     net-snmp-utils.i386 1:5.3.2.2-9.el5_5.1     net-tools.i386 0:1.60-81.el5               
newt.i386 0:0.52.2-15.el5                        nscd.i386 0:2.5-49                                  ntsysv.i386 0:1.3.30.2-2.el5              openldap.i386 0:2.3.43-12.el5              openssh.i386 0:4.3p2-41.el5                 openssh-clients.i386 0:4.3p2-41.el5        
openssh-server.i386 0:4.3p2-41.el5               php.i386 0:5.1.6-27.el5                             php-cli.i386 0:5.1.6-27.el5               php-common.i386 0:5.1.6-27.el5             policycoreutils.i386 0:1.33.12-14.8.el5     postgresql-libs.i386 0:8.1.21-1.el5_5.1    
procps.i386 0:3.2.7-16.el5                       samba.i386 0:3.0.33-3.28.el5                        samba-client.i386 0:3.0.33-3.28.el5       samba-common.i386 0:3.0.33-3.28.el5        samba-swat.i386 0:3.0.33-3.28.el5           shadow-utils.i386 2:4.0.17-15.el5          
sudo.i386 0:1.7.2p1-6.el5_5                      sysklogd.i386 0:1.4.1-46.el5                        tar.i386 2:1.15.1-30.el5                  tcpdump.i386 14:3.9.4-15.el5               tcsh.i386 0:6.14-17.el5                     tzdata.i386 0:2010i-1.el5                  
vsftpd.i386 0:2.0.5-16.el5_5.1                   yum.noarch 0:3.2.22-26.el5.centos                  

Complete!

ちなみにgccなどの開発用環境はデフォルトでは入ってないようです。
なので開発用環境をまとめて入れることにします。


# yum groupinstall "Development Tools"





で、ここからが本題。
僕は普段、というか最近からzshellを使うようになり、また使いたいので、zshellを使えるようにします。





# yum install zsh
(中略)
Dependencies Resolved

========================================================================
Package                                                         Arch                                                             Version                                                                   Repository                                                        Size
========================================================================
Installing:
zsh                                                             i386                                                             4.2.6-3.el5                                                               base                                                             1.7 M

Transaction Summary
========================================================================
Install       1 Package(s)
Upgrade       0 Package(s)

Total download size: 1.7 M
Is this ok [y/N]: y
Downloading Packages:
zsh-4.2.6-3.el5.i386.rpm                                                                                                                                                                                                                                    | 1.7 MB     00:04     
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing     : zsh                                                                                                                                                                                                                                                         1/1 

Installed:
zsh.i386 0:4.2.6-3.el5                                                                                                                                                                                                                                                           

Complete!


インストールできたら、ログインシェルを変更します。




# chsh -s /bin/zsh 
Changing shell for root.
Shell changed.
# exit
$ chsh -s /bin/zsh
Changing shell for anon.
Password: 
Shell changed.


ここまででひとまず完了。
最後に、とりあえずもう一度vsftpdとhttpdを起動して、ひとまずの作業としたいと思います。




# /etc/rc.d/init.d/vsftpd start
Starting vsftpd for vsftpd:                                [  OK  ]
# /etc/rc.d/init.d/httpd start
Starting httpd: httpd: apr_sockaddr_info_get() failed for dti-vps-srv14
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
[  OK  ]




とりあえず、最初の段階は酔っ払って頭痛がしてきたのでここまでで終了。
あとはSVNかgit入れたり、pythonとかphpのバージョンを上げたりして遊んでみたいと思います。

WindowsとMacの異なる環境のiTunesで1つのiPhoneのライブラリを同期させる

先日購入したMacBook Proで、できるなら今まで使っていたiPhoneの楽曲管理なども完全に移行して、
同じApple製品上で集約したかったのですが、iTunesはそうも簡単にはさせてくれなかったのが悩みでした。。。

というのも、iTunesはそれぞれの環境でのライブラリを一意のものとして管理されるようになっているらしく、さらにiPhoneは自身がどのライブラリと結びついてるかを記録しているようで、必ずiPhoneとiTunesライブラリが1対になるようになっているようです。
(恐らくライブラリとの同期上の問題で上記のような仕様になっていると思われる)

僕のiTunesでは、iPhoneの容量では足りない程度に大量の楽曲を管理させているため、基本的にライブラリの同期はすべて手動で行っています。
iPhoneに送る楽曲やムービー、アプリにそれぞれチェックをつけたりプレイリストを作ったりするよりも、ドラッグアンドドロップで個別に送ってしまった方が楽だったため、通常のiPodを使っていた頃からずっとこんな管理方法をとっていました。


iTunesでは、デフォルトで「ライブラリをiPhoneと同期させる」にチェックが入っているため、ほかの環境で動作するiTunesに、うっかりiPhoneをつないでしまうと、iPhoneのライブラリがすべて初期状態にまっさらに消されてしまいます。
(PCの再インストールなどで新しい環境になった際などにやってしまった経験あり)


僕の場合のように、ライブラリを自動同期せずに、完全に手動で管理している場合は、冒頭のような理由でライブラリの管理を拒否されたらたまりません。

そこで、なんとか異なるライブラリ(PC、環境)でiPhoneのライブラリを同期できないものか調べていました。

しかし、大抵出てくるのはiTunesの「バックアップ機能」を使ってディスクにライブラリをバックアップする方法元の環境で同期して、そのライブラリ環境を丸々コピーしてきて新しい環境で再認証して再同期○○なツールを使ってiPhoneをバックアップして〜といった内容で、自分にはどれも当てはまらず、半ば諦めかけていました。。。
それでもめげずにググっていると、こんなエントリーを発見!!


iPhoneをもう1台のMacと同期する - YukoDays
http://blog.omase.com/archives/2009/10/22_iphonesync.html


そう、探し求めていた異なる環境のiTunesライブラリとiPhoneを同期(利用させる)ための方法

僕の場合、移行元の環境はWindowsでしたが、同じ方法で解決することができました。
これは本当に感謝したい。ありがとうございます!

これで過去の環境を生かしながら、新しいMacとの環境でも生かすことができる!わーい!

MacBook Pro 15インチ用の鞄を購入

先日購入した MacBook Pro。すっかりカスタマイズしまくって使いまくりたいのだけれど、せっかくのノートなので外にも持ち歩きたいと思っていたんです。MacBook外で使ってる人も多いことですしねw

そう思ったときにふと考えてみると、15インチサイズのノートPCを持ち歩くのに適したサイズのバックなんか持ってない!

というわけで、週末に鞄を探し歩いてました。
PCを持ち歩くとなると、それなりの保護やセパレートがあるやつが良いなと思って、OA向けのバッグを探せど、たいていはビジネスバッグになってしまって、普段私用で持ち歩くのにちょうどいいものがない。

僕は手にものを持って歩きたくないので、たいていは肩掛け鞄にしているのですが、肩掛け鞄でカジュアルなものとなると、種類も大分限られてきてしまう。さらにデザインも選びたいとなると本当にわずか。
しかも今回は15インチサイズが入らなければならないので、余計に狭まってきてしまってました。

そんなとき、店頭で DICOTACity.Waer が目にとまり、シンプルなデザインと主張しすぎないカジュアルさ、スマートな大きさで一目惚れ。

ところが、City.Waer は13インチサイズ向けだったため、断念。代わりに同じシリーズで15インチに対応した Take.Off を見てみたところ、これも City.Ware に劣らずデザインも悪くない。どうしてもサイズが大きくなってしまうけど、そこは今回の目的の元が元なのでしょうがないとして、それでもこれはいいなと思い、店頭で即購入…!

…したかったのだけれど、残念ながらそのとき店頭では展示用品以外売り切れてしまっていた。。。

仕方なく、返ってからAmazon.co.jpで見たところ、在庫もある状態で売られてる!しかも4,110円と、店頭で見た価格より安い!(店頭だと5,980円ほど)




というわけで迷わずポチり。


そんな DICOTA の Take.Off が本日届きました!



ジャジャーン!



あけたときの中はこんな感じ



MacBook Pro 15インチを入れるとこんな感じ


最初入れるとき、ちょっとギリギリかも…?と思ったけど、実際に入れて形整えてみると(ちょっとつぶれてた…w)、しっかりと収まりました。
厚みはもう1台分くらいの余裕が余る感じ。


あとこんな小物入れ?が付いてきました。




小物入れどんな感じかなーと広げてみると…




やや大きい手提げ袋に化けました!
一緒に入れておけばいざというときに重宝するかも?


サイドのポケットには音楽プレーヤーが入れられる程度のスペースが!




こんな感じですね。
こいつもMacBook Pro共々愛用していきたいと思います!

Android でリソース内XMLを読み込む方法

自分用メモ。
Android開発で、アプリのリソースファイル内に置いたXMLファイルをパースして使いたいときは、
XmlPullParser を使うことで簡単にXMLを扱う事が出来る。

以下のサンプルは res/xml/target.xml を読み込む場合

MacBook Pro 購入

以前から、開発・製作用環境として、MacBook欲しいなぁ〜と思っていたのですが、2010年4月13日に新たにリニューアルしたMacBook Proが発表、発売されたので、この機会にと思い、購入しました。

4月18日にソフマップのMac Collection Akibaで、15インチMacBook ProをCTOして購入。
そして昨日5月11日にようやく店舗の方に届いたと連絡を受けたので、配送を待ちきれなかったので仕事帰りに取りに行ってきました。

約1ヶ月ほど待たされましたが、待ちに待ったMacBook Proをようやく手にできて非常にわくわくしてます。
1週間遅れの、自分宛の誕生日プレゼントのつもりですw

どうも、AppleStoreで購入するとかかっても2週間くらいで届くらしいのですが、リセラー経由でCTOするとかなり待たされるようです…。

ソフマップ店員さんの話によると、

米国内 > (国内/オンライン)AppleStore経由 > その他リセラー経由

の順の優先度で処理されていくようです。

今回はポイントを気にしてソフマップで購入しましたが、そんなものを気にせず早く手に入れたい場合は直営の方が優先して出荷されるらしいので、そちらをおすすめします。
待たされている間は本当にもどかしかった…。次回からはこのあたりを参考にして考えよう…


今回CTOしたMacBook Proの構成は以下の通りです。


MacBook Pro 15インチ(Mid 2010)
CPU:Intel Core i5 (2.53GHz/L3 Cache 3MB)
メモリ:1066MHz DDR3 SDRAM 4GB
ディスプレイ:15.4インチ クリアワイドスクリーン (解像度1,680×1050)
グラフィックス:NVIDIA GeForce GT 330M (GDDR3 256MB)
HDD:500GB (シリアルATA:5400 rpm)
高さ:2.41cm, 幅:36.4cm, 奥行き:24.9cm, 重量:2.54kg
その他はMid 2010 の15インチモデルと同じ構成


要はディスプレイをハイレゾ(高解像度)にしただけです。
このディスプレイサイズは、現在家で利用しているWindows PCのデスクトップと同じ解像度。
この解像度をノートで使えるようになるとは…

15インチなので持ち歩くには少々大きい+重いけど、最高の環境を手に入れたと思ってそれも気にせず持ち歩くと思いますw


今回買ったものが初Macということで、不慣れながらも自分用にいろいろとカスタマイズしながら楽しいんでいきたいと思います!

以下、一人開封式の際の写真

PHPで相対パスから絶対URL(URI)を作成する

HTMLページをパースしてURLを取り出す処理を書いていたのですが、ページ内のリンクなどが全部絶対URLで記述されていれば非常に楽なのですが、現実としてそうでもなく、ページによっては相対パスで書かれていたりして、正規表現で偏にリンクからURLを抜き出すだけではうまくできませんでした。

そこで少しググってみたら

PHPで相対パスから絶対URL(URI)を作成する|PHPプログラムメモ|プログラムメモ

という記事を発見!おぉ、これは便利!
と思って使わせてもらおうと思ったのですが、いくつかテストしてみて、相対パス処理で不備があるなーと思ったところがあったのでちょっと改良させてもらいました。

37~38行目は正直いらない気がしたのですが、 PHP 5.3 のCLIでWindows上でテストした際に、なぜか \/ (アルファベットのVではなく、\/ ) で出力されたのが気になったので、無駄かもしれないけどあえて記述。
あと $parse の初期化もここまでする必要ないけど、念のためNotice対策を…w

相対パスから絶対URLする関数





テストケース


ベースURL
http://example.com/path/to/url

相対パス
  • /
  • /index.html
  • /foo/bar/baz/
  • ./foo/bar/baz
  • ../../../foo/bar/baz/index.html
  • foo/bar/baz.html
  • foo/bar/baz/../index.html

結果


こんな感じ

http://example.com/
http://example.com/index.html
http://example.com/foo/bar/baz/
http://example.com/path/to/foo/bar/baz
http://example.com/foo/bar/baz/index.html
http://example.com/path/to/foo/bar/baz.html
http://example.com/path/to/foo/bar/index.html

ウェブページをリニューアルしました+近況

かなり久しぶりのブログ更新です。 タイトルの通りですが、約6年ぶりにウェブページを刷新しました。 ウェブページを更新しました 前回は2018年頃に、Zend Frameworkをベースに作っていたのをLaravelベースのサーバーに置き換え、AppEngineで動かす形にしていま...