# Gemfile:
group :development do
  gem 'erb2haml'
end
% rake haml:convert_erbs
Looking for ERB files to convert to Haml...
Converting: app/views/layouts/application.html.erb... Done!
Converting: app/views/devise/unlocks/new.html.erb... Done!
Converting: app/views/devise/sessions/new.html.erb... Done!
Converting: app/views/devise/registrations/new.html.erb... Done!
Converting: app/views/devise/registrations/edit.html.erb... Done!
Converting: app/views/devise/passwords/new.html.erb... Done!
Converting: app/views/devise/passwords/edit.html.erb... Done!
Converting: app/views/devise/mailer/unlock_instructions.html.erb... Done!
Converting: app/views/devise/mailer/reset_password_instructions.html.erb... Done!
Converting: app/views/devise/mailer/confirmation_instructions.html.erb... Done!
Converting: app/views/devise/confirmations/new.html.erb... Done!

deviseのhaml/slim対応は本体から消えたっぽいのでこっちがいいかも。application.html.erbも変換してくれるし。

先日、@jishihaさんが来たときに、手土産と言って僕が実験してた怖い話プレーヤー(Webアプリ)をTitaniumでiPhoneアプリ化して持ってきてくれた。

photo

スゲー、何かちゃんとしたアプリみたいだ。

プラスアルファで面白かったのが、アプリなのでネットが使えない場面もあるハズなんですが、その時にこのアプリを起動すると・・・

photo

本来はネガティブなイメージのエラーを逆にコンテンツに活かす。頭柔らかいすねw。

怖い話のサイトだからバグも霊障とか呼び方を変えれば全く問題ないのかも知れないですね。

2chや携帯サイトによくある怖い話をもっと怖い感じで見れないかということで怖い話プレーヤーの実験。

iOS Simulator - iPhone / iOS 4.3 (8F192)

八尺様 - 怖い話

機能

  • 画面をタップ/クリックすると怖いテキストが表示されます。
  • 怖いBGMが流れます。
  • 怖い背景が表示されます。

Chrome最新、Firefox 4, iOS 4.3.2(iPhone 3GS), Android 2.3.4(Nexus S)で確認していますが他の環境で動いた・動かない等、気が向いたら教えていただけると嬉しいです。

先日の飲み会で話した自分のフィードやTwitterなどの情報収集スタイルについて。

ストック(貯めこむ)情報とフロー(流れる)情報の2種類に分ける。

ストック情報

僕にとってのストック情報とは未読既読を管理し、全て読むタイプの情報です。Googleリーダー(フィードリーダー)とEchofon(Twitterクライアント)で管理します。

フロー情報

僕にとってのフロー情報とは、はてブとHacker Newsです。時間が開いたとき適当に読みます。息抜きと自分のフィルターをなるべく通してない情報を得るためです。

フィードリーダーの使い方

Twitterなどの手軽な発信手段が増えたので色んな人の書くブログエントリーは全体的に量は減っていますが質は上がってると思います。

月に1エントリーの頻度で書く人を100人購読しても大した負担にならないのでなるべく沢山の人を見つけたいと思っています。読みきれないフィードは購読しません。

Twitterの使い方

fav(favorite)リストを作ってそれを全て読みます。Echofonは起動してない時間の投稿を省略するといった取りこぼしが無いので全部読めます。mentions, DM, fav以外は読みません。

仙人について

時々、自分でもどうやってたどり着いたのかわからないような、マイナーなブログで恐ろしく質が高く貴重なエントリーを書いている人がいます(僕個人に物凄くフィットした情報を書いている)。

エントリー頻度はそれ程高くないけど、時々、お金を払っても得られないような情報や専門分野の秘密の奥義をタダで公開してくれる。そんな人が気まぐれに書くエントリーは絶対に見逃してはいけない(フロー情報として扱ってはいけない)。

そういうフィードはお宝です。そういう人は中国の秦の時代、漢の成立に尽力した張良に六韜を授けたとされる黄石公のような仙人です。

「5日後の朝ここに来い」

と言われたら夜明け前からスタンバってないといけません。そんなことはなかなかできませんし、仙人と会えることもまれです。

しかしGoogleリーダーやEchofonを使えば中国全ての山の麓でスタンバってることもできるのです。100人の仙人から学ぶことができます。これを100人仙人状態といいます。

自分だけのポートフォリオを組む

取得すべき情報は個人によってまったく違います。自分にとっての仙人をみつけたら大切に自分の情報源ポートフォリオに組み込みましょう。読みきれるフィード量には限界があります。日々良いフィードを探し、悪いフィードを外しましょう。磨き上げられたフィード集は将来にわたってあなたのとても心強い見方になるでしょう。

iPhone 3GSからNexus Sに乗り換えてみました。

home

乗り換えといっても、iPhoneでもWebアプリばっかり使ってたのであんまり大きく変わった感じは無いです。一応IDEOSも以前買って持ってたんですが、やっぱりメインで使わないとユーザーの気持ちになれないですね。

乗り換えてNexus Sだけで生活するようになったらとても愛着が湧いてきました。iPhoneに比べてマーケットの野放図な感じ、カオス感がとても面白いです。唯一嫌だったのはiPhoneではしょっちゅう使ってたInstagramが無いことです。似たサービスはあると思いますが、「あ〜Instagramでフォローしてた人達と断絶しちゃったな・・・」って感じが残念。

逆に良いところもありました。買い替えの目的にもなってたテザリングはやっぱり便利だし、学怖もできるしな・・・。

