Wireshark 패킷분석툴

전문적으로 쓸줄은 모르지만... 가끔 써먹어봤다.

http프로토콜같은거 어디로 가는지 확인할때...

근데 요즘은 크롬에서도 네트워크 흐름을 확인할 수 있어서 잘 안쓴다

현존하는 프로토콜 정보를 거의 다 가지고 있다는것같다. 계속추가되고 있고....

http://www.wireshark.org/

Ssh Client - Win, Mac, Linux

http://sourceforge.net/projects/clusterssh/

여러개의 창을 띄워 같은 작업을 동시에 처리

리눅스 GUI

http://www.millardsoftware.com/content/puttycs-putty-command-sender-181

위랑 같은거 윈도우용

 

secureCrt

윈도우용 - 상용

 

XShell

넷사랑이라는 회사의 제품. 개인사용자 무료 정도로 푸는것같다
다운받을 때 귀찮음

 

SSH Secure Shell Client v3.2.9

비상업용은 무료, 원본파일이 어디서 배포되는지 모르겠다

검색해서 다운.

http://en.wikipedia.org/wiki/Secure_Shell

 

Tera Term

일본계열 오픈소스 SSH 클라이언트. 몇번안써봤는데 괜찮은듯

http://ttssh2.sourceforge.jp/

 

c# 시간비교하기 datetime과 timespan 이용... 여러가지 비교

이거가지고 삽질 많이 했는데....
딱 이거다 하는 자료가 거의 안 보였었다.

우리나라 C#하는 사람들이 별로 없어서 그런걸까..
C#을 하는 사람이 없다기보다는.. C#으로 윈도우 프로그램을 만드는 사람이 별로 없는 것 같다.
델파이보다 오히려 더 적을지도...
아마추어들이 하려면 C++에 api mfc 핥아먹고 바로 C#으로 넘어오는 편이 더 나을 것 같은데...

--------

private void button1_Click(object sender, EventArgs e)
{
  TimeSpan asef = new TimeSpan(15,30,00);
  Console.WriteLine(asef);
  Console.WriteLine(DateTime.Now.Add(asef));//현재시간에 15시간을 더하기
  Console.WriteLine(DateTime.Now.TimeOfDay);//0시부터 현재시간까지를 TimeSpan값으로 반환
  Console.WriteLine(TimeSpan.Parse("15:30:00"));//TimeSpan값을 지정.. 문자열
}
DateTime과 TimeSpan 둘 다 시간을 표현한다.
다른점은...
DateTime은 몇월몇일몇시몇분을 달력이나 시계를 표현하고
TimeSpan은 1시간, 2시간,,,... 이런걸 표현한다고 할까..
시간과 시각?
전자시계 개념으로 설면하자면... 10분짜리 타이머를 맞춘다면... 
TimeSpan.. 알람을 맞추면..DateTime이렇게 보면 쉬울까...
DateTime - DateTime은 TimeSpan자료형이 된다.
(DateTime)2011년 2월 16일 21시 - (DateTime)2011년 2월 16일 15시 = (TimeSpan)6시간
위의 소스코드만으로도 설명은 충분할 것 같지만.... 추가하자면...
8시부터 뭔가를 실행시키고 싶다! 라고 한다면....
타이머 돌리고... System.Windows.Forms.Timer fajklefjl = new [tab] ();
if(DateTime.Now.TimeOfDay >TimeSpan.Parse("08:00:00"))
{}
 

C# UserComponent 쓸때 Object reference not set to an instance of an object: 오류경험처리

//에러가 발생했던 초기상태
public static string[] strArr주식코드;
public static string[] strArr옵션코드;
public static string[] strArr주식선물코드;
public static string[] strArr주식옵션코드;
문자열 클래스를 만들어놓고 생성자가 뜨면 이것들을 한번에 초기화 시켜주는 형태로 만들었다.
null 어쩌고 오류가 떴다. 근데 처음부터 떴으면 진작에 고쳐놨을건데 어이없게도 한참 잘 돌아가다가 그냥 갑자기 뜬다.;;;

