2012年5月1日火曜日

プロフィールページを作った

1ヶ月ブログを放置してしまったので、簡単な内容でお茶濁し。

プロフィールページを作りました。
yutaro-ihara.github.com
とりあえずChromeでしか確認してないし、恐らく崩れますw

このページで使用している技術としては、
Web FontとFlexible-boxとmicrodataです。あとアイコンはGravatorから取ってきてます。

ソーシャルへのリンクに使っているアイコンのようなものは,
全てFontです。
Font-Awesomeっていうのを使っています。

Font Awesome: http://fortawesome.github.com/Font-Awesome/

Flexible-boxはソーシャルボタン並べるところで利用しています。
昔はテーブルレイアウトとかやっていたとものだと思うのですが、
テーブルレイアウトをやらない場合、floatを使っていたと思います。
floatの場合は、最後にresetするとか色々めんどくさいです。
そこでdisplay:boxとbox-flexとbox-orientです。
これらを利用することで,行の中にある要素らはいい感じに間隔をとってくれるし、
最後にresetする必要もなくてかなり楽です。
ただまだベンダーprefixが必要です。

詳細は以下のリンクを参照してください。

フレキシブル ボックス モデルを使ってみる - HTML5 Rocks


micro-dataについてはあんまり詳しくないのですが,
Schema.orgで定義されているpersonを利用しました。自己紹介ページですし。

以下を参照してください。
Googleのmicrodataについての説明
http://support.google.com/webmasters/bin/answer.py?hl=ja&answer=176035
Schema.org
http://schema.org/
よういちろうさんのmicrodataとかOpenGraphとかの話
https://docs.google.com/presentation/d/18U-JJVf8fFWJpDxUUOoIVufqRRdlqQZvl5qEU8wKfBY/edit

ページ自体の内容は今後追加していくかもしれません。

2012年3月31日土曜日

Perl環境の整備

VPSの設定の続きで
今回はPerlの環境を整備する。

perl環境の最近の流行は
nginx+starmanの組み合わせらしいので,この環境を構築していく。
まぁこの記事のまんまです。Apache、mod_perl さようなら!さくらVPSで Nginx + Starman

これを入れるにあたってまずPerl環境の整備が必要

  • perlbrew
  • cpanm

最低でもこれらは入れないといけない。
で,これらの設定方法も先ほどのブログに記事があったのでそのまま使う
[まとめ] さくらのVPSで一気に perl の環境を整える

perlbrewインストール時に以下のようなエラーが出てハマった。


perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LANG = "ja_JP.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

対策が直ぐに出てきた。
$ PERL_BADLANG=0
$ export PERL_BADLANG

でもなんかこれ逃げてるように見える
抜本的な対策を探す
頑張っている人を発見
centos に gitolite 導入, あとロケール問題

ここに書いてある通り,ローカル側の設定を変更したら解決

あとdaemontoolsじゃなくてsupervisordを使うことにしたので
こちらも参照した
supervisordはどうもDebian系で使われているのが多いようで,そのまま説明通りに使っても使えなかった。
起動スクリプトはこちらを利用した。

当たり前のようにスルーされてるけど
start_serverってのは,cpanm start_serverでインストールできるよっ
Perl初心者すぎてこんなところでも引っかかる私

とりあえずAmon2動かそうとしただけなのに
この後いくつものcpanmをやったことはまた別のお話

Amon2/Plugin/DBI.pm
HTML/FillInForm/Lite.pm
DBD/SQLite.pm
Plack/Middleware/ReverseProxy.pm
Net/Server/SS/PreFork.pm

動いたのでとりあえず終わる
設定しながら書いているメモなので,ボロボロで申し訳ありません。

2012年3月30日金曜日

さくらのVPS借りた

前々から借りようと思っていたけど,プラン改訂を機に契約した。

何度もインストールしなおしたりするかもしれないので,
そのときようのメモ

1 まずやるべきことをやる


myfinder's blog: さくらのVPSを借りたら真っ先にやるべきssh設定

まずこれ。公開鍵でログインできるようにする。
途中でsyslogの設定があるが,
今のCentOSの初期状態はsyslogがrsyslogになっているので,
rsyslog.confに追記する。ここだけ引っかかった。

2 zshを導入

