Windows上にNFSサーバーを構築する

WindowsとLinuxとの間でファイルを共有したいと思った場合、LinuxにSambaを導入してLinux上に共有フォルダを作成するか、Sambaに含まれているsmbmountコマンドでWindows上の共有フォルダにアクセスする方法がある。

また、samba-clientパッケージを導入すれば、mountコマンドでWindows上の共有フォルダにアクセスするという方法もある。

しかし、今回は、LinuxにSambaやsamba-clientなどのパッケージをせずにWindows上にNFSサーバーを構築することでファイル共有してみた。

今回、Windows上にNFSサーバーを構築する際に使用したのは、Windows  Services for UNIX(以降、SFU)というソフト。

cygwinやMinGWのようにWindows上にUNIXライクな環境を提供してくれるソフトである。調べてみると、2004年に無償化された模様。

SFUの機能や詳細については、以下のリンク先を参照。

【特集】マイクロソフトSFU vs Cygwin – Windows上のUNIX互換環境を徹底比較(1) マイクロソフトの提供するUNIX互換環境SFU (マイコミジャーナル)

@IT:製品レビュー:企業ユーザーのためのSFU 3.5活用ガイダンス 第1回 SFU 3.5の概要とNFS機能

SFUは、以下のサイトからダウンロードできる。

Windows Services for UNIX

SFUのインストールは、インストールウィザードに従いながら途中でカスタムインストールを選択。

コンポーネントの選択では、今回はNFSサーバーの構築が目的なので、

  • NFSクライアント
  • NFSサーバー
  • ユーザー名マッピング
  • NFS認証サーバー

のインストールをオンにし、それ以外はオフに設定。

その後のユーザー名マッピングの項目では、[ローカルユーザー名マッピングサーバー(L)]の[パスワードおよびグループファイル]を選択。

次の画面でパスワードファイルとグループファイルの名前とパスを聞かれるが、後からでも設定できるので、ここでは何も設定せずに次へ。

あとはインストール先を設定すればインストール完了。

再起動を促されるので、指示に従ってPCを再起動。

再起動後、「Services for UNIX の管理」を起動して、各種項目を設定していく。

「NFSサーバー -> クライアントグループ」で、クライアントPCを登録。

「ユーザー名マッピング -> 構成」では、インストール時に設定を省略したパスワードファイルとグループファイルを設定する。

パスワードファイルとグループファイルの内容は、クライアントとなるLinuxのパスワードファイル(/etc/passwd)とグループファイル(/etc/group)をそのままコピーしてくるだけ。

何らかの理由でコピーできない場合は、とりあえず管理者(root)や管理者用一般ユーザーの行だけを抜き出して、テキストエディタで保存すればいい。

grep '^root\|emanon' /etc/passwd
grep '^root\|emanon' /etc/group

「ユーザー名マッピング -> マップ」では、WindowsユーザーとUNIXユーザーのユーザーの紐付けを行なう。

以上まで設定できたら、次は共有フォルダの設定。

SFUをインストールすると、フォルダのプロパティに「NFS 共有」というタブが表示されるようになる。

ここで共有したいフォルダを選択し、[このフォルダを共有する]をオンにして、共有名とエンコードを設定する。

続いて、[アクセス権(P)]をクリックして、適宜アクセス権を設定する。

NFS共有の設定は、ここまで。

最後に、NFS共有がきちんとできるかどうかテスト。NFS共有フォルダ(d:/share/)には、以下のようなテキストファイルを用意してみた。

さて、クライアント(Linux)からマウントしてみよう。

マウントできました。

けれどもただ一つ、欠点が……。

Windows上のNFSサーバーをマウントする際、クライアントPCと接続しているローカルエリア接続の「Windowsファイアウォール」を無効にしなければならないということ。

この点については、CygwinでNFSサーバーを構築しても同様なのだけれども……。

一応、マイクロソフト サポート オンラインの「UNIX 3. 5 の Windows サービスにアクセスできるようにする」を参考にポートを開放してみたけれども、設定をミスったのかマウントすることができなかった。

