2016年4月30日土曜日

[Android] 楽天Edyの決算処理が中断で支払いできない原因と直し方 [おサイフケータイ]

How to fix the Rakuten Edy error

楽天Edyで決済しようとしたらこんな画面がでました。
決済処理が中断されている場合があります。
ご購入サイトから、お客様のEdy決済が完了しているかどうかをご確認ください。

このエラーの原因と対策方法をまとめました。


環境

  • Androidスマートフォン SH-60E


デフォルトのブラウザーで開けば決済できる

この画面のお支払い画面のリンクを開くとき

ChromeやFirefoxで開いていたので決済できませんでした。
地球のようなアイコンの「ブラウザ」で開いたら決済できました。


ブラウザを選ぶ画面が出ない場合

ChromeやFirefoxが「常時」に設定されていると選択する画面が表示されません。
設定 - アプリ
からChromeやFirefoxを開いて
デフォルトでの起動 の 設定を消去
をタップすると次回から選択画面が表示されます。


選択肢にブラウザがない場合

ブラウザが無効に設定されていると、選択画面が表示されても選択肢にブラウザが表示されません。
設定 - アプリ - 全てのアプリ
からブラウザを開いて 有効にする をタップすると次回から選択肢に表示されます。


関連ブログ

FirefoxでJavaSriptが応答しなくなるサイトの対策と高速化
[SEO] ブログのPocket(あとで読むサービス)への登録数を調べる方法
ツイッターのアカウントをブロックやミュートせずにタイムラインから消し去る方法
Blogger.com (blogspot)のツイッターカードにサムネイルを設定する 2016年版
[セキュリティ] 引用サイト・Togetterに引用された自分のツイートを検索・削除する方法
[セキュリティ] Twitterの「このリンクは安全ではない」「このリクエストを保留しています」の対策2015年版

以上、参考になれば幸いです。

2016年4月23日土曜日

[クラウド] BluemixのJavaアプリ開発ではまったところと対処方法

The programming pitfalls in Bluemix

コンソールJavaアプリとして開発した
クエリちゃんの動画投稿数をツイートするサービス
をIBMのクラウドサービス・Bluemixで実行してはまったところと対処方法をまとめてみました。

ソースはソースはGitHubにあります。
https://github.com/mtk-f/TweetNicoMovieForQuerychan


環境

  • Eclipse Mars. 2 でMavenプロジェクトとして開発したコンソールJavaアプリ


Bluemixの環境変数ではまった

このアプリはTwitter4jライブラリーを使ってツイッターに文章を投稿します。
投稿するにはツイッター用のAPI KEYを設定する必要があります。
API KEYは非公開パラメーターなのでソースに載せることができません。

Twitter4jライブラリーはAPI KEYをソースに書く以外に環境変数に設定する方法があり、Bluemixはダッシュボードから環境変数を設定できます。
Twitter4jの環境変数はピリオド(ドット)の文字を含むのですが、Bluemixはピリオドを含む変数名を設定すると実行時にエラーになります
ピリオドを含む環境変数名はBluemixのbashでexportコマンドが失敗します。

例えば環境変数にこんな設定をすると

