Archive for » 2009 «

ヤマモリのタイカレー(グリーン)が半端なく美味い件について

日曜日, 6月 07th, 2009 | Author:

今日家族で横浜に行った帰り、どーしてもカレーが食べたくなって、近所の相鉄ローゼンに寄りました。
ヨメの人がタイカレー希望とのことで、たまたまあったグリーンカレーを選んだんですが、これがモーレツに美味かったです。
その手のものがお好きな方には強くお勧め。
直販もしているみたいです。

商品一覧のページ
インターネット直販のページ

ヨメの人が途中で辛さにギブアップして途中から私が頂いたんですが、いやぁ、汗が出る出る。美味辛っ。ビールがえらく進みました。

調べてみたら、タイの工場で作ってるのね。つぅか、最近のレトルト食品はすげーな。

あと、Amazonでも売ってました。購入する量によってはこっちのほうがいいのかも。

Category: 日記  | Tags: , ,  | Leave a Comment

てんてこまい

水曜日, 6月 03rd, 2009 | Author:

先週から今週にかけて、20ウン年来の親友からご結婚の報告(おめでとうっっっ!)があったり、長女が水疱瘡になったり(次女も来週くらいに発症予定)、小中高の同級生がいつの間にか格闘技のジムの主宰になっていることを知ったり、といろいろ書きたいことがあるわけですが、お仕事的に完全にテンパってます。でまたこのテンパってる内容をちょっとここにはかけない事情があったり。

…で、私、この9月には修士論文提出予定じゃなかったっけ。間に合うのか?

Category: 日記  | Tags:  | Leave a Comment

C# で DataGridView をいじる

水曜日, 5月 27th, 2009 | Author:

色々試し中。

とりあえず、5列あるDataGridViewを作っておいて、一番右の列だけ ColumnType を DataGridViewButtonColumn にしておく。
でもって以下のようなコードでテスト。

[csharp]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
string[] a;
string[] b;
string[] c;

a = new string[] { "A", "B", "C", "D", "E"};
b = new string[] { "F", "G", "H", "I", "J" };
c = new string[] { "K", "L", "M", "N", "O" };

dataGridView1.Rows.Add(a);
dataGridView1.Rows.Add(b);
dataGridView1.Rows.Add(c);
}

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
int X = dataGridView1.CurrentCellAddress.X;
int Y = dataGridView1.CurrentCellAddress.Y;
string tmp = dataGridView1[X-2, Y].Value.ToString();
MessageBox.Show(tmp);
}
}
}
[/csharp]

これで、一番右の列のボタンになったところを押すと、その二つ左にあるセルの内容が取得できたのでにんまり。

ボタン列が微妙な気もしてきたので、列のどこをクリックしても良いようにしてみたのがこちら。ついでに、どこをクリックされても当該行B列の内容を取得するようにしてみた。あと、新規行の追加と既存行の削除とセルの編集を禁止。

[csharp]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
string[] a;
string[] b;
string[] c;

a = new string[] { "A", "B", "C", "D", "E"};
b = new string[] { "F", "G", "H", "I", "J" };
c = new string[] { "K", "L", "M", "N", "O" };

dataGridView1.Rows.Add(a);
dataGridView1.Rows.Add(b);
dataGridView1.Rows.Add(c);
dataGridView1.AllowUserToAddRows = false;
dataGridView1.AllowUserToDeleteRows = false;
dataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically;
}

private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
{
DataGridView.HitTestInfo hti;
hti = dataGridView1.HitTest(e.X, e.Y);
int X = hti.ColumnIndex;
int Y = hti.RowIndex;
string tmp = "";
if (hti.Type == System.Windows.Forms.DataGridViewHitTestType.Cell || hti.Type == System.Windows.Forms.DataGridViewHitTestType.RowHeader)
{
tmp = dataGridView1[1, Y].Value.ToString();
MessageBox.Show(tmp);
}
}
}
}
[/csharp]

で、結局DataGridViewに値を入れるとき、配列の配列でやるべきなのか多次元配列でやるべきなのか微妙。むー。