LinuxのNFSサーバーのように、ある程度開放するポートを固定できないかなぁ。

まあ、ファイアウォールを越えてのNFSマウントは、昔から一筋縄ではいかないようで……。

2010年08月01日(日) 22時38分  

SFUとCygWinのNFSサーバーの共存

覚え書き。

Windows Services for UNIX(以降SFU)かCygwinのnfs-serverのどちらかがインストール済みである場合、SFUのportmapとCygwinのportmapとが競合してサービスの登録や起動に失敗するので、注意が必要。

SFUが使用しているサービス

  • User Name Mapping
  • Server for NFS
  • Client for NFS

Cygwinが使用しているサービス

  • Cygwin portmap
  • Cygwin nfsd
  • Cygwin mountd

2010年07月31日(土) 23時26分  

バイトニックソート

データのソート(並び替え)にはいろいろなアルゴリズムがあるけれど、バイトニックソートという名前は初めて耳にした。

バイトニックソート – 高速化プログラミング

Bitonic sort

多少制約があるみたいだけど、かなり高速である模様。

2010年07月28日(水) 23時35分  

私の情報処理技術者試験の勉強法(要約版)

以前のエントリで私の情報処理技術者試験の勉強法を書いたのだけれど、読み返してみて「長い」という印象が強かったので、少し要約・整理してみた。

ついでに上記をPDFにしたものを用意してみた。

PDF版

参考になれば、幸いである。

最後に、以前のエントリの繰り返しになってしまうけれど、私が参考にしたテキストの最新版をもう一度紹介。

私の情報処理技術者試験の勉強法では、以下に紹介したテキストに付属している問題演習ソフト(DEKIDAS)が必須のアイテムである。

問題演習ソフト(DEKIDAS)は以下のようなソフトで、クイズゲーム感覚で手軽に何度でも午前問題に挑戦することができる。

4774140872.09.MZZZZZZZ.jpgAmazon.co.jp: 平成22年度[春期][秋期] 基本情報技術者 合格教本

4774140848.09.MZZZZZZZ.jpgAmazon.co.jp: 平成22年度[春期][秋期] 応用情報技術者 合格教本

応用情報技術者を受験する予定の人には、余力があれば以下のネットワークスペシャリスト試験の範囲も一読しておくことをお勧めしたい。

4774141917.09.MZZZZZZZ.jpgAmazon.co.jp: 平成22年度 ネットワークスペシャリスト合格教本

システムはネットワークで接続されている(=ネットワーク抜きでシステムは構築できない)ことを考えれば、勉強しておいて損はない内容です。

午後問題がより理解でき、きっと結果に表れるでしょう。

4774140465.09.MZZZZZZZ.jpgAmazon.co.jp: 平成22年度 データベーススペシャリスト合格教本

2010年07月24日(土) 23時32分  

私の情報処理技術者試験の勉強法

今までのエントリでは詳しく触れていなかった、私の情報処理技術者試験の勉強法について述べたいと思います。

試験勉強は約1ヶ月間(4週間)で、だいたい試験日の約1ヶ月前から始めるようにしています。
月曜日から金曜日だけ約2時間勉強し、週末(土・日)は試験前日を除いて勉強していません。
試験前日の土曜日だけは、約2時間刻みで4回、合計約8時間勉強しました。
約2時間と言っても、実際はそのうちの90分ぐらいしか勉強していません。
2時間以上は、集中力が続かないので……。

また、私が応用情報技術者試験のテキストとして使用していたのは、平成20年度ソフトウェア開発技術者 合格教本(最新版は平成22年度[春期][秋期] 応用情報技術者 合格教本)というテキストです。
テキストの選択基準は、私的に読みやすかったことと、DEKIDASという問題演習ソフトが付属していたことです。
他の情報処理技術者試験を受験したときも、同シリーズのテキストを使用しました。

さて、4週間の勉強の流れは、以下の通りです。

