happasukeの覚書

私がググらなくてもいいよう記事にします。またそのほかにも感じたことも書き綴りたいと思います。

Azure WebSitesで定期的に実行するWebJobの作成方法

 Azureのクラシックポータルを使用してタイトルのことをしました。ちなみにクラシックポータルを利用するために無料試用のサブスクリプションを購入しました...

 中の人のブログによるとAzureSchedulerとInternal Webjob Schedulerを使う方法があるのですが、前者はどうやらDreamSparkサブスクリプションでは利用できなく、後者はスタンダート(F1ではダメ)の料金プランでないと使用できないようです。しばやんさんのサイトの説明がわかりやすいです。

Azure Web Apps で crontab っぽく WebJobs のスケジュール実行が出来るようになっていた - しばやん雑記

 クラシックポータルの場所は新ポータルのタイルからもいけます。

f:id:happasuke:20160216190542p:plain

 このポータルからWebアプリを新規に作成し、詳細画面のトップのダッシュボードやら監視やらの項目からWebジョブの項目を選択し、新規に作成します。スケジュールを指定した時間で実行するように設定すれば動いてくれます。

 無料試用版は最高でも1時間周期で、それ以上短い周期で実行することはできないそうです。

 

DreamSparkアカウントではazure classic portalにアクセスできない

completed
How can we improve the Azure portal?
  • 5 votes
  • 5 comments

I can't access old portal? manage.windowsazure redirects me to new portal?

I can't access old portal? manage.windowsazure redirects me to new portal?

feedback.azure.com

指定時間にジョブを発火させたいと思い、一番簡単そうなクラッシックポータルで時間をGUIで指定してやろうと思ったらどうやらDreamSparkサブスクリプションではできないらしい。ソースは上記。本当にありがとうございました。

 

androidで一定時間後にTTSで何かをしゃべらせる

 手順はこうです

  1. ActivityからAlarmManagerでreceiverをセットする
  2. 指定時間後にreceiverからserviceを呼び出す
  3. serviceのなかからTTSを呼び出す

 順を追って説明します。その前にManifestで以下のように追記します

this is used in newsgetter and for explain code

 

 application内にreciverとserviceを使うことと、パーミッションにSET_ALARMを追加します。指定のしかたは書いてあるような感じです。

 

 次にActivity内でのAlarmManagerのセットのしかたです。これはすでにネットにたくさんありますね。ざっくりいきます。

gist8f2ede46abd9154109d8

 こんな関数をActivity内から呼び出すことでアラームをセットします。10秒後にRTC_WAKEUPでよびだすAlarmManagerです。

 次にAlarmManagerで使われているレシーバです。

gist13001483bec606e79f40

 16行目のcontext.startServiceが重要です。TTSクラスを入れて呼び出します。ここで直接TTSを呼び出そうとすると事故ります。それでserviceがこちらです。

gist26bdcb5964e837597ca6

 

萌ゆるTTSで朝は起きれるのか

サーバ(AzureWebsite)でフィードをとってアプリでTTS(TextToSpeech)させようとしている.

こやつに朝、目覚まし代わりにニュースを読ませて起こしてもらおうと思っている.うむ、すばらしい.ついでにいい感じのキャラがいると映えるぞお^~

 

最初はゆっくり(AquesTalk)を検討したのだがサーバ側で走らせようとしたらutf-8に対応した関数の挙動がおかしかったりできた実行ファイルをkuduで走らせたら走らなかったりした.サーバがだめならクライアントで動けばいいだろと思ってAquesTalkのAndroid版の開発をしたのだが、AndroidStudioのエラーログを見てもrunningだけはいて死んでいたので断念した.

 

で、そもそもAndroidにはTTSの開発環境があったのでそれを使うことにした.

ついでにKDDIのN2の声がいい感じだったのでPlayStoreからそれも入れた.

早速TTSさせようとアンドロイドで日本語音声出力:音声読み上げを参考に書いたら動いた.うむ、未来は明るい.ちなみに私のスマホはXperiaZ3compact Android5.0.2です.

 

あとはサーバ側をAPI化すればよさそう.

 

kakasiを使おうとした

Azureのwebsiteで漢字をひらがなにしようとkakasiを使おうとしたら辞書のディレクトリはc:\kakasi\share\kakasiしかだめだとは...

Azureでは基本的に操作できるディレクトリはD:\home\以下なのでこれではkakasiが使えない.

そもそもC:\直下に置くという前提の設計はどうなのか.

 

f:id:happasuke:20160119210934j:plain

解決策としてはソースから作り直せばよさそうだがここはyahoo apiを使おう.

 

simplexml_load_fileでrssが拡張子のRSSを取得できない

ちょっとこまったので覚書

phpにはsimplexml_load_fileという便利なxmlをいい感じに分解してくれる関数がありますが、これを使ってはてなrssを取得しようとしたときにこけました.

 

はてなrssは以下のURLで提供されています.

http://b.hatena.ne.jp/hotentry/it.rss

一見サイトを訪れただけではどこにrssがあるのかわかりませんでしたが、ggったっらurlに.rssとつければそれがrss扱いになるということ.素晴らしい、感動した.

 

まず、これをphpから取得してみます.

...何も起こらない.

 

よくよく他のsimpleなんたらの使い方を見てみるとすべて拡張子xmlになっているではないか.hmm

 

そこでfeedburnerなるものを使ってみました.

feedburner.google.com

 

これを使うと登録したフィードのurlがfeedburner.google.com/nantokaになります.

このurlをsimplexml_load_fileを実行するとあら不思議、フィードがとれるんですね.

 

XMLの構造はwgetかなんかでみてやればわかります.

 

 

windows10のバグ

windows10でバグを発見したという話はよく聞くし、既出しているかもしれないがなんとなく投稿

 

snipping toolでキャプチャし、英語の小文字、JPGで保存。

そのあとにエクスプローラからファイル名を大文字に書き換えるとエクスプローラ上には小文字のままで表示されてしまう。しかし、プロパティやプロンプトでみてみると変更されている。エクスプローラのバグなのだろう。