Code::Blocks(Windows)でコマンドプロンプトへの UTF-8 文字出力

Windows OS 用の Code::Blocks でコンソール・アプリケーションを作って実行すると、Windows に搭載されている“コマンドプロンプト”が起動される。

Code::Blocks は UTF-8 に対応しているが、この文字エンコーディングソースコードを記述してビルドした後、日本語文字をコンソール出力しても、標準ではコマンドプロンプトが対応していないので文字化けしてしまう。

そこで、“コマンドプロンプト”で UTF-8 の文字出力が行なえるように、Code::Blocks のコンパイル・オプションを設定する。


初めに、メニュー「Settings...」から「Editor...」を選択して、
General settings / Other settings のタブで、エンコーディングを“UTF-8”に設定する。


次に、メニュー「Settings...」から「Compiler...」を選択して、Global compiler settings / Other options の入力欄に“-fexec-charset=cp932”と入力する。


以上の設定を行なった上で、たとえば次のような C++ソースコードをビルド&実行する。

#include
using namespace std;

int main()
{
  cout << "みなさん、こんにちわ!" << endl;
}


このコンソール・アプリケーションの“コマンドプロンプト”への出力は下図のようになる。
文字化けを起こさずにちゃんと日本語文字が表示されている。



なお、使用した Code::Blocks は、codeblocks-12.11mingw-setup.exe でインストールした。

 OTFパッケージ on Gentoo

現在インストールされている LaTeX システムは、

  • app-text/texlive-2011
  • app-text/dvipdfmx-20110311

ここに齋藤修三郎さんの OTFパッケージ(安定版)(v1.2.9.2) をインストールした。


パッケージのビルドに際して問題になるのが web2c の ovp2ovf(および、opl2ofm?)だ。

texlive-2011 に入っている ovp2ovf、opl2ofm のバージョン 2.1 は使えない。
もっと古いバージョンが必要だが、たまたま、以前土村展之さんの ptexlive(for TeX Live 2009) をインストールしたのが残っていて、その中のバージョン 1.11 が使えた。


OTFパッケージをビルドする前に、

cd /usr/bin
mv opl2ofm opl2ofm.org
mv ovp2ovf ovp2ovf.org
ln -s /usr/local/texlive/p2009/bin/i686-pc-linux-gnu/opl2ofm opl2ofm
ln -s /usr/local/texlive/p2009/bin/i686-pc-linux-gnu/ovp2ovf ovp2ovf

として旧バージョンにスイッチし、
ダウンロードした otfstable.zip アーカイブを展開し、ビルドが終了したら、

mv opl2ofm.org opl2ofm
mv ovp2ovf.org ovp2ovf

と元に戻しておく。


OTFパッケージ自体のインストールは、付属の readme.txt に従えばよい。

ポイントは、以下の通り。

シェルスクリプト makeotf を実行する。

処理が終わると同じ階層に vf, tfm, ofm というフォルダが作成されるので、適切な場所に移動させる。

筆者の場合は、vf、tfm 内のファイルを、それぞれ、

  • /usr/share/texmf/fonts/vf
  • /usr/share/texmf/fonts/tfm

また、ofm はディレクトリをまるごと

  • /usr/share/texmf/fonts/

へコピーした。

スタイルファイルを適当な場所に移動させる。その後、mktexlsr を実行する。

ディレクトリ sty の中にあるスタイルファイルを、

に適当な名前でディレクトリを新規作成してそこへコピーした。

dvipdfmxのマップファイルに(例えば)hiraginox.map(for dvipdfmx)に書かれたエントリを追加する。

map ディレクトリにある hiraginox.map(for dvipdfmx) の名前を hiraginox.map に変更し、必要があればファイル内のフォントファイルの名称を修正して、

  • /usr/share/texmf/fonts/map/dvipdfmx

に転送した。


以下は、奥村晴彦さんの TeX Wiki にあるサンプル・ソースである。

%%% -*- mode: yatex; Coding: iso-2022-jp; Encoding: ISO-2022-JP -*-
\documentclass{jsarticle}
\usepackage{otf}
\begin{document}

森\UTF{9DD7}外と内田百\UTF{9592}とが\UTF{9AD9}島屋に行くところを想像した。

\CID{7652}飾区の\CID{13706}野屋

\end{document}

これをコンパイルし、

dvipdfmx -f hiraginox.map hoge.dvi

で PDFファイルを生成すると以下のようになった。

redmine の wiki に数式を入れる

現行の redmine は www-apps/redmine-1.2.0。
LaTeX システムは app-text/texlive-2008。

redmine の wiki ページ上に LaTeX による数式を表示させるための plug in を組み込む。

