2010年12月31日金曜日

『IT業界の人とかが麻婆豆腐の作り方を学ぶ会』のふりかえり

今更ながら
のふりかえり。
次回も同様のイベントがあると思うので、今回の経験を活かすためにも年内にやっちまいます。

KPT

  1. Keep:  
    1. 名古屋東生涯学習センター 料理室 が素晴らしい。
      1. 料金:午後5時から午後9時までの使用料が3000円。10人で割れば300円。安い!
      2. 設備:冷蔵庫・ガスコンロ・調理器具一式(包丁・まな板・鍋・ボウル・ざる・菜ばしなどなど)・食器類一式が揃っています。
        持ち込みが必要なのは、台拭きや食器拭き、食器用洗剤ぐらい。
        前にはホワイトボードもあるので、色々書き出したり出来ますぞ。
      3. 立地:バロー車道店が歩いて5分ほどなので買出しに便利。あと近くの加納商店で安くお米も買えます!
      4. 注意点としては、料理室内はスリッパに履き替える、ゴミは持ち帰り、(揚げ物等で使う大量の)油はそのまま流しには捨ててはダメ、というぐらい。
    2. チームを分ける。
      1. 「辛いもの好き度」で複数チームに分けました。棲み分け出来て良かったと思います。
    3. 前半後半に分ける。
      1. 全チームが同時に麻婆豆腐を作り始めるとカオスになると思ったので、前半チームと後半チームに分けました。
        前半後半に分けても、結構ばたばたしていましたが、分けずにいるよりは随分とマシだったかと。
    4. 使い切れないものは買わずに持ち込む。
      1. 醤油・洗剤・台拭き等は六郎さんに持ってきて頂きました。持ち込まれる方には参加費値下げor余った食材の進呈でリターン。
  2. Problem
    1. チーム内での計画作りをきっちり行うべき。
      1. チーム分けは行ったものの、チーム内での人数の把握(→割り振られる食材の量=リソースに影響)、担当作業の割り振りがきっちりされていなかったので、料理を始めた途端ばたばたしていた印象。
    2. 食材が余った。
      1. 食材は前の講師テーブルに置いておき、チームの人が好きな量を持って行くという形式でした。遠慮するチームが多かったのか、食材が結構余ってしまいました。(豆腐2丁とネギ1本、その他色々)
    3. ふりかえりをきっちりやれば良かったなぁ。
      1. 今このふりかえりを書きながら、終わった後のふりかえりを皆できっちりとやればもっと様々な視点が得られた&創発できたかと。
    4. 立ちっぱなしで疲れた。
      1. 4時間たちっぱなしでへろへろになりました。
  3. Try
    1. チーム内での計画作りの時間を設ける。
      1. 料理着手前に、計画づくりの時間を設ける。
        「美味しい麻婆豆腐を楽しく作るためにはどうすれば良いか?」というお題を提供すると良いかも。
        余裕をもって料理に取り組むことにつながれば、と思います。
    2. 食材は余らせない。
      1. チーム内の人数が決まったら、主催側から食材を配給するやり方もあり。
    3. 休憩時間or場所を設ける。
      1. 料理室には椅子があるので、休憩時間や休憩スペースを作れば良かったなぁ。
    4. ふりかえりはきっちりとやる。
      1. 片付けが終わった後に、ふりかえりをやる。
        名古屋アジャイル形式で、付箋に書き出してやれば、もっとカイゼンのアイデアが出たり、気づきが得られたと思います。次回はきっちりとやりたいです。
        ちなみにふりかえりが疎かになった個人的な理由は、疲れていて早く切り上げたかったからでした・・・。次回は料理中も休憩して体力を温存しつつ、ふりかえりの時も椅子に座って落ち着いて取り組む、ということをやりたいです。

その他

この会以降、自分で料理する時の麻婆豆腐登場回数が格段にあがりました。麻婆豆腐美味しいです! TwitterのTLを見ていても、参加者の方が麻婆豆腐を作られる頻度が上がったような・・・?


次回の料理イベント

さて、料理イベントの次回の開催時期やテーマは未定ですが、
今のところ餃子が有力です。
・怪しい具を入れる「闇餃子」
・1つだけデスソースを入れる「ロシアン餃子」
という色々な楽しみ方ができますね。


2010年12月13日月曜日

SBTでLiftを扱う。(Scala 2.8.0、Lift2.2)

正直下記リンク参照です。

http://www.assembla.com/wiki/show/liftweb/USING_sbt


There is an example Lift SBT prototype for the current release that you can clone from GitHub instead of following the steps below.
There is also a SBT prototype for version 2.2 which uses Scala 2.8.0

あと、Scala 2.8で2.2-SNAPSHOTを取ってくる時は下記に注意です。
For Scala 2.8 projects use 2.2-SNAPSHOT, change lift-archetype-basic to lift-archetype-basic_2.8.0, and follow the 2.2 jar naming convention described below


修正したもの。

mvn archetype:generate -U \
   -DarchetypeGroupId=net.liftweb \
   -DarchetypeArtifactId=lift-archetype-basic_2.8.0 \
   -DarchetypeVersion=2.2-SNAPSHOT \
   -DarchetypeRepository=http://scala-tools.org/repo-snapshots \
   -DremoteRepositories=http://scala-tools.org/repo-snapshots \
   -DgroupId=your.group.id -DartifactId=projectName

2010年12月11日土曜日

"Introduction to Category Theory in Scala"をなんとなく訳す。

Heiko Seebergerさんの"Introduction to Category Theory in Scala"をなんとなく訳す。
細かい部分は訳していなかったりする。
http://hseeberger.wordpress.com/2010/11/25/introduction-to-category-theory-in-scala/


圏論入門 in Scala

