投稿者「maseda」のアーカイブ

pythonの引数は原則参照渡しだが、実際は限定的で注意

pythonの引数は、ミュータブル(変更が可能)とイミュータブル(変更ができない)ものが存在する。
つまり参照渡しをしてもイミュータブルの型(int,str,floatなど)は値が変わらないから値渡しと同じになる。ミュータブル型(list,setなど)を使えば参照渡しになる。
引数の値を変えたい場合はミュータブル型にするか、メソッドの返り値として変更した値を受け取るほうが理解しやすい。

参考URL

Python♪次は理屈で覚えよう「参照渡し」「浅いコピー」「深いコピー」
https://snowtree-injune.com/2019/09/16/shallow-copy/#toc7

 

【Python】参照渡しと値渡しの違い

https://algorithm.joho.info/programming/python/call-by-reference/

Blender2.93、フォトショップを使ってMPEG4からGIF変換手順例

動画ファイル形式をGIF出力する場合、ネット上からでも出力が可能だが

色々と制約が生じるので、フォトショップでGIF変換

制約とは、会員登録が必要、サイズの変更ができない。色の変換が変わってしまう、容量が大きくなりすぎ等

>>最近は、変換手順を忘れやすくどのような手順で作業したかわからなくなるので備忘録として残す。

手順例(環境、MacOS、Blender2.93)

1.Blender2.93から動画MPEG4出力したとする。出力プロパティを開く。そして「File Format」からFFmpeg Videoを選択する。次にEncodingからContainerで「MPEG-4」を選択する。MacならQucikTime形式もある

(Blenderはここまで)

2.フォトショップでMPEG4ファイルを開く(以下は全部フォトショップでの作業)

3.修正、切り抜き等処理を行う。任意

4.ファイルメニューから「ファイル書き出し」、「Web用に保存(従来) 」を選択する

 >注意:「書き出し形式…」でGIFの出力も可能だが、リサイズでエラーになる

 フォトショップ2021 Ver2251

5.設定で、表示サイズ等を変更(50%)

6.保存

確認するときは、GIFファイルをブラウザにドラッグアンドドロップするとGIFが再生される。

再生されないときは、GIFアニメでなくてGIF単一ファイルかもしれないので、動画かGIF出力の設定を確認すること

Blender2.93 python A点からB点へ移動するアニメーションスクリプトサンプル

Blenderを使ってpythonでA点からB点へ移動するアニメーションスクリプトサンプル

参考
[Blender×Python] アニメーションのつくりかた
https://qiita.com/masterkeaton12/items/a6dcfa160f2bb6bc2851

[Blender×Python] アニメーションの作り方
https://mrt-blog.com/155/

(1)シンプル

オブジェクト名はCandle1(文字列と数字なので、複数あればループで対応できる)
現在の位置Bを24フレームのキーフレームに設定して、0フレームで別の場所Aを設定する。
これでAからB(元の位置)に移動するアニメーションが設定できる。

inbetween設定が必要かと思ったけど、いらんかった。
オブジェクトの移動をすると瞬間移動するかと思ってた。
ちゃんとフレーム間を補間してくれるようだ。

2個のオブジェクトがあって1個だけアニメーション設定した状態

スクリプト実行後に、ドープシートにキーが打たれた


#python_anime_20210919_01.blend

(2)複数のボックスが下に移動するアニメーションを作成するスクリプト(ボックスはすでに作成済とする)

実行するとZ軸マイナスの方向に1個ずつずれて移動するアニメーションが作成できる

 

 

Mac Blender2.93 pipインストール、pandas_datareaderモジュールインストール手順

Mac Blender2.93 pipインストール、pandas_datareaderモジュールインストール手順

環境:MacOS、Blender2.93の場合

ターミナルを起動する。
blenderのバージョンは2.93、バージョンが変わるたびに似たような数字を変える
BlenderのPythonのディレクトリ構成、Pythonのバージョンも変わるので数字を変える
/Applications/blender.app/Contents/Resources/2.93/python/bin/

・(1)get-pip.pyをダウンロード
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py /Applications/blender.app/Contents/Resources/2.93/python/bin/python3.9 get-pip.py

