Progate初回

今日はHTMLとCSSの学習としてProgateを勧められたため,始めてみた.
初回はHTML&CSS初級編で,HTMLは触ったことがあったが,CSSを自分で書いたのは初めてだったため,新鮮だった.

疑問に思ったことが次のステップで書かれていたりして,色々とわかったことも多かったが,まだまだわからないことだらけだと感じた.

今やっていることをGASでも活かせれば,簡単なサイトを作って公開できるといいなと思う.
(ちょっと作ってみたけど,自分がどのくらい理解できていないかよくわかる)

GPSトレースアプリの開発

今,研究室ではGPSを用いて何かをしようとしている.

GPSから受信しているデータはNMEAフォーマットと呼ばれるもので
GPSのNMEAフォーマット
このサイトに記載されているように,$GPGGAから緯度と経度を取得するようにした.

また,簡単にGPSデータのトレースが行えるように,今回はMapにピンを自動で打つFootPrints
という名前でUWPのアプリを作ることにした.

f:id:kyoshitomi:20180526223624g:plain

アプリの動きはこんな感じ.
GIFでは,GPSをあえて不安定な動作をさせている.

初期の座標はシアトルだけど,シアトルと移動後の航空写真のデータの質に差がありすぎ...
自動車の大きさも4倍くらい違うし.

ポイントは
最初のサイトにも書かれていたけど,度と分で書かれた座標を直接使うことができないことだ.
こんな感じでデータの変換を行った.

static double GpggaToDegree(string snum)
{
  double num = double.Parse(snum);
  num /= 100;
  double min = num % 1;
  double deg = num - min;

  return deg + min/60*100;
}

久しぶりにUWPとPrismを使った.Main(Config)画面が寂しいが,今後の要求に対応するための領域として確保しておく.エラーの処理もしないと.

gitlab.com

ItemsSourceとDataContext

例えば,トランプのカードを並べて表示したいと思ったとき,

<ItemsControl ItemsSource="{Binding Cards}">
  <ItemsControl.ItemTemplate>
    <DataTemplate>
      <Views:CardCell CardNumber="{Binding Number}"
                      CardMark="{Binding Mark}"/>
      </DataTemplate>
   </ItemsControl.ItemTemplate>
</ItemsControl>

UserControlであるCardCellに依存関係プロパティであるCardNumberとCardMarkを実装してますが,CardCellにViewModelを設けると,DataContextが上書きされて,ItemsSourceの各要素が取得できなくなってる気がします.

自分がどこで誤っているのかわかりません...

  1. 前提が間違っている (そもそもこんな書き方しない)
    • ItemsSourceにはViewModelのリスト等をBindingする?
  2. 依存関係プロパティのBindingの仕方を工夫する必要がある

本当にDataContextが上書きされているだけなら,ViewModelをItemsSourceに設定するだけでよさそうだけど,一度試したときは動作がおかしかったような...
PrismのViewModelLocator.AutoWireViewModelが要らなかったかな

追記:
普通にできた...

Windowsサービスとファイルパス

最近はWindowsサービス(以下WS)にを少し触っている.

WSの開発についてやWSをコンソールでデバッグする方法についての詳しい内容がを載せている先人がいたため,

ameblo.jp

参考にしつつ,コードを組んでいたが…

ほとんどの内容はコンソールと大差ないと考えていたら
ファイルパスがコンソール時のデバッグと動作が異なっていた.

始めは相対パスを使っていたが,WSとコンソールではもちろん動作するディレクトリが違うため,動作は異なる.

また,

Environment.GetFolderPath(Environment.SpecialFolder.Personal)

Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

を使ったときに,ファイルパスが
C:\Windows\system32になってしまうため,気を付ける必要がある.

今日気づいたこと

ブログはたまに書こうと思いつつもいつも後回しにしてしまい,書かなくなってしまう…

これからは定期的に書くことを意識しようと思う.

今日気づいたことは,JSONの表記の仕方について.

JavaScriptでは,'クォーテーション'と"ダブルクォーテーション"の違いが(多分)ないから
JSONも同様だろうと思い,適当にKeyを"ダブルクォーテーション"で,Valueを'クォーテーション'
で表記したため,痛い目にあった…

Google DriveJSONを置き,GASから呼び出そうと思い,
画像と同じように
http://drive.google.com/uc?export=view&id=
の後にJSONのIDを入れれば簡単に呼び出せるだろうと高を括っていたら,
JSONの表記を知らなかったために気づくまでにかなりの時間を要した.
(画像同様に直リンクはきちんと取得可能)

JSON 文字列をデコードする

JSONは"ダブルクォーテーション"で書きましょう.

JSONGoogle Driveに置いたことで,コードに直書きの残念な状態にならず
GASのバージョン管理を更新しなくていいため,楽になった.

夜のfoopについて

foopはラボメンの長野君が卒業研究で用いる水耕栽培を行う機械だ.

目に見えて植物が成長している様子を研究で用いている本人が一番楽しみにしているようだ.


基礎実験から始めて,3日目からLEDが点き始めたため,24時間光を当て続けているのかと思っていたが,

f:id:kyoshitomi:20170620234417j:plain

夜の23時ごろにLEDが消えて,foop内の植物にも夜が訪れるようだった.

FE -合格証書-

今日,FEの合格証書が届いた.

資格を取ることが初めてだったため, 見た目が思ったよりしっかりしていたので驚いた.

郵送された封筒には二つ折厳禁の印と厚紙が入っていた.

ネットでは一応合否を見ていたものの,実際に書類が届いたことでようやく安心できた.