2006年04月30日

そのタブAcme::Tabifyでよくね?Plaggerでもいいけど

404 Blog Not Found:タブのスペース化はタブ幅よりも重要である
内容の99%はスルーするとして

perl -i.bak -ple 's{^([ ]+)}{"\t" x (length($1)/4)}e' *.pl

でtabifyできるではないか。

ちょwwwまったwwwwww

Ingy++な自分としては、ここは是非ともModule::Compileを使って解決するべきだと思ったのです。
もちろんPlagger使えば、こんな問題は簡単に解決できるんだけれども。
Acme::Tabifyを使って

use Acme::Tabify;
とするだけでTabifyしてくれます!しかも.pmcファイルまで作ってくれる。
use Acme::Tabify (Tabify => 0);
すればスペースをタブに変換してくれるし
スペースの数が気に食わなければ
use Acme::Tabify (Space => 8);
してスペースの数を変更できる。
当然行頭のスペースとタブのみしか変更しないから、色々と安心。

しかしModule::Compileつかうったらimport処理書くの超めんどい。
Module::Compileのimportこぴってこないと大変なことになる。。。

あとでCPANにうぷっとこう。
どうせならuse tabify;できたほうがいいかな。
よし、tabify-0.01.tar.gzにしてうp!

patch作れない?
そんなの、全部のモジュールがuse Acme::Tabify;すりゃいいんじゃね?
Module::Compile使えない環境だとCPANモジュール使えなくなるけど。

Posted by Yappo at 05:58 | Comments (0) | TrackBack

2006年04月29日

あーそうそうWeb2.0がらみで農業2.0とかね

農業2.0とかのたまわっていたら、農業に携わる方たちに本気で怒られると思う。

「なにその2.0とかいうの、馬鹿にしてるの?」

ってね。そっくりそのまま色々なフィールドに目線を移すと。。。。

のうぎょう ―げふ 1 【農業】

土地を耕して穀類・野菜・園芸作物などの有用な植物を栽培し、また植物を飼料として有益な動物を飼育して、人類の生活に必要な資材を生産する産業。広義には、畜産加工・林業も含む。
いやはや、ほんとに大変な事です。
今年こそ収穫したい!


(このエントリはフィクションですmaybe)

Posted by Yappo at 09:09 | Comments (0) | TrackBack

最近の農業まとめ

写真の準備で疲れた・・・

去年から継続中のもの
右側のキャベツ、栗、長ネギ(自生してた)、レモンハーブ、ドリアン(どう見てもしおれています)、ハバネロ(どう見ても枯れ草です)

ここ1月以内に植えたもの
バジル、イチゴ、ジャガイモ、とうもろこし、唐辛子、ピーマン、トマト、ナス
きゅうり、ゴーヤ、スイカ、メロン、レタス、キャベツ、しその葉の種、パセリ、不思議な種

植えずに放置中のもの
自然薯、大和芋

昨年から育ってるキャベツは何故か背丈が伸びて黄色い花が咲いてる。
一度はキャベツの葉っぱが全部食われたのに、最近すべて根っこ引っこ抜いて土を入れ替えたら超絶復活した。
栗はここ数週間で急に葉が出てきた。ただの枝だったのに。
レモンハーブはうざくなったから無くすかも。
ハバネロは葉が出てきたらすごい!一度根っこ抜いたのに。

イチゴは一つだけ枯らしたけど、土んなかに突っ込んどいたら枯れ草の中から新しい葉が出てきた。
野いちごが何故か自生して放置&踏みまくってるけどいっつも実をつけるからイチゴは生命力強す。
去年スイカ植えたら2週間で消滅したけど、今回はまともなとこに植えたら元気だ。ってかプランターは今年導入。
きゅうりは病気にかかってる。
ピーマンは死にそう。トマトは生長しない。
さっきみたら種植えのきゅうりが根をだしてた。