kowabana

新堂さん「スポーツ(とAndroid)はいいぞ」

PayPal Express Checkout, Subscriptions - Tokyo PayPal Developers Group - Ninjava

このたびPayPal APIを使った開発の情報を共有するためのMeetupを開催することになりました。それに従い有志によるTokyo PayPal Developers Groupを立ち上げたいと思います。このグループの目的はPayPalを使った開発のベストプラクティスを共有することです。

スピーカー

天野武。ペイパルジャパン株式会社 インテグレーションマネージャー。PayPal APIの紹介(日本語)と質問タイム(日本語・英語どちらでもOK)。

真武信和(@nov)。PayPalエクスプレスチェックアウトAPIのためのRuby Gem paypal-expressの作者。paypal-expressを使って英語学習サービスiKnow!の実装を行った。(日本語)

PayPalエクスプレスチェックアウトとサブスクリプションについてのMeetupを開催することになりました。同時にTokyo PayPal Developers Groupを立ち上げます。

GW中の一日、FJORDmobaleanとハッカソン的なことをやった時に@mreinschさんにPayPalのRailsでの実装について教わってたんですが、やっぱり実装してる人と話すとすごく勉強になりました。Webにイマイチわかりやすい情報が無いんですよね。

「PayPal勉強会あったら超行きたい。そんでpaypal-express@novさんとかが話してくれたら最高なのになー。」

とか言ってたら、@mreinschさんが実現してくれちゃって、僕も主に日本語方面でお手伝いさせてもらうことになりました。(上記の文とか)

日本語・英語どちらでもいいのでLTも募集しています。@komagataとかに連絡いただけるとありがたいです。

外人比率高めですが、日本語が通じる場になってるはずなので、これからWebで稼いでいきたい人には超オススメです。

ProxyLocal

ProxyLocal could proxy your local web-server and make it publicly available over the internet.

ローカルのWebサーバーに他人にちょっとアクセスして欲しい時(何かの実験中とか)に便利なgem。

# app.rb:
require 'rubygems'
require 'sinatra'

get '/' do
  ' ┐(´ー`)┌'
end

こういう糞アプリがあったとして、まずローカルで立ち上げる。

% ruby app.rb 
== Sinatra/1.2.6 has taken the stage on 4567 for development with backup from Thin
>> Thin web server (v1.2.11 codename Bat-Shit Crazy)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:4567, CTRL+C to stop

でproxylocalをインストールして立ち上げると・・・

% gem install proxylocal
% proxylocal 4567 --host unk
Local server on port 4567 is now publicly available via:
http://unk.t.proxylocal.com/

http://unk.t.proxylocal.com/

xxx.t.proxylocal.comでアクセス出来るようになる。このぐらいの気軽さで外からアクセスさせることができると嬉しい。

殆ど同じと言って良いくらい使い勝手がHerokuと似ているPaaSのDuostackでもLokkaが動くようになりました。

% gem install duostack
% git clone git://github.com/komagata/lokka.git
% lokka
% duostack create foobarbuz
% git push duostack master
% open http://foobarbuz.duostack.net

Duostackでも動くようにしたと言っても実際は2行足しただけだった。

# Gemfile
group :production do	
   gem 'dm-postgres-adapter', '1.1.0'	
+  gem 'dm-mysql-adapter', '1.1.0'	
end
# config.yml
production:
-  dsn: <%= ENV['DATABASE_URL'] %>
+  dsn: <%= ENV['DATABASE_URL'] || ENV['DUOSTACK_DB_MYSQL'] %>
development:
   dsn: sqlite3://<%= root %>/db/development.sqlite3

Commit f62862d491e5b2dce9afde9c82e6e2c7640ac60f to komagata/lokka - GitHub

これはcoolだ。

HerokuではpostgresだけどDuostackではmysqlで動きます。

% git push heroku master
% git push duostack master

こんな感じで同じローカルリポジトリで二つのPaaSを使い分けるという荒業も出来る。両方AWSベースらしいから障害耐性という面では意味無いけど。

datamapper(dm-core) 1.1.0では0.10.0からdeprecatedになっていた明示的なINの利用が出来なくなりました。明示的なINと暗黙的なINって何なのかというと下記の様な違いです。

# implicit
Foo.all(:id.in => [1, 2, 3])

# explicit
Foo.all(:id => [1, 2, 3])

対象がArrayだと自動的にINになるんですね。1.0.2で使ってたけどdeprecatedの表示は出てなかった気がするけどなあ。ヤラレタ。

つい先日、LokkaにもCI環境が整ったのでデグレしないようにテスト駆動バグ修正していくことにしました。

RuntimeError - explicit use of 'in' operator is deprecated - Issues - komagata/lokka - GitHub

$ gem install cmdline-fu
% cmdline-fu matching ssh               
# Copy ssh keys to user@host to enable password-less ssh logins.
$ssh-copy-id user@host

# start a tunnel from some machine's port 80 to your local post 2001
ssh -N -L2001:localhost:80 somemachine

# output your microphone to a remote computer's speaker
dd if=/dev/dsp | ssh -c arcfour -C username@host dd of=/dev/dsp

# Mount folder/filesystem through SSH
sshfs name@server:/path/to/folder /path/to/mount/point

サイトの方ちゃんと見に行ってみると、「こっちのがいいだろう」とか「それ動かなくね?」とかツッコミが多いので常用するワンライナーを探してる場合はちゃんと見た方がいいかも。