ページ

2013年11月1日金曜日

[勉強会] LINQ 勉強会と C# の素晴らしさを語る会

ずいぶん時間が立ってしまいましたが、今まで書いてなかった勉強会 「LINQ 勉強会」「第2回 LINQ 勉強会」「C# の素晴らしさを語る会」 のことを書いておきます。

■ LINQ 勉強会
2013/6/29 グリーさんの大阪オフィスの部屋をお借りして開催された「LINQ 勉強会

米田さんのハンズオン形式のセッションがメイン。LINQ を使ってみるというハンズオンではなく、LINQ を作ってみる(IEnumerable なコレクション生成部とか Where とか Select とか)という内容。しかも「LINQ を作りましょう」ではなく、「こういう風に分割した方が柔軟性高くなるよね?」とやっていったらいつのまにか LINQ そのものになってた、という進め方。おもしろかったです。このセッションでは、私は質問があったら答えて上げる役として部屋の中をうろうろしてました。まぁ、あまり役には立ってなかったように思いますが。
米田さんの資料はこちら 「超LINQ入門

続いて、私もセッションをやらせてもらいました。「LINQ の概要とかもろもろ」ということで、LINQ のことを一通り、LINQ to Objects、LINQ to XML、LINQ to SQL といったところを浅く広く紹介するという感じのセッションです。米田さんのハンズオンのあとだったのでちょうどいい感じにまとまったかも。
以下にセッション資料を貼り付けておきます。

終了後は梅田の居酒屋で懇親会。楽しかった。

■ 第2回 LINQ 勉強会
2013/8/24 靭公園テニスセンター会議室にて開催された「第2回 LINQ 勉強会
テニス用の競技場の中にある会議室というおもしろい場所でした。以前にシアトル・マリナーズの本拠地のセイフィコフィールドの中を見学したことがあるんですが、そのときみた野球選手用のロッカールームとかミーティングする部屋とか記者会見場とかそういった雰囲気とおんなじような感じでした。

上に書いた「LINQ 勉強会」の第2回という位置づけですが、前回の続きというわけでなく純粋にもっともっと LINQ のこと話したいよね、という感じです(だと自分では勝手に思ってます(笑))

今回もセッションをさせて頂きました。「LINQ 概要」ということで前回と同じように LINQ のことを広く浅くという感じで紹介しました。前回とまったく同じだとつまらないので細々と変えてはいますが、まぁ、だいたい同じです。
けど、一応、セッション資料を貼り付けておきます。

続いて米田さんのハンズオン。生徒の成績データのコレクションを LINQ を使って抽出したり、ソートしたり、グループ分けしたりといった内容。元となるソースはあらかじめ米田さんが作ってきてくれました。WPF を使ってて、ちゃんとデータバインドして、という結構ちゃんとしたもの(笑)で、データ処理部分だけ書き換えればそれに応じて表示がかわるというもの。このソースを皆に配布して、いろいろ書き換えなが LINQ のいろんな機能の実習。わかりやすかったです。
米田さんの資料はこちら 「第2回 LINQ勉強会

続いては @Posaune さんのセッション。LeapMotion からの入力を Rx を使って受け取るという内容。まさか、LeapMotion が出てくるとは。みんな好きだなぁ。まぁ、私もこの日 LeapMotion を持っていってたんですが(笑)
認識した指の本数からグー、チョキ、パーを判断しようというもの。LINQ や Rx をうまく使うとほんとにすっきりとコードが書けますね。おもしろかったです。

終了後は近所の居酒屋で懇親会。
持って行った EnchantMOON をみんなに見せびらかしました(笑)

■ C#の素晴らしさを語る会
2013/10/12 マイクロソフト関西支店のセミナールームをお借りして開催された「C#の素晴らしさを語る会

15~30分のショートセッションで 15人もの方が C# や .NET の素晴らしさを語るというおもしろい内容。
セッションスライドは
http://www.vshtc.net/vshtcstudyosaka3
こちらにまとめられています。
私も C# や .NET の基礎的なことを紹介しつつ、気に入っているところを語るという内容でセッションをしました。私のセッション資料も上記のサイトにあります。

