2005年11月30日

PerlのAttributeについてのお勉強

このエントリの内容は結構適当です。

今更ですがCatalystなどで使われているattributeに興味を持ったので調べてみた。
やや日本人向けははてな勉強会の資料などにもあります。

今回は、関数のattributeについて。SCALARとかARRAYとかHASHはスルーです。
あと、モジュールなperlではやってません。超シンプルです。


今のPerlでは

sub foo : baz {}
のように記述出来ますが、通常ではエラーになってしまうのです。
デフォルトで対応しているattributesは(lvalue|method|locked|unique|shared)のみらしいので、bazは対応してないのでエラーが出ます。

perldocを見るとMODIFY_CODE_ATTRIBUTESって関数でattributesの処理をしているそうなので、これを用いてattribute遊びをすることにします。
(ほかにもMODIFY_SCALAR_ATTRIBUTESとか色々ある)
で、必ずattributeな関数よりも前にMODIFY_CODE_ATTRIBUTESを記述しておかないとエラーになりました。


って事で、早速簡易なコードを用意

use strict;
test();
sub MODIFY_CODE_ATTRIBUTES {
my ($pkg, $ref, @attrs) = @_;
print "MODIFY_CODE_ATTRIBUTES: set up\n";
return;
}
sub test : attribute {
print "test: start\n";
}
実行すると…
$ perl ./sample1.pl
MODIFY_CODE_ATTRIBUTES: set up
test: start
うごいたー!


MODIFY_CODE_ATTRIBUTESの引数ですが
$pkgがattributeされた関数のカレントなパッケージ名
$refがattributeされた関数のリファレンス
@attrsがattribute名の配列
です。

