2013年1月29日火曜日

Windowsのイベントログから起動・終了時間を取得する

System.Diagnostics.EventLog[] logs = System.Diagnostics.EventLog.GetEventLogs(); 
StringBuilder sb = new StringBuilder(); 
foreach (System.Diagnostics.EventLog log in logs) 
{ 
  if (log.Log == "System") 
  { 
    int cnt = 0; 
    for (int i = log.Entries.Count -1 ; i > 0 ; i--) 
    { 
      if (log.Entries[i].Source == "Microsoft-Windows-Kernel-General") 
      { 
        if (log.Entries[i].InstanceId == 12) 
        { 
          sb.AppendLine(log.Entries[i].TimeGenerated.ToString("[yyyy/MM/dd HH:mm:ss]") + "起動"); 
          cnt++; 
        } 
        else if (log.Entries[i].InstanceId == 13) 
        { 
          sb.AppendLine(log.Entries[i].TimeGenerated.ToString("[yyyy/MM/dd HH:mm:ss]") + "終了"); 
          cnt++; 
        } 
      } 
      if (cnt > 10) 
      { 
        break; 
      } 
    } 
  } 
} 
return sb.ToString();

C#でEval

CSharpCodeProvider c = new CSharpCodeProvider();
CompilerParameters cp = new CompilerParameters();
cp.ReferencedAssemblies.Add("system.dll");
cp.CompilerOptions = "/t:library";
cp.GenerateInMemory = true;
StringBuilder sb = new StringBuilder("");
sb.Append("using System;\n" );
sb.Append("namespace CSCodeEvaler{ \n");
sb.Append("public class CSCodeEvaler{ \n");
sb.Append("public object EvalCode(){\n");
sb.Append("return Environment.ProcessorCount.ToString(); \n");
sb.Append("} \n");
sb.Append("} \n");
sb.Append("}\n");
CompilerResults cr = icc.CompileAssemblyFromSource(cp, sb.ToString());
if (cr.Errors.Count > 0)
{
  MessageBox.Show("ERROR: " + cr.Errors[0].ErrorText, "Error evaluating cs code", MessageBoxButtons.OK, MessageBoxIcon.Error);
  return null;
}
System.Reflection.Assembly a = cr.CompiledAssembly;
object o = a.CreateInstance("CSCodeEvaler.CSCodeEvaler");
Type t = o.GetType();
MethodInfo mi = t.GetMethod("EvalCode");
object s = mi.Invoke(o, null);
return s;

VB.netで画面キャプチャして保存

Dim p As New Point(0, 0)
Dim s As New Size(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height)
Dim bmp As New Bitmap(s.Width, s.Height)
Dim g As Graphics = Graphics.FromImage(bmp)
g.CopyFromScreen(p, New Point(0, 0), s)
g.Dispose()
PictureBox1.Image = bmp
bmp.Save("C:\***.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)

C#でIsNothing

if (obj != null)
{
  //
}

2013年1月28日月曜日

K-9 Mail で outlook.com のメールを設定する

AndroidのK-9 Mailでoutlook.comのメールを使えるよう設定する。

  1. 「アカウント追加」からメールアドレスとパスワードを入力。
  2. 「POP3 サーバ」を選択
  3. アカウント名に「@outlook.com」を追加、POP3サーバに「pop3.live.com」を入力、保護された接続で「SSLを使用する」を選択。
  4. SMTPサーバに「smtp.live.com」を入力、保護された接続で「TLSを使用する」を選択。

Exchange ActiveSync 対応は日本語版バイナリを使用する必要が有るらしい。

https://sites.google.com/site/k9mailja/k9mailja_package

Linuxのファイル削除権限

Linux でそのファイルが削除できるかどうかは、対象のファイルではなくそのファイルが入っているディレクトリの権限に因る。
ディレクトリに書き込み権限(-w-)があれば、ファイルの削除や新規作成が可能。
なのでファイルが000(---------)でもディレクトリが222(-w--w--w-)とかで有れば削除できる。

2013年1月25日金曜日

VB.NET でメッセージボックスを最前面に表示する

MessageBox.Show( _
  "最前面に表示されます。", _
  "", _
  MessageBoxButtons.OK, _
  MessageBoxIcon.Information, _
  MessageBoxDefaultButton.Button1, _
  MessageBoxOptions.DefaultDesktopOnly)

VB.NET で二重起動防止

If Diagnostics.Process.GetProcessesByName( _
  Diagnostics.Process.GetCurrentProcess.ProcessName).Length > 1 Then
  MessageBox.Show("二重起動できません。")
  End
End If

2013年1月24日木曜日

Google Maps JavaScript API V3 で KML の読み込み

jQuery のロードとか含めて以下の感じ。

<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">google.load("jquery", "1.7");</script>
<script src="http://maps.google.com/maps/api/js?v=3&sensor=false&region=JP" type="text/javascript" charset="UTF-8"></script>
<script type="text/javascript">
//<![CDATA[
$(document).ready(function() {
var opts = {
zoom: 10,
mapTypeId: google.maps.MapTypeId.ROADMAP,
center: new google.maps.LatLng(35.00000, 135.00000)
};
map = new google.maps.Map($("#map").get(0), opts);
var kmlLayer = new google.maps.KmlLayer("http://***/***.kml");
kmlLayer.setMap(map);
});
//]]>
</script>

町丁・字等境界のGISデータを取得する

  1. eStat 政府統計の総合窓口にアクセスする。
    http://www.e-stat.go.jp/SG1/estat/eStatTopPortal.do

  2. 地図や図表で見る > 地図で見る統計(統計GIS) > データダウンロード へ進む

  3. [Step1]平成**年国勢調査(小地域) を選択

  4. [Step2]世帯人員別一般世帯数 を選択して「統計表各種データダウンロードへ」を押す

  5. [Step3]地域選択 で取得したい地域を選ぶ

  6. [Step4]境界データを選択 で形式を選ぶ

ShapeかG-XML形式でダウンロード可能。

Apacheでディレクトリのファイル一覧表示をやめたい

Options Indexes FollowSymLinks
とかなってるのを
Options -Indexes FollowSymLinks
にする。

ApacheでBasic認証とIP制限を組み合わせる

.htaccess で以下の感じで。
AuthType Basic
AuthName "Input your ID and Password"
AuthUserFile /var/www/.htpasswd
require valid-user
Satisfy any
Order Deny,Allow
Allow From 192.168
Deny From All
Satisfy any を使って書けばいい。

Macで画面キャプチャ(スクリーンショット)

画面全体
command+shift+3

マウスで指定した部分
command+shift+4

選択したウィンドウ
command+shift+4+space

Facebookのコメント欄で改行するには

Shift+Enter