土作りは適当にいろいろ混ぜたりしてる。おかげで年々標高が高くなってる。
さっき雑草抜きまくったらムカデやら色々なのが土の中にいた。
雑草地帯の土はやたらやわらかい。しかもカツオを生めた周辺がすごい生えまくってるし。
なんかネギがぼろぼろ抜けたので適当に土の中に突っ込んだ。
菊も枯れ草抜こうとしたら生えたての葉っぱまで全部抜けたから適当に埋めた。
植物やばい。適当に抜けても適当に埋めれば復活するんだから。
去年抜いたはずのツタとかシダとかがまた新芽でまくりだった。もう死ねよと思う。
とにかくオマイラは植物のヤバさをもっと知るべきだと思います。





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

2006年04月28日

はてなWikiを作りました。

はてな認証APIができたって事で、昔から要望のあがっていたはてなWikiを作ってみました。
作ったとは言ってもPerlで書かれたKwikiのみで構築しています。

とはいっても、既存のプラグインだけでは作れないので、はてな認証に対応するKwiki::HatenaAuthを始め、はてな記法に対応するモジュールやデザインをはてなテーマにするモジュール等を作成して使っています。
Kwiki::HatenaAuth以外のモジュールもCPANに上げて、誰でもはてなWikiを作れるようにしようかと思います。

はてな記法に対応させる物は、かなり強引に作っている気がしなくもないですが、動くのでうpしときます。
CPANにうpったら作り方をまとめたエントリもうpします。

どうぞご利用ください。

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

2006年04月24日

はてな認証API利用のサンプルとAlpha Cliper Clipsのはてな認証API対応

はてな認証APIの公開について(開発者さま向け)

本日、はてなアカウントをサードパーティのアプリケーションを利用するための認証APIを公開しました。
はてラボで開発できるようになった!
ってことで早速ACCではてな認証を使えるようにしました。
今まで左上に
ようこそゲストさん
って表示していたのですが、この為に無駄ともいえる表記をしていたのです。
いやーAlpha Cliper Clipsも公開から8ヶ月でようやく想定の範囲内の実装が一通り終わりました。

はてブと認証APIの連携なんかが出てきたら、レートの高いURLを自動的にブックマークするとか色々やりたいです。
が、それらって全部Plaggerで実装できるんじゃね?

とりえず、今回実装した時に作ったソースを公開してみます。
Hatena::API::Authを思いっきりつかっています。
ACC::HatenaAuthが、はてな認証を取り扱うモジュールです。
Class::DBIを使っていてACC::DBI::hatena_authを使ってDBにアクセスします。
コールバックURL(ACC::Handlers::Login)にてユーザデータを取得しつつ内部でキャッシュをします。
Cookieで使うIDがcertっていう豪快な仕様です。今後トークンとかに対応したらトークンもcookieに出してしまうかどうするかw
で、ACC::Handlers::Logoutでログアウト処理を行います。

LoginとLogoutの$self->module->hatena_authにACC::HatenaAuthのオブジェクトが入ってる感じです。
$self->module->hatena_authをTTに渡していて

[% IF S.hatena_auth.is_login %]
<tr><td align="lefth" class="header">ようこそ[% S.hatena_auth.user.name | html %]さん</td>
<td align="right">
<a href="/logout">ログアウト</a>
</td></tr>
[% ELSE %]
<tr><td align="left">
ゲストさん、ようこそ
</td>
<td align="right">
<a href="[% S.hatena_auth.api.uri_to_login.as_string -%]">はてなログイン(α版)</a>
</td> [% END %]
みたいい記述してます。

ちなみにLoginとLogoutは、Sledge派生系の自家製フレームワークがないと動かないです。
ACC::HatenaAuthのnewとかloadは、そのフレームワークの適切な時期に呼び出してる感じです。

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

WEB+DB Press Vol.32のやつって、それPlaggerでもできるよ

それPlaggerでもできるよ


- module: Subscription::YahooJ
config:
results: 10
keyword:
- plagger
- dankogai
- naoya
Plagger::Plugin::Subscription::YahooJYahooJ::Searchを入れてね。
YahooJ::Searchのref1:YappoLogs: YahooJ::Search - Yahoo!デベロッパーネットワークAPIを叩くモジュールを作った
YahooJ::Searchのref2:YappoLogs: YahooJ::Search 0.02 Released


経緯とかは下のURLで。自分はめんどくさいから斜め読みしかしてないけど。
無精で短気で傲慢なプログラマ | 続・これ、読みやすいの?
404 Blog Not Found:perl - even more best practices
naoyaのはてなダイアリー - 勝手に添削 - WEB DB Press Vol.32 オレオレコード版


