今日、Debianの最新版、squeeze(6.0)がリリースされた。
DebianといえばカーネルはLinuxだったが、今回からはFreeBSDのカーネルを用いたバージョンである、Debian/kFreeBSDも正式サポートされる模様。
DebianということはAPTで全部楽々管理、FreeBSDカーネルということはZFSやJail、PFなどを利用できるようになるかもしれない!…ということで、個人的にはものすごく期待していた。
まだtestingだった時代(といってもここ1〜2週間)に試したところ、ZFSは利用可能、PFは一部のみ、Jailはまだといった感じだった。ZFSに関しては、Debian-Installer側でZFSをルートとしてシステム構築することも容易にできた。
まだまだ機能が不足している感じがしなくもない…が、まぁそこはとりあえず気にせず使ってみようと思う。
・Debian を入手するには
http://www.debian.org/distrib/
…マイコミジャーナルの記事で、「Jailも使用できる」と書いてあるのだが、気のせいだろうか…
それとも、私がなにか見逃しているのだろうか…?
2011年2月6日日曜日
2010年11月25日木曜日
RubyでPIAPROからファイルを取得するライブラリを作ってみた
余裕がないとは言え、さすがに1ヶ月以上放置するのはいかがなものか、ということで、この間みくった〜♪に取り込まれた(らしい)、RubyでPIAPROからファイルを取得するライブラリを公開してみる。
中身について簡単に説明すると、
・ruby/httpsで認証用クッキー貰ってくる
・HTMLからダウンロードURL抽出
・そのURLとクッキーを利用し、open-uriでファイルをダウンロード
こんな感じ。
実際のコードは、こんな感じになる。
中身を見ると、ハードコードが多くて気持ち悪いとか、いろいろ感じるところはあるが…
ダウンロードはこちらから。
http://file.hachune.net/piapro.rb.gz
中身について簡単に説明すると、
・ruby/httpsで認証用クッキー貰ってくる
・HTMLからダウンロードURL抽出
・そのURLとクッキーを利用し、open-uriでファイルをダウンロード
こんな感じ。
実際のコードは、こんな感じになる。
piapro = PIAPRO::Download.new(:user=>"miku", :passwd=>"Mi93kU3KumIKu")
piapro.download_url("http://piapro.jp/download/?view=content_image&id=mikumikumikumiku")
中身を見ると、ハードコードが多くて気持ち悪いとか、いろいろ感じるところはあるが…
ダウンロードはこちらから。
http://file.hachune.net/piapro.rb.gz
2010年4月18日日曜日
応用情報技術者試験に行ってきた
平成22年度春期の情報処理技術者試験に行ってきた。
これまでの受験で、初級シスアド、基本情報と連続合格することができていたので、今回は応用情報技術者試験を受験。

応用情報から、午後試験に記術式の問題が出現する。これがなかなかの曲者。
正直午後は…まったく自信が無い…
応用情報はレベル3ということもあって、午前もあんまり気が抜けなかった。
公開された解答例を用いて自己採点した結果、午前: 80問中63問正解という結構良い結果に。
「俺、応用情報午前通ったらはつねさんAppend予約するんだ…」と言ってしまっていたのだが…さてどうしようか…w
…午後は、午後の解答例の公開が遅い上に、そもそも解答を問題用紙に書き込んでいる余裕が無かったため、判定不能という…
応用情報以上は6月末に合格発表。
遠いなぁ…
各種試験の解答例や問題冊子は以下からダウンロードできる。
今年は今までよりサーバが軽くなった感じがするw
http://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2010h22.html
これまでの受験で、初級シスアド、基本情報と連続合格することができていたので、今回は応用情報技術者試験を受験。

応用情報から、午後試験に記術式の問題が出現する。これがなかなかの曲者。
正直午後は…まったく自信が無い…
応用情報はレベル3ということもあって、午前もあんまり気が抜けなかった。
公開された解答例を用いて自己採点した結果、午前: 80問中63問正解という結構良い結果に。
「俺、応用情報午前通ったらはつねさんAppend予約するんだ…」と言ってしまっていたのだが…さてどうしようか…w
…午後は、午後の解答例の公開が遅い上に、そもそも解答を問題用紙に書き込んでいる余裕が無かったため、判定不能という…
応用情報以上は6月末に合格発表。
遠いなぁ…
各種試験の解答例や問題冊子は以下からダウンロードできる。
今年は今までよりサーバが軽くなった感じがするw
http://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2010h22.html
2010年3月22日月曜日
RubyでUDPなServer/Clientを作ってみた
なにやらUDPを使ったアプリケーションを作成することになりそうなので、各クライアントから来た要求を全クライアントに返すサーバと、送信/受信を行うクライアントを作成してみた。
UDPなので、相手に届いているかを保証することはできない。
よって、このサーバ/クライアントでは「伝えること」より「リアルタイムで発信すること」を重視する。
まずはサーバ側を作成。
次にクライアント側を作成する。
実際に使用すると、このようになった。

これだけで、簡単なチャットサーバ/クライアントが作成できた。
Cで書いたものを見たあとだと、Rubyが簡単過ぎて泣ける。
UDPなので、相手に届いているかを保証することはできない。
よって、このサーバ/クライアントでは「伝えること」より「リアルタイムで発信すること」を重視する。
まずはサーバ側を作成。
#!/usr/bin/env ruby
#-*- encoding: utf-8 -*-
require "socket"
SERVERIP = "192.168.0.105"
SERVERPORT = "62000"
clientList = Array.new
sock = UDPSocket.new
# サーバとして待ち受けるアドレスとポートを指定
sock.bind(SERVERIP, SERVERPORT)
while true
# sockに出力が来るのを待つ
# 来なかったらnilを返す
sel = IO::select([sock])
if sel != nil
sel[0].each {|s|
# 最大65535byte分のデータを受け取る。
# データは配列として渡される。
# ["文字列", ["アドレス種別", 送信元ポート番号, "送信元ホスト名", "送信元IPアドレス"]]
# ["192.168.0.105 :43433 miku > miku\n", ["AF_INET", 62000, "192.168.0.105", "192.168.0.105"]]
data = s.recvfrom_nonblock(65535)
string = data[0].chomp!
ip, port = data[1][3].to_s, data[1][1].to_i
clientList << {"ip"=>ip, "port"=> port}
clientList.uniq!
# 各クライアントに向けて返信する
clientList.each{|client|
printf("Server > %-15s:%5d %s\n", client["ip"], client["port"], string)
# 実際に返信する。send("文字列", フラグ, "送信先IPアドレス", "送信先ポート")
sock.send(sprintf("%-15s:%5d %s\n", client["ip"], client["port"], string), 0, client["ip"], client["port"])
}
}
end
end
sock.close
次にクライアント側を作成する。
#!/usr/bin/env ruby
#-*- encoding: utf-8 -*-
require "socket"
if ARGV[0] == nil
puts "ex) ./client.rb miku"
exit 1
end
NAME = ARGV[0]
SERVERIP = "192.168.0.105"
SERVERPORT = "62000"
# UDPのソケットを作成
sock = UDPSocket.new
# バインドするIPアドレスとポートを自動で割り当てる
sock.bind("0.0.0.0", 0)
# サーバからの情報を受け取り表示するスレッドを作成
thread = Thread.new {
while true
# sockに出力が来るのを5秒待つ。
# 来なかったらnilを返す。
sel = IO::select([sock], nil, nil, 5)
if sel != nil
sel[0].each{|s|
data = s.recvfrom_nonblock(65535)
puts data[0].chomp!
}
end
end
}
# サーバに情報を送信するループ
while true
string = STDIN.gets.chomp!
sock.send(sprintf("%-5s> %s\n", NAME, string), 0, SERVERIP, SERVERPORT)
end
sock.close
実際に使用すると、このようになった。

