2020年12月9日水曜日

Eclipse EEのDynamic Web Projectにおいてライブラリを管理するためにGradleを使う方法

Eclipse EEのDynamic Web Projectにおいてライブラリを管理するためにGradleを使う方法は以下のとおりです.

  • Dynamic Web Projectを作成する.
  • プロジェクトのルートに以下に記すbuild.gradleファイルを作成する.
  • プロジェクトを右クリックして表示されるポップアップメニューで「Configure->Add Gradle Nature」を選択する.
  • srcディレクトリの配下にmain/javaディレクトリを作成する.
  • WebContentディレクトリをsrc/mainに移動し,「webapp」ディレクトリに改名する.
  • プロジェクトを右クリックして表示されるポップアップメニューで「Properties->Deployment Assembly」を選択する.
  • 「Web Deployment Assembly」ダイアログでAddボタンを押下する.
  • 「New Assembly Directive」ダイアログで「Folder」を選択し,Nextボタンを押下する.
  • 「New Assembly Directive」ダイアログで「src->main->webapp」を選択し,Finishボタンを押下する.
  • プロジェクトを右クリックして表示されるポップアップメニューで「Gradle->Refreash Gradle Project」を選択する.
  • buildディレクトリを削除する.

以前同じタイトルの内容[1]を投稿したのですが,こちらのほうが前のよりよい気がしたので,今後はこの方法でやっていこうと思います.

[1] Eclipse EEのDynamic Web Projectにおいてライブラリを管理するためにGradleを使う方法, https://emaizetto.blogspot.com/2020/04/eclipse-eedynamic-web-projectgradle.html

2020年4月11日土曜日

Eclipse EEのDynamic Web Projectにおいてライブラリを管理するためにGradleを使う方法

Eclipse EEのDynamic Web Projectにおいてライブラリを管理するためにGradleを使う方法は以下のとおりです.

  • Dynamic Web Projectを作成する.
  • プロジェクトのルートに以下に記すbuild.gradleファイルを作成する.
  • プロジェクトを右クリックして表示されるポップアップメニューで「Configure->Add Gradle Nature」を選択する.
  • ライブラリを更新した場合は,プロジェクトを右クリックして表示されるポップアップメニューで「Gradle->Refreash Gradle Project」を選択する.

ちょっと失われる設定もあるみたいですが,私的には問題ないので,問題がおきないうちはこの環境でWebアプリを作っていこうと思います.以前から構成管理に憧れていて,ずっとやりたかったんだけど,やっと踏み出すことができて良かったです.

「org.json.JSONException: Unterminated string at XXXX」に対処する方法

org.jsonライブラリを使ったコードでJSON文字列を処理した際に

org.json.JSONException: Unterminated string at XXXX
という例外に出くわしました.この例外は,文字列に直接記述することが許されていない文字を文字列に記述した際に生じるみたいです.そういうわけで,この例外に対する対処方法は,文字列に直接記述することが許されていない文字については,エスケープシーケンスで記述するということになります.

JSONの仕様[1]によると,値としての文字列に直接記述できる文字は,以下のとおりです.

  1. 0x20-0x21
  2. 0x23-5B
  3. 0x5D-10FFFF