ついでにdanさんのコードをYahooJ::Search使うように書き換えてみた。
めんどくさいからロジックはコピペ。
#!/usr/bin/perl -T
use strict;
use warnings;
use CGI;
use Encode qw/encode_utf8/; # to drop utf8 flag from YahooJ::Search
use Readonly;
use YahooJ::Search;

Readonly my $MAX_RESULTS => 10;
Readonly my $MYYDN_APPID => 'YahooDemo';
my $q = CGI->new;

sub search_result{
my $q = shift;
return unless $q->param("query");

my $response = YahooJ::Search->Query( METHOD => 'Web',
appid => $MYYDN_APPID,
query => $q->param("query"),
results => $MAX_RESULTS);
return $response->error_msg if $response->error_msg;

my @result = ($response->totalResultsAvailable, "hits");
push @result, "<ol>";
for my $r ( $response->Results ){
push
@result,
encode_utf8(sprintf qq(<li><a href="%s">%s</a></li>),
$r->{'ClickUrl'}, $r->{'Title'});
}
push @result, "</ol>";
return @result;
}

print
$q->header(-charset => 'UTF-8'),
$q->start_html(-lang=> 'ja', -title=>$ENV{SCRIPT_NAME}, -encoding=>'UTF-8'),
$q->start_form(),
$q->textfield("query"),
$q->submit(-value=>"search"),
$q->end_form(),
search_result($q),
$q->end_html();

ほとんど変らNeeeeeeeeeeeeeeee!


何がすばらしいというとXML周りの処理が隠蔽された事。
naoyaさんの
検索周りのロジックは別モジュールに切り出してすっきりさせる。
モジュールは OO インタフェースにする
ってあたりが自然と実践できる感じ。




