2018年11月11日日曜日

RC-5  気温のデータロガー

使い方、設定、データ保存などのソフト。について。

本体のデータ記録スタートはプレイボタンを長押しする。
ちゃんと記録がスタートしているかどうかを確認すること。
(画面左上にプレイ印がちょっとだけ出るので、それを確認すること。)

DataManagement_C_V3.0.0

今の所の所見
本体のボタンを長押しした時だけ、記録動作のオンオフがされるみたいだ。
ソフトでできるかどうかは調べていないからわかっていない。
後で時間のある時に調べる。

データをエクスポートしたタイミング?で本体のデータは削除される。

パソコンから本体を抜くと記録する動作が止まる。

どの時点でそうなるのかはわからない。
とにかく、記録する動作が止まるから、パソコンからデータを取り込んだ後はプレイボタンを長押しして記録動作の再開をしておくこと。




2018年11月6日火曜日

BMX 、トライアル自転車 注文歴 など

Full Marks - 20in COLOMA - L3-5 注文した。(2019/01/30)

フレーム:Full Marks - COLOMA
フロントフォーク:Full Marks Cr-mo

Steering
ハンドルバー:Full Marks Cr-mo
ステム:Full Marks 160mm x 35°
ヘッドパーツ:Full Marks アヘッド
グリップ:Full Marks

Drive Train
クランク:Full Marks 165mm スクエアテーパー
フリーギア:Full Marks 18T/36ノッチ
固定ギア:Full Marks 12T
チェーン:Full Marks
チェーンテンショナー:ロリポップ型
ペダル:Full Marks ケージ
ガードリング:Full Marks
アンダーガード:Full Marks
  
Wheel
フロントハブ:Full Marks ND
リアハブ:Full Marks ND 116mm
リム:Full Marks
タイヤ:
Full Marks 20x2.0
Full Marks 19x2.5

Brake

ブレーキレバー:TEK-TRO - MT2.1
ブレーキ本体:TEK-TRO Vブレーキ

完成車重量:
11.29Kg

ホイールベース:980mm
チェーンステー:338mm (+15mm/-10mm)
B.B.ハイト:+60mm
ヘッドアングル:71°
マニューバスペース:580mm
(ヘッド上面からB.B.中心までの距離)
ヘッドチューブ:120mm
1-1/8 アヘッド
B.B.:BSA(ネジ込) / シェル幅:68mm
アンダーガード:Type M 対応
リアエンド:116mm / トラックエンド
ブレーキ台座:Vブレーキ
ポスト幅 100mm
重 量:1,685g (フレームの重量?)

ブレーキ台座:肩下 350mm / オフセット 35mm



Full Marks - 24in KLONDIKE 注文した。(219/01/27)
(注文したけど、在庫切れということでキャンセルされた。)
74,000円
フレーム: Full Marks - KLONDIKE
フロントフォーク: Full Marks Cr-mo
     
Steering
ハンドルバー: Full Marks Cr-mo
ステム:
Full Marks 90mm x 25°

ヘッドパーツ: Full Marks アヘッド
グリップ: Full Marks
     
Drive Train
クランク: Full Marks 165mm スクエアテーパー
B.B.: スクエアテーパー 68mmx128mm
フリーギア:
18T/30ノッチ

固定ギア:
Full Marks 14T

チェーン: Full Marks
チェーンテンショナー: ロリポップ型
ペダル:
Full Marks ケージ

ガードリング: Full Marks
     
Wheel
フロントハブ:
Full Marks ND

リアハブ: Full Marks ND 135mm
リム: Full Marks
タイヤ: KENDA - K-RAD 24x2.3
     
Brake
ブレーキレバー: TEK-TRO - MT2.1
ブレーキ本体: TEK-TRO Vブレーキ
完成車重量:
11.23Kg

      
ホイールベース:
1,030mm

チェーンステー: 370mm (+15mm/-10mm)
B.B.ハイト: +35mm
ヘッドアングル: 73°
マニューバスペース: 650mm
    (ヘッド上面からB.B.中心までの距離)
ヘッドチューブ: 120mm
1-1/8 アヘッド
  
B.B.:
BSA(ネジ込) / シェル幅:68mm

  
リアエンド: 135mm / トラックエンド
   
ブレーキ台座:
Vブレーキ

ポスト幅 100mm
ディスクブレーキ台座:
インターナショナルスタンダード

リア用キャリパーで160mmローターに対応
   
重 量:
1,845g

ブレーキ台座:
肩下 370mm / オフセット 35mm
----------------------------------------------------------------
JYU BMX

とりあえず、安いけど、最低限ちゃんと乗れると言われているBMXをお店に注文した。(2018/11/06)
税込¥32184
それプラス、登録費用?に600円位。

