BootCamp を使って MacBook に 64bit版 Windows 7 をインストールする
MacBook (late2009) の BootCamp 上に Windows 7 Home Premium (64bit) をインストールする方法。
3. Windows に BootCamp ドライバをインストール
4. BootCamp 3.1 をインストール
- 無線 LAN のドライバが 64bit に対応していなく、無線LANが使用できないのでアップデートを行う。
- Windows で、Boot Camp 更新プログラム 3.1 (Windows 64 bit) をダウンロードし、インストールする。
AS3 で現在のディレクトリの URL を返す
例えば、以下のように、HTML の中に、Flash (SWF) をはりつけていたとする。
- HTML ページ
- http://aaa.bbb.com/ccc/ddd.html
- SWF ファイル
- http://aaa.bbb.com/ccc/eee/fff.swf
この時、swf ファイルのディレクトリを取得する場合は、以下のように、loaderInfo クラスの情報を取得して正規表現でパースすればよい。
var url:String = loaderInfo.url; var re:RegExp = /^(.*\/).*$/; var currentDir:String = url.replace(re,"$1"); trace(currentDir); #=> http://aaa.bbb.com/ccc/eee/
簡単。
R で 変数の名前と値をまとめて表示する Print 関数を作った
変数の名前と値をペアで表示するだけのデバッグ用関数。変数だけでなく、ベクトルや配列、文字列、関数、データフレームにも対応しています。
引数の数は可変長なので、いくつでも大丈夫です。
Print <- function(...){ key <- as.list(substitute(list(...)))[-1L] val <- list(...) mapply( function(k, v){ cat(k, "= ") if(!is.matrix(v) && (is.logical(v) || is.numeric(v) || is.complex(v) || is.character(v))){ cat(v, "\n") } else{ cat("\n"); print(v); cat("\n") } }, key, val) cat("\n") }
使い方 その 1
基本的な使い方は、このようになります。
> a<-1; b<-2; c<-3; d<-4; # 4 つの変数 > Print(a, b, c, d) a = 1 b = 2 c = 3 d = 4
使い方 その 2
引数の型がごちゃ混ぜでも大丈夫です。
> bool <- TRUE # 論理値 > num <- 1 # 整数 > cpl <- 1+1i; # 複素数 > str <- "Hello." # 文字列 > vec <- 1:10 # ベクトル > mat <- matrix(c(1, 2, 3), 3, 2) # 2×3 の行列 > Print(bool, num, cpl, str, vec, mat, plot, iris) bool = TRUE num = 1 cpl = 1+1i str = Hello. vec = 1 2 3 4 5 6 7 8 9 10 mat = [,1] [,2] [1,] 1 1 [2,] 2 2 [3,] 3 3 plot = function (x, y, ...) { if (is.function(x) && is.null(attr(x, "class"))) { … 省略 … iris = Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa … 省略 …
毎回 Print 関数を入力するのが面倒な人は .RProfile に書いておくと良いでしょう。
(追記 2010/02/01 22:00)
Twitter 経由で @syou6162 先生からアドバイスいただいたので、大幅に修正した。id:syou6162++
R-php をインストール & 使ってみた
Web ブラウザからサーバ上の R を実行できる PHP スクリプト、R-php をインストールしてみました。
ちなみに、R-php 自体は 2005 年から存在し、特に新しい技術、という訳でもないです。
以上の図のような構成で動作しており、計算はサーバ側で行います。
今回使用したサーバは、CentOS 5.4。以下、インストールの方法。作業は全て root で実行します。
1. Apache, PHP, MySQL, ImageMagick のダウンロード
既にインストール済みの場合は省略。以下のように、すべて yum でインストール可能。
# yum install httpd httpd-devel php php-devel php-mbstring php-mysql mysql mysql-server ImageMagick ImageMagick-devel
2. R をインストール
既にインストール済みの場合は省略。RHEL5 用を流用します。
# yum install libgfortran xdg-utils perl-File-Copy-Recursive # wget ftp://ftp.ecc.u-tokyo.ac.jp/CRAN/bin/linux/redhat/el5/i386/R-2.10.0-2.el5.i386.rpm # rpm -ihv R-2.10.0-2.el5.i386.rpm
うまくいかない場合は、下記の RPM をインストール。
# wget ftp://ftp.ecc.u-tokyo.ac.jp/CRAN/bin/linux/redhat/el5/i386/R-core-2.10.0-2.el5.i386.rpm # wget ftp://ftp.ecc.u-tokyo.ac.jp/CRAN/bin/linux/redhat/el5/i386/R-devel-2.10.0-2.el5.i386.rpm # wget ftp://ftp.ecc.u-tokyo.ac.jp/CRAN/bin/linux/redhat/el5/i386/libRmath-2.10.0-2.el5.i386.rpm # wget ftp://ftp.ecc.u-tokyo.ac.jp/CRAN/bin/linux/redhat/el5/i386/libRmath-devel-2.10.0-2.el5.i386.rpm # rpm -ihv R-core-2.10.0-2.el5.i386.rpm # rpm -ihv R-devel-2.10.0-2.el5.i386.rpm # rpm -ihv libRmath-2.10.0-2.el5.i386.rpm # rpm -ihv libRmath-devel-2.10.0-2.el5.i386.rpm
詳細はここ (CentOS 5.2 に R をインストールする - CMOSにっき) を参照。
3. R-php をダウンロード & インストール
R-php の公式サイト (http://dssm.unipa.it/R-php/) から最新版 (1.0) をダウンロードします。
# wget --content-disposition 'http://dssm.unipa.it/R-php/?cmd=downPack&pack=R-php-1.tar.gz' # tar xvzf R-php-1.tar.gz # rm R-php-1.tar.gz # mv R-php-1/ /var/www/R-php/
4. アクセス制限の設定
計算資源を誰でも使用できる状態は、さすがにマズいので、Digest 認証を設定します。
# vi /etc/httpd/conf.d/r-php.conf Alias /R-php "/var/www/R-php/" <Directory "/var/www/R-php"> AuthType Digest AuthName "R-php" AuthDigestDomain /R-php/ AuthUserFile /etc/httpd/conf/.htdigest_rphp Require valid-user </Directory> # htdigest -c /etc/httpd/conf/.htdigest_rphp 'R-php' R-php # service httpd restart
5.データベースの設定
R-php が、MySQLに R というデータベースを作成します。
MySQL 側で新しいデータベースを作成する、等といった作業は不要です。
次のファイルを編集します。
# vi /var/www/R-php/include/conf.php <? $dbuser = "(MySQL のユーザ)"; $dbpass = "(MySQL のパスワード)"; ?>
6. 画像出力の設定
R-php では、R が出力する画像を ImageMagick を使って、PS 形式から PNG 形式に変換しています。
しかし、現在のバージョンの R では PDF 形式がデフォルトなので、変更します。
/var/www/R-php/R/pages/result/index.php
# chmod +w /var/www/R-php/R/pages/result/index.php # vi /var/www/R-php/R/pages/result/index.php
<? ... /* 44 行目付近 */ //delfile("./pages/tmp/$temp/*.ps"); //コメントアウトする delfile("./pages/tmp/$temp/*.pdf"); //追加 /* 57 行目付近 */ //exec("$convert_command ./pages/tmp/$temp/Rplots.ps ./pages/tmp/$temp/R.png"); //コメントアウトする exec("$convert_command ./pages/tmp/$temp/Rplots.pdf ./pages/tmp/$temp/R.png"); //追加 /* 63 行目付近 */ //exec("$convert_command -antialias -rotate 90 $fn ./pages/tmp/$temp/$nn.png"); //コメントアウトする exec("$convert_command -antialias $fn ./pages/tmp/$temp/$nn.png"); //追加 ... ?>
/var/www/R-php/R-gui/pages/result/index.php
# chmod +w /var/www/R-php/R-gui/pages/result/index.php # vi /var/www/R-php/R-gui/pages/result/index.php
<? ... /* 77 行目付近 */ //delfile("./pages/tmp/$temp/*.ps"); //コメントアウトする delfile("./pages/tmp/$temp/*.pdf"); //追加 /* 106 行目付近 */ //exec("$convert_command ./pages/tmp/$temp/Rplots.ps ./pages/tmp/$temp/R.png"); //コメントアウトする exec("$convert_command ./pages/tmp/$temp/Rplots.pdf ./pages/tmp/$temp/R.png"); //追加 /* 112 行目付近 */ //exec("$convert_command -antialias -rotate 90 $fn ./pages/tmp/$temp/$nn.png"); //コメントアウトする exec("$convert_command -antialias $fn ./pages/tmp/$temp/$nn.png"); //追加 ... ?>
FAQ
- パッケージの使用は出来る?
- root で R を起動してインストールしたパッケージは、library() 関数で問題なく動作します。
- パッケージのインストールは出来る?
- install.packages(), file.remove(), scan() など、"危険なコマンド" は実行できないようになっています。
- 対話型の操作は出来る?
- 対話型の操作 (たとえば、BRugs の codamenu() など) には向いていないでしょうね。
- ヘルプは参照出来る?
- 未確認。
感想
- ところどころイタリア語が表示されて驚く。
- Ajax や ActionScript を駆使すれば、もっと利便性が向上すると思う。特に、ESS 的な機能を実装したい。
- 例えば、
- そもそも、2006 年からメンテナンスされていないっぽいので、作るなら、1 から作り直した方が良さそう。
- 時間に余裕があれば、SourceForge などのオープンソースプロジェクトで改良版作りたいですね。
root 宛てのメールを Gmail へ転送する
サーバのログやアラートなどを root 宛てにメールで送るように設定していますが、root から通常使用するメールアドレス (例えば Gmail など) へ転送する方法をいつも忘れるので、メモ。
# vi /etc/aliases # 末尾に追加する root: ******@gmail.com
設定したら、newaliases コマンドで変更を適用する。
# newaliases