When it’s ready.

出来るまで出来ない

コンタクト歴20年が進める今時のコンタクト

たまたま渋谷に行って駅前で配られてたコンタクトのチラシにつられて駅チカの眼科に行ってみたら、見たこと無いコンタクトが売ってた。コンタクト歴20年以上な気がするが、ココ何年もワンデーモイチャ1択で、たまに度数見直しするくらいで銘柄が変わることがなかった。(厳密に言うと新しいの試すんだけど即戻る、モイスチャ最強!みたいな)それが今回は次回からも銘柄変更にし続けるであろうコンタクトを見つけたので、是非紹介したい。

クーパービジョン社の"ワンデーアクエア プロシー”ってやつ

2005年からコンタクト事業を開始したらしいので結構新しめのブランドなのかな?
とにかく付けてみた瞬間から違いがわかる。今までのやつもフィットするはフィットするけど、コンタクト入ってマス感はそれなりにする。でもPRO-Cはヒュチャッて感じで馴染みが良い。入れた瞬間から即なじむ。例えが難しいが、今までのが伸縮性のあまりない靴下を履いてる感じで、履いた直後に違和感があるがしばらくすると馴染む感じ。新しいのは程良い伸縮性があって足を入れた瞬間にピタっと馴染む感じ。

しかも、乾きにくいし乾いたかも知れないなぁと思ってもあくび一発で即ウルウルに戻る感じ。これはすごい。今まで4.0の強度だったけど今回度数見直しで3.25に弱くした。装着感と度数と関係なさそうだけど、この度数でも全然問題ない。そろそろ使い捨てコンタクトを買い足す人がいたらPRO-C試してみてもいいかも知れないです。オススメ。

OSXのGTalkクライアントソフトないの? あるよ(にたようなの)

Adiumとか、IMのハブ的なアプリは昔からありますが、なぜか私の環境だと接続状態が安定せずに上がったり落ちたり上がったり落ちたりを繰り返す症状がでて使っていませんでした。どうせGmailのタブを開いているのでキャッチは出来るのですが、別タブ逝ったりするとややめんどくさいなぁと感じること多々。

さっき見つけたのですが、ChromeのエクステンションでGtalkが出てました。
https://chrome.google.com/webstore/detail/nckgahadagoaajjgafhacjanaoiihapd?hl=ja

コレ入れるとユーザーリストもチャットパネルも別ウィンドウで出してくれます。GmailのタブなくてもいけるのでChrome上がってればいつでもソク行けます。いつの間にログインしたのかわからないですが、ミニマルデザインが気に入りました。オススメ。

ちょいとめんどくさい話、テレビの3C

"テレビ 3C”で検索しても、ケーブルの太さの話しか出て来ませんがココでは

  • コンベヤ
  • コンテナ
  • コンテンツ

の話です。この3Cに関しては、数カ月毎に浮上するネタですがそろそろテレビに関してもより具体的なエントリーが上がってきてもいい頃。テレビ業界とは全く無縁な立場ですが、思うところ有りです。なんとなく最近、IP界隈でテレビもネットで行けるじゃん的な話があるのです。概ね同意なのですが、ポッカリと抜けている所がある気がしているのです。コンベア部分の実行性が先行していて、コンテンツ、金流や労働力、国際競争力などの話があまり出てきていない気がするのは、私の観測範囲の偏りのせいでしょうか。そういう話も聞いてみたいです。

3Cの定義

ココで言う3Cを定義します。人それぞれ解釈粒度が違うのでどれが正解というわけではないですが・・・

  • コンベア= 電波・帯域・ブラウザ・規格
  • コンテナ= 番組・編成(広義で局という枠)
  • コンテンツ= バラエティ・情報・報道・スポーツ

コンベアは言うまでもなく、実際ユーザーが手に目にする部分とそれを配信する術です。電波経由で、テレビ受像機で視聴するのが一般的です。ARIB標準規格に沿ってOAされています。BMLなど新しいのか枯れているのかよく分からない規格もあります。その他、IP経由もコンベアになりえます。特に日本はモバイルでも数Mbpsの帯域が低料金で利用できる帯域ジャブジャブ国家です。紙媒体のみでなく、何十倍も巨大な動画もそれなりにユーザーのもとに届けるハードルはかなり低いです。