来週の13日以降くらいに引き渡せると言っていた。

色はMATTE-BLACK。

実物を見ていないから何とも言えないけど、シンプルでかっこいいと思う。

SPEC
Frame 20.5″ TT, Hi-Ten Frame
Fork 20″ Fork w/ Hi-Ten Tube
Handlebar 8.5″x710mm, 10° Back, 2° Up
Stem 50mm Top-Load Stem
Headset Traditional 1-1/8″
Headset Cap Alloy Cap w/ Star Nut
Brake Lever Plastic
Seat Velo VL-7073
Seat Post Steel 25.4
Sprocket 36T Steel
Cranks 170mm Steel
BB Parts Loose-ball Euro
Pedals Plastic
Rims Aluminium Double Wall
Front Hub Looseball, 36H
Rear Hub Unsealed 36H, 14mm Axle w/ 13T Freewheel
Spokes Steel Black
Tires KENDA Small Block Eight20x2.10

TOP TUBE      20.5"
CHAINSTAY     13.88"-14.25"
HEAD TUBE     74.5°
STAND OVER    8.425"
BB HEIGHT     11.5"
FORK OFFSET   28mm
BAR RISE      8.5"
STEM          50mm

2018年10月27日土曜日

golf 4 バッテリー上がり  クーラント液 ラジエーター液 補充     2019/02/15ラジエータに水補給。

177151km

一週間くらい前にバッテリーがなくてセルが回らなくなってしまった。
(その後一週間、親の車を借りている。)
バッテリーがだめになる2,3日前からセルの回りが少し悪くなっていた。
オルタネーターがだめになったのか?
ただ単にバッテリーがだめになったのか?
で、とりあえず、充電器(メルテックSC-1200)とバッテリー(AC DELCO LN2)を買った。
(今まで使っていた充電器は古いし、今の充電器はバッテリーの様子を見ながら充電してくれているみたいなので、それを試してみたくて買い替えた。)

だめになったときのバッテリーの電圧は12.7V位だった。
一週間後の今計ったら7.6V位まで落ちている。
(後述: 10.2Vを切ったら、もうそのバッテリーは使えないと思った方がいいらしい。
過放電を防止するためのモジュールが売っている。
12V バッテリー過放電防止モジュール IW8990-C12
これをライトとバッテリーの間にはさむとライトの消し忘れのためにおこる過放電を防止できる。今日(2019/01/27)ライトの消し忘れで3時間くらいつけっぱなしにしてしまった。その時の電圧を計るのを忘れたけど、やべえと思って、セルを回したらセルは回ってエンジンがかかったから、11V以上はあったと思う。)
今、だめになったバッテリーに充電中。
一応充電はしている。
充電が完了したら、エンジンをかけてオルタネータがどのくらい発電をしているのか(劣化しているのか、まだ大丈夫なのか)を確かめる予定。

バッテリーを見ていて、くらーんを液を何気に見たら
クーラント液が少し減っていた。
400ml補充した。
MAXより3㎜位上まで入れた。

前回液漏れを直したのが4月の終わりから5月の初めころ。

2019/02/15
クーラント液の警告灯がついた。181539km
水を200ml補充しといた。
で、今、ミニマムの状態。
原液も補充しとかんとなぁ。
3ヶ月ちょっと前にMAXにまで補充しているから、その間で400ml減っていることになる。
この減りの速さは、またどこかから漏れてるなぁ。

2018年8月19日日曜日

ゴルフ4 golf4  窓枠 レギュレーター交換

ゴルフ

昨日、運転席の窓ガラスが落ちたまま上がらなくなった。
何日か前からちょっと変な動きをしていたんだよなぁ。

とりあえず、今日、レギュレータが見えるところまで外した。
https://www.youtube.com/watch?v=OSFWZugODNs&t=323s
ここが丁寧な説明のある動画。

