Apache Solr の管理ページ用グリモン書いた

上司にクエリを手動で組み立てるのが面倒だから、管理画面からソートできるようなの書いて的なことを言われたので書いた。

userscripts.org の方に置いてみたので、ご利用の際はこちらから。
http://userscripts.org/scripts/show/88805

スクリプトを追加すると以下のようになります。



赤枠で囲まれた部分が追加されます。それだけです。

ブラウザからお手軽脱獄、 JailBreak Me

最近iPhone情報ばかり書いていたりしてこのブログがiPhoneブログなのかと思っているの今日この頃です。
このブログはiPhoneブログではないですが、個人的に思ったことやこれいいなーと思った技術ネタなんかをメモがわりにツラツラと書いていく感じなので、そんなカンジで今日も行きたいと思います。

iPhoneのJail Breakについてはこれまで、Apple側の「OSソフトウェアの書き換えはOSの著作権の侵害だ!」という主張などにより、そのように見られてきました。
が、先日米国の著作権局の見解発表において、「Jail Breakは著作権違反には当たらない」とする発表が行われました。
これにより、Jail Breakがますます一般的に広がりそうなイメージもありますが、注意としてこれは米国内の法律上においてこのような見解となっているだけで、その他の国についてはそれぞれの国の見解に則った判断が下され、その基になんらかの問題が発生しうる可能性はあります。つまり、日本国内においてはこの解釈は場合によってはできない可能性があります。ただし、米国でのこの見解をその他の国でも同様に見る可能性も十分にあり得ます。

さて、そんなJail Break、日本では通称「脱獄」と呼ばれていますが、この脱獄、今までは純正ファームウェアのイメージファイルをPC上で一部書き換えて、そのイメージをiPhoneやiPod touchなどに転送・展開することで適応することが出来ました。
やや知識も必要として、失敗すると最悪起動しなくなるおそれがあるなど、リスクも多分に含まれていました。


そんな脱獄ですが、8月になって早々に驚くべきニュースがインターネット上に出回りました。

それは、iPhone/iPod touchなどのブラウザからそのまま脱獄できるというもの。

通常今までは、ある程度はツールなどで簡略化されているとはいえ、前述のようにいくらかの手順をふみ、またある程度の知識を必要としていたのに、ブラウザでアクセスすればそれだけで簡単に脱獄できてしまうというから驚き。

その驚きのサイトは Jail Break Me というようです。


このサイト、見た目のデザインから凝っていて、トップはiPhoneのロック解除画面にそっくりに作られており、画面下部にある Slide to Jail Break の文字の上を文字通り右側にスライドしていくと、確認メッセージが表示された後、Jail Break処理が始まります。

ここからの操作は表示されるダイアログのメッセージを読み1クリックするだけ。あとはひたすら待つだけで完了します。
今回は先日購入した iPhone 4 …ではなく、先日まで使っていたiPhone 3G (iOS4) を脱獄させてみようと思います。




たったこれだけで脱獄完了です。
この間、再起動や画面のちらつきなどは一切行われていません。画像に見えている部分のみです。
また、私はiPod機能で音楽を再生しながらこの作業を行っていたのですが、その音楽も止まったり乱れたりすることはありませんでした。

メッセージにて「ホーム画面にCydiaを追加したよ。お楽しみに!」と表示されたので実際に確認してみましょう。


このとおり、確かにホームスクリーン上にCydiaがインストールされていました。
ということで、本当に簡単かつあっという間にJailBreakが成功してしまったようです。

すごすぎます。。。


で、エンジニアとしてはどんなしくみでこれらを実現しているのかが気になる性。
確認するにはiPhone/iPod touch/iPadのUser Agentに偽装して上記のサイトにアクセスしてみればいいだけ。

※ "Slide to JailBreak"の矢印は画像ではなくSVGを用いて描画してるんですね…

iPhone 4購入とiPhone 4 バンパーの配布の開始

iPhone 4が2010年6月24日に発売して、本日でちょうど1ヶ月が経ちました。
需要過多により発売当初から入手が困難で、予約が必須な状態が続いています。

僕も例に漏れずiPhone 4をなかなか入手できず、発売当日にAppleストアに並んでみたものの、購入までにかなりの時間を要していたため、仕事の都合もあり途中で断念。。。
後日改めて店頭で予約を行ないました。

