2012年6月22日金曜日

MacでDropbox以下のフォルダを公開フォルダにする

MacでPHPを使ったページをテストしたかった。
apacheとPHPはlionには元々入ってる。
システム環境設定の共有の項目からWeb共有をオンにするだけで、
Webページが見られる。apacheの設定をいじればPHPページも実行できる。
この辺の詳しい手順は参考URLを見てください。

デフォルトでは~/Sitesが公開フォルダなわけだが、
自分はDropboxでファイルを共有しているので、
パスをDropbox内のディレクトリに設定したい。
調べると、/etc/apache2/users/{username}.conf
に公開パスの設定があるらしい。
しかし、設定を直して、アクセス権を整えてもどうもうまくいかない。
結局、原因はわからなかった。

けれど、調べてる内に他の方法があることに気づいた。
Sites以下にシンボリックリンクを置けばいいのだ。
まず、先ほどの設定ファイル内で
    Options Indexes MultiViews FollowSymLinks
という風にFollowSymLinksを追記する。
ln -s ~/Dropbox/hogehoge/ public_html
みたいな感じでシンボリックリンクを作成する。
んで、apacheを再起動する。Web共有をオフにして再度オンにすればいい。
すると、localhost/~{username}/public_html/
で~/Dropbox/hogehoge/のファイルにアクセスできるようになりました。

参考URL
http://www.happytrap.jp/blogs/2012/01/21/6931/
http://eyenote.cocolog-nifty.com/blog/2011/08/mac-os-x-107lio.html
http://szdy.info/docs/apache_on_osx/

2012年6月20日水曜日

見慣れないfor文

『JavaScriptパターン』を読んでたら、見慣れないfor文が出てきた。
for(var i = length; i--;){
  //hogehoge
}

なんだこれ?ちゃんと動くのか?と思ってfirebugのコンソール上で
叩いてみると問題なく動いた。
何が引っかかったかというと、条件のところi--だよね。
これって何が評価されるの?
で、いろいろ試したり調べてたらわかってきた。
i--;
のような後置デクリメントはまず値が評価され、その後デクリメントが行われる。
インクリメントも一緒。
というか、ずっと勘違いしていたことに気づいた。
if(i = 5) {
  //hogehoge
}

みたいな処理を書くとif文の中が実行されるのって代入が成功してtrueが返ってるんだと
思ってたんだけどホントはiに5が代入されてその値5が評価されてそれでifがtrueになってるんだね。
どういうことかというと、
if(i = 0){
  //fugafuga
}

っていうのでも実行されると思ってたけど、これはif文の中は実行されない。
結局、最初のi--;っていうのはまず値が評価されるわけだから、
for(i = 3; i--;){
  console.log(i);
}

みたいに書くと、
210と出力されるわけだ。

んー、でも、これって実はかなり基礎的なことだよなぁ。
色々な意味で勉強になった。