sub test : foo bar baz {
のように指定すると、@attrsには(foo, bar, baz)が入ります。

こんな感じ

use strict;
test();
sub MODIFY_CODE_ATTRIBUTES {
my ($pkg, $ref, @attrs) = @_;
print "MODIFY_CODE_ATTRIBUTES: set up\n";
print "MODIFY_CODE_ATTRIBUTES: attrs: $_\n" foreach @attrs;
return;
}
sub test : attribute yappo gekko(hoge) {
print "test: start\n";
}
実行結果は
$ perl ./sample2.pl
MODIFY_CODE_ATTRIBUTES: set up
MODIFY_CODE_ATTRIBUTES: attrs: attribute
MODIFY_CODE_ATTRIBUTES: attrs: yappo
MODIFY_CODE_ATTRIBUTES: attrs: gekko(hoge)
test: start


これはドキュメント真面目に読んでないので自信がないですが、MODIFY_CODE_ATTRIBUTESに戻り値を入れてしまうとエラーが出るようになってるようです。
多分、非対応のattributesが設定されたときの為にあるのかなぁと

use strict;
test();
sub MODIFY_CODE_ATTRIBUTES {
my ($pkg, $ref, @attrs) = @_;
print "MODIFY_CODE_ATTRIBUTES: set up\n";
return grep {defined && !/(yappo|osawa|blogdb)/} @attrs;
}
sub test : foo yappo bar osawa baz {
print "test: start\n";
}
こんな感じで、非対応のattributeのみを配列で戻すようにします。
これを実行すると…
$ perl ./sample3.pl
MODIFY_CODE_ATTRIBUTES: set up
Invalid CODE attributes: foo : bar : baz at ./sample3.pl line 10
BEGIN failed--compilation aborted at ./sample3.pl line 12.
と、エラーになりました。


MODIFY_CODE_ATTRIBUTESに渡されるリファレンスを活用して変なことも出来ます。

use strict;
my $lastref;
&$lastref;
sub MODIFY_CODE_ATTRIBUTES {
my ($pkg, $ref, @attrs) = @_;
$lastref = $ref;
#&$lastref; # ← 呼出しに失敗する
return;
}
sub test : attribute {
print "test: start\n";
}
というコードは
$ perl ./sample4.pl
test: start
と期待通り実行されます。
    #&$lastref; # ← 呼出しに失敗する

の位置で関数を呼び出すと、Perl内部にて関数が準備されていないためかエラーになります。
コメントアウトしたソースの結果
$ perl ./sample4.pl
Undefined subroutine called at ./sample4.pl line 10.
BEGIN failed--compilation aborted at ./sample4.pl line 15.


それを応用すると、関数へ対して様々な挙動を付加することが可能です。
基本的には、スクリプトのコンパイル時に一度だけ呼び出されるのに、実行時の関数呼び出し毎に好きな挙動を割り振ることが出来るようになるのです。

use strict;
test();
test2('value');
test3('value');
my @cache;
CHECK {
no strict 'refs';
my %code_cache;
foreach (@cache) {
my ($pkg, $ref, @attrs) = @$_;
unless ($code_cache{$pkg}) {
$code_cache{$pkg} = {};
foreach my $sym ( values %{'main::'} ) {
next unless ref(*{$sym}{CODE}) eq 'CODE';
$code_cache{$pkg}->{*{$sym}{CODE}} = *{$sym}{NAME};
}
}
my $sym = $pkg . '::' . $code_cache{$pkg}->{$ref};
*{$sym} = sub {
no strict 'subs';
my ($cpkg, $cfile, $cline) = caller;
print "\n";
print "before: $cpkg, $cfile, $cline\n";
print 'before: input : ' . join(',', @_) . "\n";
my @ret = &$ref(@_);
print 'affter: return : ' . join(',', @ret) . "\n";
print "affter: $cpkg, $cfile, $cline\n";
print "\n";
};
}
}
sub MODIFY_CODE_ATTRIBUTES {
my ($pkg, $ref, @attrs) = @_;
push(@cache, [$pkg, $ref, @attrs]);
return;
}
sub test : attribute {
print "test: start\n";
print "test: end\n";
return 'test1 return';
}
sub test2 : attribute {
print "test2: start\n";
print "test2: $_[0]\n";
print "test2: end\n";
return 'test2 return';
}
sub test3 {
print "test3: start\n";
print "test3: $_[0]\n";
print "test3: end\n";
return 'test3 return';
}
やってる事は、attributeがついている関数のシンボルテーブルを書き換えまくって、別のロジックを付与しています。
MODIFY_CODE_ATTRIBUTES内でシンボルいじるのに失敗するのでCHECKの中でいじってます。

この結果は下記の通り

$ perl ./sample5.pl

before: main, ./sample5.pl, 3
before: input :
test: start
test: end
affter: return : test1 return
affter: main, ./sample5.pl, 3


before: main, ./sample5.pl, 4
before: input : value
test2: start
test2: value
test2: end
affter: return : test2 return
affter: main, ./sample5.pl, 4

test3: start
test3: value


今回のは適当なサンプルを作っただけですが、応用しだいでは便利に使えそうな気がします。
ただ、今回のサンプルは随分と面倒な実装でやる気が失せます。


そこでAttribute::Handlersの登場です。

もづく

突っ込みどころ多いと思いますので、突込みなどあればビシバシと・・・

Posted by Yappo at 22:24 | Comments (2) | TrackBack

2005年11月29日

レイザーラモンHG = Web2.0 説を提唱します

要するにそいうことでしょう。

なぜそうなるかは、分析が得意な人が今後検証をしてくれることでしょう。

2.0フゥ~!

Posted by Yappo at 15:39 | Comments (0) | TrackBack

2005年11月27日

senna+mysql落ち着きました

中の人のアドバイスもあったおかげでメモリ消費量を抑えることが出来ました。
現在は、通常通り安定してます。
適切に動かしてればsenna+MySQLは超安定してますから。ほんとに。

インデックスファイル

.sen.iファイルの初期サイズ
デフォルトでは130MBを確保しますが、設定ファイル(/var/senna/senna.conf)に、

INITIAL_N_SEGMENTS 数値のように数値を指定すると、

数値 * 256KBのサイズが確保されるようになります。

ただし、INITIAL_N_SEGMENTSの値を小さく設定するほど、更新処理の速度が低下しますので、デフォルト値よりも極端に小さい値を設定しない方が無難です。(デフォルト値は512です)


これを、128にしました。
デフォだとSEN.iに130MBくらい取られるけど、38MB位まで落とし込みました。
indexerの性能よりも動かないとしょうがないしね。
DBに使用するファイルサイズも半分程度になりました。

ただし、当然なんですが

インデックスのサイズ
hoge.SEN.iファイルはインデックス作成時に固定サイズを確保しますが、その後文書を大量に登録するとインデックスファイルの総サイズは、単語インデックスなら文書の賞味サイズの1.3倍程度、 n-gramインデックスなら文書の賞味サイズの2.5倍程度になります。

って事なので、データサイズが増えると結局メモリを食うという感じなのかなんなのか
メモリ消費量はINITIAL_N_SEGMENTSの値に影響するのかSEN.iファイルサイズに影響するのか、まだ分かってませんです。


1GB位のデータを1テーブルでfulltextしてたんだけど、1クエリあたり0.3秒もかかって使い物にならなかったの。
どうして使い物にならないかというと、1queryあたり10回sennaにクエリを投げなきゃいけなくて実質3秒もかかる感じだった。
そんなわけでテーブルを分割しまくって数十倍くらいパフォーマンス上がったところで、今回の現象に遭遇したと言う訳。

word indexだけmmapして、wordとdocidの対応表はmmapしないでキャッシュはOSに任せてしまう方式に改造したら
メモリ食わないけど、やっぱ劇遅になるのかなぁ。

今後index size増やす方向にもってくから、どうにかしないと。
てか複数台構成にしろって話。

Posted by Yappo at 13:52 | Comments (0) | TrackBack

2005年11月26日

senna+MySQLでメモリ食いすぎて落ちる

急にMySQLが落ちるようになってしまった。
というのも、sennaのfulltext indexを張ったテーブルを25個ほど持つようにして、総データ量(MYD/SEN含む)が4G近くの構成にしてからだ。

topを抜粋するとこんな感じで

Mem:   4151320k total,  4056728k used,    94592k free,    55916k buffers
Swap: 4192924k total, 144k used, 4192780k free, 3831344k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
17800 mysql 15 0 2550m 911m 850m S 0.0 22.5 3:02.22 mysqld


だいたいVIRT が3Gを超えると
mysqld got signal 11;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help diagnose
the problem, but since we have already crashed, something is definitely wrong
and this may fail.

key_buffer_size=134217728
read_buffer_size=4190208
max_used_connections=16
max_connections=500
threads_connected=11
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_connections = 2078764 K
bytes of memory
Hope that's ok; if not, decrease some variables in the equation.


となってしまう・・・
スタックトレースすると
0x規制 handle_segfault + 553
0x規制 (?)
(nil)
0xd規制 (?)
0xd規制 (?)
0x規制 ft_boolean_reinit_search + 306
0x規制 _ZN9ha_myisam7ft_initEv + 33
0x規制 _Z18join_ft_read_firstP13st_join_table + 21
0x規制 _Z10sub_selectP4JOINP13st_join_tableb + 87
0x規制 _Z9do_selectP4JOINP4ListI4ItemEP8st_tableP9Procedure + 210
0x規制 _Z12mysql_selectP3THDP13st_table_listR4ListI4ItemEPS4_P8st_orderS9_S7_S9_mP13select_result + 9874
0x規制 _Z13handle_selectP3THDP6st_lexP13select_result + 133
0x規制 _Z21mysql_execute_commandv + 18685
0x規制 _Z11mysql_parseP3THDPcj + 320
0x規制 _Z16dispatch_command19enum_server_commandP3THDPcj + 2712
0x規制 handle_one_connection + 1392
0x規制 (?)
0x規制 (?)

って感じ

一回だけGot Error 12が出てたので、メモリ食いすぎが原因だろうけど

なんだろうなぁ、sennaって際限なくデータをmmapとかキャッシュするようにしてるのかなぁ…
gdbしようにも、再発させるのに時間が必要なのと検証マシンが用意できないので調査不能。
そもそもsennaに由来する事象なのかもわからんからsenna-devにも投げられんし、そもそも投げるに値する情報もまだナス

ボスケテ

追記:該当のテーブルを使わないようにしたら、メモリ食いつぶすことがなくなった。
どうしよ

Posted by Yappo at 01:00 | Comments (1) | TrackBack

2005年11月22日

JavaScript::Swell - Web2.0 時代のHackモジュール

ここ最近はJavaScriptもかなり注目をされており、色々なサイトのjsファイルを読みふけってる方も多いと思います。
そこで困るのがSquishされて見づらくなったソースコードなのではないでしょうか?
皆さん、それぞれ苦労して見やすいソースに修正して日々Hackされてることと思います。

そんな苦労erにぴったりなモジュールがありました。
JavaScript::Swellです。
Squishの逆でSwellというなんともな名前です。

使い方も簡単でした。

use JavaScript::Swell;
print JavaScript::Swell->swell("var i=0;if(i++){var a=-1;}");
ってなコードで
var i = 0;
if (i++) {
var a = -1;
}

こんなに読みやすくしてくれます。

ただ、関数名や変数名の圧縮は伸張してくれないので、多少見にくいもののコードフォーマットが見やすくなるだけでも大分違うんじゃないかなぁと。
hack以外にも、汚く書いちゃったjavascriptの整形とか、難読化されたコードしか書けない人のコードを解析するときにも役に立つかも。

これでY!J Mapsの解析もばっちりです!

Posted by Yappo at 15:35 | Comments (0) | TrackBack

2005年11月21日

MSNスペースの運営内容が変わる?

スタッフブログ終了のお知らせ

12月22日をもちまして、マイクロソフト株式会社と株式会社ティー・オー・エスによ
る「MSNスペース」の共同運営を終了することになりました。

モバイル業界ではそれはそれは有名なTOSとMSNとのコラボサイトからTOSが抜けるようです。
MSNといえば、人には言えない事情で思い入れがあったりしますが、
さてどうなることやら。

Posted by Yappo at 22:11 | Comments (0) | TrackBack

本日の超人気エントリから読み解く人気エントリタイトル作り7の実例

アクセス数アップのためのエントリータイトルのつけ方を見た後にAlpha Clipper Clipsを見て気づいたことがあるので紹介する。

まずは、下記のスクリーンショットをご覧いただきたい。

ここにランクインされている幾つかのエントリが法則にしたがっている。

1.Trunk◆Mart - 今日の笑点は最高
 これは3:ショッキングなタイトルにするを用いている。普段から面白い笑点なのに、何故か「今日の」と今日を主張している点が、ショッキングである。

3.〜腐女子とアニヲタの間を取り持つブログ〜:「人物ライブ・スタメン」の腐女子特集 投稿者:たまら
 4:流行の単語を入れてみる、良くわからないけど最近はこのあたりの単語に流行性があるみたいです。

4.ARTIFACT:欲しいのは「陰口で繋がる自由」
 まさしく3:ショッキングなタイトルにするである。

5.フォトレポート:138万人が選んだ「ラーメン」--ヤフーのブロガー試食会 - CNET Japan
 138万人が選んだという3:ショッキングなタイトルにするでかつ、2:数字を使ったタイトルという併せ技である。

7.ケンタッキーフライドチキンの部位は5種類ある
 2:数字を使ったタイトルでかつ、文末を「ある」とすることで5:全く知られていない事実をあたかも常識のようにいうの効果も含ませているようだ。

9.アクセス数アップのためのエントリータイトルのつけ方
 3:ショッキングなタイトルにすると言葉は違うが1:○○の方法も活用されているようだ。

10.おまえなんか、訳してやる! - はてブ批判を軽く一蹴する「はてな」に、仕様を変更させる9の論法
 このエントリは凄いです。3:ショッキングなタイトルにするであり、「はてな」と「はてブ」という4:流行の単語を入れてみるを含め、2:数字を使ったタイトルであり、最後にニュアンス的には1:○○の方法という非常に高度なテクニックを用いています。


客観的に見ても、このような結果になることからアクセス数アップのためのエントリータイトルのつけ方はかなり良いコツではないだろうか。

Posted by Yappo at 14:50 | Comments (0) | TrackBack

2005年11月18日

Google Maps APIを使ったonline game作りました

Google Mapsでレーシング公開!でバリバリインスパイアされて
多人数で同じマップ上でドライブを楽しめるMMOっぽいドライブゲームを作ってみました。
ドライビングにかかわるアルゴリズムは、拝借させていただきました。
Google Maps Drive Online

ドライブゲームと入っても、手書きの矢印のようなものを左右キーとスペースキーで操って動かすだけです。
自分の矢印は真ん中の赤いのです。
他の人は緑色の矢印で表示されます。矢印をクリックすると名前が左下に表示されます。

あとチャット機能も完備です。
遊んでる人全員に会話が届くわけではなく、表示領域より一回り大きい範囲の人に会話が届きます。
「叫ぶ」をチェックしてると3倍遠くへ声を届けられます。

遠方の友達に道順を教えたり、バーチャルデートとかでも使えると思います。
タイムアタックなどはクライアントの性能差が出まくるので、ヌルいコミュニケーション主体のMMOという感じで。

そんなに遊ぶ人居ないだろうと思って人数制限はかけていません。
2秒おきにサーバと通信させているので注意が必要です。
厳密にはAjaxじゃなくてresponsTextの値をevalしてるだけです。
サーバ上で関数呼び出しのJavaScriptを吐いてるだけです。
XML使ってしまうと、クライアントの負荷がやばそうなので簡単な手を使いました。
一応都内23区近辺から外には出れない仕様です。
交通法規を厳守してお楽しみください。

サーバの負荷によっては制限かけるかもしれませんが許してください。
二番煎じなのは仕様です。

Posted by Yappo at 23:50 | Comments (0) | TrackBack

2005年11月17日

XML::Atom::Feedの使い方を間違えていた

ある所でXML::Atom::Feedを使ってatomfeedの取得からパースまでやらせていたんだけど。
なぜだか、同じリクエストが2回同時に来ているという指摘を受けていて原因が分からず悩んでました。

XML::Atom::Feed->new(URI->('http://example.jp/atomfeed'));
としてたんですよ。
そうですよ、
##Use auto-discovery to load the first Atom feed on a given page.
だったんですよ。

めでたく

XML::Atom::Feed->new('http://example.jp/atomfeed');
に直しました。

しかし上だとLWP::UserAgentを使って取得して、下のだとXML::LibXML使うんですね。


ごめんなさいorz

Posted by Yappo at 23:07 | Comments (0) | TrackBack

HTTP::MobileAgent 2005年版パッチ

HTTP::MobileAgent 0.24が出ているという事もあって、0.24に対するパッチを書きました。

HTTP-MobileAgent-0.24-yappo-2005.patch.gz

追加メソッドは下記の通り。
flash lite 1.0に対応している端末を調べる $agent->is_flash_10
flash lite 1.1に対応している端末を調べる $agent->is_flash_11
PDFに対応している端末を調べる $agent->is_pdf
トルカに対応している端末を調べる $agent->is_toruca

最近気づいたのですがEzWebの$agent->serial_numberが正しく取得されていないバグも直しています。
HTTP::MobileAgent本家もアーキテクチャ変更予定があるとかいう話ですが、とりあえずパッチ。

今後キャリアも増え、フルブラウザ端末が複数種類出ていることを考えると既存のHTTP::MobileAgentに頼らずに自分で作っちゃいたい衝動に駆られつつある今日この頃。
キャリア固有機能も増えてきてるしプラグイン機構で柔軟に全機能をカバーする方向にできないかなぁと。
あとは、新規端末にも柔軟に対応できるようなHTTP::MobileAgent版のCPANのようなものや、それらのデータを各利用者が簡単に取り込めるための機構。

あんまり構想を膨らましてもいけないので、基本の部分だけ作れないかなぁと。
後はキャリア別のプラグインとかガシガシ入れて個別カスタマイズの幅を増やすとか。
携帯コンテンツならではのルーチン組み込めたりとか。
そんなフレームワーク。

前回バージョン→HTTP::MobileAgentの大幅なパッチ

Posted by Yappo at 22:18 | Comments (2) | TrackBack

Beaujolais Nouveau 2005

ボジョレー・ヌーヴォーの解禁ということで、毎年恒例の台場の近くの店で買ってきました。

764.jpg
初めて0時の瞬間に立ち会えたのだけど、結構人が集まっていて、しかもちゃんとしたイベントやってたのに驚いた。

20051117_wine1.JPG
買ったのは、左から
ボジョレーの帝王が作るってラベルに書いてある「ジョルジュ デュブッフ」
なんか知んないけど「ヴィラージュ」のプレミア(ルイ ジャド)
Nouveau以外でも常に買ってる「ヴィラージュ(ジョルジュ デュブッフ)」
あと、一番まろやかだった「レティエイユ」
帝王のは相変わらず酸味きいとりますな。

いや、よくうんちくとか分からんけど。


20051117_wine2.JPG
プレミアウマスwwwwwwwwwwwww

帰りのタクシー代タカスwwwwwwwwwwっうぇwwwwwwっうぇwwwwww

Posted by Yappo at 02:08 | Comments (0) | TrackBack

2005年11月15日

Data::ToruCaのバージョンアップ

ちょっと前にCPANに上げたData::ToruCaですが、色々と機能を拡張しました。
torupo.jpの実装で作った拡張などをマージした形になっています。

主な拡張ポイントは、トルカ詳細データをファイルごと取り込んでパースしたり、トルカのカテゴリコードを絵文字のバイトコードに変換する機能です。
パースしたMIMEデータはmimeメソッドで取得できます。
mimeメソッドの戻り値は、基本的にはマルチパートメールみたいな形で帰って来るので、そのままMIME::Parserで解析できます。

    my $parser = MIME::Parser->new;
$parser->output_to_core(1);
my $entry = $parser>parse_data($trc->mime);
foreach my $part ($entry->parts) {
・・・・
}

という感じでトルカ詳細データを取り扱えます。
mimeはsetterにもなっているので、MIMEデータをセットしてdetail_buildメソッドでトルカ詳細データの作成も可能です。

あと便利なのは、トルカのカテゴリコードを直接iモードの絵文字に変換することも出来ます。

use Data::ToruCa qw(cat2pict);
print cat2pict('0001');

な感じで、0001カテゴリに対応する太陽の絵文字を表示します。
トルカのカテゴリコード全ては絵文字に対応しているので、全カテゴリコードで変換できます。

トルカなオブジェクトからは直接pictで絵文字が取得できます。

my $trc = Data::ToruCa->new($data);
print $trc->pict;

今後は例外データ(文字数オーバー)に関するハンドリングをどうするかを考えるべきか迷ってますが、とりあえずこのまま。


さっきCPANにあげたので、しばらくしたら利用可能になると思います。

以上、ニッチなモジュールの利用例でした。

11/16 15:00追記:パーサに不具合あったので0.05うp、と思ったらテストスクリプトが入ってなかったので追加しなおして0.05うp。
って上書きうpって反映されるのかしら・・・

ちなみに、ToruCa対応機種&対応予定機種全6端末での実機ダウンロード確認は出来てる余寒。

Posted by Yappo at 23:12 | Comments (0) | TrackBack

へプル

http://www.smarter.co.jp/

マーチャント: 商品掲載へ | マーチャントログイン サイトマップ | へプル | 会社案内

お客様がSmarter.co.jpをご利用していただいた場合、 ご プライバシー と 利用規約に同意していただいたものとみなされます。

Copyright © 2002-2005 Smarter.co.jp. All Rights Reserved.


さては今泉兄弟の回し者だな!

追記:21:08
ヘルプになってる・・・誤表記だったのか。

Posted by Yappo at 14:56 | Comments (1) | TrackBack

2005年11月11日

FOMA D902iイイ!

早速D902iを買ってきました。

今までのFOMAの中で最も優れた機械と思われます。
薄さというのが重要で、D902i手にフィットします。
P504iなんかも薄くて凄く良かったんだけどPは新しくなるたびに分厚くなる始末。
本命はSHだったけどSH902iの出来次第では買わないかも。

個人的な902iシリーズの優劣は
D >=? SH >>(越えられない壁)>> N >>> F >>>>(超えられない次元)>>>>> SO
って感じです、今のところ。
SOは、メモステなのとFOMA初参入ってところで選考外でした。
というか発売日に買ったSO506iCのジョグダイヤルもうまわんねえyp!
Fもパノラマ撮影面白そうだけど。。。今までFシリーズだけは常用した事ないなぁ。
Nは、ポインティングデバイス嫌いなので、道具として使いにくいから買いたくない感じ。
昔はN501i>>N502it>>N503iと買ってたのに、FOMAになってからかっこよくないんだもん。
むかしからNEC端末の液晶とは縁が無くてしょっちゅう割れたり溶けたりorz

っていうか、機械的に優れてるD902iなんだけど、メニューのソフトウェア(フラッシュ?)がスタイリッシュすぎてわけわかんねえyp!
多分メニューのフラッシュは差し替え効くから、なんか作るかな。

そんなことよりも聞いてくれよ。
新宿のヨドバシで端末買い増ししてきたんです。買い増し。
そしたら店員が機種変の用紙持ってきたんです。
せっかくSIM使ってるのに売り方がmovaと同じなんていけてないなと思いながら用紙書いて渡したんです。
以下超訳(かなり端折ってます)


店員<モペラUは、無料なんでおつけしてるんです
●<ふーん
 なにやら丸を書き込む店員
●<オプション?
店員<はい?
●<どういう事ですか?
店員<端末とPCの間をケーブルでつなげるとインターネットできるんです
店員<加入されますと、ID・パスワードが携帯にメールで届くんです
●<っていうかオプションの項目にあるんですよね?
店員<無料ですので加入することになってるんですよ
●<でもオプションなんですよね?
店員<でも加入することになっていますので
●<いらないんですが
店員<でも無料なんですが
●<オプション扱いなんだから断れるんですよね
店員<・・・
●<いりません
店員<わかりました・・・

ここまで書いてめんどくさくなったので、どこが問題になるかはかかないっす。

で、モペラUに加入させるとインセンティブかなにかの報酬が良いんですか?>ドコモのエライ人

そういや何だかんだで、トルポはSO902i以外の実機動作確認は取れてるっぽいです

Posted by Yappo at 15:53 | Comments (0) | TrackBack

2005年11月10日

Google Mapsで鈴鹿サーキット試走ゲームで上京した

今もっともアツいのがGoogle Mapsで鈴鹿サーキット試走ゲームです。
その頭のひねりかげんに脱帽しました。

負けちゃならないと思って、頑張りましたよ。
googlemapsrace.JPG
ほら、鈴鹿から六本木ヒルズまで。
Max160Kくらいの速度の上京はきっつー

Posted by Yappo at 19:48 | Comments (0) | TrackBack

【プレスリリース】ToruCa(トルカ)専用ポータルサイト「トルポ」開設のお知らせ

報道関係者各位
                                2005/11/10
                          検索エンジン Yappo

=====================================
    ToruCa(トルカ)専用ポータルサイト「トルポ」開設のお知らせ
=====================================


■概要について
モバイル検索エンジン「iYappo」では、NTTドコモが11月11日より発売する
FOMA 902iシリーズより対応されている「トルカ」専用のポータルサイトを開設
しましたので、お知らせいたします。

サイト名:トルポ
URL:http://torupo.jp/
開設時期:2005年11月11日(本日より仮公開しています)


■コンテンツ詳細について
 11月11日より提供されるコンテンツは下記の通りです。

●トルカ投稿機能
 ユーザの携帯端末に格納されているトルカ情報を、指定したメールアドレス宛
てに送信をすると、自動的にトルポへトルカ情報を登録できます。

●新着ToruCaのお知らせ
 ユーザより投稿があったトルカ情報の新着分を一覧で表示します。

●トルカゲートウェイ
 トルカ(R)に対応していない端末や、他のキャリアの端末からトルカ情報を
閲覧可能にするゲートウェイになります。
mova/902i以前の世代のFOMA/AU/Vodafone/WILLCOM/パソコン等の非対応端末より
トルカ情報を見ることが可能となります。


※下記の2コンテンツは、利用動向を見極めつつコンテンツを公開を致します。

●キーワード検索機能
 登録されたトルカ情報からキーワード検索を行うことが出来ます。
トルカ情報の中に、住所や店舗名などが登録されていた場合には「渋谷 ダーツ」
などのキーワードで検索を行うと、該当する店舗情報やクーポン情報を一括して
検索することが可能です。 

●ジャンル検索機能
 トルカ情報に設定されているジャンルデータを元にジャンル検索を行います。
ジャンル別の新着検索やキーワード検索も行います。

■今後の展開について
 利用者の動向を見極め、下記のコンテンツを追加する予定です。

●トルポ特派員
 トルポ上で存在の確認されていない店舗のトルカ情報をより多く集める事が
出来た登録ユーザに対し、スポンサー企業などからのインセンティブを提供する
企画などを行い、トルカ/トルポのより一層の認知率向上を図ります。

●位置情報検索
 トルカ情報に登録されている住所、電話番号情報などを基にしてトルカに
対して位置情報を割り当て、位置情報検索を行います。
GPS携帯等を用いることによって周辺検索等も行う予定です。


■関連リリース
トルカ(R)専用ポータルサイト開設について
http://blog.yappo.jp/yappo/archives/000304.html


■iYappoについて
iYappoとは、1999年7月20日に正式公開をした、携帯電話向けサイトを集めた検索
エンジンです。

登録サイトの内容やサイト構成を元にし、有用性のあるサイトを自動的にランキン
グしてそのランキングのデータを検索結果に反映させて、携帯ユーザーのニーズに
近いサイトを多く提供する事を特長としたモバイル検索エンジンです。

iモードに準拠した携帯端末全てに対応しており、約8万5千サイト以上の登録が
あります。iYappoの検索対象データは、この登録サイトが所有する重要なURLの中
約45万URL以上のデータからの検索が可能となっております。

これにより、より重要度が高いコンテンツを高速に検索することが可能になります。


--------------------------------------------------------------------------
本プレスリリースに関するお問い合わせ先
配信元 : Yappo http://i.yappo.jp/
リリース : http://blog.yappo.jp/yappo/archives/000331.html
運営者 : 大沢 和宏
E-MAIL : press@yappo.ne.jp
URL : http://i.yappo.jp/

※過去のプレスリリース一覧: http://i.yappo.jp/docs/press/

Posted by Yappo at 17:04 | Comments (16) | TrackBack

2005年11月09日

Moropy - Tropyベースな携帯コンテンツ

Moropy

今更ですがTropyに触発されて携帯向けな実装をしてみました。
正直、ケータイユーザーへの説明はきついっす。
カオス的な演出なぞ一見さんには無効なので、コミュニティ色をつけました。
なんだか掲示板と変わらなくなっちゃいそうだ。
>>1が好きにいじれる掲示板に成り下がる。


データを溜め込む仕組みとして無理やりな企画をでっち上げもしてみたりしている。
きびしー

もう一個仕掛けを含ませてるけど、もうちょいしたら発動。


何せ902iシリーズが明後日発売orz

Posted by Yappo at 21:37 | Comments (0) | TrackBack

2005年11月03日

ブランデー


ケーキくうにはね。

用途に見合ったソリューションは食も同じ

Posted by Yappo at 19:18 | Comments (0) | TrackBack

久保田


万寿を呑む妄想

Posted by Yappo at 17:35 | Comments (0) | TrackBack