そして日本での発売から1ヶ月が経過した頃の昨日、ようやく入手することができました!



ちょうど約2年前に発売された iPhone 3G からの乗換となるため、画面の美しさ、動作の快適さに衝撃を受けています。
iPhone 3Gの方は発売当日に購入したので、なんだかんだで2年間使い切ったなーというところです。割賦購入なのでまだ2ヶ月分の残債がありますがw
それでももう文字入力中にアプリが固まってそれまで入力してた文章がパーになることもなくなるんだ!\(^o^)/
というわけで新しいiPhone 4に非常に満足しています。



そんなiPhone 4ですが、発売からまだ1ヶ月しか経過していないにもかかわらず既に問題も指摘されていたりします。
ご存知「アンテナ問題」。
結果的には先日ジョブズ氏がこれについて釈明会見を行うまでに至り、iOS 4での電波計算式が間違っていたとしてiOS のバージョンアップを行ない、さらに噂されていた「iPhone 4 Bumper」の無償配布を購入の全ユーザに対して本当に実施するまでになりました。
iPhone 4のアンテナ問題の正式な対応がされるまで、Appleの株価にも影響が及んでいましたが、上記対応の発表により株価の方は持ち直したそうです。

と、長い前置きはさておき発表されていたバンパー配布の件ですが、既にバンパーを購入したユーザにはバンパーの金額を返金する対応を先日より開始しました。
また、まだ購入していないユーザへの配布については、本日対応方法が発表されました。

その方法とは、専用の申込アプリ「iPhone 4 ケース提供プログラム(iPhone 4 Case Program for iPhone 4)」を通じて申し込みを行うというもの。


アプリのダウンロードはこちらから行えます。


iPhone 4 ケース提供プログラム
iPhone 4 Case Program for iPhone 4 on the iTunes App Store





アプリから申込可能なのはApple純正の iPhone 4 Bumper を含めたいくつかのケース(Bumper以外はApple Storeで扱っているサードパーティ製品)を選択できるようになっています。
画像を見る限りでは色はすべて黒となっているようです。





選択可能なケースはすべて写真プレビューでデザインを確認することができます。





アプリから申し込む際に自動的に端末のIDをAppleに送信する仕組みになっているようで、これにより簡単な操作だけで実際にiPhone 4を購入したのユーザから申し込みであるかを確認できるようになっているようです。

なお、申し込みについては期限が設けられており、7月23日以前にiPhone 4を購入したユーザは8月22日まで、7月23日〜9月30日までに購入したユーザは、購入から30日以内に申し込む必要があります。
(結果としてバンパーの無償提供を受けたいユーザーは、どのユーザも30日以内に申し込む必要があるようです)

また、既にiPhone 4の販売を開始している世界中で申し込みが発生するため申し込みが混み合う可能性があります。現時点では実際に発送されるのは3週間以上先になりそうです。



iOS 4 がついに一般リリース



ついに本日2時過ぎ(日本時間)にiOS 4の一般リリースしました。
これにより3Gユーザは前述の通りやや残念なアップデートとなりますが、3GSユーザ以上の方はマルチタスクやホーム画面壁紙、スクリーンロックなどの新機能を楽しめるようになりますねー。

とはいっても主に日本人には嬉しい顔文字入力ユーザ辞書機能プレイリストの新規作成・編集機能統合受信メールボックスメールスレッド表示フォルダ機能カメラデジタル5倍ズームなどなど3Gユーザでも十分便利な機能が追加されているので、アップデートして損なことはない!

なお、アップデートにはiTunes 9.2が必要なので、こちらのアップデートもお忘れなく。

#「アップデートの確認」を押しても「最新です」と表示される場合は「復元」を押すとアップデートされるかも。

iOS 4をiPhone 3Gに入れてみた



先日のWWDC 2010でのスティーブ・ジョブズの基調講演の直後から開発者向けに配信された、iOS 4(Golden Master)を手元のiPhone 3Gに入れてみました。


まず、iOS4を導入するには、以下の環境が必要となります。

  • iTunes 9.2

  • iOS4本体


