日記

Pythonで二次元配列の初期化

Mohmongar
Pythonを使って初歩的なミス。二次元配列の初期化で端折ってa=[[0]*3]*3などとしてしまったため、a[0][0]=1とした時、a[0][0]==a[1][0]==a[2][0]==1となり、しばらくうまく思ったとおりに動かず悩む。初歩的ミス。とりあえずa = [[0 for i in range(0,3)] for j in range(0,3)]と書いたが、個人的には美しくない。

Firefoxフォントを滑らかに

Mohmongar
firefoxがぶっとんだ。プラグインも設定も再設定。とほほ。 まずはフォントが汚いのが気になるため。以前どうやってか忘れたので、調べてメモ。 C:\Users*\AppData\Roaming\Mozilla\Firefox\Profiles*.default-*\user.js のファイルに user_pref("layers.acceleration.disabled", false); user_pref("gfx.content.azure.backends","direct2d1.1,cairo"); user_pref("gfx.direct2d.disabled", false); user_pref("gfx.direct2d.force-enabled", true); user_pref("gfx.font_rendering.cleartype.always_use_for_content", true); user_pref("gfx.font_rendering.cleartype_params.cleartype_level", 100); user_pref("gfx.font_rendering.cleartype_params.enhanced_contrast", 200); user_pref("gfx.font_rendering.cleartype_params.gamma", 500); user_pref("gfx.font_rendering.cleartype_params.pixel_structure", 1); user_pref("gfx.font_rendering.cleartype_params.rendering_mode", 5); user_pref("gfx.font_rendering.directwrite.enabled", true); user_pref("gfx.use_text_smoothing_setting", true); user_pref("layers.acceleration.disabled", false); user_pref("layers.acceleration.force-enabled", true);</pre> にする。参考はWindowsのFirefoxのフォントレンダリングをきれいにする - Qiitaです。

IFTTTでNature Remoを作動

Mohmongar
Nature Remoを使っていろいろ設定してきたが、どうもうまく時間指定したコマンドを実行させられない。動いたり、動かなかったり、動いてもコマンド実行が指定時間よりちょい遅いなどの現象が起こるのだ。動かないときにはスマホ側には送信した、との通知はくるのだが、家電は反応してない。スマホから手動で実行すると動くので、赤外線が物理的に届いてないわけではない。遅いときには1分くらいずれるときがある。じゃあちょっと早めに時間設定してやれ、と思ったら、Natureのトリガだと15分単位でしか設定できない。どうもNatureのサーバがしょぼいせいの気がする。NatureはIFTTTで実行させるアプレットを提供しているので、IFTTTを使って自動運転させることにする。IFTTTは異なるウェブサービス間でサービスを連動させるウェブサービスだ。この場合 IFTTTで定時イベント&Natureへコマンド発生 Natureから家のRemo miniにコマンド発生 と、ひどく迂遠な方法で実行させる。これにより動かないことはなくなったが、それでも30秒~1分くらいは遅延するが、動かないことはないようなので、これで運用を続ける

Nature Remo Miniで照明操作

Mohmongar
Nature Remo Miniが届いたので、まずは照明の操作を登録するのだが、ある程度プリセットがあるかなと思っていたがあるのはボタンが多いTVとかエアコンだけ。照明系はリモコンから学習させるしかないことが発覚。でも操作したい照明のリモコンには点灯状態を変化させるのは1つの切り替えボタンしかない。しかもOn/Offではなく、On→調光→保安灯→OFF→...の4段階のモード切替。コマンドを送ってもその時の点灯状態次第ではどうなるかわからん・・困った。 だがここですでにもっていたUSB赤外線リモコンが役に立った。USB赤外線リモコンキットは、リモコンの赤外線情報のデータを読み取ることができ、かつある程度任意のコード(4種類くらいのフォーマットに対応)を出力できる。該当のリモコンのデータを読み取って、数字をちょっといじると、Onだけ、Offだけで動作するリモコンデータが見つかった!(下記参照)。意外とリモコンのボタンがもっている以上の機能に対応してるもんですな。助かったわ。オフィシャルじゃないけど、動けばOK!。 ちなみにこのUSB赤外線リモコンで直接照明まで送信できれば、話は簡単だったのだがパワー不足でどうにも届かないので(本来これが届くのであればNature remo miniはいらないかも)、「赤外線データをPCで作成→USB赤外線リモコンを”NatureRemo mini"に向けて発信させて学習→Nature Remoを照明の部屋にもっていき、そこで動くかどうかスマホから動作確認」をくりかえして各データの動作確認した。なんと迂遠な。 DAIKO製照明の一例:送信データとリモコンのボタン "86409A60" がトグルスイッチ "86409C60"が60minSLEEP "86409D60"が30minSLEEP 手探りで解明した送信データと照明の動作 "86409669"が調光 "86409867"が保安光(黄色いやつ) "86409E61"が消灯 "86409F60"が全灯 ちなみにこの照明のリモコン赤外線データはNEC式のようです。 参考にしたサイトは 赤外線リモコンの信号定義データの合成 — 赤外線リモコンの信号定義データの合成 1.3 ドキュメント DSAS開発者の部屋:親指サイズの USB 赤外線リモコンが面白い 赤外線リモコンの通信フォーマット です。