もしエラーになってダウンロードできないときは、
cd /Applications/blender.app/Contents/Resources/2.93/python/bin/
python/binディレクトリに移動して実行する
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

・(2)python3.9でget-pip.pyを実行してpipをインストール
$ /Applications/blender.app/Contents/Resources/2.93/python/bin/python3.9 /Applications/Blender.app/Contents/Resources/2.93/python/bin/get-pip.py

(3)pipでpandas_datareaderを実行する
$ /Applications/Blender.app/Contents/Resources/2.93/python/bin/pip install pandas_datareader

ローソク足をBlenderの記事

エクセルVBA、楽天証券マーケットスピードのRSSを使用して株価情報取得

マーケットスピードの株価チャートを見ていて、株価や板をずっと見ていると目が疲れてくる。
株価の変動が大きいときは我慢できるが、商いが薄いときは株価が動かず眠くなる。
そこで、楽天証券マーケットスピードのRSSを使用して株価情報を取得して必要な値になったら色の変化で表示させたら便利かもと思った。
このRSSを使用して株価情報をエクセルのシードに表示させるとどうなるか試してみた。
なお、エクセルを使用するために、毎月約1300円くらい支払う。年払いのほうが安いが毎回数ヶ月くらいしかエクセルを使わないので今回も月極にした。

マーケットスピード2のRSSのマクロはこちら

・RSS(リアルタイムスプレッドシート)
「RSSとは、マーケットスピード投資情報ページ「市況情報(先物OP市況情報)」に表示される値(注)を特殊な関数(RSS関数)を用いて市販表計算ソフト『Microsoft Excel』に取り込み、セル上に表示させるツールです。」
https://www.rakuten-sec.co.jp/MarketSpeed/onLineHelp/msman1_11_1.html

マーケットスピードの機能でも株価情報を表示させることは可能だが、RSSとエクセルを使用することにヨテ自分だけの必要な情報のみを表示させるシートを作成することができる。

・VBAの注意点
IF文のelse if は[elseif](他の言語は、大抵[else if]のようにスペースを入れる)
等価はイコール1つ(他の言語は大抵イコールが2つ必要)
ちなみにVBAとマクロは厳密に仕様が異なることがあるので確認するとよい

・使用環境:Windows10、エクセル Office365 マーケットスピード、RSS.exe
なお、RSSを登録するにはエクセルのマクロを有効にするなど、いくつか設定が必要である。
またRSSが実行できるようにセキュリティソフトの設定も必要。
これらの設定は楽天証券のホームページとグーグル先生が教えてくれる。
(数年経過すると、サイトが閉鎖されているのでネットの情報も永遠ではない)

・エクエルシート構成、マクロ仕様

‘VBAはシングルクォーテーションがコメントになる
‘Ctr+spaceで入力途中でコマンドの候補が表示される。簡易的な入力支援みたい

・動作環境:Windows,マーケットスピード、RSSを起動しマーケットスピードにログインしておく
‘Windowsのみ、RSSが対応しているのはWindowsのみでMacは動作しない
・目的
‘RSSで取得した情報を一定時間間隔で別セルにコピーする、時刻、比率等を記載
‘株価の動きを予測する資料とする
・動作手順
‘マーケットスピードにログインして、RSSを起動する「接続中」となる。「接続処理中」は接続できていないので接続中になるように調整すること
‘エクセルを起動して該当のファイルを開く
‘取得したい銘柄コードを入力する。この作業は手作業
‘マクロを実行させる。その後は、自動でセルのコピーが始まる
‘市場が開いていない時間帯はコピー処理は行わない。
‘2021・04・26

 

皮膚アレルギーは厄介、ダニ、ハウスダスト、ビール酵母アレルギー検査結果

先日、皮膚科で血液検査をした。ここ数年、汗をかくと肌が赤くなり痒くなる体の部位があった。
頭、腕、腹、背中、股間等。

そこで、皮膚科に問診に行って血液検査でどの項目にアレルギー反応があるのか調べてもらった。Hは高い数値を表す。ダニの数値が以上に高い。ダニの数値が高い理由は、毎週実家に帰るたびに、刺されていたから。(このときはどこで刺されていたか知らなかった)検査成績報告書

