<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
	<title><![CDATA[ 2022年2月の投稿［53件］ - 電装工芸日記 - 舞台照明機器の製作とか - ]]></title>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi</link>
	<description><![CDATA[ 今年は開発案件を進めたい ]]></description>
	<language>ja</language>
	<copyright>Copyright 2026</copyright>
	<lastBuildDate>Mon, 20 Apr 2026 06:10:27 +0900</lastBuildDate>
	<generator><![CDATA[ <!-- てがろぐ Version: -->Powered by <a href="https://www.nishishi.com/cgi/tegalog/" target="_top">てがろぐ</a> Ver 3.4.0 ]]></generator>
	<!-- BEGIN ENTRIES -->
	<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　先日書いた謎のオレメモ ]]></title>
	<description><![CDATA[ 　先日書いた謎のオレメモ<br /><br />　np.abs( np_array_dt - ( datetime.datetime.now() - datetime.timedelta(seconds=0.1) ) ).argmin()<br /><br />　これはDelay機能で重要な処理です。<br />　日時の配列(np_array_dt)の中から、現在日時から一定の時間を差し引いた日時に最も近い日時を項に持つIndexを得ます。<br /><br />　Delayを構成するにあたり、受信値に日時を付けて数世代のデータを保存し、少し前の入力値を使います。出力を遅らすのではなく入力を遅らすのです。<br />　パッチはパッチマップに従って入力スロットの値を出力スロットにコピーしますが、コピー元の入力スロットを探すアドレスに受信世代のインデックスも持たせれば１フェーズでパッチとDelayの処理が完了します。コピー元のアドレスの表現を「何秒前の何番LINEの何番スロット」とするワケです。Titan系からのパクリですが、LINEとはDMXの内部系統のことです。８ユニバースを扱う構想ですから８LINEあります。内部系統に入出力先をパッチするのは言うまでもありません。<br />　意味合いとして正しいのはパッチが済んだデータの出力を指定時間遅らすことだと思いますが、入力を遅らせてもその様に振る舞うならいいかなと。<br /><br />　そもそも反応が鈍い劇場の調光装置と反応が鋭い機器をワンボードで操作しても明かりの変化を一斉にさせたいという要望からのDelayです。カットインをカットインにしたいだけで、照明効果を作るエフェクトではありません。<br />　ですから、厳密に設定時間分遅らせることが目的ではなく、全体が同じタイミングで動いているように「見えれば」いいので、入力の世代を管理する方法で十分だと思うのです。<br /><br />　「少し前の日時のインデックス」を見つけるのが謎式の正体です。<br /><br />　ちなみに、時刻を使わず日時を使う理由は、深夜24時、日付が変わる瞬間に必ずエラーが起こるからです。0時0分0秒付近でほんの一瞬ですが、設定可能な最大Delay時間前のデータが出ます。Delay最大値が１秒なら１秒前のデータが出てしまうのです。一瞬のこととはいえ、こんな潜在エラーがあったらカウントダウンの現場では使えません。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a> <a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%41%72%74%2d%4e%65%74" class="taglink" title="Art-Net">#&#91;Art-Net&#93;</a>  -- Posted by 電装工芸 〔979文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=161</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=161</guid>
	<category>tegalog</category>
	<pubDate>Sun, 27 Feb 2022 14:41:36 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　キーボード、モニタ、ネットワークなど、ハードウェアとのやり… ]]></title>
	<description><![CDATA[ 　キーボード、モニタ、ネットワークなど、ハードウェアとのやり取りを先に進めていますが、ボチボチ本丸であるパッチ機能の具体的な作りもまとめ始めています。<br />　パッチ機能はマッピングファイルに従って入力を出力に置き換える作業なのでアルゴリズムに難しいことはありませんが、十分な速度を得られるかが難しい課題です。<br />　DMX512は１スロットあたり44usecです。100万分の44秒ってことですが、８ユニバース扱うなら100万分の5.5秒以内に１スロットを確実に処理しなければなりません。RaspberryPi4BのCPUクロックは1GHz以上であり、それが４スレッドありますから間に合うような気もするのですが、確認しながら工夫していく必要があると思われます。<br />　なんの工夫もなくPythonを動かすとCPUは１スレッドしか使われません。RaspberryPiでは能力の1/4しか使えないってことです。CPUの能力を最大限使おうとするなら、実行ファイルを複数に分けてOSレベルでプロセスを分けるか、Python内でmultiprocessingを定義して複数のCPUスレッドがPythonの処理を請け負うように仕向けないといけません。<br />　multiprocessingの使い方はThreadingと似ているので難しいことは無さそうですが、こういったちょっと深いところをちゃんと書かないとRaspberryPiでパッチマシンは厳しい感じです。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a> <a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%41%72%74%2d%4e%65%74" class="taglink" title="Art-Net">#&#91;Art-Net&#93;</a>  -- Posted by 電装工芸 〔637文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=160</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=160</guid>
	<category>tegalog</category>
	<pubDate>Sun, 27 Feb 2022 13:28:57 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　オレメモ ]]></title>
	<description><![CDATA[ 　オレメモ<br /><br />np.abs( np_array_dt - ( datetime.datetime.now() - datetime.timedelta(seconds=0.1) ) ).argmin()<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a>  -- Posted by 電装工芸 〔111文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=159</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=159</guid>
	<category>tegalog</category>
	<pubDate>Sat, 26 Feb 2022 21:51:46 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　本業の合間にPython書き書き。 ]]></title>
	<description><![CDATA[ 　本業の合間にPython書き書き。<br />　すでに動作確認は出来ていますから書式を変える作業。<br />　オブジェクト指向で書くと処理が部品化されるので見通しが良くて間違いが少ないかも。<br />　明日明後日は本業の現場なので工作はお休みです。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a>  -- Posted by 電装工芸 〔122文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=158</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=158</guid>
	<category>tegalog</category>
	<pubDate>Fri, 25 Feb 2022 21:00:28 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　super()の使い方がピンと来なかったのは、Python… ]]></title>
	<description><![CDATA[ 　super()の使い方がピンと来なかったのは、Python2とPython3で記述の仕方が少し違った為でした。ネットにはこの辺りが区別されてない情報が多いようです。<br />　super()は継承で呼び出すclass(親class)の初期化を実行するものです。親classに def __init__(self)&#58; があれば必須です。無ければ不要？。渡す引数があればsuper().__init__(引数)とします。引数の考え方書き方は普通にインスタンスを作る場合と同じです。ここにselfは不要ってこと。<br />　継承の考え方はC言語のincludeと似たようなものです。別classであってもここに書いてあるのと同じ扱いが出来ます。違いは、変数や関数に同じ名称がある場合にエラーにならず、親classを呼び出している子classの記述が優先されます。<br /><br />　ということらしい。<br />　結局は「同じ様なこと何度も書きたかねー」「ここをちょっと変更して使えたらなー」に応えた手段らしい。<br />　すっごい崇高な指向ではなく、ベッタベタに楽したい指向だわな。<br />　Pythonをデザインした人は「楽するために努力するタイプ」らしい。親近感がわきます。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a>  -- Posted by 電装工芸 〔521文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=157</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=157</guid>
	<category>tegalog</category>
	<pubDate>Fri, 25 Feb 2022 07:58:17 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　Pythonはオブジェクト指向な書き方が出来ると驚くほど書… ]]></title>
	<description><![CDATA[ 　Pythonはオブジェクト指向な書き方が出来ると驚くほど書きやすいですね。人気No.1言語なのが納得です。<br />　継承におけるsuper()の使い方が感覚に入ってきていませんが、今日書いたテキスト画面の基本制御classを継承して定型画面を表示するclassを書いて習得しましょう。<br /><br />　出来るだけ細かくclassで書いておけばC++への移植で都合が良いかもしれません。C++はゴリゴリのオブジェクト指向言語ですから、方言的な違いをclass単位でホローすれば全体の構造はそのまま行けるだろうという皮算用です。もしくは、全部をC++化しなくても、重い処理や繰り返しが多い処理だけPythonにimport出来るクラス・ライブラリとしてC++で書き直せば良いかもしれません。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a>  -- Posted by 電装工芸 〔345文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=156</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=156</guid>
	<category>tegalog</category>
	<pubDate>Thu, 24 Feb 2022 23:21:06 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　オレメモ ]]></title>
	<description><![CDATA[ 　オレメモ<br /><br />　Pythonで文字列からANSIエスケープシーケンスを取り除く方法<br /><br />　ソース<br />　import re<br />　text_ansi = &apos;\033[2K<em class="decorationE">Test</em>\033[2;3H<em class="decorationE">Text</em>&apos;<br />　pattern = re.compile( r&apos;\\033\&#91;&#91;0-9;&#93;{1,}&#91;a-zA-Z&#93;{1}&apos; )<br />　text_noansi = pattern.sub( &apos;&apos;, text_ansi )<br />　print( text_noansi )<br /><br />　実行結果<br />　<em class="decorationE">TestText</em><br /><br />　参考にしていた書き込みが間違っていました。<br />　制御文字(\や[)に対するエスケープ[\&#93;がありませんでした。<br />　解決に時間がかかったのは自分の無知が故です。up主に文句を言ったらいけません。<br />　文字数を{}で指定しなくてもいいのですが、自分としてはこの方がメンテナンス性がいいかなと。<br /><br />　あ、ここに書く時もそうなのですが、[\&#93;を表示させるには注意があります。<br />　[\&#93;を表示させるには[\\&#93;としないといけない場合があります。<br />　「\\033」や「\&#91;」と表示するには「\\\033」や「\\&#91;」と打たねばならん事があるということです。システムによって若干違うようですが。<br />　これが原因でup主の書き込みがおかしくなっていたのかな？<br /><br />　それにしても奇妙な字面です・・・<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a>  -- Posted by 電装工芸 〔588文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=155</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=155</guid>
	<category>tegalog</category>
	<pubDate>Thu, 24 Feb 2022 22:04:22 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　出来るだけclass記述を用いてPythonを書いています… ]]></title>
	<description><![CDATA[ 　出来るだけclass記述を用いてPythonを書いていますが、慣れるといいですね、コレ。<br />　そういうモノなので当たり前ですが、自分で書いたライブラリが通常のライブラリと同じ様に使えます。通常関数か、スレッドか、プロセスか、その辺りの書き分けもclass側に持たせること出来るのでメインソースがかなりシンプルになります。<br />　ただ、後で迷わないようにするために、ソースコード内のコメントに使い方を記述するなど、運用のコツを掴まないといけません。<br />　書いた本人が後日も使えるようにしておくのが一番難しかったりして・・・<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a>  -- Posted by 電装工芸 〔267文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=154</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=154</guid>
	<category>tegalog</category>
	<pubDate>Thu, 24 Feb 2022 17:33:32 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　ポリエステル樹脂が硬化しなかった原因は予想の通り添加した顔… ]]></title>
	<description><![CDATA[ 　ポリエステル樹脂が硬化しなかった原因は予想の通り添加した顔料の量でした。<br />　顔料は色によって許容添加量が違うらしく、最初に試した青は最大8%ですが、黒は最大4%です。お察しの通り、黒を青の量でやってしまったのです。<br />　今回は黒の顔料を2%、アセトンを15%添加したのですが、5時間経過でベタ付きが無くなっています。アセトンが揮発して完全に硬化するには丸一日かかりそうですが、解決が見えたので一安心です。<br />　黒の顔料は2%でも完全な真っ黒になったので、今後は1%くらいでも良さそうです。添加物は少ないに越したことはありませんからね。他に比べ価格の割りに量が少ないのですが、少ない量で効果が出るなら安いと言えます。<br /><br />　塗布方法ですが、FRP用のローラーを使って解決。このローラーは一晩アセトンに付け込んでも劣化する様子はありません。専用品ですから当たり前？<br />　ブラシが硬いためかペーパーで下地を均しても表面の仕上がりが僅かに波打つので避けていたのですが、書き物をする面ではありませんし、少し凹凸があるとゴム脚が滑りにくく貼り付きません。エアガンは平らに仕上がりますが、周囲への被害を考えると避けたい選択肢です。FRP用ローラーが妥協線かなと。<br /><br />　客席テーブルver4.5はトップコートとして顔料無添加のポリエステル樹脂を塗布して完成にしたいと思います。艶消し剤を添加しなくても半艶に仕上がるので機械強度を第一にします。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e3%82%ac%e3%83%81%e5%b7%a5%e4%bd%9c" class="taglink" title="ガチ工作">#ガチ工作</a>  -- Posted by 電装工芸 〔618文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=153</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=153</guid>
	<category>tegalog</category>
	<pubDate>Thu, 24 Feb 2022 17:23:30 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　ネットを何気に見ていてPythonの「継承」が具体的にわか… ]]></title>
	<description><![CDATA[ 　ネットを何気に見ていてPythonの「継承」が具体的にわかってきました。<br />　「継承」はclassを使って新たなclassを作る方法です。classの中で別なclassからオブジェクトを作って使っても同様の結果を出せますが、「継承」は別なclassのインスタンスをインスタンスのまま呼んで使います。C言語をご存じの方なら、classの中で別なclassのインスタンスをincludeするイメージでよいと思います。ちょっと説明が難しいところですね。<br />　Pythonといいますか、オブジェクト指向言語独特の考え方のようです。実体であるオブジェクト、オブジェクトを作るレシピのインスタンス、インスタンスを呼び出せるようにまとめたクラスとなるようです。俺様関数を楽に作る方法ですから、これなら一度書いたことを多目的に利用できますで、同じことを何度も書かずに済ますことが出来ます。<br /><br />　ここで重要になるのがsuper()です。ただ、これがあって初めて継承が可能になるのに、これについての説明が書籍でもネットでも弱い気がします。<br />　また、最もシンプルな基礎用法を題材に説明するのではなく、最もシンプルな応用例を題材に説明する文書が多いので、機能の核心を理解するのを遠ざけている傾向を感じます。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a>  -- Posted by 電装工芸 〔550文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=152</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=152</guid>
	<category>tegalog</category>
	<pubDate>Thu, 24 Feb 2022 13:35:39 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　客席テーブルにポリエステル樹脂を上塗りをしたのですが、顔料… ]]></title>
	<description><![CDATA[ 　客席テーブルにポリエステル樹脂を上塗りをしたのですが、顔料を入れて過ぎたためか硬化不良になってしまいました。要は固まらない。<br />　完全に硬化反応したポリエステル樹脂はアセトンでほぼ溶けないようです。硬化が怪しい時はアセトンで拭いてみるとわかるのかもしれません。<br />　このままでは使えないのでアセトンで拭き取ってやり直しです。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e3%82%ac%e3%83%81%e5%b7%a5%e4%bd%9c" class="taglink" title="ガチ工作">#ガチ工作</a>  -- Posted by 電装工芸 〔169文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=151</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=151</guid>
	<category>tegalog</category>
	<pubDate>Thu, 24 Feb 2022 09:39:00 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　１ファイルでPythonを書いているとソースが上下にあっち… ]]></title>
	<description><![CDATA[ 　１ファイルでPythonを書いているとソースが上下にあっちこっちして解りにくくなります。<br />　以前は面倒な気すらしていましたが、関数をクラスライブラリにして別ファイルにする意味がようやく実感出来ました。<br />　クラスライブラリにするってことは汎用化でもありますが、汎用化が目的ではなく、ダラダラ専用処理を書かないための制約と思えばいいでしょう。<br />　今後の拡張の為にも、ここまで書いてきたソースをゼロから書き直してみます。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a>  -- Posted by 電装工芸 〔218文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=150</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=150</guid>
	<category>tegalog</category>
	<pubDate>Wed, 23 Feb 2022 08:01:34 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　Art-Netの受信モニタはイメージ通りに動きました。選択… ]]></title>
	<description><![CDATA[ 　Art-Netの受信モニタはイメージ通りに動きました。選択したユニバースをキレイに表示しています。<br />　当面の習作課題はクリアしましたが、喜ぶというより目の前に新たな壁が見えてきました。<br /><br />　この後はartnet-coreと名付けている受信と加工を司るサーバー的な部分を作ります。<br />　ここまでの経験をもとに全体の構造をよく考えてから作る必要があります。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a> <a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%41%72%74%2d%4e%65%74" class="taglink" title="Art-Net">#&#91;Art-Net&#93;</a>  -- Posted by 電装工芸 〔197文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=149</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=149</guid>
	<category>tegalog</category>
	<pubDate>Tue, 22 Feb 2022 19:11:06 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　客席テーブルに塗布したポリエステル樹脂はOKです。ゴム脚の… ]]></title>
	<description><![CDATA[ 　客席テーブルに塗布したポリエステル樹脂はOKです。ゴム脚の痕は全くありません。キズはありましたが凹みにはならす。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e3%82%ac%e3%83%81%e5%b7%a5%e4%bd%9c" class="taglink" title="ガチ工作">#ガチ工作</a>  -- Posted by 電装工芸 〔65文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=148</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=148</guid>
	<category>tegalog</category>
	<pubDate>Tue, 22 Feb 2022 12:30:40 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　RaspberryPiが手に入らない。手に入ってもボリボリ… ]]></title>
	<description><![CDATA[ 　RaspberryPiが手に入らない。手に入ってもボリボリ価格。<br />　世界的な半導体不足を実感した瞬間でした。<br /><br />　３月下旬には入荷するそうです。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%52%61%73%70%62%65%72%72%79%50%69" class="taglink" title="RaspberryPi">#RaspberryPi</a>  -- Posted by 電装工芸 〔88文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=147</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=147</guid>
	<category>tegalog</category>
	<pubDate>Tue, 22 Feb 2022 08:51:41 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　ぼちぼち本業が復活しつつある今日この頃。 ]]></title>
	<description><![CDATA[ 　ぼちぼち本業が復活しつつある今日この頃。<br />　ガラクタイジリばかり続けていても実入りはありませんのでありがたいことです。<br /><br />　ガラクタイジリは本業の合間に続けていきますが、時間が少ないので課題を整理してとりかからないといけません。<br />　当面の課題はArt-Netパッチマシンと客席テーブルです。<br />　Art-Netパッチマシンは受信モニタを仕上げ、パッチ機能をハメ込める作りにしていきます。<br />　客席テーブルは、昨週の現場で部下が使ったのでその感想を聞き、ポリエステル樹脂を塗布した天板の具合いを見て方針を決めます。ポリエステル樹脂でもダメなら天板をどうするか更に考えないといけません。あとは軽量化です。現時点でも実用レベルの重さですが、あと5kgのダイエットを目指します。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e3%82%ac%e3%83%81%e5%b7%a5%e4%bd%9c" class="taglink" title="ガチ工作">#ガチ工作</a>  -- Posted by 電装工芸 〔342文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=146</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=146</guid>
	<category>tegalog</category>
	<pubDate>Tue, 22 Feb 2022 08:16:41 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　このところ何回か出ている「VT-100」について少し解説。 ]]></title>
	<description><![CDATA[ 　このところ何回か出ている<a class="url" href="https&#58;//ja.wikipedia.org/wiki/VT100" target="_blank" title="https&#58;//ja.wikipedia.org/wiki/VT100">「VT-100」</a>について少し解説。<br />　私も使ったことはありませんが、今のパソコンやスマホに至る画期的な発明だと思います。<br /><br />　まだパソコンという言葉すらなかった時代、コンピュータという言葉だけでそれらが総称されていた時代、大型汎用機(メインフレーム)をより使いやすくするための端末として開発された物です。<br />　見た目にはMS-DOS隆盛時代のパソコンみたいな姿をしていますが、大雑把に言うなら「リモコン」です。単体ではキー入力を画面に表示するくらいしか出来ません。処理を行うメインフレームに指示を送り、その戻りを表示するだけです。今どきの感覚のOSも搭載されておらず、データを保存する機能もありません。<br /><br />　ですが、このVT-100を発端にパソコンやインターネットが生まれたと言っても過言ではないのです。<br />　たぶんですが、VT-100だけで完結させて何か出来たら面白くね？と思った人がいて、本当にそうしてしまったのがパソコンの実質的な発祥ではないかと。インターネットも、離れたメインフレームを繋げたアーパネットが発祥と言われていますが、実際には遠くに置いたVT-100をもっと簡単にメインフレームに繋げたいというニーズに対し「楽するために努力した結果」なのではないかと。<br />　これらは私の勝手な想像でありますが、VT-100が無かったら今が少し違っていたのは間違いないと思います。<br /><br />　ANSIエスケープシーケンスや正規表現などのエスケープコードと呼ばれる制御体系はメインフレームやVT-100で用いられていたもので、その名残が未だに使われているのです。<br />　知らなくてもプログラムは書けますが、知っていた方が便利なことも少なくありません。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e5%a6%84%e6%83%b3" class="taglink" title="妄想">#妄想</a> -- Posted by 電装工芸 〔735文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=145</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=145</guid>
	<category>tegalog</category>
	<pubDate>Mon, 21 Feb 2022 08:28:47 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　開発作業用のノートパソコンはWindows11ですが、慣れ… ]]></title>
	<description><![CDATA[ 　開発作業用のノートパソコンはWindows11ですが、慣れると使いやすいですね。<br />　そう思う操作感の大半がMacOSやLinux系のパクリに見えますが、古いアプリも設定さえすれば安定して動くので便利に使えてます。<br />　誰かが作ったコンテンツやサービスを消費するだけならiOSやAndroidが良いと思いますし、日常使いの文具としてやネット上のシステムを踏み台に発信するならMacOSが便利だと思いますが、舞台照明系のシステム構築やガチなモノづくりをするならWindowsの方が環境を整えやすいと思われます。使いたいのはOSではなくアプリやネット上のサービスですから、趣向や目的に合わせて選べばいいのです。<br />　数十年前にMP-80というワンボードマイコンにハンドアセンブルを16進数で打ち込むことから始まった私にとってはどれも便利過ぎるのでどれでもいいのですけど。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%e6%97%a5%e5%b8%b8" class="taglink" title="日常">#日常</a>  -- Posted by 電装工芸 〔387文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=144</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=144</guid>
	<category>tegalog</category>
	<pubDate>Mon, 21 Feb 2022 07:58:26 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　画面とArt-Netの送受信を結合させられる段階になりまし… ]]></title>
	<description><![CDATA[ 　画面とArt-Netの送受信を結合させられる段階になりました。Art-Netをスルー出力し特定のユニバースをモニタします。<br />　簡易ながら実験段階で出来ていることですから、画面を整えたからってなんだよって構成ですが、パッチマシンの一部を先行して作っているので重要な過程です。表示することが目的ではなく、最低限持たなければならない機能を出来るだけ見やすく使いやすく軽く、そして今後の伸びしろを持たせた構成でまとめ上げることが目的です。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%41%72%74%2d%4e%65%74" class="taglink" title="Art-Net">#&#91;Art-Net&#93;</a>  -- Posted by 電装工芸 〔229文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=143</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=143</guid>
	<category>tegalog</category>
	<pubDate>Mon, 21 Feb 2022 07:18:57 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　今日も大半が待機時間な小屋付き増員です。 ]]></title>
	<description><![CDATA[ 　今日も大半が待機時間な小屋付き増員です。<br /><br />　Art-Netを送信する物が無いので画面とキー操作の作り込みをしました。<br />　簡単なようで難しいのがキー入力です。<br />　どんな文字でも受け付けるinput()などの文字列入力コマンドを使えば入力自体は簡単ですが、カーソルキーなどを即応させたいし、ホットキーでコマンドを入力したいし、入力の際にエラーにならない様にフィルタをかけたい。<br />　面倒だったのは数値の入力。用いられる数値には範囲がありますから、範囲外の入力がされたならその時点でアラートを出したい。<br />　例えば、数値範囲が0-127だとして、128や1000などの範囲外の数値が入力されたならその時点でアラートを出す。求める数値が整数なら小数点以下の入力は阻止する。数値を得たいのだから数字キー以外の入力は受け付けない。など。<br />　求める操作のリズム感によりますが、数値範囲や小数点の条件などでフィルタする関数を作っておいても無駄にはならないでしょう。<br />　当面の目標であるArt-Netのモニタは整数だけを受け付ければいいのですが、極端な話「.」ピリオドを受け付けなければこれは簡単。小数点以下１桁の範囲指定が一番面倒でした。<br /><br />　これらの処理には「正規表現」と呼ばれる奇怪な文字列を使わなければなりません。「3桁以下の整数文字列=&apos;^&#91;1-9&#93;&#91;0-9&#93;{,2}$&apos;」とか「小数点以下１桁の2桁以下の実数文字列=&apos;^&#91;0-9&#93;{,2}\.{,1}&#91;0-9&#93;{,1}$&apos;」といった書き方をします。なんですかねコレ。<br />　慣れてしまえば、まぁ、ありかなと。ANSIエスケープシーケンス並みに古いVT100時代からの名残りです。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a>  -- Posted by 電装工芸 〔719文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=142</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=142</guid>
	<category>tegalog</category>
	<pubDate>Sun, 20 Feb 2022 20:53:34 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　今週末は小屋付きの増員ですが、毎度のことながらそれほどやる… ]]></title>
	<description><![CDATA[ 　今週末は小屋付きの増員ですが、毎度のことながらそれほどやることはありません。<br />　居眠りも出来ないので、パソコンに向かって仕事をしている風味でArt-Netのソースコードの見直しです。勢いで書いた関数型のC言語っぽいコードをPythonらしい書き方に直しつつ、贅肉を削っております。<br /><br />　Pythonには群のデータを扱う方法がいくつかあります。Art-NetというかDMX512のパッチマシンを作るにはこられを巧く使うことが大事です。<br />　これらには大きく分けて３つあります。list型、taple型、dictionary型です。これらは似ていますが出来ることが違います。また、どれを使っても出来ることでも内容によって処理速度が違ったりします。特徴をよく理解して使わないと損です。<br /><br />　list型は群に対しても個に対しても計算が出来ます。文字列に対する加工も含まれますが、他の型ではそれが出来ません。<br />　taple型は様々な型のデータを一つに束ねて扱えます。関数の戻り値は基本的にこれだと思っていいでしょう。taple型の使い方がわかるとPythonの便利さが実感出来てコーディングの幅も広がるような気がします。<br />　dictionary型はデータ参照用と言ったらいいでしょうか。キーワードに対して様々な型のデータを関連付けられ、なんといっても抽出が速い。キーワードが規則性のある数値の場合は他の２つもあまり変わらないかもしれませんが、キーワードが規則性を持たない場合はdictionary型が圧倒的に速く便利だと思います。<br />　具体的な違いや用法はその筋の教科書や先達の書き込みに任せますが、PythonがPythonであるところはここなのかもしれません。<br /><br />　RaspberryPiが見た目以上に優秀なハードウェアなのもありますが、Pythonで制御系を書いても遅いとは感じません。<br />　もちろん、C言語とかで書いてコンパイルした方が速いのは間違いありませんが、書いてすぐに実行できるPythonは生産性が高いと思います。<br />　少し遠回りかもしれませんが、C++に書き直すことを前提にPythonで書き、動いたらC++に移植するってのが制御系を作るのにいいかもしれないなぁ～なんて思ったりしてます。コーディングの規則が違うだけで書く内容は凄く似てますので、PythonでスケッチしてC++で清書するのです。勢いで書いたPythonをPythonらしく書き直すなら同じことかなと。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a>  -- Posted by 電装工芸 〔1046文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=141</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=141</guid>
	<category>tegalog</category>
	<pubDate>Sat, 19 Feb 2022 19:39:58 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　昨晩、思い立って調べてみたのですが、Pythonで並列処理… ]]></title>
	<description><![CDATA[ 　昨晩、思い立って調べてみたのですが、Pythonで並列処理をする方法には大きく分けて２つあると理解する。ThreadingとMultiprocessingです。<br /><br />　今までに何度も読んでいたサイトばかりですが、何故だか内容が突然理解できるようになりました。たぶん今まではPythonをスクリプト言語だと思っていたからでしょう。Pythonという皮の裏にC言語がある思えばスムーズに理解が進みました。<br /><br />　似たような別ライブラリもありますが、意味合いとしてはこの二つに集約されていると思っていいでしょう。<br />　大雑把に言うなら、Threadingは比較的楽に使えるがCPUスレッドは１つしか使えない。Multiprocessingは複数のCPUスレッドを使えるがプロセスが起動するのに時間がかかり記述も少し難しい。<br />　難しいといっても、プロセス間通信の制約とタイミングくらいなもので、関数自体はThreadingとMultiprocessingはとても似ているので片方を覚えればどちらも使えそう。関数間で通信するQueueは使うライブラリが違うので注意ですが、これも関数が酷似しているのでストレス少ないかも。<br />　Python3.8からは共有メモリというC言語のポインタに近いことが可能になっているので、RaspberryPiのPythonも3.8になることを心待ちにしております。変数の型やデータ長を厳密に管理しなければなりませんが、それさえやっておけばいいので問題無し。デバイスとやり取りする処理では普通にやっていることだし。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a>  -- Posted by 電装工芸 〔673文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=140</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=140</guid>
	<category>tegalog</category>
	<pubDate>Thu, 17 Feb 2022 19:01:29 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　ガラクタ週間が終わり、終日本業のデスクワークでした。 ]]></title>
	<description><![CDATA[ 　ガラクタ週間が終わり、終日本業のデスクワークでした。<br />　会場図面書いて、照明プランの概要まとめ、見積りというデスクワークの王道メニューです。<br />　嫌いじゃないのですが、ガラクタネタが中途なのでソワソワします。<br />　今やっているArt-Netは卓とデコーダが必要な作業なので、荷物も多いし広いスペースも必要です。しばらくはお休みかな。<br />　明日から現場が続きますが、RaspberryPiだけ持って行って現在のソースをオブジェクト指向っぽく書く練習をしようかなぁ。<br /><br />　そうそう、製作というレベルではありませんが、ピンスポット用の照準器を増産しました。その実態は小型カメラ用の自在雲台を介して短いピカティニーレールをピンに取り付けるクランプです。<br />　細かい部品を買い増しして組み立てるだけなので15分くらいの作業でしたが、なぜ思い立って作ったかと言えば数日後の現場で数年ぶりにピンを振ることになったからです。<br />　鈍った腕でも対応出来そうな演目ですが、お年頃からくる目のコンディションでバインド照準器が使えませんので、ダットサイトなどの目印が遠くに見える照準器に頼らないとダメだと思われます。<br />　このクランプは5-6年前に作った代物です。以前作った物は部下にあげてしまったので、余っていた部品で改めて自分用をこさえたワケです。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%52%61%73%70%62%65%72%72%79%50%69" class="taglink" title="RaspberryPi">#RaspberryPi</a> <a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a>  -- Posted by 電装工芸 〔582文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=139</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=139</guid>
	<category>tegalog</category>
	<pubDate>Thu, 17 Feb 2022 18:29:42 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　空き時間が少なかったのですが、Art-Netのエンコードを… ]]></title>
	<description><![CDATA[ 　空き時間が少なかったのですが、Art-Netのエンコードを試してみました。<br />　受信したバイナリをデコードし、パラメータをそのままにエンコードして送信です。単純な動作ですが、これが出来なきゃパッチマシンなど絶対無理というテストです。<br />　卓からの８ユニバースをすべて処理したのですが、負荷の増加は2.5%くらいでした。十分に許容範囲で収まったのは良いことです。<br />　パッチマシンは8in8outくらいを想定していますが、16in16outも可能だったりして。16ユニバース出る卓が無いので試せないし作ってもオーバースペックなので私は不要かな。機能全体を組み込んでから悩むことですが・・・。<br /><br />　今のところ１日１課題。<br />　あとどれくらいの課題があるのかわかりませんが、納期はありませんのでノンビリいきましょう。ここまで出来れば、丁寧にclassライブラリにまとめ上げ、コメントに使い方を明記して後々も使える様にしておきましょう。<br />　そういう意味ではキー操作やモニタ表示もclassライブラリにして汎用性を高めるのがいいですね。<br /><br />　と言いますか、このまま書き増しを続けるとソースコードがグチャグチャになって後で後悔しそうです。<br />　私のメインはPICのアセンブラなのでANSI-Cの関数タイプっぽい書き方をしがちですが、Pythonならオブジェクト指向な書き方をしたいものです。最近、クラス、インスタンス、継承を使う意味と感覚がわかってきましたので、出来るだけそういった書き方をしていこうと思います。<br />　以前は「継承」ってのが感覚的にわからんかったのですが、関数を束ねて新しい関数を作るだけだと簡単に考えればいいみたいです。ただ、関数は実体なのであっちこっちの関数から同じ関数を同時に呼ぶと衝突が起こります。解決には親関数の中で使う関数を親関数にとって専用にすればいいのですが、同じ様な関数を使うだけ書くのは面倒だしやらたとソースが大きくなるので、ひな形であるクラスから実体のインスタンスを作るという発想になったのだと最近ようやく「感覚的に」理解出来ました。<br />　その筋の解説書を読むと「継承はオブジェクト指向という高貴な峰の頂」みたいな奇妙に美化した記述が多いのですが、その実態は「楽して俺様関数書きてぇ〜」って俗っぽい発想でした。美化した手段を書くだけで目的を書かない解説書が多いので感覚的にわからんかったのです。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a> <a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%41%72%74%2d%4e%65%74" class="taglink" title="Art-Net">#&#91;Art-Net&#93;</a>  -- Posted by 電装工芸 〔1025文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=138</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=138</guid>
	<category>tegalog</category>
	<pubDate>Wed, 16 Feb 2022 20:06:52 +0900</pubDate>
</item>
<!-- One Entry Data for RSS Feed -->
<item>
	<title><![CDATA[ 　本業もボチボチ忙しくなってガラクタ週間も終わりを迎えようと… ]]></title>
	<description><![CDATA[ 　本業もボチボチ忙しくなってガラクタ週間も終わりを迎えようとしています。<br /><br />　現場と打ち合わせの合間にArt-Netです。<br />　受信したバイナリをそのままの送信出来ないようでは先には進めませんが送信できない問題。<br />　解決はしましたが、正規マニュアルや先達の書き込みに「これはちがう」とある設定で動いてしまいました。<br /><br />　基本環境：RaspberryPi4 Rasbian_buster Python3.7.3<br />　ネットワークインターフェース：内臓LANポート(eth0)、USB-LANアダプタ(eth1)<br />　IPアドレス：eth0もeth1もArt-Net用に設定済み。<br />　試験環境：MAdot2でArt-Netを送出、RaspberryPiを経由、中華電機のArt-Netデコーダで受信、レガシーDMXをDoctorMXでモニタ。<br />　処理内容：eth0で受信したArt-Netのバイナリをeth1で送信するだけ(これが出来なきゃ始まらない)。<br /><br />-----<br /><br />import socket<br /><br />def artnet_rx_tx()&#58;<br />　&quot;&quot;&quot; 基本パラメータセット &quot;&quot;&quot;<br />　RECV_HOST_NAME = &apos;&apos;<br />　<em class="decorationE">SENDTO_HOST_NAME = &apos;255.255.255.255&apos;</em><br />　PORT = 6454<br />　&quot;&quot;&quot; socket受信の設定 &quot;&quot;&quot;<br />　artnet_rx_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)　　＃UDPによるソケットを宣言(受信で使う)<br />　artnet_rx_sock.setsockopt(socket.SOL_SOCKET, 25, str(&quot;eth0&quot; + &apos;\0&apos;).encode(&apos;utf-8&apos;))　　＃ソケットとNICを関連付け<br />　artnet_rx_sock.bind((RECV_HOST_NAME, PORT))　　＃送信元とポートをソケットに関連付け この場合はどこからの送信でも受けるって意味になる<br />　&quot;&quot;&quot; socket送信の設定 &quot;&quot;&quot;<br />　artnet_tx_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)　　＃UDPによるソケットを宣言(送信で使う)<br />　artnet_tx_sock.setsockopt(socket.SOL_SOCKET, 25, str(&quot;eth1&quot; + &apos;\0&apos;).encode(&apos;utf-8&apos;))　　＃ソケットとNICを関連付け<br />　artnet_tx_sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)　　＃ソケットをブロードキャストとして使う宣言<br />　&quot;&quot;&quot; 中継 &quot;&quot;&quot;<br />　for i in range(800)&#58;　　＃繰り返し<br />　　artnet_rx_bytes, addr = artnet_rx_sock.recvfrom(1024)　　＃受信処理<br />　　if len(artnet_rx_bytes) &gt; 18&#58;　　＃受信データ長が最低長以上かを確認　下行とandで一文にしても意味は同じですがヘッダー長を下回った時にエラーになる<br />　　　if artnet_rx_bytes&#91;0&#58;12&#93; == b&apos;Art-Net\x00\x00\x50\x00\x0e&apos;&#58;　＃DMXの値データだけを選別 ヘッダーチェック<br />　　　　artnet_tx_sock.sendto(artnet_rx_bytes, (<em class="decorationE">SENDTO_HOST_NAME</em>, PORT))　＃送信処理　ここがわからんで時間を喰う<br />　&quot;&quot;&quot; 終了操作 &quot;&quot;&quot;<br />　artnet_rx_sock.close()　　＃ソケットの仕舞い<br />　artnet_tx_sock.close()　　＃ソケットの仕舞い<br /><br />※ 行頭の空白と＃は全角で書いていますので、このままコピペするとエラーになります。<br />-----<br /><br />　for文による繰り返しで800回中継を行うテストソースです。<br /><br />　ポイントはBroadcastの送信先を指示する「SENDTO_HOST_NAME」です。socket.sendtoのパラメータです。「RECV_HOST_NAME」と同様に空白データを割り付けるベシとされるのが一般的ですが動きません。Broadcastアドレスを示す古い方法の&apos;255.255.255.255&apos;にしたところ稼働したという話です。<br />　&apos;2.255.255.255&apos;や&apos;10.255.255.255&apos;でも稼働しましたが、&apos;255.255.255.255&apos;はゾーンの末尾アドレスを示すマジックナンバーらしく汎用性が高いと思われます。<br /><br />　動けばいいのですが、かなりの時間を喰ってしまい課題の残りが明日以降になりました。<br /><br />　ここまで出来ればパッチマップによる入れ替え処理を作ります。<br />　壮大な繰り返し処理となりますので、どれだけ簡素に出来るかがカギになります。<br /><br /><a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%50%79%74%68%6f%6e" class="taglink" title="Python">#Python</a> <a href="https&#58;//www.densokogei.jp/tegalog/tegalog.cgi?tag=%41%72%74%2d%4e%65%74" class="taglink" title="Art-Net">#&#91;Art-Net&#93;</a>  -- Posted by 電装工芸 〔2112文字〕 ]]></description>
	<link>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=137</link>
	<guid>https://www.densokogei.jp/tegalog/tegalog.cgi?postid=137</guid>
	<category>tegalog</category>
	<pubDate>Tue, 15 Feb 2022 20:31:42 +0900</pubDate>
</item>

	<!-- END ENTRIES -->
</channel>
</rss>

