ホーム » 2013 » 11月

月別アーカイブ: 11月 2013

2013年11月
« 10月   12月 »
 12
3456789
10111213141516
17181920212223
24252627282930

最近の投稿(電子情報)

アーカイブ

カテゴリー

CGIの基本サンプル

専攻科実験でのRSSを用いた、情報活用の実験で、 パラメータの入力などの希望があったので、 最も簡単なCGIのサンプルを示す。

CGIサンプル

最初に、CGIを使えるようにするために、.htaccess ファイルにて、 CGI を使えるような設定を加える。

(( .htaccess ))
Options ExecCGI
AddType application/x-httpd-cgi .cgi

CGI モジュールを使う、極力短いサンプルコード。 セキュリティについては、考慮していないので十分に注意すること。

#!/usr/bin/perl
# なお、このサンプルプログラムは、
# セキュリティについては考慮していない。
use CGI qw/:standard/ ;
use Jcode ;
my $cgi = new CGI ;
# cgiのパラメータをもらう
my $DATA = Jcode->new( param('DATA') )->utf8 ;
# データ前後の空白を取る
$DATA =~ s/\s+$// ;
$DATA =~ s/^\s+// ;
if ( "$DATA" eq "" ) {
# パラメータが無い時は、ファイルから読み出す
if ( -r "data.txt" ) {
open( FH , "data.txt" )
or die( "Can't access for read" ) ;
$DATA = <FH> ;
close( FH ) ;
}
} else {
# パラメータがあったら、ファイルに書き込む
open( FH , ">data.txt" )
or die( "Can't access for write" ) ;
print FH "$DATA\n" ;
close( FH ) ;
}
# CGIの最初の決まり文句を出力
print header(-charset=>'UTF-8') ;
print start_html(-title=>'Title',
-charset=>'UTF-8',
-encoding=>'UTF-8',
-lang=>'UTF-8') ;
# 画面に出力するHTMLの内容
print "<form method='GET' action='test.cgi'>\n" ;
print "<input type='text' name='DATA' value='$DATA' />" ;
print "</form>\n" ;
print "入力値は<pre>$DATA</pre>\n" ;
# CGIの終わりの決まり文句を出力
print end_html ;

2013年11月24日(第348回)

学生さんがテスト期間中につき、教員による収録でお送りしました。

  • まるよし Train Pops ~ 国語と遊ぼう! 第32回 「主語」

ゲスト:歴史科 手嶋先生
担当:長水先生、丸山先生、金田先生、川上先生、西

PICAXEだってさ

PICの応用された新製品。 プログラム書き込みも、ステレオプラグを使ったシリアル通信でできて、 書き込み後は、単体で動かすことができるので、実際に動かすときは、 外付け部品ほどんどナシ。

プログラムも、GUI な環境で動く BASIC 言語っぽいもので書ける。

書き込みケーブル(1500円) (USB-ステレオプラグ/内部にUSB-Serialが入っているんだろうな)と、 ステレオプラグ-ライタの変換(320円)さえあれば、 PICAXE-08M2(8ピン)なら、1個240円とな。


売店のレトルトカレー

いや、アリなのは、わかるんですけどね… 白ご飯だけ&売店レトルトカレー、教室に匂い広がりそう。

1311201239_640x640.JPG

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 ) ;

台湾への工場見学旅行のお土産もらいましたぁ。

1311150920_320x320.JPG

今週1週間、3EIの学生さんは工場見学旅行で、今年は前年に引き続き台湾となりました。 先程、先に無事にもどられた西先生より、おみやげを頂きました。 特に大きなトラブルもなく、見学先の大学との学生間交流もできたようでした。

まだ、3EIの学生さんは自主見学旅行の途中でしょうが、無事に帰ってきてくださいませ。

『今日は1限目から3EIの授業、先週のネタからすると××の説明するぞ!!』と 教室に向かったけど、誰もいませんでした…
# 気づくの遅っ!!