この投稿をInstagramで見る
Mohmongar(@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データから音声データ(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に変換する
この投稿をInstagramで見る
Mohmongar(@mohmongar)がシェアした投稿
この投稿をInstagramで見る
Mohmongar(@mohmongar)がシェアした投稿
夜中にAndroidスマホがブーブーとバイブを鳴らしているのに気が付き、電話?かと思って起きてみると、電力低下20%で消費電力低下モードに入りますか?警告が出っぱなし。充電中なのになんで?しかもバイブしっぱなし?、かと思うとUSB充電アダプタが触れなくもないけど、非常に熱くなっておりました。これはあかんと引っこ抜いて、別のアダプタで充電すると大丈夫そう。こわー。発火でもしてたらと思うとちょっと眠れなくなりました。一応日本メーカー製でPSEマークもついてるんだけどね。
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); }
この投稿をInstagramで見る
Mohmongar(@mohmongar)がシェアした投稿
この投稿をInstagramで見る
Mohmongar(@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<testclass>(); 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)); } } } }
ほかにもいろんなやりかたがあるらしい。参考はこのページ「データ バインディング - .