初心者向けといいながら後半になるにつれどんどんディープな世界に入っていくという初心者置いてきぼり状態でしたが(笑)いろいろなお話が聞けてとてもおもしろかったです。
そういや、あんまり async/await な非同期系の話がなかったな。私は大好きですが、なかなか仕事用のコードでは使う機会がないんですよねぇ。使うべきところで使わないのであれば「こんなの絶対おかしいよ」と言えるんですが、そもそも非同期を使う機会自体がなかなか無いと言うか。あったとしても、うかつに使うと「わけがわからないよ」と言われそうなんですよねぇ。けど、ASP.NET MVC でごにょごにょするようなことをやってるのでそこでは思いっきり使えるかな?まぁ、これは半分趣味みたいな開発ですが。

終了後は近くの中華料理屋で懇親会。
その後、ミスド(だったかな?)に場所を変えて二次会。

■ そして
そして、12/14 に「第3回 LINQ 勉強会」が開催されます。現在、参加者募集中です。
またまた、私もスピーカーさせて頂く予定です。

って、今見たら、なんか私の紹介文が偉くかっこいいんですけど(笑)

2013年3月21日木曜日

[VS] Google Crash Handler が動いていると Visual Studio の XAML UI デザイナーがハングする?

2月後半くらいからこの現象が出るようになって困ってました。

  1. Windows 8 上の Visual Studio 2012 を起動。(私が使ってるのは Ultimate。他のエディションは不明)
  2. 「ファイル」-「新規作成」-「プロジェクト」 で Visual C# の 「Windows ストア」 で 「新しいアプリケーション (XAML)」 を作成。
  3. プロジェクトができたらソリューションエクスプローラーで MainPage.xaxml をダブルクリックして XAML UI デザイナーを開く。
  4. XAML UI デザイナーのどこかをクリック。

これで、Visual Studio がハングしてどうしようもなくなります。
私の環境では 100% こうなります。
同じような環境が 2つ(デスクトップ PC とノート PC)がありますがどちらも 100% 発生します。
上記では例として新規作成のプロジェクトにしましたが、既存のプロジェクトを開いて XAML UI デザイナーをクリックしても同様です。
何かに時間がかかっているだけかと思い 10分以上放置してみたこともありますが何ともなりませんでした。
ちなみに、WPF のデザイナーでは問題はでません。問題が出るのは Windows ストアーのデザイナーだけのようです。

この状態になったら以下の方法で部分的に復旧させることができます。

  • タスクマネージャーを開き 「Microsoft Visual Studio XAML UI Designer (32 ビット)」 という名前のプロセスを終了させる。

どうやら XAML UI デザイナーは別プロセスになっているようで、こうすると Visual Studio が操作できるようになります。
ただし、XAML UI デザイナーは死んだ状態なので下図のようになりデザイナーは使えません。

XAML_UI_Designer_Hangup.png

デザイナーは使えませんが、XAML を手書きはできますし、XAML UI デザイナー以外の部分は問題ないのでとりあえずこれで使ってました。(最近は XAML UI デザイナーが必要なことはあまりやってなかったのでこれで何とかなってた)

けど、これはさすがに不便なので解決策を探ることに、、、
まず手始めに何かのプロセスが影響を与えていないことを確認するためにタスクマネージャーで殺せるプロセスはみんな殺す。。。あれ?動くようになったぞ?
いきなりビンゴ。あとはどのプロセスが原因になっているのかを特定するため地道に試していくと、、、

  • タスクマネージャーで 「Google Crash Handler (32 ビット)」 という名前のプロセスを終了させれば Visual Studio 2012 の XAML UI デザイナーがハングしなくなる。

でした。

Google Crash Handler が何なのかはわかりません。(まぁ、名前的にクラッシュを検出してレポートするためのものなんでしょうが。そんなものが Visual Studio をハングさせてしまうというのも皮肉な話)
また、何を入れると入るのかもわかりません。Google 日本語入力(Google IME)、Chrome、Google Toolbar あたりだとは思いますが。
ちなみに、GoogleCrashHandler.exe は バージョン 1.3.21.135 で、タイムスタンプ 2013/02/06 08:21 でした。

と、冷静にまとめましたが、原因が特定できたときには思わずガッツポーズしちゃいましたよ(笑)

2013年3月20日水曜日

[勉強会] Room metro #14 大阪に行ってきた