これだけで、簡単なチャットサーバ/クライアントが作成できた。
Cで書いたものを見たあとだと、Rubyが簡単過ぎて泣ける。
2010年3月8日月曜日
Debian(PPC)でLinux-VServerを使ってみる
Debianでのchroot環境について調べていたところ、chrootよりずっといい感じのLinux-VServerなるものが見つかったので、忘れないように書いておく。
感じとしては、FreeBSDのJailと似たようなもの…な気がする。
・aptitudeでvserver用のカーネルとツールをインストール。
・vserver用カーネルで起動するため、再起動。
・vserver用ファイルを準備。
vserver名をmikuとし、ホスト名をmiku.v.hachune.net、ディレクトリツリーの場所を/vsv/miku、ネットワークインターフェースにeth2を使用、1番のエイリアス(eth2:1)として10.39.39.100/24を割り当てる。ループバックにはlo:1を使用する。
"--"以降はdebootstrapのオプション。ここではDebian Lennyをftp.jaist.ac.jpから取得するように設定する。
…これだけ。
後は、通常のDebian同様、起動して入ってサーバを設定する。
日本語を使用したい場合はaptitude install localesするといい。
詳しくはmanのvserver、verver-build、vserver-statあたりを参考にすると良いらしい。
一部デバイスの関係で正しく動作しないアプリケーションがあるようだが、chrootだけよりいい感じ。
基本システムのみなので、インストール直後の容量が252MBと、かなり小さめなのも嬉しい。
Mac Mini G4では、XenやVMwareが使えないしな…。
linux-vserver.org
http://linux-vserver.org/
※追記
動くものと動かないものは以下のとおり。
動作確認:
bind9
apache
動作せず:
OpenVPN: /dev/net/tunが無いため不可。
dhcp3-server: eth2:1を正しく認識しない…?
その他必要そうな設定
・TimeZoneの設定
# dpkg-reconfigure tzdata
・digが必要な場合
# aptitude install dnsutils
感じとしては、FreeBSDのJailと似たようなもの…な気がする。
・aptitudeでvserver用のカーネルとツールをインストール。
# aptitude install linux-image-2.6-vserver-powerpc \
> util-vserver \
> vserver-debiantools
> util-vserver \
> vserver-debiantools
・vserver用カーネルで起動するため、再起動。
# reboot
・vserver用ファイルを準備。
vserver名をmikuとし、ホスト名をmiku.v.hachune.net、ディレクトリツリーの場所を/vsv/miku、ネットワークインターフェースにeth2を使用、1番のエイリアス(eth2:1)として10.39.39.100/24を割り当てる。ループバックにはlo:1を使用する。
"--"以降はdebootstrapのオプション。ここではDebian Lennyをftp.jaist.ac.jpから取得するように設定する。
# vserver miku build \
> --hostname miku.v.hachune.net \
> --rootdir=/vsv/miku --context 39 \
> --interface 1=eth2:10.39.39.100/24 --interface 1=lo:127.0.0.1/8\
> -m debootstrap -- -d lenny -m ftp://ftp.jaist.ac.jp/pub/Linux/Debian/
> --hostname miku.v.hachune.net \
> --rootdir=/vsv/miku --context 39 \
> --interface 1=eth2:10.39.39.100/24 --interface 1=lo:127.0.0.1/8\
> -m debootstrap -- -d lenny -m ftp://ftp.jaist.ac.jp/pub/Linux/Debian/
…これだけ。
後は、通常のDebian同様、起動して入ってサーバを設定する。
日本語を使用したい場合はaptitude install localesするといい。
・vserverを開始
# vserver miku start
・vserverを停止
# vserver miku stop
・vserverに入る
# vserver miku enter
・vserverの状態を確認
# vserver miku status
・vserverを削除
# vserver miku delete
# vserver miku start
・vserverを停止
# vserver miku stop
・vserverに入る
# vserver miku enter
・vserverの状態を確認
# vserver miku status
・vserverを削除
# vserver miku delete
詳しくはmanのvserver、verver-build、vserver-statあたりを参考にすると良いらしい。
一部デバイスの関係で正しく動作しないアプリケーションがあるようだが、chrootだけよりいい感じ。
基本システムのみなので、インストール直後の容量が252MBと、かなり小さめなのも嬉しい。
Mac Mini G4では、XenやVMwareが使えないしな…。
linux-vserver.org
http://linux-vserver.org/
※追記
動くものと動かないものは以下のとおり。
動作確認:
bind9
apache
動作せず:
OpenVPN: /dev/net/tunが無いため不可。
dhcp3-server: eth2:1を正しく認識しない…?
その他必要そうな設定
・TimeZoneの設定
# dpkg-reconfigure tzdata
・digが必要な場合
# aptitude install dnsutils
2010年3月5日金曜日
OpenBSDのカーネルを再構築
これまた忘れそうなので書いておく。
・適当なところからカーネルのソース等を持ってきておく。
今回は、以下の4つを取得。
ftp://ftp.jaist.ac.jp/pub/OpenBSD/4.6/src.tar.gz
ftp://ftp.jaist.ac.jp/pub/OpenBSD/4.6/sys.tar.gz
ftp://ftp.jaist.ac.jp/pub/openBSD/4.6/ports.tar.gz
ftp://ftp.jaist.ac.jp/pub/OpenBSD/4.6/xenocara.tar.gz
・ダウンロードしたファイルを展開する。
# cd /usr/src
# tar xzf /home/miku/sys.tar.gz
# tar xzf /home/miku/src.tar.gz
# cd /usr
# tar xzf /home/miku/xenocara.tar.gz
# tar xzf /home/miku/ports.tar.gz
・カーネルをビルド
# cd /usr/src/sys/arch/i386/conf/
# cp GENERIC.MP HACHUNE
→カーネル設定の編集はここで。
MPカーネル(マルチプロセッサ用のカーネル)の設定は、殆どがGENERICカーネルをincludeしたものなので、細かい設定はGENERICを編集して変更する。
# config HACHUNE
Don't forget to run "make depend"
# cd ../compile/HACHUNE
# make depend
# make
→ EeePC(Atom N270、DDR2-667 2GB、20GB IDE-USB HDD)だと、大体20〜30分位で終了。
・Buildしたカーネルをインストール(古いものをbsd.oldとしてとっておく)
# mv /bsd /bsd.old
# cp bsd /bsd
・再起動
# reboot
→もしコケたらブートローダーでbsd.oldを指定して起動
・ユーザーランドのビルド
# cd /usr/src
# make obj
# make build
→ カーネルのビルドよりずーーっと時間が掛かるのでゆっくり待つ。
・再起動
# reboot
…と、ここまでやっていたHDDがクラッシュ。
実験用HDDだからまぁ良いのだが、やっぱり凹むな…
・適当なところからカーネルのソース等を持ってきておく。
今回は、以下の4つを取得。
ftp://ftp.jaist.ac.jp/pub/OpenBSD/4.6/src.tar.gz
ftp://ftp.jaist.ac.jp/pub/OpenBSD/4.6/sys.tar.gz
ftp://ftp.jaist.ac.jp/pub/openBSD/4.6/ports.tar.gz
ftp://ftp.jaist.ac.jp/pub/OpenBSD/4.6/xenocara.tar.gz
・ダウンロードしたファイルを展開する。
# cd /usr/src
# tar xzf /home/miku/sys.tar.gz
# tar xzf /home/miku/src.tar.gz
# cd /usr
# tar xzf /home/miku/xenocara.tar.gz
# tar xzf /home/miku/ports.tar.gz
・カーネルをビルド
# cd /usr/src/sys/arch/i386/conf/
# cp GENERIC.MP HACHUNE
→カーネル設定の編集はここで。
MPカーネル(マルチプロセッサ用のカーネル)の設定は、殆どがGENERICカーネルをincludeしたものなので、細かい設定はGENERICを編集して変更する。
# config HACHUNE
Don't forget to run "make depend"
# cd ../compile/HACHUNE
# make depend
# make
→ EeePC(Atom N270、DDR2-667 2GB、20GB IDE-USB HDD)だと、大体20〜30分位で終了。
・Buildしたカーネルをインストール(古いものをbsd.oldとしてとっておく)
# mv /bsd /bsd.old
# cp bsd /bsd
・再起動
# reboot
→もしコケたらブートローダーでbsd.oldを指定して起動
・ユーザーランドのビルド
# cd /usr/src
# make obj
# make build
→ カーネルのビルドよりずーーっと時間が掛かるのでゆっくり待つ。
・再起動
# reboot
…と、ここまでやっていたHDDがクラッシュ。
実験用HDDだからまぁ良いのだが、やっぱり凹むな…
2010年2月28日日曜日
DebianでNFSサーバ&クライアント
ググれば大量に出てくるものを書いてもなんかなぁ...と思いつつも、
そんなことを考えていると全然Blogが書けないということに気がついたので、もう遠慮なく書くことにする。
今回は、かがみねサーバ(kagamine.h.hachune.net)の/home/mikuをめぐりねサーバ(megurine.h.hachune.net)の/home/mikuにマウントする。
まず、かがみねサーバ(NFS Server)の設定。
% sudo aptitude install nfs-kernel-server
% sudo vi /etc/exports
で、以下を追加する。
・ディレクトリをエクスポート(再エクスポート)する。
% sudo exportfs -ar
(nfs-kernel-serverを再起動する方法もある)
・公開できているか確認する。
% showmount -e
次に、めぐりねサーバ(NFS Client)の設定を行う。
/etc/fstabに以下を追加し、sudo mount -aする。
これでマウントできた。
サーバ側でshowmount -aコマンドを打つと、マウント状況が確認できる。
簡単だけれど、セキュアではないな…
/etc/exportsの書式は、man exports、
/etc/fstabのNFS関連の情報は、man nfs、
NFSエクスポートリスト操作コマンドexportfsの情報は、man exportfs
マウント情報確認コマンドshowmountの情報は、man showmount
を見ると良い。
そんなことを考えていると全然Blogが書けないということに気がついたので、もう遠慮なく書くことにする。
今回は、かがみねサーバ(kagamine.h.hachune.net)の/home/mikuをめぐりねサーバ(megurine.h.hachune.net)の/home/mikuにマウントする。
まず、かがみねサーバ(NFS Server)の設定。
% sudo aptitude install nfs-kernel-server
% sudo vi /etc/exports
で、以下を追加する。
/home/miku *.h.hachune.net(ro,sync,no_subtree_check)
・ディレクトリをエクスポート(再エクスポート)する。
% sudo exportfs -ar
(nfs-kernel-serverを再起動する方法もある)
・公開できているか確認する。
% showmount -e
次に、めぐりねサーバ(NFS Client)の設定を行う。
/etc/fstabに以下を追加し、sudo mount -aする。
kagamine.h.hachune.net:/home/miku /home/miku nfs ro,sync 0 0
これでマウントできた。
サーバ側でshowmount -aコマンドを打つと、マウント状況が確認できる。
簡単だけれど、セキュアではないな…
/etc/exportsの書式は、man exports、
/etc/fstabのNFS関連の情報は、man nfs、
NFSエクスポートリスト操作コマンドexportfsの情報は、man exportfs
マウント情報確認コマンドshowmountの情報は、man showmount
を見ると良い。
Ruby1.9.1のcursesでUTF-8文字列を表示
RubyのCursesでプレイリスト操作ツールを作成しようとしたところ、文字化けして全然使い物にならないということが判明。ついでなので1.9.1にパッチを当ててビルドしてみることにする。
・ext/curses/curses.cを編集
追加:
+ #include "locale.h"
Init_curses関数内にsetlocaleを追加:
Init_curses()
{
+ setlocale(LC_ALL, "");
・ext/curses/extconf.rbを編集(ncurseswを探すようにする)
削除:
-if have_header(*curses=%w"ncurses.h") and have_library("ncurses", "initscr")
追加:
+if have_header(*curses=%w"ncurses.h") and
+ ( have_library("ncursesw", "initscr") or have_library("ncurses", "initscr") )
+ make=true
削除:
-elsif have_header(*curses=%w"ncurses/curses.h") and have_library("ncurses", "initscr")
追加:
+elsif have_header(*curses=%w"ncurses/curses.h") and
+ ( have_library("ncursesw", "initscr") or have_library("ncurses", "initscr") )
+ make=true
・ruby-1.9.1-p378.tar.bz2をダウンロード
・ libncursesw-devをaptからインストール
% sudo aptitude install libncursesw-dev
・ビルド。-O2だと何故か途中でコケるらしいので、-O3にする。
% optflags="-O3 -pipe" ./configure --prefix=/usr/ruby19 --program-suffix=19
・ext/curses/curses.cを編集
追加:
+ #include "locale.h"
Init_curses関数内にsetlocaleを追加:
Init_curses()
{
+ setlocale(LC_ALL, "");
・ext/curses/extconf.rbを編集(ncurseswを探すようにする)
削除:
-if have_header(*curses=%w"ncurses.h") and have_library("ncurses", "initscr")
追加:
+if have_header(*curses=%w"ncurses.h") and
+ ( have_library("ncursesw", "initscr") or have_library("ncurses", "initscr") )
+ make=true
削除:
-elsif have_header(*curses=%w"ncurses/curses.h") and have_library("ncurses", "initscr")
追加:
+elsif have_header(*curses=%w"ncurses/curses.h") and
+ ( have_library("ncursesw", "initscr") or have_library("ncurses", "initscr") )
+ make=true
・ruby-1.9.1-p378.tar.bz2をダウンロード
・ libncursesw-devをaptからインストール
% sudo aptitude install libncursesw-dev
・ビルド。-O2だと何故か途中でコケるらしいので、-O3にする。
% optflags="-O3 -pipe" ./configure --prefix=/usr/ruby19 --program-suffix=19
2010年2月9日火曜日
CでOpenMPを使ってみる
せっかくマルチコアCPUがあることだし、全コアを全力で使えるプログラムを作ってみたいと考えていたが、いろいろ面倒で諦めがちだった。しかし、C/C++にはOpenMPという便利なものがあると聞いて、調べみたところ、本当に便利だったのでここに纏めてみる。
OpenMPを利用するには、GCC 4.2以降が必要で、コンパイル時に-fopenmpオプションを付ける必要がある。
% gcc openmp_test.c -o openmp_test -fopenmp
また、今回OpenMP関連で使用した関数とその役割は以下のとおり。
omp_get_thread_num() … 現在実行されているスレッドの番号を返す
omp_set_num_threads(10) … スレッド数を10に指定(通常はCPUコア数から自動的に割り振られる)
まずは一番簡単なスレッド作成方法。
スレッド処理したい関数の前に#pragma omp parallelを書くだけ。
これをコンパイルし実行すると、
となったり、
となったりする。なにやら同時に処理されているように見え、スレッドの実験としては成功していることが分かる。
しかし、結果が安定していないため、このままではあまり使い物にならない。
開始したスレッド全てから変数iが参照され、変更されるためこうなってしまう。
そこで、変数iをスレッド内でプライベートに使うようにしてみる。
これを実行すると…
iの値はそのスレッド内のみの値として扱われ、
スレッド毎にi++されていることが分かる。
通常、全スレッドが全く同じ処理を繰り返しても意味が無い。
そこで、グローバルな変数iを操作するときのみ、排他処理を行わせる。
これを実行すると…
iの値が、両スレッドで1づつ増えていっているのが分かる。
ただ、このテストプログラムには問題がある。
while (i<0)の判定後、whileループの中で別スレッドがiに値を追加し、
printf()するときにiの値が10または10以上になってしまうことがある(sleep(1)を外すと頻繁に発生する)。
この辺りを、正しく処理させるようにしないと、「数回に1回だけ何故かコケる」なんて厄介なバグになってしまうので、注意したい。
何でもかんでも排他処理させてしまうと、他の関数で実行中のスレッドにまで影響が及び、何かしらの問題(デッドロック等)が発生する可能性がある。
そこで、できる限り排他処理を使わないようにしてみる。
(ついでに、しっかり4コア使ってくれるのか確かめるため、dummy関数を用意した)
また、「ブロック内を他のスレッドが実行中なら、ブロック内の実行をスキップする」ということも可能。
#pragma omp singleと、#pragma omp single nowaitの場合を、
実際にコンパイルして実行、比較してみると、多分違いが分かる…と思う。
また、omp_set_num_threads(スレッド数)で、スレッド数を変更しながらいろいろ試してみるのも良い。
結構長い間やっていた筈なのに、C言語のBlog投稿は今回が初めて。
やっているけど書いていないことって、かなり多いな…。
OpenMPを利用するには、GCC 4.2以降が必要で、コンパイル時に-fopenmpオプションを付ける必要がある。
% gcc openmp_test.c -o openmp_test -fopenmp
また、今回OpenMP関連で使用した関数とその役割は以下のとおり。
omp_get_thread_num() … 現在実行されているスレッドの番号を返す
omp_set_num_threads(10) … スレッド数を10に指定(通常はCPUコア数から自動的に割り振られる)
まずは一番簡単なスレッド作成方法。
スレッド処理したい関数の前に#pragma omp parallelを書くだけ。
#include<stdio.h>
int main(void){
int i;
#pragma omp parallel
for(i=0; i<20; i++){
printf("Thread %d : %d\n", omp_get_thread_num(), i);
}
return 0;
}
これをコンパイルし実行すると、
miku@kagamine:~/c-lang$ ./openmp_1
Thread 0 : 0
Thread 0 : 1
Thread 0 : 2
Thread 0 : 3
Thread 0 : 4
Thread 1 : 0
Thread 1 : 1
Thread 1 : 2
Thread 1 : 3
Thread 1 : 4
となったり、
miku@kagamine:~/c-lang$ ./openmp_1
Thread 1 : 0
Thread 1 : 1
Thread 1 : 2
Thread 1 : 3
Thread 1 : 4
Thread 0 : 0
となったりする。なにやら同時に処理されているように見え、スレッドの実験としては成功していることが分かる。
しかし、結果が安定していないため、このままではあまり使い物にならない。
開始したスレッド全てから変数iが参照され、変更されるためこうなってしまう。
そこで、変数iをスレッド内でプライベートに使うようにしてみる。
#include<stdio.h>
int main(void){
int i;
// 変数iをスレッド内プライベートとして渡し、スレッドを開始させる
#pragma omp parallel private(i)
for(i=0; i<3; i++){
printf("Thread %d : %d\n", omp_get_thread_num(), i);
}
return 0;
}
これを実行すると…
miku@kagamine:~/c-lang$ ./openmp_2
Thread 0 : 0
Thread 1 : 0
Thread 1 : 1
Thread 1 : 2
Thread 0 : 1
Thread 0 : 2
iの値はそのスレッド内のみの値として扱われ、
スレッド毎にi++されていることが分かる。
通常、全スレッドが全く同じ処理を繰り返しても意味が無い。
そこで、グローバルな変数iを操作するときのみ、排他処理を行わせる。
#include<stdio.h>
// 変数iをグローバルとして渡すが、printfとi++の部分を排他動作させる
int main(void){
int i;
i = 0;
#pragma omp parallel
while (i<10){
// 排他処理部分をブロックで指定
#pragma omp critical
{
printf("Thread %d : %d\n", omp_get_thread_num(), i);
i++;
}
sleep(1);
}
return;
}
これを実行すると…
miku@kagamine:~/c-lang$ ./openmp_3
Thread 1 : 0
Thread 0 : 1
Thread 1 : 2
Thread 0 : 3
Thread 1 : 4
Thread 0 : 5
Thread 1 : 6
Thread 0 : 7
Thread 1 : 8
Thread 0 : 9
iの値が、両スレッドで1づつ増えていっているのが分かる。
ただ、このテストプログラムには問題がある。
while (i<0)の判定後、whileループの中で別スレッドがiに値を追加し、
printf()するときにiの値が10または10以上になってしまうことがある(sleep(1)を外すと頻繁に発生する)。
この辺りを、正しく処理させるようにしないと、「数回に1回だけ何故かコケる」なんて厄介なバグになってしまうので、注意したい。
何でもかんでも排他処理させてしまうと、他の関数で実行中のスレッドにまで影響が及び、何かしらの問題(デッドロック等)が発生する可能性がある。
そこで、できる限り排他処理を使わないようにしてみる。
(ついでに、しっかり4コア使ってくれるのか確かめるため、dummy関数を用意した)
#include<stdio.h>
#include<unistd.h> // usleep()
#include<stdlib.h>
// ダミー処理関数(CPUに負荷を掛ける)
void dummy(int number){
int n, i, tmp;
int array[number];
for(i=0; i<number; i++){
array[i] = i;
}
for (n=0; n<number; n++){
for (i=0; i<number - 1; i++){
if (array[i] < array[i+1])
{
tmp = array[i];
array[i] = array[i+1];
array[i+1] = tmp;
}
}
}
return;
}
// 変数iをグローバルとして渡すが、printfとi++、dummy(10000)の部分をシングルスレッド動作させる
int main(void){
int i, while_count;
i = 0;
while_count = 0;
#pragma omp parallel
while (<<100){
// ブロック内をシングルスレッド動作させる
#pragma omp single
{
printf("Thread %d : %d\n", omp_get_thread_num(), i);
i++;
dummy(10000);
}
printf("Thread %d : loop...\n", omp_get_thread_num());
usleep(10);
while_count++;
}
printf("loop Count: %d\n", while_count);
return;
}
また、「ブロック内を他のスレッドが実行中なら、ブロック内の実行をスキップする」ということも可能。
#include<stdio.h>
#include<unistd.h> // usleep()
#include<stdlib.h>
// ダミー処理関数(CPUに負荷を掛ける)
void dummy(int number){
int n, i, tmp;
int array[number];
for(i=0; i<number; i++){
array[i] = i;
}
for (n=0; n<number; n++){
for (i=0; i<number - 1; i++){
if (array[i] < array[i+1])
{
tmp = array[i];
array[i] = array[i+1];
array[i+1] = tmp;
}
}
}
return;
}
// 変数iをグローバルとして渡すが、printfとi++、dummy(10000)の部分をシングルスレッド動作させる。
// もしその部分が別スレッドで処理中ならスキップする
int main(void){
int i, while_count;
i = 0;
while_count = 0;
#pragma omp parallel
while (i<100){
// single nowait : 他のスレッドがブロック内を実行中だったらスキップ
#pragma omp single nowait
{
printf("Thread %d : %d\n", omp_get_thread_num(), i);
i++;
dummy(10000);
}
printf("Thread %d : loop...\n", omp_get_thread_num());
usleep(10);
while_count++;
}
printf("loop Count: %d\n", while_count);
return;
}
#pragma omp singleと、#pragma omp single nowaitの場合を、
実際にコンパイルして実行、比較してみると、多分違いが分かる…と思う。
また、omp_set_num_threads(スレッド数)で、スレッド数を変更しながらいろいろ試してみるのも良い。
結構長い間やっていた筈なのに、C言語のBlog投稿は今回が初めて。
やっているけど書いていないことって、かなり多いな…。
2010年1月30日土曜日
様々なOSでRAMDiskを使ってみる
/ramに32MBのRAMDiskを作る、/etc/fstabの設定を比較してみた。
実験に使用したOSは、Linux(Debian 5.0 Lenny)、FreeBSD 8.0、OpenBSD 4.6の3つ。
Linux
tmpfs /ram tmpfs rw,size=32m 0 0
FreeBSD
md /ram mfs rw,-s32m 0 0
OpenBSD
swap /ram mfs rw,-s=65536 0 0
fstabの5列目は、「dumpが必要なファイルシステムであるか」、6列目は、「起動時にfsckを行う必要のあるファイルシステムであるか」であり、RamDiskにはどちらも必要ないので、0とする。
OpenBSDは、サイズで指定するのではなく、ブロック数で指定するので、直感的には分かりづらい感じ。
(試しに-s=32mとしてみたところ、そんなサイズ知らねぇよ、と言われた)
また、65535と1ブロック少ない値を設定したところ,
mount_mfs: reduced number of fragments per cylinder group from 8184 to 8112 to enlarge last cylinder group
と言われるので、おとなしく8192で割り切れる値にしておいた方が良さそう。
コマンドだと、こんな感じ。
Linux
# mount tmpfs -o rw,size=32m /ram
FreeBSD
# mount_mfs -s 32m -o rw md /ram
OpenBSD
# mount_mfs -s 65536 -o rw swap /ram
実験に使用したOSは、Linux(Debian 5.0 Lenny)、FreeBSD 8.0、OpenBSD 4.6の3つ。
Linux
tmpfs /ram tmpfs rw,size=32m 0 0
FreeBSD
md /ram mfs rw,-s32m 0 0
OpenBSD
swap /ram mfs rw,-s=65536 0 0
fstabの5列目は、「dumpが必要なファイルシステムであるか」、6列目は、「起動時にfsckを行う必要のあるファイルシステムであるか」であり、RamDiskにはどちらも必要ないので、0とする。
OpenBSDは、サイズで指定するのではなく、ブロック数で指定するので、直感的には分かりづらい感じ。
(試しに-s=32mとしてみたところ、そんなサイズ知らねぇよ、と言われた)
また、65535と1ブロック少ない値を設定したところ,
mount_mfs: reduced number of fragments per cylinder group from 8184 to 8112 to enlarge last cylinder group
と言われるので、おとなしく8192で割り切れる値にしておいた方が良さそう。
コマンドだと、こんな感じ。
Linux
# mount tmpfs -o rw,size=32m /ram
FreeBSD
# mount_mfs -s 32m -o rw md /ram
OpenBSD
# mount_mfs -s 65536 -o rw swap /ram
2009年12月21日月曜日
Multi Thread Multimedia Encoder Frontendの新バージョンのAlpha版を公開
1年ぐらい前から作っていた「lameやoggでマルチスレッドエンコードするフロントエンド」を更新してみた。
更新と言っても、設計は1からやり直し、コードもすべて1から書き直しているので、新ソフトと言ってもいいような位別物になった…気が。

ただ、まだAlpha版なので、おかしい所があるかも知れない上に、Readme.txt等のドキュメント類も無し。
それでも使ってくださるという方は、以下からダウンロードしてください。
https://sites.google.com/a/g.hachune.net/mtmef/home/download/Encoder_v2.0alpha_100103.zip?attredirects=0&d=1
まだWindows版しかありません。(´・ω・`)スマソ
09.01.03
'require': No such file to load -- fileutilsとなる問題を修正しました。
ビルドに失敗していたようです…。
※主な機能追加
・GUIの改良
・ファイル単位での追加も対応(今まではフォルダ単位のみ)
・フィルタ設定のGUI化
・文字コード関連の問題が回避しやすくなった
・ID3タグなどに対応しやすいように改良
・ログ出力機能の強化
自分自身では常用できるレベルなので、後は違う環境で問題が発生しないか、しょーもないバグが無いかなどを確認後、早急にreadme.txt等のドキュメント類を完成させて、正式リリースできれば、とは思っているのだが…何時になるやら…
更新と言っても、設計は1からやり直し、コードもすべて1から書き直しているので、新ソフトと言ってもいいような位別物になった…気が。

ただ、まだAlpha版なので、おかしい所があるかも知れない上に、Readme.txt等のドキュメント類も無し。
それでも使ってくださるという方は、以下からダウンロードしてください。
https://sites.google.com/a/g.hachune.net/mtmef/home/download/Encoder_v2.0alpha_100103.zip?attredirects=0&d=1
まだWindows版しかありません。(´・ω・`)スマソ
09.01.03
'require': No such file to load -- fileutilsとなる問題を修正しました。
ビルドに失敗していたようです…。
※主な機能追加
・GUIの改良
・ファイル単位での追加も対応(今まではフォルダ単位のみ)
・フィルタ設定のGUI化
・文字コード関連の問題が回避しやすくなった
・ID3タグなどに対応しやすいように改良
・ログ出力機能の強化
自分自身では常用できるレベルなので、後は違う環境で問題が発生しないか、しょーもないバグが無いかなどを確認後、早急にreadme.txt等のドキュメント類を完成させて、正式リリースできれば、とは思っているのだが…何時になるやら…
2009年12月16日水曜日
Google日本語入力の64bit版が公開
32bit版のみリリースして64bitWindowsユーザーから叩かれまくったGoogle日本語入力が、ようやく64bitWindows・MacOSXに対応した模様。
http://googlejapan.blogspot.com/2009/12/64-google.html
そして百度が何故かこのタイミングで日本語入力ソフト「Baidu Type」なるものをリリース。
http://type.baidu.jp/
>>大量のWebページなどのリソースをベースにした統計的言語モデルを採用し、単語同士の共起関係(n-gram)などを利用することによって、より自然な変換候補のランキングを追求しています。
また、人名・タイトル名などの固有名詞や、ホットワード(流行語)などの新語も、ウェブリソースを利用することで非常に広い範囲をカバーしており、かつ迅速に辞書に追加されるため、ストレスを感じさせません。
…売り文句も、どこかで聞いたことがあるような感じが…
http://googlejapan.blogspot.com/2009/12/64-google.html
そして百度が何故かこのタイミングで日本語入力ソフト「Baidu Type」なるものをリリース。
http://type.baidu.jp/
>>大量のWebページなどのリソースをベースにした統計的言語モデルを採用し、単語同士の共起関係(n-gram)などを利用することによって、より自然な変換候補のランキングを追求しています。
また、人名・タイトル名などの固有名詞や、ホットワード(流行語)などの新語も、ウェブリソースを利用することで非常に広い範囲をカバーしており、かつ迅速に辞書に追加されるため、ストレスを感じさせません。
…売り文句も、どこかで聞いたことがあるような感じが…
2009年12月13日日曜日
DebianとBIND9でDNSサーバを作成
サーバの台数が増え、/etc/hostsにいちいち書くのが流石に面倒になってきた。そこで、何度か挑戦して諦めることを繰り返していたBIND9をいい加減覚えようとやる気を出してみた。
今回は、できる限りデフォルト設定を利用し、基本のみを設定することを目標にして纏めてみる。
外部には公開せず、LAN内部のみで利用することを前提として作成する。よって、公開サーバを立てる場合は、これらの設定に加え、セキュリティ対策が必要となる。
サーバとして使用するのは、VPNサーバとしてもお世話になっているMac Mini(中身はDebian 5.03。ホスト名megurine)。
ネットワークの構造はこんな感じ。

ネットワークアドレス 192.168.0/24
ネットワーク名 h.hachune.net
この中で、hatsune、hachune、kagamine、megurineには、それぞれmiku、eee、rin、lukaとCNAMEレコード(Alias)を付ける。
更に、megurineにはAレコードでnsとも付けておく。
Debianなので
% sudo aptitude install bind9
で一発インストール可能。
この時、BINDを実行するグループ bindとユーザ bindが、自動的に追加される。
…と思ったが、named.confで弄るところは無い模様。
一度設定したら滅多に変更することの無い、ルートサーバ、ループバックアドレス正引き・逆引きの設定がnamed.confに既に用意されていて、ドメイン設定はnamed.conf.local、BINDのオプションはnamed.conf.optionsに書くように、とのことらしい。
※named.confの内容(変更なし)
※/etc/bind/db.rootの内容(変更なし)
※/etc/bind/db.localの内容(変更なし)
※/etc/bind/db.127の内容(変更なし)
※/etc/bind/db.0の内容(変更なし)
※/etc/bind/db.255の内容(変更なし)
ようやく設定ファイルを弄ることになる。
ここでは、/etc/bind/zones.rfc1918を参考にしながら、named.conf.localのみの変更を行う。
h.hachune.netの正引きと、そのネットワークの逆引き168.192.addr-arpaの設定を行う。
※zones.rfc1918の内容(変更なし)
※named.conf.local(変更前)
※named.conf.local(変更後)
h.hachune.netの正引きの設定を行う。
ここでは、/etc/bind/db.emptyを参考に、設定を行う。
※/etc/bind/db.emptyの内容(変更なし)
※/etc/bind/h.hachune.net/h.hachune.net.zoneの内容
正引きの設定と同様に、逆引きの設定も行う。
以上の設定が終了したら、BINDデーモンの再起動を行う。
% sudo /etc/init.d/bind9 restart
もしうまく起動しない場合は、% sudo tail /var/log/syslogして、どこでエラーが発生しているのか確認する。
デーモンが正しく再起動出来たら、digコマンドを利用しレコードを確認する。
※正引きレコードの確認
※逆引きレコードの確認
※キャッシュサーバの確認
以上で、とりあえずは使えるDNSサーバができた。
弄ったのは、named.conf.localとh.hachune.net.zone、h.hachune.net.revのみ。
…ここまではそんなに難しくはないんだが…('A`)
・参考
@IT 実用 BIND9で作るDNSサーバ 第2回 すべての基礎、マスター・ゾーンサーバの設定
http://www.atmarkit.co.jp/flinux/rensai/bind902/bind902a.html
今回は、できる限りデフォルト設定を利用し、基本のみを設定することを目標にして纏めてみる。
外部には公開せず、LAN内部のみで利用することを前提として作成する。よって、公開サーバを立てる場合は、これらの設定に加え、セキュリティ対策が必要となる。
サーバとして使用するのは、VPNサーバとしてもお世話になっているMac Mini(中身はDebian 5.03。ホスト名megurine)。
ネットワークの構造はこんな感じ。

ネットワークアドレス 192.168.0/24
ネットワーク名 h.hachune.net
| router | 192.168.0.1 |
| hatsune | 192.168.0.100 |
| oldfox | 192.168.0.101 |
| hachune | 192.168.0.102 |
| 360 | 192.168.0.103 |
| megurine | 192.168.0.104 |
| kagamine | 192.168.0.105 |
この中で、hatsune、hachune、kagamine、megurineには、それぞれmiku、eee、rin、lukaとCNAMEレコード(Alias)を付ける。
更に、megurineにはAレコードでnsとも付けておく。
1. BIND9をインストール
Debianなので
% sudo aptitude install bind9
で一発インストール可能。
この時、BINDを実行するグループ bindとユーザ bindが、自動的に追加される。
2. named.confの変更
…と思ったが、named.confで弄るところは無い模様。
一度設定したら滅多に変更することの無い、ルートサーバ、ループバックアドレス正引き・逆引きの設定がnamed.confに既に用意されていて、ドメイン設定はnamed.conf.local、BINDのオプションはnamed.conf.optionsに書くように、とのことらしい。
※named.confの内容(変更なし)
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local
include "/etc/bind/named.conf.options";
// prime the server with knowledge of the root servers
zone "." {
type hint;
file "/etc/bind/db.root";
};
// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912
zone "localhost" {
type master;
file "/etc/bind/db.local";
};
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
zone "0.in-addr.arpa" {
type master;
file "/etc/bind/db.0";
};
zone "255.in-addr.arpa" {
type master;
file "/etc/bind/db.255";
};
include "/etc/bind/named.conf.local";
※/etc/bind/db.rootの内容(変更なし)
; This file holds the information on root name servers needed to
; initialize cache of Internet domain name servers
; (e.g. reference this file in the "cache ."
; configuration file of BIND domain name servers).
;
; This file is made available by InterNIC
; under anonymous FTP as
; file /domain/named.root
; on server FTP.INTERNIC.NET
; -OR- RS.INTERNIC.NET
;
; last update: Feb 04, 2008
; related version of root zone: 2008020400
;
; formerly NS.INTERNIC.NET
;
. 3600000 IN NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4
A.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:BA3E::2:30
;
; formerly NS1.ISI.EDU
;
. 3600000 NS B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET. 3600000 A 192.228.79.201
;
; formerly C.PSI.NET
;
. 3600000 NS C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12
;
; formerly TERP.UMD.EDU
;
. 3600000 NS D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90
;
; formerly NS.NASA.GOV
;
. 3600000 NS E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10
;
; formerly NS.ISC.ORG
;
. 3600000 NS F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241
F.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2f::f
;
; formerly NS.NIC.DDN.MIL
;
. 3600000 NS G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4
;
; formerly AOS.ARL.ARMY.MIL
;
. 3600000 NS H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53
H.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:1::803f:235
;
; formerly NIC.NORDU.NET
;
. 3600000 NS I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17
;
; operated by VeriSign, Inc.
;
. 3600000 NS J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30
J.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:C27::2:30
;
; operated by RIPE NCC
;
. 3600000 NS K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129
K.ROOT-SERVERS.NET. 3600000 AAAA 2001:7fd::1
;
; operated by ICANN
;
. 3600000 NS L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET. 3600000 A 199.7.83.42
;
; operated by WIDE
;
. 3600000 NS M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
M.ROOT-SERVERS.NET. 3600000 AAAA 2001:dc3::35
; End of File
※/etc/bind/db.localの内容(変更なし)
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA localhost. root.localhost. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
@ IN A 127.0.0.1
@ IN AAAA ::1
※/etc/bind/db.127の内容(変更なし)
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA localhost. root.localhost. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
1.0.0 IN PTR localhost.
※/etc/bind/db.0の内容(変更なし)
; BIND reverse data file for broadcast zone
;
$TTL 604800
@ IN SOA localhost. root.localhost. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
※/etc/bind/db.255の内容(変更なし)
; BIND reverse data file for broadcast zone
;
$TTL 604800
@ IN SOA localhost. root.localhost. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
3. named.conf.localの変更
ようやく設定ファイルを弄ることになる。
ここでは、/etc/bind/zones.rfc1918を参考にしながら、named.conf.localのみの変更を行う。
h.hachune.netの正引きと、そのネットワークの逆引き168.192.addr-arpaの設定を行う。
※zones.rfc1918の内容(変更なし)
zone "10.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "16.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "17.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "18.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "19.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "20.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "21.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "22.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "23.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "24.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "25.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "26.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "27.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "28.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "29.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "30.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "31.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "168.192.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
※named.conf.local(変更前)
//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
※named.conf.local(変更後)
//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "h.hachune.net"{
type master;
file "/etc/bind/h.hachune.net/h.hachune.net.zone";
};
zone "0.168.192.in-addr.arpa"{
type master;
file "/etc/bind/h.hachune.net/h.hachune.net.rev";
};
4. /etc/bind/h.hachune.net/h.hachune.net.zoneの設定
h.hachune.netの正引きの設定を行う。
ここでは、/etc/bind/db.emptyを参考に、設定を行う。
※/etc/bind/db.emptyの内容(変更なし)
; BIND reverse data file for empty rfc1918 zone
;
; DO NOT EDIT THIS FILE - it is used for multiple zones.
; Instead, copy it, edit named.conf, and use that copy.
;
$TTL 86400
@ IN SOA localhost. root.localhost. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
;
@ IN NS localhost.
※/etc/bind/h.hachune.net/h.hachune.net.zoneの内容
$TTL 86400
@ IN SOA ns.h.hachune.net. lefay.g.hachune.net.(
200912120 ;
3600 ;
900 ;
604800 ;
86400 ;
)
@ IN NS ns.h.hachune.net.
@ IN A 192.168.0.104
router IN A 192.168.0.1
hatsune IN A 192.168.0.100
miku IN CNAME hatsune
oldfox IN A 192.168.0.101
hachune IN A 192.168.0.102
eee IN CNAME hachune
360 IN A 192.168.0.103
megurine IN A 192.168.0.104
luka IN CNAME megurine
ns IN A 192.168.0.104
kagamine IN A 192.168.0.105
rin IN CNAME kagamine
5. /etc/bind/h.hachune.net/h.hachune.net.revの設定
正引きの設定と同様に、逆引きの設定も行う。
$TTL 86400
@ IN SOA ns.h.hachune.net. lefay.g.hachune.net.(
200912120 ;
3600 ;
900 ;
604800 ;
3600 ;
)
@ IN NS ns.h.hachune.net.
1 IN PTR router.h.hachune.net.
100 IN PTR hatsune.h.hachune.net.
101 IN PTR nec.h.hachune.net.
102 IN PTR hachune.h.hachune.net.
103 IN PTR 360.h.hachune.net.
104 IN PTR megurine.h.hachune.net.
105 IN PTR kagamine.h.hachune.net.
以上の設定が終了したら、BINDデーモンの再起動を行う。
% sudo /etc/init.d/bind9 restart
もしうまく起動しない場合は、% sudo tail /var/log/syslogして、どこでエラーが発生しているのか確認する。
6. 正しく設定が反映されているか確認
デーモンが正しく再起動出来たら、digコマンドを利用しレコードを確認する。
※正引きレコードの確認
master@megurine:/etc/bind$ dig @127.0.0.1 miku.h.hachune.net
; <<>> DiG 9.5.1-P3 <<>> @127.0.0.1 miku.h.hachune.net
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19223
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;miku.h.hachune.net. IN A
;; ANSWER SECTION:
miku.h.hachune.net. 86400 IN CNAME hatsune.h.hachune.net.
hatsune.h.hachune.net. 86400 IN A 192.168.0.100
;; AUTHORITY SECTION:
h.hachune.net. 86400 IN NS ns.h.hachune.net.
;; ADDITIONAL SECTION:
ns.h.hachune.net. 86400 IN A 192.168.0.104
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Dec 13 02:41:46 2009
;; MSG SIZE rcvd: 107
※逆引きレコードの確認
master@megurine:/etc/bind$ dig @127.0.0.1 -x 192.168.0.100
; <<>> DiG 9.5.1-P3 <<>> @127.0.0.1 -x 192.168.0.100
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24508
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;100.0.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
100.0.168.192.in-addr.arpa. 86400 IN PTR hatsune.h.hachune.net.
;; AUTHORITY SECTION:
0.168.192.in-addr.arpa. 86400 IN NS ns.h.hachune.net.
;; ADDITIONAL SECTION:
ns.h.hachune.net. 86400 IN A 192.168.0.104
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Dec 13 02:42:16 2009
;; MSG SIZE rcvd: 112
※キャッシュサーバの確認
master@megurine:/etc/bind$ dig @127.0.0.1 crypton.co.jp.
; <<>> DiG 9.5.1-P3 <<>> @127.0.0.1 crypton.co.jp.
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31873
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;crypton.co.jp. IN A
;; AUTHORITY SECTION:
crypton.co.jp. 892 IN SOA dns-b.iij.ad.jp. dns-managers.iij.ad.jp. 63 3600 1800 3600000 900
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Dec 13 02:46:34 2009
;; MSG SIZE rcvd: 93
以上で、とりあえずは使えるDNSサーバができた。
弄ったのは、named.conf.localとh.hachune.net.zone、h.hachune.net.revのみ。
…ここまではそんなに難しくはないんだが…('A`)
・参考
@IT 実用 BIND9で作るDNSサーバ 第2回 すべての基礎、マスター・ゾーンサーバの設定
http://www.atmarkit.co.jp/flinux/rensai/bind902/bind902a.html
2009年12月3日木曜日
GoogleがWindows、Mac向けにIMEを公開
Googleが日本語入力ソフトを開発・公開…とあるのだが…
http://www.google.com/intl/ja/ime/
64bit版Windows非対応なため、メイン環境がWindows Server 2008 R2な私は利用することができないという…

なにやら、Web検索の技術を流用しているらしく、MS Office IMEの辞書などに比べて、予測変換できる文の種類が物凄く多いらしい。
…今はOffice IME 2010 Beta使ってるし、まぁいいか…
http://www.google.com/intl/ja/ime/
64bit版Windows非対応なため、メイン環境がWindows Server 2008 R2な私は利用することができないという…

なにやら、Web検索の技術を流用しているらしく、MS Office IMEの辞書などに比べて、予測変換できる文の種類が物凄く多いらしい。
…今はOffice IME 2010 Beta使ってるし、まぁいいか…
2009年11月28日土曜日
M3N78-EMのBIOSを更新してみた
先月組んだサーバで、OpenSolaris 2009.06のLiveCDを起動しようとしたところ、カーネルがコケて起動できない問題が発生した。
そこで、CPU(Athlon II X2 240e)非対応にもかかわらず、DebianやWindowsが普通に動作してしまったので放置していたBIOSを、更新してみることにした。
※用意するもの
・PC
・更新用BIOSイメージのアーカイブ(M3N78-EM BIOS 0704)
http://support.asus.com/download/download.aspx?SLanguage=ja-jp
・USBメモリ
FAT32でフォーマットし、ダウンロードしてきたBIOSイメージのアーカイブ(zip)を解凍、ルートディレクトリにBIOSイメージをコピーしておく。
安定していて、信頼できるものを用意。
・はちゅねさん(オプション)

とりあえず現在の状態を確認。
BIOSのバージョンは0511。
http://support.asus.com/cpusupport/cpusupport.aspxで確認してみると、Athlon II X2 240eが正しく動作するとされるバージョンは0606。
…まぁダメだよね(´・ω・`)

という訳で、BIOSイメージを書き込んだUSBメモリを差し込み、ASUS EZ Flash2を起動。
横に「NTFSはサポートしてないよ」と書いてあるので、大人しくFAT32あたりでフォーマット。ext3とかUFS2なんて考えも持たないほうが良さそう。

正しく読み込めるUSBメモリなら、ファイル一覧のところに、USBメモリに保存したBIOSイメージが表示される。

BIOSイメージを選択して、Enter。
すると、Are you sure to update BIOS?と出てくるので、
・電源が落ちる原因となるものが無いか(電子レンジ、カーチャン、はちゅねさん...等)
・余計なハードウェアがPCに接続されていないか
・本当にこのBIOSで良いのか
を確認し、YES。

Erasing BIOS...
ボクは生まれそして気づく所詮…なんては言わないので、きれいさっぱり消し去ります。

Writing BIOS...
|ω・`)ノ ヤァ

Verifying BIOS...
ここで「深刻なエラーが発生しました」なんて言われても困る。というかそんなこと言われたら泣くしかない。

書き換え作業が終了すると、自動的に再起動される。
…この画面すら表示されなくなった場合は…ご愁傷様です(´;ω;`)ブワッ
(Alt+F2でEZ Flash2が起動できるって、まさかBIOS壊れても焼き直せる…とかなのか?)

BIOSのバージョンを確認。
最新版になっていた(*´д`*)アハァ

問題なくブートローダーが起動され、Debianも起動できた。

そして、今回の目標、OpenSolaris 2009.06も普通に起動できるようになった。
やっぱりBIOSだったか…
そこで、CPU(Athlon II X2 240e)非対応にもかかわらず、DebianやWindowsが普通に動作してしまったので放置していたBIOSを、更新してみることにした。
※用意するもの
・PC
・更新用BIOSイメージのアーカイブ(M3N78-EM BIOS 0704)
http://support.asus.com/download/download.aspx?SLanguage=ja-jp
・USBメモリ
FAT32でフォーマットし、ダウンロードしてきたBIOSイメージのアーカイブ(zip)を解凍、ルートディレクトリにBIOSイメージをコピーしておく。
安定していて、信頼できるものを用意。
・はちゅねさん(オプション)
とりあえず現在の状態を確認。
BIOSのバージョンは0511。
http://support.asus.com/cpusupport/cpusupport.aspxで確認してみると、Athlon II X2 240eが正しく動作するとされるバージョンは0606。
…まぁダメだよね(´・ω・`)
という訳で、BIOSイメージを書き込んだUSBメモリを差し込み、ASUS EZ Flash2を起動。
横に「NTFSはサポートしてないよ」と書いてあるので、大人しくFAT32あたりでフォーマット。ext3とかUFS2なんて考えも持たないほうが良さそう。
正しく読み込めるUSBメモリなら、ファイル一覧のところに、USBメモリに保存したBIOSイメージが表示される。
BIOSイメージを選択して、Enter。
すると、Are you sure to update BIOS?と出てくるので、
・電源が落ちる原因となるものが無いか(電子レンジ、カーチャン、はちゅねさん...等)
・余計なハードウェアがPCに接続されていないか
・本当にこのBIOSで良いのか
を確認し、YES。
Erasing BIOS...
ボクは生まれそして気づく所詮…なんては言わないので、きれいさっぱり消し去ります。
Writing BIOS...
|ω・`)ノ ヤァ
Verifying BIOS...
ここで「深刻なエラーが発生しました」なんて言われても困る。というかそんなこと言われたら泣くしかない。
書き換え作業が終了すると、自動的に再起動される。
…この画面すら表示されなくなった場合は…ご愁傷様です(´;ω;`)ブワッ
(Alt+F2でEZ Flash2が起動できるって、まさかBIOS壊れても焼き直せる…とかなのか?)
BIOSのバージョンを確認。
最新版になっていた(*´д`*)アハァ
問題なくブートローダーが起動され、Debianも起動できた。
そして、今回の目標、OpenSolaris 2009.06も普通に起動できるようになった。
やっぱりBIOSだったか…
2009年11月21日土曜日
Microsoft Office Professional Plus 2010 Betaを使ってみた
久しぶりにまったりできる休みになったので、この間一般公開されたMicrosoft Office Professional Plus 2010 の Beta版を使ってみることにした。
まずはPersonal Editionに入っているWord、Excel、Outlook。
Word

Excel

Outlook

次に、Standard以降にしか入っておらず、よく「OutlookいらねーからPowerPoint入れろ(#゚Д゚)ゴルァ!!」と言われるPowerPoint。
PowerPoint

Proffesionalを導入したは良いものの、使いどころが理解されず放置されがちなPublisherとAccess。
Publisher

Access

Ultimateを買うか、Proffesionnal Plusをボリュームライセンス契約するかしないと使えないInfoPath。
InfoPath

使いどころが分かりやすいうえに多そうな気がするのに、何故か2007ではUltimateにしか含まれなかったOneNote。
OneNote

全部2007を基本に作られている感じだが、所々使いやすく、かつ分かりやすくなっている印象を受けた。
また、初回起動も結構早く、OpenOffice.org 3.1のWriterが15秒掛かるPCで、5~10秒で起動することができていた。
無料Officeスイートとは格が違う気が…しなくもない。
Windows Server 2008 R2上で、OpenOffice.org 3.1とOffice Proffesional Plus 2010 Betaを並べるとこんな感じ。

※おまけ
2007用に作成した顔文字辞書が使えなくなってしまったので、再構築して、一応Uploadしてみる。
http://matsucon.net/material/dic/で配布されている辞書を改造、システム辞書としたものです。
http://cid-e1c321b9c41536cb.skydrive.live.com/self.aspx/%e5%85%ac%e9%96%8b/2ch^_kaomozi^_office^_ime^_2010.dic
まずはPersonal Editionに入っているWord、Excel、Outlook。
Word

Excel

Outlook

次に、Standard以降にしか入っておらず、よく「OutlookいらねーからPowerPoint入れろ(#゚Д゚)ゴルァ!!」と言われるPowerPoint。
PowerPoint

Proffesionalを導入したは良いものの、使いどころが理解されず放置されがちなPublisherとAccess。
Publisher

Access

Ultimateを買うか、Proffesionnal Plusをボリュームライセンス契約するかしないと使えないInfoPath。
InfoPath

使いどころが分かりやすいうえに多そうな気がするのに、何故か2007ではUltimateにしか含まれなかったOneNote。
OneNote

全部2007を基本に作られている感じだが、所々使いやすく、かつ分かりやすくなっている印象を受けた。
また、初回起動も結構早く、OpenOffice.org 3.1のWriterが15秒掛かるPCで、5~10秒で起動することができていた。
無料Officeスイートとは格が違う気が…しなくもない。
Windows Server 2008 R2上で、OpenOffice.org 3.1とOffice Proffesional Plus 2010 Betaを並べるとこんな感じ。

※おまけ
2007用に作成した顔文字辞書が使えなくなってしまったので、再構築して、一応Uploadしてみる。
http://matsucon.net/material/dic/で配布されている辞書を改造、システム辞書としたものです。
http://cid-e1c321b9c41536cb.skydrive.live.com/self.aspx/%e5%85%ac%e9%96%8b/2ch^_kaomozi^_office^_ime^_2010.dic
2009年11月19日木曜日
Microsoft Office Professional Plus 2010 の Beta版が一般公開
MicrosoftがOfficeシリーズの最新版、Office 2010のBeta評価版の一般公開を開始した模様。
TechnetやMSDNの評価版ダウンロードページからダウンロードすることができる。
今回(2010)から、32bit版と64bit版が明確に分かれるようになったらしく、それぞれ自分のシステムにあったインストーラーを入手する必要がある。
必須環境は以下の通り。
次の最小推奨要件を備えた PC:
・500 MHz 以上の 32 ビットまたは 64 ビット プロセッサ
・256 MB 以上のシステム メモリ
・3 GB の空き容量のあるハード ディスク
・1024x768 以上の解像度のモニター
・DVD-R/W ドライブ
サポートされているオペレーティング システム:
・Windows XP Service Pack (SP) 3 (32 ビット)
・Windows Vista SP1 (32 ビットまたは 64 ビット)
・Windows Server 2003 R2 (32 ビットまたは 64 ビット)
・Windows Server 2008 SP2 (32 ビットまたは 64 ビット)
・Windows 7 (32 ビットまたは 64 ビット)
…あれ…? Server 2008 R2は…どこ…?
Technet - Microsoft Office Professional Plus 2010 Beta
http://technet.microsoft.com/ja-jp/evalcenter/ee390818.aspx
MSDN - http://msdn.microsoft.com/ja-jp/evalcenter/ee390822.aspx
http://msdn.microsoft.com/ja-jp/evalcenter/ee390822.aspx
Download Microsoft Office Professional Plus 2010 Beta(英語)
http://www.microsoft.com/office/2010/en/download-office-professional-plus/default.aspx
TechnetやMSDNの評価版ダウンロードページからダウンロードすることができる。
今回(2010)から、32bit版と64bit版が明確に分かれるようになったらしく、それぞれ自分のシステムにあったインストーラーを入手する必要がある。
必須環境は以下の通り。
次の最小推奨要件を備えた PC:
・500 MHz 以上の 32 ビットまたは 64 ビット プロセッサ
・256 MB 以上のシステム メモリ
・3 GB の空き容量のあるハード ディスク
・1024x768 以上の解像度のモニター
・DVD-R/W ドライブ
サポートされているオペレーティング システム:
・Windows XP Service Pack (SP) 3 (32 ビット)
・Windows Vista SP1 (32 ビットまたは 64 ビット)
・Windows Server 2003 R2 (32 ビットまたは 64 ビット)
・Windows Server 2008 SP2 (32 ビットまたは 64 ビット)
・Windows 7 (32 ビットまたは 64 ビット)
…あれ…? Server 2008 R2は…どこ…?
Technet - Microsoft Office Professional Plus 2010 Beta
http://technet.microsoft.com/ja-jp/evalcenter/ee390818.aspx
MSDN - http://msdn.microsoft.com/ja-jp/evalcenter/ee390822.aspx
http://msdn.microsoft.com/ja-jp/evalcenter/ee390822.aspx
Download Microsoft Office Professional Plus 2010 Beta(英語)
http://www.microsoft.com/office/2010/en/download-office-professional-plus/default.aspx
2009年10月31日土曜日
Ubuntu 9.10もいつの間にかリリース
入門Linux(?)として最近有名なUbuntuの最新版、Ubuntu 9.10(kermic)もいつの間にかリリースしていた。
…とりあえずVMにインストールしてみるよ(´・ω・`)
デフォルトのファイルシステムがext4になっていたり、謎の機能「Ubuntu One」が追加されていたり、デフォルトのメッセンジャーがpidginからEmpathyに、IMがSCIMからiBusに変更されていたり…
付属ソフトがコロコロ変わるってのは、初心者に優しくないような気がしなくもないのだが('A`)
あと、「結構重い」というのも…
まぁ、重いといっても、Vista初期に売られまくっていたVista必須スペック限界PC位なら普通に使えるので、まず気にならないとは思う。
EeePCをOpenSUSE 11.1からこっちに換えるべきか…悩み所だな…
…とりあえずVMにインストールしてみるよ(´・ω・`)
デフォルトのファイルシステムがext4になっていたり、謎の機能「Ubuntu One」が追加されていたり、デフォルトのメッセンジャーがpidginからEmpathyに、IMがSCIMからiBusに変更されていたり…
付属ソフトがコロコロ変わるってのは、初心者に優しくないような気がしなくもないのだが('A`)
あと、「結構重い」というのも…
まぁ、重いといっても、Vista初期に売られまくっていたVista必須スペック限界PC位なら普通に使えるので、まず気にならないとは思う。
EeePCをOpenSUSE 11.1からこっちに換えるべきか…悩み所だな…
VMware Player 3.0などがいつの間にかリリースされていた
仮想化ソフトで有名なVMwareの新しいバージョンが、いつの間にかリリースされていた模様。
今回のバージョンでは、今まで仮想環境が苦手としていた、DirectXやOpenGLなどの3D周りの機能の実装や、このあいだ発売したばかりのWindows 7やWindows Server 2008 R2のサポート、VMware Playerでのゲスト仮想マシンの作成が可能になった、クアッドコアに対応等、色々進化したらしい。
対XP Mode戦略…だろうか。
と言う訳で、こないだ組んだばかりで、仮想化ソフトが何も入っていなかったDebian(Kagamine-Server)に、VMware Player 3.0をインストールしてみた。
インストールは、
・VMware Playerのページで、ダウンロードリンクを辿り、ユーザー登録。
・ユーザー登録後、登録したメールアドレスにメールが届くので、そのメールのダウンロードリンクから必要なファイル(私の場合は、"VMware Player for 64-bit Linux")をダウンロードしてくる。
・Linuxの場合、"VMware-Player-3.0.0-203739.x86_64.bundle"というファイルがダウンロードされるので、それに実行属性を加え、root権限で実行する。
・Linuxにしては珍しくGUIのインストーラーが起動するので、ウィザードに従いインストール。
後は、以前のバージョンや他の仮想化ソフト同様、仮想ハードウェアの設定などを行い、ゲストOSをインストールする。
3.0になってだいぶ簡単になったみたいだな…(*´Д`)
Windows Server 2008 R2上でPlayer 3 + Windows XPを動かしたところ、ユニティという機能が追加されていた。

Windows XP Mode同様に、ホストOS側にゲストOSのアプリケーションを表示することができる…らしい。
統一感の無いUIは気持ち悪いが、どうしても7やServer 2008 R2で動かなかったアプリケージョンを、XP Modeより高速かつDirectX等ありで動かせるのは、ありがたいような気もしなくはない。
VMware.com
http://www.vmware.com/jp/
今回のバージョンでは、今まで仮想環境が苦手としていた、DirectXやOpenGLなどの3D周りの機能の実装や、このあいだ発売したばかりのWindows 7やWindows Server 2008 R2のサポート、VMware Playerでのゲスト仮想マシンの作成が可能になった、クアッドコアに対応等、色々進化したらしい。
対XP Mode戦略…だろうか。
と言う訳で、こないだ組んだばかりで、仮想化ソフトが何も入っていなかったDebian(Kagamine-Server)に、VMware Player 3.0をインストールしてみた。
インストールは、
・VMware Playerのページで、ダウンロードリンクを辿り、ユーザー登録。
・ユーザー登録後、登録したメールアドレスにメールが届くので、そのメールのダウンロードリンクから必要なファイル(私の場合は、"VMware Player for 64-bit Linux")をダウンロードしてくる。
・Linuxの場合、"VMware-Player-3.0.0-203739.x86_64.bundle"というファイルがダウンロードされるので、それに実行属性を加え、root権限で実行する。
・Linuxにしては珍しくGUIのインストーラーが起動するので、ウィザードに従いインストール。
後は、以前のバージョンや他の仮想化ソフト同様、仮想ハードウェアの設定などを行い、ゲストOSをインストールする。
3.0になってだいぶ簡単になったみたいだな…(*´Д`)
Windows Server 2008 R2上でPlayer 3 + Windows XPを動かしたところ、ユニティという機能が追加されていた。

Windows XP Mode同様に、ホストOS側にゲストOSのアプリケーションを表示することができる…らしい。
統一感の無いUIは気持ち悪いが、どうしても7やServer 2008 R2で動かなかったアプリケージョンを、XP Modeより高速かつDirectX等ありで動かせるのは、ありがたいような気もしなくはない。
VMware.com
http://www.vmware.com/jp/
2009年10月22日木曜日
Windows XP ModeとVirtual PCの正式版がリリース
Windows 7が発売したのに合わせて、売りの機能であったWindows XP ModeとVirtual PCの正式版もリリースされた。
以前からの情報の通り、Windows XP Modeが使用できるのは、Professional、Enterprise、Ultimateのみとなっている。
また、今までのVirtual PC(2004、2007)とは違い、今回のVirtual PCはハードウェア仮想化支援(AMD-VもしくはIntel-VT)が必須となっており、古いCPU(Socket AM2以前のAMDCPUなど)やIntelの廉価CPU(Core2DuoやPentium Dual Core、Celeron等の一部)では、Virtual PCとWindows XP Modeが一切使用できなくなっている。
使い方は、以前書いた「Virtual PC BetaとWindows XP Modeを使ってみた」や巡音ルカをWindows XP Modeにインストールしてみたとほぼ同じ模様。
Download Virtual PC & Windows XP Mode
http://www.microsoft.com/windows/virtual-pc/download.aspx
Virtual PC
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=2b6d5c18-1441-47ea-8309-2545b08e11dd
Windows XP Mode
http://www.microsoft.com/downloads/details.aspx?FamilyID=fb633e9d-ddbc-4044-bb09-4f99e757064e&displaylang=ja
以前からの情報の通り、Windows XP Modeが使用できるのは、Professional、Enterprise、Ultimateのみとなっている。
また、今までのVirtual PC(2004、2007)とは違い、今回のVirtual PCはハードウェア仮想化支援(AMD-VもしくはIntel-VT)が必須となっており、古いCPU(Socket AM2以前のAMDCPUなど)やIntelの廉価CPU(Core2DuoやPentium Dual Core、Celeron等の一部)では、Virtual PCとWindows XP Modeが一切使用できなくなっている。
使い方は、以前書いた「Virtual PC BetaとWindows XP Modeを使ってみた」や巡音ルカをWindows XP Modeにインストールしてみたとほぼ同じ模様。
Download Virtual PC & Windows XP Mode
http://www.microsoft.com/windows/virtual-pc/download.aspx
Virtual PC
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=2b6d5c18-1441-47ea-8309-2545b08e11dd
Windows XP Mode
http://www.microsoft.com/downloads/details.aspx?FamilyID=fb633e9d-ddbc-4044-bb09-4f99e757064e&displaylang=ja
登録:
投稿 (Atom)