もうめんどくさいから〆ると
  • YahooJ::Searchがカテゴリ検索に対応したよ!

  • オークション対応と、少しリファクタリングしたらYahooJ::SearchをCPANにうpするよ!

  • はてブ
    2005年12月07日 naoya yahoo, perl, cpan Yahoo::Search との互換性とか考えなくていいんかな
    言われた江戸、Y!とY!Jは会社違うしなんかAPI仕様も違くてめんどくさいから強行うpするよ!

  • これよりきれいなリファクタリングはAcme::Oppaiで実現できるはずだよ!

  • なんか「傲慢」ってフレーズがよく出てきた気がするから「怠慢」してみたよ



  • Yappo the 'insupaiya' master.

    Posted by Yappo at 20:10 | Comments (0) | TrackBack

    2006年04月23日

    鼠海


    船乗り場がある

    Posted by Yappo at 16:24 | Comments (0) | TrackBack

    2006年04月20日

    Acme::Oppai - おっぱいおっぱいおっぱいおっぱいおっぱい

    そんな事よりもPlaggerがlivedoor Readerに対応したらしいよ!
    これでlivedoor Readerにクロールを任せてgmailでエントリ見放題って荒業も可能!

    higeponさんのコメントにperl -MOppaiとか書いてあるからおっぱいモジュールをCPANにうpしてしまいましたおっぱい。
    反省はしないおっぱい。

    このモジュールは無駄に凝っていておっぱい。

    print Acme::Oppai->Oppai
    print Acme::Oppai->Oppai->Oppai->Oppai->Oppai
    などの用にメソッドを連続に呼び出すとAAが呼び出した数だけ増えていったりしますおっぱい。
    Oppaiメソッドを呼び出したときにScalar::Utilのblessedを用いてblessされてなければblessするという助言をいただいて->newしなくても良くなってますおっぱい。
    で、Oppaiメソッドの戻り値を$selfにすれば連続してメソッドがかけるのですおっぱい。
    で、$selfの中身で「何回連続で呼び出されたか?」というのを把握しているので、Oppaiメソッドが呼び出された数に応じて形の違うAAが返ってきますおっぱい。

    でもそれじゃ$self返すんならprintできなくね?
    って話ですが

    use overload q("") => sub { 
    my $self = shift;
    my $oppai = ${ $self->[0] };

    if ($self->[1]->{use_utf8}) {
    utf8::decode($oppai) unless utf8::is_utf8($oppai);
    } else {
    utf8::encode($oppai) if utf8::is_utf8($oppai);
    }
    $self->clear;
    $oppai;
    };

    なんて幹事でoverloadしてるので、print文の時にはAAが帰るようになりますおっぱい。
    AAを返すときに上記カウントもクリアさせるので、同じオブジェクトでAAを何回でも生成できますおっぱい。

    また、某おもしろプレゼンの人にpearlっていう名前ネタをいただいたのでおっぱい。
    lsコマンド風味のおっぱいを付属させていますおっぱい。

    今北産業の方もPODを見れば大体hack出来ると思いますおっぱい。
    またAAは任意のものに差し替えやすいように配慮もしていますので、どうぞご利用くださいおっぱいおっぱい。

    Posted by Yappo at 04:09 | Comments (1) | TrackBack

    2006年04月17日

    【注意勧告】pageoneというspam撒き散らし検索エンジンの件(!yahoo/!google/!livedoor)【転載必須】

    このエントリの情報は既に正しくないです


    コメント欄に
    pageoneの中の人にメールしたところ、トラックバックを停止したとのことです。
    Posted by: クマちゃん at 2006年04月18日 00:49
    と、情報をいただきました。情報ありがとうございます。
    さらに中の人のエントリもあがってました。
    当初考えていた仕様は、検索結果ベスト20にランクされたBlogにトラックバックを送ることでした。
    お、これいいっすね。

    ということで、なんら有害ではないと確認の出来た単純に便利なだけのメタ検索サイト「pageone」を、ぜひご利用ください。

    こっから下は<strike>タグ

    はじめに


    pageone(http://www.pagesupli.com/search/blog.html)という検索サイトをご存知の方はどれくらいいるのだろうか。
    このサイトを興味本位でも利用することは許されない。
    もしもこのサイトで検索してしまった場合、あなたは立派なスパマーとなってしまう。

    なぜか?


    答えの前に軽くpageoneの挙動を。。。

    1.キーワード検索の要求があったら、各検索サイトにデータをとりに行く
    2.検索サイトのデータをマージして、結果HTMLを作成する
    3.作成したHTMLのキャッシュファイルをさくせい
     そのときURLがhttp://www.pagesupli.com/blog/[prefix]/[keyword]_020.htmlのようになる
    4.引っかかったURL全てのTrackback Auto-Discoveryを調べる
    5.そして、3で作成したURLで4のURLへTrackback爆撃する
     UAは「TrackBack/1.0」 from hostは「softbank060122196002.bbtec.net」
     しかもblog名を「人気Blogランキング[今週5位]」とかいう爆撃を受けた側が「ランキング上位入りした?」という期待をさせる手の込みよう。

    答えを出す前に、なにが大問題なのかがわかりましたね。

    対策方法


    pageoneのipアドレス「60.122.196.2」をファイアウオールなどで遮断する。
    企業の情シスの担当者の方は、自分の社員がspamerにならぬようにURLフィルタリングするのもよいでしょう。
    とにかく、このipアドレスとの通信を今すぐ遮断するべきです。

    もしも、このサイトの利用者数が増えたらどんな事になるかわかりますよね?

    もしくはPlaggerでpageone対策すればよくね?

    おわりに


    このような最悪なwebサービスを作るやつは、ワンクリック詐欺のシステムを作っている奴なみにダメである。
    しかも法的には真っ白なところが詐欺屋よりもたちが悪い。今すぐ○ぬべきである。

    ということで、pageoneの被害者を増やさないように世界中のbogに当エントリをtrackbackしていきますが、一人の力では漏れがでます。。。なので皆様のblogに当エントリを転載していただき全blogへのtrackback作業のお手伝いを是非してください!

    Posted by Yappo at 15:51 | Comments (3) | TrackBack

    2006年04月16日

    サイボウズラボでたい!Hackathon

    土曜日の昼から、サブテク (リンク先はイメージです。実際のサブテクと若干の違いがあります)な人々で花見(もう桜は散りましたが)→ サイボウズラボで Hackathon してました。サイボウズラボはすばらしい環境で、Hackathon にも最適w

    そんなことより花見がすごかった。
    何より誰も宴会してない、それなのにビニールシート敷き始めて宴会する。俺たち変態じゃね?
    そして、通行人の生暖かい目線「もう桜散ってるぞw」というオヤジのヤジ。姉妹には警官も見てみぬふり。
    警官といえば迷子の呼び出し放送。一回目の放送が終わって10秒後にまた呼び出し。そんな10秒で交番にいけるかっつうの!
    しかも呼び出している母親が放送で呼び出されるしまつ。警官の声の後ろで子供が泣き叫んでるの。お母さん切羽詰りすぎ。
    何よりびびったのが、写真くれたおっちゃん。
    いきなり宴会中に割り込んできて「いいのあげるよ」。そしてなにやら選んでる。
    受け取ると、皇太子一家が写ってる生写真。なんでもNHKの記者がとった写真らしい。
    せっかくだから真ん中に飾ってみたものの、いくら花が散ってるからって、この写真見ながらは宴会できない。
    花がない。華はあるけど。どうせなら20才くらいの女性の写真のがよかったくらい。
    そして、おっさんといえばいきなり手品道具買わない?簡単だよ?と営業にかけてきたおっちゃん。
    さすが上野公園。東京最後の良心だ。

    で、何だっけ?
    あーはっかいさんの話だった。
    ここ3日くらいの合計睡眠時間が3時間くらいでアレだったけど。
    テンカウント ジェネレータというProxyを作ってました。
    正確には作ってあって、tiniyURL対応と画像入れ替えの機能とRSS Feed配信を始めました。
    あーあとM字開脚も対応しました。Tバックの対応は考え中です。
    なんか、これは金曜日の段階で皆飽きちゃってると思うから、もう手入れはしないかも。

    あと、j(検閲)。

    他にはPEAN(Plagger EntryFullText Archive Network)のアイディアを出してみたりしました。
    EntryFullTextで使われるyamlを取り扱うCPANみたいな物です。
    利点はPlaggerのコミッターでなくても気軽に登録できるから、全文取得の対応サイトが一杯増えるかもしれません。

    登録フォームにyamlをコピペしてsubmitするだけでテストを走らせて登録する感じです。
    自動的にドキュメント作ったり、search.peanとかで探せるようにする幹事で。
    クライアント側のインストールもplagger -PEAN 'install module'みたいなかんじで簡単に入れられるようにしたい所。
    結構シンプルになりそうだから、Plaggerのコアいじらなくても実装できそうな感じ。


    というワケで、サイボウズラボ出ます。

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

    2006年04月15日

    サイボウズラボに入りました

    今後ともよろしくお願いします。

    Posted by Yappo at 16:24 | Comments (0) | TrackBack

    サイボウズラボ入りたい!

    強行突破

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

    2006年04月12日

    2.0成分解析 というサービスを作りました

    またまたまたまたインスパイアです。

    2.0 Generatorが登場してから
    成分解析と融合させたら面白いだろうなぁ・・・

    という夢を見ていたら正夢になったようです。
    アイディアのマッシュアップって感じでしょうか。

    2.0成分解析
    解析をしたい言葉を入れると、まず成分解析を始めます。
    成分解析をしつつ1.0と2.0の文章を作成します。
    結果的に、その言葉は1.0なのか、2.0なのかを計算して結果を表示します。

    2.0なサービスを作る時の命名ツールとしておすすめです!

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

    2006年04月02日

    あれ・・・

    ここ24時間の記憶がないや

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

    2006年04月01日

    今年のイソプレス うぉっちは最悪だ

    イソプレス うぉっちが一度出した記事のURLをこっそり書き換えやがった
    「mixxi」利用者が1億人の大台を突破、SNS初の国営化への下の関連URLがmixi.orzに変わっちゃってます。
    画像を見るとmixxi.jpになっている。

    たぶんmixxi.jpの中の人たちは猛烈に怒っているw


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

    mixiのコアモジュール(Boofy)が遂に流出

    本当にしてしまったようです。
    mixiこちらで洩れてます。

    mixiクローン量産化の時代になるのでしょうか。

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

    いま

    Larry Wallと同じ部屋でPerlのコードを書いています。

    そういえば4月になりましたね。

    Posted by Yappo at 00:10 | Comments (0) | TrackBack