우리 밤톨이 초음파 사진이다.ㅋㅋ
심장이 콩당콩당 뛰는게 히히
2008년 12월 9일 화요일
2008년 11월 10일 월요일
GDS-DNKA - kimta部屋
準備する物
* サーバとするPC(Windows 2000 SP3以上、もしくはWindows XP)
* GoogleDesktopSearchSetup.exe
http://desktop.google.com/
* DNKA-0.44.exe
http://dnka.com/
* サーバとするPCのIPアドレスの確認
(「スタート」の「プログラム」の「アクセサリ」の「コマンドプロンプト」を実行して、表示される画面でipconfigと入力し、EnterすればIPアドレスを確認できます。例えば、192.168.0.1というような値です。)
↑
備考
できれば検索対象とするデータを置くDドライブを用意し、shareというようなフォルダを作り、その中にデータを置く方が運用しやすいです。
それはGoogleデスクトップ検索では、「検索しないアイテム」としてドライブの指定やフォルダの指定ができますが、その逆の「~のみ検索対象とする」というような設定ができないためです。
つまり、例えばCドライブの「マイドキュメント」に検索対象とするデータを置いた場合に、「検索しないアイテム」として、c:\WINNTやc:\Program Files等、個々に記述する必要があります。(絶対条件ではありませんが、検索する必要がないプログラムに付随するマニュアル等のファイルも検索対象になってしまいます。)
検索対象とするファイルがDドライブ内にしかなければ、「検索しないアイテム」としてc:\を指定することで、プログラム等含めたCドライブ内のファイルを、簡単に検索対象から外すことができます。
↑
作業手順
ローカルの(サーバとしたいPCにコピーした)GoogleDesktopSearchSetup.exeをダブルクリックすると以下の画面になります。
そのうち、以下の2つのチェックボックスを外します。(任意)
* □AOL,MSN Messengerのチャットを検索する
* □使用状況データと障害レポートを送信していただくと、Googleデスクトップ検索の機能向上に役立てることができます。
その後、「設定を保存して次へ」をクリックします。
Image1.jpg
すると以下の画面になるので「Googleデスクトップ検索ホームページへ」をクリックします。
Image2.jpg
表示される画面の真ん中あたりに、「検索しないアイテム」を記述する欄があります。
ここで例えばc:\と記述し、検索対象としないドライブやフォルダを指定します。
Image3.jpg
ローカルの(サーバとしたいPCにコピーした)DNKA-0.44.exeをダブルクリックすると以下の画面が表示されるので「Next」をクリックします。
Image4.jpg
続く以下の画面では、「I accept the agreement」を選択し、「Next」をクリックします。
Image5.jpg
続く以下の画面では、そのまま「Next」をクリックします。
Image6.jpg
続く以下の画面では、そのまま「Next」をクリックします。
Image7.jpg
続く以下の画面では、そのまま「Install」をクリックします。
Image8.jpg
続く以下の画面では、「OK」をクリックします。
Image9.jpg
しばらくすると、以下のような画面が表示されます。
Image10.jpg
このままでは、LAN内の他のPCからGoogleデスクトップ検索を使うことができません。
そこで画面上部の青字で下線が引かれている、Add new host rules.をクリックします。
すると以下のような画面が表示されます。
Image11.jpg
このAdd/remove new hosts:欄に、最初に調べたサーバとするPCのIPアドレスを参考に値を入力します。
例えば、192.168.0.1や、192.168.0.10という値だった場合
192.168.0.1-192.168.0.255
例えば、192.168.1.1や、192.168.1.10という値だった場合
192.168.1.1-192.168.1.255
つまり、サーバとするPCのIPアドレスの最後の値を取り、1とした値-(ハイフン)255とした値と入力します。
その後、「Allow」をクリックします。
Image12.jpg
すると以下の画面のように、先ほどの値が追加されます。
Image13.jpg
これで、LAN内の別のパソコンからGoogleデスクトップ検索が使えるようになります。
続いて、サーバとするPC内に置いたファイルを検索できるように索引付けをします。
画面上部の青字で下線が引かれている文字のうち、Misc Optionsをクリックします。
すると以下の画面が表示されるので、青字で下線が引かれている文字のうち、Indexing optionsをクリックします。
Image14.jpg
すると以下の画面が表示されます。
このAdd new dirs for indexing:欄に、例えばDドライブのshareフォルダに検索させたいファイルがある場合、d:\shareと入力し「Submit」をクリックします。
Image15.jpg
上記流れのとおりにインストールしたばかりの場合、ウィンドウを閉じた後に、以下のダイアログが表示されているので、「Finish」をクリックして閉じてください。
Image16.jpg
↑
LAN内の他のPCから、サーバとするPCのGoogleデスクトップ検索を使うためには
例えばサーバとするPCのIPアドレスが192.168.0.1とします。
その場合、クライアントとなるPCのインターネットエクスプローラのアドレス欄に以下のように入力します。
http://192.168.0.1:4664
すると以下の画面のように、サーバのGoogleデスクトップ検索を使って、サーバ内のファイルを検索できるようになります。
Image17.jpg
↑
定期的に行う必要がある作業
d:\shareフォルダ内に適宜ファイルを追加したとしても、そのままでは索引が更新されないため検索対象になりません。
そのため、上で説明した手順のように、定期的にAdd new dirs for indexing:として、例えばd:\shareを「Submit」する必要があります。
↑
注意事項
サーバとするPCのOSがWindows XPの場合、標準の設定ではファイアウォールが邪魔して他のPCからアクセスできない場合があります。
その際は以下の画面のように、「コントロールパネル」の「ファイアウォール」の「例外」の「ポートの追加」ボタンをクリックし、表示されるダイアログに
名前 GoogleDesktopSearch
ポート番号 4664
という記述をし、「OK」ボタンをクリックしてください。
Googleデスクトップ検索で使う、4664というポートを「ファイアウォール」の「例外」とすることで、他のPCから使えるようになります。
Image18.jpg
* サーバとするPC(Windows 2000 SP3以上、もしくはWindows XP)
* GoogleDesktopSearchSetup.exe
http://desktop.google.com/
* DNKA-0.44.exe
http://dnka.com/
* サーバとするPCのIPアドレスの確認
(「スタート」の「プログラム」の「アクセサリ」の「コマンドプロンプト」を実行して、表示される画面でipconfigと入力し、EnterすればIPアドレスを確認できます。例えば、192.168.0.1というような値です。)
↑
備考
できれば検索対象とするデータを置くDドライブを用意し、shareというようなフォルダを作り、その中にデータを置く方が運用しやすいです。
それはGoogleデスクトップ検索では、「検索しないアイテム」としてドライブの指定やフォルダの指定ができますが、その逆の「~のみ検索対象とする」というような設定ができないためです。
つまり、例えばCドライブの「マイドキュメント」に検索対象とするデータを置いた場合に、「検索しないアイテム」として、c:\WINNTやc:\Program Files等、個々に記述する必要があります。(絶対条件ではありませんが、検索する必要がないプログラムに付随するマニュアル等のファイルも検索対象になってしまいます。)
検索対象とするファイルがDドライブ内にしかなければ、「検索しないアイテム」としてc:\を指定することで、プログラム等含めたCドライブ内のファイルを、簡単に検索対象から外すことができます。
↑
作業手順
ローカルの(サーバとしたいPCにコピーした)GoogleDesktopSearchSetup.exeをダブルクリックすると以下の画面になります。
そのうち、以下の2つのチェックボックスを外します。(任意)
* □AOL,MSN Messengerのチャットを検索する
* □使用状況データと障害レポートを送信していただくと、Googleデスクトップ検索の機能向上に役立てることができます。
その後、「設定を保存して次へ」をクリックします。
Image1.jpg
すると以下の画面になるので「Googleデスクトップ検索ホームページへ」をクリックします。
Image2.jpg
表示される画面の真ん中あたりに、「検索しないアイテム」を記述する欄があります。
ここで例えばc:\と記述し、検索対象としないドライブやフォルダを指定します。
Image3.jpg
ローカルの(サーバとしたいPCにコピーした)DNKA-0.44.exeをダブルクリックすると以下の画面が表示されるので「Next」をクリックします。
Image4.jpg
続く以下の画面では、「I accept the agreement」を選択し、「Next」をクリックします。
Image5.jpg
続く以下の画面では、そのまま「Next」をクリックします。
Image6.jpg
続く以下の画面では、そのまま「Next」をクリックします。
Image7.jpg
続く以下の画面では、そのまま「Install」をクリックします。
Image8.jpg
続く以下の画面では、「OK」をクリックします。
Image9.jpg
しばらくすると、以下のような画面が表示されます。
Image10.jpg
このままでは、LAN内の他のPCからGoogleデスクトップ検索を使うことができません。
そこで画面上部の青字で下線が引かれている、Add new host rules.をクリックします。
すると以下のような画面が表示されます。
Image11.jpg
このAdd/remove new hosts:欄に、最初に調べたサーバとするPCのIPアドレスを参考に値を入力します。
例えば、192.168.0.1や、192.168.0.10という値だった場合
192.168.0.1-192.168.0.255
例えば、192.168.1.1や、192.168.1.10という値だった場合
192.168.1.1-192.168.1.255
つまり、サーバとするPCのIPアドレスの最後の値を取り、1とした値-(ハイフン)255とした値と入力します。
その後、「Allow」をクリックします。
Image12.jpg
すると以下の画面のように、先ほどの値が追加されます。
Image13.jpg
これで、LAN内の別のパソコンからGoogleデスクトップ検索が使えるようになります。
続いて、サーバとするPC内に置いたファイルを検索できるように索引付けをします。
画面上部の青字で下線が引かれている文字のうち、Misc Optionsをクリックします。
すると以下の画面が表示されるので、青字で下線が引かれている文字のうち、Indexing optionsをクリックします。
Image14.jpg
すると以下の画面が表示されます。
このAdd new dirs for indexing:欄に、例えばDドライブのshareフォルダに検索させたいファイルがある場合、d:\shareと入力し「Submit」をクリックします。
Image15.jpg
上記流れのとおりにインストールしたばかりの場合、ウィンドウを閉じた後に、以下のダイアログが表示されているので、「Finish」をクリックして閉じてください。
Image16.jpg
↑
LAN内の他のPCから、サーバとするPCのGoogleデスクトップ検索を使うためには
例えばサーバとするPCのIPアドレスが192.168.0.1とします。
その場合、クライアントとなるPCのインターネットエクスプローラのアドレス欄に以下のように入力します。
http://192.168.0.1:4664
すると以下の画面のように、サーバのGoogleデスクトップ検索を使って、サーバ内のファイルを検索できるようになります。
Image17.jpg
↑
定期的に行う必要がある作業
d:\shareフォルダ内に適宜ファイルを追加したとしても、そのままでは索引が更新されないため検索対象になりません。
そのため、上で説明した手順のように、定期的にAdd new dirs for indexing:として、例えばd:\shareを「Submit」する必要があります。
↑
注意事項
サーバとするPCのOSがWindows XPの場合、標準の設定ではファイアウォールが邪魔して他のPCからアクセスできない場合があります。
その際は以下の画面のように、「コントロールパネル」の「ファイアウォール」の「例外」の「ポートの追加」ボタンをクリックし、表示されるダイアログに
名前 GoogleDesktopSearch
ポート番号 4664
という記述をし、「OK」ボタンをクリックしてください。
Googleデスクトップ検索で使う、4664というポートを「ファイアウォール」の「例外」とすることで、他のPCから使えるようになります。
Image18.jpg
2008년 11월 6일 목요일
잠보니스틱스 : [옮김] 직장인의 변화무쌍한 심리상태!
Boss is not here(상사가 없을때):
Boss is calling(상사가 호출할때):
In a meeting(회의시간):
Training(교육):
Tea break(커피 타임):
Before noon on weekend(주말 오전):
Ready for getting off work(퇴근준비):
Tomorrow is a holiday(내일은 휴일):
Got today's target from boss(상사의 타겟이 된 오늘):
Tough target(제대로 타켓이됨):
Find impossible to meet boss's requirement(상사가 무리한 요구를 할때) :
OT for 2hrs(연장근무 2시간):
OT for a whole night(밤새도록 연장근무):
Being notified to OT on weekends(주말근무까지 하게 됐을 때):
Meet with 'Sorry-I-Don't-Know'clients(무식한 고객을 상대할 때):
Made mistakes in work(일에서 실수할때):
Little achievement(작은 성과를 냈을때):
Frustrating things happens(당황스런 일이 발생했을때):
Finance person doesn't give the money(재무 담당자가 돈을 주지 않을때):
Being advised NO BONUS this year(보너스가 없다는 공지를 받을때):
Boss is calling(상사가 호출할때):
In a meeting(회의시간):
Training(교육):
Tea break(커피 타임):
Before noon on weekend(주말 오전):
Ready for getting off work(퇴근준비):
Tomorrow is a holiday(내일은 휴일):
Got today's target from boss(상사의 타겟이 된 오늘):
Tough target(제대로 타켓이됨):
Find impossible to meet boss's requirement(상사가 무리한 요구를 할때) :
OT for 2hrs(연장근무 2시간):
OT for a whole night(밤새도록 연장근무):
Being notified to OT on weekends(주말근무까지 하게 됐을 때):
Meet with 'Sorry-I-Don't-Know'clients(무식한 고객을 상대할 때):
Made mistakes in work(일에서 실수할때):
Little achievement(작은 성과를 냈을때):
Frustrating things happens(당황스런 일이 발생했을때):
Finance person doesn't give the money(재무 담당자가 돈을 주지 않을때):
Being advised NO BONUS this year(보너스가 없다는 공지를 받을때):
2008년 9월 18일 목요일
C# SAMPLE
VC#のサンプルプログラムです。
情報源 メーリングリストや他のHP
No 名前 作成日時
01 LHA書庫ファイルの中身を見る 2002/11/20
02 ZIP圧縮 2002/11/21
03 ZIP書庫ファイルの中身を見る< 2002/11/23
04 RARの解凍 2002/11/23
05 ファイルパスからアイコンを取り出す 2002/11/23
06 Enumサンプル 2002/11/29
07 Parse 2002/12/09
08 画像表示 2003/06/30
09 UnZipExtractMem 2003/06/30
10 Enum.Parse 2003/07/01
LHA書庫ファイルの中身を見る
フォームにドロップしたLHA書庫ファイルの中身を見ます。
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Text;
using System.Runtime.InteropServices;
namespace LHA_e
{
///
/// Form1 の概要の説明です。
///
public class Form1 : System.Windows.Forms.Form
{
public const int FNAME_MAX32 = 512;
[ StructLayout( LayoutKind.Sequential )]
public struct INDIVIDUALINFO
{
System.UInt32 dwOriginalSize; /* ファイルのサイズ */
System.UInt32 dwCompressedSize; /* 圧縮後のサイズ */
System.UInt32 dwCRC; /* 格納ファイルのチェックサム */
System.UInt32 uFlag; /* 処理結果 */
/* Status flag */
System.UInt32 uOSType; /* 書庫作成に使われた OS */
System.UInt16 wRatio; /* 圧縮率 */
System.UInt16 wDate; /* 格納ファイルの日付(DOS 形式) */
System.UInt16 wTime; /* 格納ファイルの時刻(〃) */
[ MarshalAs( UnmanagedType.ByValTStr, SizeConst=FNAME_MAX32 + 1 )]
string szFileName; /* 書庫名 */
[ MarshalAs( UnmanagedType.ByValTStr, SizeConst=3 )]
string dummy1;
[ MarshalAs( UnmanagedType.ByValTStr, SizeConst=8 )]
string szAttribute; /* 格納ファイルの属性(書庫固有) */
[ MarshalAs( UnmanagedType.ByValTStr, SizeConst=8 )]
string szMode; /* 格納ファイルの格納モード(〃) */
}
[DllImport("UNLHA32", CharSet=CharSet.Ansi )]
public static extern IntPtr UnlhaOpenArchive(IntPtr _hwnd, string _szFileName,
System.UInt32 _dwMode);
[DllImport("UNLHA32", CharSet=CharSet.Ansi )]
public static extern System.Int32 UnlhaFindFirst(IntPtr _harc, string _szWildName,
ref INDIVIDUALINFO lpSubInfo);
[DllImport("UNLHA32", CharSet=CharSet.Ansi )]
public static extern System.Int32 UnlhaFindNext(IntPtr _harc, ref INDIVIDUALINFO lpSubInfo);
[DllImport("UNLHA32", CharSet=CharSet.Ansi )]
public static extern System.Int32 UnlhaGetFileName(IntPtr _harc, StringBuilder _lpBuffer, int _nsize);
[DllImport("UNLHA32", CharSet=CharSet.Ansi )]
public static extern System.Int32 UnlhaCloseArchive(IntPtr _harc);
private System.Windows.Forms.ListView listView1;
private System.Windows.Forms.ColumnHeader columnHeader1;
///
/// 必要なデザイナ変数です。
///
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows フォーム デザイナ サポートに必要です。
//
InitializeComponent();
//
// TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。
//
}
///
/// 使用されているリソースに後処理を実行します。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
///
/// デザイナ サポートに必要なメソッドです。このメソッドの内容を
/// コード エディタで変更しないでください。
///
private void InitializeComponent()
{
this.listView1 = new System.Windows.Forms.ListView();
this.columnHeader1 = new System.Windows.Forms.ColumnHeader();
this.SuspendLayout();
//
// listView1
//
this.listView1.AllowDrop = true;
this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader1});
this.listView1.Dock = System.Windows.Forms.DockStyle.Fill;
this.listView1.Name = "listView1";
this.listView1.Size = new System.Drawing.Size(292, 273);
this.listView1.TabIndex = 0;
this.listView1.View = System.Windows.Forms.View.Details;
this.listView1.DragDrop += new System.Windows.Forms.DragEventHandler(this.listView1_DragDrop);
this.listView1.DragEnter += new System.Windows.Forms.DragEventHandler(this.listView1_DragEnter);
this.listView1.SelectedIndexChanged += new System.EventHandler(this.listView1_SelectedIndexChanged);
//
// columnHeader1
//
this.columnHeader1.Text = "FileName";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 12);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.listView1});
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
}
#endregion
///
/// アプリケーションのメイン エントリ ポイントです。
///
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void listView1_SelectedIndexChanged(object sender, System.EventArgs e)
{
}
private void Form1_Load(object sender, System.EventArgs e)
{
}
private void listView1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
e.Effect = DragDropEffects.Copy | DragDropEffects.Move;
}
private void listView1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
IDataObject dataObject;
dataObject = e.Data;
string [] paths =(string[])dataObject.GetData(DataFormats.FileDrop);
IntPtr harc = UnlhaOpenArchive(this.Handle, paths[0], 0);
INDIVIDUALINFO info = new INDIVIDUALINFO();
StringBuilder wildname = new StringBuilder();
if (UnlhaFindFirst(harc, "*.*", ref info) != -1)
{
listView1.Items.Clear();
do
{
StringBuilder filename2 = new StringBuilder(256);
UnlhaGetFileName(harc, filename2, 256);
listView1.Items.Add(filename2.ToString());
} while (UnlhaFindNext(harc, ref info) != -1);
UnlhaCloseArchive(harc);
}
}
}
}
ZIP圧縮
フォームにドロップしたファイルを圧縮します。
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Runtime.InteropServices;
using System.Text;
namespace Zip32J_r
{
///
/// Form1 の概要の説明です。
///
public class Form1 : System.Windows.Forms.Form
{
[DllImport("ZIP32J.DLL", CharSet=CharSet.Ansi )]
public static extern long Zip (IntPtr hwnd,string szCmdLine, StringBuilder SzOutput, int dwSize);
///
/// 必要なデザイナ変数です。
///
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows フォーム デザイナ サポートに必要です。
//
InitializeComponent();
//
// TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。
//
}
///
/// 使用されているリソースに後処理を実行します。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
///
/// デザイナ サポートに必要なメソッドです。このメソッドの内容を
/// コード エディタで変更しないでください。
///
private void InitializeComponent()
{
//
// Form1
//
this.AllowDrop = true;
this.AutoScaleBaseSize = new System.Drawing.Size(5, 12);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
this.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);
}
#endregion
///
/// アプリケーションのメイン エントリ ポイントです。
///
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void Form1_Load(object sender, System.EventArgs e)
{
}
private void Form1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
e.Effect = DragDropEffects.Copy | DragDropEffects.Move;
}
private void Form1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
IDataObject dataObject;
dataObject = e.Data;
string [] paths =(string[])dataObject.GetData(DataFormats.FileDrop);
string response_file_path = System.IO.Path.GetDirectoryName(Application.ExecutablePath);
response_file_path = response_file_path + @"\" + "response.lst";
System.IO.Stream stream = System.IO.File.Open(response_file_path, System.IO.FileMode.Create);
System.IO.StreamWriter writer = new System.IO.StreamWriter(stream, System.Text.Encoding.GetEncoding("shift_jis"));
foreach(string a_filepath in paths)
{
writer.WriteLine(@"""" + a_filepath + @"""");
}
writer.Close();
stream.Close();
string makefilepath = System.IO.Path.GetDirectoryName(paths[0]) + @"\" +
System.IO.Path.GetFileNameWithoutExtension(paths[0]);
string cmdline;
StringBuilder output = new StringBuilder(256);
cmdline = @"-r """ + makefilepath + @""" @" + response_file_path;
long i = Zip(this.Handle, cmdline, output, 256);
}
}
}
ZIP書庫ファイルの中身を見る
フォームにドロップした書庫ファイルの中身をみます。
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Text;
using System.Runtime.InteropServices;
namespace zip_e
{
///
/// Form1 の概要の説明です。
///
public class Form1 : System.Windows.Forms.Form
{
public const int FNAME_MAX32 = 512;
public struct INDIVIDUALINFO
{
System.UInt32 dwOriginalSize; /* ファイルのサイズ */
System.UInt32 dwCompressedSize; /* 圧縮後のサイズ */
System.UInt32 dwCRC; /* 格納ファイルのチェックサム */
System.UInt32 uFlag; /* 処理結果 */
/* Status flag */
System.UInt32 uOSType; /* 書庫作成に使われた OS */
System.UInt16 wRatio; /* 圧縮率 */
System.UInt16 wDate; /* 格納ファイルの日付(DOS 形式) */
System.UInt16 wTime; /* 格納ファイルの時刻(〃) */
[ MarshalAs( UnmanagedType.ByValTStr, SizeConst = FNAME_MAX32 + 1 )]
string szFileName; /* 書庫名 */
[ MarshalAs( UnmanagedType.ByValTStr, SizeConst=3 )]
string dummy1;
[ MarshalAs( UnmanagedType.ByValTStr, SizeConst=8 )]
string szAttribute; /* 格納ファイルの属性(書庫固有) */
[ MarshalAs( UnmanagedType.ByValTStr, SizeConst=8 )]
string szMode; /* 格納ファイルの格納モード(〃) */
}
[DllImport("UNZIP32", CharSet=CharSet.Ansi )]
public static extern IntPtr UnZipOpenArchive(IntPtr _hwnd, string _szFileName, System.UInt32 _dwMode);
[DllImport("UNZIP32", CharSet=CharSet.Ansi )]
public static extern System.Int32 UnZipFindFirst(IntPtr _harc, string _szWildName,
ref INDIVIDUALINFO lpSubInfo);
[DllImport("UNZip32", CharSet=CharSet.Ansi )]
public static extern System.Int32 UnZipGetFileName(IntPtr _harc, StringBuilder _lpBuffer, int _nsize);
[DllImport("UNZip32", CharSet=CharSet.Ansi )]
public static extern System.Int32 UnZipCloseArchive(IntPtr _harc);
[DllImport("UNZIP32", CharSet=CharSet.Ansi )]
public static extern System.Int32 UnZipFindNext(IntPtr _harc, ref INDIVIDUALINFO lpSubInfo);
///
/// 必要なデザイナ変数です。
///
private System.Windows.Forms.ListView listView1;
private System.Windows.Forms.ColumnHeader columnHeader1; System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows フォーム デザイナ サポートに必要です。
//
InitializeComponent();
//
// TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。
//
}
///
/// 使用されているリソースに後処理を実行します。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
///
/// デザイナ サポートに必要なメソッドです。このメソッドの内容を
/// コード エディタで変更しないでください。
///
private void InitializeComponent()
{
this.listView1 = new System.Windows.Forms.ListView();
this.columnHeader1 = new System.Windows.Forms.ColumnHeader();
this.SuspendLayout();
//
// listView1
//
this.listView1.AllowDrop = true;
this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader1});
this.listView1.Dock = System.Windows.Forms.DockStyle.Fill;
this.listView1.Name = "listView1";
this.listView1.Size = new System.Drawing.Size(292, 273);
this.listView1.TabIndex = 0;
this.listView1.View = System.Windows.Forms.View.Details;
this.listView1.DragDrop += new System.Windows.Forms.DragEventHandler(this.listView1_DragDrop);
this.listView1.DragEnter += new System.Windows.Forms.DragEventHandler(this.listView1_DragEnter);
this.listView1.SelectedIndexChanged += new System.EventHandler(this.listView1_SelectedIndexChanged);
//
// columnHeader1
//
this.columnHeader1.Text = "FileName";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 12);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.listView1});
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
}
#endregion
///
/// アプリケーションのメイン エントリ ポイントです。
///
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void Form1_Load(object sender, System.EventArgs e)
{
}
private void listView1_SelectedIndexChanged(object sender, System.EventArgs e)
{
}
private void listView1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
e.Effect = DragDropEffects.Copy | DragDropEffects.Move;
}
private void listView1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
IDataObject dataObject;
dataObject = e.Data;
string [] paths =(string[])dataObject.GetData(DataFormats.FileDrop);
IntPtr harc = UnZipOpenArchive(this.Handle, paths[0], 0);
INDIVIDUALINFO info = new INDIVIDUALINFO();
StringBuilder wildname = new StringBuilder();
if (UnZipFindFirst(harc, "*.*", ref info) != -1)
{
listView1.Items.Clear();
do
{
StringBuilder filename2 = new StringBuilder(256);
UnZipGetFileName(harc, filename2, 256);
listView1.Items.Add(filename2.ToString());
} while (UnZipFindNext(harc, ref info) != -1);
UnZipCloseArchive(harc);
}
}
}
}
RARの解凍
フォームにドロップした書庫ファイルを解凍します。
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Runtime.InteropServices;
using System.Text;
namespace Zip32J_r
{
///
/// Form1 の概要の説明です。
///
public class Form1 : System.Windows.Forms.Form
{
[DllImport("UNRAR32.DLL", CharSet=CharSet.Ansi )]
public static extern long Unrar (IntPtr hwnd, string szCmdLine, StringBuilder SzOutput, int dwSize);
///
/// 必要なデザイナ変数です。
///
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows フォーム デザイナ サポートに必要です。
//
InitializeComponent();
//
// TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。
//
}
///
/// 使用されているリソースに後処理を実行します。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
///
/// デザイナ サポートに必要なメソッドです。このメソッドの内容を
/// コード エディタで変更しないでください。
///
private void InitializeComponent()
{
//
// Form1
//
this.AllowDrop = true;
this.AutoScaleBaseSize = new System.Drawing.Size(5, 12);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
this.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);
}
#endregion
///
/// アプリケーションのメイン エントリ ポイントです。
///
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void Form1_Load(object sender, System.EventArgs e)
{
}
private void Form1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
e.Effect = DragDropEffects.Copy | DragDropEffects.Move;
}
private void Form1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
IDataObject dataObject;
dataObject = e.Data;
string path =((string[])dataObject.GetData(DataFormats.FileDrop))[0];
string cmdline;
StringBuilder output = new StringBuilder(256);
cmdline = @"-x """ + path + @"""";
long i = Unrar(this.Handle, cmdline, output, 256);
}
}
}
ファイルパスからアイコンを取り出す
フォームにドロップしたファイルからファイルパスとアイコンを表示します。
ListView1のViewプロパティを変更すると大きいアイコンと小さいアイコンが、
割り当てられていることが解ります。
APIはよくわからないので、これが正しい書き方かどうかは解りません。
アドバイスをお願いします。
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Runtime.InteropServices;
namespace sample
{
///
/// Form1 の概要の説明です。
///
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.ListView listView1;
private System.Windows.Forms.ColumnHeader columnHeader1;
const int LVM_SETIMAGELIST = 0x1003;
enum LVSIL
{
LVSIL_NORMAL = 0x0000,
LVSIL_SMALL = 0x0001,
LVSIL_STATE = 0x0002
}
#region SHFILEINFO
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]
public struct SHFILEINFO
{
public IntPtr hIcon;
public int iIcon;
public int dwAttributes;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=260)]
public string szDisplayName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=80)]
public string szTypeName;
}
#endregion
#region ListViewItem flags
public enum ListViewItemFlags
{
LVIF_TEXT = 0x0001,
LVIF_IMAGE = 0x0002,
LVIF_PARAM = 0x0004,
LVIF_STATE = 0x0008,
LVIF_INDENT = 0x0010,
LVIF_NORECOMPUTE = 0x0800
}
#endregion
#region ListView Messages
public enum ListViewMessages
{
LVM_FIRST = 0x1000,
LVM_SETITEM = (LVM_FIRST + 06),
LVM_GETSUBITEMRECT = (LVM_FIRST + 56),
LVM_GETITEMSTATE = (LVM_FIRST + 44),
LVM_GETITEMTEXTW = (LVM_FIRST + 115)
}
#endregion
#region LVITEM
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]
public struct LVITEM
{
public ListViewItemFlags mask;
public int iItem;
public int iSubItem;
public int state;
public int stateMask;
public IntPtr pszText;
public int cchTextMax;
public int iImage;
public int lParam;
public int iIndent;
}
#endregion
#region Shell File Info Flags
public enum ShellFileInfoFlags
{
SHGFI_ICON = 0x000000100,
SHGFI_DISPLAYNAME = 0x000000200,
SHGFI_TYPENAME = 0x000000400,
SHGFI_ATTRIBUTES = 0x000000800,
SHGFI_ICONLOCATION = 0x000001000,
SHGFI_EXETYPE = 0x000002000,
SHGFI_SYSICONINDEX = 0x000004000,
SHGFI_LINKOVERLAY = 0x000008000,
SHGFI_SELECTED = 0x000010000,
SHGFI_ATTR_SPECIFIED = 0x000020000,
SHGFI_LARGEICON = 0x000000000,
SHGFI_SMALLICON = 0x000000001,
SHGFI_OPENICON = 0x000000002,
SHGFI_SHELLICONSIZE = 0x000000004,
SHGFI_PIDL = 0x000000008,
SHGFI_USEFILEATTRIBUTES = 0x000000010
}
#endregion
class WindowsAPI
{
#region Shell32.dll functions
[DllImport("Shell32.dll", CharSet=CharSet.Auto)]
public static extern IntPtr SHGetFileInfo(string drivePath, int fileAttributes,
out SHFILEINFO fileInfo, int countBytesFileInfo, ShellFileInfoFlags flags);
#endregion
#region User32.dll functions
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern void SendMessage(IntPtr hWnd, ListViewMessages msg, int wParam, ref LVITEM lParam);
#endregion
}
///
/// 必要なデザイナ変数です。
///
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows フォーム デザイナ サポートに必要です。
//
InitializeComponent();
//
// TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。
//
}
///
/// 使用されているリソースに後処理を実行します。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
///
/// デザイナ サポートに必要なメソッドです。このメソッドの内容を
/// コード エディタで変更しないでください。
///
private void InitializeComponent()
{
this.listView1 = new System.Windows.Forms.ListView();
this.columnHeader1 = new System.Windows.Forms.ColumnHeader();
this.SuspendLayout();
//
// listView1
//
this.listView1.AllowDrop = true;
this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader1});
this.listView1.Dock = System.Windows.Forms.DockStyle.Fill;
this.listView1.Name = "listView1";
this.listView1.Size = new System.Drawing.Size(292, 273);
this.listView1.TabIndex = 0;
this.listView1.View = System.Windows.Forms.View.SmallIcon;
this.listView1.DragDrop += new System.Windows.Forms.DragEventHandler(this.listView1_DragDrop);
this.listView1.DragEnter += new System.Windows.Forms.DragEventHandler(this.listView1_DragEnter);
//
// columnHeader1
//
this.columnHeader1.Text = "名前";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 12);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.listView1});
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
}
#endregion
///
/// アプリケーションのメイン エントリ ポイントです。
///
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void Form1_Load(object sender, System.EventArgs e)
{
SHFILEINFO shfi = new SHFILEINFO();
IntPtr hSystemImageList = IntPtr.Zero;
hSystemImageList = WindowsAPI.SHGetFileInfo(@"c:\", 0, out shfi, Marshal.SizeOf(typeof(SHFILEINFO)),
ShellFileInfoFlags.SHGFI_SYSICONINDEX | ShellFileInfoFlags.SHGFI_SMALLICON );
WindowsAPI.SendMessage(listView1.Handle, LVM_SETIMAGELIST, (int)LVSIL.LVSIL_SMALL, (int)hSystemImageList);
hSystemImageList = WindowsAPI.SHGetFileInfo(@"c:\", 0, out shfi, Marshal.SizeOf(typeof(SHFILEINFO)),
ShellFileInfoFlags.SHGFI_SYSICONINDEX | ShellFileInfoFlags.SHGFI_LARGEICON );
WindowsAPI.SendMessage(listView1.Handle, LVM_SETIMAGELIST, (int)LVSIL.LVSIL_NORMAL, (int)hSystemImageList);
}
private void SetupListViewItem(ref LVITEM item, string filePath)
{
SHFILEINFO shfi = new SHFILEINFO();
item.mask = ListViewItemFlags.LVIF_IMAGE;
WindowsAPI.SHGetFileInfo(filePath, 0, out shfi, Marshal.SizeOf(typeof(SHFILEINFO)),
ShellFileInfoFlags.SHGFI_SYSICONINDEX | ShellFileInfoFlags.SHGFI_SMALLICON | ShellFileInfoFlags.SHGFI_LARGEICON);
item.iImage = shfi.iIcon;
}
void SetItem(System.Windows.Forms.ListView listView, ref LVITEM item)
{
WindowsAPI.SendMessage(listView.Handle, ListViewMessages.LVM_SETITEM,0,ref item);
}
private void listView1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
IDataObject dataObject = e.Data;
bool flag = false;
foreach(string format in dataObject.GetFormats())
{
if (format == DataFormats.FileDrop)
{
flag = true;
}
}
if (flag == false)
return;
e.Effect = DragDropEffects.Copy | DragDropEffects.Move;
}
private void listView1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
IDataObject dataObject = e.Data;
bool flag = false;
foreach(string format in dataObject.GetFormats())
{
if (format == DataFormats.FileDrop)
{
flag = true;
}
}
if (flag == false)
return;
this.listView1.Items.Clear();
foreach(string path in (string[])dataObject.GetData(DataFormats.FileDrop))
{
InsertItem(path);
}
}
private void InsertItem(string filePath)
{
ListViewItem item;
LVITEM item2 = new LVITEM();
item = listView1.Items.Add(filePath);
SetupListViewItem(ref item2, filePath);
item2.iItem = item.Index;
SetItem(listView1, ref item2);
}
}
}
Enumサンプル
Enumのサンプルです。
[FlagsAttribute]宣言つ付けるか付けないかで結果が変わります。
using System;
namespace ConsoleApplication1
{
///
/// Class1 の概要の説明です。
///
class Class1
{
[FlagsAttribute]
enum TestEnum
{
a = 0x01,
b = 0x02,
c = 0x04
}
///
/// アプリケーションのメイン エントリ ポイントです。
///
[STAThread]
static void Main(string[] args)
{
TestEnum testEnum;
string [] names = Enum.GetNames(typeof(Class1.TestEnum));
foreach(string name in names)
{
Console.WriteLine(name);
}
testEnum = TestEnum.a | TestEnum.b;
Console.WriteLine(testEnum);
//
// TODO: アプリケーションを開始するコードをここに追加してください。
//
}
}
}
Parse
文字列から数値にキャストするときに使います。
boolにもParseがあります。iniファイルにtrueまたはfalseを書き込みそれを読み込んだ
りする時に重宝しています
using System;
namespace ConsoleApplication1
{
///
/// Class1 の概要の説明です。
///
class Class1
{
///
/// アプリケーションのメイン エントリ ポイントです。
///
[STAThread]
static void Main(string[] args)
{
int i1 = 100;
int i2 = int.Parse(i1.ToString());
bool bl1 = true;
bool bl2 = bool.Parse(bl1.ToString());
//
// TODO: アプリケーションを開始するコードをここに追加してください。
//
}
}
}
画像表示
宇宙仮面さんの「ImageViewerを作る」を元に、表示しきれない画像はスクロール
させる機能を追加しました。
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace ImageView
{
///
/// Form1 の概要の説明です。
///
public class Form1 : System.Windows.Forms.Form
{
private System.Drawing.Image image;
private System.Windows.Forms.MainMenu mainMenu1;
private System.Windows.Forms.MenuItem menuItem1;
private System.Windows.Forms.MenuItem menuItem2;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.VScrollBar vScrollBar1;
private System.Windows.Forms.HScrollBar hScrollBar1;
private System.Windows.Forms.OpenFileDialog openFileDialog1;
///
/// 必要なデザイナ変数です。
///
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows フォーム デザイナ サポートに必要です。
//
InitializeComponent();
//
// TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。
//
}
///
/// 使用されているリソースに後処理を実行します。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
///
/// デザイナ サポートに必要なメソッドです。このメソッドの内容を
/// コード エディタで変更しないでください。
///
private void InitializeComponent()
{
this.mainMenu1 = new System.Windows.Forms.MainMenu();
this.menuItem1 = new System.Windows.Forms.MenuItem();
this.menuItem2 = new System.Windows.Forms.MenuItem();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.vScrollBar1 = new System.Windows.Forms.VScrollBar();
this.hScrollBar1 = new System.Windows.Forms.HScrollBar();
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
this.SuspendLayout();
//
// mainMenu1
//
this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuItem1});
//
// menuItem1
//
this.menuItem1.Index = 0;
this.menuItem1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuItem2});
this.menuItem1.Text = "ファイル";
//
// menuItem2
//
this.menuItem2.Index = 0;
this.menuItem2.Text = "開く";
this.menuItem2.Click += new System.EventHandler(this.menuItem2_Click);
//
// pictureBox1
//
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(272, 248);
this.pictureBox1.TabIndex = 0;
this.pictureBox1.TabStop = false;
this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click);
this.pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint);
//
// vScrollBar1
//
this.vScrollBar1.Location = new System.Drawing.Point(272, 0);
this.vScrollBar1.Name = "vScrollBar1";
this.vScrollBar1.Size = new System.Drawing.Size(16, 248);
this.vScrollBar1.TabIndex = 1;
this.vScrollBar1.ValueChanged += new System.EventHandler(this.vScrollBar1_ValueChanged);
//
// hScrollBar1
//
this.hScrollBar1.Location = new System.Drawing.Point(0, 248);
this.hScrollBar1.Name = "hScrollBar1";
this.hScrollBar1.Size = new System.Drawing.Size(272, 16);
this.hScrollBar1.TabIndex = 2;
this.hScrollBar1.ValueChanged += new System.EventHandler(this.hScrollBar1_ValueChanged);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 12);
this.ClientSize = new System.Drawing.Size(288, 265);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.hScrollBar1,
this.vScrollBar1,
this.pictureBox1});
this.Menu = this.mainMenu1;
this.Name = "Form1";
this.Text = "Form1";
this.Resize += new System.EventHandler(this.Form1_Resize);
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
}
#endregion
///
/// アプリケーションのメイン エントリ ポイントです。
///
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void Form1_Load(object sender, System.EventArgs e)
{
}
private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
this.DrawImage(e.Graphics);
}
private void Form1_Resize(object sender, System.EventArgs e)
{
ReSize();
}
private void ReSize()
{
System.Drawing.Graphics g;
System.Drawing.Size size = this.ClientSize;
if (image == null)
{
this.vScrollBar1.Visible = false;
this.hScrollBar1.Visible = false;
return;
}
if (size.Width >= this.image.Width)
{
this.pictureBox1.Height = size.Height;
this.hScrollBar1.Visible = false;
}
else
{
this.pictureBox1.Height = size.Height - this.hScrollBar1.Height;
this.hScrollBar1.Maximum = 0;
this.hScrollBar1.Minimum = 0;
this.hScrollBar1.Visible = true;
}
if (size.Height >= this.image.Height)
{
this.pictureBox1.Width = size.Width;
this.vScrollBar1.Visible = false;
}
else
{
this.pictureBox1.Width = size.Width - this.vScrollBar1.Width;
this.vScrollBar1.Maximum = 0;
this.vScrollBar1.Minimum = 0;
this.vScrollBar1.Visible = true;
}
this.hScrollBar1.Maximum = this.image.Width - this.pictureBox1.Width + 10 - 1;
this.vScrollBar1.Maximum = this.image.Height - this.pictureBox1.Height + 10 - 1;
//this.hScrollBar1.LargeChange = 10;
//this.vScrollBar1.LargeChange = 10;
this.vScrollBar1.Left = this.pictureBox1.Width;
this.vScrollBar1.Height = this.pictureBox1.Height;
this.hScrollBar1.Top = this.pictureBox1.Height;
this.hScrollBar1.Width = this.pictureBox1.Width;
g = System.Drawing.Graphics.FromHwnd(this.pictureBox1.Handle);
this.DrawImage(g);
}
private void pictureBox1_Click(object sender, System.EventArgs e)
{
}
private void menuItem2_Click(object sender, System.EventArgs e)
{
System.Windows.Forms.DialogResult result = this.openFileDialog1.ShowDialog();
try
{
this.image = System.Drawing.Image.FromFile(this.openFileDialog1.FileName);
ReSize();
}
catch (Exception exception)
{
System.Windows.Forms.MessageBox.Show(exception.ToString());
}
}
private void DrawImage(Graphics g)
{
if (image == null)
{
return;
}
Point[] points = new Point[3];
Rectangle rectangle = new Rectangle();
rectangle.Width = image.Width;
rectangle.Height = image.Height;
if (this.hScrollBar1.Visible == false)
{
rectangle.X = 0;
}
else
{
rectangle.X = this.hScrollBar1.Value;
}
if (this.vScrollBar1.Visible == false)
{
rectangle.Y = 0;
}
else
{
rectangle.Y = this.vScrollBar1.Value;
}
points[0].X = 0;
points[0].Y = 0;
points[1].X = image.Width;
points[1].Y = 0;
points[2].X = 0;
points[2].Y = image.Height;
g.DrawImage(image, points, rectangle, GraphicsUnit.Pixel);
}
private void vScrollBar1_ValueChanged(object sender, System.EventArgs e)
{
System.Drawing.Graphics g;
g = System.Drawing.Graphics.FromHwnd(this.pictureBox1.Handle);
this.DrawImage(g);
}
private void hScrollBar1_ValueChanged(object sender, System.EventArgs e)
{
System.Drawing.Graphics g;
g = System.Drawing.Graphics.FromHwnd(this.pictureBox1.Handle);
this.DrawImage(g);
}
}
}
UnZipExtractMem
test/test2.jpgを含む複数のファイルを圧縮したアーカイブの中のtest2.jpgだけを
メモリーに解凍するサンプルです。
lpwAttrが取得できなかったので、不完全です。
using System;
using System.Runtime.InteropServices;
namespace UnZipExtractMem
{
///
/// Class1 の概要の説明です。
///
class Class1
{
[DllImport("UNZIP32", CharSet=CharSet.Ansi )]
public static extern System.Int32 UnZipExtractMem(IntPtr hWnd,
string szCmdLine,
byte[] szBuffer,
System.UInt32 dwSize,
ref System.Int32 lpTime,
IntPtr lpwAttr,
ref System.UInt32 lpdwWriteSize
);
///
/// アプリケーションのメイン エントリ ポイントです。
///
[STAThread]
static void Main(string[] args)
{
string szCmdLine;
byte[] szBuffer = new byte[100];
System.UInt32 dwSize = 100;
System.Int32 lpTime = new System.Int32();
System.UInt16 lpwAttr = new System.UInt16();
System.UInt32 lpdwWriteSize = new System.UInt32();
szCmdLine = @"c:\test.ZIP test/test2.jpg";
System.Int32 int32 = new System.Int32();
UnZipExtractMem((System.IntPtr)null, szCmdLine, szBuffer, dwSize, ref lpTime, (System.IntPtr)null, ref lpdwWriteSize);
//
// TODO: アプリケーションを開始するコードをここに追加してください。
//
}
}
}
Enum.Parse
Enum.Parseの使い方です。
using System;
namespace Enum
{
///
/// Class1 の概要の説明です。
///
class Class1
{
enum TestEnum
{
a,
b,
c
};
///
/// アプリケーションのメイン エントリ ポイントです。
///
[STAThread]
static void Main(string[] args)
{
TestEnum testEnum;
testEnum = (TestEnum)System.Enum.Parse(typeof(TestEnum), "a");
//
// TODO: アプリケーションを開始するコードをここに追加してください。
//
}
}
}
情報源 メーリングリストや他のHP
No 名前 作成日時
01 LHA書庫ファイルの中身を見る 2002/11/20
02 ZIP圧縮 2002/11/21
03 ZIP書庫ファイルの中身を見る< 2002/11/23
04 RARの解凍 2002/11/23
05 ファイルパスからアイコンを取り出す 2002/11/23
06 Enumサンプル 2002/11/29
07 Parse 2002/12/09
08 画像表示 2003/06/30
09 UnZipExtractMem 2003/06/30
10 Enum.Parse 2003/07/01
LHA書庫ファイルの中身を見る
フォームにドロップしたLHA書庫ファイルの中身を見ます。
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Text;
using System.Runtime.InteropServices;
namespace LHA_e
{
///
/// Form1 の概要の説明です。
///
public class Form1 : System.Windows.Forms.Form
{
public const int FNAME_MAX32 = 512;
[ StructLayout( LayoutKind.Sequential )]
public struct INDIVIDUALINFO
{
System.UInt32 dwOriginalSize; /* ファイルのサイズ */
System.UInt32 dwCompressedSize; /* 圧縮後のサイズ */
System.UInt32 dwCRC; /* 格納ファイルのチェックサム */
System.UInt32 uFlag; /* 処理結果 */
/* Status flag */
System.UInt32 uOSType; /* 書庫作成に使われた OS */
System.UInt16 wRatio; /* 圧縮率 */
System.UInt16 wDate; /* 格納ファイルの日付(DOS 形式) */
System.UInt16 wTime; /* 格納ファイルの時刻(〃) */
[ MarshalAs( UnmanagedType.ByValTStr, SizeConst=FNAME_MAX32 + 1 )]
string szFileName; /* 書庫名 */
[ MarshalAs( UnmanagedType.ByValTStr, SizeConst=3 )]
string dummy1;
[ MarshalAs( UnmanagedType.ByValTStr, SizeConst=8 )]
string szAttribute; /* 格納ファイルの属性(書庫固有) */
[ MarshalAs( UnmanagedType.ByValTStr, SizeConst=8 )]
string szMode; /* 格納ファイルの格納モード(〃) */
}
[DllImport("UNLHA32", CharSet=CharSet.Ansi )]
public static extern IntPtr UnlhaOpenArchive(IntPtr _hwnd, string _szFileName,
System.UInt32 _dwMode);
[DllImport("UNLHA32", CharSet=CharSet.Ansi )]
public static extern System.Int32 UnlhaFindFirst(IntPtr _harc, string _szWildName,
ref INDIVIDUALINFO lpSubInfo);
[DllImport("UNLHA32", CharSet=CharSet.Ansi )]
public static extern System.Int32 UnlhaFindNext(IntPtr _harc, ref INDIVIDUALINFO lpSubInfo);
[DllImport("UNLHA32", CharSet=CharSet.Ansi )]
public static extern System.Int32 UnlhaGetFileName(IntPtr _harc, StringBuilder _lpBuffer, int _nsize);
[DllImport("UNLHA32", CharSet=CharSet.Ansi )]
public static extern System.Int32 UnlhaCloseArchive(IntPtr _harc);
private System.Windows.Forms.ListView listView1;
private System.Windows.Forms.ColumnHeader columnHeader1;
///
/// 必要なデザイナ変数です。
///
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows フォーム デザイナ サポートに必要です。
//
InitializeComponent();
//
// TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。
//
}
///
/// 使用されているリソースに後処理を実行します。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
///
/// デザイナ サポートに必要なメソッドです。このメソッドの内容を
/// コード エディタで変更しないでください。
///
private void InitializeComponent()
{
this.listView1 = new System.Windows.Forms.ListView();
this.columnHeader1 = new System.Windows.Forms.ColumnHeader();
this.SuspendLayout();
//
// listView1
//
this.listView1.AllowDrop = true;
this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader1});
this.listView1.Dock = System.Windows.Forms.DockStyle.Fill;
this.listView1.Name = "listView1";
this.listView1.Size = new System.Drawing.Size(292, 273);
this.listView1.TabIndex = 0;
this.listView1.View = System.Windows.Forms.View.Details;
this.listView1.DragDrop += new System.Windows.Forms.DragEventHandler(this.listView1_DragDrop);
this.listView1.DragEnter += new System.Windows.Forms.DragEventHandler(this.listView1_DragEnter);
this.listView1.SelectedIndexChanged += new System.EventHandler(this.listView1_SelectedIndexChanged);
//
// columnHeader1
//
this.columnHeader1.Text = "FileName";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 12);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.listView1});
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
}
#endregion
///
/// アプリケーションのメイン エントリ ポイントです。
///
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void listView1_SelectedIndexChanged(object sender, System.EventArgs e)
{
}
private void Form1_Load(object sender, System.EventArgs e)
{
}
private void listView1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
e.Effect = DragDropEffects.Copy | DragDropEffects.Move;
}
private void listView1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
IDataObject dataObject;
dataObject = e.Data;
string [] paths =(string[])dataObject.GetData(DataFormats.FileDrop);
IntPtr harc = UnlhaOpenArchive(this.Handle, paths[0], 0);
INDIVIDUALINFO info = new INDIVIDUALINFO();
StringBuilder wildname = new StringBuilder();
if (UnlhaFindFirst(harc, "*.*", ref info) != -1)
{
listView1.Items.Clear();
do
{
StringBuilder filename2 = new StringBuilder(256);
UnlhaGetFileName(harc, filename2, 256);
listView1.Items.Add(filename2.ToString());
} while (UnlhaFindNext(harc, ref info) != -1);
UnlhaCloseArchive(harc);
}
}
}
}
ZIP圧縮
フォームにドロップしたファイルを圧縮します。
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Runtime.InteropServices;
using System.Text;
namespace Zip32J_r
{
///
/// Form1 の概要の説明です。
///
public class Form1 : System.Windows.Forms.Form
{
[DllImport("ZIP32J.DLL", CharSet=CharSet.Ansi )]
public static extern long Zip (IntPtr hwnd,string szCmdLine, StringBuilder SzOutput, int dwSize);
///
/// 必要なデザイナ変数です。
///
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows フォーム デザイナ サポートに必要です。
//
InitializeComponent();
//
// TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。
//
}
///
/// 使用されているリソースに後処理を実行します。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
///
/// デザイナ サポートに必要なメソッドです。このメソッドの内容を
/// コード エディタで変更しないでください。
///
private void InitializeComponent()
{
//
// Form1
//
this.AllowDrop = true;
this.AutoScaleBaseSize = new System.Drawing.Size(5, 12);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
this.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);
}
#endregion
///
/// アプリケーションのメイン エントリ ポイントです。
///
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void Form1_Load(object sender, System.EventArgs e)
{
}
private void Form1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
e.Effect = DragDropEffects.Copy | DragDropEffects.Move;
}
private void Form1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
IDataObject dataObject;
dataObject = e.Data;
string [] paths =(string[])dataObject.GetData(DataFormats.FileDrop);
string response_file_path = System.IO.Path.GetDirectoryName(Application.ExecutablePath);
response_file_path = response_file_path + @"\" + "response.lst";
System.IO.Stream stream = System.IO.File.Open(response_file_path, System.IO.FileMode.Create);
System.IO.StreamWriter writer = new System.IO.StreamWriter(stream, System.Text.Encoding.GetEncoding("shift_jis"));
foreach(string a_filepath in paths)
{
writer.WriteLine(@"""" + a_filepath + @"""");
}
writer.Close();
stream.Close();
string makefilepath = System.IO.Path.GetDirectoryName(paths[0]) + @"\" +
System.IO.Path.GetFileNameWithoutExtension(paths[0]);
string cmdline;
StringBuilder output = new StringBuilder(256);
cmdline = @"-r """ + makefilepath + @""" @" + response_file_path;
long i = Zip(this.Handle, cmdline, output, 256);
}
}
}
ZIP書庫ファイルの中身を見る
フォームにドロップした書庫ファイルの中身をみます。
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Text;
using System.Runtime.InteropServices;
namespace zip_e
{
///
/// Form1 の概要の説明です。
///
public class Form1 : System.Windows.Forms.Form
{
public const int FNAME_MAX32 = 512;
public struct INDIVIDUALINFO
{
System.UInt32 dwOriginalSize; /* ファイルのサイズ */
System.UInt32 dwCompressedSize; /* 圧縮後のサイズ */
System.UInt32 dwCRC; /* 格納ファイルのチェックサム */
System.UInt32 uFlag; /* 処理結果 */
/* Status flag */
System.UInt32 uOSType; /* 書庫作成に使われた OS */
System.UInt16 wRatio; /* 圧縮率 */
System.UInt16 wDate; /* 格納ファイルの日付(DOS 形式) */
System.UInt16 wTime; /* 格納ファイルの時刻(〃) */
[ MarshalAs( UnmanagedType.ByValTStr, SizeConst = FNAME_MAX32 + 1 )]
string szFileName; /* 書庫名 */
[ MarshalAs( UnmanagedType.ByValTStr, SizeConst=3 )]
string dummy1;
[ MarshalAs( UnmanagedType.ByValTStr, SizeConst=8 )]
string szAttribute; /* 格納ファイルの属性(書庫固有) */
[ MarshalAs( UnmanagedType.ByValTStr, SizeConst=8 )]
string szMode; /* 格納ファイルの格納モード(〃) */
}
[DllImport("UNZIP32", CharSet=CharSet.Ansi )]
public static extern IntPtr UnZipOpenArchive(IntPtr _hwnd, string _szFileName, System.UInt32 _dwMode);
[DllImport("UNZIP32", CharSet=CharSet.Ansi )]
public static extern System.Int32 UnZipFindFirst(IntPtr _harc, string _szWildName,
ref INDIVIDUALINFO lpSubInfo);
[DllImport("UNZip32", CharSet=CharSet.Ansi )]
public static extern System.Int32 UnZipGetFileName(IntPtr _harc, StringBuilder _lpBuffer, int _nsize);
[DllImport("UNZip32", CharSet=CharSet.Ansi )]
public static extern System.Int32 UnZipCloseArchive(IntPtr _harc);
[DllImport("UNZIP32", CharSet=CharSet.Ansi )]
public static extern System.Int32 UnZipFindNext(IntPtr _harc, ref INDIVIDUALINFO lpSubInfo);
///
/// 必要なデザイナ変数です。
///
private System.Windows.Forms.ListView listView1;
private System.Windows.Forms.ColumnHeader columnHeader1; System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows フォーム デザイナ サポートに必要です。
//
InitializeComponent();
//
// TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。
//
}
///
/// 使用されているリソースに後処理を実行します。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
///
/// デザイナ サポートに必要なメソッドです。このメソッドの内容を
/// コード エディタで変更しないでください。
///
private void InitializeComponent()
{
this.listView1 = new System.Windows.Forms.ListView();
this.columnHeader1 = new System.Windows.Forms.ColumnHeader();
this.SuspendLayout();
//
// listView1
//
this.listView1.AllowDrop = true;
this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader1});
this.listView1.Dock = System.Windows.Forms.DockStyle.Fill;
this.listView1.Name = "listView1";
this.listView1.Size = new System.Drawing.Size(292, 273);
this.listView1.TabIndex = 0;
this.listView1.View = System.Windows.Forms.View.Details;
this.listView1.DragDrop += new System.Windows.Forms.DragEventHandler(this.listView1_DragDrop);
this.listView1.DragEnter += new System.Windows.Forms.DragEventHandler(this.listView1_DragEnter);
this.listView1.SelectedIndexChanged += new System.EventHandler(this.listView1_SelectedIndexChanged);
//
// columnHeader1
//
this.columnHeader1.Text = "FileName";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 12);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.listView1});
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
}
#endregion
///
/// アプリケーションのメイン エントリ ポイントです。
///
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void Form1_Load(object sender, System.EventArgs e)
{
}
private void listView1_SelectedIndexChanged(object sender, System.EventArgs e)
{
}
private void listView1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
e.Effect = DragDropEffects.Copy | DragDropEffects.Move;
}
private void listView1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
IDataObject dataObject;
dataObject = e.Data;
string [] paths =(string[])dataObject.GetData(DataFormats.FileDrop);
IntPtr harc = UnZipOpenArchive(this.Handle, paths[0], 0);
INDIVIDUALINFO info = new INDIVIDUALINFO();
StringBuilder wildname = new StringBuilder();
if (UnZipFindFirst(harc, "*.*", ref info) != -1)
{
listView1.Items.Clear();
do
{
StringBuilder filename2 = new StringBuilder(256);
UnZipGetFileName(harc, filename2, 256);
listView1.Items.Add(filename2.ToString());
} while (UnZipFindNext(harc, ref info) != -1);
UnZipCloseArchive(harc);
}
}
}
}
RARの解凍
フォームにドロップした書庫ファイルを解凍します。
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Runtime.InteropServices;
using System.Text;
namespace Zip32J_r
{
///
/// Form1 の概要の説明です。
///
public class Form1 : System.Windows.Forms.Form
{
[DllImport("UNRAR32.DLL", CharSet=CharSet.Ansi )]
public static extern long Unrar (IntPtr hwnd, string szCmdLine, StringBuilder SzOutput, int dwSize);
///
/// 必要なデザイナ変数です。
///
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows フォーム デザイナ サポートに必要です。
//
InitializeComponent();
//
// TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。
//
}
///
/// 使用されているリソースに後処理を実行します。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
///
/// デザイナ サポートに必要なメソッドです。このメソッドの内容を
/// コード エディタで変更しないでください。
///
private void InitializeComponent()
{
//
// Form1
//
this.AllowDrop = true;
this.AutoScaleBaseSize = new System.Drawing.Size(5, 12);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
this.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);
}
#endregion
///
/// アプリケーションのメイン エントリ ポイントです。
///
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void Form1_Load(object sender, System.EventArgs e)
{
}
private void Form1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
e.Effect = DragDropEffects.Copy | DragDropEffects.Move;
}
private void Form1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
IDataObject dataObject;
dataObject = e.Data;
string path =((string[])dataObject.GetData(DataFormats.FileDrop))[0];
string cmdline;
StringBuilder output = new StringBuilder(256);
cmdline = @"-x """ + path + @"""";
long i = Unrar(this.Handle, cmdline, output, 256);
}
}
}
ファイルパスからアイコンを取り出す
フォームにドロップしたファイルからファイルパスとアイコンを表示します。
ListView1のViewプロパティを変更すると大きいアイコンと小さいアイコンが、
割り当てられていることが解ります。
APIはよくわからないので、これが正しい書き方かどうかは解りません。
アドバイスをお願いします。
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Runtime.InteropServices;
namespace sample
{
///
/// Form1 の概要の説明です。
///
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.ListView listView1;
private System.Windows.Forms.ColumnHeader columnHeader1;
const int LVM_SETIMAGELIST = 0x1003;
enum LVSIL
{
LVSIL_NORMAL = 0x0000,
LVSIL_SMALL = 0x0001,
LVSIL_STATE = 0x0002
}
#region SHFILEINFO
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]
public struct SHFILEINFO
{
public IntPtr hIcon;
public int iIcon;
public int dwAttributes;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=260)]
public string szDisplayName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=80)]
public string szTypeName;
}
#endregion
#region ListViewItem flags
public enum ListViewItemFlags
{
LVIF_TEXT = 0x0001,
LVIF_IMAGE = 0x0002,
LVIF_PARAM = 0x0004,
LVIF_STATE = 0x0008,
LVIF_INDENT = 0x0010,
LVIF_NORECOMPUTE = 0x0800
}
#endregion
#region ListView Messages
public enum ListViewMessages
{
LVM_FIRST = 0x1000,
LVM_SETITEM = (LVM_FIRST + 06),
LVM_GETSUBITEMRECT = (LVM_FIRST + 56),
LVM_GETITEMSTATE = (LVM_FIRST + 44),
LVM_GETITEMTEXTW = (LVM_FIRST + 115)
}
#endregion
#region LVITEM
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]
public struct LVITEM
{
public ListViewItemFlags mask;
public int iItem;
public int iSubItem;
public int state;
public int stateMask;
public IntPtr pszText;
public int cchTextMax;
public int iImage;
public int lParam;
public int iIndent;
}
#endregion
#region Shell File Info Flags
public enum ShellFileInfoFlags
{
SHGFI_ICON = 0x000000100,
SHGFI_DISPLAYNAME = 0x000000200,
SHGFI_TYPENAME = 0x000000400,
SHGFI_ATTRIBUTES = 0x000000800,
SHGFI_ICONLOCATION = 0x000001000,
SHGFI_EXETYPE = 0x000002000,
SHGFI_SYSICONINDEX = 0x000004000,
SHGFI_LINKOVERLAY = 0x000008000,
SHGFI_SELECTED = 0x000010000,
SHGFI_ATTR_SPECIFIED = 0x000020000,
SHGFI_LARGEICON = 0x000000000,
SHGFI_SMALLICON = 0x000000001,
SHGFI_OPENICON = 0x000000002,
SHGFI_SHELLICONSIZE = 0x000000004,
SHGFI_PIDL = 0x000000008,
SHGFI_USEFILEATTRIBUTES = 0x000000010
}
#endregion
class WindowsAPI
{
#region Shell32.dll functions
[DllImport("Shell32.dll", CharSet=CharSet.Auto)]
public static extern IntPtr SHGetFileInfo(string drivePath, int fileAttributes,
out SHFILEINFO fileInfo, int countBytesFileInfo, ShellFileInfoFlags flags);
#endregion
#region User32.dll functions
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern void SendMessage(IntPtr hWnd, ListViewMessages msg, int wParam, ref LVITEM lParam);
#endregion
}
///
/// 必要なデザイナ変数です。
///
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows フォーム デザイナ サポートに必要です。
//
InitializeComponent();
//
// TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。
//
}
///
/// 使用されているリソースに後処理を実行します。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
///
/// デザイナ サポートに必要なメソッドです。このメソッドの内容を
/// コード エディタで変更しないでください。
///
private void InitializeComponent()
{
this.listView1 = new System.Windows.Forms.ListView();
this.columnHeader1 = new System.Windows.Forms.ColumnHeader();
this.SuspendLayout();
//
// listView1
//
this.listView1.AllowDrop = true;
this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader1});
this.listView1.Dock = System.Windows.Forms.DockStyle.Fill;
this.listView1.Name = "listView1";
this.listView1.Size = new System.Drawing.Size(292, 273);
this.listView1.TabIndex = 0;
this.listView1.View = System.Windows.Forms.View.SmallIcon;
this.listView1.DragDrop += new System.Windows.Forms.DragEventHandler(this.listView1_DragDrop);
this.listView1.DragEnter += new System.Windows.Forms.DragEventHandler(this.listView1_DragEnter);
//
// columnHeader1
//
this.columnHeader1.Text = "名前";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 12);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.listView1});
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
}
#endregion
///
/// アプリケーションのメイン エントリ ポイントです。
///
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void Form1_Load(object sender, System.EventArgs e)
{
SHFILEINFO shfi = new SHFILEINFO();
IntPtr hSystemImageList = IntPtr.Zero;
hSystemImageList = WindowsAPI.SHGetFileInfo(@"c:\", 0, out shfi, Marshal.SizeOf(typeof(SHFILEINFO)),
ShellFileInfoFlags.SHGFI_SYSICONINDEX | ShellFileInfoFlags.SHGFI_SMALLICON );
WindowsAPI.SendMessage(listView1.Handle, LVM_SETIMAGELIST, (int)LVSIL.LVSIL_SMALL, (int)hSystemImageList);
hSystemImageList = WindowsAPI.SHGetFileInfo(@"c:\", 0, out shfi, Marshal.SizeOf(typeof(SHFILEINFO)),
ShellFileInfoFlags.SHGFI_SYSICONINDEX | ShellFileInfoFlags.SHGFI_LARGEICON );
WindowsAPI.SendMessage(listView1.Handle, LVM_SETIMAGELIST, (int)LVSIL.LVSIL_NORMAL, (int)hSystemImageList);
}
private void SetupListViewItem(ref LVITEM item, string filePath)
{
SHFILEINFO shfi = new SHFILEINFO();
item.mask = ListViewItemFlags.LVIF_IMAGE;
WindowsAPI.SHGetFileInfo(filePath, 0, out shfi, Marshal.SizeOf(typeof(SHFILEINFO)),
ShellFileInfoFlags.SHGFI_SYSICONINDEX | ShellFileInfoFlags.SHGFI_SMALLICON | ShellFileInfoFlags.SHGFI_LARGEICON);
item.iImage = shfi.iIcon;
}
void SetItem(System.Windows.Forms.ListView listView, ref LVITEM item)
{
WindowsAPI.SendMessage(listView.Handle, ListViewMessages.LVM_SETITEM,0,ref item);
}
private void listView1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
IDataObject dataObject = e.Data;
bool flag = false;
foreach(string format in dataObject.GetFormats())
{
if (format == DataFormats.FileDrop)
{
flag = true;
}
}
if (flag == false)
return;
e.Effect = DragDropEffects.Copy | DragDropEffects.Move;
}
private void listView1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
IDataObject dataObject = e.Data;
bool flag = false;
foreach(string format in dataObject.GetFormats())
{
if (format == DataFormats.FileDrop)
{
flag = true;
}
}
if (flag == false)
return;
this.listView1.Items.Clear();
foreach(string path in (string[])dataObject.GetData(DataFormats.FileDrop))
{
InsertItem(path);
}
}
private void InsertItem(string filePath)
{
ListViewItem item;
LVITEM item2 = new LVITEM();
item = listView1.Items.Add(filePath);
SetupListViewItem(ref item2, filePath);
item2.iItem = item.Index;
SetItem(listView1, ref item2);
}
}
}
Enumサンプル
Enumのサンプルです。
[FlagsAttribute]宣言つ付けるか付けないかで結果が変わります。
using System;
namespace ConsoleApplication1
{
///
/// Class1 の概要の説明です。
///
class Class1
{
[FlagsAttribute]
enum TestEnum
{
a = 0x01,
b = 0x02,
c = 0x04
}
///
/// アプリケーションのメイン エントリ ポイントです。
///
[STAThread]
static void Main(string[] args)
{
TestEnum testEnum;
string [] names = Enum.GetNames(typeof(Class1.TestEnum));
foreach(string name in names)
{
Console.WriteLine(name);
}
testEnum = TestEnum.a | TestEnum.b;
Console.WriteLine(testEnum);
//
// TODO: アプリケーションを開始するコードをここに追加してください。
//
}
}
}
Parse
文字列から数値にキャストするときに使います。
boolにもParseがあります。iniファイルにtrueまたはfalseを書き込みそれを読み込んだ
りする時に重宝しています
using System;
namespace ConsoleApplication1
{
///
/// Class1 の概要の説明です。
///
class Class1
{
///
/// アプリケーションのメイン エントリ ポイントです。
///
[STAThread]
static void Main(string[] args)
{
int i1 = 100;
int i2 = int.Parse(i1.ToString());
bool bl1 = true;
bool bl2 = bool.Parse(bl1.ToString());
//
// TODO: アプリケーションを開始するコードをここに追加してください。
//
}
}
}
画像表示
宇宙仮面さんの「ImageViewerを作る」を元に、表示しきれない画像はスクロール
させる機能を追加しました。
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace ImageView
{
///
/// Form1 の概要の説明です。
///
public class Form1 : System.Windows.Forms.Form
{
private System.Drawing.Image image;
private System.Windows.Forms.MainMenu mainMenu1;
private System.Windows.Forms.MenuItem menuItem1;
private System.Windows.Forms.MenuItem menuItem2;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.VScrollBar vScrollBar1;
private System.Windows.Forms.HScrollBar hScrollBar1;
private System.Windows.Forms.OpenFileDialog openFileDialog1;
///
/// 必要なデザイナ変数です。
///
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows フォーム デザイナ サポートに必要です。
//
InitializeComponent();
//
// TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。
//
}
///
/// 使用されているリソースに後処理を実行します。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
///
/// デザイナ サポートに必要なメソッドです。このメソッドの内容を
/// コード エディタで変更しないでください。
///
private void InitializeComponent()
{
this.mainMenu1 = new System.Windows.Forms.MainMenu();
this.menuItem1 = new System.Windows.Forms.MenuItem();
this.menuItem2 = new System.Windows.Forms.MenuItem();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.vScrollBar1 = new System.Windows.Forms.VScrollBar();
this.hScrollBar1 = new System.Windows.Forms.HScrollBar();
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
this.SuspendLayout();
//
// mainMenu1
//
this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuItem1});
//
// menuItem1
//
this.menuItem1.Index = 0;
this.menuItem1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuItem2});
this.menuItem1.Text = "ファイル";
//
// menuItem2
//
this.menuItem2.Index = 0;
this.menuItem2.Text = "開く";
this.menuItem2.Click += new System.EventHandler(this.menuItem2_Click);
//
// pictureBox1
//
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(272, 248);
this.pictureBox1.TabIndex = 0;
this.pictureBox1.TabStop = false;
this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click);
this.pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint);
//
// vScrollBar1
//
this.vScrollBar1.Location = new System.Drawing.Point(272, 0);
this.vScrollBar1.Name = "vScrollBar1";
this.vScrollBar1.Size = new System.Drawing.Size(16, 248);
this.vScrollBar1.TabIndex = 1;
this.vScrollBar1.ValueChanged += new System.EventHandler(this.vScrollBar1_ValueChanged);
//
// hScrollBar1
//
this.hScrollBar1.Location = new System.Drawing.Point(0, 248);
this.hScrollBar1.Name = "hScrollBar1";
this.hScrollBar1.Size = new System.Drawing.Size(272, 16);
this.hScrollBar1.TabIndex = 2;
this.hScrollBar1.ValueChanged += new System.EventHandler(this.hScrollBar1_ValueChanged);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 12);
this.ClientSize = new System.Drawing.Size(288, 265);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.hScrollBar1,
this.vScrollBar1,
this.pictureBox1});
this.Menu = this.mainMenu1;
this.Name = "Form1";
this.Text = "Form1";
this.Resize += new System.EventHandler(this.Form1_Resize);
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
}
#endregion
///
/// アプリケーションのメイン エントリ ポイントです。
///
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void Form1_Load(object sender, System.EventArgs e)
{
}
private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
this.DrawImage(e.Graphics);
}
private void Form1_Resize(object sender, System.EventArgs e)
{
ReSize();
}
private void ReSize()
{
System.Drawing.Graphics g;
System.Drawing.Size size = this.ClientSize;
if (image == null)
{
this.vScrollBar1.Visible = false;
this.hScrollBar1.Visible = false;
return;
}
if (size.Width >= this.image.Width)
{
this.pictureBox1.Height = size.Height;
this.hScrollBar1.Visible = false;
}
else
{
this.pictureBox1.Height = size.Height - this.hScrollBar1.Height;
this.hScrollBar1.Maximum = 0;
this.hScrollBar1.Minimum = 0;
this.hScrollBar1.Visible = true;
}
if (size.Height >= this.image.Height)
{
this.pictureBox1.Width = size.Width;
this.vScrollBar1.Visible = false;
}
else
{
this.pictureBox1.Width = size.Width - this.vScrollBar1.Width;
this.vScrollBar1.Maximum = 0;
this.vScrollBar1.Minimum = 0;
this.vScrollBar1.Visible = true;
}
this.hScrollBar1.Maximum = this.image.Width - this.pictureBox1.Width + 10 - 1;
this.vScrollBar1.Maximum = this.image.Height - this.pictureBox1.Height + 10 - 1;
//this.hScrollBar1.LargeChange = 10;
//this.vScrollBar1.LargeChange = 10;
this.vScrollBar1.Left = this.pictureBox1.Width;
this.vScrollBar1.Height = this.pictureBox1.Height;
this.hScrollBar1.Top = this.pictureBox1.Height;
this.hScrollBar1.Width = this.pictureBox1.Width;
g = System.Drawing.Graphics.FromHwnd(this.pictureBox1.Handle);
this.DrawImage(g);
}
private void pictureBox1_Click(object sender, System.EventArgs e)
{
}
private void menuItem2_Click(object sender, System.EventArgs e)
{
System.Windows.Forms.DialogResult result = this.openFileDialog1.ShowDialog();
try
{
this.image = System.Drawing.Image.FromFile(this.openFileDialog1.FileName);
ReSize();
}
catch (Exception exception)
{
System.Windows.Forms.MessageBox.Show(exception.ToString());
}
}
private void DrawImage(Graphics g)
{
if (image == null)
{
return;
}
Point[] points = new Point[3];
Rectangle rectangle = new Rectangle();
rectangle.Width = image.Width;
rectangle.Height = image.Height;
if (this.hScrollBar1.Visible == false)
{
rectangle.X = 0;
}
else
{
rectangle.X = this.hScrollBar1.Value;
}
if (this.vScrollBar1.Visible == false)
{
rectangle.Y = 0;
}
else
{
rectangle.Y = this.vScrollBar1.Value;
}
points[0].X = 0;
points[0].Y = 0;
points[1].X = image.Width;
points[1].Y = 0;
points[2].X = 0;
points[2].Y = image.Height;
g.DrawImage(image, points, rectangle, GraphicsUnit.Pixel);
}
private void vScrollBar1_ValueChanged(object sender, System.EventArgs e)
{
System.Drawing.Graphics g;
g = System.Drawing.Graphics.FromHwnd(this.pictureBox1.Handle);
this.DrawImage(g);
}
private void hScrollBar1_ValueChanged(object sender, System.EventArgs e)
{
System.Drawing.Graphics g;
g = System.Drawing.Graphics.FromHwnd(this.pictureBox1.Handle);
this.DrawImage(g);
}
}
}
UnZipExtractMem
test/test2.jpgを含む複数のファイルを圧縮したアーカイブの中のtest2.jpgだけを
メモリーに解凍するサンプルです。
lpwAttrが取得できなかったので、不完全です。
using System;
using System.Runtime.InteropServices;
namespace UnZipExtractMem
{
///
/// Class1 の概要の説明です。
///
class Class1
{
[DllImport("UNZIP32", CharSet=CharSet.Ansi )]
public static extern System.Int32 UnZipExtractMem(IntPtr hWnd,
string szCmdLine,
byte[] szBuffer,
System.UInt32 dwSize,
ref System.Int32 lpTime,
IntPtr lpwAttr,
ref System.UInt32 lpdwWriteSize
);
///
/// アプリケーションのメイン エントリ ポイントです。
///
[STAThread]
static void Main(string[] args)
{
string szCmdLine;
byte[] szBuffer = new byte[100];
System.UInt32 dwSize = 100;
System.Int32 lpTime = new System.Int32();
System.UInt16 lpwAttr = new System.UInt16();
System.UInt32 lpdwWriteSize = new System.UInt32();
szCmdLine = @"c:\test.ZIP test/test2.jpg";
System.Int32 int32 = new System.Int32();
UnZipExtractMem((System.IntPtr)null, szCmdLine, szBuffer, dwSize, ref lpTime, (System.IntPtr)null, ref lpdwWriteSize);
//
// TODO: アプリケーションを開始するコードをここに追加してください。
//
}
}
}
Enum.Parse
Enum.Parseの使い方です。
using System;
namespace Enum
{
///
/// Class1 の概要の説明です。
///
class Class1
{
enum TestEnum
{
a,
b,
c
};
///
/// アプリケーションのメイン エントリ ポイントです。
///
[STAThread]
static void Main(string[] args)
{
TestEnum testEnum;
testEnum = (TestEnum)System.Enum.Parse(typeof(TestEnum), "a");
//
// TODO: アプリケーションを開始するコードをここに追加してください。
//
}
}
}
2008년 9월 17일 수요일
탑~! 블로그 - ADO.NET DB연결 문자열
[C#]
ADO.NET DB연결 문자열 - System.Data.SqlClient
www.wssplex.net
SQL Server .NET Data Provider
System.Data.SqlClient
Using C#:
using System.Data.SqlClient;
...
SqlConnection oSQLConn = new SqlConnection();
oSQLConn.ConnectionString = "Data Source=(local);" +
"Initial Catalog=myDatabaseName;" +
"Integrated Security=SSPI";
oSQLConn.Open();
Using VB.NET:
Imports System.Data.SqlClient
...
Dim oSQLConn As SqlConnection = New SqlConnection()
oSQLConn.ConnectionString = "Data Source=(local);" & _
"Initial Catalog=myDatabaseName;" & _
"Integrated Security=SSPI"
oSQLConn.Open()
원격서버 IP 연결:
oSQLConn.ConnectionString = "Network Library=DBMSSOCN;" & _
"Data Source=xxx.xxx.xxx.xxx,1433;" & _
"Initial Catalog=myDatabaseName;" & _
"User ID=myUsername;" & _
"Pas sword=myPassword"
* TCP/IP 연결시, Network Library=DBMSSOCN. 암호화시 Encrypt=yes
연결시 선택가능한 네트워크 프로토콜:
Name Network library
dbnmpntw Win32 Named Pipes *
dbmssocn Win32 Winsock TCP/IP *
dbmsspxn Win32 SPX/IPX
dbmsvinn Win32 Banyan Vines
dbmsrpcn Win32 Multi-Protocol (Windows RPC) *
좀더 자세한 사항은 MSDN 을 참조하세요.
1. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdrefsqlprovspec.asp
2. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmscadoproperties.asp
ADO.NET DB연결 문자열 - Oracle.DataAccess.Client
www.wssplex.net
Oracle .NET Data Provider - From Oracle
Oracle.DataAccess.Client
using Oracle.DataAccess.Client;
...
OracleConnection oOracleConn = new OracleConnection();
oOracleConn.ConnectionString = "Data Source=MyOracleServerName;" +
"Integrated Security=SSPI";
oOracleConn.Open();
* 오라클에서 제공하는 드라이버를 이용하는 경우입니다.
ADO.NET DB연결 문자열 - System.Data.OracleClient
www.wssplex.net
Oracle .NET Data Provider - From Microsoft
System.Data.OracleClient
using System.Data.OracleClient;
OracleConnection oOracleConn = new OracleConnection();
oOracleConn.ConnectionString = "Data Source=Oracle8i;" +
"Integrated Security=SSPI";
oOracleConn.Open();
*오라클 클라이언트가 최소한 8.1.7 이상은 설치되어야 합니다.
ADO.NET DB연결 문자열 - System.Data.OleDb
www.wssplex.net
For IBM AS/400 OLE DB Provider
' VB.NET
Imports System.Data.OleDb
...
Dim oOleDbConnection As OleDbConnection
Dim sConnString As String = _
"Provider=IBMDA400.DataSource.1;" & _
"Data source=myAS400DbName;" & _
"User Id=myUsername;" & _
"Password=myPassword"
oOleDbConnection = New OleDb.OleDbConnection(sConnString)
oOleDbConnection.Open()
For JET OLE DB Provider
' VB.NET
Imports System.Data.OleDb
...
Dim oOleDbConnection As OleDbConnection
Dim sConnString As String = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\myPath\myJet.mdb;" & _
"User ID=Admin;" & _
"Password="
oOleDbConnection = New OleDb.OleDbConnection(sConnString)
oOleDbConnection.Open()
For Oracle OLE DB Provider
' VB.NET
Imports System.Data.OleDb
...
Dim oOleDbConnection As OleDbConnection
Dim sConnString As String = _
"Provider=OraOLEDB.Oracle;" & _
"Data Source=MyOracleDB;" & _
"User ID=myUsername;" & _
"Password=myPassword"
oOleDbConnection = New OleDb.OleDbConnection(sConnString)
oOleDbConnection.Open()
For SQL Server OLE DB Provider
' VB.NET
Imports System.Data.OleDb
...
Dim oOleDbConnection As OleDbConnection
Dim sConnString As String = _
"Provider=sqloledb;" & _
"Data Source=myServerName;" & _
"Initial Catalog=myDatabaseName;" & _
"User Id=myUsername;" & _
"Password=myPassword"
oOleDbConnection = New OleDb.OleDbConnection(sConnString)
oOleDbConnection.Open()
For Sybase ASE OLE DB Provider
' VB.NET
Imports System.Data.OleDb
...
Dim oOleDbConnection As OleDbConnection
Dim sConnString As String = _
"Provider=Sybase ASE OLE DB Provider;" & _
"Data Source=MyDataSourceName;" & _
"Server Name=MyServerName;" & _
"Database=MyDatabaseName;" & _
"User ID=myUsername;" & _
"Password=myPassword"
oOleDbConnection = New OleDb.OleDbConnection(sConnString)
oOleDbConnection.Open()
ADO.NET DB연결 문자열 - System.Data.ODBC
www.wssplex.net
For SQL Server ODBC Driver
' VB.NET
Imports System.Data.Odbc
...
Dim oODBCConnection As OdbcConnection
Dim sConnString As String = _
"Driver={SQL Server};" & _
"Server=MySQLServerName;" & _
"Database=MyDatabaseName;" & _
"Uid=MyUsername;" & _
"Pwd=MyPassword"
oODBCConnection = New Odbc.OdbcConnection(sConnString)
oODBCConnection.Open()
For Oracle ODBC Driver
' VB.NET
Imports System.Data.Odbc
...
Dim oODBCConnection As OdbcConnection
Dim sConnString As String = _
"Driver={Microsoft ODBC for Oracle};" & _
"Server=OracleServer.world;" & _
"Uid=myUsername;" & _
"Pwd=myPassword"
oODBCConnection = New Odbc.OdbcConnection(sConnString)
oODBCConnection.Open()
For Access (JET) ODBC Driver
' VB.NET
Imports System.Data.Odbc
...
Dim oODBCConnection As OdbcConnection
Dim sConnString As String = _
"Driver={Microsoft Access Driver (*.mdb)};" & _
"Dbq=c:\somepath\mydb.mdb;" & _
"Uid=Admin;" & _
"Pwd="
oODBCConnection = New Odbc.OdbcConnection(sConnString)
oODBCConnection.Open()
For Sybase System 11 ODBC Driver
' VB.NET
Imports System.Data.Odbc
...
Dim oODBCConnection As OdbcConnection
Dim sConnString As String = _
"Driver={Sybase System 11};" & _
"SRVR=mySybaseServerName;" & _
"DB=myDatabaseName;" & _
"UID=myUsername;" & _
"PWD=myPassword"
oODBCConnection = New OdbcConnection(sConnString)
oODBCConnection.Open()
For all other ODBC Drivers
' VB.NET
Imports System.Data.Odbc
...
Dim oODBCConnection As OdbcConnection
Dim sConnString As String = "Dsn=myDsn;" & _
"Uid=myUsername;" & _
"Pwd=myPassword"
oODBCConnection = New Odbc.OdbcConnection(sConnString)
oODBCConnection.Open()
ADO.NET DB연결 문자열 - CoreLab.MySql
www.wssplex.net
MySQLDirect .NET Data Provider
CoreLab.MySql
using CoreLab.MySql;
MySqlConnection oMySqlConn = new MySqlConnection();
oMySqlConn.ConnectionString = "User ID=myUsername;" +
"Password=myPassword;" +
"Host=localhost;" +
"Port=3306;" +
"Database=myDatabaseName;" +
"Direct=true;" +
"Protocol=TCP;" +
"Compress=false;" +
"Pooling=true;" +
"Min Pool Size=0;" +
"Max Pool Size=100;" +
"Connection Lifetime=0";
oMySqlConn.Open();
[드라이버컴포넌트 다운로드]
ADO.NET DB연결 문자열 - Sybase.Data.AseClient
www.wssplex.net
Adaptive Server Enterprise (ASE) .NET Data Provider
Sybase.Data.AseClient
using Sybase.Data.AseClient;
...
AseConnection oAseConn = new AseConnection();
oAseConn.ConnectionString = "Data Source=(local);" +
"Initial Catalog=myDatabaseName;" +
"User ID=myUsername;" +
"Password=myPassword"
oAseConn.Open();
ADO.NET DB연결 문자열 - System.Data.SqlClient
www.wssplex.net
SQL Server .NET Data Provider
System.Data.SqlClient
Using C#:
using System.Data.SqlClient;
...
SqlConnection oSQLConn = new SqlConnection();
oSQLConn.ConnectionString = "Data Source=(local);" +
"Initial Catalog=myDatabaseName;" +
"Integrated Security=SSPI";
oSQLConn.Open();
Using VB.NET:
Imports System.Data.SqlClient
...
Dim oSQLConn As SqlConnection = New SqlConnection()
oSQLConn.ConnectionString = "Data Source=(local);" & _
"Initial Catalog=myDatabaseName;" & _
"Integrated Security=SSPI"
oSQLConn.Open()
원격서버 IP 연결:
oSQLConn.ConnectionString = "Network Library=DBMSSOCN;" & _
"Data Source=xxx.xxx.xxx.xxx,1433;" & _
"Initial Catalog=myDatabaseName;" & _
"User ID=myUsername;" & _
"Pas sword=myPassword"
* TCP/IP 연결시, Network Library=DBMSSOCN. 암호화시 Encrypt=yes
연결시 선택가능한 네트워크 프로토콜:
Name Network library
dbnmpntw Win32 Named Pipes *
dbmssocn Win32 Winsock TCP/IP *
dbmsspxn Win32 SPX/IPX
dbmsvinn Win32 Banyan Vines
dbmsrpcn Win32 Multi-Protocol (Windows RPC) *
좀더 자세한 사항은 MSDN 을 참조하세요.
1. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdrefsqlprovspec.asp
2. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmscadoproperties.asp
ADO.NET DB연결 문자열 - Oracle.DataAccess.Client
www.wssplex.net
Oracle .NET Data Provider - From Oracle
Oracle.DataAccess.Client
using Oracle.DataAccess.Client;
...
OracleConnection oOracleConn = new OracleConnection();
oOracleConn.ConnectionString = "Data Source=MyOracleServerName;" +
"Integrated Security=SSPI";
oOracleConn.Open();
* 오라클에서 제공하는 드라이버를 이용하는 경우입니다.
ADO.NET DB연결 문자열 - System.Data.OracleClient
www.wssplex.net
Oracle .NET Data Provider - From Microsoft
System.Data.OracleClient
using System.Data.OracleClient;
OracleConnection oOracleConn = new OracleConnection();
oOracleConn.ConnectionString = "Data Source=Oracle8i;" +
"Integrated Security=SSPI";
oOracleConn.Open();
*오라클 클라이언트가 최소한 8.1.7 이상은 설치되어야 합니다.
ADO.NET DB연결 문자열 - System.Data.OleDb
www.wssplex.net
For IBM AS/400 OLE DB Provider
' VB.NET
Imports System.Data.OleDb
...
Dim oOleDbConnection As OleDbConnection
Dim sConnString As String = _
"Provider=IBMDA400.DataSource.1;" & _
"Data source=myAS400DbName;" & _
"User Id=myUsername;" & _
"Password=myPassword"
oOleDbConnection = New OleDb.OleDbConnection(sConnString)
oOleDbConnection.Open()
For JET OLE DB Provider
' VB.NET
Imports System.Data.OleDb
...
Dim oOleDbConnection As OleDbConnection
Dim sConnString As String = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\myPath\myJet.mdb;" & _
"User ID=Admin;" & _
"Password="
oOleDbConnection = New OleDb.OleDbConnection(sConnString)
oOleDbConnection.Open()
For Oracle OLE DB Provider
' VB.NET
Imports System.Data.OleDb
...
Dim oOleDbConnection As OleDbConnection
Dim sConnString As String = _
"Provider=OraOLEDB.Oracle;" & _
"Data Source=MyOracleDB;" & _
"User ID=myUsername;" & _
"Password=myPassword"
oOleDbConnection = New OleDb.OleDbConnection(sConnString)
oOleDbConnection.Open()
For SQL Server OLE DB Provider
' VB.NET
Imports System.Data.OleDb
...
Dim oOleDbConnection As OleDbConnection
Dim sConnString As String = _
"Provider=sqloledb;" & _
"Data Source=myServerName;" & _
"Initial Catalog=myDatabaseName;" & _
"User Id=myUsername;" & _
"Password=myPassword"
oOleDbConnection = New OleDb.OleDbConnection(sConnString)
oOleDbConnection.Open()
For Sybase ASE OLE DB Provider
' VB.NET
Imports System.Data.OleDb
...
Dim oOleDbConnection As OleDbConnection
Dim sConnString As String = _
"Provider=Sybase ASE OLE DB Provider;" & _
"Data Source=MyDataSourceName;" & _
"Server Name=MyServerName;" & _
"Database=MyDatabaseName;" & _
"User ID=myUsername;" & _
"Password=myPassword"
oOleDbConnection = New OleDb.OleDbConnection(sConnString)
oOleDbConnection.Open()
ADO.NET DB연결 문자열 - System.Data.ODBC
www.wssplex.net
For SQL Server ODBC Driver
' VB.NET
Imports System.Data.Odbc
...
Dim oODBCConnection As OdbcConnection
Dim sConnString As String = _
"Driver={SQL Server};" & _
"Server=MySQLServerName;" & _
"Database=MyDatabaseName;" & _
"Uid=MyUsername;" & _
"Pwd=MyPassword"
oODBCConnection = New Odbc.OdbcConnection(sConnString)
oODBCConnection.Open()
For Oracle ODBC Driver
' VB.NET
Imports System.Data.Odbc
...
Dim oODBCConnection As OdbcConnection
Dim sConnString As String = _
"Driver={Microsoft ODBC for Oracle};" & _
"Server=OracleServer.world;" & _
"Uid=myUsername;" & _
"Pwd=myPassword"
oODBCConnection = New Odbc.OdbcConnection(sConnString)
oODBCConnection.Open()
For Access (JET) ODBC Driver
' VB.NET
Imports System.Data.Odbc
...
Dim oODBCConnection As OdbcConnection
Dim sConnString As String = _
"Driver={Microsoft Access Driver (*.mdb)};" & _
"Dbq=c:\somepath\mydb.mdb;" & _
"Uid=Admin;" & _
"Pwd="
oODBCConnection = New Odbc.OdbcConnection(sConnString)
oODBCConnection.Open()
For Sybase System 11 ODBC Driver
' VB.NET
Imports System.Data.Odbc
...
Dim oODBCConnection As OdbcConnection
Dim sConnString As String = _
"Driver={Sybase System 11};" & _
"SRVR=mySybaseServerName;" & _
"DB=myDatabaseName;" & _
"UID=myUsername;" & _
"PWD=myPassword"
oODBCConnection = New OdbcConnection(sConnString)
oODBCConnection.Open()
For all other ODBC Drivers
' VB.NET
Imports System.Data.Odbc
...
Dim oODBCConnection As OdbcConnection
Dim sConnString As String = "Dsn=myDsn;" & _
"Uid=myUsername;" & _
"Pwd=myPassword"
oODBCConnection = New Odbc.OdbcConnection(sConnString)
oODBCConnection.Open()
ADO.NET DB연결 문자열 - CoreLab.MySql
www.wssplex.net
MySQLDirect .NET Data Provider
CoreLab.MySql
using CoreLab.MySql;
MySqlConnection oMySqlConn = new MySqlConnection();
oMySqlConn.ConnectionString = "User ID=myUsername;" +
"Password=myPassword;" +
"Host=localhost;" +
"Port=3306;" +
"Database=myDatabaseName;" +
"Direct=true;" +
"Protocol=TCP;" +
"Compress=false;" +
"Pooling=true;" +
"Min Pool Size=0;" +
"Max Pool Size=100;" +
"Connection Lifetime=0";
oMySqlConn.Open();
[드라이버컴포넌트 다운로드]
ADO.NET DB연결 문자열 - Sybase.Data.AseClient
www.wssplex.net
Adaptive Server Enterprise (ASE) .NET Data Provider
Sybase.Data.AseClient
using Sybase.Data.AseClient;
...
AseConnection oAseConn = new AseConnection();
oAseConn.ConnectionString = "Data Source=(local);" +
"Initial Catalog=myDatabaseName;" +
"User ID=myUsername;" +
"Password=myPassword"
oAseConn.Open();
2008년 9월 9일 화요일
どきどき 1 - goo 辞書
どきどき 1
(副)スル
運動・恐怖・驚き・期待などのため、心臓が激しく打つさま。
「―しながら発表を待つ」「胸が―する」「心臓が―(と)打つ」
わくわく 1
(副)スル
期待や喜びで心がはずんで落ち着かないさま。
「―(と)しながら、登場を待つ」
(副)スル
運動・恐怖・驚き・期待などのため、心臓が激しく打つさま。
「―しながら発表を待つ」「胸が―する」「心臓が―(と)打つ」
わくわく 1
(副)スル
期待や喜びで心がはずんで落ち着かないさま。
「―(と)しながら、登場を待つ」
2008년 9월 1일 월요일
2008년 8월 13일 수요일
중고차 사는법
▶ 계기판 조작
조작된 기계식 계기판은 숫자 배열이 일치하지 않고 서로 어긋나 있다. 계기판과 차체를
연결하는 볼트에 빛을 비추면 흠집이 나 있다. 주행거리를 속이기 위해선 반드시 볼트를
풀어야 하기 때문이다.
전자식 계기판은 기계식과 달리 계기판을 떼어 수치를 수정할 수 없다.
대신 정상 주행거리보다 짧은 중고계판으로 교환하는 수법이 자주 사용된다. 따라서
연식에 비해 지나치게 주행거리가 짧은 건 아닌 지를 살펴본다. 1년에 2만㎞ 정도를
정상 주행거리로 본다.
▶ 판금 및 도색
차체의 색을 새로 칠하면 페인트 방울들이 튀기 마련이다. 펜더의 경우 바퀴를 덮고 있는
부위에 페인트 방울이 묻기 쉽다. 문짝은 유리 근처에 있는 고무패킹에 칠 자국이 남는다.
보닛이 꺾어지는 부분을 손가락으로 만지면 모래가루를 만지는 것처럼 까칠까칠하다.
판금작업을 거친 차는 태양을 마주하고 차 표면을 45도 각도로 보면 빗살들이 보인다.
기계로 판금한 경우 원모양의 자국이 남는다.
그러나 페인트칠이나 판금자국이 있다고 무조건 사고차라 단정하는 무리다.
흠집을 제거해 차를 보기 좋게 가꾸려고 도색이나 판금을 하는 차 주인도 많아서다.
▶보닛 교환
승용차의 앞부분은 엔진룸 등이 있는 중요 부위로 차를 살 때 가장 꼼꼼하게
살펴봐야 하는 부위다.
사고로 자주 교환되는 부위는 보닛(엔진룸을 감싼 덮개)이다.
보닛이 원래의 것이 아니라면 사고차일 가능성이 매우 크다.
보닛을 열고 옆선을 보면 안쪽으로 철판이 휘어지는 부분이 보인다.
끝나는 부분에 실리콘 처리가 돼 있고 손톱으로 찍었을 때 손톱자국이 곧
사라지면 교환되지 않은 것으로 보면 된다.
그러나 교환사실을 숨겨 차 값을 높이기 위해 실리콘 처리작업을 따로 해 사고 흔적을
감추는 악덕업자도 있다.
이런 차의 실리콘은 자연광에 비춰보면 차체와 실리콘의 색이 다르고 손톱으로 누르면
지나치게 딱딱하거나 무르다.
차의 유리를 지탱하는 고무패킹을 손톱으로 눌렀을 때 느껴지는 강도와 비슷하다.
단 제작사에 따라 실리콘이 있는 부위와 강도가 차이난다.
▶ 지지패널 수리
보닛이 교환됐다면 차의 패널(라디에이터를 받치고 있는 가로로 된 쇠빔)을 살펴봐야 한다.
패널이 수리됐다면 차체에 가해진 충격이 위험 수준에 이르렀다고 판단할 수 있다.
보닛을 열면 헤드라이트가 양 옆으로 꺾어지는 부분에 두개의 쇠 빔이 90도
각도로 마주보고 있다.
두 개의 쇠 빔을 연결할 때 실리콘을 쏜 뒤 볼트를 연결한다. 실리콘에 이상이 없는 지,
볼트를 풀었던 흔적이 없는 지를 점검해본다.
▶ 문짝 교환
문짝 교체 여부는 실리콘으로 알 수 있다.
다른 문짝의 실리콘과 같은 색깔, 비슷한 모양인지 확인한다.
또 공장에서 출고된 문짝으로 바꿨을 가능성도 있으므로 차체와 연결된 볼트를 살펴봐야 한다.
문을 활짝 열고 차체와 연결하는 고리를 보면 사람 손으로 닿을 수 없는 부분까지 물청소한
것처럼 깨끗하면 의심할 필요가 있다. 무사고차의 문 연결고리를
물청소하는 경우는 거의 없어서다.
단 외제차는 교환되는 문에도 실리콘이 있으므로 비전문가가 판단하기는 어렵다.
▶ 앞 펜더 교체
앞바퀴를 감싸고 있는 부분이 펜더다.
펜더 상태를 알아보기 위해선 앞문과 보닛을 열어야 한다.
보닛 안쪽에 지지패널을 직각으로 해서 차체와 같은 방향에 펜더를 연결시켜주는 볼트가 있다.
볼트가 페인트에 묻어 있으면 정상이고 따로따로면 교환된 것이다.
또 앞문을 열면 펜더를 잡아주는 볼트가 있다. 이 볼트 역시 페인트로 덮여 있으면 정상이다.
▶ 뒤 펜더와 트렁크 교체
많은 소비자들이 차의 앞부분에는 많은 신경을 쓰지만 트렁크 안쪽까지는 보지 않는다.
그러나 주유구가 있는 뒤 펜더나 트렁크 부분에 사고가 나면 차체의 균형이 깨져
잡음과 잔고장이 발생하므로, 꼼꼼하게 살펴봐야 한다.
트렁크를 열면 고무패킹이 보인다. 그 안쪽을 벗겨보면 철판 모서리가 날카롭게 날이 서 있다.
그 부분이 매끄럽다면 트렁크 부위에 사고가 없었던 것으로 판단할 수 있다.
조작된 기계식 계기판은 숫자 배열이 일치하지 않고 서로 어긋나 있다. 계기판과 차체를
연결하는 볼트에 빛을 비추면 흠집이 나 있다. 주행거리를 속이기 위해선 반드시 볼트를
풀어야 하기 때문이다.
전자식 계기판은 기계식과 달리 계기판을 떼어 수치를 수정할 수 없다.
대신 정상 주행거리보다 짧은 중고계판으로 교환하는 수법이 자주 사용된다. 따라서
연식에 비해 지나치게 주행거리가 짧은 건 아닌 지를 살펴본다. 1년에 2만㎞ 정도를
정상 주행거리로 본다.
▶ 판금 및 도색
차체의 색을 새로 칠하면 페인트 방울들이 튀기 마련이다. 펜더의 경우 바퀴를 덮고 있는
부위에 페인트 방울이 묻기 쉽다. 문짝은 유리 근처에 있는 고무패킹에 칠 자국이 남는다.
보닛이 꺾어지는 부분을 손가락으로 만지면 모래가루를 만지는 것처럼 까칠까칠하다.
판금작업을 거친 차는 태양을 마주하고 차 표면을 45도 각도로 보면 빗살들이 보인다.
기계로 판금한 경우 원모양의 자국이 남는다.
그러나 페인트칠이나 판금자국이 있다고 무조건 사고차라 단정하는 무리다.
흠집을 제거해 차를 보기 좋게 가꾸려고 도색이나 판금을 하는 차 주인도 많아서다.
▶보닛 교환
승용차의 앞부분은 엔진룸 등이 있는 중요 부위로 차를 살 때 가장 꼼꼼하게
살펴봐야 하는 부위다.
사고로 자주 교환되는 부위는 보닛(엔진룸을 감싼 덮개)이다.
보닛이 원래의 것이 아니라면 사고차일 가능성이 매우 크다.
보닛을 열고 옆선을 보면 안쪽으로 철판이 휘어지는 부분이 보인다.
끝나는 부분에 실리콘 처리가 돼 있고 손톱으로 찍었을 때 손톱자국이 곧
사라지면 교환되지 않은 것으로 보면 된다.
그러나 교환사실을 숨겨 차 값을 높이기 위해 실리콘 처리작업을 따로 해 사고 흔적을
감추는 악덕업자도 있다.
이런 차의 실리콘은 자연광에 비춰보면 차체와 실리콘의 색이 다르고 손톱으로 누르면
지나치게 딱딱하거나 무르다.
차의 유리를 지탱하는 고무패킹을 손톱으로 눌렀을 때 느껴지는 강도와 비슷하다.
단 제작사에 따라 실리콘이 있는 부위와 강도가 차이난다.
▶ 지지패널 수리
보닛이 교환됐다면 차의 패널(라디에이터를 받치고 있는 가로로 된 쇠빔)을 살펴봐야 한다.
패널이 수리됐다면 차체에 가해진 충격이 위험 수준에 이르렀다고 판단할 수 있다.
보닛을 열면 헤드라이트가 양 옆으로 꺾어지는 부분에 두개의 쇠 빔이 90도
각도로 마주보고 있다.
두 개의 쇠 빔을 연결할 때 실리콘을 쏜 뒤 볼트를 연결한다. 실리콘에 이상이 없는 지,
볼트를 풀었던 흔적이 없는 지를 점검해본다.
▶ 문짝 교환
문짝 교체 여부는 실리콘으로 알 수 있다.
다른 문짝의 실리콘과 같은 색깔, 비슷한 모양인지 확인한다.
또 공장에서 출고된 문짝으로 바꿨을 가능성도 있으므로 차체와 연결된 볼트를 살펴봐야 한다.
문을 활짝 열고 차체와 연결하는 고리를 보면 사람 손으로 닿을 수 없는 부분까지 물청소한
것처럼 깨끗하면 의심할 필요가 있다. 무사고차의 문 연결고리를
물청소하는 경우는 거의 없어서다.
단 외제차는 교환되는 문에도 실리콘이 있으므로 비전문가가 판단하기는 어렵다.
▶ 앞 펜더 교체
앞바퀴를 감싸고 있는 부분이 펜더다.
펜더 상태를 알아보기 위해선 앞문과 보닛을 열어야 한다.
보닛 안쪽에 지지패널을 직각으로 해서 차체와 같은 방향에 펜더를 연결시켜주는 볼트가 있다.
볼트가 페인트에 묻어 있으면 정상이고 따로따로면 교환된 것이다.
또 앞문을 열면 펜더를 잡아주는 볼트가 있다. 이 볼트 역시 페인트로 덮여 있으면 정상이다.
▶ 뒤 펜더와 트렁크 교체
많은 소비자들이 차의 앞부분에는 많은 신경을 쓰지만 트렁크 안쪽까지는 보지 않는다.
그러나 주유구가 있는 뒤 펜더나 트렁크 부분에 사고가 나면 차체의 균형이 깨져
잡음과 잔고장이 발생하므로, 꼼꼼하게 살펴봐야 한다.
트렁크를 열면 고무패킹이 보인다. 그 안쪽을 벗겨보면 철판 모서리가 날카롭게 날이 서 있다.
그 부분이 매끄럽다면 트렁크 부위에 사고가 없었던 것으로 판단할 수 있다.
2008년 8월 10일 일요일
클리앙 - 자유게시판
우리나라 양궁 선수들이 세계대회를 어려워 하는게 아니라 국내 대회를 어려워 한다는 이야기는 들어보셨을 겁니다.
국가대표 발탁되는게 세계대회에서 우승하는것보다 더 힘든 게 사실입니다.
상황이 이렇다 보니 양궁협회가 한국 양궁을 견제하는 노력은 정말 눈물 겹습니다.
우리나라 양궁 팀은 많다면 많고 적다면 적습니다. 여자부가 15팀 남자부가 10팀인가 됩니다. 하지만 야구처럼 한팀에 수십명 있는게 아니라 적게는 4명 많게는 7-8명 정도뿐이죠.
초 중고교와 대학도 많지 않습니다. 하지만 그들의 질은 소수정예 그 자체입니다. 양궁을 많이 경험해 본 제가 봐도 국가대표 선수들과 그 밑의 급 선수들이 개인전이나 단체전을 해도 국가대표 선수들이 항상 이긴다는 보장을 못할 거라 생각합니다.
우리나라 양궁 국가대표는 보통 11월부터 종합선수권이라는 대회를 통해 남녀 8명 총 16명을 선발하여 동계훈련을 시키고 이듬해 세계대회 진출시 이 8명의 선수들 중 평가전을 통해 3-4명을 차출하는 방식으로 이루어집니다.
그런데 전년도 대표선수에서 탈락하는 선수가 반수 이상입니다. 그만큼 경쟁이 치열합니다.
여 자 양궁은 84년 올림픽부터 2004년 올림픽까지 개인전과 단체전 금메달을 석권했습니다. 그러면서도 개인전 금메달리스트의 얼굴은 계속 바뀌었고, 2회 연속 올림픽 출전한 선수조차 손에 꼽을 정도로 적습니다. 즉 국가대표 단골멤버라는 말이 양궁에서는 없다는 말이죠.
더욱이 놀랄만한 것은 금메달리스트들이 거의 고교시절에 금을 획득했다는 것입니다. 실업팀 선수들도 뛰어나지만 그보다 더 뛰어난 선수들이 고교시절부터 계속 배출되고 있다는게 실업팀 선수들에게는 엄청난 자극이요 부담입니다.
세계양궁대회의 규칙은 한국양궁의 금메달 석권을 저지하기 위해 계속 변경되고 있음에도 지금까지 한국의 아성을 무너뜨린 적이 없습니다.
자 이제 그들이 어떻게 견제를 해왔는가를 설명드립니다.
1. 원래 양궁경기 규칙은 30, 50, 60, 70미터(여자부, 남자부는 30, 50, 70, 90미터) 경기로 각 거리별로 36발씩 발사하여 1440점 만점으로 경기가 진행됩니다.
각 거리별(360점)로 메달이 있고, 거리별 점수를 합한 1440점 만점으로 개인전, 그리고 4명의 선수들 중 상위 3명의 점수 합계를 단체전으로 칩니다.
문제는 이렇게 할 경우 한두발 실수가 있어도 나머지에서 거의 보충이 되기 때문에 기량차와 실수가 거의 없는 한국선수들의 석권을 피할 수 없고 심한 경우 개인전 금은동, 거리별 금은동을 모두 한국선수가 따가는 문제(?)가 생깁니다.
2. 그래서 바뀐 방식이
거리별 메달을 모두 없애고 개인전과 단체전 메달만 올림픽에서 시상합니다.
그래도 결국 금메달은 모두 한국선수들 차지가 됩니다.
3. 그래서... 나온게
올림픽 라운드라는 방식입니다. 올림픽 라운드 방식은 1번에 나온 경기 방식으로 우선 경기를 치러 1위부터 64위까지 선별하고 1위와 64위, 2위와 63위 이런 식으로 토너먼트 경기를 펼칩니다.
이 런 방식에서는 1위부터 4위까지 선수들은 시드를 배정받아서 4강 이전에는 토너먼트 경기를 하지 않게 됩니다. 토너먼드 경기는 70미터만 12발을 쏴서 승패를 결정합니다. 결국 한국 선수들이 상대적으로 체격이 크지 않은 점을 이용하여 여자의 입장에서 보면 가장 먼거리 경기를 하여 체격 작은 한국 선수들에게 불리하게 만들고, 실수 한발만 있으면 한국 선수들은 무조건 떨어질 수 있게 만든 것입니다.
단체전도 마찬가지로 한선수가 3발씩 3번 즉 27발만 쏴서 토너먼트로 진행했습니다.
하지만 그래도 한국의 금메달 전선에는 이상이 없었습니다.
4. 그래서... 나온게
국가대표 선수들 수를 3명으로 줄인 것입니다. 개인전은 그렇다 치더라도 단체전에서만이라도 한국의 금을 한번 막아보자는 취지로 만든 방식입니다.
기 량차가 거의 없는 4명의 특급선수들로 구성된 한국 선수단에서 한명이 컨디션이 안 좋아도 3명의 점수만 합산하거나 3명을 골라 출전하는 단체전의 특성상 한국의 금메달 전선은 이상이 없었기에 아예 출전선수를 3명으로 줄여 한명의 컨디션 난조를 기대하는 우스운 방식이죠.
하지만 이 방법도 한국의 금메달 전선에 영향을 미치지 못했습니다.
5. 그래서... 나온게
10,9,8,7,6,5,4,3,2,1점으로 되어 있는 양궁 표적지를 1점과 0점으로만 구성된 표적지로 바꾼 것입니다.
어 차피 한국선수들은 특별한 경우가 아니면 8점 밖으로 점수가 나가지 않기 때문에 한국 선수들을 이길 방법이 없다고 본 협회에서 아예 하얀 표적지에 까만 주먹만한 검은 점하나 찍어 놓고 거기 들어가면 1점이고 안 들어가면 0점으로 처리하는 방식이죠. 참.. 갈데까지 간 방법입니다.
어차피 한국선수들은 실수를 해도 8점인데 외국 선수들은 잘 쏴야 8점이니 적수가 안 되니까 아예 표적지를 이판사판으로 바꾼 것입니다.
아직 올림픽에서는 도입이 안 되었는데 유니버시아드 대회에서는 이 방법으로 경기를 합니다.
그런데도 한국 선수들의 금메달 행진은 이어졌습니다.
6. 그래서... 나온게,
이번 아시안 게임처럼 퀄리피케이션 라운드(1440점 만점의 토너먼트 시드 배정 결정전)에서 통과한 선수들 중 절대로 한 국가에서 2명 이상 출전을 못하게 만든 것입니다.
즉 한국선수가 퀄리피케이션 라운드에서 1,2,3위를 해도 3위 선수는 출전을 못하게 하는 것입니다. 이 방법은 최소한 한개의 메달은 한국선수들이 차지 못하게 하는 효과와 함께, 3위를 한 한국 선수가 본선에 못 나가는 심리적인 타격을 이용하여 선수단 전체에 악영향을 미치는 교묘하고 치졸한 방법입니다.
그럼에도 한국선수들의 금메달 행진은 이어졌습니다.
7. 그래서... 나온게,
양궁경기장 자체를 바람이 아주 지저분하게 부는 장소에 배정하여 경기를 치르도록 하는 것입니다. 화살은 얇고 가볍기 때문에 바람이 많이 불면 실력과 관계없이 어이없이 날아가는 경우가 있습니다.
그럼에도 한국선수들은 바람이 부는 방향의 반대방향으로 오조준을 하여 10점에 넣는 기량을 자랑하기에 별로 효과가 없었습니다.
8. 그래서... 나온게
아예 경기장의 바람 방향이 한방향이 아니라 쏘는 곳과 표적지의 중간지점에서 바람이 수시로바뀌는 아주 요상한 장소에서 양궁경기를 개최합니다.
하 지만 이 방법은 오히려 한국선수들의 기량이 얼마나 뛰어난지 보여주는 계기가 될 뿐이었습니다. 다른 나라 선수들은 국가대표임에도 0점을 날리는 경기장에서 6점 이하로는 절대 날아가지 않는 한국선수들을 보고 외국 선수들과 기자들은 넋을 잃고 바라볼 수밖에 없었지요.
이유는 한국 여자선수들이 사용하는 활의 파운드가 훨씬 강하기 때문입니다.
무슨 말이냐면, 활의 강도를 파운드로 측정하는데 파운드가 강할수록 활을 당기기가 어려운 대신에 시위를 떠난 화살은 매우 빠르고 강하게 날아갑니다.
마치 사격에서 소총이 반동이 강하지 않으나 멀리 날아가지 못하지만 기관총은 반동이 강해 조준이 어려우나 먼 거리를 날아가는 것과 같은 이치죠.
즉 외국 선수들은 소총을 들고 사격하는데 한국선수들은 기관총을 람보처럼 들고 아무 흔들림없이 사격하는 효과를 보인다는 말입니다.
여기까지가 한국 양궁의 독주를 막기 위한 세계양궁계의 눈물겨운 노력의 역사입니다.
앞으로 어떤 묘책(?)이 나올지 한국은 휘파람 불며 기대하고 있는 형편입니다.
상황이 이렇다 보니 일부 국가의 대표선수들은 국내경기에 출전을 간청하여 출전하고 있는데 그들은 한국에 와서 오히려 비국가대표 선수들이 국가대표 선수들을 누르는 장면을 보고 더욱 기가 죽어 돌아가는 형편입니다.
실 례로 양궁 하면 박성현을 떠올리지만 박성현 선수가 국내대회에서 항상 메달을 독식하지는 못합니다. 국가대표 단골 멤버인 윤미진 선수는 노메달로 끝나는 대회가 많을 정도입니다. 심지어 윤미진 선수는 전국체전 출전을 위한 경기대표 선발전에도 뽑히지 못할뻔했습니다.(경기도에는 수원시청과 여주군청 두 팀이 있어서 대회를 통해 4위 이내 선수까지만 전국체전에 출전할 수 있습니다) 세계챔피언이 국내대회 출전을 걱정해야 하는 나라가 우리 나라입니다.
국가대표 선발전은 중학교 3학년부터 실업팀 선수들 가운데 일정 점수 이상을 한번이라도 기록한 선수들을 모아 놓고 뽑게 되는데 중학교 3학년 선수가 선배들을 제치고 국가대표가 되어 아시안 게임이나 올림픽에 출전하는 경우가 많이 있습니다.
현재 한국체대 선수인 임동현 선수는 고교 1학년때 아시안 게임에 출전하여 금메달을 획득했고, 고교 2년생 이특
영 선수는 고1 때 세계선수권에 출전하여 개인전 은과 단체전 금을 따기도 했습니다.
1992 년 국가대표였던 정재헌 선수는 모종의 사건에 휘말려 국가대표 영구제명의 징계를 받았는데 징계가 풀린 뒤 2005년 무려 13년이 흐른 뒤에 세계선수권 대회에 출전하여 금을 획득하며 건재를 알렸습니다. 하지만 정재헌 선수는 2006년에는 국가대표 선발전에서 꼴지에 가까운 성적으로 탈락하는 수모를 당하기도 했습니다.
07년 전국체전에서는 그간 전국대회에서 이름조차 내밀지 못했던 신성우라는 선수가 4관왕에 오르기도 했구요. 전국체전 기록이 세계 신기록보다 높게 나오기도 합니다(전국체전은 국내경기여서 공인세계기록으로 인정되지 않습니다)
전국체전 개인전 신기록이 120점만점입니다.
상황이 이 정도이니 국가대표 되기가 힘들지 국가대표 되고 나서는 선수들끼리 메달 색깔만 다를뿐 금메달은 따 놓은 당상이라는 어이없는 상황이 벌어지는 곳이 한국입니다.
정말 한국에서만 빚어지는 '상황'입니다.
참고로 한 가지 더 추가하자면 08년 국가대표에는 이제 고교에 입학하는 곽예지라는 선수가 최연소 국가대표 기록을 세웠습니다. 잘하면 이 선수가 올림픽에 나가 고1 금메달을 딸 수도 있겠네요.
올해도 한국 양궁의 선전을 기대하며, 이번 올림픽 기간에 다시 한번 지식 검색에 양궁에 관한 글들이 많기를 바랍니다.
출처 - 현재 양궁을 가르치고 있는 marine827님의 지식. (허락을 받고, 살짝 수정한 후 올립니다.)
출처 : [기타] marine827님의 지식.
국가대표 발탁되는게 세계대회에서 우승하는것보다 더 힘든 게 사실입니다.
상황이 이렇다 보니 양궁협회가 한국 양궁을 견제하는 노력은 정말 눈물 겹습니다.
우리나라 양궁 팀은 많다면 많고 적다면 적습니다. 여자부가 15팀 남자부가 10팀인가 됩니다. 하지만 야구처럼 한팀에 수십명 있는게 아니라 적게는 4명 많게는 7-8명 정도뿐이죠.
초 중고교와 대학도 많지 않습니다. 하지만 그들의 질은 소수정예 그 자체입니다. 양궁을 많이 경험해 본 제가 봐도 국가대표 선수들과 그 밑의 급 선수들이 개인전이나 단체전을 해도 국가대표 선수들이 항상 이긴다는 보장을 못할 거라 생각합니다.
우리나라 양궁 국가대표는 보통 11월부터 종합선수권이라는 대회를 통해 남녀 8명 총 16명을 선발하여 동계훈련을 시키고 이듬해 세계대회 진출시 이 8명의 선수들 중 평가전을 통해 3-4명을 차출하는 방식으로 이루어집니다.
그런데 전년도 대표선수에서 탈락하는 선수가 반수 이상입니다. 그만큼 경쟁이 치열합니다.
여 자 양궁은 84년 올림픽부터 2004년 올림픽까지 개인전과 단체전 금메달을 석권했습니다. 그러면서도 개인전 금메달리스트의 얼굴은 계속 바뀌었고, 2회 연속 올림픽 출전한 선수조차 손에 꼽을 정도로 적습니다. 즉 국가대표 단골멤버라는 말이 양궁에서는 없다는 말이죠.
더욱이 놀랄만한 것은 금메달리스트들이 거의 고교시절에 금을 획득했다는 것입니다. 실업팀 선수들도 뛰어나지만 그보다 더 뛰어난 선수들이 고교시절부터 계속 배출되고 있다는게 실업팀 선수들에게는 엄청난 자극이요 부담입니다.
세계양궁대회의 규칙은 한국양궁의 금메달 석권을 저지하기 위해 계속 변경되고 있음에도 지금까지 한국의 아성을 무너뜨린 적이 없습니다.
자 이제 그들이 어떻게 견제를 해왔는가를 설명드립니다.
1. 원래 양궁경기 규칙은 30, 50, 60, 70미터(여자부, 남자부는 30, 50, 70, 90미터) 경기로 각 거리별로 36발씩 발사하여 1440점 만점으로 경기가 진행됩니다.
각 거리별(360점)로 메달이 있고, 거리별 점수를 합한 1440점 만점으로 개인전, 그리고 4명의 선수들 중 상위 3명의 점수 합계를 단체전으로 칩니다.
문제는 이렇게 할 경우 한두발 실수가 있어도 나머지에서 거의 보충이 되기 때문에 기량차와 실수가 거의 없는 한국선수들의 석권을 피할 수 없고 심한 경우 개인전 금은동, 거리별 금은동을 모두 한국선수가 따가는 문제(?)가 생깁니다.
2. 그래서 바뀐 방식이
거리별 메달을 모두 없애고 개인전과 단체전 메달만 올림픽에서 시상합니다.
그래도 결국 금메달은 모두 한국선수들 차지가 됩니다.
3. 그래서... 나온게
올림픽 라운드라는 방식입니다. 올림픽 라운드 방식은 1번에 나온 경기 방식으로 우선 경기를 치러 1위부터 64위까지 선별하고 1위와 64위, 2위와 63위 이런 식으로 토너먼트 경기를 펼칩니다.
이 런 방식에서는 1위부터 4위까지 선수들은 시드를 배정받아서 4강 이전에는 토너먼트 경기를 하지 않게 됩니다. 토너먼드 경기는 70미터만 12발을 쏴서 승패를 결정합니다. 결국 한국 선수들이 상대적으로 체격이 크지 않은 점을 이용하여 여자의 입장에서 보면 가장 먼거리 경기를 하여 체격 작은 한국 선수들에게 불리하게 만들고, 실수 한발만 있으면 한국 선수들은 무조건 떨어질 수 있게 만든 것입니다.
단체전도 마찬가지로 한선수가 3발씩 3번 즉 27발만 쏴서 토너먼트로 진행했습니다.
하지만 그래도 한국의 금메달 전선에는 이상이 없었습니다.
4. 그래서... 나온게
국가대표 선수들 수를 3명으로 줄인 것입니다. 개인전은 그렇다 치더라도 단체전에서만이라도 한국의 금을 한번 막아보자는 취지로 만든 방식입니다.
기 량차가 거의 없는 4명의 특급선수들로 구성된 한국 선수단에서 한명이 컨디션이 안 좋아도 3명의 점수만 합산하거나 3명을 골라 출전하는 단체전의 특성상 한국의 금메달 전선은 이상이 없었기에 아예 출전선수를 3명으로 줄여 한명의 컨디션 난조를 기대하는 우스운 방식이죠.
하지만 이 방법도 한국의 금메달 전선에 영향을 미치지 못했습니다.
5. 그래서... 나온게
10,9,8,7,6,5,4,3,2,1점으로 되어 있는 양궁 표적지를 1점과 0점으로만 구성된 표적지로 바꾼 것입니다.
어 차피 한국선수들은 특별한 경우가 아니면 8점 밖으로 점수가 나가지 않기 때문에 한국 선수들을 이길 방법이 없다고 본 협회에서 아예 하얀 표적지에 까만 주먹만한 검은 점하나 찍어 놓고 거기 들어가면 1점이고 안 들어가면 0점으로 처리하는 방식이죠. 참.. 갈데까지 간 방법입니다.
어차피 한국선수들은 실수를 해도 8점인데 외국 선수들은 잘 쏴야 8점이니 적수가 안 되니까 아예 표적지를 이판사판으로 바꾼 것입니다.
아직 올림픽에서는 도입이 안 되었는데 유니버시아드 대회에서는 이 방법으로 경기를 합니다.
그런데도 한국 선수들의 금메달 행진은 이어졌습니다.
6. 그래서... 나온게,
이번 아시안 게임처럼 퀄리피케이션 라운드(1440점 만점의 토너먼트 시드 배정 결정전)에서 통과한 선수들 중 절대로 한 국가에서 2명 이상 출전을 못하게 만든 것입니다.
즉 한국선수가 퀄리피케이션 라운드에서 1,2,3위를 해도 3위 선수는 출전을 못하게 하는 것입니다. 이 방법은 최소한 한개의 메달은 한국선수들이 차지 못하게 하는 효과와 함께, 3위를 한 한국 선수가 본선에 못 나가는 심리적인 타격을 이용하여 선수단 전체에 악영향을 미치는 교묘하고 치졸한 방법입니다.
그럼에도 한국선수들의 금메달 행진은 이어졌습니다.
7. 그래서... 나온게,
양궁경기장 자체를 바람이 아주 지저분하게 부는 장소에 배정하여 경기를 치르도록 하는 것입니다. 화살은 얇고 가볍기 때문에 바람이 많이 불면 실력과 관계없이 어이없이 날아가는 경우가 있습니다.
그럼에도 한국선수들은 바람이 부는 방향의 반대방향으로 오조준을 하여 10점에 넣는 기량을 자랑하기에 별로 효과가 없었습니다.
8. 그래서... 나온게
아예 경기장의 바람 방향이 한방향이 아니라 쏘는 곳과 표적지의 중간지점에서 바람이 수시로바뀌는 아주 요상한 장소에서 양궁경기를 개최합니다.
하 지만 이 방법은 오히려 한국선수들의 기량이 얼마나 뛰어난지 보여주는 계기가 될 뿐이었습니다. 다른 나라 선수들은 국가대표임에도 0점을 날리는 경기장에서 6점 이하로는 절대 날아가지 않는 한국선수들을 보고 외국 선수들과 기자들은 넋을 잃고 바라볼 수밖에 없었지요.
이유는 한국 여자선수들이 사용하는 활의 파운드가 훨씬 강하기 때문입니다.
무슨 말이냐면, 활의 강도를 파운드로 측정하는데 파운드가 강할수록 활을 당기기가 어려운 대신에 시위를 떠난 화살은 매우 빠르고 강하게 날아갑니다.
마치 사격에서 소총이 반동이 강하지 않으나 멀리 날아가지 못하지만 기관총은 반동이 강해 조준이 어려우나 먼 거리를 날아가는 것과 같은 이치죠.
즉 외국 선수들은 소총을 들고 사격하는데 한국선수들은 기관총을 람보처럼 들고 아무 흔들림없이 사격하는 효과를 보인다는 말입니다.
여기까지가 한국 양궁의 독주를 막기 위한 세계양궁계의 눈물겨운 노력의 역사입니다.
앞으로 어떤 묘책(?)이 나올지 한국은 휘파람 불며 기대하고 있는 형편입니다.
상황이 이렇다 보니 일부 국가의 대표선수들은 국내경기에 출전을 간청하여 출전하고 있는데 그들은 한국에 와서 오히려 비국가대표 선수들이 국가대표 선수들을 누르는 장면을 보고 더욱 기가 죽어 돌아가는 형편입니다.
실 례로 양궁 하면 박성현을 떠올리지만 박성현 선수가 국내대회에서 항상 메달을 독식하지는 못합니다. 국가대표 단골 멤버인 윤미진 선수는 노메달로 끝나는 대회가 많을 정도입니다. 심지어 윤미진 선수는 전국체전 출전을 위한 경기대표 선발전에도 뽑히지 못할뻔했습니다.(경기도에는 수원시청과 여주군청 두 팀이 있어서 대회를 통해 4위 이내 선수까지만 전국체전에 출전할 수 있습니다) 세계챔피언이 국내대회 출전을 걱정해야 하는 나라가 우리 나라입니다.
국가대표 선발전은 중학교 3학년부터 실업팀 선수들 가운데 일정 점수 이상을 한번이라도 기록한 선수들을 모아 놓고 뽑게 되는데 중학교 3학년 선수가 선배들을 제치고 국가대표가 되어 아시안 게임이나 올림픽에 출전하는 경우가 많이 있습니다.
현재 한국체대 선수인 임동현 선수는 고교 1학년때 아시안 게임에 출전하여 금메달을 획득했고, 고교 2년생 이특
영 선수는 고1 때 세계선수권에 출전하여 개인전 은과 단체전 금을 따기도 했습니다.
1992 년 국가대표였던 정재헌 선수는 모종의 사건에 휘말려 국가대표 영구제명의 징계를 받았는데 징계가 풀린 뒤 2005년 무려 13년이 흐른 뒤에 세계선수권 대회에 출전하여 금을 획득하며 건재를 알렸습니다. 하지만 정재헌 선수는 2006년에는 국가대표 선발전에서 꼴지에 가까운 성적으로 탈락하는 수모를 당하기도 했습니다.
07년 전국체전에서는 그간 전국대회에서 이름조차 내밀지 못했던 신성우라는 선수가 4관왕에 오르기도 했구요. 전국체전 기록이 세계 신기록보다 높게 나오기도 합니다(전국체전은 국내경기여서 공인세계기록으로 인정되지 않습니다)
전국체전 개인전 신기록이 120점만점입니다.
상황이 이 정도이니 국가대표 되기가 힘들지 국가대표 되고 나서는 선수들끼리 메달 색깔만 다를뿐 금메달은 따 놓은 당상이라는 어이없는 상황이 벌어지는 곳이 한국입니다.
정말 한국에서만 빚어지는 '상황'입니다.
참고로 한 가지 더 추가하자면 08년 국가대표에는 이제 고교에 입학하는 곽예지라는 선수가 최연소 국가대표 기록을 세웠습니다. 잘하면 이 선수가 올림픽에 나가 고1 금메달을 딸 수도 있겠네요.
올해도 한국 양궁의 선전을 기대하며, 이번 올림픽 기간에 다시 한번 지식 검색에 양궁에 관한 글들이 많기를 바랍니다.
출처 - 현재 양궁을 가르치고 있는 marine827님의 지식. (허락을 받고, 살짝 수정한 후 올립니다.)
출처 : [기타] marine827님의 지식.
2008년 8월 6일 수요일
엠파스 블로그 - 세상과 맞닿은 나의공간
3박4일 제주 여행 일정...
아래는 제주 가족 여행을 가면서 알아본다고 펌해놓은 자료들이다...
우리 가족의 여행일정을 요약하면...
숙소는 한화리조트 콘도 (회사 복지 포인트로 사용) - 한 군데서 3박했다...
가능하다면, 부지런을 떨어서 한림쪽 1박, 서귀포 2박, 성산 3박... 이런 식으로 하는 것도 괜찮을 것 같다.
여행 코스는 : 첫날 : 하귀-애월 해안도로 ~ 한림공원 ~ 금릉석물원(여기는 시간이 없어서 패스)
2일차 : 코끼리랜드 ~ 서귀포 열기구 체험 ~ 이중섭 미술관 ~ 천지연폭포 ~ 남원큰엉 ~ 최남단 감귤 체험장 ~
산굼부리 ~ 숙소
3일차 : 봉개승마장 말타기 체험 ~ 김녕 미로공원 ~ 만장굴 ~ 섭지코지 ~ 신양해수욕장 해수욕 ~ 숙소
4일차 : 우도행 배 승선 9:30 (여름에는 배 시간도 특별히 없더라) ~ 2:30 배타고 나옴 ~ 공항
우도에서 해수욕을 꼭 해야한다... 하고수동 해수욕장... 정말 멋진 해수욕장이다...
맛집 : 첫날 저녁 - 제주시 백선횟집 따치회
2일차 - 만장굴 주차장 내 식당 (배가 고파 들어간 곳... 최악임... 제주도에 고발할까 생각중)
3일차 - 서귀포 진주식당 전복뚝배기
4일차 - 성산 오조해녀의 집 전복죽
만장굴 식당은 가지 마라는 뜻이고... 나머지 세 군데는 정말 강추... 안가보면 후회할듯...
콘도 - 아침, 저녁은 콘도에서 자체 해결... 지하 슈퍼에서 이것저것 사다가 해먹어도 괜찮았다...
-----------------------------------------------------------<펌 자료등>------------------------------
1일 : 한림공원 → 금능석물원 → 수월봉 → 송악산 → 용머리해안 → 산방산 → 소인국테마파크 → 숙소
2일 : 대포주상절리 → 여미지식물원 → 테디베어박물관 → 중문해수욕장 → 약천사 → 아프리카박물관 → 외돌개
→ 서귀포유람선 → 천지연폭포 → 숙소
3일 : 신영영화박물관 → 제주민속촌 → 섭지코지 → 성산일출봉 → 우도 → 숙소
4일 : 일출랜드 → 성읍민속마을 → 산굼부리 → 코끼리랜드 → 신비의도로 → 도두봉 → 용두암 → 공항
*성산일출봉 - 일출은 보기 힘들지만 올라서 보면 가슴이 시원해지는 곳
*섭지코지 강추!! - 올인 촬영지로 유명한 만큼 한 경치 하는 곳. 봄엔 유채꽃이 장관
여행동화 제휴 해양레포츠가 가능한 곳입니다.
(스노클링, 스쿠버다이빙,웨이크보드,바나나보트, 스피드 보트, 윈드서핑 등)
*표선민속촌 - 제주의 진짜 민속촌
*천지연 폭포 강추!! - 밤의 야경은 더욱 아름답습니다.
*소인국테마파크 - 내가 커 보이는 곳
우도 정보
- 가는방법 : 제주시▶성산 50분소요, 서귀포시▶성산 60분소요
- 선박 : 성산항에서 1시간간격으로 도항선 출발 07:30~18:00(성수기에는 증편)
- 요금(왕복요금-해상국립공원 입장료, 도항선료, 대합실료 포함) : 성인(5,500)
어린이(1,900)
- 요금(교통) : 자전거(1,000), 오토바이(3,300), 중소형차(25,000), 12승합차(29,400)
15인승합차(36,000)
- 기타 교통수단 : 우도셔틀버스(5,000), 자전거대여(문의-064)783-0516)
※기상변화에 유의하여 여행에 불편함이 없도록 사전에 미리 체크하세요
1일 : 공항 → 도깨비도로 → 1117+1112번 산록도로 드라이브 → 산굼부리 → 정의승마장 → 만장굴/미로공원
→ 비자림 → 성산일출봉 → 숙소
2일 : 우도여행 → 성산~신산리 해안도로 → 제주민속촌 → 신영영화박물관 → 남원큰엉해안산책로 → 천지연폭포
→ 숙소
3일 : 대포주상절리 → 중문관광단지(여미지,테디베어박물관) → 용머리해안 → 서귀포잠수함 → 마라도여행 → 송악산
→ 숙소
4일 : 하귀~해안도로 → 한림공원,협재해수욕장,비양도 → 분재예술원 → 오'설록 녹차 → 수월봉~대정해안도로 → 공항
*성산일출봉 - 일출은 보기 힘들지만 올라서 보면 가슴이 시원해지는 곳
*표선민속촌 - 제주의 진짜 민속촌
*남원 큰엉 해안경승지 강추!! - 대자연의 신비로움, 경이로움을 느낄 수 있는 곳
관광지 이동하시다 보면 관광지입장료를 구입하셔야 하는데요
현지에서 구입하시면 가격이 비싸거든요
미리 구매하시면 최고54% 저렴하게 이용 가능하십니다.
숙소,렌트카,패키지 예약시 추가5%할인
가능하니 이용해 보시는건 어떠세요? #관광지할인쿠폰
맛집은 메뉴별로 안내해드릴께요...^^&
:::추천음식점:::
*다미진 횟집 / 064-784-2208 / 표선해수욕장 근처(횟집)
*바스메(말고기전문) / 064-787-3930 / 성읍에서 제주시방면으로 3Km
*쉬는팡(흑돼지구이) / 064-738-5833 / 대유랜드 수렵장 방면으로 300m
*우리봉식당(뚝배기전문) / 064-782-0032 / 성산일출봉 주차장 맞은편
*물항식당(갈치요리) / 064-712-0550 / 신제주 그랜드호텔 4거리 서쪽으로 200m
*성미가든(토종닭요리) / 064-783-3279 / 교래리 미니미니랜드 4거리 동쪽으로 150m
*포구식당(조림,물회) / 064-787-1016 / 표선해수욕장 지나서 표선부두 근처
*축협한우전문식당(소고기) / 064-794-5658 / 소인국테마파크 지나 100미터 우측에 위치함
1일 : 공항 → 애월,하귀해안도로 → 금릉석물원 → 분재예술원 → 오설록녹차박물관 → 송악산 → 마라도여행
→ 용머리해안 → 숙소
2일 : 여미지식물원,테디베어박물관,중문관광단지 → 중문,대포해안 주상절리대 → 대포항 → 천지연폭포
→ 신영영화박물관 → 제주민속촌박물관 → 고성시,신산리 해안도로 → 숙소
3일 : 성산일출봉 → 우도여행 → 비자림 → 산굼부리 → 1117번 산록도로 드라이브 → 도깨비도로 → 목석원 → 공항
*성산일출봉 - 일출은 보기 힘들지만 올라서 보면 가슴이 시원해지는 곳
*표선민속촌 - 제주의 진짜 민속촌
*천지연 폭포 강추!! - 밤의 야경은 더욱 아름답습니다.
*오설록 녹차 박물관 강추!! - 녹차 밭의 변신
<제주도맛집정보-제주도맛집 꼭 가봐야 할 곳/ 안다녀오면 후회 할지도 모르는 제주도맛집리스트>
<제주시 추천맛집>
물금향토음식점 - 구수한 돌솥밥에 제주산 갈치조림 고등어조림 수협직판장옆 항상 재료가 신선해요
거상향토음식점-수면고등어로 유명한 제주도유명맛집 고등어회 함 드셔보세요..싱싱하고 쫄깃한 맛
제주본섬- 제주산 흑돼지로 유명한집...흑돼지와 와인이 어울릿듯한 인테리어에 고기맛이 정말 훌륭합니다
<중문관광단지 추천 맛집>
하영흑돼지구이- 대나무 숯과 참숯만 사용 흑돼지 맛이 정말 좋습니다 인테리어도 훌륭하구요
어부와 농부횟집- 스끼다시와 회맛에 감탄사가 나옵니다.
제주미향- 갈치조림 해물뚝배기 참 맛있습니다 내부시설이랑 직원서비스 정말 친절합니다
대포해송횟집- 자연산 활어회 전문집입니다. 대포앞바다를 보며 먹는 맛 고급일식집 인테리어에....
미스제주가든- 실속파를 위한 제주산 흑돼지 전문점 맛과 주인장 인심이 일품입니다
<서귀포 칠십리해안도로>
수라청횟집- 예전에 VJ특공대 나왔던집...일본인이 수라청횟집을 극찬하는 모습을 보고 저도 가보고 싶단 생각을 했습니다
숲섬갈치요리전문점- 갈치요리하면 서귀포에서 유명한 곳...함 드셔보세요 꼭이요
정방횟집-스끼다시와 회가 맛있는 곳.....푸짐 합니다
산록촌- 활어회와 제주산흑돼지를 동시에 즐길수 있는 이색맛집 절묘한 맛의 조화
팜빌리지바베큐 체험장-바다전망 정말 좋습니다 건물이 영화속 배모양이에요 그리고 제주해산물과 제주산흑돼지.소시지,전복 활소라등..거기다 생맥주
<제주서부>
차귀도 달래식당- 매운탕맛...뿐 아니라 국물이나 양념이 정말 맛있습니다 감탄사가 절로..그리고 차귀도달래배낚시하시면 잡은 고기도 조리해 드린데요
아래는 제주 가족 여행을 가면서 알아본다고 펌해놓은 자료들이다...
우리 가족의 여행일정을 요약하면...
숙소는 한화리조트 콘도 (회사 복지 포인트로 사용) - 한 군데서 3박했다...
가능하다면, 부지런을 떨어서 한림쪽 1박, 서귀포 2박, 성산 3박... 이런 식으로 하는 것도 괜찮을 것 같다.
여행 코스는 : 첫날 : 하귀-애월 해안도로 ~ 한림공원 ~ 금릉석물원(여기는 시간이 없어서 패스)
2일차 : 코끼리랜드 ~ 서귀포 열기구 체험 ~ 이중섭 미술관 ~ 천지연폭포 ~ 남원큰엉 ~ 최남단 감귤 체험장 ~
산굼부리 ~ 숙소
3일차 : 봉개승마장 말타기 체험 ~ 김녕 미로공원 ~ 만장굴 ~ 섭지코지 ~ 신양해수욕장 해수욕 ~ 숙소
4일차 : 우도행 배 승선 9:30 (여름에는 배 시간도 특별히 없더라) ~ 2:30 배타고 나옴 ~ 공항
우도에서 해수욕을 꼭 해야한다... 하고수동 해수욕장... 정말 멋진 해수욕장이다...
맛집 : 첫날 저녁 - 제주시 백선횟집 따치회
2일차 - 만장굴 주차장 내 식당 (배가 고파 들어간 곳... 최악임... 제주도에 고발할까 생각중)
3일차 - 서귀포 진주식당 전복뚝배기
4일차 - 성산 오조해녀의 집 전복죽
만장굴 식당은 가지 마라는 뜻이고... 나머지 세 군데는 정말 강추... 안가보면 후회할듯...
콘도 - 아침, 저녁은 콘도에서 자체 해결... 지하 슈퍼에서 이것저것 사다가 해먹어도 괜찮았다...
-----------------------------------------------------------<펌 자료등>------------------------------
1일 : 한림공원 → 금능석물원 → 수월봉 → 송악산 → 용머리해안 → 산방산 → 소인국테마파크 → 숙소
2일 : 대포주상절리 → 여미지식물원 → 테디베어박물관 → 중문해수욕장 → 약천사 → 아프리카박물관 → 외돌개
→ 서귀포유람선 → 천지연폭포 → 숙소
3일 : 신영영화박물관 → 제주민속촌 → 섭지코지 → 성산일출봉 → 우도 → 숙소
4일 : 일출랜드 → 성읍민속마을 → 산굼부리 → 코끼리랜드 → 신비의도로 → 도두봉 → 용두암 → 공항
*성산일출봉 - 일출은 보기 힘들지만 올라서 보면 가슴이 시원해지는 곳
*섭지코지 강추!! - 올인 촬영지로 유명한 만큼 한 경치 하는 곳. 봄엔 유채꽃이 장관
여행동화 제휴 해양레포츠가 가능한 곳입니다.
(스노클링, 스쿠버다이빙,웨이크보드,바나나보트, 스피드 보트, 윈드서핑 등)
*표선민속촌 - 제주의 진짜 민속촌
*천지연 폭포 강추!! - 밤의 야경은 더욱 아름답습니다.
*소인국테마파크 - 내가 커 보이는 곳
우도 정보
- 가는방법 : 제주시▶성산 50분소요, 서귀포시▶성산 60분소요
- 선박 : 성산항에서 1시간간격으로 도항선 출발 07:30~18:00(성수기에는 증편)
- 요금(왕복요금-해상국립공원 입장료, 도항선료, 대합실료 포함) : 성인(5,500)
어린이(1,900)
- 요금(교통) : 자전거(1,000), 오토바이(3,300), 중소형차(25,000), 12승합차(29,400)
15인승합차(36,000)
- 기타 교통수단 : 우도셔틀버스(5,000), 자전거대여(문의-064)783-0516)
※기상변화에 유의하여 여행에 불편함이 없도록 사전에 미리 체크하세요
1일 : 공항 → 도깨비도로 → 1117+1112번 산록도로 드라이브 → 산굼부리 → 정의승마장 → 만장굴/미로공원
→ 비자림 → 성산일출봉 → 숙소
2일 : 우도여행 → 성산~신산리 해안도로 → 제주민속촌 → 신영영화박물관 → 남원큰엉해안산책로 → 천지연폭포
→ 숙소
3일 : 대포주상절리 → 중문관광단지(여미지,테디베어박물관) → 용머리해안 → 서귀포잠수함 → 마라도여행 → 송악산
→ 숙소
4일 : 하귀~해안도로 → 한림공원,협재해수욕장,비양도 → 분재예술원 → 오'설록 녹차 → 수월봉~대정해안도로 → 공항
*성산일출봉 - 일출은 보기 힘들지만 올라서 보면 가슴이 시원해지는 곳
*표선민속촌 - 제주의 진짜 민속촌
*남원 큰엉 해안경승지 강추!! - 대자연의 신비로움, 경이로움을 느낄 수 있는 곳
관광지 이동하시다 보면 관광지입장료를 구입하셔야 하는데요
현지에서 구입하시면 가격이 비싸거든요
미리 구매하시면 최고54% 저렴하게 이용 가능하십니다.
숙소,렌트카,패키지 예약시 추가5%할인
가능하니 이용해 보시는건 어떠세요? #관광지할인쿠폰
맛집은 메뉴별로 안내해드릴께요...^^&
:::추천음식점:::
*다미진 횟집 / 064-784-2208 / 표선해수욕장 근처(횟집)
*바스메(말고기전문) / 064-787-3930 / 성읍에서 제주시방면으로 3Km
*쉬는팡(흑돼지구이) / 064-738-5833 / 대유랜드 수렵장 방면으로 300m
*우리봉식당(뚝배기전문) / 064-782-0032 / 성산일출봉 주차장 맞은편
*물항식당(갈치요리) / 064-712-0550 / 신제주 그랜드호텔 4거리 서쪽으로 200m
*성미가든(토종닭요리) / 064-783-3279 / 교래리 미니미니랜드 4거리 동쪽으로 150m
*포구식당(조림,물회) / 064-787-1016 / 표선해수욕장 지나서 표선부두 근처
*축협한우전문식당(소고기) / 064-794-5658 / 소인국테마파크 지나 100미터 우측에 위치함
1일 : 공항 → 애월,하귀해안도로 → 금릉석물원 → 분재예술원 → 오설록녹차박물관 → 송악산 → 마라도여행
→ 용머리해안 → 숙소
2일 : 여미지식물원,테디베어박물관,중문관광단지 → 중문,대포해안 주상절리대 → 대포항 → 천지연폭포
→ 신영영화박물관 → 제주민속촌박물관 → 고성시,신산리 해안도로 → 숙소
3일 : 성산일출봉 → 우도여행 → 비자림 → 산굼부리 → 1117번 산록도로 드라이브 → 도깨비도로 → 목석원 → 공항
*성산일출봉 - 일출은 보기 힘들지만 올라서 보면 가슴이 시원해지는 곳
*표선민속촌 - 제주의 진짜 민속촌
*천지연 폭포 강추!! - 밤의 야경은 더욱 아름답습니다.
*오설록 녹차 박물관 강추!! - 녹차 밭의 변신
<제주도맛집정보-제주도맛집 꼭 가봐야 할 곳/ 안다녀오면 후회 할지도 모르는 제주도맛집리스트>
<제주시 추천맛집>
물금향토음식점 - 구수한 돌솥밥에 제주산 갈치조림 고등어조림 수협직판장옆 항상 재료가 신선해요
거상향토음식점-수면고등어로 유명한 제주도유명맛집 고등어회 함 드셔보세요..싱싱하고 쫄깃한 맛
제주본섬- 제주산 흑돼지로 유명한집...흑돼지와 와인이 어울릿듯한 인테리어에 고기맛이 정말 훌륭합니다
<중문관광단지 추천 맛집>
하영흑돼지구이- 대나무 숯과 참숯만 사용 흑돼지 맛이 정말 좋습니다 인테리어도 훌륭하구요
어부와 농부횟집- 스끼다시와 회맛에 감탄사가 나옵니다.
제주미향- 갈치조림 해물뚝배기 참 맛있습니다 내부시설이랑 직원서비스 정말 친절합니다
대포해송횟집- 자연산 활어회 전문집입니다. 대포앞바다를 보며 먹는 맛 고급일식집 인테리어에....
미스제주가든- 실속파를 위한 제주산 흑돼지 전문점 맛과 주인장 인심이 일품입니다
<서귀포 칠십리해안도로>
수라청횟집- 예전에 VJ특공대 나왔던집...일본인이 수라청횟집을 극찬하는 모습을 보고 저도 가보고 싶단 생각을 했습니다
숲섬갈치요리전문점- 갈치요리하면 서귀포에서 유명한 곳...함 드셔보세요 꼭이요
정방횟집-스끼다시와 회가 맛있는 곳.....푸짐 합니다
산록촌- 활어회와 제주산흑돼지를 동시에 즐길수 있는 이색맛집 절묘한 맛의 조화
팜빌리지바베큐 체험장-바다전망 정말 좋습니다 건물이 영화속 배모양이에요 그리고 제주해산물과 제주산흑돼지.소시지,전복 활소라등..거기다 생맥주
<제주서부>
차귀도 달래식당- 매운탕맛...뿐 아니라 국물이나 양념이 정말 맛있습니다 감탄사가 절로..그리고 차귀도달래배낚시하시면 잡은 고기도 조리해 드린데요
hwanycom님의 블로그 :: 네이버 블로그
< 흑돼지 전문점 >
* 모수 흑돼지: (☎ 064-745-0470)
- 위치: 제주시 연동 = 제주공항에서 차로 7분거리.
- 신선한 냉장육 돼지구이를 맛보실 수 있는 곳.
- 메뉴: 흑돼지 한마리(600g): 25,000원, 뼈갈비(600g): 20,000원, 양념갈비(1인분): 7,000원, 오겹살(200g): 9,000원, 목살(200g): 8,000원, 흑돼지김치찌게(10,000원)..
* 봉개 산양가든: (☎ 064-721-2715)
- 위치: 명도암 목장 내.
- 너른 들판에 자연방목해 더욱 쫄깃한 육질을 자랑하는 곳.
- 메뉴: 흑돼지구이(7,000원)..
* 고기굽는 사람들: (☎ 064-744-4468)
- 위치: 노형로타리에서 양돈축협 아래 사거리, 미화2차 아파트 맞은편 = 공항 7분거리.
- 쫄깃쫄깃한 제주산 흑돼지고기를 고급스럽게 맛볼 수 있는 숯불갈비전문점!
- 일본의 N.H.K에서 방송, <조선일보>에 소개, MBC ‘I LOVE 제주’ 친절우수 업소.
- 메뉴: 수원왕갈비(13,000원), 생소불고기, 갈비살(8,000원), 대나무통 삼겹살 구이(8,000원), 양념갈비, 생갈비, 생목살구이, 제주산목살 고추장구이(1인기준 모두 7,000원),
- 점심특선메뉴(5,000원: 제주 돼지 두루치기 정식=두루치기+된장뚝배기+7가지찬+쌈)
< 기타 >
* 목장원: (☎ 064-748-9233)
- 위치: 신제주 이마트 옆 = 공항에서 10분거리.
- 제주에서 방목한 말의 각 부위를 입맛에 맞게 요리. 깔끔한 맛의 말고기 퓨전요리 전문점
- 여러 언론매체에서 앞다투어 취재해 갈 정도로 유명.
-‘제 2회 향토음식 경연대회 대상수상’
- 메뉴: 마선육회, 말만두, 갈비찜, 말순대, 샤브샤브, 생구이, 칼국수..
* 만가 민물장어: (☎ 064-724-1316)
- 위치: 제주시 법원검찰청 후문 동쪽 100m 지점.
- 한방재를 비롯한 22가지 재료로 장어양념을 만드는 곳.
- 메뉴: 장어구이, 점심식사로 장어정식(8,000원), 장어탕(5,000원)..
* 신천지 ‘옻닭 백숙’: (☎ 064-743-1766~7)
- 위치: 터미널에서 공항방면 해태동산 못 미치는 곳.
- 쫄깃한 검은 닭살의 씹히는 맛이 일품.
- 메뉴: 옭닭 백숙(30,000~35,000원). 후식으로 아이스크림이 나오는 이색적 만남.
* 금문도: (☎ 064-747-2380)
- 위치: 신제주 그랜드 호텔 뒤편 200m.
- 시원한 해물국물맛, 제주식 중국요리
- 메뉴: 탕수육+쟁반자장(2인 18,000원), 해산물탕수육+쟁반짬뽕(2인 25,000원)..
제주도에 있는 많은 맛집중에서 관광객들이 많이 찾는곳으로 안내하여 드렸습니다.
일정을 계획하실때에 맛집 또한 너무나도 중요한데요...
참고하셔서 맛있는 음식도 함께하는 즐거운 여행을 계획하세요...^^
< 흑돼지 전문점 >
* 모수 흑돼지: (☎ 064-745-0470)
- 위치: 제주시 연동 = 제주공항에서 차로 7분거리.
- 신선한 냉장육 돼지구이를 맛보실 수 있는 곳.
- 메뉴: 흑돼지 한마리(600g): 25,000원, 뼈갈비(600g): 20,000원, 양념갈비(1인분): 7,000원, 오겹살(200g): 9,000원, 목살(200g): 8,000원, 흑돼지김치찌게(10,000원)..
* 봉개 산양가든: (☎ 064-721-2715)
- 위치: 명도암 목장 내.
- 너른 들판에 자연방목해 더욱 쫄깃한 육질을 자랑하는 곳.
- 메뉴: 흑돼지구이(7,000원)..
* 고기굽는 사람들: (☎ 064-744-4468)
- 위치: 노형로타리에서 양돈축협 아래 사거리, 미화2차 아파트 맞은편 = 공항 7분거리.
- 쫄깃쫄깃한 제주산 흑돼지고기를 고급스럽게 맛볼 수 있는 숯불갈비전문점!
- 일본의 N.H.K에서 방송, <조선일보>에 소개, MBC ‘I LOVE 제주’ 친절우수 업소.
- 메뉴: 수원왕갈비(13,000원), 생소불고기, 갈비살(8,000원), 대나무통 삼겹살 구이(8,000원), 양념갈비, 생갈비, 생목살구이, 제주산목살 고추장구이(1인기준 모두 7,000원),
- 점심특선메뉴(5,000원: 제주 돼지 두루치기 정식=두루치기+된장뚝배기+7가지찬+쌈)
< 기타 >
* 목장원: (☎ 064-748-9233)
- 위치: 신제주 이마트 옆 = 공항에서 10분거리.
- 제주에서 방목한 말의 각 부위를 입맛에 맞게 요리. 깔끔한 맛의 말고기 퓨전요리 전문점
- 여러 언론매체에서 앞다투어 취재해 갈 정도로 유명.
-‘제 2회 향토음식 경연대회 대상수상’
- 메뉴: 마선육회, 말만두, 갈비찜, 말순대, 샤브샤브, 생구이, 칼국수..
* 만가 민물장어: (☎ 064-724-1316)
- 위치: 제주시 법원검찰청 후문 동쪽 100m 지점.
- 한방재를 비롯한 22가지 재료로 장어양념을 만드는 곳.
- 메뉴: 장어구이, 점심식사로 장어정식(8,000원), 장어탕(5,000원)..
* 신천지 ‘옻닭 백숙’: (☎ 064-743-1766~7)
- 위치: 터미널에서 공항방면 해태동산 못 미치는 곳.
- 쫄깃한 검은 닭살의 씹히는 맛이 일품.
- 메뉴: 옭닭 백숙(30,000~35,000원). 후식으로 아이스크림이 나오는 이색적 만남.
* 금문도: (☎ 064-747-2380)
- 위치: 신제주 그랜드 호텔 뒤편 200m.
- 시원한 해물국물맛, 제주식 중국요리
- 메뉴: 탕수육+쟁반자장(2인 18,000원), 해산물탕수육+쟁반짬뽕(2인 25,000원)..
제주도에 있는 많은 맛집중에서 관광객들이 많이 찾는곳으로 안내하여 드렸습니다.
일정을 계획하실때에 맛집 또한 너무나도 중요한데요...
참고하셔서 맛있는 음식도 함께하는 즐거운 여행을 계획하세요...^^
< 횟집 >
* 산지물 식당: (☎ 064-752-5599)
- 위치: 제주시 탑동 서부두 방파제 입구 대도로변에 위치
- 새콤달콤한 물회를 드실 수 있는 곳.
- 메뉴: 어랭이물회(6,000원), 갈치회(20,000원), 고등어회(10,000원),
<고등어조림, 갈치국..>
* 유빈식당: (☎ 064-753-5218)
- 위치: 제주시 탑동 오리엔탈 호텔 서쪽 대도로변.
- 전복죽으로 맛있는 곳.
- 메뉴: 전복죽(특: 12,000원, 보통: 9,000원), 전복회, 전복구이, 성게국, 모듬회..
* 물항식당: (☎ 064-712-2731), (☎ 064-753-2731)
- 위치: 본점 = 제주시 연동 신제주 그랜드호텔 정문 앞.
*서부두점 = 제주시 탑동 방파제 동쪽 수협공판장 입구
- 넉넉한 양과 저렴한 가격의 고등어 요리를 맛보실 수 있는 곳.
- 메뉴: 고등어조림(대: 12,000원, 소: 7,000원), 고등어회(13,000원), 갈치회(20,000원)..
* 성복식당: (☎ 064-757-2481)
- 위치: 제주시 서부두 방파제 갈치횟집촌에 위치
- 갈치회와 함께 전통의 고등어조림 맛집으로 잘 알려져 있음.
- 메뉴: 갈치회(25,000원), 고등어조림(大: 15,000원, 小: 10,000원)..
* 테우: (☎ 064-742-6668)
- 위치: 제주시 외도동 = 공항에서 서쪽으로 10분거리 (셔틀버스 운행)
- 식탁이 부족할 듯 차려나오는 해선요리로 미식가들과 관광객들을 만족시키는 곳.
- 일본 유명잡지인의 제주도 특집에서 “대표해물요리집”으로 취재 보도.
- 메뉴: 테우 해선요리(활어회+14~17가지 다양한 해물요리 제공): 1인 30,000원 부터.
회덮밥, 해물뚝배기, 전복죽, 해물전골(모두 10,000원), 옥돔구이정식(15,000원)..
- 파격메뉴: 행복 사시미정식: 1인당 15,000원, 만족 사시미정식: 1인당 20,000원,,
< 향토음식 전문점 >
* 제주 갈치와 고등어: (☎ 064-749-1212)
- 위치: 신제주 ‘그랜드호텔’ 옆 맥심호텔 뒤 골목 = 공항 5분거리
- 제주가 아니면 맛보기 힘든 갈치와 고등어를 주메뉴로 신선함을 느낄수있는
*향토음식점.
- KBS TV <여기는 TV정보센터’ 방영>, <스포츠 서울> - 제주에 가장 맛있는 곳 수록.
- 메뉴: 갈치조림(25,000원), 고등어조림(15,000원), 갈치구이(20,000원), 고등어구이(10,000원), 갈치회, 고등어회(20,000원), 각종 향토음식..
* 해요(海凹): (☎ 064-747-0052)
- 위치: 신제주 크라운호텔 뒤편 = 공항에서 3분거리.
- 해물찜, 해물탕 요리 전문점.
- 제주일보 선정 맛집, 제주시지정 모범 음식점.
- 메뉴: 해요 해물찜, 해요 해물탕
* 거부한정식: (☎ 064-744-4116)
- 위치: 신제주 그랜드호텔 맞은 편 = 공항에서 8분~10분거리.
- 외식업계의 일대혁명! 정갈하고 깔끔한 맛에 감탄하게 되는 한정식전문점.
- 상다리가 휘어지도록 차려내는 갖가지 음식에 이렇게해도 남는가 하는 의구심이들 정도.
- 메뉴: 제주통돼지, 한우육회, 제주산돔두이, 한치회, 섬진강재첩 된장찌개, 즉석 무쇠솥, 모듬쌈, 전라도 영암댁의 손맛 10가지 반찬, 가마솥 누룽지, 꽃게장, 홍어회, 사라다, 식혜, 등 13가지를
* 보건식당: (☎ 064-753-9521)
- 위치: 제주시청 앞
- 해녀가 직접 따온 오분작으로 뚝배기를 만드는 제주 향토음식 전문점.
- 메뉴: 오분작구이(30,000원), 해물전골(20,000원), 뚝배기(9,000원), 물회(5,000원),,
* 유리네 식당: (☎ 064-748-0890)
- 위치: 연동 신시가지 KCTV 옆 = 공항 5분거리.
- 신제주의 토속음식 전문점.
- 메뉴: 갈치구이(15,000원), 고등어구이(9,000원), 옥돔미역국(7,000원), 자리물회(6,000원), 갈치국(7,000원), 성게국(7,000원), 한치물회(6,000원), 몸국(5,000원)..
* 도라지 식당: (☎ 064-722-3142)
- 위치: 제주시 광양사거리 제주시청 정문 앞 골목 = 열린정보센터 건물 바로 뒤에 위치
- 23년째 제주도 토속 향토음식만 취급하는 제주 전문 향토음식점.
- 메뉴: 갈치호박국(6,000원), 옥돔미역국(6,000원), 갈치구이(15,000원), 각종 물회..
* 어장군: (☎ 064-744-2258)
- 위치: 신제주 건설회관 뒤쪽 = 공항에서 차로 5분거리
- 푸짐한 갈치살에 매콤한 국물이 감칠맛인 곳.
- 메뉴: 갈치조림, 갈치구이(15,000원), 보말국(5,000원), 우뭇가사리 냉국, 돔베고기..
* 장춘식당: (☎ 064-742-8556)
- 위치: 신제주 KBS 뒤쪽.
- 비릿한 맛이 전혀 나지 않고 시원한 갈칫국과 성게국을 맛보실 수 있는 곳.
- 메뉴: 갈칫국(5,000원), 성게국(7,000원), 오분재기구이, 소라볶음, 옥돔구이, 갈치구이..
<지역별 향토음식점>
용이식당 | 서귀포 | (064) 732-7892 |두루치기
신대림식당 | 제주시 | (064) 748-8114 | 갈치렇掃고등어조림, 한치렝美?물회
우리집식당 | 제주시 | (064) 712-3104 | 일반 정식, 된장찌개
수용횟집 | 한림 | (064) 796-8049 | 해물뚝배기, 옥돔구이
물허벅식당 | 성산 | (064) 787-7087 | 흑돼지불고기, 옥돔 정식
시흥해녀의 집 | 성산 | (064) 782-9230 | 조개죽, 전복죽, 전복회
백록회관 | 성산 | (064) 782-8001 | 활어회, 해물탕, 매운탕, 물회
제주어촌 | 함덕 | (064) 782-8090 | 갈치회, 고등어구이
"흑돼지 맛을 알게되다"
<쉬는팡>
064-738-5833 | 09:00~21:00 | 주차가능 | 흑돼지 8천원, 동치미 국수4천원
중문 입구에서 대유랜드로 들어가는 길 50m 지점
"생선 조림의 깊은맛을 가진"
<신대림>
이곳의 조림 종류는 전부 그맛이 일품이다. 푸짐하게는 고등어 조림이 푸짐하고 맛있으며,
갈치조림은 비린내가 잘 제거되 갈치의 고소함이 그대로 살아 있었다.
제주도 현지인들에게는 멜(멸치)조림으로도 유명하며 실제로 멜(멸치)조림도 한번 맛 보았는데, 그 맛에 빠져 들고 말았다.
(064) 748 - 8114 | 09:00~22:00 | 주차가능 | 고등어조림 1만5천원, 해물뚝배기 9천원, 멜조림 1만원
제주시 노형로터리 현대해상 또는 시티콘(구 현대텔콘)뒤로 20m
"원두막 동태찌개"라고 이 근방에서는 이미 맛집으로 소문난 집입니다.
전화번호:064-747-2200
(이마트근처, 근린공원과 노형공원 중간지점)
제주도 갈때마다 가는 곳인데 하귀해안도로에가면 <찜마을>이라고 있는데
주인아저씨 아줌마도 되게 친절하시구 음식두 정말 맛잇습니다.
해물찜,갈치조림,옥돔,오분작뚝배기 정말맛있어요~
바다도 한눈에 보이고 한적한곳에 북적이지 않구 정말 좋아요. 후회 안하실꺼예요~^^
요기 추천이 많네...가보구 싶엉~ㅋㅋ
***<쌍둥이 횟집>***
인터넷에서 열심히 찾아보고 우린 서귀포 매일시장으로 갔다.
사람은 엄청나게 많았고,1,2층에 홀도 훨씬 넓어져서 번호표뽑고 조금 기다리니 차례가 되었다.
회를 시킬때는 비싼거 시키지 말고 대충 싼걸로 주문하는편이 좋다.
6만~7만원짜리 광어나 돔시키면 4명이서 충분히 먹는다.
모든게 똑같고(심지어 음식들이 담겨있는 그릇들까지 다 표준화가 되어있다)
마지막에 나오는 회접시에 담긴 회만 달라지는 거니깐...
서귀포에
***<진주식당>***
전복뚝배기가 그렇게 맛있다고...
이번에 제주시에도 분점이 하나 생겼다고 하더라구요. 그래서 한 번 가봤는데.. 와... 정말 맛있어서..
저도 다른분들한테 추천해드리려구요.
제주시 연동 KCTV 근처에 위치하고 있구요..
커다란 간판이 있고..
건물도 4층으로 대규모라서 쉽게 눈에 띕니다. 그래서 찾는데 별 어려움 없으실 겁니다~
공항에서 직접 전화주시면.. PICK UP도 해간다고.. 그러네요.
연락처는 (064-747-5157)입니다.
1인분 만원..뚝배기 하나에 전복 3개..ㅋㅋ
제 양심을 걸고 추천합니다~~!!
여행오시거나.. 제주에 사시는 분들도.. 꼭 한 번 가보세요...맛이 최고에요!
[출처] 제주도 맛집|작성자 보동이
* 모수 흑돼지: (☎ 064-745-0470)
- 위치: 제주시 연동 = 제주공항에서 차로 7분거리.
- 신선한 냉장육 돼지구이를 맛보실 수 있는 곳.
- 메뉴: 흑돼지 한마리(600g): 25,000원, 뼈갈비(600g): 20,000원, 양념갈비(1인분): 7,000원, 오겹살(200g): 9,000원, 목살(200g): 8,000원, 흑돼지김치찌게(10,000원)..
* 봉개 산양가든: (☎ 064-721-2715)
- 위치: 명도암 목장 내.
- 너른 들판에 자연방목해 더욱 쫄깃한 육질을 자랑하는 곳.
- 메뉴: 흑돼지구이(7,000원)..
* 고기굽는 사람들: (☎ 064-744-4468)
- 위치: 노형로타리에서 양돈축협 아래 사거리, 미화2차 아파트 맞은편 = 공항 7분거리.
- 쫄깃쫄깃한 제주산 흑돼지고기를 고급스럽게 맛볼 수 있는 숯불갈비전문점!
- 일본의 N.H.K에서 방송, <조선일보>에 소개, MBC ‘I LOVE 제주’ 친절우수 업소.
- 메뉴: 수원왕갈비(13,000원), 생소불고기, 갈비살(8,000원), 대나무통 삼겹살 구이(8,000원), 양념갈비, 생갈비, 생목살구이, 제주산목살 고추장구이(1인기준 모두 7,000원),
- 점심특선메뉴(5,000원: 제주 돼지 두루치기 정식=두루치기+된장뚝배기+7가지찬+쌈)
< 기타 >
* 목장원: (☎ 064-748-9233)
- 위치: 신제주 이마트 옆 = 공항에서 10분거리.
- 제주에서 방목한 말의 각 부위를 입맛에 맞게 요리. 깔끔한 맛의 말고기 퓨전요리 전문점
- 여러 언론매체에서 앞다투어 취재해 갈 정도로 유명.
-‘제 2회 향토음식 경연대회 대상수상’
- 메뉴: 마선육회, 말만두, 갈비찜, 말순대, 샤브샤브, 생구이, 칼국수..
* 만가 민물장어: (☎ 064-724-1316)
- 위치: 제주시 법원검찰청 후문 동쪽 100m 지점.
- 한방재를 비롯한 22가지 재료로 장어양념을 만드는 곳.
- 메뉴: 장어구이, 점심식사로 장어정식(8,000원), 장어탕(5,000원)..
* 신천지 ‘옻닭 백숙’: (☎ 064-743-1766~7)
- 위치: 터미널에서 공항방면 해태동산 못 미치는 곳.
- 쫄깃한 검은 닭살의 씹히는 맛이 일품.
- 메뉴: 옭닭 백숙(30,000~35,000원). 후식으로 아이스크림이 나오는 이색적 만남.
* 금문도: (☎ 064-747-2380)
- 위치: 신제주 그랜드 호텔 뒤편 200m.
- 시원한 해물국물맛, 제주식 중국요리
- 메뉴: 탕수육+쟁반자장(2인 18,000원), 해산물탕수육+쟁반짬뽕(2인 25,000원)..
제주도에 있는 많은 맛집중에서 관광객들이 많이 찾는곳으로 안내하여 드렸습니다.
일정을 계획하실때에 맛집 또한 너무나도 중요한데요...
참고하셔서 맛있는 음식도 함께하는 즐거운 여행을 계획하세요...^^
< 흑돼지 전문점 >
* 모수 흑돼지: (☎ 064-745-0470)
- 위치: 제주시 연동 = 제주공항에서 차로 7분거리.
- 신선한 냉장육 돼지구이를 맛보실 수 있는 곳.
- 메뉴: 흑돼지 한마리(600g): 25,000원, 뼈갈비(600g): 20,000원, 양념갈비(1인분): 7,000원, 오겹살(200g): 9,000원, 목살(200g): 8,000원, 흑돼지김치찌게(10,000원)..
* 봉개 산양가든: (☎ 064-721-2715)
- 위치: 명도암 목장 내.
- 너른 들판에 자연방목해 더욱 쫄깃한 육질을 자랑하는 곳.
- 메뉴: 흑돼지구이(7,000원)..
* 고기굽는 사람들: (☎ 064-744-4468)
- 위치: 노형로타리에서 양돈축협 아래 사거리, 미화2차 아파트 맞은편 = 공항 7분거리.
- 쫄깃쫄깃한 제주산 흑돼지고기를 고급스럽게 맛볼 수 있는 숯불갈비전문점!
- 일본의 N.H.K에서 방송, <조선일보>에 소개, MBC ‘I LOVE 제주’ 친절우수 업소.
- 메뉴: 수원왕갈비(13,000원), 생소불고기, 갈비살(8,000원), 대나무통 삼겹살 구이(8,000원), 양념갈비, 생갈비, 생목살구이, 제주산목살 고추장구이(1인기준 모두 7,000원),
- 점심특선메뉴(5,000원: 제주 돼지 두루치기 정식=두루치기+된장뚝배기+7가지찬+쌈)
< 기타 >
* 목장원: (☎ 064-748-9233)
- 위치: 신제주 이마트 옆 = 공항에서 10분거리.
- 제주에서 방목한 말의 각 부위를 입맛에 맞게 요리. 깔끔한 맛의 말고기 퓨전요리 전문점
- 여러 언론매체에서 앞다투어 취재해 갈 정도로 유명.
-‘제 2회 향토음식 경연대회 대상수상’
- 메뉴: 마선육회, 말만두, 갈비찜, 말순대, 샤브샤브, 생구이, 칼국수..
* 만가 민물장어: (☎ 064-724-1316)
- 위치: 제주시 법원검찰청 후문 동쪽 100m 지점.
- 한방재를 비롯한 22가지 재료로 장어양념을 만드는 곳.
- 메뉴: 장어구이, 점심식사로 장어정식(8,000원), 장어탕(5,000원)..
* 신천지 ‘옻닭 백숙’: (☎ 064-743-1766~7)
- 위치: 터미널에서 공항방면 해태동산 못 미치는 곳.
- 쫄깃한 검은 닭살의 씹히는 맛이 일품.
- 메뉴: 옭닭 백숙(30,000~35,000원). 후식으로 아이스크림이 나오는 이색적 만남.
* 금문도: (☎ 064-747-2380)
- 위치: 신제주 그랜드 호텔 뒤편 200m.
- 시원한 해물국물맛, 제주식 중국요리
- 메뉴: 탕수육+쟁반자장(2인 18,000원), 해산물탕수육+쟁반짬뽕(2인 25,000원)..
제주도에 있는 많은 맛집중에서 관광객들이 많이 찾는곳으로 안내하여 드렸습니다.
일정을 계획하실때에 맛집 또한 너무나도 중요한데요...
참고하셔서 맛있는 음식도 함께하는 즐거운 여행을 계획하세요...^^
< 횟집 >
* 산지물 식당: (☎ 064-752-5599)
- 위치: 제주시 탑동 서부두 방파제 입구 대도로변에 위치
- 새콤달콤한 물회를 드실 수 있는 곳.
- 메뉴: 어랭이물회(6,000원), 갈치회(20,000원), 고등어회(10,000원),
<고등어조림, 갈치국..>
* 유빈식당: (☎ 064-753-5218)
- 위치: 제주시 탑동 오리엔탈 호텔 서쪽 대도로변.
- 전복죽으로 맛있는 곳.
- 메뉴: 전복죽(특: 12,000원, 보통: 9,000원), 전복회, 전복구이, 성게국, 모듬회..
* 물항식당: (☎ 064-712-2731), (☎ 064-753-2731)
- 위치: 본점 = 제주시 연동 신제주 그랜드호텔 정문 앞.
*서부두점 = 제주시 탑동 방파제 동쪽 수협공판장 입구
- 넉넉한 양과 저렴한 가격의 고등어 요리를 맛보실 수 있는 곳.
- 메뉴: 고등어조림(대: 12,000원, 소: 7,000원), 고등어회(13,000원), 갈치회(20,000원)..
* 성복식당: (☎ 064-757-2481)
- 위치: 제주시 서부두 방파제 갈치횟집촌에 위치
- 갈치회와 함께 전통의 고등어조림 맛집으로 잘 알려져 있음.
- 메뉴: 갈치회(25,000원), 고등어조림(大: 15,000원, 小: 10,000원)..
* 테우: (☎ 064-742-6668)
- 위치: 제주시 외도동 = 공항에서 서쪽으로 10분거리 (셔틀버스 운행)
- 식탁이 부족할 듯 차려나오는 해선요리로 미식가들과 관광객들을 만족시키는 곳.
- 일본 유명잡지인
- 메뉴: 테우 해선요리(활어회+14~17가지 다양한 해물요리 제공): 1인 30,000원 부터.
회덮밥, 해물뚝배기, 전복죽, 해물전골(모두 10,000원), 옥돔구이정식(15,000원)..
- 파격메뉴: 행복 사시미정식: 1인당 15,000원, 만족 사시미정식: 1인당 20,000원,,
< 향토음식 전문점 >
* 제주 갈치와 고등어: (☎ 064-749-1212)
- 위치: 신제주 ‘그랜드호텔’ 옆 맥심호텔 뒤 골목 = 공항 5분거리
- 제주가 아니면 맛보기 힘든 갈치와 고등어를 주메뉴로 신선함을 느낄수있는
*향토음식점.
- KBS TV <여기는 TV정보센터’ 방영>, <스포츠 서울> - 제주에 가장 맛있는 곳 수록.
- 메뉴: 갈치조림(25,000원), 고등어조림(15,000원), 갈치구이(20,000원), 고등어구이(10,000원), 갈치회, 고등어회(20,000원), 각종 향토음식..
* 해요(海凹): (☎ 064-747-0052)
- 위치: 신제주 크라운호텔 뒤편 = 공항에서 3분거리.
- 해물찜, 해물탕 요리 전문점.
- 제주일보 선정 맛집, 제주시지정 모범 음식점.
- 메뉴: 해요 해물찜, 해요 해물탕
* 거부한정식: (☎ 064-744-4116)
- 위치: 신제주 그랜드호텔 맞은 편 = 공항에서 8분~10분거리.
- 외식업계의 일대혁명! 정갈하고 깔끔한 맛에 감탄하게 되는 한정식전문점.
- 상다리가 휘어지도록 차려내는 갖가지 음식에 이렇게해도 남는가 하는 의구심이들 정도.
- 메뉴: 제주통돼지, 한우육회, 제주산돔두이, 한치회, 섬진강재첩 된장찌개, 즉석 무쇠솥, 모듬쌈, 전라도 영암댁의 손맛 10가지 반찬, 가마솥 누룽지, 꽃게장, 홍어회, 사라다, 식혜, 등 13가지를
* 보건식당: (☎ 064-753-9521)
- 위치: 제주시청 앞
- 해녀가 직접 따온 오분작으로 뚝배기를 만드는 제주 향토음식 전문점.
- 메뉴: 오분작구이(30,000원), 해물전골(20,000원), 뚝배기(9,000원), 물회(5,000원),,
* 유리네 식당: (☎ 064-748-0890)
- 위치: 연동 신시가지 KCTV 옆 = 공항 5분거리.
- 신제주의 토속음식 전문점.
- 메뉴: 갈치구이(15,000원), 고등어구이(9,000원), 옥돔미역국(7,000원), 자리물회(6,000원), 갈치국(7,000원), 성게국(7,000원), 한치물회(6,000원), 몸국(5,000원)..
* 도라지 식당: (☎ 064-722-3142)
- 위치: 제주시 광양사거리 제주시청 정문 앞 골목 = 열린정보센터 건물 바로 뒤에 위치
- 23년째 제주도 토속 향토음식만 취급하는 제주 전문 향토음식점.
- 메뉴: 갈치호박국(6,000원), 옥돔미역국(6,000원), 갈치구이(15,000원), 각종 물회..
* 어장군: (☎ 064-744-2258)
- 위치: 신제주 건설회관 뒤쪽 = 공항에서 차로 5분거리
- 푸짐한 갈치살에 매콤한 국물이 감칠맛인 곳.
- 메뉴: 갈치조림, 갈치구이(15,000원), 보말국(5,000원), 우뭇가사리 냉국, 돔베고기..
* 장춘식당: (☎ 064-742-8556)
- 위치: 신제주 KBS 뒤쪽.
- 비릿한 맛이 전혀 나지 않고 시원한 갈칫국과 성게국을 맛보실 수 있는 곳.
- 메뉴: 갈칫국(5,000원), 성게국(7,000원), 오분재기구이, 소라볶음, 옥돔구이, 갈치구이..
<지역별 향토음식점>
용이식당 | 서귀포 | (064) 732-7892 |두루치기
신대림식당 | 제주시 | (064) 748-8114 | 갈치렇掃고등어조림, 한치렝美?물회
우리집식당 | 제주시 | (064) 712-3104 | 일반 정식, 된장찌개
수용횟집 | 한림 | (064) 796-8049 | 해물뚝배기, 옥돔구이
물허벅식당 | 성산 | (064) 787-7087 | 흑돼지불고기, 옥돔 정식
시흥해녀의 집 | 성산 | (064) 782-9230 | 조개죽, 전복죽, 전복회
백록회관 | 성산 | (064) 782-8001 | 활어회, 해물탕, 매운탕, 물회
제주어촌 | 함덕 | (064) 782-8090 | 갈치회, 고등어구이
"흑돼지 맛을 알게되다"
<쉬는팡>
064-738-5833 | 09:00~21:00 | 주차가능 | 흑돼지 8천원, 동치미 국수4천원
중문 입구에서 대유랜드로 들어가는 길 50m 지점
"생선 조림의 깊은맛을 가진"
<신대림>
이곳의 조림 종류는 전부 그맛이 일품이다. 푸짐하게는 고등어 조림이 푸짐하고 맛있으며,
갈치조림은 비린내가 잘 제거되 갈치의 고소함이 그대로 살아 있었다.
제주도 현지인들에게는 멜(멸치)조림으로도 유명하며 실제로 멜(멸치)조림도 한번 맛 보았는데, 그 맛에 빠져 들고 말았다.
(064) 748 - 8114 | 09:00~22:00 | 주차가능 | 고등어조림 1만5천원, 해물뚝배기 9천원, 멜조림 1만원
제주시 노형로터리 현대해상 또는 시티콘(구 현대텔콘)뒤로 20m
"원두막 동태찌개"라고 이 근방에서는 이미 맛집으로 소문난 집입니다.
전화번호:064-747-2200
(이마트근처, 근린공원과 노형공원 중간지점)
제주도 갈때마다 가는 곳인데 하귀해안도로에가면 <찜마을>이라고 있는데
주인아저씨 아줌마도 되게 친절하시구 음식두 정말 맛잇습니다.
해물찜,갈치조림,옥돔,오분작뚝배기 정말맛있어요~
바다도 한눈에 보이고 한적한곳에 북적이지 않구 정말 좋아요. 후회 안하실꺼예요~^^
요기 추천이 많네...가보구 싶엉~ㅋㅋ
***<쌍둥이 횟집>***
인터넷에서 열심히 찾아보고 우린 서귀포 매일시장으로 갔다.
사람은 엄청나게 많았고,1,2층에 홀도 훨씬 넓어져서 번호표뽑고 조금 기다리니 차례가 되었다.
회를 시킬때는 비싼거 시키지 말고 대충 싼걸로 주문하는편이 좋다.
6만~7만원짜리 광어나 돔시키면 4명이서 충분히 먹는다.
모든게 똑같고(심지어 음식들이 담겨있는 그릇들까지 다 표준화가 되어있다)
마지막에 나오는 회접시에 담긴 회만 달라지는 거니깐...
서귀포에
***<진주식당>***
전복뚝배기가 그렇게 맛있다고...
이번에 제주시에도 분점이 하나 생겼다고 하더라구요. 그래서 한 번 가봤는데.. 와... 정말 맛있어서..
저도 다른분들한테 추천해드리려구요.
제주시 연동 KCTV 근처에 위치하고 있구요..
커다란 간판이 있고..
건물도 4층으로 대규모라서 쉽게 눈에 띕니다. 그래서 찾는데 별 어려움 없으실 겁니다~
공항에서 직접 전화주시면.. PICK UP도 해간다고.. 그러네요.
연락처는 (064-747-5157)입니다.
1인분 만원..뚝배기 하나에 전복 3개..ㅋㅋ
제 양심을 걸고 추천합니다~~!!
여행오시거나.. 제주에 사시는 분들도.. 꼭 한 번 가보세요...맛이 최고에요!
[출처] 제주도 맛집|작성자 보동이
2008년 8월 2일 토요일
2008년 7월 22일 화요일
엑셀 함수리스트
http://www.relief.jp/itnote/archives/cat_108.php
http://pasmaodani.hp.infoseek.co.jp/
財務 日付/時刻 数学/三角 統計 検索/行列 データ
ベース 文字列操作 論理 情報 その他
SLN
減価償却費(定額法)
TODAY
今日の日付
SUM
合計
AVERAGE
平均値
VLOOKUP
列方向のデータ検索
DSUM
条件付合計
CONCATENATE
文字列結合
TRUE
正しい
PHONETIC
ふりがな
DB
減価償却費(定率法)
NOW
現在の日時
ROUND
四捨五入
COUNT
数値の数
HLOOKUP
行方向のデータ検索
DAVERAGE
条件付平均
TEXT
数値の書式設定文字列化
FALSE
正しくない
ISBLANK
セルが空白かどうか
SYD
減価償却費(級数法)
DATE
日付の作成
ROUNDUP
切り上げ
MAX
最大値
LOOKUP1
ベクトル方式のデータ検索
DMAX
条件付最大値
SEARCH
文字列の検索
IF
条件分岐
ISNUMBER
セルの値が数値かどうか
DDB
減価償却費(倍率逓減法)
YEAR
年を表示
ROUNDDOWN
切り捨て
MIN
最小値
LOOKUP2
配列方式のデータ検索
DMIN
条件付最小値
MID
指定した文字を取り出す
AND
すべてが正しいかの判定
ISTEXT
セルの値が文字列かどうか
VDB
減価償却費(定率法による特定期間分計算)
MONTH
月を表示
INT
数値を整数に切り捨て
AVERAGEA
文字・論理値を含む平均値
INDEX1
配列形式での値の検索
DCOUNT
条件付数値の数
REPLACE
指定した位置の文字列の置き換え
OR
一つでも正しいかの判定
ISNONTEXT
セルの値が文字列でないかどうか
PMT
ローンの元利均等返済方式返済額
DAY
日を表示
MOD
割り算の余りを求める
COUNTA
数値・文字・論理値が入力されたセルの数
INDEX2
セル範囲形式のセルの参照
DGET
条件付値の抽出
SUBSTITUTE
指定した文字列の置き換え
IPMT
ローンの元利金等返済方式利息額
TIME
時刻に対する少数を計算
SUMIF
条件付合計
COUNTIF
条件に合うセルの数
MATCH
範囲内での位置の値
ASC
全角文字を半角文字に変換する
PPMT
ローンの元利金等返済方式元金額
HOUR
時を整数で表示
PRODUCT
掛け算
COUNTBLANK
空白のセルの数
CHOOSE
リストから値を取り出す
JIS
半角文字を全角文字に変換する
PV
借入金の計算
MINUTE
分を整数で表示
SUMPRODUCT
掛け算後合計
MAXA
論理値を含む最大値
LEFT
文字列の左から指定文字数だけ取り出す
NPER
借入金の返済期間
SECOND
分を整数で表示
MINA
論理値を含む最小値
RIGHT
文字列の右から指定文字数だけ取り出す
RATE
利率の計算
REPT
指定した回数だけ文字を繰返して表示します
FV
積立満期額
TRIM
不要なスペースの削除
EXACT
文字列の比較
http://pasmaodani.hp.infoseek.co.jp/
財務 日付/時刻 数学/三角 統計 検索/行列 データ
ベース 文字列操作 論理 情報 その他
SLN
減価償却費(定額法)
TODAY
今日の日付
SUM
合計
AVERAGE
平均値
VLOOKUP
列方向のデータ検索
DSUM
条件付合計
CONCATENATE
文字列結合
TRUE
正しい
PHONETIC
ふりがな
DB
減価償却費(定率法)
NOW
現在の日時
ROUND
四捨五入
COUNT
数値の数
HLOOKUP
行方向のデータ検索
DAVERAGE
条件付平均
TEXT
数値の書式設定文字列化
FALSE
正しくない
ISBLANK
セルが空白かどうか
SYD
減価償却費(級数法)
DATE
日付の作成
ROUNDUP
切り上げ
MAX
最大値
LOOKUP1
ベクトル方式のデータ検索
DMAX
条件付最大値
SEARCH
文字列の検索
IF
条件分岐
ISNUMBER
セルの値が数値かどうか
DDB
減価償却費(倍率逓減法)
YEAR
年を表示
ROUNDDOWN
切り捨て
MIN
最小値
LOOKUP2
配列方式のデータ検索
DMIN
条件付最小値
MID
指定した文字を取り出す
AND
すべてが正しいかの判定
ISTEXT
セルの値が文字列かどうか
VDB
減価償却費(定率法による特定期間分計算)
MONTH
月を表示
INT
数値を整数に切り捨て
AVERAGEA
文字・論理値を含む平均値
INDEX1
配列形式での値の検索
DCOUNT
条件付数値の数
REPLACE
指定した位置の文字列の置き換え
OR
一つでも正しいかの判定
ISNONTEXT
セルの値が文字列でないかどうか
PMT
ローンの元利均等返済方式返済額
DAY
日を表示
MOD
割り算の余りを求める
COUNTA
数値・文字・論理値が入力されたセルの数
INDEX2
セル範囲形式のセルの参照
DGET
条件付値の抽出
SUBSTITUTE
指定した文字列の置き換え
IPMT
ローンの元利金等返済方式利息額
TIME
時刻に対する少数を計算
SUMIF
条件付合計
COUNTIF
条件に合うセルの数
MATCH
範囲内での位置の値
ASC
全角文字を半角文字に変換する
PPMT
ローンの元利金等返済方式元金額
HOUR
時を整数で表示
PRODUCT
掛け算
COUNTBLANK
空白のセルの数
CHOOSE
リストから値を取り出す
JIS
半角文字を全角文字に変換する
PV
借入金の計算
MINUTE
分を整数で表示
SUMPRODUCT
掛け算後合計
MAXA
論理値を含む最大値
LEFT
文字列の左から指定文字数だけ取り出す
NPER
借入金の返済期間
SECOND
分を整数で表示
MINA
論理値を含む最小値
RIGHT
文字列の右から指定文字数だけ取り出す
RATE
利率の計算
REPT
指定した回数だけ文字を繰返して表示します
FV
積立満期額
TRIM
不要なスペースの削除
EXACT
文字列の比較
2008년 7월 3일 목요일
同時接続数の制限
同時接続数の制限を変更または削除してWindows XPで
方法1 :
は、次のプログラムを使用することができます:
XP SP2のソフトウェアパッチをダウンロードして
* Tcpip.sysで編集を手動で削除してTCP / IPソケットの作成を制限
方法2 :
別の方法を使用することができますTcpip.sysでファイルを変更するには、手動で作成します。 これらの手順を参照しての最後のリリースのXP SP2では、ファイルの正確性をTcpip.sysで359040バイトのCRC - 32は8042a9fb 、およびMD5は9f4b36614a0fc234525ba224957de55cです。
これは可能性があるために複数のTcpip.sysでのファイルをお使いのシステムは、動作を確認して、 1つではC : \ Windows \ System32を\ドライブ\ディレクトリにコピーします。
Tcpip.sysで制限を削除するにソケットを作成して元のTcpip.sysでファイルをバックアップし、編集を開始する前に、これは非常に重要です。
は、 16進数のエディタには、 16進数のオフセット4f322 (または324386 10進数)です。 入力し、変更0 00 00 00から00 00 0 00 。
方法1 :
は、次のプログラムを使用することができます:
XP SP2のソフトウェアパッチをダウンロードして
* Tcpip.sysで編集を手動で削除してTCP / IPソケットの作成を制限
方法2 :
別の方法を使用することができますTcpip.sysでファイルを変更するには、手動で作成します。 これらの手順を参照しての最後のリリースのXP SP2では、ファイルの正確性をTcpip.sysで359040バイトのCRC - 32は8042a9fb 、およびMD5は9f4b36614a0fc234525ba224957de55cです。
これは可能性があるために複数のTcpip.sysでのファイルをお使いのシステムは、動作を確認して、 1つではC : \ Windows \ System32を\ドライブ\ディレクトリにコピーします。
Tcpip.sysで制限を削除するにソケットを作成して元のTcpip.sysでファイルをバックアップし、編集を開始する前に、これは非常に重要です。
は、 16進数のエディタには、 16進数のオフセット4f322 (または324386 10進数)です。 入力し、変更0 00 00 00から00 00 0 00 。
2008년 7월 2일 수요일
엄청 놀라운 사실을 방금 발굔해따..
케로로=케로케로=두리번두리번
쿠로로=쿠로쿠로=뱅글뱅글
타마마=타마타마=가끔,우연히
기로로=기로기로=눈알이 반짝
도로로=도로도로=유령,요괴가 내는 소리 둥둥
케로로중사에게 이런뜻이 있다니..ㅋㅋㅋ
쿠로로=쿠로쿠로=뱅글뱅글
타마마=타마타마=가끔,우연히
기로로=기로기로=눈알이 반짝
도로로=도로도로=유령,요괴가 내는 소리 둥둥
케로로중사에게 이런뜻이 있다니..ㅋㅋㅋ
2008년 6월 17일 화요일
firefox plugin
FireFox Extensionの作り方(らしきもの)
FireFox Extensionの作り方は,このサイトが 非常に充実している。正直,ここを誰か翻訳すればオッケエといった感じで,ボクが何か書くまでもないと思う。
まあいいや。ちょいと続けよう。
FireFoxのExtensionは,拡張子こそ「.xpi」になっているが,構造は.zipファイルそのもの。Windowsで作るときは普通のアー カイバを使えばいい。んでもって見えるのは
install.js
install.rdf
chrome/なんとか.jar
の三つだけ。しかもinstall.jsはどうやら古いMozilla向けで,FireFox向けではないようだ。というのも両者を見ると,明らかに情報 が重複しているし,FireFoxのパッケージングにそう説明してある。これで古いMozillaにインストールできるかどうか は,正直なところわからない。
FireFoxで「ツール」メニューで「拡張機能」を選択したときに,インストール済みのExtensionが表示される。ここに表示される情報は,こ のinstall.rdfに記述したものだ。だから,見栄えを考慮する人はちゃんとここから書かなければいけない。
install.rdf
*jarファイルの構成
で,拡張機能の本体だが,これが「nantoka.jar」なわけだ。こいつもxpiと同様,jarといってもzipである(jarのフォーマッ トって,元々zipだったっけ?tar.gzだと思っていた…)。こいつをひもとくと「content」と「skin」というフォルダが作られる。 skinの方はイマイチよくわからないが,インストール済み拡張機能で表示されるアイコンなんかはこっちに入っている。
nantoka.jarはこんな構造だ。nantoka.jar
+-- content -- nantoka --+-- nantoka.js
| +-- nantoka.xul
| +-- contents.rdf
| +-- about.xul
| +-- config.xul
|
+-- skin -- classic -- nantoka --+-- nantoka.png
+-- nantokadb.png
+-- contents.rdf
contentの方が処理の本体部分である。たぶん構造上決まっているのだと思うが,そこにはマトリョーシカ人形のようにフォルダがまたある。その名前 はさっきの「nantoka」だ。実はこれが「nantoka」でなければならないのは,十中八九install.rdfに記述してあるからだと睨んでい るのだが,今ひとつ自信はないし,試す気もない。実は最初に作ったパッケージで一度,FireFoxが起動しなくなったのだ。とりあえずリカバリ方法が分 かったので事なきを得たが,またあれをやるのかと思うとちょっとね。あと適当なデバッグ方法がないのも正直,往生した。
contents.rdfその1
FireFox本体に結びつける接着剤がcontents.rdfということになるようだ。contents.rdfについては, install.rdfに特に記述していないので,デフォでこういう名前にしなければならないのだろう。skinの方にもあるところを見ると,中身を自己 参照できるようにするシカケとしてcontents.rdfを使っていると判断してよさそう。contents.rdfはこんな感じになる。
正直言って,この内容は今ひとつよくわからない。
特にurn形式による参照とディレクトリ構造の一貫性がイマイチ不明。大体,何をどこに登録しているのやら…。
nantokaOverlay.xulとか
で,操作に絡む部分を.xulに記述する。.xulは基本的にUIを構成する。例えばメニューを増やすのも.xulに書く。そしてその操作をしたときに呼び出すべきJavaScriptファイル とそのファンクションも指定する。
メイン部分(nantokaOverlay.xul)
について(about.xul)
これを.zipで固めてリネームして,って作業を繰り返していって.xpiファイルを作ればOK。かんとか!はバケラッタするが。
作ったxpiはここ。冒頭に紹介したサイトのhelloworldと比較したりすると,どこを直せ ばよいのかが浮き彫りになってよいかも。だってほとんど一緒だからね。
設定(config.xul) 3/14 追記
ダイアログ・ボックスの中に今回はJavaScriptも書いている。
ここでのポイントは二つ。preferences文字列の設定/取得と,ファイル・ダイアログの呼び出し(ファイル名の設定をしたため)である。
いずれにしても,FireFox/Mozillaのオブジェクト・モデルが分かってないと,結構キツいというか。なぜ「getService」なのか 「createInstance」なのかとか考えると,アタマがウニになるのでそういうものだと割り切っている。
preferences文字列の設定/取得はこんな感じ。
var prefIn = Components.classes["@mozilla.org/preferences-service;1"];
var prefs = prefIn.getService(Components.interfaces.nsIPrefBranch);
設定済みの値 = prefs.getComplexValue("へらへら設定", nsISupportsString).data; // 日本語通るかどうかは知りません。ご注意を。
prefs.setComplexValue("へらへら設定", nsISupportsString, "設定する値");
ファイル名については,ファイルを選択するダイアログボックスを呼び出せる。ただしそ のへんに転がっているサンプルだと失敗する可能性があるから注意されたい。そのコードを紹介するとこんな感じ。
var fp = Components.classes["@mozilla.org/filepicker;1"]
.createInstance(Components.interfaces.nsIFilePicker);
alert("try to init fp");
// fp.init( window, "Select a File", nsIFilePicker.modeOpen); //あやまり
fp.init( window, "Select a File", fp.modeOpen); //正しい
alert("let's show fp");
var res = fp.show();
// if (res == nsIFilePicker.returnOK){
if (res == fp.returnOK) {
fpというのは,nsIFilePickerクラスのオブジェクトだと思ってもらえれば大体間違っていない。インタフェースをインスタンス化したもの,と いった方が正確ではあるが。
おそらくMozillaでは正しいコード。この「あやまり」としているコードを書け,と書いてあるサイト(公式サイトを含む)の方が圧倒的に多い。ただし それはFireFox Extensionの書き方の紹介ではなく,MozillaあるいはXULを使ったアプリケーションの記述方法として説明している。ここから推測するとお そらくMozillaでは正しく動くのだろうということだ。
総評 こう書くと簡単だが,デバッグが面倒。もしかしたらデバッガ()が使えるのかもしれないが,その使い方は分からず。デバッグ中にこのデバッガ動かしても反 応なかったし。エラーもJavaScriptコンソールに出るときと出ないときがあるし。いちいちインストール→再起動→テスト→アンインストール→再起 動を繰り返すのは面倒。JavaScriptを変えるだけなら,FireFoxのExtensionを格納するディレクトリ(例えばC:\ Documents and Settings\ユーザー名\Application Data\Mozilla\Firefox\Profiles\人によって違う名前\extensions\GUID)に入る.jarファイルだけを入れ 替えてFireFoxを再起動するというのでもいける。
あと,ちょっとパス名をしくじっただけでFireFoxは起動しなくなる。セーフモードで動いてくれればまだめでたいが,プロセスがゾンビ状態になるこ とも珍しくない。この場合は,タスクマネージャでプロセスを殺したあと,Chromeディレクトリ(C:\Documents and Settings\ユーザー名\Application Data\Mozilla\Firefox\Profiles\人によって違う名前にある)を消して(も大丈夫だが,普通はリネームするか), XUL.mflファイルを消すと再起動が可能になる。その際,入れておいたはずのほかの拡張機能も一蓮托生になるかもしれないが。
피드 구독하기:
덧글 (Atom)