CentOS6のyumリポジトリにあるzshは,4.3.10
このときの最新版は,4.3.17
なので,ソースから最新版をインストールする。

sudo yum install curses-devel
cd /tmp
wget http://www.zsh.org/pub/zsh-4.3.17.tar.gz
tar xf zsh-4.3.17.tar.gz
cd zsh-4.3.17/
./config
./configure
make
sudo make install

ここまでで,インストールは完了。
次にデフォルトシェルに設定する。

sudo vi /etc/shells
  /usr/local/bin/zshを追記する
chsh
  /usr/local/bin/zshを設定する

これでデフォルトシェルが自分で入れたzshになる。

3 ファイヤーウォール

なんでこの順番なのか疑問に思われる方も多いでしょうが,私も謎です。
sshをデフォルトのポート番号にしておくと危ないらしいので,
sshのポート番号と一緒にファイヤーウォールも設定。

sshのポート変更
vi /etc/ssh/sshd_config
 「port xxxx」を追記
   xxxxは任意の番号
/etc/init.d/sshd restart

iptablesってデフォルトで用意されているファイルじゃないんですかね?
私の環境には無かったです。


とりあえずはここまで,次はPerl環境を整備する

2012年3月24日土曜日

Mac OS X Lionのログイン画面背景画像

Lionのログイン画面の背景画像を壁紙にしようと思い調べた

/System/Library/Frameworks/AppKit.framework/Versions/C/Resources/NSTexturedFullScreenBackgroundColor.png
(/System/Library/Frameworks/AppKit.framework/Resource/NSTexturedFullScreenBackgroundColor.png  でも可)
これをタイル表示にするといいみたい。
リンゴマークは別につけているみたいなので,入らない。

このファイルを差し替えるとログイン背景画像も変えられるそうですよ。


完全にメモ投稿でした。

2012年3月8日木曜日

Adobe Shadowすごい!

新型iPadの発表まだかなーと暇してるときに
かの有名なPublickeyさんで紹介されていた「Adobe Shadow」をいじってみたら,こりゃすごい!ってことで紹介します。
PublickeyさんのAdobe Shadowについての記事はこちら

端的にどんなツールかと言うと,PCで見ているサイトをスマートフォンでも見るというものです。
これのすごいところは,1度に複数の端末が繫げてしまう上に,
PCで見ているページが切り替われば,接続されている端末全てのページも切り替わるところです。

使い方は,
  1. Adobe Shadowをここからダウンロードして,インストール・起動する
  2. Chrome Extensionをここからインストールする
  3. iOS,AndroidのストアからAdobe Shadowをインストールし,起動する
  4. スマートフォン側で接続するPCを選択する
  5. パスコードが出るので,Chrome Extensionからパスコードを入力する
これだけで繋がります。
後はChromeが表示しているページのURLが端末に送られ,端末側でそのページを表示します。

この機能だけでも一度の操作で複数端末の表示テストができるのでかなり使えるものと言えるのですが,
さらに,先週書いたスマートフォンのリモートデバッグの記事でも出てきたweinreがこのツールには入っています。
そのため,表示がおかしい端末があったら,それをChrome Extension側から選択して,リモートデバッグすることができます。
*画像は一部加工しています
Adobe Shadowを介さないweinreは,デバッグ対象のページにscriptタグを追加する必要があるのですが,Adobe Shadowを通した場合は,scriptタグを入れなくても使えるようです。

とてもすごいので,早速明日から使っていく予定です。
Adobeで公開されている動画見ると簡単にすごさを感じれると思います。
http://tv.adobe.com/watch/adobe-technology-sneaks-2012/adobe-shadow


しかし,Window Phoneにはないんですかねこれ

2012年3月6日火曜日

Vibration API

1ヶ月前ぐらいに話題になったブラウザからバイブレーションを発生させるVibration API。
せっかくAndroidを買ったので,Vibration APIが使える(たしか)唯一のブラウザFirefoxをインストールして,使ってみました。
使い方は....

navigator.mozVibrate(1000);

これだけ。
さすがにこれだけでは面白くないので,
はじめてgithubにあげたあのsliderを改良して,
ちゃんと他でも利用できる形にした後,今回のデモに取り込みました。

内容は,
スライドして値が変わったときだけ,n回分振動+1度の振動時間を100*n msにするというデモを作成しました。
特に難しい技術もなく,ざっくりな感じです。