iTunes 9.2 は、現在先に公開されているiTunes9.2 betaを用います。
なんでiTunesのアップデートが必要かというと、恐らくアプリ同期画面の機能で、iOS4で導入されたアプリのグループ化機能を実現させるために必要になると思われます。

ちなみに今回はどちらも一般公開前のものと言うことで、Windows版はないです。
なので、これとは別にMac OS Xの環境が必要となります。


アップデートは、まずiTunes 9.2を起動し、iPhoneをつなぎます。
そして、iPhoneの情報表示画面内にある「復元」(Restore)ボタンをAltキーを押しながらクリックします。

すると、ファイル選択画面が表示されるので、iOS4本体ファイルを選択します。
復元に際し、いくつか注意事項が表示されますので、確認の上操作していきます。

しばらくすると、iOS4がiPhone上に展開されていき、1~2回ほど再起動を繰り返してiOS4のインストールが完了します。


ちなみに自分は元々のデータのバックアップと復元がうまく行かず、アプリ、楽曲、設定などの全データが初期化されました(苦笑)
個人的にはその辺は覚悟の上で行っていたのでさほど問題とも思いませんでしたが、実行される方は各自ご注意ください。
上記の影響のためか、今まで何をするにも動作がもっさりだったiPhoneがとてもスムーズに動いてくれています(笑)

さて、そんなわけでアップデートが完了したのですが、今回は手元にあったのが3GSではなくiPhone 3Gだったので、3Gでのアップグレードによる変更点などを書いてみたいと思います。


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ということで、不慣れながらも自分用にいろいろとカスタマイズしながら楽しいんでいきたいと思います!

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

ミクの日感謝祭 39's giving day 初音ミク昼コンサート に行ってきた

昨日(2010年3月9日)、Zepp Tokyoで開催された、 ミクの日感謝祭 39's giving day 初音ミクひるコンサート ~こんにちは、初音ミクです~ に行ってきました。

本当は夜の部で参加したかったのですが、夜のチケットが取れませんでした。。。
奇跡的に取れた昼の部で行ったのですが、平日の昼なのにすごい人の数。ミクは偉大だなと思いました。

それにしても、ひとつの合成音声によるボーカルソフトウェアという"楽器"でここまでの文化としてブレイクするようになるとは正直驚きでもあります。
楽器でありながら、そこに最低限のキャラクター性を持たせて製品の販売戦略を展開したクリプトン社の狙いは、すごいなと思ってます。

それに、これはある一定のコアな層だけでなく、それ以上の人たちにも受け入れら始めていて、それはカラオケで歌われている履歴やランキング、CDの売り上げなどからもある程度読み取れると思います。

で、そんな一般論的なものはさておき、ライブの感想ですが、そこに人はいない。
そこにあるのは透明なアクリル板。それとそこに映し出されたカラー映像。

…のはずなのに、そこにあたかも人がいるかのように、「初音ミク」というディーバは存在し、歌っていました。

正直変な話ですが、通常のレコーディングからライブまで、「もう人いらないんじゃね?」とまでも思えてきました。
バックで演奏していたミクバンドも、別に生演奏でなくても良いわけで。
(生演奏だからこそ"ライブ"の価値があるんですけどね)

そんな変な思いが出てくる程、ライブは盛り上がっていました。

あと、ミクバンドはやっぱりプロだなぁとも思いました。
というのも、通常、バックの演奏は打ち込みで、そこに歌を載せるのはよくあるパターン。
それは出来ても普通だなぁと思うのですが、今回のライブの場合は逆。
ボーカルが打ち込み。演奏のテンポやタイミングが狂っても、ミクはアドリブなしに歌っていってしまいます。

このボーカルが打ち込みという特性上、人間が機械に合わせざるを得なくなるのですが、
このタイミングってすごーく難しそうだなぁと思ったのが正直なところ。
それをミクバンドは39曲すべてガッツリやってくれました。すごい。


そんなわけで、いろんな意味で感動させられ、新鮮な感覚を得る事ができたライブでした。

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

最近作ったアプリの話

先日、コナミ社の提供している コナステ のダウンロードコンテンツゲームを1クリックで起動できるアプリを作り、公開した。 Ks Game Launcher  ( Github ) 作った理由として、インストール時に作成されたショートカットをクリックするとブラウザが起動し、ログインし...