もしあなたがJava開発者で私のようにScalaのファンであるならば、
あなたは遅かれ早かれmonadやfunctor、その他の圏論の領域に由来するミステリーに
遭遇するだろう。
あなたがこれらに熟知しているのであれば時間を無駄にせずに進んで欲しい。
しかしそうでないならば、抽象的な数学とコンピュータサイエンスの橋渡しとなる
秘密の領域を知る私の努力を反映したちょっとした観光にご招待したい。

このブログポストは入門として書いている。私の健康(書いている間、私の頭が爆発するんじゃないかと思った)、私の将来の時間の余裕(理解するのにとても時間がかかるので)、そしてあなたのフィードバックによっては、この続きを書こうと思う。だが今はとにかく始めよう。


圏とは何か?

    圏論について話す時に、まずこれが最初の質問になるだろう。私の意見では圏の概念はプログラミングにはそこまで有用ではない。ここでは包括的な回答を載せる:


    圏は、オブジェクトと、オブジェクトとオブジェクトの間のマップ(別名:モーフィズム、もしくはアロー)で形成される。マップはマップはassociative fashionで合成されることがあり、それぞれのオブジェクトにはアイデンティティマップを持つ。


    オブジェクトは何であっても良いが、今回は単純なケースを見ていこう:圏は有限の集合とする。下記の図は、2つの有限の集合と、ソース(別名:ドメイン)からターゲット(別名:コドメイン)へのマップを表している。


    ※訳注:図は省略。

    ・carnivore:肉食動物

    ・herbivore:草食動物



    やや形式的に表現すると、ドメインAとコドメインBについてのマップをこのように表現する。


    f:A→B


    では合成とは何だろう?次の図を見て欲しい。ここでは、別の有限な集合と別のマップを追加している。食性があなたの知っているものと異なっていることは気にしないで欲しい。
新しい集合をCと呼び、新しいマップをg:B→Cと呼ぼう。明らかに、AからCへたどり着くには、まずfを経由し次にgを進めば良い。従って、私たちはfとgを合成して新しいマップ:

    g ο f: A → C

を得た。

さて合成を知ったところで、associativityとidentityについて話をしよう。別のマップh:C → Dを加えよう。
associativityの法則は、下記が真であることを要求する。

    (h ο g) ο f = h ο (g ο f)

associativityは数字の加算か乗算を考えると分かり易いだろう。
identityの法則に進もう。
これは、圏におけるそれぞれのオブジェクトXについて、下記を満たすidentityマップ1X: X → X が存在することを要求している。

        * f ο 1A = f
        * 1B ο f = f

次の図は、私たちの例で用いる有限の集合におけるアイデンティティマップを表している。明らかにアイデンティティマップにとっては、ドメインとコドメインは同じオブジェクトである。
これが圏である。オブジェクト、マップ、合成、associativityとidentity。圏論について深く学びたいのであれば、Wikipedia か “Conceptual Mathematics” by Lawvere and Schanuel をお勧めする。それではScalaの観点から圏を見ていこう。


続きはいつか書く。

2010年9月15日水曜日

sbtでliftを始めるための設定。

sbtでliftを始めるにはどうしたら良いのかなー、依存関係はどう設定するのかなーと探していたら
dppのブログにまんまな記述が。

http://wiki.github.com/dpp/liftweb/about-sbt-with-or-instead-of-maven

import sbt._

class YourProject(info: ProjectInfo) extends DefaultWebProject(info) {
  // comment out if you're not also using maven
  val mavenLocal = "Local Maven Repository" at "file://"+Path.userHome+"/.m2/repository"
  
  val liftVersion = "2.0-M2"

  override def libraryDependencies = Set(
    "net.liftweb" % "lift-webkit" % liftVersion % "compile->default",
    "net.liftweb" % "lift-mapper" % liftVersion % "compile->default",
    "org.mortbay.jetty" % "jetty" % "6.1.22" % "test->default",
    "com.h2database" % "h2" % "1.2.121",
    "junit" % "junit" % "4.5" % "test->default",
    "org.scala-tools.testing" % "specs" % "1.6.1" % "test->default",
    "org.slf4j" % "slf4j-log4j12" % "1.4.1"
  ) ++ super.libraryDependencies

  // required because Ivy doesn't pull repositories from poms
  // comment out if you're not also using maven
  val smackRepo = "m2-repository-smack" at "http://maven.reucon.com/public"

}

2010年8月11日水曜日

SoftbankでもらったfonのMyPlaceにPC接続するのに苦労した。

HTC Desire契約とともにSoftbankでもらったfon。
これの"MyPlace"(セキュアな接続ができるやつ)にPCを接続するのに苦労したのでメモ。


正直この方法で誰でもうまくいくのかはわかりませんが、参考になれば幸い。

環境:
・PC:Windows XP SP3
・ISP:Yahoo!BB
・fon型番:FON2405E


手順は大体下記の通り。
http://www.fon.ne.jp/faq/questions/75/MyPlase%E3%81%B8%E3%81%AE%E6%8E%A5%E7%B6%9A%E6%96%B9%E6%B3%95



でもうまくいかなかったのでこんなことを試してみた。

  1. PCと fonを直接LANケーブルでつなぐ。
  2. ブラウザから管理サイトにつなぐ。
    http://192.168.10.1/
  3. ログインする。(パスワードのデフォルトはadminです)
  4. コンボボックスから「Wifi」を選択。
  5. SSIDを”MyPlace”から任意のものに変更。あとパスワードも適当に変更。完了ボタンをクリック。
  6. コンボボックスから「システム」を選択。
  7. 「再起動」ボタンをクリック。

しばらくしてから上記で変更したSSIDに接続、上記で変更したパスワードで接続すると接続できました。