Vibration APIについての記事は1ヶ月前に書いてる人がいるので詳しくは
http://d.hatena.ne.jp/nakamura001/20120127/1327674412

この記事が書かれたときはAurora版のみだったようですが,
今はマーケットで配布されているbeta版でも使えました。


下のリンク見るとWebkitにも追加されたっぽいので,mobile safariにもくるのかな?どうなんだろう?
http://www.mail-archive.com/webkit-changes@lists.webkit.org/msg19172.html

2012年3月2日金曜日

スマートフォンのリモートデバッグ

Galaxy Nexusを買ったぞー!!
というわけで,これでiPhone 4S/3GSとWindows PhoneとAndroid4.0が揃い,スマートフォン対応は俺に任せろー!状態になりつつある私です。
しかし,ここまで色々持ってても自分が興味あるのはウェブですので,スマートフォン用ウェブサイトを作る上で必要になるリモートデバッグツールについて今回は書きます。

リモートデバッグとは,デスクトップ上でスマートフォンのブラウザに出ている画面をデバッグする手法です。リモートデバッガはいくつかあります。
私が紹介するよりも,こちらにわかりやすくまとめられているものがあるのでkanasanさんのを見た方が圧倒的にいいと思います。私もkanasanさんのプレゼンではじめて知った口です。
http://www.kanasansoft.com/weblab/2011/07/html5toka19.html

で,Android4.0といえば,Chrome betaがリリースされましたね。
このChrome betaには,リモートデバッグ機能がついています。
今回は,Chrome betaのリモートデバッグについてと,weinreとの違いを自分が使ったレベルで浅いのですが,紹介します。

Chrome betaのリモートデバッグ使い方
まず,Chrome betaのリモートデバッグ方法です。
http://code.google.com/chrome/mobile/docs/debugging.html
ここ見れば書いてあります!
で終わるのも何なんで,Android SDKを入れるところからから書いて行きます。
環境はMac OS X Lionです
  1. Android SDKをhttp://developer.android.com/sdk/index.htmlからダウンロードする
  2. zipを展開して,任意のフォルダへ。
  3. open SDK_HOME/tools/android または ./SDK_HOME/tools/android で Android SDK Managerを起動(*図1)
  4. しばらくするとAndroid SDK Platform-toolsが出てくるのでインストール(このとき自分はなぜか何回も失敗したがリトライし続けたら入りました)
  5. SDK_HOMEにplatform-toolsというディレクトリができるので,SDK_HOME/platform-toolsをPATHに登録する。
図1 Android SDK Manager

ここまでが,リモートデバッグを利用する最小限のSDKの準備です。
次にAndroid側の準備です。
  1. [設定]>[開発者向けオプション]>[USBデバッグ]をオンにする
  2. [Chrome betaの設定]>[USBウェブデバッグを有効化]をオンにする
  3. SDKの入っているマシンにAndroidをUSB接続する
これでAndroid側は準備完了。
最後にマシン側を設定します。
  1. adb devicesをターミナル上で実行してみて,自分のAndroidが接続されていることを確認する
  2. adb forward tcp:9222 localabstract:chrome_devtools_remote
  3. マシン側のChromeでlocalhost:9222を開く
  4. Android側で開いているタブの一覧が表示されるので,マシン側でデバッグするタブを選択する
  5. 見慣れたdeveloper toolsが開くので,あとはよしなに!
以上でChrome betaのリモートデバッグは可能になります。
ちなみに動画でも利用方法が紹介されています。

weinreの使いはじめ方
次に,weinreです。
こちらはkanasanさんのスライドにも紹介されているリモートデバッグツールで,Webkit系ブラウザならどれでもリモートデバッグが可能になります。
Chrome betaと同じように使い方を書いておきます。環境はこちらもMac OS X Lionです。
  1. http://phonegap.github.com/weinre/から本体をダウンロードする(macはbinaryが配布されています)
  2. 落としてきたbinaryを起動します
  3. 図2みたいなのが起動します
  4. Server Home Pageのタブを開いて,Exampleのscriptタグをコピーして,デバッグ対象のhtmlに書き足します
  5. デバッグ対象をスマートフォンから見ると,weinreのビューでデバッグすることができます
