wingsさんが作成した「WINGSプロジェクト」パッケージ

説明: WINGSプロジェクト執筆メンバのブログまとめ
パッケージは、友だちが手動で選択した特定のトピックやテーマに関するブログやウェブサイトの集まりです。Google リーダーに登録すると、それらすべての更新状況を 1 か所で把握できます。
このパッケージには
26 件のフィード
が含まれています
  • Chica's Blog
  • IIJIMASが勉強しようとしています。
  • まさるblog
  • ふじこのため息 v3
  • 寝ても覚めても.NET(?)
  • ナオキにASP.NET(仮)
  • Azureの小ネタ
  • あおきのTechメモ
  • asaにっき
  • bird982000の日記
  • なお記
  • 昨日とは違う今日この頃
  • ゆろよろ日記
  • 恵比寿で働く社長のアメブロ
  • Ouobpo
  • かるあ のメモ
  • かるあのメモ on Wordpress
  • まつぼ x Web
  • IT起業日記@吉祥寺 DESKPLATE
  • しまじろうの日記
  • 蒼の王座
  • be free
  • Serendipity 2 / future lies'n sundome.
  • 時空システムパートナー合同会社
  • Processtune Blog
  • Inquisitor
登録するにはログインしてください

ソース: be free TAKANO Sho 12/02/03

これは、削除されなかった仮の記事です。この記事を手動で削除してください。(a45bda84-c347-47ed-99df-fe1730e928ac – 3bfe001a-32de-4114-a6b4-4005b770f6d7)


ソース: ゆろよろ日記 yuroyoro 12/02/02

こんにちわ。今日は、関数合成の話をします。


標準入力から何行か読み込んで、ソートして返す以下のようなScalaのコードを例にします。

例なので、あえて冗長なコードを書いてます。


このコードでは、4つの関数が用意されています(unlines/putstr/sort/lines)。

この4つの関数を組み合わせて、読み込んだ文字列を行に分解して、ソートして、

また改行コードをつけて文字列にもどして表示、ということをやっています。


object Main extends App {
  val in = scala.io.Source.stdin.getLines.mkString("\n")

  // 改行をつけて結合する関数
  val unlines = (s:Seq[String]) => s.mkString("\n")

  // 文字列を表示する関数
  val putStr = (s:String) => println(s)

  // ソートする関数
  val sort = (s:Seq[String]) => s.sorted

  // 文字列を改行コードで分割する関数
  val lines = (s:String) => s.lines.toSeq

  // かっこがいっぱい……。
  putStr( unlines( sort( lines(in))))
}

問題は、最後の行です。


  // かっこがいっぱい……。
  putStr( unlines( sort( lines(in))))

このカッコを無くすことが、今回のテーマです。


合成しなイカ

数学の授業で習った、合成関数を思い出してみましょう。


(g ∘ f)(x) = g(f(x))


関数gと関数fの合成関数g ∘ fに引数xを渡した結果は、関数gにf(x)の結果を渡したものと等しい、と言うことです。


先ほどのコードの例に戻りましょう。関数gをputStr, fをunlines(...)に置き換えると


