2011年01月28日

FizzBuzz最短回答 もしくは Yahoo!Japan 入社課題提出エントリ

FizzBuzz問題程度30byte以内で解かないと、今時はYahoo!Japanすら満足に入社できないそうなので、課題提出しておきます。

皆さんご存知の通りPerlを使えば1byteもコードを書かずにFizzBuzz問題が解けてしまいます。
今日現在のバージョンのPerlでは、何かしらの方法でAcme::FizzBuzzモジュールをインストールします。奇遇にも最近新しいバージョンが出ました
インストールしたら、今度は

export PERL5OPT="-MAcme::FizzBuzz"
としておまじないをかけます(bash shellの時)。他の環境でのおまじないについてはTAKESAKO @ Yet another Cybozu Labs: FizzBuzz - Golf Challengeを参考にして下さい。

準備が整ったら0バイトのコードを用意してPerlで処理します。
今回はエディタ起動するのが面倒なのでechoコマンドで代用です。

echo '' | perl

なんということでしょう。30byte未満でFizzBuzzのコードが書けてしまいました。

Perlが駄目なら

やふーの事ですからPerlがだめっていうかもしれません!
そうだったらシェルすくりぷとで30byte未満で書く方法を実装しました!

curl http://bp.to/yahoo.txt
27byteで問題解けましたね!

...

マジレスすると、途方も無い苦労をかけてAcme::FizzBuzzをPerlに標準で添付されるモジュールにしてしまえば

use Acme::FizzBuzz
という18byteのコードで本当に実現してしまうんですけどねー

あーFizzBuzz最短問題飽きたわーーー2年前に飽きたわーーーー

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

2011年01月27日

iPhone で position:fixed な UIToolBar を簡単に作る jquery.mobile.iscroll.js を作った

iPhoneのWebサイトを作っていて、良くあるアプリの上と下の position:fixed なメニューを実装しようとした時に、iScrollを使えばわりかし楽に実装出来ます。

jQuery mobile (1.0a2) を使ってると header/footer 要素に data-position="fixed" を書いておけばそれっぽい動きになるんですが、スクロールイベントを受け取るたびにレンダリングしなおす挙動なんで、とてもかっこ悪いです。

かといって iPhone とかでは position:fixed 使えないんで iScroll さんの出番となるわけです。

iScroll さんは header, contents, footer という配置にしてて contents さんを overflow:hidden して touchstart event を良い感じにして position:fixed っぽくしてるわけですね。

そんな事で jQuery mobile 使ってる時に iScroll を簡単に適用するラッパーを書きました。
https://github.com/yappo/jquery.mobile.iscroll

使い方はとても簡単で JavaScript のコードは一切要りません。
jQuery mobile のお作法の <div data-role="page" > してる要素に data-iscroll="enabel" を追加して、そのなかの <div data-role="content"> 直下に <div data-iscroll="scroller"> 要素を追加して、今まで data-role="content" の中に入れてた要素を data-iscroll="scroller" の中に入れるだけです。

詳細はデモページや以下のコードを参照下さい。

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

2011年01月24日

iPhone とかの フリックで操作するカルーセル UI を jQuery mobile で作ってる話 (jquery.mobile.carousel)

AppStoreとかで、アプリのキャプチャを複数表示したい時にカルーセルなインタフェース(これのAPIの名前わからん)にして画面の高さを節約する事をすると思うんですが、それをjQuery mobileで再現するプラグインを書いてみました。

全画面で画像をプレビューする用途で作ってあります。ポイントは、AppStoreの画面キャプチャ見るやつと同等の動きをするって所です。
画像サイズも画面サイズに合わせて自動的にリサイズして、良い感じに自動的に配置するという。
画面の恥じっこに引っ張ったときの跳ねっ返りも再現してあります。
ぼくAndroidもってないので、Androidな人に是非とも添削して欲しいです。それかAndroid端末下さい。

コードはいつも通りgithubに置いてあります。
https://github.com/yappo/javascript-jquery.mobile.carousel

使い方

カルーセル化したい画像の一覧を<UL><LI></LI></UL>のような感じで作って