図2 weinreの起動画面
違うサーバのデバッグを行いたいときは,ホームディレクトリに.weinreディレクトリができているので,そこにserver.propertiesを作って,
boundHost: hostname
httpPort: portnum
と書いて起動すれば,起動画面のServer Propertiesが書き変わるはずです。
変えた場合,スクリプトを取得する先も変わるので書き換えましょう。


両者の違いについて
ここまでは前置きで,ここからが本題です。
weinreとChrome betaの違いについてです。
恐らく,Chrome betaはあくまでChrome betaだけで,weinreはそれ以外用だ,という意見が大半でしょう。
その通りです。
ただChrome betaをデバッグする上でどちらがいいかという土俵で考えれば,今のところ圧倒的に標準のリモートデバッグツールの方が優れています。

優れている点を箇条書きでおこすと
  • 早い
  • Resourcesがちゃんと機能している
  • scriptタブがちゃんとある
  • console.logが問題なく動く
  • ようはデスクトップChromeと同じように使うことができる
最後が一番重要ですね。
weinreは,見た目はdevtoolsと同じなのですが,結構違います。
weinreの悪い点は少なくとも4つほど見つけました。

CSSの問題
スタイルの解釈順番が違ったりして,実際に表示するときに利用しているスタイルとは別のものがハイライトされ,実際に表示しているものをストライクするときがあります。
実例がこのスクリーンショットです。


スクリーンショットのように,一番強いのは#main-content .headerですから,font-weightはnormalになります。
しかしweinreは,font-weight: normalをストライクして,font-weight: boldが機能しているようにdevtools上では表示します。
また,ベンダープレフィックスを無視したり,margin: 5px 0px;をなぜかmargin: 0px;と表示したりします。
左のiPhoneの絵は,iOS Simulatorです。

スタイル破壊の問題
マウスがオーバした部分を青くしたりするのをHTMLとCSSでやっているわけですが
画面サイズでサイズを変更するようなJavaScriptが動いている場合,その青いエリアでサイズが変わってしまい,うまく動かないことがあります。
まぁこれはHTMLの書き方が悪いとも言えなくもないですが。

consoleオブジェクトの問題
他にも,問題があったのはJavaScriptのconsoleオブジェクトです。
weinreはwindow.consoleを置き換えて,スマートフォンのブラウザコンソールではなく,wenire上のコンソールに表示するという方法をとっているのですが,window.onload時はなぜか置き換えが終了していないため,onload時のconsole出力ができません。
weinreのメーリングリストには,onload前やonloadのハンドラーでconsole表示したいときは,setTimeout(func, 3000)をやるとできるよ!って書いてありました。

iframeが表示されない
さらに,iframe先は表示されません。
そりゃスクリプトで無理矢理DOM情報を取り出しているので,iframe内も取れてしまったら怖いです。当然の結果です。


いくつか悪い点あげたり,Chrome リモートデバッグの方がいいじゃんって言ったりしてますが,もちろんweinreのいい点もあります。
  • 端末側に設定がいらない
  • インストールするものはweinreだけ,htmlにタグを1つ追加するだけ
  • 端末側の制限が少ない
実際に運用する場合,まだまだAndroid4.0は普及していないし,普及したところで標準ブラウザがChromeになるわけでもないので,Chromeのリモートデバッグを主に使って行くということはしばらくないと思います。
しかし,きっとこういうの出してくるってことはGoogleさんもAndroid向けのChromeで何かやろうとされていることだろうし,OSが4.0なら1度はやってみるといいかもしれません。

Chrome beta for AndroidについてのFAQを翻訳してくれている方がいるのでこちらも見ると色々わかると思います。

そういえばOperaもリモートデバッグできるんだったな... そっちは試していません。
あとiOS Simulatorは,Xcodeのバージョン上げるとXcodeが/Applicationに入るので,
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone Simulator.appに移動しています。めんどくさいですね。


最後に!
weinreは........... IE Mobileでは動きませんでした!!!!!!!
引き続き,IE Mobileでも使えるものを探します!!!たぶん!!!
proxy系のリモートデバッガならいけそうですね。
ちなみに,firefoxも動かなかったです。Operaはちょっと動きました。
Windows Phoneを落ち担当に使いたいだけです。ごめんなさい。