読者です 読者をやめる 読者になる 読者になる

からめもぶろぐ。

ワタシ SharePoint チョット デキル

CSOM の Site.OpenWeb メソッドで File Not Found が発生する件について

CSOM で以下のコードのように同じサイトを作成したり削除したりを繰り返すと ServerException (File Not Found) が発生します。
最初はタイミングの問題かなと思ったのですが、スリープを入れても常に発生するので、そういう問題でもなさそう。

$context.Load($context.Site)
$context.ExecuteQuery()

for ($i = 0; $i -lt 2; $i++) {
    # サイトを作成する
    $web = New-Object Microsoft.SharePoint.Client.WebCreationInformation
    $web.Url = 'TeamSite1'
    $context.Web.Webs.Add($web) | Out-Null
    $context.ExecuteQuery()

    # サイトを取得する
    $web = $context.Site.OpenWeb($context.Site.ServerRelativeUrl + '/TeamSite1')
    $context.Load($web)
    $context.ExecuteQuery()

    # サイトを削除する
    $web.DeleteObject()
    $context.ExecuteQuery()
}

そこで OpenWeb の実装を ILSpy で見てみたところ。

f:id:karamem0:20170421114549p:plain

( ゚д゚)

(つд⊂)ゴシゴシ

(;゚д゚)

Site.OpenWeb method (Microsoft.SharePoint.Client)

続・Azure ML を使ってドクターイエローの運行予測をしてみる

blog.karamem0.jp

答え合わせ。

f:id:karamem0:20170401222939p:plain

ちなみに他サイトの情報を参考にすると、運行したのは 3/3~3/4、3/7~3/8、3/13~3/14、3/24~3/25 だったようです。こちらは実測値とも符合しています。

doctoryellow.net

2 月は日数が少ないので 30 日の予想だと 1~2 日ずれてしまうのかも。

SharePoint Online で日本語名のファイルをダウンロードするとファイル名が欠落する件が解消された模様

blogs.technet.microsoft.com

SharePoint Online では長い日本語名のファイルをダウンロードするとファイル名が欠落する件が発生していたのですが、最近になって解消された模様です。

f:id:karamem0:20170330101912p:plain

f:id:karamem0:20170330101921p:plain

ちなみに OneDrive for Bussiness のほうも同様に解消されているようです。

変更点としては、HTTP ヘッダーの Content-Disposition で attachment; filename*=UTF-8'' を送るようになっています。これにより、対応するブラウザーでは長い日本語名でも正しくダウンロードできます。これまでの filename="" は全角 13 文字までのファイル名送っているので、対応していないブラウザーでダウンロードした場合は、これまで通り欠落したファイル名となります。

Azure ML を使ってドクターイエローの運行予測をしてみる

ずっと放置していたドクターイエロー運行予測ですが、データが溜まってきたのでいよいよ Azure ML で予測をしてみることになりました。

preddy.azurewebsites.net

全体像はこんな感じです。

f:id:karamem0:20170225001554p:plain

時系列データの取得

元となる時系列データは Azure SQL Database から取得します。データの中身としては「ドクターイエロー」とつぶやかれた件数が日付別に格納されています。

f:id:karamem0:20170225001742p:plain

予測データの作成

予測モデルは ETS + STL を使います。他には ARIMA などがあるのですが、ドクターイエローは定期的に運行する (10 日に 1 回程度と言われている) ので、予測結果はこちらのほうがよさそうです。ぶっちゃけこの辺りは全く詳しくないので適当です。R 言語でスクリプトを書く必要がありますが、サンプルがあるので参考にしながら書いていきます。

docs.microsoft.com

実際に書いたスクリプトはこんな感じです。とりあえず月別かなあと思ったので frequency を 30 にしています。

library(forecast)

dataset <- maml.mapInputPort(1)
colnames(dataset) <- c("date", "count")

series <- ts(dataset$count, frequency = 30)
fit <- stl(series, s.window = "periodic")
model <- forecast(fit, h = 30, method = "ets")

tommorow <- Sys.Date() + 1
dates <- seq(tommorow, len = 30, by = "days")
dates <- format(dates, '%Y/%m/%d')

dataset.forecast <- data.frame(date = dates, mean = model$mean)

plot(dataset.forecast)

maml.mapOutputPort("dataset.forecast")

実行結果

実際に実行してみるとこんな結果が取れます。

f:id:karamem0:20170225003321p:plain

数字を見る限りでは 3/7、3/17、3/26 あたりに運行しそうというのがわかります。

f:id:karamem0:20170225003854p:plain

グラフはなぜか点グラフになってしまいました。pilot 関数に type="l" 指定してもうまくいかないのはなぜ…。

艦ぷちの公開を終了しました

2014 年 1 月より公開していた Windows アプリの「艦ぷち」ですが、公開を終了することになりました。

おかげさまで評価が平均 4.6 (5 段階評価) と高評価をいただいておりまして、作成した甲斐があったと思っています。また、個人的には Windows Phone アプリ / Windows アプリの勉強をすることが目的でしたが、サーバーサイドとなる Azure の運用まわりでもいろいろと勉強になることがありました。

ダウンロードしてくださった皆さま、使っていただいた皆さまには、本当にありがとうございました。