20210927

Powershellで、カレンダーから選択した範囲内の日付を表示

書きかけだけどメモとして。
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

$form = New-Object Windows.Forms.Form -Property @{
    StartPosition = [Windows.Forms.FormStartPosition]::CenterScreen
    Size          = New-Object Drawing.Size 400, 230
    Text          = 'Shiftキーを押して、解析対象の範囲を選択'
    Topmost       = $true
}


$calendar = New-Object Windows.Forms.MonthCalendar -Property @{
    ShowTodayCircle   = $false
    MaxSelectionCount = 365
}
$form.Controls.Add($calendar)


$okButton = New-Object Windows.Forms.Button -Property @{
    Location     = New-Object Drawing.Point 38, 165
    Size         = New-Object Drawing.Size 75, 23
    Text         = 'OK'
    DialogResult = [Windows.Forms.DialogResult]::OK
}

$form.AcceptButton = $okButton
$form.Controls.Add($okButton)


$cancelButton = New-Object Windows.Forms.Button -Property @{
    Location     = New-Object Drawing.Point 113, 165
    Size         = New-Object Drawing.Size 75, 23
    Text         = 'Cancel'
    DialogResult = [Windows.Forms.DialogResult]::Cancel
}

$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)


$result = $form.ShowDialog()

if ($result -eq [Windows.Forms.DialogResult]::OK) {
    $date = $calendar.SelectionRange
    
    $start = $date.start.ToShortDateString()
    $end= $date.end.ToShortDateString()
    
    #$diff= New-TimeSpan -Start $start -End $end
    $diff= $date.end - $date.start
    $diff2= $diff.Days
    Write-Output "Time difference is: $diff2"
    
    for ($i=0; $i -lt $diff2+1 ; $i++){
        #Write-Host "Date selected: $($date.ToString())"
        Write-Host "Date selected: $($date.start.addDays($i).ToString())"
        #Write-Output ("count:"+$i)
    }
}


$wsobj = new-object -comobject wscript.shell
$result = $wsobj.popup("Finished.")

posted by yuchan at 05:14 | Comment(5) | Windows

20210518

おれのjavaが動かなかった

タグ:hello! world.

これを読んでハローワールドしたかった(できなかった)

JDKインストールして
環境変数指定して
コード書いて、 javacでコンパイルして(クラスファイル作って)、 javaで実行→エラーでできなかった。

原因と思われるエラー

おれのエラー

Exception in thread “main” java.lang.UnsupportedClassVersionError: hello : Unsupported major.minor version 60.0

こういうエラーは、javacとjavaのバージョンが違ったときに出るらしい。
実際下記のようにバージョンを確かめるコマンドを打つと、javacとjavaのバージョンが違った。

>javac -version
javac 16.0.1

>java -version
java version “1.6.0_26”
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)

16と1.6だそうです。違いますね。

さっき手動でインストールした(解凍したファイルを移動しただけ)〜\jdk-16.0.1\binには、16.0.1.0が入っている。
だから、16が正だ。

1.6 はどこから出てきたの?

原因の発見

コマンドラインで、where javaしたら原因が見つかった。
whereについてはこのサイト。
下記のように、コマンドラインでjavaっていったら、2つあるらしい。

>where java
C:\Windows\System32\java.exe
C:\pg\jdk-16.0.1\bin\java.exe

多分上の方を優先して使ってるんだと思う。

javacは一つみたい。

>where javac
C:\pg\jdk-16.0.1\bin\javac.exe

入れた覚えないんだけどな?
なんか変な依存関係があって、ある日突然正常に動かなくなったら嫌だな。

 対処

とりあえず、環境変数の
%JAVA_HOME%\binを
%SystemRoot%\system32よりも上に持ってきた。
上に書いてあるほど、前に書いてあって、優先されるようです。

下記のように、コマンドラインでjavaと入力したら、16が使えるようになった!

>where java
C:\pg\jdk-16.0.1\bin\java.exe
C:\Windows\System32\java.exe

>java -version
openjdk version “16.0.1” 2021-04-20
OpenJDK Runtime Environment (build 16.0.1+9-24)
OpenJDK 64-Bit Server VM (build 16.0.1+9-24, mixed mode, sharing)

…Androidアプリを作りたくて、Android Studioの勉強の前に、JDKでお勉強してるんだが…
JDKを導入して、環境変数変えたけど…
Android Studioのjava.exeとか、javac.exeとかに影響しないのかな…
java.exeも、javac.exeもどうやら、C:\Program Files\Android\Android Studio\jre\binに入っているらしいので、androis studioはそれを使っているんだろうか?
android studioは、コマンドラインでjavaと打って起動するjava(system32に入っているやつとか)を使ってないのかな?。そもそもsystem32にはいつ何で入ってたんだろう?

Hello worldできた。

>java hello
Hello.

タグ:hello! world.
posted by yuchan at 22:51 | Comment(0) | java

20201229

LTSpiceの素子の値を経時変化 三角波も作った。

抵抗値Rの経時変化

電気回路シミュレーターのLTSpiceを使って、時間が経つと電気抵抗が上がったり下がったりする素子を作りたい。
操作すると抵抗値が変化する可変抵抗とかではない。
時間が変数となって、値が上がり下がりする抵抗値を入れたかったのだ。

検索したら見つけたページ

時間が経つにつれて上がる抵抗は、
抵抗Rを、変数(時間time)を使って式で表す。

valueに

R=10000-100*time

