ホーム » 2013 (ページ 2)
年別アーカイブ: 2013
cifsでマウントしたディレクトリをsamba共有かけたら…

バックアップ用のNASを、Debian/Linuxなサーバに接続して使っているが、 その一部フォルダを、サーバ利用者にバックアップ用に使ってもらおうと、 さらに samba で共有をかけた。 しかし、そのディレクトリ内部は、すべてファイル扱いされるトラブルが発生。
状況をメモ
NASは、下記のような設定で、automount されるようにしてある。 この /nfs/nas は、個別にアクセスができることは確認済み。
(( /etc/auto.nfs )) nas -fstype=cifs,rw,credentials=パスワードファイル, uid=xxxx,gid=xxxx,file_mode=0664,dir_mode=0775 ://XX.XX.XX.XX/path
このディレクトリを、他の利用者にも活用してもらうために、 samba のファイル共有で公開する。
# 直接 NAS を利用者に使わせるのは、NASの設定が面倒なのでパス
(( /etc/samba/smb.conf )) [nas] path = /nfs/nas write list = @group read list = @group create mask = 0775 directory mash 0775 force user = nobody browseable = yes
しかし、この公開されたファイル共有を Mac OS X で接続すると、 /nfs/nas の内部のファイルは見えるんだけど、ディレクトリが、 ファイル扱いを受けてしまい、ディレクトリ内部にアクセスできない…
(( 確認 )) iMac$ ls -al /Volumes/nas -rwxrwxr-x 0 xxxxxx xxxx ..... dir1 ← ディレクトリなのに... -rwxrwxr-x 0 xxxxxx xxxx ..... file1
ひとまず動いたのは…
色々設定を試したけど、どうも サーバ側の samba がおかしい様子。 ひとまず、以下の設定をはずしたら、ディレクトリとして 扱われるようにはなった。
(( /etc/samba/smb.conf )) - unix extensions = no + # unix extensions = no ← コメントアウト
演習室のノートパソコンのDHCP設定