Category: 日記  | Tags: ,  | Leave a Comment

Linux ホスト上の PostgreSQL を C# から扱ってみるテスト(その1)

金曜日, 5月 22nd, 2009 | Author:

お仕事で c# からPostgreSQL 上のデータを扱う可能性があるのでちょっと手をつけてみる。

■テスト機にPostgreSQLサーバ導入

/var/lib/pgsql/data/pg_hba.conf を書き換え(暫定)
[bash]
local all all trust
host all all 172.0.0.0/8 trust
[/bash]

/var/lib/pgsql/data/postgresql.conf を書き換え

[bash]
listen_addresses = ‘*’
[/bash]

設定リロード
[bash]
pg_ctl reload
[/bash]

テスト用DBユーザ作成
[bash]
createuser sample
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
CREATE ROLE
[/bash]

テスト用DB作成
[bash]
createdb sampledb
[/bash]

テスト用テーブル作成
[bash]
psql sampledb
CREAT TABLE sampletable (id serial,name text);
GRANT ALL ON sampletable_id_seq TO sample ;
[/bash]

テストユーザにテスト用テーブルへのアクセス権限をフルで与える
[bash]
grant ALL ON sampletable TO sample;
[/bash]

別のLinux機から接続テスト
[bash]
psql -h <ホスト名> -U sample -d sampledb
[/bash]

Linux 側(というかPostgreSQL側)の作業はここで一段落。
ここからは c# 側。

概ね方向は2系統。ODBCを使うか、npgsql を使うか。なんか、pgOLEDB.dll というものもあるらしい。よーわからん。
とりあえずnpgsqlを、
http://www.postgresql.jp/document/NPGSQL/manual/UserManual_J.htm
を参考にしながら試してみる。

http://pgfoundry.org/frs/?group_id=1000140
から Npgsql2.0.5-bin-ms.net3.5sp1.zip を入手。
展開して、適当なところにおいておく。とりあえずC:npgsqlにおいてみた。

C:Program FilesMicrosoft SDKsWindowsv6.0Abin
にある
gacutil.exe
をつかって
gacutil -i C:npgsqlbinNpgsql.dll
しておく。

まずはコンソールアプリケーションで試してみる。
Vc#2008でコンソールアプリケーションを新規作成。

頭の using が並んでいるところに
using System.Data;
using Npgsql;
を追加。

ぐは、ビルドしてみたらうごかねー。

エラー	1	型または名前空間名 'Npgsql' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。	C:UsersXXXXXAppDataLocalTemporary ProjectsConsoleApplication1Program.cs	6	7	ConsoleApplication1

なので、プロジェクト→参照の追加→参照で、C:npgsqlbinNpgsql.dll を追加しておく。

これで「デバッグ開始」でエラーは出なくなった。

この時点でのソースはこんな感じ。
[csharp]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Npgsql;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
}
}
}
[/csharp]

んでもってMainの中に、接続のための処理を書いておく。全体はこんな感じ。

[csharp]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Npgsql;

namespace ConsoleApplication1
{
class Program
{
public static void Main(String[] args)
{
NpgsqlConnection conn = new NpgsqlConnection("Server=<サーバのIPアドレス>;Port=5432;User Id=sample;Database=sampledb;");
conn.Open();
conn.Close();
}

}
}
[/csharp]

■テーブルに行を追加する処理
※デバッグが終了してしまわないように確認画面を入れた。
[csharp]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Npgsql;

namespace ConsoleApplication1
{
class Program
{
public static Int32 rowsaffected; // Mainの中においておいたらエラーが出たのでサンプルから変更。

public static void Main(String[] args)
{
NpgsqlConnection conn = new NpgsqlConnection("Server=<サーバのIPアドレス>;Port=5432;User Id=sample;Database=sampledb;");
conn.Open();
Console.WriteLine(conn.State);

NpgsqlCommand command = new NpgsqlCommand("insert into sampletable (name) values(‘TEST OK’)", conn);

try
{
rowsaffected = command.ExecuteNonQuery();
}

catch
{
Console.WriteLine("It was added {0} lines in table table1", rowsaffected);

}

finally
{
conn.Close();
}

# if DEBUG
Console.WriteLine("続行するには何かキーを押してください・・・");
Console.ReadKey();
# endif
}

}
}
[/csharp]