外し方順番
1.ドアハンドルの内側を外す。
2.ドアスイッチなどがついているスイッチパネルを外す。
3.ドアスイッチのスイッチパネルのコネクターを外す。
4.スイッチパネルを外すと外したところのドア側に見える内側のプラスネジ3つを外す。
5.ドアパネル内張りの下側にある3つのT20トルクスボルトを外す。
6.ドアパネル内張り前側の上側の内側にある細長いプラスネジ1つを外す。
7.ドアパネルのクリップを外しながらドアパネルを外す。
8.ドアオープナーのフックを外す。
9.ドアオープナーの所のコネクタを外す。
10.盗難防止警告ランプの上から下に来ているコードのコネクタを外す。
11.ドアを開けたときに点灯して後ろに知らせるランプのコネクタを外す。
12.スピーカーの横のドアパネル側の3つ又で出ているコネクタを外す。
13.前上のコネクタ2つを外す。
14.スピーカーコネクターを外す。
15.パワーウインドウのコネクタを外す。
16。コードを固定しているT型のプラスティックからコードを外す。
17.T30ボルトで、パワーウインドウのモーターを固定しているネジ3つを外す。
18.レギュレータにドアガラスを固定しているボルトの位置をレギュレーターパネルの丸穴に合わせて、ボルトを外す(T20ボルト)。
19.窓枠内側下側にはまっているガラスの内側についているガラス押えを上に引っ張って外して、その後でガラスを引っ張り出す。
20.レギュレータパネルの10ミリボルトを10個外す。
21.ドア後方のコードが外側から内側に入っている穴のすぐ左のクリップを押して、裏でコードを固定しているプラスチックのクリップみたいなものをパネルから外す。
22.ドアロックの所にある細長いプラスティックの板を割らないように抜きながらレギュレータパネルを外す。
23.ドアロックの所にきているコネクタを外す。


ドアロックから出ているコネクタが外れなかったので、ちゃんと見ながら外せるようにドアロックを外した。コネクタはちゃんと見ながら外せば簡単に外せた。写真と動画で撮っておいた。
ドアロックを外すためにキーシリンダーも外した。キーシンダーを外す時にトルクスネジ(T20)を12.5回転位緩めた。手だけで抜こうとしても抜けるもんではないので、抜けなくても13回転まででやめておき、マイナスドライバーで軽くこじって抜く。それ以上緩めてネジが抜けてしまうと面倒なことになるらしい。
ドアロックシステムを外すのにトリプルスクエアの8mm2つも外す。
最後にドアノブから出ているケーブルを引っ張って外す。

https://www.youtube.com/watch?v=igRemo1luDU
ここがそこいら辺の丁寧な説明のある動画。

プラスチックの部品が欠けて、そのせいでモーターでワイヤーを駆動しているところでワイヤーが絡んでいた。
対象純正品番
(1J4837462D)
(1J4837462DS)
(1J4837462F)
(1J4837462H)
(1JM898462)右側1J4837461H⇒これらは左側
1J4837461F
1J4837461D
1J4837461G
上の型番がゴルフ4に合うレギュレーターの型番らしい。
これが一万円くらいだと思う(純正ではない)。

注文したもの
TAKADAR タカダ化学 ブチルテープ3mm×5M 業務用ロープシーラー / スワンボンド9300 830円 送料290円(楽天)(レギュレーターパネルを土の上の落として元からついていたブチルゴムの粘りがなくなったので新しいのに張り替えた。)


フォルクスワーゲン VW 右フロント ウインドウレギュレーター ゴルフ 1J ボーラ 1J マイレ製 10260円(ヤフーショッピング)


スピーカーのついているパネルごと取り換えるのも売っている。それだと2万円以上する。
レールもスピーカーもリベットで止まっているので
どっちにしてもリベットを外してボルトで締めなおすかリベットを打ち直す必要がある。

リベットは10㎜のドリルで掘って外した。


外しついでに運転席ドアスイッチの型番をメモしておく
1j4959857

2018年6月14日木曜日

www.value-domain.com バリュードメインの DNS 設定例  ダイナミックDNS ・DDNSの設定

www.value-domain.comのネームサーバーを使うときの設定例

下の部分だけを書いておけば、その他の設定(逆引き部分など)は自動でされる(みたいだ)。

mx @ 10               ;メールサーバーの優先順位設定、10は優先順位
a @ 12.345.67.890     ;12.345.67.890をメールサーバーにする。

a www 12.345.67.890   ;サブドメインの設定

----------------------------------------------------------------------

ダイナミックDNSの設定。
DDNSはできるだけ使わない方がいい。
短期間使うときのアドレス変更設定の仕方。

ブラウザから手動でやる時は
https://dyn.value-domain.com/cgi-bin/dyn.fcg
にアクセスする。

wgetなどをCRONで回すときは
https://dyn.value-domain.com/cgi-bin/dyn.fcg?d=ドメイン名&p=パスワード&h=ホスト名&i=IPアドレス
ドメインは素のドメイン名。hoge.comなどと書く。
パスワードはvalue-domain.comのパスワード。
ホスト名は、一つずつ設定してもいいのだろうけど、*を使えばまとめて更新されるそうだ。wwwなどを一つずつ設定する場合はDNSレコード編集画面のホスト名と全く同じ仕様だそうだ。
IPアドレスは指定しなければ自動で現在接続中のアドレスが設定される。

リクエストした結果はステータスとして帰ってくる。
status 意味
0 更新に成功
1 不正なリクエスト
2 不正なドメインとパスワード
3 不正なIPアドレス
4 パスワードが一致しない
5 データベースサーバーが混雑している
9 その他のエラー