学内のネットワークでは、学生さんのPCを学内有線LANに 勝手に接続させないために、ネットワーク接続設定を自動化 するための DHCP サーバを動かさない方針となっている。
しかし、演習室のノートパソコンは、気軽に移動先の実験室 で使ったりという運用を行うことから、ネットワーク接続に 設定を変更したりする機会も多い。
ただ、利用後にネットワークの設定を正しく元に戻して あれば問題はないが、慌てて設定を行うと単純ミスで 間違った設定になってしまうことも多かった。
そこで、演習室内のネットワークにて、MACアドレスを 利用して、登録PCにだけ対応IPアドレスを割り振るDHCPを 稼働させた。
(( /etc/dhcp/dhcpd.conf )) : host ei-n01 { hardware ethernet XX:XX:XX:XX:XX:XX ; fixed-address 10.120.11.YYY ; }
(専攻科実験)WebService::Simple
RSSフィード活用のプログラム作成のテーマだけれど、 もう少し応用も体験してほしいので、Google Search と関係づけてもらいたい。 でも、調べてみると Google Search API は、ajax からの活用を中心に するようになったので、ちょいと変換が必要で、少し面倒…
ひとまずは、WebService::Simple が簡単っぽい。 でも、Debian/testing のサーバでも、perl-module の命名習慣から推測し、 libwebservice-simple-perl といったパッケージを探すけど、見つからない。 しかたがないので、CPAN からインストール
# perl -MCPAN -e shell cpan[*]> install WebService::Simple
同じモジュール、自室サーバと学科仮想サーバに入れたけど、 仮想サーバは底力あるから速っ!!
WebService::Simpleを必要最小限動かす
まずは、Google などの検索エンジンで、AND や ORを使った、 細かい条件付き検索のテクニックを以下URLに示す。
上記のような検索キーワードでの検索を行うのであれば、 以下に示すように WebService::Simple を呼び出せば良い。
#!/usr/bin/perl use WebService::Simple ; use Data::Dumper ; use Jcode ; my $google = WebService::Simple->new( base_url => "http://ajax.googleapis.com/ajax/services/search/web", response_parser => "JSON", params => { v => "1.0", rsz=> "large" } ); my $response = $google->get( { q => Jcode->new( "ねこ site:tsaitoh.net" )->utf8 , start => 0 } ); my $xml = $response->parse_response ; # print Dumper $xml->{responseData}->{results}->[0] ; foreach my $item ( @{$xml->{responseData}->{results}} ) { print $item->{title}."\n" ; print $item->{url}."\n" ; }
2013年11月17日(第347回)
まるとれ30回到達記念!! ~中村先生1時間ジャック~
中村先生が高専ライブの1時間を丸ごとジャックして丹南FMスタジオから生放送!
- 工場見学旅行について
- まるよし Train Pops ~ 国語と遊ぼう!
- 高専に入学する理由
ゲスト:福井高専OB 油谷様
担当:前田勝(4EI)、中村(教員)
(専攻科実験)Perlでのメール送信
専攻科の実験で、RSS による情報フィードの活用のテーマのプログラム作成中。 実験学生が、作ってみたいプログラムの案にメールの事例が多かったので、 メールの送信方法について記載しておく。
もっとも簡単なメール送信例
メールを送るためには、メール形式について理解が必要となるので、以下の資料参照。
特に、日本語などの様々な言語でメールを送る場合には、 メールヘッダの"Content-Type:… charset=…"によって、送信する文字コードなどを 指定すれば良い。ただし、日本の古いガラケーでは、JIS コード以外だと文字化けする 場合も多いため、特に問題がないのなら日本語でメールを送るには、 JISコード(ISO-2022-JP)にすべきである。
以下に、最も単純な日本語メールを送るサンプルプログラムを示す。
#!/usr/bin/perl use Jcode ; use Email::MIME ; use Email::MIME::Creator ; # メールの形式に応じたデータを作る my $mail = Email::MIME->create( # メールヘッダの必須パラメータ header => [ # (注) headerは配列へのリファレンス # "foo@example.co.jp"と書くと # @exampleの部分が配列とみなされるので''を使う。 From => 'foo@example.co.jp' , To => 'bar@example.co.jp' , # ヘッダでの漢字は、MIME形式でエンコードしないとダメ。 Subject => Jcode->new( "実験" )->mime_encode() , ] , # その他のパラメータ attributes => { # (注) attributesはハッシュへのリファレンス content_type => 'text/html' , charset => 'ISO-2022-JP' , encoding => '7bit' , } , # メールの本文 body => Jcode->new( "こんにちは" )->jis ) ; # sendmail を使ってメールを送る。 # "-t" オプションをつけるとヘッダ部を追加できる # open( FH , "|..." ) で出力をプログラムにパイプで渡す。 open( FH , "| /usr/sbin/sendmail -t" ) or die( "Can't open sendmail" ) ; print FH $mail->as_string ; close( FH ) ;
台湾への工場見学旅行のお土産もらいましたぁ。
今週1週間、3EIの学生さんは工場見学旅行で、今年は前年に引き続き台湾となりました。 先程、先に無事にもどられた西先生より、おみやげを頂きました。 特に大きなトラブルもなく、見学先の大学との学生間交流もできたようでした。
まだ、3EIの学生さんは自主見学旅行の途中でしょうが、無事に帰ってきてくださいませ。
『今日は1限目から3EIの授業、先週のネタからすると××の説明するぞ!!』と 教室に向かったけど、誰もいませんでした…
# 気づくの遅っ!!
2013年11月10日(第346回)
- まるよし Train Pops ~ 国語と遊ぼう! 第30便 「ちりとてちん」
- 遠足・工場見学旅行について
- 高専デザインコンペティションin米子について
担当:前田勝(4EI)、山野(2C)、西(教員)
MyJVNによる更新チェック
最近のウィルスなどの侵入手口では、 古い Java を悪用した手口が多いらしい。
このことから、よく利用されているソフトの更新チェックが 重要となる。しかし、すべてのソフトの更新確認は、大変である。 でも、日本のセキュリティセンターの JPCERT などが監修し、 ブラウザで古いソフトをチェックしてくれるサービス MyJVN がある。
さっそく自宅マシンで実行したが、Java は自動更新がかかるので、 大丈夫であったが、ブラウザの FireFox などで警告がでてきた。 メインブラウザが Chrome だけど、ひとまず関連ソフトの更新を行った。
(専攻科実験)RSSを用いた情報活用
インターネットでは、様々な情報が提供されているが、 これらの情報を効率よく見つけ出すには、労力を要する。 このため、インターネット上の情報サイトでは、 RSS(Rich Site Summary) と呼ばれる XML をベースとした、サイトの概要情報を提供している。 これらの RSS の情報は、 フィードリーダ というソフトを使うことで、 そのタイトル・概要をシンプルに表示してくれることから、 読者が興味のある記事を見つけやすくなる。
今回は、これらの RSS 形式のデータを活用するために、 自分の作成した情報の RSS データを作成したり、 一般に公開されている RSS フィードを読み込み解析し、 2次利用できるようにしたり、自分たちの使うインターネットと連動できる プログラム開発を、文字列処理の得意なプログラム言語である、Perl や PHP を用いて 作成することを目指す。
RSSと解析ライブラリ
RSSには、その発展の歴史の中から、少しづつ書式を変えながら発展してきた。 最初は、RDF と呼ばれる形式であったが、RSS 2.0 に発展する中で、 XML 形式による書式となった。 この他にも、RSS の問題点を改良した Atom 形式なども提案されている。
RSSのデータ形式は様々で、全ての形式に対応したプログラム作成は本来難しい。 しかし Perl や PHP では、便利なパーサ・ライブラリがあるので、RSSの情報の中から、 希望する情報だけを簡単に抽出することが可能となっている。
Perl で RSS 形式のデータを扱うために、今回は "XML::FeedPP"モジュールを使用する。 このライブラリは、RSS/RDF/Atom など様々な フィード形式に対応している。 XML::FeedPP の解説サイトには、データを入力・出力するなどの手続きの例が、 いくつか記載されているので、これらのサンプルプログラムを元にプログラムを作成せよ。
#!/usr/bin/perl # 使用するモジュールを選ぶ use XML::TreePP ; # use 文は C言語の #include みたいなもの。 use XML::FeedPP ; # 日本語の文字コード変換モジュール use Jcode ; # 読み込むフィード my $source = 'http://use.perl.org/index.rss'; # my は局所変数宣言 # RSSデータを解析し読み込ませる my $feed = XML::FeedPP->new( $source ); # 記事全体の情報を表示 my $title = $feed->title() ; # Jcode->new( "文字列" ) に対する変換コード(以下が利用可) # ->utf8 , ->unicode , ->jis , ->sjis , ->euc print "Title: ", Jcode->new( $title )->utf8 , "\n"; print "Date: ", $feed->pubDate(), "\n"; # 個別の記事の情報を表示 foreach my $item ( $feed->get_item() ) { print "URL: ", $item->link(), "\n"; my $title = $item->title() ; print "Title: ", Jcode->new( $title )->utf8, "\n"; } # foreach文は、配列要素すべてに対する処理ループを実行 # foreach $要素 ( @配列 ) { ... }
実験方法
プログラムの実験にあたり、 ファイルの編集にはファイル共有機能を使用し、 プログラムの実行にはターミナルソフト(TeraTerm)を使用する。
最初に、実験端末に TeraTerm がインストールしてなければ、 このページ先より入手し、インストールを行うこと。
サーバに接続し、プログラムを実行するには、TeraTermPro.exe を実行し、 Host:「tsaitoh.ei.fukui-nct.ac.jp /KR=UTF-8 /KT=UTF-8」, Service:SSH で接続し、 別途指定された ユーザ名 , パスワード を利用し、Login せよ。
ファイルを編集する際には、Windows 端末のファイル共有にて、 「¥¥tsaitoh.ei.fukui-nct.ac.jp¥ユーザ名」にてアクセスし、 login 画面が出たら、ユーザ名とパスワードを入力せよ。 Windows のエディタで、ファイルを編集し保存する際には、 「文字コード: UTF-8 , 行末コード: nl」を指定すること。
(( 前述の feed.pl を実行する場合 )) $ perl feed.pl
最初の課題
上記のプログラムを動作させ、得られる結果などを確認せよ。 RSSフィードの http://…./…xml などは、Firefox などのブラウザであれば、 わかりやすいように表示をしてくれる。さらに、"ページソースを表示"などを実行すれば、 元々の XML 形式のデータを見ることもできる。
まずは、プログラムの内容などを確認したうえで、 インターネット上に掲載されている RSS フィードにどのようなものがあるか調べ、 これらの情報をどのように活用したら便利かアイデアを検討せよ。