使用するのは、nisrael / redmine-wiki_latex_plugin 。
GitHub から入手できる。
https://github.com/nisrael/redmine-wiki_latex_plugin/
ファイル名は、nisrael-redmine-wiki_latex_plugin-28000b9.tar.gz。



解凍したらディレクトリ名を wiki-latex-plugin に変更して、
/var/lib/redmine/vendor/plugins へ転送する。
次に、
$wiki_latex_plugin/app/controllers/wiki_latex_controller.rb というファイルを以下のように修正する。

32c32
< temp_latex.puts('\documentclass[10pt]{article}')
    • -
> temp_latex.puts('\documentclass[24pt]{article}') 33a34 > temp_latex.puts('\pagestyle{empty}') 38c39 < temp_latex.puts('\usepackage[active,displaymath,textmath,graphics]{preview}')
    • -
> temp_latex.puts('%\usepackage[active,displaymath,textmath,graphics]{preview}') 46c47 < fork_exec(dir, "/usr/bin/dvipng "+@name+".dvi -o "+@name+".png")
    • -
> fork_exec(dir, "/usr/bin/dvipng -q -D 120 -T tight -M -pp 1 "+@name+".dvi -o "+@name+".png")


次に、/var/lib/redmine に移動して下記のコマンドを実行する。

# rake db:migrate_plugins RAILS_ENV=production


/var/lib/redmine/lib/redmine/wiki_formatting.rb のコードの79行目を、次のように修正する。

(\(([^\}]*)\))?      # optional arguments
↓ ↓ ↓
(\(((.(?!\}\}))*)\))?   # optional arguments


最後にウェブサーバーを再起動する。

# /etc/init.d/apache2 restart


たとえば、以下のような TeX コードを記述すると、

{{latex($\hat{\sigma}^2=\displaystyle \frac {1}{N-p} (\mathbf{y}-\mathbf{Xb})^T (\mathbf{y}-\mathbf{Xb})$)}}

下図のように表示される。

Rstudio-server on Gentoo (x86)

自宅LANの中で私的に運用しているサーバーにRstudio-severをインストールしたときの覚書。

ビルド環境

  • dev-java/sun-jdk-1.6.0.26
  • dev-java/ant-1.8.1
  • x11-libs/pango-1.28.4
  • R-2.13.0

Rはcranから入手したソースコードをビルドした。
なお、configureに際して“--enable-R-shlib”オプションを指定する。


ビルド

サーバーに一般ユーザーでログインして下記のコマンドを実行する。

wget https://github.com/rstudio/rstudio/tarball/v0.94.84
tar zxvf v0.94.84
cd rstudio-rstudio-61a20e9/dependencies/common
./install-boost
./install-gwt
cd ../../
mkdir build
cd build
cmake -DRSTUDIO_TARGET=Server ../
sudo make install

使用したRstudioのバージョンは0.94.84。これを解凍すると、rstudio-rstudio-61a20e9というディレクトリが現れる。
boostとgwtgoogle web toolkit)は同梱されているインストーラを使ってインストールした。


起動

ユーザー認証のためにpam設定ファイルを/etc/pam.dに転送する。

sudo cp /usr/local/lib/rstudio-server/extras/pam/rstudio /etc/pam.d/


Rstudio-serverの起動は、直接rserverデーモンを実行する。

sudo /usr/local/lib/rstudio-server/bin/rserver


アクセス

Rstudio-serverへはサーバーのポート:8787を通じて行なう。

最初にユーザー認証が求められるので、サーバーの一般ユーザーとしてログインする。


下図がRstudioを使用している様子。

RStudio のビルド on Gentoo

RStudio のソースコードからの構築は、何かと制約が多い。
以下のリストは Linux でビルドする場合のシステム要件。

  • R 2.11.1
  • CMake 2.6
  • Pango 1.14
  • Boost 1.42
  • Qt 4.7 [Required only for Desktop]

現在、筆者のシステム(x86_64)にインストールされている同じパッケージのバージョンは、

  • dev-lang/R-2.12.2
  • dev-util/cmake-2.8.4-r1
  • x11-libs/pango-1.28.3-r1
  • dev-libs/boost-1.42.0-r2
  • x11-libs/qt-4.7.2

(ただし、Rの stable バージョンは 2.10.1 であり、この作業を行なった時点では unstable バージョンをインストールしていた。)

というわけで、何とかビルドができそうだ。

RStudio のソースコード
  http://www.rstudio.org/download/desktop
から入手できる。
最新パッケージは、
  rstudio-rstudio-v0.94.84-0-g61a20e9.tar.gz

ビルドとインストール手順は以下の通り。
途中、同梱されている gwtgoogle-web-toolkit)のインストーラを実行するところがポイントだ。

