Blog

お花

Mohmongar
この投稿をInstagramで見る Mohmongar(@mohmongar)がシェアした投稿

[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に変換する

あじさい

Mohmongar
この投稿をInstagramで見る Mohmongar(@mohmongar)がシェアした投稿

つばめ

Mohmongar
この投稿をInstagramで見る Mohmongar(@mohmongar)がシェアした投稿

USB充電アダプタ寿命?

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

[Forms][C#]メニューに排他的にチェックをいれる

Mohmongar
C#でFormsを使ってプログラムする機会があって調べたメモ。メニューのあるアイテムの下層をひとつのグループとみなし、そのグループ中で一つだけチェックが入る前提で、メニューを選択した際にチェックをいれる処理を統一したもの。親menu1の下に子menu1_menu1,menu1_menu2,... があるとして、各メニューの処理時に同じCheckMenuExclusivelyを呼び出すことで排他的にチェックマークが入る。当然チェックを入れる以外の処理は別途必要。たぶん似たようなものはそこらに転がってるけど、子メニューを示すメソッドがItemsではなくDropDownItemsであったことため、しばし悩んだのでメモしておく。 void CheckMenuExclusively(object sender, ToolStripMenuItem upper) { foreach (ToolStripMenuItem item in upper.DropDownItems) { if (object.ReferenceEquals(sender, item)) { item.Checked = true; } else { item.Checked = false; } } } private void menu1_menu1_Click(object sender, EventArgs e) { CheckMenuExclusively(sender, menu1); }

Mohmongar
この投稿をInstagramで見る Mohmongar(@mohmongar)がシェアした投稿

Mohmongar
この投稿をInstagramで見る Mohmongar(@mohmongar)がシェアした投稿

[Forms][C#]BindingListでデータバインドする

Mohmongar
ひさしぶりにWindowds formsのプログラムをC#で作成中にコントロールにデータバインドをしようとしたら、ListBoxなど一部のコントロールでは<INotifyPropertyChangedを使った更新が効かないことが分かったので、BindingListで使用したのでメモ。(というか本来ListboxにバインドできるのはSelectedIndex ,SelectedItem ,SelectedValue,Tagだけらしい)。 ここでBindingListを使わずにtestclassを直にDataSourceにバインドすると、PropertyChangedがnullとなる。 t = new testclass(); t.display = "one"; testdata = new BindingList&lt;testclass&gt;(); testdata.Add(t); listBox1.DisplayMember = nameof(display); listBox1.DataSource = testdata; ついでによく忘れるので、INotifyPropertyChangedの書き方。 using System.ComponentModel; public class testclass : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private void NotifyPropertyChanged(string propertyName = "") { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } public string _display; public string display { get { return _value; } set { if (value != _display){ _display= value; NotifyPropertyChanged(nameof(display)); } } } } ほかにもいろんなやりかたがあるらしい。参考はこのページ「データ バインディング - .