おおおおお、追加されてるよ。ナイスだ。

■単一の結果が返ってくるものを取得する
[csharp]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Npgsql;

namespace ConsoleApplication1
{
class Program
{
public static void Main(String[] args)
{
NpgsqlConnection conn = new NpgsqlConnection("Server=<サーバのIPアドレス>;Port=5432;User Id=sample;Database=sampledb;");
conn.Open();
Console.WriteLine(conn.State);

NpgsqlCommand command = new NpgsqlCommand("select version()", conn);
string serverVersion;

try
{
serverVersion = (String)command.ExecuteScalar();
Console.WriteLine("PostgreSQL server version: {0}", serverVersion); // これはtry の中に入れてやらないとエラーになった
}

finally
{
conn.Close();
}

# if DEBUG
Console.WriteLine("続行するには何かキーを押してください・・・");
Console.ReadKey();
# endif
}

}
}
[/csharp]

■全ての問い合わせ結果を取得する
データ的に多少面白くなるようにテーブルを用意しておく。
<Linux側作業>
[bash]
CREATE TABLE sampletable2 (name text, yomi text, address text);
INSERT INTO sampletable2 VALUES (‘パンツェッタ 幸平’,'ぱんつぇった こうへい’,'panzetta_kouhei@example.com’);
INSERT INTO sampletable2 VALUES (‘村松 沙知絵’,'むらまつ さちえ’,'muramatsu_sachie@example.com’);
INSERT INTO sampletable2 VALUES (‘田代 恵望子’,'たしろ えみこ’,'tashiro_emiko@example.com’);
INSERT INTO sampletable2 VALUES (‘中島 璃子’,'なかしま りこ’,'nakashima_riko@example.com’);
INSERT INTO sampletable2 VALUES (‘畑中 恵梨香’,'はたなか えりか’,'hatanaka_erika@example.com’);
grant ALL ON sampletable2 TO sample ;
[/bash]

この手のサンプルデータを作るのは http://kazina.com/dummy/ の「なんちゃって個人情報」さんが便利。

ソースはこんな感じ。
[csharp]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Npgsql;

namespace ConsoleApplication1
{
class Program
{
public static void Main(String[] args)
{
NpgsqlConnection conn = new NpgsqlConnection("Server=<サーバのIPアドレス>;Port=5432;User Id=sample;Database=sampledb;");
conn.Open();
Console.WriteLine(conn.State);

NpgsqlCommand command = new NpgsqlCommand("select * from sampletable2", conn);

try
{
NpgsqlDataReader dr = command.ExecuteReader();
int i;
while (dr.Read())
{
for (i = 0; i < dr.FieldCount; i++)
{
Console.Write("{0} t", dr[i]);
}
Console.WriteLine();
}
}

finally
{
conn.Close();
}

# if DEBUG
Console.WriteLine("続行するには何かキーを押してください・・・");
Console.ReadKey();
# endif
}

}
}
[/csharp]

でもってこれをGUIの画面にしたときにどうやってDataGridViewに表示するのかがいまいちわかってないけど、それは又今度。とりあえずデータの出し入れはわかったので今日はここまで。

Category: 日記  | Tags: , , , ,  | One Comment

Fedora11 (Preview版) の Fedora Eclipse の PHPeclipse で日本語マニュアルを表示する

水曜日, 5月 20th, 2009 | Author:

Fedora Eclipse の PHPeclipse で関数の上にマウスを置いておいたり、Shift + Control + H を押したりするとマニュアルが表示されるんですが、これが英語版なのが今ひとつ。

で、ちょっとぐぐってみたら http://www.php.net/download-docs.phpでMany HTML files をダウンロードしてごにょごにょすればばいいらしいのでごにょってみました。