上記の範囲に収まらない文字については,エスケープシーケンスで記述する必要があります.例えば,値として「0\t1\n」という文字列を記したい場合,「0x30,0x09,0x31,0x0a」と記すとNGなので,「0x30,0x5c,0x74,0x31,0x5c,0x6e」と記す必要があります.(0x30='0',0x31='1',0x09='\t',0x0a='\n',0x5c='\',0x6e='n',0x74='t').

今回の例外は,そのことを知らず,エスケープシーケンスで記す必要のある文字を直接記してしまったために発生したということになります.

[1]RFC8259, https://tools.ietf.org/html/rfc8259

2020年4月1日水曜日

Oculus GoでVideoPlayer越しにビデオを再生できない問題を解消する方法

VideoPlayerを使ってビデオを再生するOculus Go用のプログラムを作成した際に,次のメッセージが表示されて再生できないという問題に出くわしました.

Unity : AndroidVideoMedia: Error opening extractor: -10000

数日間試行錯誤を続けたところ,ビデオのURLに原因があることをつきとめました.

今回デバッグのために作成したコードは以下のとおりです. このコードの14行目でビデオのURLを指定しているのですが,それが「https://192.168.1.5:8443/test.mp4」のときに上記のエラーが発生します.このエラーを解消する方法は,ビデオを「https://hogehoge/test.mp4」というURLでアクセスできる場所に置き,そのURLをvideoPlayer.urlの値に指定するというものです.そうすると,ビデオが再生されるようになります.

原因はURLにあるところまではわかったのですが,URLのどこが原因かは定かではありません.なんとなくですが,ポート番号が怪しい(ポート番号の指定は無視されデフォルトのポート番号が使われているような)気がしています.

2020年3月30日月曜日

SPRESENSEで自作MQTTパブリッシャを動作させる方法

SPRESENSEで自作MQTTパブリッシャを動作させてみようと下記の「MqttPublisherTest.ino」というプログラムを実行したところ, 次のようなエラーに出くわしました.

mosquitto
New connection from 192.168.1.21 on port 1883.
Client  has exceeded timeout, disconnecting.
シリアルモニタ
failed, rc=-4

どうも使っているライブラリが怪しかったので,「SparkfunESP8286WiFi.cpp」というコードの(1)の部分を修正したところ, 上記のエラーは解消することができました, ただ,今度は次のような別のエラーが表示されるようになりました.

mosquitto
New connection from 192.168.1.21 on port 1883.
New client connected from 192.168.1.21 as ESP8266Client-0 (p2, c1, k15).
Socket error on client ESP8266Client-0, disconnecting.
シリアルモニタ
failed, rc=-1

処理内容を細かくチェックすると,MQTTブローカからの返信を処理していない箇所があったので, 「SparkfunESP8286WiFi.cpp」というコードの(2)の部分を追加したところ, シリアルモニタのエラーは解消することができました.

mosquitto
New connection from 192.168.1.21 on port 1883.
New client connected from 192.168.1.21 as ESP8266Client-5165 (p2, c1, k15).
Socket error on client ESP8266Client-5165, disconnecting.
シリアルモニタ
なし

引き続き処理内容を細かくチェックすると,コネクションの状態を返すべきところがWiFiの接続状態を返している箇所があったので, 「SparkfunESP8286Client.cpp」というコードの(3)の部分を修正したところ, ようやく期待通りの動作をさせることができました.

2019年10月31日木曜日

Tomcat 9がEclipseから起動しない問題を解消する方法

インストーラー付きのTomcat 9をWindowsにインストールし,Eclipseから起動すると次のメッセージが表示されて失敗する問題に出くわしました.

Starting Tomcat V9.0 Server at local host has encountered a problem.
This server cannot be started because one or more of the ports are invalid.
Open the server editor and correct the invalid ports.

この問題の解消方法をメモしておきます.

  • インストーラーでインストールしたTomcat 9を削除
  • Tomcatのサイトから「64bit Windows zip」をダウンロード
  • ZIPファイルを展開し,所望の場所にインストール
  • Eclipseの「Preferences > Servers > Runtime Environments」でTomcat 9を登録
  • 「Servers」ビューにTomcat 9を登録
  • Tomcatを起動

2019年5月2日木曜日

Eclipse上でポート番号を指定してApp Engineを起動する方法

Eclipse上でポート番号を指定してApp Engineを起動する方法をメモしておきます.

手順は以下の通り.

1Project Explorer内の当該プロジェクト上で右クリック.
2ポップアップメニューにある「Debug As」と「Debug on Server」をこの順番で選択.
3Debug on Serverダイアログで「Manually define a new server」を選択.
4「Select the server type」内のツリーメニューにある「Google」を「App Engine Standard」をこの順番で選択.
5「Server port」に指定したいポート番号を入力.
6「Finish」を押下.

ちなみに上記の手順はGoogle App Engine Javaのものです.他の言語の場合は異なるかもしれません.