エラーと認識して欲しいプログラム
Perlでモジュールというか、サブルーチンを書いていて間違えるのが、
sub hoge{
my($self,$str)=shift;
....
}
もちろん、strはundefined。
スクリプトを書きながら書き足したときにやってしまう。
sub hoge($self,$str){
....
}
の様になっていたら間違えないような気がする。
« 2005年01月 | メイン | 2005年03月 »
Perlでモジュールというか、サブルーチンを書いていて間違えるのが、
sub hoge{
my($self,$str)=shift;
....
}
もちろん、strはundefined。
スクリプトを書きながら書き足したときにやってしまう。
sub hoge($self,$str){
....
}
の様になっていたら間違えないような気がする。
Flashのムービーを作っているとここに書くことがない。
最近更新回数が減っているのだが、スノボに行っていただけではなく、仕事でFlashを使う機会が非常に多いからだと思う。
Flashのアクションスクリプトでプログラムを組んでいる訳だけど、あまり、「発見」がないのよね。
ムービークリップの動きを、0.1と0.2とかいう数字でコントロールしつつ、
なんどもなんども書き出してはチェックをしてる。
んで、気づくと1日が終わる。時間がかかるかかる。
Flashムービーの作成のもう一つの問題は、MX2004に対応した、良いリファレンス本がないこと。
UIコンポーネントも少しずつ使っているのでMX2004とActionScript2.0に対応した良い本が希望。
これ買ったけど、いまいち。
本が小さいから手が痛い、ページが開きにくい。
2004対応とは書いてあるけど、対応が中途半端。
ヘルプに勝るものがないのがなんとも。
CPANにはAcmeというとても野心的なカテゴリーがあるのだが、
その中から1本。
use Acme::WWW::Cyborg;
print cyborg_name("kazeburo");
__OUTPUT__
K.A.Z.E.B.U.R.O.: Kinetic Artificial Zealous Exploration Being/Unit Responsible for Observation
という無駄なカッコいいものを吐き出すモジュール。これは、中身としては、
The Cyborg Name Generator:
なるサイトにLWPでアクセスするものです。
YappoLogsのところで紹介されていた、XMLHTTPRequest、非常に何かに使いたい。
XMLHTTPRequestは、JavaScriptの中から、外部のサーバへとXMLを読みにいけるもの。
safari、mozilla、ieなどが既に対応。
Yappoさんが紹介されているxml.comからのリンクのADCの説明がわかりやすいかな。
http://developer.apple.com/internet/webcontent/xmlhttpreq.html
iTunesのRSSを読むサンプルもあります。
FlashのActionScriptでも実現可能ですので、FlashとJavaScriptのどちらをインターフェイスとして選ぶか、そんなところでしょうか。
Internet Watchより『「gooブログ」が容量競争に終止符!? 有料版が最大1TB、無料版も3GBに 』
もうね、アホかと、馬鹿かと。。
2月16日からは無料版の容量を最大3GBに、gooブログアドバンスの容量を最大1TBにそれぞれ拡張する。アップロードできるファイル形式は従来と変わらずgif/jpg/pngで、画像サイズは最大1MB以内。
これは、ライブドアもそうだけど、容量を使うなと言っているようなものだし、絶対1TBなんか使わないと予測の上ででしょう。
NTTレゾナントでは今回の容量拡張について「最大で1TBの容量を実現することでブログの容量競争に終止符を打ち、今後はユーザーの利便性を高める方向でサービスを拡充していく」としている。
言っていることは良いことだろうけど、なんかねぇ。。
リリースは先週でていたけど、BlogPetリニューアルしました。
絵本がかわいい。

