html2jadeでHTMLを読みやすくする

HTML5ベースのスライドつくる場合はJadeみたいなインデントでブロックを表現するような形式のほうが見やすいし書きやすい。

html2jadeを使えば、逆にhtmlをjadeに変換して読みやすく出来るのでオススメです。

impress.jsのindex.htmlをjadeに変換してみた。読みやすい。

impress

      #bored.step.slide(data-x='-1000', data-y='-1500')
        q
          | Aren't you just
          b bored
          | with all those slides-based presentations?

      .step.slide(data-x='0', data-y='-1500')
        q
          | Don't you think that presentations given strong in modern browsers
          | shouldn't strong copy the limits
          | of 'classic' slide decks?

      .step.slide(data-x='1000', data-y='-1500')
        q
          | Would you like to strong impress your audience
          | with strong stunning visualization
          | of your talk?

      #title.step(data-x='0', data-y='0', data-scale='4')
        span.try then you should try
        h1
          | impress.js
          sup *
        span.footnote
          sup *
          | no rhyme intended

      #its.step(data-x='850', data-y='3000', data-rotate='90', data-scale='5')
        p
          | It's a
          strong presentation tool
          br
          | inspired by the idea behind
          a(href='http://prezi.com') prezi.com
          br
          | and based on the
          strong power of CSS3 transforms and transitions
          | in modern browsers.

      #big.step(data-x='3500', data-y='2100', data-rotate='180', data-scale='6')
        p
          | visualize your
          b big
          span.thoughts thoughts

      #tiny.step(data-x='2825', data-y='2325', data-z='-3000', data-rotate='300', data-scale='1')
        p
          | and
          b tiny
          | ideas

幸せな未来は「ゲーム」が創る

これは非常に興味深い本だと思う。モチベーション3.0とかゲーミフィケーションなんかはこういったことを暗に示唆しているような気がする。

ProductName 幸せな未来は「ゲーム」が創る
ジェイン・マクゴニガル
早川書房 / 2940円 ( 2011-10-07 )


「高度に発達した遊びは仕事と区別がつかない」は名言だと思っていて、僕自信はライフサイエンスの最先端の技術を社会に還元するという、いわゆる製薬業界にいるのだけど、まさにこの言葉があてはまるわけです。実際トップサイエンティストは「傍から見ていると仕事してるのか遊んでいるのかよく分からない」し、サイエンスをエンジョイしているので、こういった仕事は単なる頭脳労働ではないよなぁと思うことが多かった。

全てのゲームに共通する4つの特徴

  • ゴール
  • ルール
  • フィードバックシステム
  • 自発的な参加

ゲームをプレイするとは、取り組む必要のない障壁を、自発的に超えようとする取り組みである。

特に4番目が重要なんだと思う。

ゲームとはやりがいのあるハードな仕事

「フロー」とはチクセントミハイによって名付けられた「何かを創造的に達成することや高度な能力を発揮して満足した、爽快な感覚」のこと。

ゲームは明らかにフロー感の源であり、遊びは最高のフロー体験

内発的報酬に閑する重要な知見

人が潜在的に求めているもの

  • 満足の行く仕事
  • 成功体験、あるいは少なくとも成功への希望
  • 社会的なつながり
  • 「意味」や自分自身よりもなにか大きなものの一部になる機会

sofなんかはいい例だと思うね。さらにsofクローンをイントラに入れる事自体もハードな仕事で、安定したコミュニティを生成するというゲームになるので、あれあこれやとトライアンドエラーを繰り返しながら進めることが結構楽しかったりする(今やってる最中)。

支援者の誇り

「ナヘツ」とはイディッシュ語の単語で、自分が何かを教えたり、アドバイスしたりした相手が成功を収めたときに感じる誇らしい感情を意味する言葉です

これもsofで得られますね

第二部は現実を作り変えるという題で、代替現実(ARG)の話題だった。

  • アンビエントなアバターのフィードバックは効果が高い
  • 「フォースクエア」の前提は、より多く外出し、より多くの時間を友人と直接会って過ごしたら私たちはより幸せになれるというシンプルなもの
  • 「地元選出議員の経費を調べよう」というプレイ
  • オンラインゲームや、フェイスブックのような「遊び心のある」ソーシャルネットワークは外発的報酬をもっとも安定的に与えてくれます
  • ウィキペディアはMMORPG

仙禽と鳳凰美田

年末に飲んだ酒

1327663244

鳳凰美田のひやがかなり良かった。

1327663251

仙禽はちょっと飲み飽きたかな。今回のはちょい華やかすぎた。

1327663253

恋する非同期プログラム

去年、恋するプログラムをJavascriptで書いていこうとしたんだけど、Canvasとかわからなくて4章くらいで放置してた。

その間にHTML Canvas読んだり、Node.jsもわかってきたので再開しようかなと。vowsも使ってみたいし。

で、このやつをCoffeeScriptに書きなおした

class Responder
 constructor: (@name) ->
 response: (input) -> input + 'ってなに?'

class Unmo
 constructor: (@name) ->
   @responder = new Responder('what')
   @responder_name = @responder.name
 dialogue: (input) -> @responder.response(input)

u = new Unmo('proto')
console.log(u.dialogue('マックロシーベルト'))

動かしてみる

$ coffee test.coffee 
マックロシーベルトってなに?

ProductName 恋するプログラム―Rubyでつくる人工無脳
秋山 智俊
毎日コミュニケーションズ / ?円 ( 2005-04 )