アトピー
検査については、ある程度疑いのある項目をメインに検査することになる。どの項目に反応するかは指定しないと検査してもらえない。つまり、「血液検査してどれに反応があるか」ではなくて、「検査してほしい項目を患者が選んだ」項目について検査して、アレルギー反応があるかを調べてくれる。なので、検査希望の項目に含まれない項目について、仮にアレルギー反応があっても検査してもらえない。
検査するときは、アレルギーの疑いがあると思われるものについて推測しておく必要がある。

ちなみに保険が適用されるのは13項目までらしいので全部は受けられない。
検査結果は約一週ほどかかる。翌週問診するのは面倒だったので、薬を貰う予定の翌月に結果を聞いた

・状況

月1回皮膚科に通院し、アレルギーを抑える薬2種類をもらっている。
飲んでいる間、汗をかいてもほとんど症状はでない
薬の服用によって、少し眠気をもよおすので、車の運転、仕事、試験中は注意が必要

・血液結果

ダニ(スケヒョウダニ、)
ビール酵母>ビールを飲むと2,3時間後に腹痛が起きた
小麦
に大きなアレルギー反応があった。
他に多少アレルギー反応があったがそれほどではないようだった
ビール酵母については、ビールを飲まなければよいのでそれほど大きな問題ではない。
問題はダニだ。

・ダニをどう退治するか?

現在試していること

ダニ駆除用のシートを置く
布団をできるだけ天日干し
部屋の掃除、掃除機でホコリチリを吸い取る
キンチョール

ダニがいた場所

畳、布団、麦わら帽子
麦わら帽子にダニがいたことに気づかずに、約5年もかぶっていた。
気づかない理由は、週末に家庭菜園のために実家にかえって実家に置いてある麦わら帽子を使っていた。炎天下で作業するためにダニは逃げるだろうと思いこんでいた。
実際は、ダニが逃げる前に頭皮、横顔を刺されていたようだ。
麦わら帽子をかぶらずにいたら刺されなかった。その後、帽子はキンチョールで殺虫して、太陽光線消毒した。その後は刺されていない。

楽天証券のマーケットスピード2、エクセル、別のブックのセルからコピーする案

作業はこれからで、アイデアだけをまとめておく

楽天証券の「マーケットスピード2」(2)のRSSと「マーケットスピード」(1)のRSSは構成が異なる。
「マーケットスピード」(1)(以下(1)とする)のRSSは実行形式であり、(1)を起動してRSS.exeを起動する必要があった。
一方「マーケットスピード2」(以下(2)とする)のRSSは、(2)を起動すれば使用できる。(2)用のRSS.exeは存在しない。
なお、エクセルのアドイン登録がどちらの場合も済んでいるものとする。
(1),(2)は同時に実行が可能である。

やってみたこと

(1)の場合VBAでループ処理により、株価の取得からいくつかの処理を行っていた。
(2)で(1)の同様な機能を実行しようとしても、動作しなかった。
具体的には(1)を別名保存して、(2)用の関数名に置換した。大まかに置換することで実行可能。
必要な関数の変更を行ったが、(2)では実行できなかった。エラー等の発生はないが、マクロとVBAの組み合わせの相性が悪いようだった。

改良

よって、
(2)で(1)と同様な機能を実行する場合、(2)で取得したデータをブックのシートのセルに貼り付け、その貼り付けたデータを別のブック(VBAコードあり)へコピーすることにした。
つまり、(2)のブックで株価等のデータを集め、別の処理をするブック(B)を作成し、ブック(B)にループ処理を行うVBAコードを記述することにした。

ブックA(マーケットスピード2のRSS):株価等の情報をセルに確保

ブックB(VBAコード):株価等の情報をもとに適宜必要な処理を行う。

VBA,マクロ

ブックAのマクロ
(これから)

ブックBのVBAコード
(これから)

以前のRSSを利用したマクロ

MarketSpeed2RSSのローソク足のデータ取得例

楽天証券、マーケットスピード2のRSSの関数、ローソク足RSS2の機能 @RSSChart()
9201コードのローソク足を取得例
2分足2M、2本取得(もっと多くのローソク足データを取得できる)