2018年4月3日火曜日

golf git mk4 coolant  ラジエータ液漏れ

クーラント液、ラジエータ液 液漏れ。

最初はサーモスタットハウジング接続部からの液漏れだと思って交換したがなおらず、ウォーターパイプのオーリングを交換したら、とりあえず、今のところ漏れが止まっている。

2018/0430
昨日、Oリングを交換して、今日、クーラント液を継ぎ足した。
約2.7L補充した。クーラント液:水 = 1:1。   172772km時。
(後述:後に0.3L程付け足した。サーモスタットの所から水を抜くと、いつも3Lの補充になる。)
2018/04/28
今日、ウォーターパイプのネジをゆるめた。
2か所。ネジの種類が違う。一つは10mmの六角ボルト(運転席から見てエンジンブロック前面の左側)。もう一つは8mmヘックスボルト(運転席から見てエンジンブロック左側面の手前側)。
関連している部品以外はエンジンプラスチックスのカバー以外はどこも外さずに2つのボルトを緩められたけど、ヘックスボルトは目視できないから手探りで緩めた。
2018/04/24
その後(サーモスタットハウジング交換後)、大阪一回、東京一回の遠乗りをした。その時は大丈夫だったのだけど、一昨日あたりから又水漏れが始まった。どうもエンジンが熱い時の圧力がかかっている時は漏れない。少し暖めた後に放っておくと大量に漏れ出すみたいだ。
どういうことだ?
先日のサーモスタットハウジングの取り付けが悪かったのか?
よく見てみるとサーモスタットハウジングからでななくて、サーモスタットの根元からエンジンブロックに沿って引いてある鉄のパイプのつなぎ目から漏れている。(と思う。)
部品番号は
06A121065AK ウォーターパイプ
(VWディーラーで部品を注文すると40000円位。
VWのパーツ屋さんで純正を買うと16000円位)
でも、たぶんこれ自体は鉄パイプだから、ゆがむとかひびが入るとかの可能性は低いと思う。たぶん根元についているオーリングがダメになっただけだと思う。
(Oリング注文時にディーラーの整備士の方が、このパイプがやせてしまうことがある。そうするとOリング交換だけではだめ。と言っていた。)
N90365302 O-ring
N-903-653-02-INT
(後述:ディーラーで頼んで380円)
Heater Pipe Seal VW Audi Parts 20x3mm, N90365302 (Corteco OEM)
BMWなどでも同じオーリングを使っていて
Mfg Part #
11531435808
11-53-1-435-808
だそうだ。
内径20mm(もしかすると外径が20mm) リングの幅が3mmで耐熱耐水ならどれでもいいのだろうけど、日本で探したらこの規格のオーリングがない。そんなに高いもんじゃないだろうし、VWディーラーで取り寄せようと思う。

-----------------------------------------------
2018/04/03
水道水400ml補充。20180402

昨日、久しぶりにクーラント液の警告が出た。

見てみると
車の下に液の漏れた跡、薄い水たまりができていた。
どこから漏れたのだかちょっと見ただけではわからない。

エンジンの前側下の方にもクーラント液が溜まっている。
そこからあふれた液が伝って、オイルパンの下に水滴がついている。

ホース類、プラスチックの継ぎ手のパイプなど、漏れそうなところをチェックしたけど、漏れた跡が見つからない。あれだけ漏れているのだから跡があるはずだけど・・・。

ラジエータ下のアンダーカバーの淵の上側をティッシュペーパーでふき取ってみると、少しだけラジエータ液がティッシュに付く。ここに少しだけついているってどういうこと?
ラジエータから漏れているのか?それがエンジンの方にも飛んできているのか?

今日、時間のある時にエンジンを温めて圧力かけて漏れ箇所をチェックしてみようかと思う。
で、チェックしたけど、漏れが止まったのかなぁ?
あれだけ漏れてたのに、回転を上げ気味で走っても漏れていない。
もう少し様子お見てみることにする。

2018/04/06---よく見たらサーモスタットハウジングからの漏れ。みたいだったので交換をしておいた。何かの条件が重なるとドバーッと漏れる。みたいなんだよなぁ。クーラント液は2.8L位交換後につぎ足した。外したのを見てもひびが入っているわけでもなく・・・。
今回サーモスタットは交換しなかったけど、ちょっと錆びてた。もしかして錆びが原因の漏れか?事前にわかっていれば新品に交換したのだけど、とりあえず、できるだけ丁寧にサンドペーパーにオイルをつけて磨いておいた。
クーラント液の管理はちゃんとしているつもりだけど、どうして錆びるんだ?下に書いたように、ワーゲンの純正クーラントは(環境を考慮して)車には良くない仕様なのか?(まぁ、この前から少し安くて手に入りやすいマレーのクーラント液にしたけど。たぶん成分は同じじゃないかと?未確認だけど・・。)
次からはワコーズのにしてみるか?