こんなログが出力されます。
/bin/bash: line 20: export: `twitter4j.oauth.consumerKey=1234': not a valid identifier

対策としてピリオドを含まない環境変数を使うように対応しました。


Bluemixのログではまった

標準出力はBluemixのログに出力されるのですが、標準出力した順番とログに出力される順番は一致しないことがあります。
例えば次のJavaアプリを実行すると


Bluemixのログに次のように出力されました。


ログを読むときは時系列順に読み替える工夫が必要です。



関連ブログ

[クラウド] Bluemix にJavaアプリを実装するまで
[Java] Android StudioやEclipseのお節介な警告を消す方法
[Azure] クエリちゃんの動画投稿数をツイートするサービス をGitHubに公開するまで
C#のAzure用Webジョブ開発ではまったところ

以上、参考になれば幸いです。

2016年4月16日土曜日

[クラウド] Bluemix にJavaアプリを実装するまで

How to push java console applications for Bluemix

IBMのクラウドサービス・Bluemixを使って クエリちゃんの動画をランダムにツイート というアプリケーションを稼働させました。

ソースはソースはGitHubに投稿してあります。
https://github.com/mtk-f/TweetNicoMovieForQuerychan

このアプリをBluemixで稼働させるまでの手順をまとめました。

環境

  • Windows 10
  • Eclipse Mars 2、Pleiades日本語化プラグイン


コンソールJavaアプリはjarファイルにエクスポートする必要がある

BluemixはEclipseで作ったJava EEアプリケーションをや配備するEclipse用プラグインが公開されていますが、コンソールJavaアプリはEclipseから配備することができませんでした。

今回作ったアプリケーションは、Main()メソッドから処理を開始するコンソールアプリケーションです。
BluemixにコンソールJavaアプリを配備するにはまずjarファイルにエクスポートします。
Eclipseでjarファイルにエクスポートする方法は次の通りです。

プロジェクトのプロパティーを開いてメイン・クラス項目にMainメソッドを持つクラスを設定します。

プロジェクトのエクスポートから 実行可能JARファイル をクリックしてjarファイルの保存場所とファイル名を指定するとエクスポートできます。


Bluemixにjarファイルを配備するにはcfコマンドを使う

Bluemixにjarファイルを配備するには cf.exe というコマンドラインインターフェイスをダウンロードして操作します。
コマンドプロンプトから文字入力による操作が必要なので難易度が高めです。

ダウンロードはこちら。
https://github.com/cloudfoundry/cli/releases

あらかじめWebのダッシュボードからBluemixのエンドポイントを調べておきます。
自分のエンドポイントはシドニーでした。

ここからコマンドプロンプトでcf.exeを使って操作します。

Bluemixのエンドポイントに接続します。
シドニーの場合の例:
cf api https://api.au-syd.bluemix.net

ログインします。
Bluemixにアカウント登録したメールアドレスが必要です。
例:
cf login -u メールアドレス -o メールアドレス -s dev
このあとパスワードを聞かれるので入力します。

jarファイルをアップロードします。
例:
fc push "アプリケーション名" -p "jarファイル名" -no-route

これでコンソールJavaアプリをBluemixに配備することができました。
配備したアプリケーションの開始や終了はcfコマンドからもWebのダッシュボードからも操作できます。


Bluemixを使ってみた感想

Azureに比べるとBluemixの日本人のユーザーは少ない印象ですが、丁寧に日本語翻訳された資料が公開されているので情報量には困りませんでした。
今回はコンソールアプリを試しましたが、Java EEアプリケーションを Websphere Application Server の仮想環境で運用すると威力を発揮しそうです。

なお、Azureには日本人がデザインした「クラウドガール・クラウディア窓辺」というイメージキャラクターがいてことあるごとにノベリティを配布いしていますが、Bluemixにはそのようなキャラクターはいません。


関連ブログ

[Azure] クエリちゃんの動画投稿数をツイートするサービス をGitHubに公開するまで
C#のAzure用Webジョブ開発ではまったところ
[Java] Android StudioやEclipseのお節介な警告を消す方法

以上、参考になれば幸いです。

2016年4月9日土曜日

[Visual Studio] C# のお節介な警告を消す方法

How to hide warnings on C#

Visual Studioで開発したAzureのWebジョブアプリ用
クエリちゃんの動画投稿数をツイートするサービス
は完成するまで多くの警告が表示されました。
Visual Studioの警告は「直さなくても動作するけど直した方がいい」というものがほとんどで、開発中に表示されることはよくあります。
警告を消す方法を調べてまとめました。


環境

  • Windows 10
  • Visual Studio 2015 Community


警告はアノテーションで消せる

たとえば
この非同期メソッドには 'await' 演算子がないため、同期的に実行されます。'await' 演算子を使用して非ブロッキング API 呼び出しを待機するか、'await Task.Run(...)' を使用してバックグラウンドのスレッドに対して CPU 主体の処理を実行することを検討してください。
という警告を消すとします。

エラー一覧でコードの数字を調べます。
コードに CS1998 とあるので数字は 1998 です。

ソースに
#pragma warning disable 1998
と書くと、それ以降の CS1998 の警告は全て無視されます。

また、
#pragma warning restore 1998
と書くと、それ以降の CS1998 の警告が表示されるようになります。

警告を消したい範囲を
#pragma warning disable 1998

#pragma warning restore 1998
で囲むように書けば別の範囲のCS1998の警告をもれなく発見できます。

別の警告
(略) 呼出しの結果に 'await' 演算子を適用することを検討してください。
を消したい場合はコードが CS4014 なので
#pragma warning disable 4014

#pragma warning restore 4014
で囲みます。


コードを正しく書けば警告は解決する

Visual Studioの警告はほとんどが解決手段がある場合に表示されます。
たとえば 1998 の警告
この非同期メソッドには 'await' 演算子がないため、同期的に実行されます。
が表示されるメソッドで、オブジェクトを返さない(void関数のようにしたい)場合は

をメソッドの最後に追加します。

別の警告
(略) 呼出しの結果に 'await' 演算子を適用することを検討してください。
の場合はメソッドの定義にawaitキーワードを追加します。
Mainエントリーポイントのように awaitキーワード が使えないメソッドは、非同期メソッドをWait()メソッドで呼びます。
Wait()メソッドについては
C#のAzure用Webジョブ開発ではまったところ
でまとめてあります。

ほとんどの警告はコードを修正することで解決します。
完成時は警告やアノテーションは残さないようにコードを修正するべきです。


関連ブログ

[Java] Android StudioやEclipseのお節介な警告を消す方法
C#のAzure用Webジョブ開発ではまったところ
[Azure] クエリちゃんの動画投稿数をツイートするサービス をGitHubに公開するまで
Visual Studio Community 2015 をISOファイルからWindows10にインストールする方法
[Android] Xamarin でアプリを作ってみました

以上、参考になれば幸いです。

2016年4月2日土曜日

C#のAzure用Webジョブ開発ではまったところ

The programming pitfalls in C#

Azure用Webジョブアプリ クエリちゃんの動画投稿数をツイートするサービス
を作ってはまったことろとその対処方法をまとめました。

このアプリのソースはGitHubに投稿してあります。
https://github.com/mtk-f/TweetNicoCountForQuerychan


環境

  • Windows 10
  • Visual Studio 2015 Community


Visual Studioでの開発

Visual Studioで Azure Webjob のプロジェクトとして開発しました。
コンソールアプリケーションを開発するの同じで、完成したもの普通のコンソールアプリでした。

処理内容は次の通りです。
  1. nicovideo.jp のWeb APIで「mmd クエリちゃん」をキーワード検索する
  2. 検索結果のJSON文字列をパース(構文解析)し件数を取得する
  3. 件数をツイッターに投稿する


非同期処理ではまった

このアプリはWeb APIの利用やツイッターへの投稿を非同期メソッドで処理しています。
コンソールアプリケーションはエントリーポイントのMainメソッドからプログラムを実行し、エントリーポイントを抜けたら終了します。
非同期メソッドの完了を待つにはawaitキーワードで同期待ちします。
ところがMainメソッドは非同期処理をawaitキーワードで同期待ちできません
awaitキーワードが使えないので非同期処理が完了する前にエントリーポイントを抜けてしまい、ツイッターに投稿する前にアプリケーションが終了してしまう事態に陥ってしまいました。

問題の起きるエントリーポイント


非同期メソッドの Wait()メソッド で対処しました。
Wait()メソッドは非同期処理が終わるまで待ち続けるメソッドです。

対処後のエントリーポイント


Wait()メソッドを使わないときと使うときのアプリの寿命の違いを図にしました。


Newtonsoft.Json ではまった

Newtonsoft.JsonはJSONフォーマットの文字列を匿名型オブジェクトやクラスに変換するライブラリーです。
オブジェクトをJSON文字列に変換することもできます。
JSON文字列をオブジェクトに変換することをデシリアライズといいます。

Newtonsoft.Jsonは角括弧[]の配列を含むJSON文字列は匿名型オブジェクトにデシリアライズできません。
JSONの配列を匿名型にデシリアイズすると実行時にこのような例外がスローされます。
Newtonsoft.Json.JsonException


匿名型ではなくクラスなら配列をデシリアイズできます。

匿名型の例


クラスの例


匿名型はクラスより字数が少なくメソッドの中で定義できますが、クラスより用途が制限されます。


Azureの新しいポータルではまった

このブログを書いている時点では、最新のAzureポータルからWebジョブの実行をスケジュール設定できません。

Webジョブを定期的に実行するには AzureのレガシーポータルからWebジョブを スケジュールに従って実行 の設定で展開しなおす必要がありました。


クエリちゃんのMMDモデルを公開中です

クエリちゃんのMMDモデルはOneDriveからダウンロードできます。
クエリちゃんのMMDモデルで動画を作ったらぜひ投稿してください。


関連ブログ

[Azure] クエリちゃんの動画投稿数をツイートするサービス をGitHubに公開するまで
Visual Studio Community 2015 をISOファイルからWindows10にインストールする方法
[Android] Xamarin でアプリを作ってみました
ツイッターAPIの検索で複数の画像URLが取得できない対策方法
Twitterの「このリンクは安全ではない」「このリクエストを保留しています」の対策 2015年版

以上、参考になれば幸いです。

2016年3月26日土曜日

[Azure] クエリちゃんの動画投稿数をツイートするサービス をGitHubに公開するまで

Azure app "TweetNicoCount for Querychan" has been published for GitHub

クエリちゃんの動画投稿数をツイートするサービス というアプリのソースをGitHubで公開しました。
https://github.com/mtk-f/TweetNicoCountForQuerychan

nicovideo.jpを「mmd クエリちゃん」でキーワード検索し、該当する動画の数をツイートします。
AzureのWebジョブとして動作することを確認しました。
現在は動作させてません。

このアプリケーションをで開発してソースを公開するにあたりVisual StudioやAzureの便利な機能をまとめました。


環境

  • Windows 10
  • Visual Studio 2015 Community

次のNuGetパッケージを使いました。
  • Newtonsoft.Json
    JSONフォーマットのテキストをパースするためのライブラリー
  • CoreTweet
    ツイッターに文章を投稿するためライブラリー


Azureのいいところ・非公開パラメーターはソースに書かずに自動スワップできる

Azureは デプロイ スロットの自動スワップ により、実行時のパラメーターを別の内容に差し替える機能があります。
開発環境とAzure環境で実行時のパラメーターを変えたい場合に便利です。
今回は公開したくないパラメーターを隠すために自動スワップを使ってみました。

このアプリはTwitter Appliication Manager で発行したAPI KEYやトークンを使うのですが、公開したくないのでソース(App.Config)に書いてません。

Azureポータルの アプリ設定 から スロットの設定 に正しいパラメーターを設定すると実行時に正しく動作するように差し替えています。

非公開パラメーターをソースに書かずにGitHubに公開し、自動スワップを使ってAzureで動作させることができました。


Visual StudioのプロジェクトをGitHubに公開する方法

あらかじめGitHubのアカウントを登録しておく必要があります。
Visual StudioのプロジェクトをGitHubに公開するため GitHub Expression for Visual Studioを追加インストールしました。

これをインストールするとチームエクスプローラーからGitHubに発行できるようになります。
接続の管理 からサインインできます。

設定でユーザー名・メールアドレスの設定、変更でコミット、同期でリモートリポジトリーへのプルとプッシュができます。

Team Foundation Server の用語で統一しているようで戸惑いました。


GitHub のリポジトリーをVisual Studioで開く方法

チームエクスプローラーでローカルGitリポジトリ の 複製 でGitHub のリポジトリーを自分のPCにクローンを保存できます。

Gitを使うまでSubversionしか使ったことありませんでしたが操作方法が分かれば違和感なく使えました。
開発者が自分だけならリポジトリーサーバーがなくてもバージョン管理できるGitの方がSubversionより手間がかかりません。


クエリちゃんのMMDモデルを公開中です

クエリちゃんのMMDモデルはOneDriveからダウンロードできます。
クエリちゃんのMMDモデルで動画を作ったらぜひ投稿してください。



関連ブログ

Visual Studio Community 2015 をISOファイルからWindows10にインストールする方法
[Android] Xamarin でアプリを作ってみました
[Windows] Subversionをインストールしたら起動が遅くなった
ツイッターAPIの検索で複数の画像URLが取得できない対策方法
Twitterの「このリンクは安全ではない」「このリクエストを保留しています」の対策 2015年版
Blogger.com (blogspot)のツイッターカードにサムネイルを設定する 2016年版

以上、参考になれば幸いです。

2016年3月19日土曜日

[Windows10] バックアップボリュームにアクセスできない原因と対処方法

How to fix the backup failure

Windows10 を導入して初めて バックアップと復元 の機能を使ったらエラーになってしまいました。

マウントされたバックアップボリュームにアクセスできません。操作を再実行してください。 (0X8078004F)

システムイメージの作成ファイルをバックアップする のどちらでもエラーです。

このままだと何度再実行しても同じエラーが出続けます。
原因と対策方法が分かったのでまとめてみました、。


環境

  • Windows 10
  • バックアップを保存するため外付けハードディスク
    ※NTFSフォーマット必須


原因はNTFSフォーマットのドライブの保護設定が無効になっていること

Cドライブだけのバックアップなら正常に完了するのですが、複数のドライブをまとめてバックアップに含めるとエラーになります。

複数のドライブのうち、一つがNTFSフォーマットで保護設定が無効になっていました。
保護設定はスタートボタンを右クリックして システム を開き

左の システムの詳細設定システムの保護タブ で確認できます。

保護が無効になっているドライブを選択して構成をクリックし、保護を有効にしたらバックアップできるようになりました。

インストール後の初期設定ではCドライブを除くNTFSフォーマットのパーティションは保護が無効になっているので要チェックです。


バックアップを復元する方法

復元するための操作はコントロールパネルからもできますが、vhdxファイルをマウントして仮想ドライブ化すれば特定のファイルを選んで復元することもできます。
ファイルだけ復元する方法は過去のブログにまとめてあります。
Windows10のバックアップと復元を使ってみました


関連ブログ

[ThinkPad] ノートPCに Windows10 をクリーンインストールしました
Windows10のバックアップと復元を使ってみました
Visual Studio Community 2015 をISOファイルからWindows10にインストールする方法
[Windows10] 外国語を簡単に入力する方法
[Windows10] ファイルの共有と解除を自動化する方法

以上、参考になれば幸いです。