結果的には、
・Many HTML files の tar.gz をダウンロード
・一度展開
・出来上がった html ディレクトリを doc にリネーム
・doc ディレクトリを zip でアーカイブ(このとき、アーカイブ名をdoc.zipにする)
・doc.zip を /usr/share/eclipse/dropins/phpeclipse/eclipse/plugins/net.sourceforge.phpeclipse.phphelp_x.x.x に保存。(x.x.xはバージョン名)
でうまくいきました。絶対後で忘れそうなのでメモ。

Category: 日記  | Tags: , ,  | Leave a Comment

Fedora 11 (Preview版) で Samba の共有を mount する

木曜日, 5月 14th, 2009 | Author:

なんか、今まで何度もここでプチはまった覚えがあるのでメモ。久しぶりにFedoraを触ったら案の定ハマった。

・アクセスするユーザを特定のユーザ(HOGEHOGE)にみせかける
→サーバ側の /etc/samba/smb.conf で force user = HOGEHOGE

・クライアント側で自動マウント
→/etc/fstab に

//SERVER_NAME/SHARE_NAME /MOUNT_POINT   cifs    rw.user,credentials=PATH_TO_FILE, uid=UID   0 0

のように書いておき、PATH_TO_FILE に該当するファイルに

username=hogehoge
password=fugafuga

を書いておく。これ便利。今日初めて知った。参考にしたのは備忘録さん

Category: 日記  | Tags: , ,  | Leave a Comment

App-V のアイコン転送量は馬鹿にならない

水曜日, 5月 13th, 2009 | Author:

自分とこの環境では、App-Vに数十個のパッケージを突っ込んでいます。で、クライアント側の動きを見ていると、どーもログイン時にApp-Vサーバとなにかしら喋ってるっぽい。これがコソコソ話しているくらいならいいけどどうやらかなり盛大に喋っているっぽいのでパケットキャプチャしてみたところ、端末1台あたりログイン時にApp-Vサーバとの間で数十MBの通信を発生させていることがわかりました。その中身はほとんどがアイコンファイルの取得。

イマドキの環境だと数十MBなんて大したことないような気もするんですが、これが無線環境になるとかなり影響が大きくて、現状、無線経由のドメインログオンにはモーレツに時間がかかっています。

ざっと出てきた解決策は三つ。

A案:ログイン時にアイコンファイルの更新をしないようにする
B案:パッケージの関連付けを減らす
C案:アイコン自体のサイズを小さくする

A案を実現するためには、クライアント側の「公開サーバの設定」で「ユーザのログイン時に更新」のチェックを外すか、同党の設定をしたプロバイダポリシーを作成する必要があります。で、更新が全然されないんじゃ困っちゃうので、一定の時間ごとに更新させる設定にします。
この設定で試してみたところ、確かに通信量は減るのですが、運用上の問題が二点でてきました。

一つは、最終ログオン日時を保存するレジストリキーが
HKEY_LOCAL_MACHINESOFTWAREMicrosoftSoftGrid4.5ClientDC Serversサーバ名LastUpdate
なんですが、自分とこの場合、大学環境のお約束として環境復元のツールが入っていて、この値が保持されません。なので環境復元が有効だと、やっぱり毎ログオン時に更新に行ってしまいます。
もう一つは、仮に上記の値が何らかの方法で保持できたとしても、結局ノート端末なんかの場合には数時間単位でログオンしない状況が普通にあり得るので、やっぱりログオン時に更新がかかっちゃいます。

B案は、内容的には悪くないのですが、特定の関連付けが必要なのか不要なのかの判断は正直センター側で行うのはかなり難しいです。関連付けそのものでなくてもそれに付随するアイコンを削除しちゃえば関連付けは残ったままでアイコンだけ「不明なアプリケーション」のアイコンになるんだとは思うんですが、やっぱり授業で使っている教員でないと、どの辺まで踏み込むかのさじ加減がわからないのでこれも却下。