3/16 開催の「Room metro #14 大阪」に参加してきました。
場所は淀屋橋の IIJ さんの会議室。人数の割には広めの会議室で、無線/有線 LAN もあり、UStream 配信も OK というすばらしい環境。(配信設備は自前で用意する必要があるけど、結局それも IIJ の方に(個人的に)借りたのかな?)

どのセッション・LT もとてもおもしろかったです。

  • TypeScript はおもしろそうだし使ってみたいとは思ってるんだけど。node.js + TypeScript とかおもしろそうだし。
  • Direct3D はやっぱりめっちゃおもしろいよな。なんかやってみたい。
  • ちょっとしたデータを保存するには SQLite 便利っすよ。
  • P●P→C# ってよりやっぱり設計が大事っすよね。うん、大事。
  • やっぱりどうせアプリ作るなら最低限英語版は作んないとなぁ。
  • VAIO Tap 20 を持ち歩いてたら目立つだろうなぁ。けど、あれを電車の中に持ち込むのはちょっとw

で、今回 SQLite をネタにセッションをさせて頂きました。セッション資料を下に貼り付けておきます。
最初は 30分くらいのセッションのつもりだったので軽く SQLite を紹介する程度のつもりだったんですが、あとで「50分で」と聞いたので関連するネタを追加したんですね。前日は東京出張だったので新幹線の中で考えてました。(ファイルピッカー使っても一部のフォルダーしか見えないデモとか、PC 側で壁紙を変えると Surface 側も自動的に変わるとか、ARM バイナリーを Surface でリモートデバッグするとか、が追加したあたりのネタ)
んが、ちょっと追加しすぎて、というか、話してたら調子にのっちゃって時間をオーバーしちゃいました。てへぺろ(・ω<)

終わったあとは懇親会。
これも楽しかった。

2013年2月8日金曜日

[Mesh][SkyDrive] Windows Live Writer の下書きフォルダーを SkyDrive で同期する

任意のフォルダーを SkyDrive や Dropbox で同期する方法について。
Live Mesh では好きなフォルダーを同期させることができました。けど、SkyDrive だと “%UserProfile%\SkyDrive” フォルダー、Dropbox だと "%UserProfile%\Dropbox” に同期するフォルダーが固定されています。変更する方法もあるのかも知れませんが、任意のフォルダーを SkyDrive で同期するっていうような使い方はできなさそうです。
が、シンボリックリンクを使ってやれば普通にできます。

例として Windows Live Writer(以下 WLW) の場合。
ブログを書くのに WLW を使ってますが、WLW で下書きとして保存すると「マイドキュメント」の "My Weblog Posts" フォルダー("%UserProfile%\Documents\My Weblog Posts" フォルダー)に保存されます。このフォルダーを SkyDrive で同期させます。
こうしておけば、どっかの PC で下書きを保存して、別の PC で続きを書くってことができるようになります。(もちろん、それぞれの PC に SkyDrive アプリを入れておかないとダメですが)

やり方自体は簡単です。
ただ、フォルダーを削除したりするので意味がわからない人はやめておいたほうが無難かもです。

  1. "%UserProfile%\Documents\My Weblog Posts" フォルダーを削除する。(注意 当然ですが、今までに保存していた WLW の下書きなどが消えます。必要なら他のフォルダーにバックアップしておくなどしておいてください)
  2. "%UserProfile%\SkyDrive\My Weblog Posts" フォルダーを作成する。
  3. 管理者としてコマンドプロンプトを起動してそこで
    mklink /d "%UserProfile%\Documents\My Weblog Posts" "%UserProfile%\SkyDrive\My Weblog Posts"
    を実行する。
  4. (必要なら 1 でバックアップしたファイルを書き戻す)

と、まぁ、やることはこれだけです。

mklink でシンボリックリンクが貼られて「マイドキュメント」の "My Weblog Posts" フォルダーが SkyDrive の下の "My Weblog Posts" フォルダーに繋がります。WLW が下書きを「マイドキュメント」の下に保存すると、それは実は SkyDrive の下なので SkyDrive が同期してくれます。
私は Windows Live Essentials に Mesh が含まれなくなったとき(確か半年くらいだっけ)からこの方法で任意のフォルダーを SkyDrive で同期させています。来週、2月 13日で Live Mesh サービス自体が終了だというニュースを見て、あらためて書いてみました。