コンテナとは、番組でそれを束ねたものが編成、それを計画するのは局です。そのすべてをコンテナとします。現在テレビと言うと、電波経由で放送されています。紙媒体とテレビ(OA分)のコンテナでの決定的な違いは、パイが決まっているかどうかです。紙媒体のものは、1社の中で発行誌の種類を増やすことでコンテナを増やす事が可能ですがテレビ放送の場合は、24時間に番組がマッピングされる為、電波経由である以上コンテナの増産は困難です。しかし、IP経由であればこの限りではありません。

コンテンツは、番組を構成するネタ・情報です。報道系で扱う政治や経済、スポーツ系が扱うオリンピックや野球、バラエティー系が扱うクイズやお笑い。ひとえにテレビといっても扱う商品としては様々なコンテンツがあります。テレビ放送は、このコンテンツがコアコンピタンスでありそれをいかに届けるのかといった部分は周辺技術になります。

実現可能性と実行可能性は違う

youtubeやニコ動も、HTML5化されてPCでもモバイルでも動画を視聴できるからテレビじゃなくていいね。という話があるような内容な気がします。コンベア部分はIPやブラウザ等で置き換え可能だとして、編成は自分で好きなものを好きなときに見れるからこの様な話が出てきていると思うのです。これは、3Cの半分位が実行可能だということです。技術的に実行可能であっても、経済的に政治的にバランスが取れていないと実現されません。例えが悪いですが、512MBのPCにWindows7がインストールできるということと、実際に使うかどうかは別ということです。天気予報や為替情報、地震速報に政治取材、これらにどれだけの人間とお金がかかっているのか想像しただけでもすごいコストが必要なことが分かります。それらの情報(コンテンツ)がどのような金流によって支えられているのか? もしくは、そんな情報いらないとして、日常からそれらの情報が消えたとしたら我々の生活にどのような影響があるのでしょうか?3Cの頭からつま先まですべてつながって実現するので、一部可能だから全部取り替えられるというのは誤解なきがする。

** 発展持続性・違法性のない競争
ココまで書いて疲れたので、まとめは後日

PySpa集合写真 笑顔100%

Flickrに半分のサイズでアップしてたので、集合写真をDropboxに上げてみた。
http://dl.dropbox.com/u/71789/pyspa/IMG_4063.JPG

みんなメチャ笑顔、太陽向きで眩しいというのがあるかも知れないけど
自然とみんな笑顔になってるのは素晴らしいと思った。

例えば何か仕事があって2泊して最後解散する直前に写真撮ったとしたら
こんな顔になるんだろうか?にしても、いい笑顔

Python温泉 #10 ファイナル

Youtube APIとOpenCVだらだら触った2日間だった。

OpenCV2.3.1aとPythonの組み合わせの資料が少なくて思いの外時間を食った。
ジェスチャーまで行けなかったけど、顔切り出しまでのコード

OpenCVをインストール

Brewで2.3台が入るのでそれを利用させてもらった

brew install opencv

Python ソース

#!/usr/bin/env python
#coding:utf-8

import sys
import cv

def detect(image):
  image_size = cv.GetSize(image)

  # create grayscale version
  grayscale = cv.CreateImage(image_size, 8, 1)
  cv.CvtColor(image, grayscale, cv.CV_BGR2GRAY)

  # create storage
  storage = cv.CreateMemStorage(0)

  # equalize histogram
  cv.EqualizeHist(grayscale, grayscale)

  # detect objects
  cascade = cv.Load('haarcascade_frontalface_alt.xml')#, (1, 1))
  faces = cv.HaarDetectObjects(grayscale, cascade, storage, 1.2, 2, cv.CV_HAAR_DO_CANNY_PRUNING, (50, 50))

  if faces:
    for ((x,  y,  w,  h),  n) in faces:
      print "posX, Y, N : ", x, y, n
      print "Width, Height : ", w, h
      cv.Rectangle(image, ( int(x), int(y)),
                   (int(x + w), int(y + h)),
                   cv.RGB(0, 255, 0), 3, 8, 0)
  return faces


if __name__ == "__main__":
  print "Press ESC to exit ..."

  # create windows
  cv.NamedWindow('Camera', cv.CV_WINDOW_AUTOSIZE)

  # create capture device
  device = 0
  capture = cv.CreateCameraCapture(0)
  cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_WIDTH, 640)
  cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_HEIGHT, 480)

  # check if capture device is OK
  if not capture:
    print "Error opening capture device"
    sys.exit(1)

  while 1:
    frame = cv.QueryFrame(capture)
    if frame is None:
        break

    # mirror
    cv.Flip(frame, None, 1)

    # face detection
    faces = detect(frame)

    if len(faces)>0:
      frame = cv.GetSubRect(frame,  faces[0][0])


    # display webcam image
    cv.ShowImage('Camera', frame)

    # handle events
    k = cv.WaitKey(10)

    if k == 0x1b: # ESC
      print 'ESC pressed. Exiting ...'
      break