vowsはCoffeeScriptでテストができる

CoffeeScriptでテストをできるライブラリを探していたらvowsで出来ることを知った。

vows = require 'vows'
assert = require 'assert'

vows
  .describe('Division by zero')
  .addBatch
    'when dividing a number by zero':
      topic: -> 42/ 0

      'we get Infinity': (topic) ->
        assert.equal topic, Infinity

    'but when dividing zero by zero':
      topic: -> 0 / 0

      'we get a value which':
        'is not a number': (topic) ->
          assert.isNaN topic

        'is not equal to itself': (topic) -> 
          assert.notEqual topic, topic

  .export(module)

これをvows --specすると

vows

かなり良い感じですね。

頭のいい人が変えた10の世界

中学生向けに書かれた本かな。内容はわかりやすく書かれているけど浅かった。

被災地支援×超高速アルゴリズム取引×電子書籍×スマートテレビ×ぶつからない自動車×斬新な広告

IOTの話が一番面白かった。燃料で動くものはネットで繋がってオオイナルモノの一部になるのかな。

それからe-ラーニングも広がるんでしょう。

労働者になるための教養としての教育をわざわざ塾でお金を払って獲得するのは馬鹿らしいから、こういうのはe-ラーニングとか併用してコストは限りなく下がっていくんだろうなぁ。学びというのは社会デザインであって、ルーチンワークに投入するための画一的な教育っていうのは終わりに向かっているんだろうなぁと思うけど。

プログラミング業界で盛んな勉強会的なものっていうのを社会のデザインと考えれば、自発的なコミュニティが義務教育を超えたところにできる可能性は大いにあるわけで、知識を詰め込んで個々人の脳にグーグルの劣化版を作るみたいな教育をどこまで許容するかとかそういうことなのかなぁと思った。

40歳からの都会2田舎8の生活術

仕事は後から考えようっていうのはリスキー。あと田舎の風習に馴染めんのかっていう。当たり前のことが書いてあった。

田舎に住んでいるのでどうでもいいが、これ以上の田舎はちと困るね。

土地探し

  • 地目が山林、原野で畑を耕せる
  • 電気、水、ガス、電話が確保できる
  • 不便ではないが、ちょっと離れている
  • 安い

今借りている家庭菜園の規約が変わって、最長ニ年で再抽選になったのでちょっと困った。前のひとが何植えたかわかんないから豆類とかの間隔開けないといけない作物が植えにくくなるよねー。

マイ畑が欲しいなぁ。

Joose(Javascript版のMoose)

sof見てたら見つけた。

名前からして、MooseのJavascript版ですね。マニュアルはあるけど、モダンPerl入門でperlのサンプルから理解する方がいいような気がする。

ProductName モダンPerl入門 (CodeZine BOOKS)
牧 大輔
翔泳社 / 2940円 ( 2009-02-10 )


買ったまま放置してあるMOPの本も読まなければいけない。

ProductName The Art of the Metabobject Protocol
Gregor Kiczales
The MIT Press / 4007円 ( 1991-07-30 )


ExpressのスケルトンをCoffeeScriptに変換する

sof見てたら「xxx.jsっていうjavascriptをCoffeeScriptにしたいんだけど」「js2coffee使え」っていう問答があったので、使ってみた。

$ npm install -g js2coffee
$ express testapp
$ cd testapp
$  js2coffee app.js

で、無事に変換された

app = module.exports = express.createServer()
app.configure ->
  app.set "views", __dirname + "/views"
  app.set "view engine", "jade"
  app.use express.bodyParser()
  app.use express.methodOverride()
  app.use app.router
  app.use express.static(__dirname + "/public")

app.configure "development", ->
  app.use express.errorHandler(
    dumpExceptions: true
    showStack: true
  )

app.configure "production", ->
  app.use express.errorHandler()

app.get "/", routes.index
app.listen 3000
console.log "Express server listening on port %d in %s mode", app.address().port, app.settings.env

となると、srcフォルダを掘ってそこに.coffeeを入れて、libにコンパイルしたjavascriptを生成するようなCakefieを書けばいいような気がするが、nodeunitのテスト入れたいばあいどうすればいいのかな?

perlみたいに

$ cake
$ cake test

ってやれればいいんだが。

CoffeeScript自体のソースコードを読むのがいい気がしているが、他にベストプラクティス的なものはあるんだろうか?

Basic Category Theory for Computer Scientists

薄いわりにはなかなか読み進めることができないのは、数学的な素養が足りないからか。とhakellの型情報と突き合わせながら読んでいるが、何度も読みなおす本になりそう。

ProductName Basic Category Theory for Computer Scientists (Foundations of Computing)
Benjamin C. Pierce
The MIT Press / 2164円 ( 1991-08-07 )


わからないところがあれば検索して周辺情報を探しながら読んでるが、自分自身を出力するプログラムの後半のFunctorの説明がわかりやすかった。定義5もしっくりきた。T2 -> Tのμってjoin(concat)のことか。

他にはThe Typeclassopediaを読みなおしてみたけど、発見が色々あって得るものが多かった。これも何度か読みなおすことになりそう。

他に関数型プログラマのためのモナド理論ってのも読んだけど、これはちと難しかった。圏論の本を読んでおくべきなのだろうけど日本語の本でヨサゲなのはないだろうか。

ProductName Real World Haskell―実戦で学ぶ関数型言語プログラミング
Bryan O'Sullivan
オライリージャパン / 3990円 ( 2009-10-26 )