2022年10月13日木曜日

[Python] デコレータはデコレーション?

こんにちは、今日もソフトウェアについてほのぼのと記載します。

現在、Udemyにて、Python学習を行っています。

今回はデコレータについて受講したのですが、

理解しずらかったのでメモしておきます。

デコレータとは、

関数が呼び出される前に

くっついている(デコレーション的な)関数を実行する

事をいいます。

例:

def printInf(func):
    # 包み込むwrapper関数を作成
    def wrapper(*args, **kwargs)
        print(‘start’)
        result= func(*args, **kwargs)
        print(‘end’)
        return result
    return  wrapper

@printInf
def adddata(x,y):
    print(‘x+y’)
    return x+y

# adddata()関数を実行します。
#その際に、デコレータ@printInfによってprintInf()関数が実行されます。
# printInf()の引数funcとして、adddata()関数のオブジェクトが渡されます
# (c言語で言う関数ポインタと考えるとわかりやすいです。)
r= adddata(10,20)
print(‘r:’, r)

こうすることで、関数呼び出し側は
adddata()だけですが、

実際には、デコレートするかたちで

printInf()が呼ばれます。

@関数名

がデコレーション発動条件ですかね。

def wrapper(*args, **kwargs)
の*argsはだけ今回は使われているということです。

この引数は、タプルなので

C言語的に言うと、書き込み出来ない配列のようなものになります。

このデコレータの良いところは、
関数自体変えずに済むのがうれしいんだろうと思います。

変えると不具合が入り込む可能性が出てくるので、よく考えられた仕組みですね。

Guido van Rossumさん天才か


2022年10月11日火曜日

[yocto] IMAGE_INSTALL_appendとIMAGE_INSTALLの違い

こんにちは、今日もソフトウェアについてほのぼのと記載します。

現在、yoctoプロジェクトを使用して

ユーザボードに組み込むlinux ドライバ周りのソフトを作成しています。

rootfsを以下のコマンドで作るのですが、


bitbake core-image-base


local.confファイルに

IMAGE_INSTALL+=” ifmetric”

など入れていると、ユーザボード起動で

lsやらfindやらが使えなくなってしまいました。

binディレクトリ内にもコマンドファイルはなく、確かに動かない状態です。

その指定による動作としては、コマンド類を一度削除してから、自分用に入れていくような動きになりました。

この現象を解消する方法を色々調べたところ、

IMAGE_INSTALL_append+= “ コマンド”

を指定すれば、ベースのコマンド類に追加して

いくことが可能なようです。

yoctoは深いな。

次回から

“IMAGE_INSTALL_append”を使うようにしよう。

2022年9月22日木曜日

[Yocto][ifup] ifupコマンドでエラー

こんにちは、今日もソフトウェアについてほのぼのと記載します。


現在、ルネサス社製CPU RZ/G1E用の


yocto環境でrootfsやらuImageを作っているところです。


作成したrootfs環境をSDカードに書き込んでそれを組み込みボードに刺して


実行していたのですがifupコマンドを実行すると、エラーが発生しました。


ifup eth0

[結果]

ifup: failed to open lockfile /run/network/.ifstate.lock: No such file or directory


Google検索してみましたが、

.ifstate.lockファイルを作成すればエラーは解消されると

サイトによって言われているようですが、あまりrootfs側に手を付けたくありませんでした。

(ユーザの操作は増やしたくない)


色々調べてみたところ、


ifconfig eth0 up

ifconfig eth0 down


が使えました。


Linuxは代用コマンド多いですね。

次からはこちらを使用していこうと思います。

2022年9月20日火曜日

[Windows10] [Roblox停止] 特定アプリを実行したら1時間経過後にシャットダウン

こんにちは、今日もソフトウェアについてほのぼのと記載します。


子供がRobloxというオンラインゲームにはまってて、


1日1時間までと約束しているにもかかわらず、約束無視な状態です。

ということで、Robloxを起動したら、


それをトリガとして、1時間経過したら


シャットダウンをする仕組みを作ってみました。


以下、私の環境ですが、この仕組みを参考にする場合、自己責任でお願いします。

(システムを触ったりするので、PCが動作しなくなっても保証はしません。

尚、時間関係は長くしておいた方が良いです。短すぎると、戻せなくなったりする為。1800秒以上あると良いかも。)


[環境]

OS: Windows10Home


ソフト:バッチファイル(コマンドプロンプトで実行できる処理群でWindowsに標準でついているものなので追加インストールは必要ありません。)


タスクスケジューラ:作成したバッチファイルを指定することで自動実行


1.まず、2つのバッチファイルを作成します。

(local_shutdown_master.bat(起動用)、

local_shutdown_exe.bat(処理本体))


それぞれのファイル内容は以下の通りです。



[local_shutdown_master.bat]

rem バッチファイルを最小のウィンドウで呼び出す

@echo off &

start /min %~dp0local_shutdown_exe.bat %*

exit



[local_shutdown_exe.bat]

@echo off &

:loop