顔だけ抜き出して、表示する。顔がないとカメラ全体を表示する。
朝までに、複数顔対応したい。

クロームレス Youtubeプレーヤー

http://youtube.atu.si/
コントロールを表示させないプレーヤーを生成して、外部からボタン等でコントールする。

<script type="text/javascript">

var params = { allowScriptAccess: "always" };
var req_urls = "http://www.youtube.com/apiplayer?enablejsapi=1&version=3&wmode=transparent&video_id="
var atts = { id: "myytplayer" };
var win_width = window.innerWidth * 0.8;
var win_height = window.innerHeight * 0.8;
swfobject.embedSWF(req_urls + "xLYiIBCN9ec&playerapiid=ytplayer",
    "ytapiplayer", ""+win_width, ""+win_height,  "9",  null,  null,  params,  atts);

function onYouTubePlayerReady(playerId) {
  ytplayer = document.getElementById("myytplayer");
}

function play() {
  if (ytplayer) {
    ytplayer.playVideo();
  }
}

function stop() {
  if (ytplayer) {
    ytplayer.stopVideo();
  }
}

</script>


Python温泉は、今回の10回をもって終了らしい。
ここでの出会いと、経験はとても貴重でユニークなモノだった。
毎回まとめてくれたV、クマ。そして参加者の皆様、有り難うございました。
( 写真アップしました )
またいつか近いうちによろしくお願いします。

次は忘年会かな?

今更だけど、vimrc 久しぶりに加速度アップなコンフィグに出会った

vimrcメンテしてますかぁ?
プラグインの追加しかしてなかった最近ですが、基本的なコンフィグ変えてみたら想像以上に快適になる設定見つけたので紹介します。vimでUSキーの人限定ネタです。

ノーマルモード時のセミコロンをコロンに変えるだけ

noremap ; :
noremap : ;

たったこれだけです。てか滅茶苦茶楽です。USキーの人なら大抵経験があるであろう保存時に

:W

と入力してしまい。

E492: Not an editor command: W

と怒られること山の如しあるんじゃないでしょか?;と:を入れ替えることでそんなエラーともおさらばです。
JIS配列の人はこんなに楽して保存してたのか!思いました。お暇な人は騙されたと思ってやってみてください。

2時間もしないで、指が新しい保存方法覚えました。インサートモード時には一切影響が無いので
ノーマルモード時にセミコロンを大量に打つ人以外はやっちゃってもいい気がします。

GDD2011 JPに参加した

年に一度のGoogleJapanの最大のイベント「Googleデベロッパーデー 2011」に参加しています。
どのセッションも見たいものばかりですが、体は一つなので泣く泣く1つ選んで聞いたものをエントリーします。
他のセッションも、きっと誰かがエントリーしてくれているでしょう・・・見たいぉ
Liveで書き込んでいるので、多分に漏れ・間違いがある可能性があります。あらかじめご了承下さい。

ウェブアプリのマネタイズ方法 @Peng Ying @302

Webを作成した後、その後のステップをどのようにやってメークマネーするのかお伝えします。

現在であればWebAppStoreがあるので、それを利用することでユーザーにリーチできます。

  • WebStoreに載せるためには、$5払うだけで載せることができます。
  • 売り切りも、サブスクリプションも、アプリ内課金が出来ます
  • 色々な規制も無いので使いやすいよ

ではどうやって作っていくのか?紹介して行きましょう

manifestファイルを作成します
  1. app, permissions, name, description, versionの各項目を設定します。
  2. アイコンの画像を作成します、16^2, 128^2 px
  3. ScreenShotを作成する 400x275(この他にもビデオとか説明画像を添付できます)
  4. アップロードします(マニフェストとIconをZipしたもの)
  5. アップ後に、追加したり編集したりできます
  6. カテゴリーを設定
  7. 金額を設定する

ここ半年の統計では、フリーミアムモデルのモデルのほうがDLが盛んに行われるようになってる

Googleプラットフォーム上でinAppPaymentが出来るようになりました。
これを利用するデベロッパーのメリット

  • 手数料は5%です。
  • カード情報やユーザー情報はプラットフォーム側で管理
  • シンプルAPIが利用可能
  • 大量のユーザーが既にいる