そうすると消去法的にC案が残る訳で、とりあえず各パッケージのアイコンサイズを確認してみたところ、なんか、異様にでかいアイコンファイルがぞろぞろ出てきました。調べてみると、一つの ico ファイルに複数のサイズ、色数のアイコンが格納されているんですが、いくつかのアプリケーションでは 256×256 とか 128×128 なんかのとんでもなくでかいアイコンが含まれています。こんなサイズでアイコンの表示しないってば。特に大きかったのが Adobe CS4シリーズと一太郎ビューア。MS-Office 2007 はまだ調べていないですがこれもきっと大きいんではないかと思っています。これは明日確認。

しょうがないので、それぞれのアイコンを一つ一つアイコンファイルを編集できるツールで読んでは大きなアイコンを消す作業をやっています。今日のところは半分くらいで挫折。残りは明日だな。

ということで、App-V案件をお持ちの方は、ほっとくと App-V は起動時に結構なサイズの通信を発生させる、ということを知っておいた方がいいように思います。自分とこの場合は、「App-Vは100%のキャッシュがクライアントにあれば、ログオン時やアプリケーションの起動時には『そのアプリケーションを使っていいかどうか』の認証情報しかやり取りされないので大きな通信は発生しない」と理解していたので(…と某社担当者さんが言っていたし)、正直面くらっています。まぁ、有線環境では大した実害ではないのですが。

Fedora 11 Preview (64bit版) に Flash Player の plugin を入れる

火曜日, 5月 12th, 2009 | Author:

Fedora 絡みでもういっちょ。
Flash が動かなくてちょっとハマったんですが、Y乃助2さんの記事を参考に、Adobe Labsで libflashplayer.so を無事ゲット。先人たちに感謝。

Category: 日記  | Tags: ,  | Leave a Comment

ML115に載せたWinFast PX8400 でデュアルモニタ on Fedora 11 (Preview版)

火曜日, 5月 12th, 2009 | Author:

本来ならきっとnvidia-settingsとかでうまくいくんだろうけど、ユーティリティがセカンドモニタの方の解像度を低く見積もってしまってうまくいかなかったのであちこち参考にしながら手書き。

…だったんだけど、なかなかしんどかったので、「セカンドモニタの解像度が低いままのxorg.confに解像度の部分だけ書き加える」という方向に変更。

ということで何方かのご参考にでもなれば。

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
    FontPath        "/usr/share/fonts/default/Type1"
EndSection

Section "Module"
    Load           "dbe"
    Load           "extmod"
    Load           "type1"
    Load           "freetype"
    Load           "glx"
EndSection

Section "ServerFlags"
    Option         "Xinerama" "0"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/input/mice"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"

    # generated from data in "/etc/sysconfig/keyboard"
    Identifier     "Keyboard0"
    Driver         "kbd"
    Option         "XkbLayout" "us_intl"
    Option         "XkbModel" "pc105"
EndSection

Section "Monitor"

    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "CRT-0"
    HorizSync       28.0 - 65.0
    VertRefresh     57.0 - 75.0
    Option         "DPMS"
EndSection

Section "Monitor"

    # HorizSync source: builtin, VertRefresh source: builtin
    Identifier     "Monitor1"
    VendorName     "Sony"
    ModelName      "CRT-0"
    HorizSync       28.0 - 65.0
    VertRefresh     57.0 - 75.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 8400 GS"
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 8400 GS"
    BusID          "PCI:7:0:0"
    Screen          1
EndSection

Section "Screen"

    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "TwinView" "1"
    Option         "TwinViewXineramaInfoOrder" "CRT-1"
    Option         "TwinViewOrientation" "LeftOf"
    Option         "metamodes" "CRT-0: 1280x1024 +1280+0, CRT-1: 1280x1024 +0+0; CRT-0: nvidia-auto-select +800+0, CRT-1: 800x600 +0+0; CRT-0: nvidia-auto-select +640+0, CRT-1: 640x480 +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "TwinView" "0"
    Option         "metamodes" "CRT-0: nvidia-auto-select +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

なんとなくアジカンの映像を貼ってみる

月曜日, 5月 11th, 2009 | Author:

うわー、カラオケいきてーーーー。ライブいきてーーーー。

しかし、アジカンの映像って、英語文化圏の方からのコメントが多いのね。しらなんだ。

Category: 日記  | Leave a Comment