先日CLR.H in TokyoでAzure Machine Learningについて登壇してきたわけですが、その時に作ったAzure Machine Learningのチュートリアルを公開します。 https://github.com/garicchi/azureml-tutorial 内容は気象庁の過去データを使って数時間後の気温を回帰分析で予測するという内容です。 インターネットのない環境でせこせこ作ってたのでスクリーンショット付きでわりとわかりやすいかと思います。 まあ機械学習系のチュートリアルは公式ドキュメントなどいろんなところに落ちてるわけですが、たいていデータセットが予め用意されているのでどういうデータがなぜ必要なのかとかがわからないパターンが多く そんな中で気象庁のデータは非常にわかりやすい形で回帰分析を学ぶことができるデータセットだと思っています。 Azure Machine Learningに入門したい方はぜひお試しあれ    

とある用事があって、60個近くある.pptxをすべて1枚あたりに6スライドある表示(配布資料表示)ですべて1つのPDFにするということが必要になったわけですが、61個のpptxをすべて手作業でpdfにするのはプログラマーとしてあるまじき行為(三村親方談)なので自動化を試みました。 結果、OfficeInteropを使って自動化に成功しました。 やりかた まずはMicrosoft Print to PDF仮想プリンタをデフォルトに設定します。 次に適当なC#のプロジェクトを作り、参照マネージャからCOM >[Microsoft Excel 16.0 Object Library]と アセンブリ>拡張>[Microsoft.Office.Interop.Powerpoint]の2つを追加します。 あとは以下のコードを走らせるだけ

プログラムを走らせると、プログラム自体はすぐに終了しますが仮想プリンタのキューに大量に印刷命令を送信することで、徐々に大量のPDFが作成されるはずです。 あとは作成された1ページ6スライドのPDFをTHE PFF TOOLKITなど(https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/)を使って1つのpdfに結合すればOKです。 1ページ4スライドとかにしたい場合はOutpuTypeのプロパティとかをテキトーにいじってください。 感想 楽しかった

本日から3月まで東京都民へと昇格を果たしました。拠点地は東日本橋あたりです。理由は聞かないでください 契約したマンスリーマンションは机が狭い以外はまあなんかいい感じ(広いし)なので最高かよっておもってたらネット回線が来ていないことに入居した後に気づきました。 契約書を見返すと設備に「インターネット」の文字はどこにもなく、テレビよりもエアコンよりも大事なネットのない世界で2カ月生きていきます。 まあそんなことをしたら死んでしまうので明日あたりにWiMAXでも契約しに行こうかな… 3月までは東日本橋あたりをうろうろしてるのでかまってやってください

結論 使用していたクラスはv1時代のものでv3では非推奨となっている(使えるけど) v1時代はSkypeのグループ会話に対応していなかった v1時代のクラスでBotを開発していたのでSkypeグループでのMentionに反応できなかった v3のクラスに置き換えましょう 事の発端 12/18に横浜でMicrosoftBotFrameworkのハッカソンを開いたとき、参加者の方からこのような質問をいただきました。 BotFrameworkで作成したBotが、普通の1対1の会話には反応してくれるけどグループ会話に追加したときに反応してくれない   そもそもBotFrameworkはSkypeのグループチャットを有効にしたとき、「@botname こんにちは」などのMentionを飛ばすことで反応ができるはずなのに実際に動きを見せてもらったら見事に反応してませんでした。 その後ソースコードをいただき、その原因を探ってみました。 ソースコードは以下となります。(掲載許可はいただきました)

  原因調査 原因調査するにはデバッグするのが一番ということでローカルに実行環境を作成しデバッグしてみるとコンソールに以下のようなメッセージが表示されていました。   BotConnectorBot class is deprecated. Use UniversalBot with a ChatConnector class. CommandDialog class is deprecated. Use IntentDialog class instead.   どうやらBotConnectorBotクラスと、CommandDialogクラスは現在のバージョンでは非推奨のようです。 それぞれ、UniversalBotとIntentDialogに置き換えましょうとのことでした。 ソースコードの場所を見ても、deprecatedフォルダ以下にあるので完全に非推奨クラスのようです。   BotFrameworkはv1から始まり、現在v3なのですが、v3で大きく仕様が変化しました。 また、v1のドキュメントを見ても、Skypeのグループ会話機能の説明がないことから、Skypeのグループ会話機能はv3からということが推測できます。   つまり、v3の環境で、v1のクラスを呼び出していたため、Skypeのグループ会話に対応していないv1では、グループ会話に応答できなかったということです。   対処方法 v3のコードに置き換えましょう。 実際に置き換えたサンプルを以下に示します。

  これで正しく応答することができます。 1対1の場合 グループ会話の場合 Mention以外には反応しない […]

Linuxでsshをし、ログアウトしても実行し続けるにはコマンドの前のnohupをつけます

これでout.logファイルに標準出力が入ります しかしpythonでnohupを実行すると、出力がバッファにとどまってしまうので-uオプションをつける必要があります。