最初の1週間目でテキストを読みます。
全ての章の始めのページに付箋紙(25mm*75mmのやつ)を貼っておき、章末問題を解き終わったらその章の付箋を剥がしていきます。
次の章の付箋を目標に読み進めることで、この分厚いテキストを少しずつ攻略していきます。
ちなみに、テキストの午後問題の部分は読みませんでした。

読んでいる最中は、ペンやマーカーなどを使っての書き込みや傍線・マーキングは一切行ないません。

章末問題も、テキストに大きめの付箋紙(50mm*75mmのやつ)を貼ってそこに答えを書いて解いていきます。
答え合わせをし、もし答えを間違えたら、章の該当部分を読み返します。
章末問題の答え合わせが終わったら、付箋紙を剥がします。

2週間目は、テキストに付属しているDEKIDASという問題演習ソフトを「過去問題モード」でひたすら解いていきます。
全問解答の制限時間をデフォルトの150分から90分に変更して解いていきます。

「過去問題モード」を一通り解いたら、よく出題される問題や傾向が把握できるので、その中からなかなか覚えられない部分(用語や計算式など)を、テキストやネットなどを参考にメモやノートに手で書き出します。
一部スキャニングしてプリントアウトして貼り付けたりもしましたが、基本的に手で書き出していました。
「手で書き出す」というアナログな方法は、記憶に残りやすいと思います。

書き出したメモは、移動時間や待ち時間の合間に繰り返し読みます。

3週間目は、IPAのサイトの情報処理技術者試験から「基本情報技術者試験」や「応用情報技術者試験」の午後の過去問題とその解答を全てダウンロードして、それをひたすら解いていきます。
試験時間より60分短い時間でタイマーを設定します。
時間を60分短い時間で解けるように勉強することで、試験当日に精神的な余裕を作ることが狙いです。
もう一つの理由は、最初に書いた通り、2時間以上は集中力が続かないから……。

4週間目(試験前の最後の週)は、再びDEKIDASという問題演習ソフトに戻ります。
今度は「結果分析」を参照して自分の苦手分野を把握し、「ジャンル別モード」で苦手分野を選択して、ひたすら解いていきます。
2日間(月、火)くらい。

次の2日間は「過去問題モード」を使いますが、ここでも全問解答の制限時間をデフォルトの150分から90分に変更して解きます。
慣れてきたら、もっと短い時間(80分とか)に変更して解いていきます。
これも2日間(水、木)くらいで、ゲーム感覚で繰り返し解いていきます。

残りの1日間(金)と試験前日の土曜日は、再び午後問題をひたすら解いていきます。
この時も、試験時間より60分短く設定します。

試験当日は、テキストは持って行かないで書き出したメモを持って行き、移動時間や休憩時間に少しだけ勉強します。

私も最初の頃はテキストを持って行っていたのだけれど、重くてかさばるし、要点をチェックしている時間なんてたかが知れているので、データベーススペシャリスト試験を最後に持って行かなくなりました。なので、メモだけ。

以上が、私の情報処理技術者試験の試験勉強法になります。

2回目以降(つまり不合格でw、再度受験する時)は、テキストは読み終えていてかつメモは作っているので、試験勉強期間はだいたい2週間程度です。
3週目以降の勉強だけ、特に午後問題を重点的にしていました。

最後に、私が参考にしたテキストの最新版を紹介。

4774140872.09.MZZZZZZZ.jpgAmazon.co.jp: 平成22年度[春期][秋期] 基本情報技術者 合格教本 (情報処理技術者試験)

4774140848.09.MZZZZZZZ.jpgAmazon.co.jp: 平成22年度[春期][秋期] 応用情報技術者 合格教本

4774141917.09.MZZZZZZZ.jpgAmazon.co.jp: 平成22年度 ネットワークスペシャリスト合格教本

ネットワークスペシャリスト試験はまだ受験したことないけれど、受験する予定のない人にも是非一読しておくことをお勧めしておきます。理由は、以前のエントリに書いた通り。