(putStr ∘ unlines)(sort(lines(in)) = putStr( unlines( sort( lines(in))))


となります。この調子で、sortやlinesも合成していくと、このように変形できます。


(putStr ∘ unlines ∘ sort ∘ line)(in)


さて、Scalaにおける関数の合成は、Function1トレイトにcomposeというメソッドとして定義されています。これを利用すると、


(putStr compose unlines compose sort compose lines)(in)

このようになりました。カッコが減っていますね。

読みにくくなイカ?!


composeを使って関数を合成できることが分かりましたが、そもそもcomposeって長いのでもうヤ。


そこで、Groovyのように<<で関数を合成できるようにします。Function1に対して、このようなimplicit conversionを

定義します。


  trait ComposableFunction1[-T1, +R]  {
    val f: T1 => R
    def >>[A](g:R => A):T1 => A = f andThen g
    def <<[A](g:A => T1):A => R = f compose g
  }

  implicit def toComposableFunction1[T1, R](func:T1 => R) =
    new ComposableFunction1[T1, R]{ val f = func }

その結果、先ほどのcomposeは<<で置換できるので、


(putStr << unlines << sort << lines)(in)

おー、だいぶシンプルになったじゃなイカ!


適用しなイカ?!


まだちょっと不満な点があります。それは、(合成関数)(引数)のように、まだカッコが残っているからです。


「全てのカッコを、書かれる前に消し去りたい。全てのコード、過去と未来の全てのカッコを、この手で…!」



そこで、composeに<<という別名を付けたように、関数適用applyにも別名を付けます。ここでは、<*>をapplyの別名として、

先ほど用意したimplicit conversionで変換されるComposableFunction1に追加します。


  trait ComposableFunction1[-T1, +R]  {
    val f: T1 => R
    def >>[A](g:R => A):T1 => A = f andThen g
    def <<[A](g:A => T1):A => R = f compose g

    // applyの別名
    def <*>(v:T1) = f apply(v)
  }

さぁ、さっきのコードを変形してみようじゃなイカ?

putStr << unlines << sort << lines <*> in

やったー、カッコが消えたよ!!。


さて、これをもう少し推し進めると、Applicativeスタイルになるんじゃなイカ?と思ったのですが、今回はここまで。


ちなみにHaskellでは

import List

main = do cs <- getContents
          sorting cs

sorting :: String -> IO ()
sorting cs = putStr (unlines (sort (lines cs)))


sorting :: String -> IO ()
sorting cs = putStr $ unlines $ sort $ lines cs

こうなって


sorting :: String -> IO ()
sorting = putStr . unlines . sort . lines

こうなります。

ソース: ゆろよろ日記 yuroyoro 12/02/02

こんにちわ。今日は、関数合成の話をします。


標準入力から何行か読み込んで、ソートして返す以下のようなScalaのコードを例にします。

例なので、あえて冗長なコードを書いてます。


このコードでは、4つの関数が用意されています(unlines/putstr/sort/lines)。

この4つの関数を組み合わせて、読み込んだ文字列を行に分解して、ソートして、

また改行コードをつけて文字列にもどして表示、ということをやっています。


object Main extends App {
  val in = scala.io.Source.stdin.getLines.mkString("\n")

  // 改行をつけて結合する関数
  val unlines = (s:Seq[String]) => s.mkString("\n")

  // 文字列を表示する関数
  val putStr = (s:String) => println(s)

  // ソートする関数
  val sort = (s:Seq[String]) => s.sorted

  // 文字列を改行コードで分割する関数
  val lines = (s:String) => s.lines.toSeq

  // かっこがいっぱい……。
  putStr( unlines( sort( lines(in))))
}

問題は、最後の行です。


  // かっこがいっぱい……。
  putStr( unlines( sort( lines(in))))

このカッコを無くすことが、今回のテーマです。


合成しなイカ

数学の授業で習った、合成関数を思い出してみましょう。


(g ∘ f)(x) = g(f(x))


関数gと関数fの合成関数g ∘ fに引数xを渡した結果は、関数gにf(x)の結果を渡したものと等しい、と言うことです。


先ほどのコードの例に戻りましょう。関数gをputStr, fをunlines(...)に置き換えると


(putStr ∘ unlines)(sort(lines(in)) = putStr( unlines( sort( lines(in))))


となります。この調子で、sortやlinesも合成していくと、このように変形できます。


(putStr ∘ unlines ∘ sort ∘ line)(in)


さて、Scalaにおける関数の合成は、Function1トレイトにcomposeというメソッドとして定義されています。これを利用すると、


(putStr compose unlines compose sort compose lines)(in)

このようになりました。カッコが減っていますね。

読みにくくなイカ?!


composeを使って関数を合成できることが分かりましたが、そもそもcomposeって長いのでもうヤ。


そこで、Groovyのように<<で関数を合成できるようにします。Function1に対して、このようなimplicit conversionを

定義します。


  trait ComposableFunction1[-T1, +R]  {
    val f: T1 => R
    def >>[A](g:R => A):T1 => A = f andThen g
    def <<[A](g:A => T1):A => R = f compose g
  }

  implicit def toComposableFunction1[T1, R](func:T1 => R) =
    new ComposableFunction1[T1, R]{ val f = func }

その結果、先ほどのcomposeは<<で置換できるので、


(putStr << unlines << sort << lines)(in)

おー、だいぶシンプルになったじゃなイカ!


適用しなイカ?!


まだちょっと不満な点があります。それは、(合成関数)(引数)のように、まだカッコが残っているからです。


「全てのカッコを、書かれる前に消し去りたい。全てのコード、過去と未来の全てのカッコを、この手で…!」



そこで、composeに<<という別名を付けたように、関数適用applyにも別名を付けます。ここでは、<*>をapplyの別名として、

先ほど用意したimplicit conversionで変換されるComposableFunction1に追加します。


  trait ComposableFunction1[-T1, +R]  {
    val f: T1 => R
    def >>[A](g:R => A):T1 => A = f andThen g
    def <<[A](g:A => T1):A => R = f compose g

    // applyの別名
    def <*>(v:T1) = f apply(v)
  }

さぁ、さっきのコードを変形してみようじゃなイカ?

putStr << unlines << sort << lines <*> in

やったー、カッコが消えたよ!!。


さて、これをもう少し推し進めると、Applicativeスタイルになるんじゃなイカ?と思ったのですが、今回はここまで。


ちなみにHaskellでは

import List

main = do cs <- getContents
          sorting cs

sorting :: String -> IO ()
sorting cs = putStr (unlines (sort (lines cs)))


sorting :: String -> IO ()
sorting cs = putStr $ unlines $ sort $ lines cs


こうなって


>|haskell|
sorting :: String -> IO ()
sorting = putStr . unlines . sort . lines

こうなります。

ソース: ゆろよろ日記 yuroyoro 12/02/02

こんにちわ。今日は、関数合成の話をします。


標準入力から何行か読み込んで、ソートして返す以下のようなScalaのコードを例にします。

例なので、あえて冗長なコードを書いてます。


このコードでは、4つの関数が用意されています(unlines/putstr/sort/lines)。

この4つの関数を組み合わせて、読み込んだ文字列を行に分解して、ソートして、

また改行コードをつけて文字列にもどして表示、ということをやっています。


object Main extends App {
  val in = scala.io.Source.stdin.getLines.mkString("\n")

  // 改行をつけて結合する関数
  val unlines = (s:Seq[String]) => s.mkString("\n")

  // 文字列を表示する関数
  val putStr = (s:String) => println(s)

  // ソートする関数
  val sort = (s:Seq[String]) => s.sorted

  // 文字列を改行コードで分割する関数
  val lines = (s:String) => s.lines.toSeq

  // かっこがいっぱい……。
  putStr( unlines( sort( lines(in))))
}

問題は、最後の行です。


  // かっこがいっぱい……。
  putStr( unlines( sort( lines(in))))

このカッコを無くすことが、今回のテーマです。


合成しなイカ

数学の授業で習った、合成関数を思い出してみましょう。


(g ∘ f)(x) = g(f(x))


関数gと関数fの合成関数g ∘ fに引数xを渡した結果は、関数gにf(x)の結果を渡したものと等しい、と言うことです。


先ほどのコードの例に戻りましょう。関数gをputStr, fをunlines(...)に置き換えると


(putStr ∘ unlines)(sort(lines(in)) = putStr( unlines( sort( lines(in))))


となります。この調子で、sortやlinesも合成していくと、このように変形できます。


(putStr ∘ unlines ∘ sort ∘ line)(in)


さて、Scalaにおける関数の合成は、http://www.scala-lang.org/api/current/scala/Function1.html:Function1トレイト]にcomposeというメソッドとして定義されています。これを利用すると、


(putStr compose unlines compose sort compose lines)(in)

このようになりました。カッコが減っていますね。

読みにくくなイカ?!


composeを使って関数を合成できることが分かりましたが、そもそもcomposeって長いのでもうヤ。


そこで、Groovyのように<<で関数を合成できるようにします。Function1に対して、このようなimplicit conversionを

定義します。


  trait ComposableFunction1[-T1, +R]  {
    val f: T1 => R
    def >>[A](g:R => A):T1 => A = f andThen g
    def <<[A](g:A => T1):A => R = f compose g
  }

  implicit def toComposableFunction1[T1, R](func:T1 => R) =
    new ComposableFunction1[T1, R]{ val f = func }

その結果、先ほどのcomposeは<<で置換できるので、


(putStr << unlines << sort << lines)(in)

おー、だいぶシンプルになったじゃなイカ!


適用しなイカ?!


まだちょっと不満な点があります。それは、(合成関数)(引数)のように、まだカッコが残っているからです。


「全てのカッコを、書かれる前に消し去りたい。全てのコード、過去と未来の全てのカッコを、この手で…!」



そこで、composeに<<という別名を付けたように、関数適用applyにも別名を付けます。ここでは、<*>をapplyの別名として、

先ほど用意したimplicit conversionで変換されるComposableFunction1に追加します。


  trait ComposableFunction1[-T1, +R]  {
    val f: T1 => R
    def >>[A](g:R => A):T1 => A = f andThen g
    def <<[A](g:A => T1):A => R = f compose g

    // applyの別名
    def <*>(v:T1) = f apply(v)
  }

さぁ、さっきのコードを変形してみようじゃなイカ?

putStr << unlines << sort << lines <*> in

やったー、カッコが消えたよ!!。


さて、これをもう少し推し進めると、Applicativeスタイルになるんじゃなイカ?と思ったのですが、今回はここまで。


ちなみにHaskellでは

import List

main = do cs <- getContents
          sorting cs

sorting :: String -> IO ()
sorting cs = putStr (unlines (sort (lines cs)))


sorting :: String -> IO ()
sorting cs = putStr $ unlines $ sort $ lines cs


こうなって


>|haskell|
sorting :: String -> IO ()
sorting = putStr . unlines . sort . lines

こうなります。

ソース: ゆろよろ日記 yuroyoro 12/02/02

こんにちわ。今日は、関数合成の話をします。


標準入力から何行か読み込んで、ソートして返す以下のようなScalaのコードを例にします。

例なので、あえて冗長なコードを書いてます。


このコードでは、4つの関数が用意されています(unlines/putstr/sort/lines)。

この4つの関数を組み合わせて、読み込んだ文字列を行に分解して、ソートして、

また改行コードをつけて文字列にもどして表示、ということをやっています。


object Main extends App {
  val in = scala.io.Source.stdin.getLines.mkString("\n")

  // 改行をつけて結合する関数
  val unlines = (s:Seq[String]) => s.mkString("\n")

  // 文字列を表示する関数
  val putStr = (s:String) => println(s)

  // ソートする関数
  val sort = (s:Seq[String]) => s.sorted

  // 文字列を改行コードで分割する関数
  val lines = (s:String) => s.lines.toSeq

  // かっこがいっぱい……。
  putStr( unlines( sort( lines(in))))
}

問題は、最後の行です。


  // かっこがいっぱい……。
  putStr( unlines( sort( lines(in))))

このカッコを無くすことが、今回のテーマです。


合成しなイカ

数学の授業で習った、合成関数を思い出してみましょう。


(g ∘ f)(x) = g(f(x))


関数gと関数fの合成関数g ∘ fに引数xを渡した結果は、関数gにf(x)の結果を渡したものと等しい、と言うことです。


先ほどのコードの例に戻りましょう。関数gをputStr, fをunlines(...)に置き換えると


(putStr ∘ unlines)(sort(lines(in)) = putStr( unlines( sort( lines(in))))


となります。この調子で、sortやlinesも合成していくと、このように変形できます。


(putStr ∘ unlines ∘ sort ∘ line)(in)


さて、Scalaにおける関数の合成は、http://www.scala-lang.org/api/current/scala/Function1.html:Function1トレイト]にcomposeというメソッドとして定義されています。これを利用すると、


(putStr compose unlines compose sort compose lines)(in)

このようになりました。カッコが減っていますね。

読みにくくなイカ?!


composeを使って関数を合成できることが分かりましたが、そもそもcomposeって長いのでもうヤ。


そこで、Groovyのように<%lt;で関数を合成できるようにします。Function1に対して、このようなimplicit conversionを

定義します。


  trait ComposableFunction1[-T1, +R]  {
    val f: T1 => R
    def >>[A](g:R => A):T1 => A = f andThen g
    def <<[A](g:A => T1):A => R = f compose g
  }

  implicit def toComposableFunction1[T1, R](func:T1 => R) =
    new ComposableFunction1[T1, R]{ val f = func }

その結果、先ほどのcomposeは$lt;$lt;で置換できるので、


(putStr << unlines << sort << lines)(in)

おー、だいぶシンプルになったじゃなイカ!


適用しなイカ?!


まだちょっと不満な点があります。それは、(合成関数)(引数)のように、まだカッコが残っているからです。


「全てのカッコを、書かれる前に消し去りたい。全てのコード、過去と未来の全てのカッコを、この手で…!」



そこで、composeに<<という別名を付けたように、関数適用applyにも別名を付けます。ここでは、<*>をapplyの別名として、

先ほど用意したimplicit conversionで変換されるComposableFunction1に追加します。


  trait ComposableFunction1[-T1, +R]  {
    val f: T1 => R
    def >>[A](g:R => A):T1 => A = f andThen g
    def <<[A](g:A => T1):A => R = f compose g

    // applyの別名
    def <*>(v:T1) = f apply(v)
  }

さぁ、さっきのコードを変形してみようじゃなイカ?

putStr << unlines << sort << lines <*> in

やったー、カッコが消えたよ!!。


さて、これをもう少し推し進めると、Applicativeスタイルになるんじゃなイカ?と思ったのですが、今回はここまで。


ちなみにHaskellでは

import List

main = do cs <- getContents
          sorting cs

sorting :: String -> IO ()
sorting cs = putStr (unlines (sort (lines cs)))


sorting :: String -> IO ()
sorting cs = putStr $ unlines $ sort $ lines cs


こうなって


>|haskell|
sorting :: String -> IO ()
sorting = putStr . unlines . sort . lines

こうなります。

ソース: ゆろよろ日記 yuroyoro 12/02/02

こんにちわ。今日は、関数合成の話をします。


標準入力から何行か読み込んで、ソートして返す以下のようなScalaのコードを例にします。

例なので、あえて冗長なコードを書いてます。


このコードでは、4つの関数が用意されています(unlines/putstr/sort/lines)。

この4つの関数を組み合わせて、読み込んだ文字列を行に分解して、ソートして、

また改行コードをつけて文字列にもどして表示、ということをやっています。


object Main extends App {
  val in = scala.io.Source.stdin.getLines.mkString("\n")

  // 改行をつけて結合する関数
  val unlines = (s:Seq[String]) => s.mkString("\n")

  // 文字列を表示する関数
  val putStr = (s:String) => println(s)

  // ソートする関数
  val sort = (s:Seq[String]) => s.sorted

  // 文字列を改行コードで分割する関数
  val lines = (s:String) => s.lines.toSeq

  // かっこがいっぱい……。
  putStr( unlines( sort( lines(in))))
}

問題は、最後の行です。


  // かっこがいっぱい……。
  putStr( unlines( sort( lines(in))))

このカッコを無くすことが、今回のテーマです。


合成しなイカ

数学の授業で習った、合成関数を思い出してみましょう。


(g &#8728; f)(x) = g(f(x))

関数gと関数fの合成関数g ∘ fに引数xを渡した結果は、関数gにf(x)の結果を渡したものと等しい、と言うことです。


先ほどのコードの例に戻りましょう。関数gをputStr, fをunlines(...)に置き換えると


(putStr ∘ unlines)(sort(lines(in)) = putStr( unlines( sort( lines(in))))


となります。この調子で、sortやlinesも合成していくと、このように変形できます。


(putStr ∘ unlines ∘ sort ∘ line)(in)


さて、Scalaにおける関数の合成は、http://www.scala-lang.org/api/current/scala/Function1.html:Function1トレイト]にcomposeというメソッドとして定義されています。これを利用すると、


(putStr compose unlines compose sort compose lines)(in)

このようになりました。カッコが減っていますね。

読みにくくなイカ?!


composeを使って関数を合成できることが分かりましたが、そもそもcomposeって長いのでもうヤ。


そこで、Groovyのように<<で関数を合成できるようにします。Function1に対して、このようなimplicit conversionを

定義します。


  trait ComposableFunction1[-T1, +R]  {
    val f: T1 => R
    def >>[A](g:R => A):T1 => A = f andThen g
    def <<[A](g:A => T1):A => R = f compose g
  }

  implicit def toComposableFunction1[T1, R](func:T1 => R) =
    new ComposableFunction1[T1, R]{ val f = func }

その結果、先ほどのcomposeは<<で置換できるので、


(putStr << unlines << sort << lines)(in)

おー、だいぶシンプルになったじゃなイカ!


適用しなイカ?!


まだちょっと不満な点があります。それは、(合成関数)(引数)のように、まだカッコが残っているからです。


「全てのカッコを、書かれる前に消し去りたい。全てのコード、過去と未来の全てのカッコを、この手で…!」



そこで、composeに<<という別名を付けたように、関数適用applyにも別名を付けます。ここでは、<*>をapplyの別名として、

先ほど用意したimplicit conversionで変換されるComposableFunction1に追加します。


  trait ComposableFunction1[-T1, +R]  {
    val f: T1 => R
    def >>[A](g:R => A):T1 => A = f andThen g
    def <<[A](g:A => T1):A => R = f compose g

    // applyの別名
    def <*>(v:T1) = f apply(v)
  }

さぁ、さっきのコードを変形してみようじゃなイカ?

putStr << unlines << sort << lines <*> in

やったー、カッコが消えたよ!!。


さて、これをもう少し推し進めると、Applicativeスタイルになるんじゃなイカ?と思ったのですが、今回はここまで。


ちなみにHaskellでは

import List

main = do cs <- getContents
          sorting cs

sorting :: String -> IO ()
sorting cs = putStr (unlines (sort (lines cs)))


sorting :: String -> IO ()
sorting cs = putStr $ unlines $ sort $ lines cs


こうなって


>|haskell|
sorting :: String -> IO ()
sorting = putStr . unlines . sort . lines

こうなります。

ソース: なお記 naoki0311 12/02/02

まだキャンペーンモードクリアできてないんですが、今のところ楽しんで遊べてます。


これはd:id:naoki0311:20110607:1307448723で紹介したファイターズアンケージと同じKinectでプレイする格闘ゲームです。キャラクターというより、戦う力を得られるスーツを選んで戦います。ファイターズアンケージとの決定的な違いは二つ

  • アバタ―を使いアバタ―で戦える
  • 選択したスーツがそれぞれ3種類の必殺技を保有してこれを活用しなければ勝利しづらい

ファイターズアンケージの場合TPSの様な角度で操作キャラクターの顔は見えませんでした。パワーアップヒーローズはアバタ―の顔が見えます(ヘルメットもかぶれます)。スーツは多数ありますが、これらの基本攻撃はエネルギー弾と近接攻撃の2種類です。エネルギー弾を出すと必殺技を妨害でき、近接攻撃はエネルギー弾を無視して相手の懐に潜り込み攻撃できます。これらの出し方は手を前に出してパンチするとエネルギー弾、近接攻撃はキックするだけです。


さて、肝心の必殺技ですが、Kinectならではという事で、アニメや漫画で見てきたようなポーズをとれば出せます。カメハメ波、元気玉、抜刀術、鎖分銅の投げ引き付け、サッカーのシュートなどなど。最初は恥ずかしく感じるかもしれませんが、自宅でやる分には羽目を外せるのでかなり楽しく遊べます。もちろん1人ではなく複数人でも遊べるので友人・家族と遊ぶのに最適なゲームとも言えそうです。

Kinect持ちの方はプレイを検討してみてはいかがでしょうか。

パワーアップヒーローズ

パワーアップヒーローズ

ソース: Azureの小ネタ StateMachine 12/02/02
LiveWriterでつらつらと書いていたらあまりに本人にも読みづらくなってしまったため、さいど編集しなおしました。 昔のやつは消しましたw。 概要 元ネタは以下です。 ASP.NET チュートリアル http://www.asp.net/mvc/tutorials 完成サンプルなどは、http://mvcmusicstore.codeplex.com/ から 元ネタのチュートリアルの手番を多少変更してあります。

ソース: 蒼の王座 admin 12/01/31

Windows Azureの商用サービスが開始して、2周年!!

素晴らしい!
まだ、2周年なのにサービスそのものは2年間、数か月毎にどどどーーーんっと拡充し続けて、でっかくでっかくなりました。

また、Azureイメージキャラクターのクラウディアさんが、マイクロソフト公式キャラクターとして登場し、Azureの快進撃は続きますね。2月のクラウディアカレンダーが、MR.Azureで大佐の異名をもつ砂金さんのBlogで公開されていますので、ぜひ!

Claudia_2012feb_sample

 

個人的なAzureの思い出

Azureと関わり合いを持ち始めた経緯。

2009年11月ごろ ハンズオン受講

2010年1月 sqlazure.jpドメイン取得/MSに怒られると思ってました(ぇ

2011年1月 Microsoft MVP for SQL Azure 受賞

2012年1月 Microsoft MVP for SQL Azure 再受賞
共著執筆したAzure本が発売
退職

みたいな感じで、毎年1月にフラグを立てながら、Azureに関わってきました。

個人的なAzureへの感想

 

Azureを初めて、人生が変わりました。

ソース: Azureの小ネタ StateMachine 12/01/31
前回に引き続きMVC3の自習です。   Viewの追加 HomeControllerを開き、Index の辺りからコンテキストメニューを開くと、以下メニューが表示されます。[ビューの追加]を選択します。

タイトルの通りです。
自転車を漕ぐことによって発電できれば、一挙両得!

ソース: なお記 naoki0311 12/01/31

次回の第 67 回 CLR/H 勉強会は 2 月 11 日土曜日に、開催予定です。都合の付く方は是非ご参加ください。


日時・場所その他 

日時

2012/2/11 (土) 13:00 ~ 18:00(開場 13:00)


場所
マイクロソフト株式会社北海道支店 セミナールーム

(札幌市中央区北5条西2丁目JRタワーオフィスプラザさっぽろ20F アクセスマップ

参加費

500 円(会場費やお菓子代に使用させて頂きます)

懇親会参加費

勉強会後、懇親会を行う予定です。

内容

タイムテーブル(随時更新します)

 時刻  スピーカー タイトル 
 雪祭りWebスペシャルデイ
 13:00   開場
 13:30  チャック WebMatrix リリース一周年企画「WebMatrix登場の背景とASP.NET習得の最短経路を考察する」(仮)
 14:30   休憩(10分)
 14:40  @jsakamoto jQuery Mobile + PHP + MySQL + WebMatrix + ExpressWeb で作成・公開する勉強会申し込みサイト
 15:40   Lightning Talk & ハイパーおやつタイム

  - (登壇者募集中)

 ほか

 16:20  @shibayan knockout.js(仮)
 16:50   休憩(10分)
 17:00  ジニアス平井 『スマートフォンサイト構築のノウハウ』〜 ジニアス、jQuery Mobileはじめました! 〜

 18:00   後片付け
 


スピーカー紹介&セッション概要


【タイトル】

WebMatrix リリース一周年企画「WebMatrix登場の背景とASP.NET習得の最短経路を考察する」(仮)


【概要】

....


【スピーカー】

チャック

【スピーカー紹介】

...




【タイトル】

jQuery Mobile + PHP + MySQL + WebMatrix + ExpressWeb で作成・公開する勉強会申し込みサイト


【概要】

PHP と MySQL の組み合わせで、勉強会参加申し込みフォームの Web サイトを、Microsoft 提供の無償利用可能な Web アプリケーション開発ツール「WebMatrix」をフル活用して、セミライブ形式でセッション中に作成していきます。


Web ページの "顔" は jQuery Mobile を利用して作成し、スマートフォン対応に!


そしてさらに、作成した勉強会申し込み Web アプリを、ホスティングサービス "ExpressWeb" 上へ配置してインターネットへ公開してみます。


※最後にはおまけとして Excel との組合わせ技も...!


各技術や手順のこまかい説明は端折ったり別のセッションに譲ったりセッション外でフォローしますが、実践レベルでの開発の流れを体感してください。


【対象】

  • Web アプリ開発にご興味のある方
  • すでに PHP を使って Web 開発をされているが、WebMatrix の実力がいかほどのものか気になる方
  • Ruby や Java、ASP.NET などですでに Web 開発されているが、他のプラットフォームで作るとどうなるか気になる方

【スピーカー】

@jsakamoto


【スピーカー紹介】

C# + SQL Server による ASP.NET Web アプリ開発を仕事としています。

PHP と MySQL は実は初心者(!)で、今回のセッションのために勉強しました。



【タイトル】

knockout.js(仮)

【概要】

...


【スピーカー】

@shibayan


【スピーカー紹介】

...



【タイトル】

『スマートフォンサイト構築のノウハウ』〜 ジニアス、jQuery Mobileはじめました! 〜


【概要】

今回は Web デーということでジニアスはWebサイトのスマートフォン対応を取り上げます。Windows Phoneはもちろん、iPhone, Android などスマホで快適に利用できるWebサイトをHTML5, CSS3, JavaScript, jQueryなど最新テクノロジーを利用して開発する際のトピックやノウハウをデモ満載でお届けする実践的なセミナーです。


【スピーカー】

日本マイクロソフト株式会社

ジニアス平井


【スピーカー紹介】

1993年に開発言語のサポートエンジニアとしてマイクロソフトに入社。現在は SEとして開発者向けの講演活動や技術支援を行っており、全国各地に出没している。類い稀なプログラミング能力とデザインセンスを持った異色エンジニア。マイクロソフトでも1、2を争う有名講師であり、人を魅了するデモに定評あり。MS歴は長いものの権力とお金を全く持っていないという技術オタクである。



 参加申し込み
 下記申し込みフォームからどうぞ。 

 http://clrhatnd.heroku.com/

 Ustream 配信  下記URLで配信予定です。

 http://www.ustream.tv/channel/<wbr />clr-h1

オンラインアンケート

 Web上からご回答頂けるオンラインアンケートはこちら(現在は、前回、第66回勉強会のアンケートのリンクです)。

 http://goo.gl/ByOfQ

無線LAN、電源

 セッション当日は会場にて無線LANアクセスポイントを設営し、参加者の皆様にご利用頂けるようにする予定です。 また電源も利用可能です。


 過去の勉強会に関する全ての記録は、CLR/H 活動実績を御覧ください。

ソース: なお記 naoki0311 12/01/31

実は次回講師の松田君は中学校の同級生で幼馴染とも言える相手だったりします。会うのは10年以上ぶりなのでセキュリティの話は勿論色々面白い話をしたいなぁと思っていたり。以下、開催概要です。逆アセンブリとかバイナリ解析とか興味がある方はためらうことなく登録してみてください。

 

第10回北海道情報セキュリティ勉強会(せきゅぽろ)を以下のとおり開催いたします。

 

 今回はネットエージェント株式会社 研究開発部の松田 和樹さんをお招きして「OSS/Java/.NETプログラマが意識すべきバイナリ解析の素養」についてお話いただきます。

 

●プロフィール

eagle0wl(いーぐるおうる)(https://twitter.com/#!/eagle0wl

松田 和樹

ネットエージェント株式会社 研究開発部

北海道札幌市出身。せきゅぽろ代表のナオキとは中学時代の友人。その縁で参加する流れに。

共著として『クラッキングバイブル 新装版』『クラッカー・プログラム大全 新装版』(いずれもデータハウス刊)など。

 競技ヨーヨーの全国大会を開催する『日本ヨーヨー連盟』(www.jyyf.org)の設立メンバーであり、2010年12月の社団法人化まで運営理事。毎年フロリダ州で開催される世界大会『World Yo-Yo Contest』で補助スタッフを務めたことがある。

 

●概説

  「バイナリ解析」あるいは「リバースエンジニアリング」と呼ばれる技法は、情報セキュリティ技術を語る上で外すことのできないジャンルとして、ほぼ定着してきています。しかし、この技法をプロダクトやサービスとして重用できる局面は非常に限定されており、広く開放されているものとしてはCTF(Capture The Flag) を代表とするセキュリティコンテストぐらいのもので、なかなか習得する機会に恵まれないのが現状です。

 今回のセッションでは、OSS/Java/.NETプログラマを主なターゲットとして「リバースエンジニアリング」を中心とした基礎知識の解説に始まり、逆アセンブルや逆コンパイルなどから何がわかるのか、不正コピーといたちごっこの歴史、オンラインゲームのチート行為とその対策、なかなか実を結ばない「対策ソリューション」、誰でもできる前向きなリバースエンジニアリングのススメなど、バイナリ解析といった狭い用法にとらわれず、多くの事例をネタにしながら割と自由奔放に語ります。

 

 せきゅぽろ恒例のおやつタイムもありますので、おいしいおやつをいただきながらバイナリ解析について勉強しましょう。

 

 勉強会終了後には講師を囲んで懇親会を開催します。多数の皆様のご参加をお待ちしております。

 

[hashtag]: #secpolo

 

【勉強会】

 テーマ       バイナリ解析
 メインセッション  OSS/Java/.NETプログラマが意識すべきバイナリ解析の素養
 日 付  2012年3月17日(土) 
 時 間  13:30〜17:00
 会 場  月寒公民館 3F 第3研修室

(札幌市豊平区月寒中央通7丁目8-19)

 定 員  50名
 参加費  社会人:1,000円(学生、未成年:500円)
 申し込み http://tinyurl.com/7b3kas5
 注 意   ・ラフな服装での参加で構いません。

 

○申し込み状況はhttp://tinyurl.com/7nslck5 をご覧ください。

 

 

【懇親会】 調整中

 時 間 17:30〜19:30 
 会 場  (未定) 会場等調整中
 定 員  30名
参加費 社会人:3,500円(学生、未成年:3,000円)
 締 切  2012年3月13日(月)

 

前回、Perlで組んだシステムの機能追加で、MySQLから抽出したデータ一覧のソート機能を実現しましたが・・・。さらに、今度は以下のようなことを頼まれました。
1.項目をクリックすればソートできることが、ユーザにわかりにくい。
2.行が増えたときにはページング処理ができるようにしてほしい。
3.列データの文字数が多い場合は、一定文字数で切ってほしい。

さすがに、自力では難しいと感じ、検索してみたら、いいものがありました。
TinyTable JavaScript Table Sorter

[Click here for the demo]をクリックすると、上記1と2が実現できることがわかりました。
[Click here to download the source code.]をクリックすると、ソースコードがダウンロードできます。

ダウンロードしたsorter.zipを解凍すると、
1.imagesフォルダ(この中に三角マークや矢印が入っています)
2.script.jsファイル
3.script.cssファイル
4.index.htmlファイル
5.packed.jsファイル

上記のうち、実際に必要なのは、1~3のフォルダ・ファイルです。
適用させたいページを、4のファイルを参考にしてカスタマイズします。
デザインの変更が必要な場合は、3のファイルを修正します。

私の場合は、以下のようにしました。
・tableタグに、id="table" class="sortable" を追加
・項目のtr、tdタグをthead、thタグに変更して、<thead><tr><th><h3>項目名</h3></th>に変更

あとは、script.cssファイルのwidth、font-size、paddingなどを調整しました。
これで、要望の1と2はできました。

あとは、要望3の列データの文字数が多い場合は、一定文字数で切ってほしい、ですが、
これは、substr関数で一定のバイト数だけ取り出し、その文字はリンクになっていたので、aタグに、title=(全文字列)とすることで、マウスオーバー時に、全文字が表示できるようになりました。

これにて、一件落着。

ソース: be free TAKANO Sho 12/01/30

今日もまたよく降る雪だ。

積った雪を毎日のように掻き出し、押し退け、捨てる。

この繰り返し。

でも次の日にはまた同じかそれ以上に積る。

元の木阿弥。

エンドレス。

なるほど、辛抱強い県民性を生むのも無理はない。

こんなにも自分のやったことが無意味に感じられるのはなかなか無い。

しかも、雪の相手をすると体力を相当に消耗する。

体力がなければ気力も湧いてこない。

 

雪は心を削る。

 

 

 

 

とか、テキトーに書き散らかしてみた。


ソース: Azureの小ネタ StateMachine 12/01/30
ASP.NET MVC3を勉強するにあたって、メイドスキーなMVPから、MVC Music Store をお勧めいただいたので、やってみるテスト。とりあえず、内容についてはチュートリアルをおさらいすることを中心に、やりながら書き進めている都合上、理解があやふやのままに進めていきますのであしからず。   プロジェクトの作成 プロジェクトテンプレートから、ASP.NET MVC3 Webアプリケーションを選択します。

ソース: 蒼の王座 admin 12/01/27

Windows Azure上で多くのインスタンスを使用している場合、特定インスタンスで発生した問題を調査する必要がでてくるかもしれません。

直接的な方法はありませんが、すべてのインスタンスかた特定インスタンスだけをオフライン化することができます。特定インスタンスでの問題を調査するために、最初にすることはロードバランサーのネットワークからインスタンスを外して、オフラインでトラブルシューティングをします。

Azureサービス管理ポータルでは、そのような機能は提供されていません。PowerShellとWindows Azureコマンドレットをコンピュートノード上で使うことで、ロードバランサーからインスタンスを除外できます。それを使用するために、Windows Azureアプリケーションにリモートログインします。

手順

  1. オフラインにしたい特定インスタンスにリモートログインします。
  2. 管理者権限でPowerShellを起動します。
  3. 次のコマンドを実行します。
    Add-PSSnapIn Microsoft.WindowsAzure.ServiceRuntime
  4. 「R」を選択します。
  5. 次のコマンドを実行します。
    Set-RoleInstanceStatus –busy
  6. オフラインモードを維持したい場合は、PowerShellのウィンドウを閉じないでください。ウィンドウを閉じると、インスタンスは再度アクティブになります。PowerShellウィンドウには次の画像のようなメッセージが表示されます。
  7. 2~5分程度で、特定インスタンスはオフラインになります。

Windows Azure管理ポータルでのステータスは次のようになります。

確認するために、オフラインにしたの同じインスタンス上でPSコマンドを実行します。
Get-RoleInstance –Curren

PowerShellウィンドウを閉じると、特定インスタンスは2~5分程度で再び、レスポンスを返すようになります。

元情報

この投稿は、Windows Azure Troubleshooting – Taking specific Windows Azure Instance offlineをざっくりと意訳した投稿です。

ソース: Azureの小ネタ StateMachine 12/01/26
引き続き、以下の流れから診断機能の話。 Azure Diagnostics 診断機能 - Azureの小ネタ Azure Diagnostics 診断機能 その2 - Azureの小ネタ 診断機能を外部から弄くる方法はいくつかあるのですが、とりあえずプログラムで現状の設定を確認する方法など。BLOBをのぞけば設定情報が格納されているのです、それはさておき。また、Powershell Cmdletなどを使えばプログラムを書く必要もなかったり。

Perlで組んだシステムの機能追加で、MySQLから抽出したデータ一覧のソート機能の追加がほしい、と言われました。

PerlでMySQLからデータを抽出する際、SQL文に「ORDER BY フィールド名」を付ければ、もちろん可能ですけど、それではサーバに負荷がかかります。
こんな時は、抽出済みのデータの見せ方を変えるだけなので、当然クライアント側でJavaScriptを使って組むのが常道です。

理屈はわかっているのだけれど、では実際どうしたらいいかが解っていない自分に気が付きました。情けない。「基礎Perl」「JavaScript本格入門」「10日でおぼえるjQuery入門」は持っているので、復習します。

要は、<TABLE>タグで作った一覧表を、JavaScriptのDOM(Document Object Model)を使って、取り出して、ソートして、書き戻せばいいのですね。
そのためのJavaScriptをHTML内に記述してやればいいだけの話でした。

とほほさんのページが参考になりました。
ただ、私の場合は、<TD>タグの中に、<SPAN>タグや<A>タグが入っているので、そのままでは動かず、これをもとに試行錯誤中です。

結局、DOMの操作方法が問題なので、「XML辞典」も見ていますが、コーディングしながら、ここでどんなプロパティ・メソッドが使えるのか、インテリセンスの機能とか、オブジェクトブラウザ的な一覧とか、途中どのようなオブジェクトが取得できているのか、など開発環境がないと行き当たりばったりでかなり苦しいことがわかってきました。JavaScriptでは、AptanaやVisual Studioも使えるようで試してみようと思います。

とりあえず、Firefoxのアドオンである、Firebugを使ってDOMを参照しながら、いろいろやってみたところ、動くようになりました。
とほほさんのページ(http://www.tohoho-web.com/wwwxx038.htm)をベースにしましたが、以下のように修正しました。

getElementsByTagName(“*”) → getElementsByTagName(“TD”)
oTDs[nCol].firstChild.nodeValue → oTDs[nCol].innerHTML
[nColId].firstChild.nodeValue → [nColId].firstChild.firstChild.innerHTML

よかった、よかった。

ソース: inquisitor inquisitor 12/01/25

「カレシ、カレシの元カノ、カレシの元カノの元カレ・・・」というちょっと怖い広告がかつてありました。

あの広告が警告していたエイズは怖い病気ですが、もし、もっと怖い、たとえば、潜伏期間は人それぞれ、発症前に治療すれば100%治るが、発症すれば3日で死ぬ、そんな性感染症が発見されたら、すぐに検査を受けたくなりますよね。でも、(未だ収束していない)福島原発事故発生当時のような、「パニックを恐れる」エリートパニックによって、その事実が市民に知らされたときにはもう手遅れ、ということは十分あり得ます。

患者にインタビューしながら感染経路を調べて・・・なんてことをしてもやはり手遅れになるでしょう。

そこで、Facebookを使えないかなあ、とか思うわけです。Facebookでは、ユーザが自分で編集できる基本データに「恋愛ステータス」なる項目があって、交際相手を自己申告できるようになっています。自分の友人の登録状況は、次のアプリで一覧表示できます。

Friends Partner

表示させるには、交際ステータスへのアクセス許可が必要です。下のようなページが表示されたら、「インストール」をクリックしてください(http://www.facebook.com/settings/?tab=applicationsでアンインストールできます)。

私の友人たちの登録状況はこんな感じです。あまり登録していませんね(ウェブブラウザでなら友人以外の情報も見られるのですが、このアプリが利用しているAPIでは自分と友人の情報しか見られません)。

この交際相手、もちろん他人から見られるのは現在の相手だけですが、Facebookのサーバに、過去の相手が保存されていたら面白いですね(情報漏洩を恐れてちゃんと消しておくのが正しいポリシーでしょうが)。

最初に述べたような怖い病気が発生したときに、Facebookはその情報を公開するのだろうか、と思うのです。「公開する」と宣言すれば、人は将来の保険と思って登録するようになるでしょうか。「公開しない」と宣言すれば、情報漏洩を恐れる人も安心して登録するようになるでしょうか。あるいは逆の結果に?

「そういう病気が見つかって初めて過去の恋人たちを登録できるようなフォームが作られるだろうから今は何もしない」という人はまったく冷静ですばらしいです。そのペースで対応できる病気ならよいのですが。