어쨌든 그래서 눌들을 없애줬다.
프로그램 제일 앞부분에 이 클래스의 생성자를 호출 해 주기 때문에 순서상으로는 문제가 없지만....
비주얼 스튜디오가 이거 안하면 유저 컴포넌트를 안 띄워준다니까 할 수 없지..

//수정후
public static string[] strArr주식코드 = { "", "" };
public static string[] strArr옵션코드 = { "", "" };
public static string[] strArr주식선물코드 = { "", "" };
public static string[] strArr주식옵션코드 = { "", "" };
대충 초기화시켜줬다. 에러는 없어졌다.
어차피 생성자 뜨면서 값도 변경되니까 아무거나 넣어도 상관도 없고... 
어쨌든 한 20분쯤 골치 썪은 것 같다.
외국 커뮤니티 보니까 예외처리를 해버리라는 말도 있고 그랬는데...

값을 선언할 때는 무조건 초기화를 시켜놓자... 특히 static은

int int숫자= 0;

string str문자열=""

c#는 한글로 변수명이 잘 만들어져서 자주 사용하는데... 편하다.

호환이 안된다는 말도 있던데... 뭐 혼자 쓸거니까

그리고 어차피 한국에서만 쓴다면 문제 없을듯....

VB6 엑셀파일 읽고 쓰는 예제

Public objXcl As Excel.Application
Set objXcl = Excel.Application
objXcl.Workbooks.Add
objXcl.Sheets(1).Select

'Open csv file, then read
Do Until EOF(nFileNbr)
Input #nFileNbr, sTextField(0), sTextField(1), sTextField(2), sTextField(3)

With objXcl
Range("B1").Select
.Range("B1").Value = sTextField(0)
Range("B2").Select
.Range("B2").Value = sTextField(1)
Range("B3").Select
.Range("B3").Value = sTextField(2)
End With
Loop

    FileNum = FreeFile
    Open "e:\data\code\VBElw.csv" For Input As #FileNum
    Line Input #FileNum, nextLine
    ElwCode = Split(nextLine, vbLf)
    n5 = UBound(ElwCode)
    'Open "e:\data\code\VBElw.csv" For Input As #FileNum
    'i = 0
    'Do Until EOF(FileNum)
        'ReDim Preserve StockCode(i)
        'Line Input #FileNum, nextLine
        'LinesFromFile = LinesFromFile + nextLine + vbCr + vbLf
        'splitLine = Split(nextLine, ",")
        'elwCode(i) = splitLine(0)
        'ElwCode(i) = nextLine
        'i = i + 1
    'Loop
    
    FileNum = FreeFile
    Open "e:\data\code\VBStockFuture.csv" For Input As #FileNum
    Line Input #FileNum, nextLine
    StockFutureCode = Split(nextLine, vbLf)
    n6 = UBound(StockFutureCode)
    'Line Input #FileNum, LinesFromFile
    'splitLines = Split(LinesFromFile, ",")
'
    'sFilename = splitLines(0)
    'sFilename = splitLines(1)
    'sFilename = splitLines(2)
    'i = 0
    'Do Until splitLines(i) <> Null
    'splitLine = Split(splitLines(i), ",")
    'elwCode(i) = splitLine(0)
    'i = i + 1
    'Loop
    'Text1.Text = splitLine(0)

VB6 구닥다리라 문제가 참 많다. 할 수 없이 쓰는데 돌겠다.ㅠ 0D 0A 개행문자 문제...

vbCr + vbLf
0A 0D
Dim nextLine As String
    Dim i As Integer
    Dim FileNum As Integer
    Dim a As String
    FileNum = FreeFile
Open "e:\data\code\VBStockFuture.csv" For Input As #FileNum
    i = 0
    Do Until EOF(FileNum)
        ReDim Preserve StockCode(i)
        Line Input #FileNum, nextLine
        StockFutureCode(i) = nextLine
        i = i + 1
    Loop
Err:
    Close FileNum

어디서 이런걸 주서다가 쓰려고 하는데...
이렇게 하면 한줄씩 읽을 수 있다고 했는데... 죽어도 안되서
헥스코드로 열어봤더니 개행문자가 0D 0A로 돼 있다
여긴 문제가 없는데...