A2セルにマクロを記入すると、A3以降に出力結果が表示される。ローソク足データを取得することによりリバウンド時の状態を検知できる。また出来高の増減を把握できる

注意点

「マーケットスピード2」RSSのVBAと「マーケットスピード(1)」RSSのVBAは違うようだ。1で動いたエクセルVBAが、2では動かないところがあった。(1)でループ処理してたところが(2)では動かない。なので、(1)と(2)は別々の動作と考える必要があり、しばらくは(1)と併用するほうが良さそう。2021/08/27

環境

Windows10、エクセル、MarketSpeed2(RSSはMarketSpeed2を起動するだけでよい)

ボートレース公式サイトから情報を取得するスクレイピング

#2021/07/07
#環境:OS:Mac, 言語python, anaconda, 作業をするときはanaconda jupterのエディタよりMS Codeのほうがやりやすい。
#boatRaceCompuYosou.ipynbで使用
”’
・仕様
ボートレース公式https://www.boatrace.jp/
から「本日の払戻金一覧」のところを
クリックして、本日開催の場の開催時間をクリックする
出走表から結果までの情報を掲載したページが表示される
コンピュータ予想 https://www.boatrace.jp/owpc/pc/race/racelist?
その中のコンピュータ予想タブをクリック
「予想フォーカス」という項目に予想が表示される。
蒲郡  jcd=07 hd=20210707
1R rno=1

 

・目的:予想するレースの当選番号が出現するかもしれないレースを探す。

例えば6-全-全が出現するレースを探したい。その場合コンピュータ予想の予想フォーカスで予想されている番号に
6-全-全に該当しそうな予想が表示されていたら、そのレースを出力したい。
なお、コンピュータ予想は当然ながら、当たるとは限らず確率は低い
すべてのレースの予想を手動で探すのは面倒なので、自動で探したい。

 

・機能:該当のページから必要な情報を取得して、該当の情報(ここでは予想番号)を取得して

CSV出力する。

 

作業内容

1.「本日の払戻金一覧」7月7日の場合
https://www.boatrace.jp/owpc/pc/race/pay?hd=20210707
から開催される全レースのURLを取得
2.取得したURLを場ごとに取得。ループ
3.レースごとにループする
4「予想フォーカス」という項目のところの予想番号を取得する
5.予想する番号、例えば6,1の数字があればリストに追加する
6.CSV出力する。該当する予想がなければ出力しない。

 

※使用上の注意点

一度のスクレイピングとCSV出力だけに対応していて、前回作成したCSVを読み込んで処理を追記する仕様はない。
一度作成したファイルに、レース結果を追記変更することはしない。
ようするに、朝実行して、夜に実行しても朝作成したファイルを読み込んで処理をするものではない。
朝実行すると、朝のファイルを作成し、その後実行すればそのWebサイトの情報をCSVとして出力する。

 

>>なぜこのように書くかというと、レースが開催されるとレース結果が払戻金一覧ページに表示される。
レースが開催されていない場合は時刻が記載されていて、出力されるCSVの記載が異なるので、後日CSVの内容を
確認すると、「レース結果が後で追記されるのか?」と勘違いするかもしれない。
現時点では、払戻金一覧のレース前の状態で、コンピュータ予想を知りたいだけの機能である。
よってコンピュータ予想を取得してCSV出力して、その後の処理は何もしない。

 

ソースコード

クラスコード

CSVの出力例 6コースが予想されている番号を出力

その後、改良したクラスコードはこちら

ファイナルカットプロ  プレビュー カーソル スキミング

https://support.apple.com/ja-jp/guide/final-cut-pro/vere9ba3609/mac

ファイナルカットプロを使用して便利なのは、カーソルを移動させるとプレビューで再生表示されること
これはスキミングという機能だ
たまにこのスキミング機能が勝手に(おそらくカーソルを移動させる時に間違ってクリックしてスキミング機能を解除)解除されてることがある。

そのときに、どうやって戻すのか毎回苦労する。
グーグルで調べるにしてもその機能の名称を忘れているから名称で検索できない。