レコード大賞優秀アルバム賞おめでとうございます

Mohmongar
The Beatniksのアルバム「EXITENTIALIST A XIE XIE」が第60回レコード大賞優秀アルバム賞を受賞したそうです。幸宏さん慶一さんおめでとうございます。知ったのはこのTweetとこのページ「The BeatniksへのSoftly-Softlyな思い 【世界音楽放浪記vol.26】 | Daily News | Billboard JAPAN」です。

末尾にドット(.)

Mohmongar
Windowsのプログラムのミスで末尾にドットが付いたフォルダを作成してしまい、そのフォルダが消せなくなった。ネットを調べると結構出てくる。末尾のドットは本来MS-DOSの時代から使用禁止で、普通は”AAA."とか書いても"AAA"に変換されてたんだが、プログラム上では誤ってできてしまうことがある。そんなファイルの消し方は、フォルダ名をUNCの書き方で先頭に"\\?\"をつけてフルパスで書いてやればそのファイルにアクセスできる。UNC記法はWindowsネットワークでのリソースアクセスのため拡張されたパス名の書き方で、そのうちの機能の一つとして先頭に"\\?\"をつけるとWindows内部のすべての文字列解析を無効にし、それに続く文字列をファイルシステムに直接送信するようにWindows APIに指示するらしい。つまり".."とかの相対パスとかは使えなくなるけど、よけいなことはしなくなる。例えばそんなフォルダを消すにはコマンドラインから rd "\\?\c:\users\hogehoge\Desktop\folder." とすることになる。 参考にしたページは、 ファイル名に使わない方が良い文字 Naming Files, Paths, and Namespaces | Microsoft Docs でした。

No Man’s Skyにはまる

Mohmongar
ひさしぶりにゲームにはまる。発売当初よりちょっと興味があったのだが、始めの時はあまり評判がよくなかったのでスルーしていた。その後、大型更新後にましになったとYoutubeのゲーム実況とかでよく見るようになり、そこへきてSteamセールで半額となったのでそのときポチってしまった。飛んで、歩いて、掘って、組立てて、と基本的に作業ゲーなのだが、延々と続けている。こんなにずっとゲームしているのはSkyrim以来だ。あとCivlizationに近いものがある。あれも止め時がわからない。一つミッションをこなすたびに、次々とやることが増えていく。というか自分で増やしていく。お使いゲーだとどこかで飽きてくるのだが、まだ飽きない。早く寝ないと。

[c#][sqlite3][sql]create .. as selectで数値が化ける

Mohmongar
c#でSqlite をつかっていた際、特定の条件で64bit数値が32bit化されることを発見。普通のselectでは発生せず、 create table ... as select ... で発生。 System.Data.SQLite Net.1.0.108で発生。SQLite version 3.24.0.のコマンドラインツールからの実行では発生なし。python 3.5.1 sqlite3 2.6 で発生なし、なので、.Netライブラリ上でのみ起こるっぽい。 元のテーブル create table test (id integer not null unique primary key, value integer not null); に下図のような値が入っていた時、 create table tmp as select id,value,value+0 from test; を実行したら、 となり、value欄の値が化けているのがわかる。-4394967295=0xffffffff付近で化けていることから、64bitが途中で32bit化しているっぽい。value+0となんらかの演算を行ったvalue+0カラムは正常な値になっている。 ちなみにselectだけの select id,value,value+0 from test; の場合、問題は起こらない。

TS/M2TSから音声データの抽出

Mohmongar
TS/M2TSデータから音声データ(AC3)を抽出する方法は以下の通り。 参考はTMPGEnc Video Mastering Works5でDTS-HD Master Audioの音声を抽出する方法 : とあるヒロップの日常など。感謝!。tsMuxeRはtsMuxeR - Transport Stream Muxer - My Ubuntu Corner of the Web、eac3toはeac3to - audio conversion tool - Doom9's Forum、eac3toguiはEAC3toGUI 2.00 | Software - Digital Digestあたりを探してください。 tsMuxeRを使って、TS/M2TSからAudioデータを抽出する EAC3toGUIを使って、dtsをac3に変換する

USB充電アダプタ寿命?

Mohmongar
夜中にAndroidスマホがブーブーとバイブを鳴らしているのに気が付き、電話?かと思って起きてみると、電力低下20%で消費電力低下モードに入りますか?警告が出っぱなし。充電中なのになんで?しかもバイブしっぱなし?、かと思うとUSB充電アダプタが触れなくもないけど、非常に熱くなっておりました。これはあかんと引っこ抜いて、別のアダプタで充電すると大丈夫そう。こわー。発火でもしてたらと思うとちょっと眠れなくなりました。一応日本メーカー製でPSEマークもついてるんだけどね。