$("UL").mobile_carousel();
の用にするだけで使えるようになります。

実際のサンプルはこっちにおいてみたのでiPhoneとかからお試しください。

付属のサンプルコードは以下の通り。

iPhoneのhome画面みたいなのを作りたいとかそういう要望が合った場合には、コードが煩雑にならないならjquery.mobile.carouselに取り込む。そうじゃなければ分離って方針にしようとおもいます。

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

2011年01月13日

Pikubo の写真投稿をリアルタイムで通知する Pikubo Growler 書いたよ

こっちが本題なんだけど、わざわざブラウザ開いて Pikuboream とか見てるのだるいんで AnySan と Cocoa::Growl つかって pikubo に写真投稿した tweet があったらリアルタイムに growl で表示するやつ書いたし。

https://github.com/yappo/p5-AnySan/blob/master/eg/pikubo-growler.pl

Growl の通知アイコンに撮影した写真を設定して、 growl をクリックすると URL をブラウザで開いてくれる優れもの。growlを見るだけでどんな写真がうpされてるかわかっちゃう。
System Perl に依存して、必要なモジュールを全部詰め込んで PikuboGrowler.app として、出したかったけど全自動で consumer_key とか token を取る方法が良くわからないのでおあずけ中。
FriendFeed に pikubo.me な tweet を全部流してそっちを見ればいいのかなx。。。

コードは以下の感じ。単純ですね!

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

Pikubo をだら見できる「Pikuboream」を設置してみた

昼、Twitterを見てたら、とある友達がInstagramのだら見サイトを作って公開しているのを発見しました。

ちょろっと見たら、 TwitterのAPIを使った「それのプロキシ経由的な」APIを使って構築しているみたいです。 以下がその解説。

で、友達が作ったInstaStreamではInstagramはでるけど、 Twitterで言う#pikuboがないのがちょっと物足りない気がしました。 そのようなものは、InstagramのAPIでも派生APIでもどうしても取れないみたいです。 そこで、Twitter Search APIから最新のPikuboの個別エントリーpermalinkを取得する方法を試してみた人がいました。 どうも「Twitterに投稿されたPikuboの写真」のみ!ならば、public_timeline的なものは (こぼしがあるかも知れませんが)取れる模様です。

てなわけで、そのコピペ結果からPikuboのタイムラインをだら見する (ただしそこに出てくる写真はTwitterに関連づけられたもののみ!) というサイトを作った人は何秒で改変したのかわからないけど2秒くらいでさくっと設置してみました。 名前は「Pikuboream」です。

Pikuboream - Pikubo photo stream

Pikuboの最新の写真がとにかくだらだら流れます。 よかったら見てみてください!

PCからひたすら閲覧しにくいPikuboなんで、評判が良ければ機能を追加していきたいと思います。 まぁPikuboさんから怒られたらやめますけど! ということでよろしく!

参考文献: パクリブログ管理人( @partnerzu )の開き直り (/togetter.com/li/88486)

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

2011年01月06日

Groonga for Perl Project

表題の通り Groonga さんの Perl バインディングかき始めてます。
Groonga とは senna の後継検索エンジンで、サーバとかついてるんですが Groonga for Perl では libgroonga のバインディングを作ってく感じになるので、 Groonga のサーバとか叩くような物は提供しません。

https://github.com/yappo/p5-Groongaでやってます。

libgroonga を直接叩く事によって Groonga の Ruby バインディングで提供されてるような特定のキーワードに対してマークアップするフィルタのような事も簡単に作れます。

rroonga での tag_keys を Perl に移植すると以下のような感じになります。

Groonga に対する入出力はバイトストリームにする感じです。
ノーマライズ処理がまだうまく動いてないどうすればいいんだroge.

ちなみに、まだパトリシアトライを弄る部分しか実装されてないので、他の機能が欲しいと言う方は是非パッチ送って下さい。

大昔に Rast の Perl バインディング書いてた時は、 XS 書くのが辛かったんですが今だと Module::Install::XSUtil やら XS::Object::Magic のお陰でめちゃんこ楽に書けるようになってますね。

数少ない優良なバインディング案件ですので、皆さん是非開発に参加してください。

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