4774140465.09.MZZZZZZZ.jpgAmazon.co.jp: 平成22年度 データベーススペシャリスト合格教本

2010年06月27日(日) 22時08分  

大量のJPGファイルをPDFファイルに変換して結合

スキャニングしてできた大量のJPGファイルを1個のPDFファイルに結合する場合、ImageMagickのconvertを使って

convert *.jpg output.pdf

とすれば簡単に作成できる。
しかしこの方法では、作成時に大量のメモリを消費してしまうのが難点。

私のPC環境で、約180個のJPGファイルを1個のPDFファイルに処理するのに約6分かかった。

処理中、物理メモリを約1GB消費、PF使用量が約1.5GB増加、CPU使用率は20%前後増加といった具合。

処理中、ハードディスクのアクセスランプが点灯しっぱなしになっていたから、使用可能な物理メモリが少なくなれば、もっと時間がかかるかもしれない。

で、あれこれ調べてみたところ、pdftkを使用すれば改善できそうなことがわかった。

pdftkのWindows版は、以下のサイトから入手できる。

pdftk – the pdf toolkit

pdftkを使って大量のJPGファイルをPDFファイルへ変換して、1個のPDFファイルへ結合する手順は、以下の通り。

  1. ImageMagicのconvertを使用して、JPGファイルを1個ずついくつかまとめてPDFファイルへ変換する。
  2. 手順1で作成したPDFファイルを結合する。
  3. 手順1で作成したPDFファイルを削除する。
  4. JPGファイルを削除する。

上記の処理するにあたっては、Perlを使用。ソースコードは、以下の通り。

#!/usr/local/bin/perl
use strict;
use warnings;

my @list = &getFileList;
my @pdf;
my @jpg = @list;
my $tmpPdf = "tmp000";

while (scalar(@jpg) > 0) {
    my $arg = join(" ", splice(@jpg, 0, 20));	#一度に結合するJPGファイルの個数
    &execute("convert $arg $tmpPdf.pdf");
    push(@pdf, "$tmpPdf.pdf");
    $tmpPdf++;
}

my $oldPdf = "";
my $newPdf = "new000";

while (scalar(@pdf) > 0) {
    my $arg = join(" ", splice(@pdf, 0, 20));	#一度に結合するPDFファイルの個数
    &execute("pdftk $oldPdf $arg cat output $newPdf.pdf");	#前回結合したPDFファイル($oldPdf)がある場合は、先頭に追加

    if (length($oldPdf) > 0) {
        unlink($oldPdf);
    }

    $oldPdf = $newPdf . ".pdf";
    $newPdf++;
    unlink split(/\s+/, $arg);
}

&execute("rename $oldPdf output.pdf");
unlink @list;
exit;

sub getFileList {
    open(DIR, "dir *.jpg |");
    my $list = join(" ", sort <DIR>);
    my @list = split(/\s+/, $list);
    close(DIR);

    open(DIR, "dir *.JPG |");
    $list = join(" ", sort <DIR>);
    push(@list, split(/\s+/, $list));
    close(DIR);

    sort @list;
}

sub execute {
    print $_[0], "\n";
    system($_[0]);
}

上記のスクリプトをコマンドプロンプトから実行してみた結果、CPU使用率は増えたものの、物理メモリ消費量とPF使用量についてはほとんど変化は見られず、かなりの改善が見られた。

時間的には、240個のJPGファイルをImageMagickのconvertだけで処理した場合、約3分15秒かかったのが、pdftkを併用した上記のスクリプトで処理した場合だと、約1分15秒となった。

ImageMagickのconvertを使って大量の画像ファイルを1個のPDFファイルにする際に時間がかかっている方は、上記のようにpdftkを併用する方法を一度試してみると良いかもしれない。

2010年06月26日(土) 21時38分  

コマンドプロンプトのコマンドライン文字列の制限

メモ書き。

コマンド プロンプト (Cmd.exe) のコマンド ライン文字列の制限より。