ワーゲンのクーラント液はあまり(車にとっては)良くないのかもしれないと言っている人がいた。
純正のクーラント液を使っている人からよくラジエータトラブルを聞くような気がするそうだ。
ヨーロッパ車は環境に配慮する度合いが日本よりも高いから、(そういうことで、プラスチックス部品も弱い。自然に帰りやすい物を使っているそうだ。)クーラント液もそうなのかもしれない。防錆効果が低いのかもなぁ。
ワコーズのクーラント液を使っておけば間違いないと言っていた。

2018年3月25日日曜日

C# UWP WEBサイトの操作

メモ 情報収集中

C# UWPでは、WEBの操作に
Windows.Web.Http.HttpClientクラス
を使うのが一番いいみたいだ。
https://docs.microsoft.com/ja-jp/windows/uwp/networking/httpclient

このHttpClientクラスをインスタンス化したものに自分の扱いたいWEBサイトを代入する。

例えば、インスタンス化されたものをhttpClientとすると、
httpClient.GetAsync(new Uri("http://hogehoge.com"))
とか、
string result = await httpClient.GetStringAsync(new Uri("http://hogehoge.com"));使い終わったら
httpclient.Dispose();と、破棄しておく。

メソッドとしては
GetAsync
PostAsync
PutAsync
DeleteAsync
など。
https://docs.microsoft.com/en-us/uwp/api/windows.web.http.httpclient

注意点
Windows.Web.Http.HttpClientの方が、System.Net.Http.HttpClientよりも新しい。
似ているから最初違いが判らなかったのだけど、
MSによると
「System.Net.Http 名前空間と System.Net.Http.Headers 名前空間は、Windows の将来のバージョンでは Windows ストア アプリ用に使用できないことがあります。」
だそうだ。

Windows.Web.Http.HttpRequestMessageクラス-
Windows.Web.Http.HttpClient から送られた HTTP 要求メッセージ
Windows.Web.Http.HttpResponseMessageクラス
データ受け取り時はこれを使うみたいだ。
普通の受け取りと、あとは、
例えば、ログイン後のサイトの情報を受け取るのには、このクラスをインスタン化したものとHttpClientをインスタンス化したものと組み合わせて使うことでそこでログインした状態を保持した情報を受け取ることができている。
-----------------------
ブラウザの起動の仕方は
https://docs.microsoft.com/en-us/uwp/api/windows.system.launcher
http://coelacanth.jp.net/metrostyleapp入門-vol29-アプリからブラウザを起動する/

private async void Button_Click_1(object sender, RoutedEventArgs e)
        {
            var uri = new Uri("http://www.bing.com");

            var success = await Windows.System.Launcher.LaunchUriAsync(uri);

            if (success)
            {
                // 起動に成功した場合の処理。
                // ブラウザは起動するがアプリも裏で動く
            }
            else
            {

            }
        }

------------------------
VBAのようにDOMを使ってC#からIEを制御する方法。がまとめてあるページ。
http://blog.clockahead.com/2015/06/cie.html
の目次
C#でIEを自動制御しよう
(1) はじめに
(2) プロジェクトの設定
(3) IEを起動する
(4) IEで指定したURLを開く
(5) IEを閉じる
(6) ページの読み込み完了まで待機する
(7) フォーム(テキストボックス)に文字を入力する
(8) ボタンをクリックする
(9) LINQでリンクを取得してクリックして開く
(10) セレクトボックス(メニュー)の選択肢を選択する
(11) チェックボックス(ラジオボタン)にチェックを入れる
(12) 画像をクリックする
(13) 表示しているページタイトル&URLを取得する
(14) フレーム分割されたページを操作する


-----------------------
HTML Agility PackはWEBから必要なデータを読み込むのに適している。
が、
webサイトにデータを入力したり、操作するのには向いていないみたいだ。

そういうことをしたいときは
WebRequest request = WebRequest.Create("http://hogehoge.com/");
などと、WebRequestを使えばいいそうなのだが、
UWPでは
https://docs.microsoft.com/ja-jp/dotnet/framework/network-programming/how-to-request-data-using-the-webrequest-class
にある例のように
GetResponse()や、Close();が使えない。

で、
https://stackoverflow.com/questions/38835974/httpwebrequest-in-uwp-c

In UWP, we have two HttpClient APIs, they are System.Net.Http.HttpClient and Windows.Web.Http.HttpClient. You can choose either of them according to your requirement.
と書いてあった。
System.Net.Http.HttpClientはこれから使われないようなので、
今の最新は、Windows.Web.Http.HttpClienthttps://docs.microsoft.com/ja-jp/windows/uwp/networking/httpclient
なのかな?


