2011/01/22


「Go言語?もうピーク過ぎたよね?」とか言ってる人達こんばんわ。
Go言語、終わってません。いまdev-listではすごい量のメールが飛び交っていて、毎日かなりの量の議論が行われています。
僕としては、ようやく始まったと言えます。もうすぐWindowsでcgoも実行出来る様になります。現在dev-listには既にパッチが投稿されていて、レビュー中です。そろそろ出るんじゃないかと思います。
ただし現状cgoが無いWindowsでもダイナミックローディングが出来ない訳ではありません。syscall.LoadLibraryとsyscall.GetProcAddressを使ってライブラリ関数を取得し、syscall.Syscallで呼び出す事も出来ます。cgo待ってられない!って人でも今すぐDLLを呼び出す拡張モジュールが書けるのです。
今日はその方法を使って、GoからCOM(Component Object Model)を扱えるライブラリを書きました。名前は「go-ole」としました。
mattn/go-ole - GitHub

win32 ole implementation for golang

https://github.com/mattn/go-ole/
GO言語のstructを使って、vtblを作成しています。まぁ先頭ポインタからオフセットでメンバにアクセス出来る言語であれば大体実現出来ますね。
今のところ、プリミティブな型でしか操作出来ません。配列もSAFEARRAYで扱ってません。これからという所です。皆さんのパッチお待ちしています。
サンプルとしてMSAgentでおしゃべりする物が動きました。
go-ole
go-oleだと以下の様なソースになります。簡単ですね。
package main

import "ole"
import "ole/oleutil"
import "syscall"

func main() {
        ole.CoInitialize(0)
        agent, _ := oleutil.CreateDispatch("Agent.Control.1")
        oleutil.PutProperty(agent, "Connected", true)
        result, _ := oleutil.GetProperty(agent, "Characters")
        characters := result.ToIDispatch()
        oleutil.CallMethod(characters, "Load", "Merlin", "c:\\windows\\msagent\\chars\\Merlin.acs")
        result, _ = oleutil.CallMethod(characters, "Character", "Merlin")
        character := result.ToIDispatch()
        oleutil.CallMethod(character, "Show")
        oleutil.CallMethod(character, "Speak", "こんにちわ世界")

        syscall.Sleep(4000000000)
}
よかったら遊んでみて下さい。
Posted at by



2011/01/19


僕がブログという物を一生懸命書いた、初めてのWebサービスだった。
PLAYLOG事務局からのお知らせ:サービス終了のお知らせ(1/18) | PLAYLOG

 平素はPLAYLOGをご愛用いただき誠にありがとうございます。

音楽をキーワードにした交流の場として、パソコンや携帯音楽プレイヤーで聴いた曲の再生履歴を公開するなどの機能を搭載した音楽コミュニティ(SNS)として、当サービスを2006年より提供して参りましたが、2011年5月16日(月)をもってサービスを終了させていただきますのでご連絡申し上げます。

現在、ソーシャル・ネットワーキング・サービスについては様々な形態のサービスが登場し、インターネット上のコミュニケーションも多様化していることから、音楽市場の活性化に貢献することにおいて一定の役割を終えたと判断し、当サービスを終了することといたしました。

PLAYLOGをご愛用いただいております皆さまには、心より感謝いたします。本当にありがとうございました。

http://playlog.jp/playlog/blog/news_2011-01-18
音ログというサービスを運営されていた方から誘われて入った。その後APIが公開されて、WinAMPやWindowsMediaPlayerでの曲再生履歴をアップロードするプラグインを書いたり、Linux上のあらゆるプレーヤから曲再生履歴をアップロードするotolog4linuxを作ったり、ダッシュボードの新着情報をタスクトレイで通知するツールなんかを作った。
とても楽しかった。多くの人からブログに対するコメントも貰ったし、たくさんの人にネタを見てもらった。
サービスは終了してしまうけど、その後Twitterでフォロワーになってる人もいる。いっぱい人の輪を広げてくれた。
そしてなによりも

Webサービス向けにクライアントアプリケーションを作る楽しさを教えてもらった。


僕がこれほどまでにWeb APIにはまりこんだのも、PLAYLOGがきっかけだったのかもしれない。

オフィシャルの方、ツールでテストして負荷かけたり、XSS探したりしてごめんなさい。
そしてありがとうございました。
もう少し運営は続きますが、がんばって下さい。
Posted at by




dropquest2011というクイズに答えたら、1GB増えた。
Dropquest2011
https://www.dropbox.com/dropquest2011/
dropbox-gradeup
Posted at by