当たってしまいますた
http://cup.rssfeed.cc/result.phtml
まさか当たるとは。
ありがとうございます。
大切に使わせていただきます。
Readonlyモジュールを遊んでみる
Perl Best Practicesを読んでて、
Readonlyモジュールなるものを知った。
http://search.cpan.org/~roode/Readonly-1.03/Readonly.pm
簡単に言えばuse constantの便利版かな。
Perl Best Practicesでは
use constantよりも
use Readonlyすることを推奨してます。
以下、理由&簡単なソース
Readonlyモジュール使用時
#! /usr/bin/perl
use strict;
use warnings;
use Readonly;
Readonly my $name => q[nekokak];
Readonly my $age => q[27];
print <<"__EOD__";
Hi!
My name is $name.
My age is $age.
Bye.
__EOD__
こんな感じで書けます。
結果
Hi!
My name is nekokak.
My age is 27.
Bye.
こんなのが出力されます。
use constantの場合
#! /usr/bin/perl
use strict;
use warnings;
use constant name => q[nekokak];
use constant age => q[27];
print <<"__EOD__";
Hi!
My name is name.
My age is age.
Bye.
__EOD__
こう書くと、
Hi!
My name is name.
My age is age.
Bye.
こんな出力になります。
なので、以下のように書く必要があります。
#! /usr/bin/perl
use strict;
use warnings;
use constant name => q[nekokak];
use constant age => q[27];
print 'Hi',"\n\n";
print 'My name is ',name,".\n";
print 'My age is ',age,".\n\n";
print 'Bye.';
結果
Hi
My name is nekokak.
My age is 27.
Bye.
書き方にもよりますが、なんて醜いのでしょうかねぇ。
どうです?Readonlyの方がよいですよね?
ちなみに、
Readonly my $name => q[nekokak];
としているものに、値を入れようとすると、、、
Modification of a read-only value attempted at readonly.pl line 9
こんな感じで実行時にエラーになります。
perl -c は通りますね。
まあ、プラグマではないのでしかたないのですが。
Seasar2導入
業務でJava開発をやる(?)ので、フレームワークを探してみた。
やっぱり日本人ですからSeasarですよね!!
で、ちょっくら導入ガイドを。
ちなみに、JavaとEclipseは入っているものとします。
まずは、なにはともあれ、Seasar2のダウンロードから。
http://sourceforge.jp/projects/seasar
ここから落とします。
で、ダウンロードしたものをZipを解凍します。
Eclipseを起動させて、
[ファイル(F)]→[インポート(I)]→既存プロジェクトをワークスペースへ
を選択して、さっき解凍したもののなかからseasarディレクトリを選択します。
で、CLASSPATHを追加しまふ。
以下追加したCLASSPATH
D:\S2.2.10\seasar2\lib\javassist.jar;
D:\S2.2.10\seasar2\lib\commons-logging.jar;
D:\S2.2.10\seasar2\lib\log4j-1.2.8.jar;
D:\S2.2.10\seasar2\lib\ognl-2.6.5.jar;
D:\S2.2.10\seasar2\lib\aopalliance.jar;
D:\S2.2.10\seasar2\lib\servlet-api.jar;
D:\S2.2.10\seasar2\lib\s2-framework-2.x.x.jar;
D:\S2.2.10\seasar2\src\log4j.properties
こんな感じで。
実際これだけ。
で、サンプルソースのお披露目です。
チョー簡単HelloWorldで。
HelloWordlS2.java
package com.hoge.s2.helloWorld;
import org.seasar.framework.container.S2Container;
import org.seasar.framework.container.factory.S2ContainerFactory;
public class HelloWordlS2 {
private static final String PATH =
"com/hoge/helloWorld/Speaker.dicon";
public static void main(String[] args) {
S2Container container = S2ContainerFactory.create(PATH);
Speaker speaker = (Speaker) container.getComponent("Speaker");
System.out.println(speaker.getMessage());
}
}
Speaker.java
package com.hoge.s2.helloWorld;
public interface Speaker {
public String getMessage();
public void setMessage(String string);
}
SpeakerImpl.java
package com.hoge.s2.helloWorld;
public class SpeakerImpl implements Speaker {
private String message = "Hello World !!";
public String getMessage() {
return message;
}
public void setMessage(String string) {
message = string;
}
}
Speaker.dicon
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
"http://www.seasar.org/dtd/components.dtd">
<components>
<component name="Speaker" class="com.hoge.s2.helloWorld.SpeakerImpl">
</component>
</components>
こんなのです、
で、Eclipse上で実行すると見事、Hello World !!が表示されました。
まあ、DBとかつかってないんでなんじゃこれはと思われるかもしれませんが、
フレームワークつかいませう。
以上、個人的覚え書き。