で、実際に使うとしたら、Windows.Web.Http.HttpClientになるのか?
ここから、MSの例の写し Windows.Web.Http.HttpClient-------
using System;

var uri = new System.Uri("http://www.bing.com");
using (var httpClient = new Windows.Web.Http.HttpClient())
{
    // Always catch network exceptions for async methods
    try
    {
        string result = await httpClient.GetStringAsync(uri);
    }
    catch (Exception ex)
    {
        // Details in ex.Message and ex.HResult.
    }
}
// Having exited the scope of the using statement, httpClient.Dispose() will be called
// automatically, thus freeing up system resources (the underlying socket, and memory
// used for the object).
-------Windows.Web.Http.HttpClientここまで
https://docs.microsoft.com/en-us/uwp/api/Windows.Web.Http.HttpClient



ここからMSの例の写し System.Net.Http.HttpClient---------------------
 static async void Main()
{

    // Create a New HttpClient object.
    HttpClient client = new HttpClient();

    // Call asynchronous network methods in a try/catch block to handle exceptions
    try 
    {
       HttpResponseMessage response = await client.GetAsync("http://www.contoso.com/");
       response.EnsureSuccessStatusCode();
       string responseBody = await response.Content.ReadAsStringAsync();
       // Above three lines can be replaced with new helper method below
       // string responseBody = await client.GetStringAsync(uri);

       Console.WriteLine(responseBody);
    }  
    catch(HttpRequestException e)
    {
       Console.WriteLine("\nException Caught!"); 
       Console.WriteLine("Message :{0} ",e.Message);
    }

    // Need to call dispose on the HttpClient object
    // when done using it, so the app doesn't leak resources
    client.Dispose(true);
 }
---------------------System.Net.Http.HttpClientここまで
https://msdn.microsoft.com/en-us/library/system.net.http.httpclient(v=vs.110).aspx

2018年3月23日金曜日

DOM XPhthを調べる。

DOM XPhthを調べる。

Chromeを使う方法
調べたい要素を選択して右クリック>検証
デベロッパーツールの中の該当箇所を右クリック。Copy > Copy XPath


これをそのままC# UWP HTML Agility Packで使ったのだけど、htmlから情報を取れなかった。
(HAPExplorerを使えばいいのだろうけど、自分の環境では起動しなかった。)

例えばこの方法で調べて
/html/body/div/table[3]/tbody/tr[3]/td[4]
と表示された。
それをそのままコピーするとエラーが出る。

この場合、/tbody
を取って
/html/body/div/table[3]/tr[3]/td[4]
としたらうまくいった。

2018年3月16日金曜日

SMFファイル MIDI 可変長数値表現

CUBASEからSMFファイルを作って、それを秀丸のバイナリエディタで開いた。
そのバイナリエディタの中身がどうなっているのか調べた。

CUBASEで単純なSMFファイルと作った。
内容は
4分音符
ノートC4(YAMAHAはC3になるのかな?ノートナンバーが60(16進数で3C))
チャンネル0
それをフォーマット1でMIDIファイル(SMF)に出力した。
それを秀丸のバイナリエディタで開いた。

そのSMFファイルの中身の解説メモ。

MIDIファイル(smf)-----ここから

4D,54,68,64,ここからがヘッダーだという意味の記号。ヘッダチャンク。
00,00,00,06,データ長(ここからのこのヘッダチャンクのバイト数が6という意味)
00,01,フォーマット(フォーマット1が複数トラック。フォーマット2が1トラックにすべてを押し込む形式。)
00,02,トラック数
01,E0,時間単位

4D,54,72,6B,ここからがトラックのデータという記号。トラックチャンク。(このトラックは空トラック)
00,00,00,1D,データ長(4 byte)
00,デルタタイム
FF,03,06,74,65,73,74,43,33,シーケンス、トラック名、FF,03,に続く数値は文字の数(この場合は6文字がシーケンス、トラック名に使われているという意味)
00, デルタタイム、データ長が0で次の音を鳴らす。
FF,51,03,07,A1,20,テンポ
00,デルタタイム
FF,58,04,04,02,18,08,拍子
00,デルタタイムFF,2F,00,トラックチャンクの終わり

4D,54,72,6B,ここからがトラックのデータという記号。2つ目のトラック。
00,00,00,1C,データ長(4 byte)
00,デルタタイム
FF,03,0B,48,41,4C,69,6F,6E,20,36,20,30,31,シーケンス、トラック名(0Bつまり11文字)
00, デルタタイム、データ長が0。
90,3C,50,MIDIイベントノートオン(ノートナンバー60、16進数で3C)
83,60, デルタタイム、4分音符分後に次のイベント(可変長)
80,3C,40,MIDIイベントノートオフ
00,デルタタイム
FF,2F,00,トラックチャンクの終わり

