くりーむわーかー

プログラムとか。作ってて ・試しててハマった事など。誰かのお役に立てば幸いかと。 その他、いろいろエトセトラ。。。

2017年01月

AnyVideoConverterの文字化け

動画に字幕をつけたくてAny Video Converterってソフトを使ってみたら、字幕が化けた。

ぐぐるとだいたいUTF-8でーって書いてあるんだけどそれだけだとダメでした。

sample

↑の感じで、エンコード指定とフォント指定しないとダメ。フォントがデフォでよくわからないフォントになってるので、これをMSゴシック的なフォントに変える。これで文字化け解消。

C# 文字列から日付(DateTime)への変換色々

タイトル通り。ど忘れすることが多い。特にカルチャ指定。

DateTime parsedDate;
string pattern = "";
string dateVal = "";

//いつもの
dateVal = "2016/11/12";//←とか→"2016-11-12"
pattern = "yyyy/MM/dd";//←とか→"yyyy-MM-dd"
if (DateTime.TryParseExact(dateVal, pattern, null, DateTimeStyles.None, out parsedDate))
{
    Console.WriteLine(parsedDate);
}
//カルチャ指定
dateVal = "01/Jan/2017:12:10:22";//Apacheはコレ
pattern = "dd/MMM/yyyy:HH:mm:ss";
//カルチャは「using System.Globalization;」入れないと使えない
CultureInfo provider = new CultureInfo("en-US");//和風は⇒new CultureInfo("ja-JP");
if (DateTime.TryParseExact(dateVal, pattern, provider, DateTimeStyles.None, out parsedDate))
{
    Console.WriteLine(parsedDate);
}
//オマケ:DateTimeを文字列変換で書式指定
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
Console.WriteLine(DateTime.Now.ToString("yyyy年MMMMdd日 HH:mm:ss:fff"));

サーバのアクセスログを独自に解析したい時とか、アクセス日時の時間をDateTimeにしたいので ログの書式に合わせて変換しないといけないので結構使う。

書式指定の内容はココ参照で。

SQLServerでデータベース拡張が行われたか調べる

タイトル通り。どの程度の頻度で行われているかを調べたいとき。


declare @filename varchar(500) 

--//トレースファイルのパスを取得
select @filename = path from sys.traces
where is_default = 1 

--//EventClass
--92:Data File Auto Grow
--93:Log File Auto Grow
--94:Data File Auto Shrink
--95:Log File Auto Shrink

select
HostName
,EventClass
,DatabaseName
,Filename
,StartTime
,EndTime
,(Duration/1000.0) as かかった秒
,(IntegerData*8.0/1024) as 増えたMB
from sys.fn_trace_gettable(@filename, default) 
where EventClass between 92 and 95
and DatabaseName = DB_NAME() 
order by StartTime desc

データベース拡張だけではなくいろんなログが取れるから結構便利。EventClassの定義をとる関数とかないかと探してみたけど見つからなかった。誰か教えてください。定義自体はココに載ってる。

問合せ