Hatena::ブログ(Diary)

日々の後悔の公開。

2010-01-01

なんとなく更新しないといけない気もしてきた。

え〜と…最近の私的な日記は下のURL(mixi)で粛々と更新しています

http://mixi.jp/list_diary.pl?id=8247

あ,あとtwitterやってます

http://twitter.com/s1061123/

2009-04-09

マイクロソフトOSSの距離.

…話は一通のメールから始まりました.

情報システム運用管理について是非id:s1061123さんにご意見をお伺いできないかと考え…」

え?俺開発系だけれどいいの?そんなに管理なんてしないよ?…昔やってたけれど.

本当にそんな(駄目)人間でも行っていいのかなぁ…と若干の逡巡を経た結果,まぁきっといいんじゃないかいう軽い考えで参加することにしました.何かというとマイクロソフトの方(エヴァンジェリストの方)4人とこうやって集まった4人のエンジニアのグループディスカッションです.スタート30分、ガチ緊張。周りを見るとやっぱり緊張。思わず背筋を伸ばしてしまう感じ.自己紹介をやっている間にだんだん打ち解けてきました.

ちなみに今回のマイクロソフトさんのディスカッションは以下のような目的とのこと.やはりOSS v.s. Microsoftという関係になっている現状をどうにかしてOSSMicrosoftといった非対立状態にしたいようです…

その時話したことは確かこんな感じ.

またマイクロソフトさんからこんな事を教えて頂きました.最近だとやっぱりそういったギャップを埋めるためにいろいろ努力されているのですね.

中盤から後半は本当に色々な話をマイクロソフトの方や他のエンジニアの方から聞けて非常に有意義な時間を過ごすことができました.最近仕事場だとそんな会話しないから特に楽しかった…

マイクロソフトソリューションマイクロソフト製品でエンクロージャーするのと同様にOSS関係コミュニティだとどうしてもOSSソフトウェアでエンクロージャーしてしまう気がします.それはそれで十分に普通の発想なんだと思うのですが,システム的にはOSS+Microsoftというソリューションというのもあっていいんですよね.そういった事を支持するエンジニアが増えればきっとMicrosoftさんとOSSコミュニティの距離は少しは縮むのではないのかなぁ…と帰りの京王線でふと思いますた

余談1

そいえばエンジニアの方が持ってきていたメモ用の装備がまちまちでおもしろかったです.

十人十色というか,綺麗に分かれたなぁ.とか少し思ってますた

余談2

あ.そいえばこんな会話が.

僕:「昔仕事Windows DNAというのを使って…」

MSの人:「古っ!」

その時はそんなに古いかなぁ…と思ったのですが.…よく考えたら10年前だもんなぁ.そりゃぁ古いなぁ(苦笑

あの頃はSQL Serverも6.4でMSDEじゃなかったしなぁ.JETよかったなぁ…(懐古モード

2008-10-14

自然数の無限リストはInt?それともInteger?(別解説)

と、id:kazu-yamamotoさんの記事に書いていたようだったのでhaskell使用歴10日程度の僕は興味を持って調べてみることにしました。というのが背景です。ポリシーとしては基本仕様から調べるということで。

自然数の無限リストはInt?それともInteger?


とりあえず、[1..]ってのがhaskellではどう定義されているかを見てみませう。

http://haskell.org/onlinereport/exps.html#arithmetic-sequences ←こんな感じ。

[0..]や、[0..10]に代表されるリスト内包表記(list comprehensions)はhaskellの糖衣構文なのですね。つまり、[1..]と書くとそれは(enumFrom 1)といった式に内部で変換されてから、処理が行なわれるのです。ならばenumFromの型を見れば[1..]の型が判明するのです!! をぉ。簡単! ということで、Hugsでお試し。

Hugs> :t enumFrom
enumFrom :: Enum a => a -> [a]

えーと。なんですか? 型クラス(Enum a)において、aを受けとってaのリストを返す関数ですか。つまりenumFromは型クラス(Enum a)をサポートしていれば使えると。んじゃ、Enum aを継承しているDoubleとかでもできるの?!

…試してみた (トリビアの泉風に)。

#Hugs ver. Sep 2006
Type :? for help
Hugs> [0.22..2.33]
[0.22,1.22,2.22]
Hugs> [0.22..2.22]
[0.22,1.22,2.22]
# GHCi 6.8.2
Prelude> [0.22..2.22]
[0.22,1.22,2.2199999999999998]
Prelude> [0.22..2.23]
[0.22,1.22,2.2199999999999998]

をぉ。できるやん。GHCiは返り値がなんとなく微妙だけれど。まぁ、型的に納得できる。納得できるけれどさぁ…俺の求めている答はどこにあるのさぁ!!

(ここで少しの苦悩と逡巡があった)

…で結局はそうなると「"10"とhaskellって書いたとき、それは何の型を持つの?」という問題になる訳ですね。10って数字はIntかもしれないし、Integerかもしれないし、Doubleかもしれないのです。言語の評価機としては与えられた数値に対して、なにかしらの型を与えて処理をしないといけない訳です。特に型推論とか持っているhaskellならばなおさら。で、その規約haskell言語仕様にはありました! さすが言語仕様書

貴様らの歩んでいる道は、我々がすでに通った道 だ!(from グラップラーバキ)」 と言われんばかりですね。

http://haskell.org/onlinereport/decls.html#default-decls ←ここ

ということで、ここを見るとモジュール内でdefault(型1, 型2)と宣言した順番にマッチさせようとすることになっています。何も指定しない場合(つまりdefaultのdefault)は"default (Integer, Double)"になっているとのこと。よって、

  • [1..]と打つとenumFrom 1として計算される。型はEnum a => a -> [a]
  • 特にdefault()で指定しない場合haskellは"1"をIntegerの"1"として認識する
  • つまりenumFrom 1の型は Integer -> [Integer] になる

結果、無限リストになる訳ですね。

んじゃ、こんなファイルを作って、Hugsテストしてみましょう。

module Test 
    where
default (Int, Double)
k = let a=[2..] in a
Hugs> :load hogefuga.hs
Test> :t k
k :: [Int]

をぉ。Intになったね。という話ですた(オチなし)。

トラックバック - http://d.hatena.ne.jp/s1061123/20081014

2008-08-04

SPS2をNetBSDで動かしてみる。前哨戦その3

で、SDL .Netインストールです。最新版のSDL.Netではどうやらlibgdiplus(http://www.mono-project.com/Libgdiplus)が必要になるみたいです。ということでそれもインストールをする必要があります。NetBSDではpkgsrcになっているのでそれを使えば幸せです。

libgdiplusのインストール

#cd /usr/pkgsrc/graphics/libgdiplus
#make install

SDL.Netインストール

#cd sdldotnet-6.1.0/source
#nant mono-2.0 package
トラックバック - http://d.hatena.ne.jp/s1061123/20080804

2008-07-30

SPS2をNetBSDで動かしてみる。前哨戦その2

本日のお題はTao Frameworkをインストールすることです。

Tao FrameworkはLuaとかOpenGLとかのwrapperとのこと。今度俺も使ってみよっと。で、Tao Frameworkのソースはここからゲットして下さい。(http://www.taoframework.com/) また、ソースからコンパイルしたい猛者の方はnant(http://nant.sourceforge.net/)が別途必要なのでそれもゲット。

さてコンパイルです。unixではmakejavaだとantビルドに使うように.Netnantを使うみたいですね。初めて知りますた

#gmake
#gmake install
#nant

次はきっとsdldotnetです。

トラックバック - http://d.hatena.ne.jp/s1061123/20080730