これが動いたらいいのに。
今日はチョコレートらしきものがひょうじされてます。
feed meterもチョコ。
ビジネスブログブックを購入。 早速休み中に読んだ。
ブログとはなんぞやあたりが1/3、オープンなブログについてが1/3、イントラブログが1/3。
TIIDAブログに関するチャットによるインタビューが興味深いが、個人的な興味どころから言えばイントラブログに関する事例がほしかったところ。
意味あるのかわからないQRコードがいっぱい載っているところにもツッコミいれておきます。
こちらのエントリーで日立BOXERの小川さんにコメントをいただきましたが、Sonarはちょっとだけ使っております。現在のところさくさく動いています。
個人的にOPMLのインポート機能がほしいところ。
CacheとCache::Cacheというのがあるのね。モジュールの名前も似ているし、ややこしい。
URI::Fetchを使おうと思って、Cache::Cacheをいれて、URI::FetchのSYNOPSISのようなコードを書いて実行。
my $cache = Cache::File->new( cache_root => '/tmp/cache' );
my $res = URI::Fetch->fetch('http://example.com/atom.xml', {
Cache => $cache
})
すると、Cache::Fileがないと言われる。
あれれと思ってよく読むと、Cache::Cacheではなくて、Cacheというモジュールに含まれるCache::Fileだと判明。
Cache::Cacheに入っているのは、Cache::FileCache。
ただ、URI::Fetchのソースも見てみると、getとsetを利用しているだけ。Cache::Cacheでもかまわなそうと思い
my $cache = Cache::FileCache->new({cache_root => '/tmp/cache'});
my $res = URI::Fetch->fetch('http://example.com/atom.xml', {
Cache => $cache
})
としてみた。
結果、普通に動いた。
CacheとCache::Cacheの違いはCacheモジュールの中に書いてある。
The Cache modules are a total redesign and reimplementation of Cache::Cache and thus not directly compatible. It would be, however, quite possible to write a wrapper module that provides an identical interface to Cache::Cache.
The semantics of use are very similar to Cache::Cache, with the following exceptions:
The get/set methods DO NOT serialize complex data types. Use freeze/thaw instead (but read the notes in Cache::Entry).
シンプルに使う分にはほぼ同じ。
複雑なデータの取り回しはすこし違うというわけですな。
ところで、URI::Fetchのキャッシュなのだが、getとsetメソッドだけ定義すれば良い訳で、
データベースを利用したりgetやsetの間にごにょごにょと何かを挟み込むことができそう。
URI::Fetchは中を見ると非常にシンプルなんだけど、非常に便利だなぁ。
xargsは便利。
カレントディレクトリにファイルがいっぱいあるとき、
# grep hoge *
としても、
Argument list too long.
となってしまい、うまくいかない。
これを
# echo * |xargs grep hoge
とすれば、xargsがgrepの引数をちょうど良いところで分割して実行してくれる。
すばらしい。
初めてClassic環境が役に立った。
ぱどタウンの某タウンのマップを修正して書き出し直さなければならなかったのだが、OS 9だった時に書き出せていたものが、Dual 1.8GBのG5のPantherで「スタックメモリが不足」とでて、書き出せなかった。
ちなみに、メモリーは1.5GBつんでいて、topコマンドでみても1GB以上メモリがfree。
しょうがないので、Flash MX 2004をあきらめて、Flash MXをインストール。
Flash MXのアプリケーションの「情報をみる」で、
Classic環境で起動する
のチェックボックスをOnにして、昔のように割り当てメモリを増やす。
OS Xでは必要なくなったはずなのに。。。
んでClassicの起動を待って、ClassicのFlash MXで無事書き出すことができた。
初めてClassic環境が役に立った瞬間でした。
Classic環境を役に立てない良い方法どなたか知りませんでしょうか。
日の出と日没時間を計算するモジュールは、Astro::SunriseとDateTime::Event::Sunriseの2つがあるのだが、両方とも、DateTimeを必要とする。
某仕事で使おうと思ってDateTimeをインストールしようとしていたのだが、依存関係が結構あり、面倒。
んで、改造に楽そうなAstro::SunriseからDateTimeを取り除いてみた。
以下Patch
--- AstroSunrise.pm.orig Mon Feb 7 23:13:58 2005
+++ AstroSunrise.pm Mon Feb 7 22:54:08 2005
@@ -1,4 +1,4 @@
-package Astro::Sunrise;
+package AstroSunrise;
=head1 NAME
@@ -83,7 +83,9 @@
use POSIX qw(floor);
use Math::Trig;
use Carp;
-use DateTime;
+#use DateTime;
+use Time::Piece;
+use Time::Seconds;
use vars qw( $VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $RADEG $DEGRAD );
require Exporter;
@@ -614,12 +616,14 @@
my $alt = shift || -0.833;
my $offset = int( shift || 0 );
- my $today = DateTime->today->set_time_zone( 'local' );
- $today->add( days => $offset );
-
+ #my $today = DateTime->today->set_time_zone( 'local' );
+ #$today->add( days => $offset );
+ my $today = Time::Piece->new;
+ $today += ONE_DAY * $offset;
+
my( $sun_rise, undef ) = sunrise( $today->year, $today->mon, $today->mday,
$longitude, $latitude,
- ( $today->offset / 3600 ),
+ ( $today->tzoffset / 3600 ),
#
# DST is always 0 because DateTime
# currently (v 0.16) adds one to the
@@ -666,12 +670,14 @@
my $alt = shift || -0.833;
my $offset = int( shift || 0 );
- my $today = DateTime->today->set_time_zone( 'local' );
- $today->add( days => $offset );
+ #my $today = DateTime->today->set_time_zone( 'local' );
+ #$today->add( days => $offset );
+ my $today = Time::Piece->new;
+ $today += ONE_DAY * $offset;
my( undef, $sun_set ) = sunrise( $today->year, $today->mon, $today->mday,
$longitude, $latitude,
- ( $today->offset / 3600 ),
+ ( $today->tzoffset / 3600 ),
#
# DST is always 0 because DateTime
# currently (v 0.16) adds one to the
Astro::SunriseをAstroSunriseというモジュール名に変えてしまいます。あとはライブラリパスが通った場所において、
use AstroSunrise;
あまり確かめていないが、Googleでみつけた日の出・日の入時刻計算のページなどと比べるとすこしズレがある。
まぁ、厳密に時間を調べないといけない訳ではないのでこれでよし。
ARTIFACTさんの記事「あらためて寂しさ再生産?SNS流行後の人間関係?」
SNSの負の部分についてリンクを交え語っています。
アンテナが反応したのでメモ。
考察はまたあとで。
Slashdotのトピ「三菱重工が機動戦士ガンダムを作ったら」
"三菱重工が、来年度卒業予定の学生を対象に行なう会社説明会「MHI Jobcon 2005」にて「三菱重工が、機動戦士ガンダムを作ったら」という企画を行なうらしい。
な、はずが、なぜかパトレイバーの話に。
Slashdotならでわ。
NetAddr::IP、なにげに便利かも。
IPアドレスによるアクセス制限なんかが簡単に書けそうです。
たとえば、192.168.0.33が192.168.0.0/24にあるかどうかをチェックするようなものなら、
my $ip = NetAddr::IP->new("192.168.0.33");
if($ip->within(NetAddr::IP->new("192.168.0.0/24"))){
print qq(ok?n);
}
と書ける。
希望を言えばもうすこしスマートに書けることかな。
livedoor Blog、容量を最大2GBへ拡張。サイトリニューアルも予定
livedoor Blogのディスク容量は無料版が30MB、有料版の「livedoor Blog」が100MBだったが、2月10日からはともに2GBへ拡張する。容量はテキストと画像の合計で、合わせてlivedoor Blog PROのFTPアクセス機能は停止する方針という。
容量アップで「FTPアクセス機能は停止」。
これはまた考えましたね。
先日オープンした、Yahoo! ブログ
NAVER Blogにそっくりと書いたけど、正確には、Yahoo! Korea Blogの機能を借りたものらしい。
ブロ蔵EX〜ブログラEX〜さんの記事に書いてあって気づいた。
ってか。そもそも
Yahoo! Korea Blog イコール Naver Blog
だな。記事にムービーが埋め込まれていたり、音楽が流れてきたりと
そういうところまで同じだ(w
某事情でNaver Blogは嫌い。