Microsoft Windows XP 以降を実行しているコンピュータでは、コマンド プロンプトで使用できる文字列の最大長は 8191 文字です。Microsoft Windows 2000 または Windows NT 4.0 を実行しているコンピュータでは、コマンド プロンプトで使用できる文字列の最大長は 2047 文字です。

文字数=バイト数。

2010年06月26日(土) 21時08分  

応用情報技術者試験結果

午前70.00点、午後66.00点で合格!

試験後に午後問題を自己採点(配点は勝手に予想)した結果、微妙な点数だったので、期待していなかったのだけれど、やっと応用情報に合格&資格取得できました。

前回(平成21年度 秋期)の結果が午前71.25点、 午後58.00点で不合格だったので、余計に嬉しい。やた~!

ちなみに、午後問題の選択分野は以下の通り。

  • 問2.プログラミング
  • 問4.システムアーキテクチャ
  • 問5.ネットワーク
  • 問6.データベース
  • 問8.情報システム開発
  • 問9.情報セキュリティ

次はネットワークスペシャリストを勉強しようか、LPIC(Linux技術者認定資格試験)を勉強しようか……。

2010年06月25日(金) 21時38分  

Adobe AIR 2正式版リリース

表題の通り、Adobe AIR 2正式版がリリースされた模様。

http://cuaoar.jp/2010/06/flash-player-1015364-1.html

AIR 2の機能については、以下のサイトが詳しい。

http://www.adobe.com/jp/products/air/features/

できるようになったことがいろいろ増えたみたいで、楽しみですな。

2010年06月11日(金) 23時53分  

勝間和代氏とひろゆき氏の対談

デキビジという番組で放送された勝間和代氏とひろゆき氏の対談が面白いと話題になっているようで……。

Togetter – まとめ「勝間和代ブログ「2chはIPの開示に積極的であるというひろゆきさんの注目発言について」を高木浩光氏が検証したまとめ」

デキビジ 勝間和代 VS ひろゆき を文字におこしてみる – さかなの目

一生一緒にギガフレア USTREAM配信版 勝間和代司会「デキビジ」 ゲスト 西村博之

上記リンク先の文字起こしを読んで思ったのは、議論の内容以前に、ひろゆき氏に対する勝間和代氏の不適切な議論の展開や発言が目立つこと。

「だめだこれ」という発言は、ひろゆきじゃなくても誰でも不愉快になるだろう。

「だめだこれ」の「これ」って、少なくとも「ひと」を指す言葉ではないはず。だからと言って、「このひと」と言い直しても失礼なことには変わりないのだけれど……。

勝間和代氏の書籍は「ビジネス頭を創る7つのフレームワーク力」を最後に、買っていないのだけれど、その頃は「きっと知的生産性に関連する知識が豊富な、仕事ができる人なんだろうなあ」という印象を持っていた。

けれど、書籍の表紙に本人の写真が使われ始めた「勝間和代の日本を変えよう」あたりから書籍に手を伸ばしても(内容的なことを含めて)購入するまでには至らなくなってしまった。

元々こういう人だったのか、メディアに取り上げられるようになったことで変わってしまったのか知らないけれど、今回の一件で幻滅してしまった。

以前の勝間和代氏と香山リカ氏の議論も、なんだか結局は平行線だったようですな。

以下、余談。

「だめだこれ」から思い出したエピソードをば。

二十代の頃、街頭できれいなポストカード(絵葉書)を配って、それを受け取ったら展示場(店内)に案内されて、絵の感想を聞かれて答えているうちに商談に持ち込もうとし始めたので、購入の意志も余裕も全くないことを表明したら、いきなりキレ始めた二十代半ばのお姉さんのことを思い出してしまったw

上京して間もない二十代の頃の痛い思い出でしたw。私は渋谷の展示場でしたが。

今は秋葉原にも展示場がありますな。系列店かどうかは不明。エウリアンという俗称がついてるのか。

2010年05月05日(水) 23時43分