2016年6月11日土曜日

.net シリアライズ機能を使用してクラスの保存

シリアライズ機能を使用する時のひな型

using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

//クラス保存出来るように、属性を追加
[Serializable()]
public class Hoge
{
  public DateTime d;
}

public class SaveLoad
{
  public const string FILE_NAME = "hoge.txt";

  public static void InitFile()
  {
 if(!File.Exists(FILE_NAME))
    {
   Hoge[] h = new Hoge[1];
   h[0] = new Hoge();
   h[0].d = DateTime.Now;
   Save(h);
    }
 
  }
  
  public static void Save(Hoge[] h)
  {
 FileStream fs = new FileStream(FILE_NAME,FileMode.Create,FileAccess.Write);
 BinaryFormatter b = new BinaryFormatter();
 b.Serialize(fs,h);
 fs.Close();

  }

  public static Hoge[] Load()
  {

 BinaryFormatter b = new BinaryFormatter();
 FileStream fs = new FileStream(FILE_NAME, FileMode.OpenOrCreate, FileAccess.Read);
 Hoge[] loadFile;
 loadFile = (Hoge[])b.Deserialize(fs);
 fs.Close();

 return loadFile;  
  }

  public static void Main()
  {
 Hoge[] h;
 //ファイルがない場合は、ファイルを作成
 SaveLoad.InitFile();
 //ファイルのロード
 h = SaveLoad.Load();
 System.Console.WriteLine("前回起動時刻は"+ h[0].d.ToString("yyyy/MM/dd HH:mm:ss")+"です。");
 //終了時刻をセーブ
 h[0].d = DateTime.Now;
 SaveLoad.Save(h);
  }

2016年5月1日日曜日

postgresql で 列にコメントを表示する

1.表を作成する
  CREATE TABLE hoge (hoge int);

2.列にコメントをつける
  COMMENT ON COLUMN hoge.hoge IS 'ほげ';
 
3.列のコメントを表示する
  \d+ hoge

                   テーブル "public.hoge"
  列  |   型    | 修飾語 | ストレージ | 対象統計情報 | 説明
------+---------+--------+------------+--------------+------
 hoge | integer |        | plain      |              | ほげ


2016年4月10日日曜日

postgresql で 3番目に大きい数を取得する

select num
from  hoge
order by num desc  -- numを降順に並べる
limit 1                    -- 条件に合うnumを一つだけ取得する
offset 3;                 -- 条件に合うnumを3番目から取得する

2016年3月26日土曜日

emacs skkで日本語の検索

emacsでskkを使って入力できるけど、
検索ができない状態だった。
.emacsに以下の設定を追加したら解決した。

(require 'skk-setup)

2016年3月23日水曜日

PostgresqlでTCP・IP接続をできるようにする

Postgresqlは設定を変えないと外部から接続できないのでメモ
(Postgresqlはdebian8.2)

1. postgresql.confの設定を変える

/etc/postgresql/9.4/main/postgresql.conf

を開いて、

listen_addresseas = 'localhost'
→
listen_addresseas = '*'
に変更する

2.pg_hba.confの設定を変える

/etc/postgresql/9.4/main/pg_hba.conf

を開いて、

host  all  all 192.168.1.0/24  md5

を追加する。
(192.168.1.0/24は、IPによって変える)

3.違うパソコンからpsqlでアクセスしてみる

psql -h 192.168.1.17 dbName
(192.168.1.17は、IPによって変える)
で接続できるか確認する。

2016年3月13日日曜日

Visual Studio キーバインドメモ

編集
Ctrl+K,Ctrl+C選択範囲をコメント
Ctrl+K,Ctrl+U選択範囲をコメントアウト
Ctrl+K,Ctrl+F選択範囲のフォーマット
Ctrl+r,Ctrl+r名前の変更
Alt+Shiftを押しながら↑↓←→矩形領域の選択
Ctrl+M,Ctrl+S現在の領域を折りたたむ
Ctrl+M,Ctrl+E現在の領域を展開
Ctrl+M,Ctrl+O定義を折りたたむ
Shift+Ctrl+Bソリューションのビルド

C#でWebBrowser

今まで全然使ったことがなかったけれど、 .NetにはWebBrowserといクラスがあって、 Form内にブラウザを作れる。 これが使えると、どこかのサイトにログインした後に プログラム的に結果をとってくるとかが簡単にできて便利そう。
using System;
using System.Drawing;
using System.Windows.Forms;

public class WebBrowserTest : Form

{
  WebBrowser webBrowser1 ;
  public WebBrowserTest()
  {
    //パネルにWebブラウザをadd
    this.webBrowser1 = new System.Windows.Forms.WebBrowser();
    this.webBrowser1.Location = new System.Drawing.Point(-3, 37);
    this.webBrowser1.MinimumSize = new System.Drawing.Size(20, 20);
    this.webBrowser1.Name = "webBrowser1";
    this.webBrowser1.Size = new System.Drawing.Size(783, 544);
    this.webBrowser1.TabIndex = 0;
    this.webBrowser1.Dock = DockStyle.Fill;
    
    Uri uri = new Uri("http://www.yahoo.co.jp");
    webBrowser1.Url = uri;

    
    this.Controls.Add(this.webBrowser1);

  }
  
  [STAThread]
  public static void Main()
  {
    WebBrowserTest test = new WebBrowserTest();
    test.Size = new Size(1000,1000);
    Application.Run(test);
  }
  
}
このプログラムを実行するだけだと、スクリプトエラーとなるので、 IE9エンジンをIEコンポーネントブラウザで使う を参考に、レジストリーキーを更新する。