tar -zxvf rstudio-rstudio-v0.94.84-0-g61a20e9.tar.gz
cd rstudio-rstudio-61a20e9/dependencies/common
./install-gwt
cd ../../
mkdir build
cd build
cmake -DRSTUDIO_TARGET=Desktop \
     -DCMAKE_BUILD_TYPE=Release ../
sudo make install


インストールが終了した段階で、Kデスクトップ環境(KDE)の場合、

  Kメニュー > Applications > Development

のカテゴリに自動的に登録されている。


起動して“About”を見るとバージョンが 99.9.9 となっているのが「意味不明」だが、アプリそれ自体の動作は問題ないようである。


なお、この RStudio をインストールした後で、Gentoo パッケージの R を削除し、R の最新版(2.13.0)のソースを CRAN から入手してビルド&インストールしたが、今のところ不具合は生じていない。

Gentoo Linux への RStudio(Desktop)のインストール

RStudio は、統計言語Rのための IDE統合開発環境)だ。
本家サイトでは、Linux 用として、

が提供されている。

Gentoo ではソースコードからビルドするのが常道だが、安定版でシステムを構築している場合、ビルドの条件である boost や Qt4 などの最新バージョンが揃わない。

そこで、ここでは Ubuntu用のパッケージを使って RStudio を起動する方法を探ってみた。

用意するのは、

  • deb2targz
  • RStudio deb パッケージ

である。

deb2targz

debファイルをtar.gzファイルに変換するユーティリティである。
現時点では、app-arch/deb2targz-1が利用できる。普通にemergeすればよい。

$ sudo emerge deb2targz

RStudio

RStudioのダウンロードページから、
RStudio Desktop 0.93.89 - Ubuntu 10.04+ (32-bit)(2011/5/6 現在)をダウンロードし、以下のように展開する。

$ deb2targz rstudio-0.93.89-i386.deb
$ tar -zxvf rstudio-0.93.89-i386.tar.gz

なお、ここでは 32-bit版を例にとったが、64-bit版でも手順は同じである。

これにより "usr" というディレクトリが現れる。


RStudio の起動

上で展開して現れたRStudioディレクトリ usr 配下にある usr/lib/rstudio/bin/rstudioが実行ファイルである。

たとえば、KDEなら、konsole から、以下のようにして起動できる。

$ cd usr/lib/rstudio/bin/
$ ./rstudio

r-node を試す

r-node は統計言語Rのための、ウェブベースのフロントエンドだ。
サーバーにインストールされているRがウェブブラウザで使える。


Gentoo Linux には、あらかじめ

  • dev-lang/R-2.10.1
  • app-portage/layman-1.4.1
  • app-portage/autounmask-0.27

がインストール済みとする。


このウェブアプリは node.js で動作するので、layman でレポジトリを登録する。

# layman -f -o http://github.com/downloads/monoid/gentoo-nodejs/nodejs-layman.xml -a nodejs

利用可能な ebuild は以下の3つ。

  • net-libs/nodejs-0.3.1-r1
  • net-libs/nodejs-0.3.1
  • net-libs/nodejs-0.2.5

node.js の本家サイトを見ると、最新安定版は node-v0.2.6 なので、ここでは nodejs-0.2.5 を入れることにした。

# autounmask =net-libs/nodejs-0.2.5
# emerge =net-libs/nodejs-0.2.5

依存パッケージとして、以下の2つもインストールされた。

  • dev-util/scons-2.0.1
  • dev-lang/v8-3.0.4.1


次に r-node をビルドする。

ソースコードhttp://gitorious.org/r-node からダウンロードできる。

修正箇所は r-node/server/Makefile の8行目。

CPPFLAGS = -I/usr/local/include/node -Isrc/include -DPIC -fPIC -g -c -DEV_MULTIPLICITY=0

Gentoo では、nodejs のヘッダファイルの場所は /usr/include/node なので、このままではエラーになる。
当然ながら、以下のように修正する。

CPPFLAGS = -I/usr/include/node ...

これで r-node をビルドすることができる。

# cd r-node
# make


最後に、Rをデーモンとして動作させるために、Rserve というR用のパッケージをインストールする。

Rを起動して、以下のコマンドを実行する。

> install.packages("Rserve")

ダウンロード元のサイトとしては筑波大のサーバーあたりを指定すればよいだろう。



r-node を利用するには、まず Rserve を起動する。
コマンドラインで以下を実行すればよい。

# R CMD Rserve

次に r-node/deploy というディレクトリが作成されているのでここへ移動して、以下のようにシェルスクリプトを実行する。

# cd r-node/deploy
# ./run-server.sh


ウェブブラウザでサーバーのポート 2903 にアクセスすると、下図のようにブラウザからRの各コマンドやスクリプトが実行できる。