ホーム » 2005 » 3月 » 17

日別アーカイブ: 2005年3月17日

2005年3月
« 2月   4月 »
 12345
6789101112
13141516171819
20212223242526
2728293031  

最近の投稿(電子情報)

アーカイブ

カテゴリー

進路相談室のWindowsファイル共有を mount する

この H17 年度では、進路相談室に寄せられる求人票や学生の帰校届けは、 相談室の Windows サーバに蓄積されている。 しかし、検索などのサービスなどが完備されている訳ではないので、 ちょいと unix サーバ側で検索システムを作りたい。

Windowsのファイル共有を smbmount する。

そこで、Windows のファイル共有を unix 側で利用するために、 smbmount により接続することとした。 相談室サーバは、10.110.33.161 で、共有名が『2005年度』。
# なんで、共有名を漢字にするんだよー。

# smbmount `echo //10.110.33.161/2005年度 | nkf -s` /mnt
-o ro,guest,codepage=cp932,iocharset=euc-jp

しかし、mount 作業などが面倒なので、autofs にて mount できるようにする。 共有名部分は Shift-JIS の必要がある FN samba-3.0系では、共有名は euc-jp でも OK となったみたい。 /FN ので、 automount 用のファイルは他の automount とは別管理したいので、以下のように設定する。

≪ /etc/auto.master ≫
/career /etc/auto.career
≪ /etc/auto.career ただし Shift-JIS にて保存 ≫
2005 -fstype=smb,ro,guest,codepage=cp932,iocharset=euc-jp ://10.110.33.161/2005年度
≪ autofs 再起動 ≫
# /etc/init.d/autofs restart   # autofs再起動
# ls /career/2005              # 閲覧の確認
帰校届/  求人状況17.xls* 求人票/ 大学説明会/

Web で調べたネタだと、samba 2.0系の記事が多く、codepage=932,iocharset=euc にて 説明されていたため、最初戸惑う。

Excel のファイルを扱う(Spreadsheet::ParseExcel)

Excel のファイルを扱う(Spreadsheet::ParseExcel)

就職情報は最終的に Excel にて保存されているので、Excel のファイルを自由に読むために 以下の設定を行う。

≪ 関連の perl モジュールのインストール ≫
# apt-get install libspreadsheet-parseexcel-perl
libunicode-map8-perl
libi18n-charset-perl
# perl -MCPAN -e shell
cpan> install Unicode::Map
cpan> exit

しかし、サンプルコードを動かすと が無い というエラーメッセージがでる。よって、以下の書き換えを行う。

≪ /usr/share/perl5/Spreadsheet/ParseExcel/FmtJapan2.pm を編集 ≫
≪   CP932Excel → CP932 に書き換え ≫
#------------------------------------------------------------------------------
# new (for Spreadsheet::ParseExcel::FmtJapan2)
#------------------------------------------------------------------------------
sub new($%) {
my($sPkg, %hKey) = @_;
my $oMap = Unicode::Map->new('CP932');
die "NO MAP FILE CP932!!"
unless(-r Unicode::Map->mapping("CP932"));
my $oThis={
Code => $hKey{Code},
_UniMap => $oMap,
};
bless $oThis;
$oThis->SUPER::new(%hKey);
return $oThis;
}

ちなみに、参考ページにて記載されているサンプルコードを試すが、 html 化する時に、一部プログラムが壊れていたみたい。 動作試験のコードは下記のとおり。

#!/usr/bin/perl
use strict;
use lib "/usr/local/lib/perl" ;
use Spreadsheet::ParseExcel;
use Spreadsheet::ParseExcel::FmtJapan2;
my $excel = new Spreadsheet::ParseExcel;
my $formatJ = Spreadsheet::ParseExcel::FmtJapan2->new(Code => 'euc');
my $book = $excel->Parse('求人情報17.xls', $formatJ);
my $worksheet = $book->{Worksheet}[1];   # Book #0
for( my $row = $worksheet->{MinRow};
defined $worksheet->{MaxRow} && $row <=  $worksheet->{MaxRow}; $row++) {
for( my $col = $worksheet->{MinCol};
defined $worksheet->{MaxCol} && $col <=  $worksheet->{MaxCol}; $col++) {
print $worksheet->{Cells}[$row][$col]->{_Value}.",";
}
print "\n";
}

しかし、動かしてみると、一部のデータが読めていない。 どうも、Office 2000 形式が原因みたい。ファイルを別コピーして Excel 95 形式に直すと 全ての情報を読めることが確認できた。 ということで、就職相談室の方には、 95形式で保存してね!』 と伝えよう。

試作した就職情報のページ

ちなみに、 試作した就職情報のページはこちらを貼ってあります。 試作段階で、検索はいいかげん。使いやすくなるまで待ってね。