エンジニアの理想のオフィスとは ― 2008年11月14日 23時33分06秒
エンジニアの理想のオフィスって事で紹介されました。普段仕事をしているときはそれほど意識していないのですが、改めて記事を見ると恵まれた環境で仕事をしているんだと実感がわいてきます。
このオフィスは「ピープルウェア」をもとにして作られているということで、単にデザインとかだけではなく、エンジニアの生産性を高めるための工夫がたくさん取り入れられています。
ネット上の求人記事だとどこの会社も似通った内容になってしまっていまいち会社の特徴がわかりにくかったりしますが、こういう特集記事があるとどういう会社なのかというのがわかりやすくなっていいですね。欲を言うともう少し大きい写真があった方がよかったです。ガラスの写り込みで見にくい写真があるのも気になりました。
サイボウズのスケジュールをiCal形式に ― 2008年11月10日 16時13分55秒
会社でグループウェアがSharepointからサイボウズに変わりました。サイボウズがRSSに対応していればいろいろなデバイスと連携できるのですが、RSSに対応していないようなので以下のツールを使うなどしなければいけないようです。
- cybozu2ical - サイボウズオフィスのカレンダーをiCalendar形式に変換するスクリプト http://code.as-is.net/public/wiki/Cybozu2ICal.ja_JP
amazonで在庫あり以外は買わない方がいい ― 2008年10月16日 22時39分33秒
amazonで注文していたHDDですが、1週間待たされたあげくに在庫なしといわれてしまいました。7-9日で発送と書いてあったので在庫なしかもしれないとは思いましたが在庫なしと返答するのに1週間もかかるのはどうなんでしょうか。
代わりのHDDをどうモデルで1TBのものにしてもらえたのでいいですが、amazonでは在庫ありのもの以外は注文しない方が良さそうです。
仕事用PC用パーツ購入 ― 2008年10月08日 00時29分27秒
仕事用のPCはVistaですが、Athlon64 X2 3800+ DDR2 2GB 250GBHDDとVista機としてはスペックが低いので会社にメモリとHDDを買ってもらえることになりました。
フレームワークの実装になると複数の環境をサポートする必要があるのでVirtualPC上で開発することになります。ただでさえVistaがメモリ食うのにVM立ち上げると2GBじゃ全然足りなくなります。
今はガリガリコード書いている段階なのでPCが速くなるとそれだけ仕事の効率も上がるので早くパーツが届かないかな。
WindowsサービスでwsHttpBindingを使う ― 2008年08月15日 15時44分03秒
WCFサービスをホストするWindowsサービスを作っています。
netTcpBindingを使ってサービスをホストすることはできたんですが、それをwsHttpBindingに変更してもちゃんと動かない。IISならhttpのサービスは作れるけどtcpのサービスは作れないと言うことなので、Windowsサービスではその逆でhttpのサービスは作れないんだろうか。
WCFは設定ファイルで接続仕様を変更できたり柔軟なところが便利ですが、そのぶん中で何やってるかわからないのでいったんはまると大変です。
Resharper4.0βを使ってみる ― 2008年05月25日 17時58分48秒
Resharper4.0βが出たと聞いたのでインストールしてみました。
今回から1つのインストーラーで2005と2008の両方に対応しています。2005の方には3.1を入れていたのですが、ちゃんと4.0にアップグレードしてくれました。
βですがそれほど不具合はありませんでした。仕事用のPCに入れたのですが問題ないです。1点おかしいのが2005でも「変数の宣言をvarに変更してください。」という提案が出てしまうことです。2005はvarが使えないので当然エラーになってしまいます。
4.0に無料でバージョンアップできると聞いて3.1を買ったのですがなかなか製品版が出ないですね。リリースまでおとなしく待つことにします。
自然言語検索エンジン ― 2008年05月04日 13時51分10秒
デブサミに参加したらいろんな会社から宣伝のメールが届くようになってちょっといやだったんですがその中で面白そうな内容があったので書いてみました。
<組込みシステム開発技術展> http://www.esec.jp
- 日時 :2008年5月14日(水)~ 5月16日(金)10:00 ~ 18:00 (最終日17:00)
- 会場 東京ビッグサイト
- 弊社小間No. : 東45-5
- 出展製品 :
- 次世代インターフェース開発のための自然言語+対話エンジン「Answers Anywhere」
自然言語検索エンジンについてはPowersetなどで知っていました。PowerSetのデモを使ってみましたが文章形式で入力したらそれを解釈して適切な答えを用意してくれる。Googleを超えるともいわれているのもわかるような気がしました。
そこでこの「Answers Anywhere」でも同じようなことができるようです。いま会社で作っているシステムでは全文検索エンジンを使用するようですが、こういう自然言語検索を採用するのも面白そうです。パフォーマンスとかスケーラビリティとか考慮すべき内容はたくさんありそうですが。
DTMで初音ミクが突然脚光を浴びたように、検索エンジンでも自然言語検索が従来の検索エンジンを超える日が来るのではないかと思います。
L885を会社で使う ― 2008年03月15日 00時13分39秒
LC-22P1を買ったために余ってしまったL885を会社に持って行って使うことにしました。会社で使っているのはDELLの2007FPで、これは使っていると目が痛くなるので速く交換したかったのですが、今まで会社の許可が出なかったので我慢していました。
宅急便で送るのは荷造りとかが大変だし、壊れたらいけないので電車で運びました。結構でかいのでスタンドと本体を分解してバッグに入れました。おまけに雨が降っていたので持ち運ぶのはかなり大変でした。会社に着いたらドライバーを使ってまたスタンドの取り付けです。
会社のPCに接続して動かしてみると、ちらつきが出たり、ブラックアウトが出たりしていたので壊れたかと思いましたがドライバをインストールして「DVI周波数を下げる」のチェックを入れるときれいに写るようになりました。
ずっと2007FPを使っていたのでかなり目が痛くなってしまっていたのですが、これで目の痛みも解消されると思うと苦労した甲斐がありました。
原因判明 ― 2008年02月28日 23時33分26秒
昨日の不具合の原因がわかりました。 わかってみれば実に単純なことでした。
- メインスレッドとサブスレッドの同期をとるため、メインスレッドはサブスレッドを待つループに入ります。
- サブスレッドの処理が終わるとフラグを変更します。メインスレッドはそのフラグを見てループを終了し、次の処理に移ります。
- ただしサブスレッドで例外が発生するとフラグの変更が実行されないままサブスレッドが終了してしまいます。メインスレッドはもう発生することのないフラグの変更を待ち続けてループし続けるため、ゾンビ化となる。
本当に単純なことですが、マルチスレッドが絡むととたんに複雑になってしまうものです。
プロセスのゾンビ化 ― 2008年02月27日 23時54分47秒
今仕事で.NETで作成したアプリケーションがゾンビ化してしまう不具合の対応をしています。このアプリはどんなアプリかというと以下の通りの動きをします。
- 起動すると複数のサブスレッドを実行します。
- サブスレッドはそれぞれが指定されたプロセスを実行します。
- サブスレッドの同時実行数はセマフォで管理します。
こんな感じです。ゾンビ化した際のログを調べてみると、サブスレッドで例外が発生したときにゾンビ化してしまうようです。検索したら以下のサイトが見つかりました。
http://blog.livedoor.jp/gushwell/archives/23509116.html
サブスレッドで発生した例外をメインスレッドで処理するにはAppDomain.CurrentDomain.UnhandledExceptionイベントを使わないといけないようです。今までこの処理方法はとっていなかったのでサブスレッドで発生した例外が処理されずにいたのがゾンビ化の原因ではないかと思われます。
やっぱりマルチスレッドプログラミングは難しいですね。