2017年8月23日水曜日

Windows7 ファイル名、フォルダ名の変更が遅い

最近、ファイル名、フォルダ名の変更が遅く、数秒間、待たされるようになりました。
環境は、Windows10で、VMwareを使って、ゲストOSでWindows7を動かしています。
このWindows7で、名前の変更が遅くなりました。

インデックスのオプションを確認しましたが、問題が発生するのは、対象のフォルダ外のようでした。

セキュリティソフトは、ESETを使っています。

とりあえず、パソコンの再起動、Windows7の再起動で解決しましたが、今後も不安が残ります。
Windowsでは、シャットダウンでは、リセットされませんから、再起動が有効だったのかもしれません。

たぶん、しばらくしたら、また、遅くなると思います。

2017年8月10日木曜日

OpenLayersで、目的の場所が表示されない

OpenLayersで、目的の場所が表示されずに悩みました。

プログラムの中で、数字を決めて表示することはできました。
しかし、urlの引数に、GPSの位置を渡すと、目的の場所が表示されず、悩みました。
経度は制御できるのに、緯度がでたらめな場所になってしまいました。

原因は、変数が文字列の扱いになっていたことでした。
URLの引数の値を、parseFloat()で変換することで解決しました。

たった、これだけのことに、半日も費やしてしまいました。
これだから、型がなかったり、暗黙の内に型変換してしまう言語は嫌いです。

FormDataを使って、サーバーにデータを送信する

formのデータをjavascriptを使って、node.jsのサーバに送信しました。

HTMLのフォームは、次の通り。
/api/mapにデータを送ります。
onclickの記述が無ければ、ボタンをクリックするとページが表示されます。
今回は、画面の遷移を行わないように、javascriptで処理します。
javascriptで処理するため、methodやactionの指定は不要のはずですが、テストには便利なので残しました。
参考までに、formに、onsubmitイベントを記述する方法と迷いました。

<form method="POST" action="/api/map">
<input type="text" name="name"/>
<input type="hidden" name="lng" value="138"/>
<input type="hidden" name="lat" value="38"/>
<button onclick="regPoint(this);return false;">SET</button>
</form>;


javascriptの記述。

  function regPoint(el){
    let form = el.parentElement;
    let formData = new FormData(form);

    fetch("/api/map",{
      method: "POST",
      body: formData
    }).then((response) =>{
      if(response.ok){
        alert("ok");
      }else{
        alert("ng");
      }
    })
  };


これをnode.jsサーバーで受け取るようにしましたが、うまくいかず、悩みました。
FormDataを使うと、multipart/form-dataでデータが送られるため、Express(node.js)側で、修正が必要でした。
'connect-multiparty'モジュールを使って解決しました。

var multipart = require('connect-multiparty')
var multipartMiddleware = multipart();

app.post('/api/map', multipartMiddleware, function(request, response) {
    console.log("Name: " + request.body.name);

}

2017年8月7日月曜日

OpenLayers Examples GPS 位置がずれる問題

サンプルプログラムは、こちらのページです。
https://openlayers.org/en/latest/examples/geolocation.html

このページが正常に動かず、悩んでいましたが、ひとつ、解決しました。

httpではなく、httpsでアクセスする必要がありました。
Chromeや、iPhoneで動かなかったのは、これが原因でした。

もうひとつの問題、位置がずれる問題ですが、今日は、ずれません。
謎を残しつつ、先に進みます。

2017年8月4日金曜日

OpenLayers Examples GPSの位置がずれる

OpenLayersのサンプルプログラムを表示させましたが、位置がずれることに悩んでいます。
サンプルプログラムは、こちらのページです。
http://openlayers.org/en/latest/examples/geolocation.html

まず、問題の1つは、ブラウザにより、挙動が異なることです。
firefoxでは、一応、それらしい動きをしますが、Chromeでは動作しません。
具体的には、GPSのTrackをオンにすると、firefoxでは、現在地をマークします。
Chromeでは、Only secure origins are allowed (see: https://goo.gl/Y0ZkNV).と表示され、マークされません。
昨日は、大丈夫だったような気がして、その点でも悩んでいます。これは記憶違いかもしれませんが。
少し調べてみると、サンプルプログラムの記述と、実際のサンプルプログラムが異なるようで、数日の間に、何か修正が入った可能性もあると考えています。

次の問題に、マークの表示位置がずれます。
昨日は、正常な位置を示していましたが、今日は、10km以上離れた場所を表示しています。

公式サイトのサンプルが、この状態ですから、それを元に自作したプログラムも不可解な挙動になっています。
こちらは、昨日は、異常な場所を示していましたが、今日は、正常な場所を示しました。その後は、GPSのAPI自体がエラーになり動きません。

原因の可能性としては、イベント処理の順序が確定しないのではないかと考えています。
また、EPSG:4326からEPSG:3857への変換が見えないところで行われているように思います。
このあたりが怪しいと考えています。