落とし穴

また正規表現。
知らない人にとってはオモロク無い。

ちなみに、栂池の前日に話題に上っていたGolden Cheetahは、
基本Linux、Mac OSX用のフリーウェアだけど、
Windowsでも一応大丈夫っぽい。

何だかんだで、かなりの長文で、しかもメインはソフトの話題。

もう少し話題の内容を補足。
そもそもgarminのedgeシリーズのデータをPowerAgentで使える
のか?という小野Dの疑問が発端で、結論から言うと、
使える、んだけど、ちょっと面倒なのと出力が今一バグっぽい。

PowerAgentでデータを見るには、Training Centerというgarmin提供
のフリーウェアを使ってPCへデータを取り込んだ上で、そのデータを
.tcx形式でファイルに出力して、これをPowerAgentでインポートして
やれば良い。

このインポートにちょと難があって、ちゃんと変換できないデータが
一部ある。距離、速度等がそうで、パワーは一応ちゃんと取り込める
ので、平均PowerとかNPとかTSSなんかも見ることは可能。
個人的には、変換の中途半端感が気にくわないけど。

で、他に対応している解析ソフトは~って話。
最右翼はご存知(?)WKO+。
開発はパワトレ本の著者だし、対応デバイスも
Powertap、SRMは勿論、他の一般市場流通のパワーメーター系
は一通りOK。但し、1マシン1ライセンス方式で、$100以上
平たく言うと、パソコン変えたら、もう使えません、買い直せってこと。
一応、2台目以降では割引になるようなシステムだったと思うけど、
それでも数十$かかったはず。
ソフトにこれだけの金を出せるかどうかってところだな。
便利は便利だし、なんせ本家なので、解析方法とかに間違いは無い。

Golden Cheetahは、どっちかっつーと、オープンソースの
フリーウェアなので、基本Linux向けで、気に入らないところは
自分でソースコード直してコンパイルして実行ファイル作れや!
というスタンス。商用じゃないから、バグフィクスとかも遅い。

ボクはどっちかというとアセンブラ屋なので、実行ファイルだけ
あれば、逆アセンブルして修正することも可能なのだが、
正直、Windows用のアプリでこれをやると、訳分からんAPIの
呼び出しルーチンをアセンブラ語で解読しなくちゃならんので、
こんなの拷問以外ナニモンでもなく、ともすれば、クラッキング扱い
まで受けるので、金をもらったとしても、やりません。
面白くないし。

Mac OSX対応なのは、Mac OSXはkernelがUNIX系だから。
こういう、ディープなこんぴゅーたわーるどでは、色々細かい分類が
あったりして、LinuxはUNIXとは違うとか、他にも似たようなのに
BSDがあったりとか、知らない人には日本語の体裁の宇宙語としか
思えない感じを与えて、非常に不愉快。
ちなみに、”プロ”(物理屋とか)はWindowsをコンピュータと
認識しておらず、おもちゃ感覚だ、と師匠から叩き込まれてるのだが、
UNIX系のOSを触る機会も、研究を止めてからはグッと減った。
もう、UNIXライクなOSに触れるのは、ルーターをちょっと弄るとか、
Windows上でのエミュレータ環境で遊ぶとか、そういうのばっかり。

能書きが大分長くなったが、本日は代休のためお休み。金より時間。
AM4:30に目覚めるも、月曜にロングやると、回復が普段と
比べて1日ずれ込むので、おとなしくしておくことにした~
というのはもっともぽいけど、二度寝の誘惑に負けた言い訳とも
言えなくも無い。意志薄弱。

AM7:00に起きて、前回作ったgarminのtcx形式で出力する
データをcsv(特に、パワータップが出力する形式)に変換する
スクリプトの修正。
前verは、心拍とか速度とか、出力しない項目がある場合、
変換出来なかったので、今回はそういうのがあっても
大丈夫にするのが目的。
といっても、直すのは難しくなくて、とりあえず元データに無いものは
0で埋めておいて、データがあれば置き換えして、
データ一個のまとまりが終わるタイミングで必要なものを
一括出力するだけ。

宇宙エンジニアKnKnが
バグフィクスをするタイムは、

わずか0.05hourに過ぎない。
では、修正プロセスをもう一度m(ry

CV:政宗○成

0.05hourは言い過ぎだが、色々思案した合計30minくらいで終了。
早速データ変換してみたら、どうも上手くいかない。(お約束)
駄目な出力の場合は、ラップ数を表すデータが思い通りに出力
されないのだが、性質の悪いことに、きちんと変換されるデータもある。
なんだこれ?

色々変換対象のデータを比較してみて、結局、
ラップを表す文字列のマッチングを
/<Lap*/
していたことが原因だと発見。こういうのは間違いに気づきにくい。
なんせ従前の通り、正しく表示されることもある、ので。

上の指定だと、
“<La”の後にpの0回以上繰り返しを含む文字列にマッチング、
となるため、
<Lap StartTime>
以外にも、
<Latitude> , <Lang>
なんかの<Laで始まってpを含まない文字列とも一致してしまうわけで、
当然、正しく変換できていたものは、たまたまデータの中に
<Lap StartTime>
しか”<La”で始まる文字列が無かったから、なんですねぇ。

最小変更ということで、
/<Lap.*/
として、”.”を”*”の前に加えて(”.”は任意の一文字を表す)
“<Lap”の後に、任意の一文字を0回以上繰り返す
に指定し直して解決。
まぁ、最初から<Lap StartTime>をそのまんまマッチングの
条件で指定してやれば、何の問題も無かったんだけどさ。
手抜きしたのが原因と言えなくも無い。

正規表現は慣れると便利だけど、バグの温床だなぁ。
使い方が難しい。

KnKn について

Amateur road racer in Japan Everyday easy life : )
カテゴリー: ロード練習日記 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中