----------ここまで


データ長
可変長数値表現
MIDIをバイナリエディタで開いて、デルタタイムを見てみると。
例えば可変長16進数の
8F 00
と書いてあった場合。
これを2進数で表すと
10001111 00000000
と16桁になっている。
可変長数値表現は2進数の桁が必ず8の倍数桁になっていて、8桁毎の一番左の桁は
数値を表すものではなくて、可変長数値の表示範囲を表している。
始まりと途中が1。最後は0。のビットが立つ。つまり、8桁の左端が1で始まって8桁の左端が0で終わる。

実際の16進数の数値を求めるには、各8ビット左端の
10001111 00000000
から上の例で色付きの1と0を取って、それぞれを7ビットにする。
それをドッキングさせて、
0001111 0000000
これをこのまま16進数に戻せばいい(780)。

別の例で、16進数を可変長16進数に変換してみる。
例えば16進数80を可変長16進数に変換してみる。
16進数80は2進数で表すと下の8桁。
10000000
これを7桁毎で区切ると、
1 0000000
これを各8桁の左端に途中1、終わり0、のビットをつけると
10000001 00000000
これは16進数で8100。
よって、16進数80は、可変長16進数で8100になる。





2018年3月15日木曜日

samba

samba3.5以下の場合
セキュリティ上の理由でWindows側のSMB 1.0/CIFSクライアントが無効になっているからそれを有効にしないとつながらない。
3.5以下の状態のまま一時的につなぎたいときにはそれをONにする。
コントロールパネルから「Windows 機能の有効化または無効化」を開く。
SMB1.0/CIFSファイル共通のサポートのすべてのチェックを入れる。

sambaは3.5以下と3.6以上で別物。CentOS6を普通にアップデートしていると3.6にはならない。
現行最新のsambaはバージョン4。


samba3.6を使うときは
[global]
  min protocol = SMB2
  max protocol = SMB2
を追加しないと今のWindowsからはつなげないらしい。

2018年1月13日土曜日

xaml にC#のコードから線を引いたり、円を描いたりする。

C#コード側からXAML側図形の位置や形をコントロールする。

Canvas、Line、EllipseなどをC#コードから定義するときは、
Canvas canvas = new Canvas();
とインスタンス化して使う。

UWPは色の指定方法が変わったそうだ。
WPFの
hoge.Stroke = System.Windows.Media.Brushes.Silver;
として指定する方法から
SolidColorBrush greenBrush = new SolidColorBrush(Colors.Green);
line1.Stroke = greenBrush;
と、インスタンス化してから使うやり方に変わっている。


 //Canvasの中の描写されたものをすべて消す。
canvasName.Children.Clear();

 //次のif文は一つ前に描写されたものが消される。
if (canvasGakufu.Children.Count > 0)
         {
              canvasGakufu.Children.RemoveAt(canvasGakufu.Children.Count - 1);
          }



XAML側
 コード側から名前を指定して何かさせたい場合には、XAML側のGridやCanvasなどのパネルに名前を付ける。

<Page
    x:Class="UWP_動的に線を描く20180113_1958.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:UWP_動的に線を描く20180113_1958"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid x:Name="yy" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    </Grid>
</Page>

C#コード側
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using Windows.UI.Xaml.Shapes;


// 空白ページの項目テンプレートについては、https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x411 を参照してください

namespace UWP_動的に線を描く20180113_1958
{
    /// <summary>
    /// それ自体で使用できる空白ページまたはフレーム内に移動できる空白ページ。
    /// </summary>
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();

           //線を引くUWPは色を指定するのにSolidColorBrushを使う
            var line1 = new Line();
            SolidColorBrush greenBrush = new SolidColorBrush(Colors.Green);
            line1.Stroke = greenBrush;
            line1.X1 = 302;
            line1.X2 = 302;
            line1.Y1 = 220;
            line1.Y2 = 283;
            line1.StrokeThickness = 3;
            canvasName.Children.Add(line1);  //yyはXAML側のGRIDにつけた名前。
             
            //円を描く
            var ellipse1 = new Ellipse();
            ellipse1.Fill = new SolidColorBrush(Windows.UI.Colors.SteelBlue);
            ellipse1.Width = 200;
            ellipse1.Height = 200;
            canvasName.Children.Add(ellipse1);
        }
    }
}
--------------------------------------------------------------------------------
//円を描く。で位置を指定。と、回転。
var ellipse1 = new Ellipse();
            ellipse1.Fill = new SolidColorBrush(Windows.UI.Colors.Black);
            ellipse1.Width = 10;
            ellipse1.Height = 25;
            RotateTransform rotateTransform45 = new RotateTransform { Angle = 45, CenterX = 0, CenterY = 0 };
            ellipse1.RenderTransform = rotateTransform45;
            Canvas.SetLeft(ellipse1, 300);
            Canvas.SetTop(ellipse1, 278);
         
            canvasName.Children.Add(ellipse1);