UTF8로 저장한 문선데.. 그게 문제인건가
제대로 인식을 못하는 것 같다
파일을 통째로 읽어서 저장을 해 버린다
VB6은 UTF8이건 뭐건 헥스에서 개행문자를 발견했으면 개행을 해야지 0D 0A인데 그걸 왜 이렇게 헤매는건지

vbCr은 먼 음표모양이고
vbLf는 다이아1개짜리 카드모양.. 0D 0A로 뜬다

Line저걸로 해서 일단 배열로 가져오고 
저장문자배열 = Split(문자열,vbLf)
로 처리했다
Line Input #FileNum, nextLine
StockCode = Split(nextLine, vbLf)

이것도 편법인지는 모르겠는데 참... 할줄도 모르는거가지고 고생했네

C# sql 데이타베이스 연결 문자열

SqlConnection myConnection = new SqlConnection ("Data Source=localhost;Initial Catalog=AutoLot;Integrated Security=True;Pooling=False
");

SqlCommand myCommand = new SqlCommand("INSERT INTO [hello] ([hello]) VALUES (@hello)", myConnection);

SqlParameter helloParam = myCommand.Parameters.Add("@hello", SqlDbType.VarChar );

helloParam.Value = MyTextBox.Text;

myConnection.Open();

myCommand.ExecuteNonQuery();

ReplyQuote

이것때문에 한참 고생하다가 겨우... 찾았다
visual studio 2010 의 서버 익스플로러에서 데이타 커넥션 메뉴에 db를 띄워놓고
클릭하면 오른쪽 아래 속성창에

이런식으로 나온다.저 부분을 커넥션 스트링에다가 그냥 대입하면 된다.
문자열을 어떻게 넣어야될지 몰라서 고생했다면... 이렇게 하는것도 좋을듯... 한참고생했네

/**처음에 썼다가 안되서 이것저것 덕지덕지 붙여가지고 소스가 너무 더러워졌다. 엄청난 노가다 소스를 제작했다가 실패한부분
                ////SQL입력,.. 입력할게 너무 많아서 이걸로 못해먹겠다 해결방법은 스트링에 반복문 합체하기로 해서 입력하면 될듯하다.
                string cnStr ="Data Source=localhost;Initial Catalog=AutoLot;Integrated Security=True;Pooling=False";
                string connectionString =//"Source=localhost;Initial Catalog=StockPrice;Persist Security Info=True;User ID=아이디;Password=비번";
                    "Data Source=MSSQLSERVER; Integrated Security=SSPI;Initial Catalog=StockPrice;connection timeout=5";
                    /** "user id=아이디;" +
                                       "password=비밀번호;
server=localhost;" +
                                       "Trusted_Connection=yes;" +
                                       "database=StockPrice; " +
                                       "connection timeout=5";**/
                // Create a connection string via the builder object.
                /**
                SqlConnectionStringBuilder cnStrBuilder = new SqlConnectionStringBuilder();
                cnStrBuilder.InitialCatalog = "StockPrice";
                cnStrBuilder.DataSource = "localhost";
                cnStrBuilder.ConnectTimeout = 10;
                cnStrBuilder.IntegratedSecurity = true;
                **/
                string connectionString = "Data Source=localhost;Initial Catalog=AutoLot;Integrated Security=True;Pooling=False";
                SqlConnection sqlCn = new SqlConnection();

                sqlCn = new SqlConnection();
                sqlCn.ConnectionString = connectionString;
                //sqlCn.ConnectionString = cnStrBuilder.ConnectionString;
                sqlCn.Open();

                // Format and execute SQL statement.
                string sql = string.Format("Insert Into FutureHoga" +
                  "(date, hotime, sametime, futcode, offerho1, offerho2, offerho3, offerho4, offerho5, bidho1, bidho2, bidho3, bidho4, bidho5, offerrem1, offerrem2, offerrem3, offerrem4, offerrem5, bidrem1, bidrem2, bidrem3, bidrem4, bidrem5, offercnt1,offercnt2,offercnt3,offercnt4,offercnt5, bidcnt1,bidcnt2,bidcnt3,bidcnt4,bidcnt5,totofferrem,totofferrem,totoffercnt,totobidcnt" +
                  "('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '{9}', '{10}', '{11}', '{12}', '{13}', '{14}', '{15}', '{16}', '{17}', '{18}', '{19}', '{20}', '{21}', '{22}', '{23}', '{24}', '{25}', '{26}', '{27}', '{28}', '{29}', '{30}', '{31}', '{32}', '{33}', '{34}', '{35}', '{36}', '{37}', '{38}')",
                  DateTime.Now.Date,
                  m_RealFH0[i].GetFieldData("OutBlock", "hotime"),
                                     (sametime++),
                                     m_RealFH0[i].GetFieldData("OutBlock", "futcode"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerho1"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerho2"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerho3"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerho4"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerho5"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidho1"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidho2"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidho3"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidho4"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidho5"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerrem1"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerrem2"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerrem3"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerrem4"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerrem5"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidrem1"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidrem2"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidrem3"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidrem4"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidrem5"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offercnt1"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offercnt2"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offercnt3"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offercnt4"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offercnt5"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidcnt1"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidcnt2"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidcnt3"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidcnt4"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidcnt5"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "totofferrem"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "totofferrem"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "totoffercnt"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "totobidcnt"));

                // Execute using our connection.
                using (SqlCommand cmd = new SqlCommand(sql, this.sqlCn))
                {
                    cmd.ExecuteNonQuery();
                }
                sqlCn.Close();//SQL닫기

C# Stream - FileStream, MemoryStream, NetworkStream, GZipStream

스트림의 종류들

FileStream
Close()
Read()
Seek()
Write()
MemoryStream
Close()
Read()
Seek()
Write()
NetworkStream
Close()
Read()
Seek()
Write()
GZipStream
Close()
Read()
Seek()
Write()

FileStream은 바이트 형태로 파일을 작성
문자열을 바이트 배열로 변환해야함
마지막에 파일을 닫아주지 않으면 다른 프로그램이 파일을 사용하지 못함

StreamWriter의 Write()와 WriteLIne()메소드를 호출해서 해겨

StreamWriter사용예

StreamWrite sw= new StreamWriter(@"C:\filename.txt"); //쓰기스트림
StreamReader sr = new StreamReader(@"C:\readfile.txt"); //읽기스트림
sw.WriteLine("쓰고싶은말들");
sw.Write("jlasdjlksdf");
sw.WriteLine("사과는 #{0} 껌은#{1}", apple, gum);
sw.Close();//sw닫기
sr.Close();//sr닫기
//닫는거 잘 확인해야됨

CryptoStream //스트림을 암호화하는 기능.. 암호화해서 다른 스트림으로 전송하는데 사용
Close()
Read()
Seek()
Write()

name space System;
public inerface IDisposable();
void Despose();

-BinaryReader

[C#] 배열 LIST 열거형 컬렉션

List 인스턴스 생성

List  peoples = new List();
string[] name = new string[NUM];

배열은 길이를 미리 알아야되고뭐 이래저래 쓰기 불편한데...
List는 편하게 쓸 수 있다.<people>이라고 선언을 했으이 이 List에서는 people만 쓸 수 있다. 
 

peoples.Add(new people());//이런식으로선언
/////////////////////////////
//아이템추가
people x = new people();
peoples.Add(x);
//////////////아이템한개 더 추가
people y = new people();
peoples.Add(y);
////아이템이 몇 개 있는지 확인
int peolecount = peoples.Count;
//특정아이템 확인
bool Isin = people.IndexOf(y);
//리스트 용량확인
int limit = people.Capacity;
//리스트 특저앙이템 제거
people.Remove(y);

비슷하긴한데 기록이 좀 틀린 것 같으니... 나중에 확인수정...

Sort()매서드는 List를 쉽게 정리하는 알고리즘 제공
CompareTo()는 객체를 비교하는 알고리즘
ICompare

enum