ユーザー(購入)側のメリット

  • 1つのアカウントだけで色々購入できる

Google Chromeの Tip アンド トリックス @agektmr @502

今回は、聞かないようなるツールを紹介できればと思います。>DevTool自体がWebアプリです。
目次

  • CSS とデザイン
  • ネットワークとのやり取り
  • コンソール
  • スクリプトのデバッグ

CSSをいろいろエディターでいじるるよ、セレクタ追加したり別途保存出来たりするぉ

ネットワークとのやり取り

Timeline:ネットワークとレンダリングの情報を表示する

コンソールAPI

console.log だけじゃないよ。他にも便利なのあるよ。
dom要素を詰め込むこともできるよ> console.log(document.body)

コマンドラインAPIと互換性があるよ。FFでも、IEでも使えるから覚えておいて損はないよ

dir(document.body) とやると、JSのオブジェクトで取得できるよ。
inspect(document.querySelector[''])でも抜けるよ

$0で、現在DevToolで選択しているDOM要素が抜けるよ

copy($0.innerHTML)で、選択してるDOM要素をOSのクリップボードにコピーするよ

スクリプトのデバッグ

監視したい要素に対して、右クリからサブツリーに対してブレークポイントを作成
監視対象に変更が発生すると、ブレークしてJSをステップ実行する事ができる。(>コレハスゲー)

特定イベントだけで選択いてブレークポイント仕込むには、DevToolのElementの最下部のパネルから指定する

DevToolから、JSをオンライン編集できるのでその場でconsole.log等を追加して、特定変数を見ることが出来るよ

再読み込み不要の継続開発ができるよ!

デベロッパーなら、devチャンネルかカナリーを使うべき、もし先立ってBugを見つけた場合には率先して
new.crbug.com にアクセスをして登録して下さい。バグだけではなくて、機能リクエストも受付中なので
新規登録して下さい。

OAuth と OpenID @502

様々なWebサービスで同一のID、Passwd使ってないですか? 危ないですよね。かと言って

OAuth2.0: Roles
  • クライアント
  • リソースサーバー
  • プロテクテッドリソース
  • オーソライゼーションサーバー
  • リソースオーナー

クライアントは、リソースサーバー内のプロクテッドリソースにアクセスしたい。

クライアントタイプとして、スタンドアロンソフトや少ない回数のアプリの場合

  1. client_id
  2. redirect_uri
  3. scope
  4. response_type>Token

を指定してオーソライゼションサーバーにアクセスする。
オーソライゼーションサーバーは、Tokenをクライアントに返す

Tokenの寿命ないであれば、クライアントは自由にプロテクテッドリソースにアクセスできる。

Tokenの仕込み先
  • HTTP headerに仕込む(これがオススメ)
  • GET paramに仕込む
  • ペイロードに仕込む

セキュアなウェブアプリ、重たい処理が発生するアプリ、長時間アクセスしたいとき

  1. client_id
  2. redirect_uri
  3. scope
  4. response_type>code

を指定してオーソライゼションサーバーにアクセスする。
オーソライゼーションサーバーは、authorization_codeをクライアントに返す
ココでもらったコードを元に、access_tokenを取得する。
Googleの場合、3920の寿命。それ以降は、リフレッシュトークンして再発行をリクエストする)

OAuth2.0 のメリット

利用者サイド

  • 安全にデータをアクセスさせられる
  • ID.Passwdは重要なことを告知できる
  • アプリ毎にアクセス可能範囲をコントロールできる

開発者サイド

  • IDとPasswdをサービス毎に保存管理から解放される
  • 業界標準

OpenID Connect for フェデレーション について

OpenIDは、OAuth2.0ベースで作られてるのでとってもシンプルになって使いやすいぉ

ユーザーメリット

  • ID,Passwdをサービス毎に作らなくてよくなる
  • 新規にサービスを使いやすくなる(新規登録要らなくなる)


開発者メリット

  • IDとPasswdをサービス毎に保存管理から解放される
  • シビアなデータ管理しなくていい
  • 新規アカウント獲得しやすくなる

今後は、Account Chooser な方向?(accountchooser.com)

  1. シンプルにアカウント管理できる
  2. 簡単にアカウント切り替えができる(1台のPCを複数人で共有しててもOK)

Google Identity Tool Kitを使えば簡単にあなたのサービスに組み込むことが出来る。

  1. コンソールで生成されるJSをHTMLにコピペする
  2. 多少サーバー側にコードを書き足す(簡単だぉ)

Keynote