と入力すれば、10kohmから、1秒ごとに100ohm減っていく抵抗を表現できる。

R=を忘れたら動かなかった気がする。

LTSpice_schematic_Rtime.png

R=10000+100*time

と入力すれば、10kohmから、1秒ごとに100ohm増えていく抵抗を表現。

静電容量Cの経時変化

さっきのコンデンサ版。
こちらもやはり、LTSpiceを使って、時間が経つと静電容量が上がったり下がったりする素子を作りたい。
時間が変数となって、値が上がり下がりする静電容量を入れたかったのだ。

こちらも上のページと同じサイトで、解決策を見つけた。

なぜかCを直接入力できず、電荷量で指定することになる。

時間が経つにつれて上がるコンデンサ(キャパシタ)は、 電荷量Qを、変数(電圧xと時間time)で表すことになる。
電圧xを入れないと、静電容量っぽい振舞ではなくなる。
Q=CV

普通の1uFのコンデンサを作りたければ

Q=1u*x

xの所には電圧が入るので、入れ忘れてはいけない。

Q=静電容量*xと書く感じ。

Q=1u*x+1n*time*x

一秒あたり1 nFずつ容量が増えていく。
Q=CV
図では2 Vを印加しているので、一秒ごとに2nクーロン電荷が多くたまるようになるから、実質2 nAの電流が流れる感じになっている。

LTSpice_schematic_Ctime.png

三角波を式で書く

三角波についてはPWLを使うのがお約束らしいが、だめだ。
GUIを使って値を指定するのが気に入らない。(大変。)

式を使って書く。(こっちの方が大変だった…)

結論を先に書くと、

componetから電圧源を選択するとき、bvを使用して(voltageではだめ)、

V=(abs(int(time)-time+1/2)-0.25)*4

と書くと、三角波になる。

LTSpice_schematic_bihaviorV(triangle).png

入力した式の意味

式を作る作戦

  1. int(time)として階段関数を作る。

  2. そこに-timeして鋸歯状波を作る(-側にオフセットがかかっている。)

  3. +1/4して(オフセットを引いて)0を中心とした鋸歯状はを作る。
  4. 絶対値をとると、三角波ができる(+側にオフセットがかかっている。波高は0.25)
  5. *4して波高を調節。

手順1~2を図にすると、

int_slope_sawtooth.png

手順3~4を図にすると、

abs_triangle.png

最後の2枚の図は、pythonで書いてみた。

一応コードを載せておく。

import numpy as np
import matplotlib.pyplot as plt


x=np.linspace(0,4,1001)

y1= x.astype(np.int32)
y2=x
y3=y1-y2


f,(ax1,ax2,ax3) = plt.subplots(3,1)

ax1.axhline(y=0, xmin=-10, xmax=10, c="k")
ax2.axhline(y=0, xmin=-10, xmax=10, c="k")
ax3.axhline(y=0, xmin=-10, xmax=10, c="k")

ax1.plot(x, y1)
ax2.plot(x, y2)
ax3.plot(x, y3)

ax1.set_ylim(-4,4)
ax2.set_ylim(-4,4)
ax3.set_ylim(-4,4)

plt.show()



f,((ax1,ax2),(ax3,ax4)) = plt.subplots(2,2)

y4=y3
y5=y3+0.5
y6=np.abs(y3)
y7=np.abs(y5)

ax1.axhline(y=0, xmin=-10, xmax=10, c="k")
ax2.axhline(y=0, xmin=-10, xmax=10, c="k")
ax3.axhline(y=0, xmin=-10, xmax=10, c="k")
ax4.axhline(y=0, xmin=-10, xmax=10, c="k")

ax1.plot(x, y4)
ax2.plot(x, y5)
ax3.plot(x, y6)
ax4.plot(x, y7)

ax1.set_ylim(-4,4)
ax2.set_ylim(-4,4)
ax3.set_ylim(-4,4)
ax4.set_ylim(-4,4)

plt.show()

LTSpiceを使って矩形波などを書く方法については、以前書いていた。(2016年!4年も前からマイナー記事を書き続けている。)


今年は新型コロナ一色の年だったが、私生活的には意外といい年だったと思う。

posted by yuchan at 17:00 | Comment(82) | LTspice

20201028

新らしい生活が始まる。

すごいことになった。
大変喜ばしいことが起こった。

プログラムのテクニック的なことは一旦わきに置いておいて、そっちの勉強をしている。
続きを読む
posted by yuchan at 10:46 | Comment(1) | 日記

20200831

書くことが思い付かない

何とかして書かなければ。
長続き目指しブログでなくなってしまう。

今月はデートしまくった。

多分生まれてはじめて観覧車に乗ったし。
一緒にお昼寝とかしたりした。
ペアリングとか探してみたりした。
美味しいものを食べに行ったり、きれいなものを探しに行ったりした。

デートしかしてない。
だから書くことが思い付かない。
ちょっと悲しい。

昔は、休みの日は一日中家にこもって、延々動画を作っていた。
外に出るのは買い物と、ジムでのちょっとした運動だけだった。

もう動画は作ってない。
最近は動画を作ろうと思わなくなった。

2DDFTで、やりたいこと全部やった感あるし。
あとはフィルターか。フィルターやってないか。
他にやりたいこと何かあるかなぁ。

来月こそは、なんか小手先のテクニックっぽいことを書くつもり。
posted by yuchan at 21:06 | Comment(2) | 日記