-----------------------------------------------------------------------------------
例えば、XAMLコードだけで図形を描く場合は、

<Page
    x:Class="UWP_楽譜描写20180111_2020.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:UWP_楽譜描写20180111_2020"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <Canvas
             Height
             ="600"
             Width
             ="600">
<!--
            <Path Fill="Black" Stroke="Black" StrokeThickness="1">
                <Path.Data>
                    <EllipseGeometry Center="50,50" RadiusX="7" RadiusY="10" />
                 
                </Path.Data>
            </Path>
-->

            <!--音符の棒 ヘ音記号のド-->
            <Line
                X1="302" Y1="220"
                X2="302" Y2="283"
                Stroke="Black"
     StrokeThickness="3"/>

         
            <!--オタマジャクシヘ音記号のド-->
            <Ellipse
    Canvas.Top="278"
    Canvas.Left="300"
    Fill="#FFFFFF00"
    Height="25"
    Width="10"
    StrokeThickness="5"
    Stroke="#FF0000FF">
         <Ellipse.RenderTransform>
            <RotateTransform Angle="45" />
         </Ellipse.RenderTransform>
            </Ellipse>

            <!--五線譜 右手-->
            <Line
                X1="50" Y1="100"
                X2="550" Y2="100"
                Stroke="Black"
     StrokeThickness="3"/>

            <Line
                X1="50" Y1="120"
                X2="550" Y2="120"
                Stroke="Black"
     StrokeThickness="3"/>

            <Line
                X1="50" Y1="140"
                X2="550" Y2="140"
                Stroke="Black"
     StrokeThickness="3"/>

            <Line
                X1="50" Y1="160"
                X2="550" Y2="160"
                Stroke="Black"
     StrokeThickness="3"/>

            <Line
                X1="50" Y1="180"
                X2="550" Y2="180"
                Stroke="Black"
     StrokeThickness="3"/>
         
         
 <!--左手-->
            <Line
                X1="50" Y1="240"
                X2="550" Y2="240"
                Stroke="Black"
     StrokeThickness="3"/>

            <Line
                X1="50" Y1="260"
                X2="550" Y2="260"
                Stroke="Black"
     StrokeThickness="3"/>

            <Line
                X1="50" Y1="280"
                X2="550" Y2="280"
                Stroke="Black"
     StrokeThickness="3"/>

            <Line
                X1="50" Y1="300"
                X2="550" Y2="300"
                Stroke="Black"
     StrokeThickness="3"/>

            <Line
                X1="50" Y1="320"
                X2="550" Y2="320"
                Stroke="Black"
     StrokeThickness="3"/>


        </Canvas>
    </Grid>
</Page>


---------------------------------------------------------------------------------
C#コード側からxamlにキャンバスを追加する
Canvas myCanvas = new Canvas();
            myCanvas.Height = 810;
            myCanvas.Width = 610;
            myCanvas.Background = new SolidColorBrush(Windows.UI.Colors.LightSteelBlue); //Brushes.LightSteelBlue;
            root_Grid.Children.Add(myCanvas);

-------------------
背景がSolidColorBrush色の100個のCanvasを追加したい時
 List<Canvas> myCanvas = new List<Canvas>();
            for (int i = 0; i < 100; i++)
            {
                myCanvas.Add(new Canvas { Height = 800, Width = 800, Background = new SolidColorBrush(Windows.UI.Colors.LightSteelBlue) });
               gridName.Children.Add(myCanvas[i]);
            }

------------------------------------------------------------------------------------
下の2行は少し試したけどうまくいかなかった。また後でもう一度見直してみる。
nameやaccesskeyを使って、名前やkeyを設定できるかも(後で確認しとく)。
ClearValue、UpdateLayoutも使えるか?
----------------------------------------------------------------------------------
レイヤー。
Framework layer ----Windows.UI.XAML
Visual layer ---------------Windows.UI.Composition
Graphics layer------------ DirectX Family
となっていて、
msによると、
ビジュアル レイヤー
1.コンテンツ: カスタム描画コンテンツの軽量合成
2.効果: 効果をアニメーション化、チェーン化、カスタマイズできる、リアルタイム UI 効果システム
3.アニメーション: UI スレッドから独立して実行される、表現力豊かな、フレームワークに依存しないアニメーション

XAML とビジュアル レイヤーの相互運用機能を使用すると、XAML API 単独では実現できない、高度なアニメーションや効果を作成できます。
だそうだ。