rem スケジューラを詳細状態で検索”Roblox”

tasklist /V | find "Roblox" &

rem キーワードが見つかった

if %ERRORLEVEL%==0 (

rem 1時間後に強制シャットダウン

shutdown /t 3600 /s /f

goto noloop

)

timeout /t 60 /nobreak &

goto loop

:noloop



2.タスクスケジューラへ作った起動用のバッチファイルを登録します。


[タスクスケジューラへの登録]

スタートアイコン→Windows管理ツール→コンピュータの管理で起動

タスクスケジューラに基本タスクの生成を行います。

トリガー:ログオン時、

操作:プログラムの開始

プログラム/スクリプト:バッチのあるパス/local_shutdown_exe.bat

開始オプション:バッチのあるパス


を登録します。



これで、再起動したときに目的の動作をします。

スケジューラを止めたいときは、

作成したスケジューラを削除してください。(自己責任でお願いします。)



ゲームへの集中力を勉強に向けてくれれば中学受験成功する筈なのですが。一向にしてくれません。。。

Robloxは面白すぎるゲーム世界で、ゲーム世界の中に個人が作ったゲームが数多くあり、

飽きが全く見えない世界です。

クリエイター目指してくれるなら良いのですが、

残念ながら手のひらで踊らされている一人です

2022年5月17日火曜日

[楽天モバイル] 良いですね

「月額0円」廃止 楽天モバイルを悩ませた“3つの誤算”(ITmedia NEWS)#Yahooニュース


https://news.yahoo.co.jp/articles/0e60886584eed963089628c86789c81e176b760f 


こんにちは、気になったのでリンク貼りました。

私が0円で一年間使わしていただいたもので、


我ながら良い買い物をしたと思ってます。にっこり


さんざん使っていてこういうのもなんですが、


確かに0円でなくても、良かった気がします。


都内と言うこともあり、普通に速いです。


また、他社は通信容量有りに対しての料金設定で、


楽天モバイルは無制限になっても4000円いかなかいのでよいですね。


一番良いのは○ロードWiMAXとかだと


三年縛りされましたが、そういう縛りがないのもグッドでした。


料金が上がらない限りはこのまま使わせていただきます。凝視

2022年5月1日日曜日

[通信] FINSコマンドのサンプルが少なかった

こんにちは、今日もソフトウェアについてほのぼのと記載します。 今回は、FINSコマンドを使ってEtherNET経由で機器同士の 通信を行うことについて調べてみました。 サンプルプログラムを探してみましたが 以下のものしか見つかりませんでした。 仕方ないので、コマンドの使い方だけ参考にします。 https://osdes.com/oms/appSample/finsUDP.html FINSコマンドを使うとPLCに対してメモリをリード/ライト するかのように使える。といったメリットがあるようです。 この前対応したCC-Linkアプリのようなものですかね。 その時も相手方はPLCでした。 対応する順番としては以下で進めようと思います。 ①EtherNETの対応 ②FINSコマンド(メモリード)のデータを送る 読み出し先には固定データを用意しておく ③受信データとしてその固定データが読めるようにする。 ④FINSコマンド(メモライト)のデータを送る 固定アドレスに固定データをライト ⑤PLCからその固定データが読めることを確認。 以上です。

2022年4月16日土曜日

[署名のないデバイスドライバ] 使用できないとのことで

こんにちは、ソフトウェアについてほのぼのと記載します。


今回は、Windows10において、com0comアプリをインストールした際、


デバイスドライバを確認すると警告マークがついていたので

その対処をしたことを記載します。


参考にしたリンクは以下です。

https://guidesy.net/ja/%E4%BF%AE%E6%AD%A3%E3%82%B3%E3%83%BC%E3%83%8952%E3%82%A8%E3%83%A9%E3%83%BCwindows10-11%E3%81%A7%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%83%BC%E3%81%AE%E3%83%87%E3%82%B8%E3%82%BF%E3%83%AB%E7%BD%B2#:~:text=%E5%8F%96%E3%82%8A%E9%99%A4%E3%81%8F-,%E3%82%B3%E3%83%BC%E3%83%8952%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%A8%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F,%E4%BB%8B%E3%81%97%E3%81%A6%E8%A1%8C%E3%82%8F%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82 


デバイスマネージャ上でcom0comのプロパティを開くと


”デバイスの状態”に以下の文章が表示されていました。


”このデバイスに必要なドライバーのデジタル署名を検証できません。

ハードウェアまたはソフトウェアに最近加えられた変更により、

正しく署名されていないファイルや破損したファイルがインストールされた可能性があります。

また、出所の不明な悪意のあるソフトウェアであることも考えられます。 (コード 52)”


紆余曲折して最終的には


1.スタートアップ横にある検索で”回復オプション”で検索します。


2.PCの起動をカスタマイズを選択します。


3.スタートアップの設定から、”ドライバー署名の強制を無効する。”を選択

してあげると、デバイスマネージャ上のcom0comアプリに警告マークが消えました。


ちょっと厳しすぎるMicrosoftでした。