平均的日本人とは?
Posted in Javascript, Perl on 10/25/2010 11:01 pm by admin勉強がてら、アンケート的なサイトを作ってみました。
趣旨としては、簡単な質問に答えてもらうことで回答データ蓄積していって、そこから平均的な日本人の傾向を導き出そう!という大それたものですが、中身はまだほとんどできていません。
一応、ユーザ登録をして、質問に答えたり、質問を作ったりということはできます。それと、質問の集計結果をグラフで見ることもできます。
ちょいとのぞいてみてください。
WordPress3.0へ移行してみた
Posted in 雑記 on 06/18/2010 10:26 pm by adminWordPress3.0が正式にリリースされたので、もっともバージョンが古かったこのブログにまず導入してみました。
※以下は私の環境で試した内容です。全ての環境で同様に動作するとは限りません。あくまで参考として見てください。
特に何も考えず、ファイル群のバックアップだけ取って、あとはダウンロードしてきたソースで上書き。
管理画面にアクセスすると、データベースをアップデートを求められますが、指示に従って進めればすぐに完了。
英語の表記さえ気にしなければ、今のところなんら問題なく動作しています。
管理画面はちょっとスピードアップしたような気がします。
新しい機能とかも、ちょっとずつ触れてみたいですね。
とりあえずはご報告までに。
管理イメージエディターβ
Posted in Flex on 05/08/2010 12:06 am by admin簡易画像エディターに、簡単な画像の編集と、ダウンロードの機能を実装しました。一応動作可能なレベルになったので、β版に格上げします。
今回追加した機能は
*油彩風フィルタ
*ぼかしフィルタ
*彩度調整
*明度調整
です。
ダウンロードしたファイルにも変更が反映されます。
今後は
*トリミング
*拡大・縮小
*文字入力
*アートワーク挿入
などを実装したいと思います。
簡易イメージエディター
Posted in Flex on 04/19/2010 09:16 pm by admin管理人が開発に携わっている、「ふりーだむ写真館」というサイトがあります。
フリー画像・写真素材を配布するサイトですが、せっかく写真素材を扱っているので、ただダウンロードしてもらうだけではなく、ウェブ上で簡単な編集がおこなえるようにと考え、簡易画像エディターを製作しています。
まだまともな機能もなく、公開できるような状態ではありませんが、とりあえず公開です。
随時、機能の実装をおこなっていきます。
ご意見等をこちらのコメントまでお寄せいただけるとうれしいです。
[AIR] シンプルな電卓
Posted in AIR on 04/01/2010 12:26 pm by adminAIRでシンプルな電卓を作ってみました。
フリーのツールは色々ありますが、せっかくなので勉強をかねてAIRで自作してみようと思い、作ったものです。
単純な四則計算に対応。処理は逆ポーランド記法を使用しています。
最新版
変更履歴
- v1.1 (2010/04/12) デザインを修正および計算結果の誤差調整。
過去のバージョン
Simple Cal v1.0 (2010/04/01) 初期リリース版
Perl自作パッケージ(2) Base::Watch
Posted in Perl, 自作Perlパッケージ on 03/12/2010 09:31 pm by adminBase::Objectクラスにプロパティを監視する機能を付加するために実装したクラスです。
Perlのtie変数の機能を利用して、変数を監視します。
package Base::Watch;
sub TIESCALAR {
my $class = shift;
my $setter = shift;
my $getter = shift;
my $obj = shift;
my $self = {
object => $obj,
setter => $setter,
getter => $getter,
value => $value
};
return bless $self,$class;
}
sub FETCH {
my $self = shift;
my $sub = $self->{getter};
return $self->{value} unless $self->{object}->can($sub);
return $self->{object}->$sub($self->{value});
}
sub STORE {
my $self = shift;
my $value = shift;
my $sub = $self->{setter};
if($self->{object}->can($sub)){
$value = $self->{object}->$sub($value);
}
return $self->{value} = $value;
}
1;
Perl自作パッケージ(1) Base::Object
Posted in Perl, 自作Perlパッケージ on 03/11/2010 10:43 am by admin自作のクラスに基底の動作を与えるために作成したパッケージです。
このクラスを継承して新たなクラスを作って利用します。
Perlはソースの書き方の自由度が高いため、とかく統一感の無いコーディングになりがちですが、このクラスのサブクラスを作って利用することで、ある程度の統一が取れました。
なお、コンストラクタは慣例に習ってnewです。
何をやっているか簡単に説明しますと、
1.初期化処理の管理。
2.プロパティの管理。
3.その他、こまごまとしたユーティリティなど。
くらいです。
初期化のために、initメソッドが呼ばれます。サブクラスでオーバーライドすることで、初期化処理のカスタマイズが可能。
その際は基底クラスの初期化処理を呼ぶことで初期化が保証されます。
例)
$self->SUPER::init( @_ );
プロパティを追加するにはaddPropertyメソッドを呼び出します。
例)
$self->addProperty( "width", 100);
$self->addProperty("height", 150);
プロパティの追加処理は、よほどの理由が無い限り、初期化時に呼ぶのが妥当です。
作成されたプロパティには以下のようにアクセスできます。
(実は、当初はこの表記法が使いたくてこのクラスを作りました)
例)
print $self->width; $self->height = 200;
プロパティは、メソッドとして管理されます。
また、この表記でプロパティの代入も可能です。
これは、関数のlvalue属性(関数から左辺値を返す)を利用して実現しています。
Base::Watchクラスに依存していますが、これはsetterやgetterを実現するためのものです。
このクラスについては別途記事を書きます。
文字列化の際にtoStringメソッドが呼び出されるようにオーバーロードをおこなっています。これは他言語のマネですが、自動でおこなわれるので使いこなすと便利だったりします。たとえば、HTMLを出力するHTMLElementというクラスがあって、そのオブジェクトが$htmlだとします。
toStringメソッドでHTMLを出力するようにしてあれば
print $html;
で事足ります。
この辺りはいかにもPerlっぽい(よく言えば簡潔、悪く言えばものぐさ)気がします。
他にも若干の機能を有していますが、ここで特記するほどのものではありません。
サブクラスで利用されるときに紹介できればと思います。サブクラスを紹介する機会があれば、ですが。
ソースここから
package Base::Object;
use Base::Watch;
use overload
'""' => toString;
sub new {
my $class = shift;
$class = ref $class || $class;
my $self = bless {
properties => {},
propertyNames => []
},
$class;
$self->init(@_);
return $self;
}
sub init {
my $self = shift;
$self->{type} = 'Object';
$self->addProperty("parentObject");
$self->addProperty("version", "1.0");
}
sub addProperty {
my $self = shift;
my $name = shift || return;
my $meth = ref($self) . "::" . $name;
my $prop = '$_[0]->{properties}{' . $name . '}';
$self->{properties}{$name} = shift;
push @{$self->{propertyNames} }, $name;
eval "sub $meth : lvalue { $prop }";
}
sub addWatchedProperty {
my $self = shift;
my $name = shift || return;
$self->addProperty($name, @_);
$self->watchProperty($name);
}
sub toString {
my $self = shift;
return ref $self;
}
sub getPropertyNames { $_[0]->getPropertiesName }
sub getPropertiesName {
my $self = shift;
return @{$self->{propertyNames}};
}
sub getMethodNames {
my $self = shift;
my $isa = shift;
my $pack = ref $self || $self;
my @tar;
my $m = {};
if( $isa == 1 ) {
push @tar, $pack;
push @tar, @{"$pack\::ISA"};
}
elsif( $isa == 2 ) {
push @tar, @{"$pack\::ISA"};
}
else {
push @tar, $pack;
}
for my $p (@tar) {
$p .= "::";
for my $key ( keys %$p ){
$m->{$key} = 1 if eval { '$p->can($key)' }
&& $key !~ /::$|^(import|isa|ISA|BEGIN|IN|AUTOLOAD|VERSION|DESTROY|OVERLOAD)$|^\(/;
}
}
return sort keys %$m;
}
sub watch {
my $self = shift;
my $name = shift;
my $setter = shift;
my $getter = shift;
my $obj = shift || $self;
tie $obj->{$name},Base::Watch,$setter,$getter,$self;
}
sub watchProperty {
my $self = shift;
my $prop = shift || return;
my $setter = shift || "set" . ucfirst $prop;
my $getter = shift || "get" . ucfirst $prop;
$self->watch($prop,$setter,$getter,$self->{properties});
}
sub isCollection {}
sub getType {
my $self = shift;
return $self->{type};
}
sub clone {
my $self = shift;
my $ret = $self->new();
for my $prop ( $ret->getPropertyNames ){
$ret->$prop = $self->$prop;
}
return $ret;
}
1;
気分転換にデザインを変更
Posted in 雑記 on 02/03/2010 11:18 pm by admin長らく放置気味のこちらのブログ。
当初はもっと色々自作のあれやこれやをやる予定だったのに・・・。
まぁ。愚痴っても始まりません。
とりあえず、デザイン(テーマ)を変えて、気分転換です!
色々実験的な開発(?)を進めていますので、このブログはその実験台にしてしまおうと考えています。
ウェブ開発者のシェルメモ帳
Posted in 雑記 on 02/01/2010 11:45 pm by admin毎日のようにLinuxに触っているのに、ついつい忘れてしまうコマンド。
ということで、ウェブ開発者のシェルメモ帳と題して、ちょっと不真面目なコマンド集(苦笑)を作ってみました。
少しでも楽しんでいただければ嬉しいです。