본문 바로가기

Programming/.NET

[C#] 로그 데이터 다루기 C#에서 로그데이터를 다루려면 EventLog 클래스를 사용합니다. EventLog el = new EventLog("System"); foreach (EventLogEntry ele in el.Entries) Response.Write(ele.Source + ":::" + ele.Message + " "); 위 예제는 System부분의 로그데이터를 읽어오도록 한 것이며 각 로그를 EventLogEntry개체를 통해 이벤트발생 주최와 로그내용을 확인하고 있습니다. 만약 Application이나 Security등 다른 범주의 로그를 확인하려면 EventLog객체 생성시 해당 값을 지정해 줄 수 있습니다. if (!EventLog.SourceExists("cliel application")) EventLog.. 더보기
정규식(Regular) 1. 일반적인 문자열에 대응 - "문자열" string s = @"abcdefghijklmn"; Regex regex = new Regex("cde"); //문자열중 cde를 찾음 MatchCollection mc = regex.Matches(s); foreach (Match m in mc) Console.WriteLine("{0}:{1}", m.Index, m.Value); 2. 알파벳 대소문자 문시 - RegexOptions.IgnoreCase string s = @"abCDEfghijklmn"; Regex regex = new Regex("cde", RegexOptions.IgnoreCase); 3. 한문자와 일치 - . string s = @"aaa aba abb bac def"; Regex re.. 더보기
힙과 스택 컴퓨터(Computer)가 프로그램(Program)을 실행하려면 우선 프로그램의 코드(Code)와 프로그램에서 사용하는 데이터를 메모리(Memory)에 적재해야 합니다. 그리고 메모리에 적재된 프로그램코드를 CPU가 하나씩 실행함으로서 결과적으로 컴퓨터가 프로그램을 동작시키는 것입니다. 이때 데이터를 저장하기 위한 메모리는 용도에 따라 힙과 스택으로 분류될 수 있습니다. 1. 스택(Stack) 프로그램이 실행되는것 자체를 하나의 프로세스(Process)라고 볼 수 있습니다. 그런데 프로세스가 시작되면 하나의 주 스레드(Thread)가 실행되며 실제 프로그램의 동작처리는 이 스레드가 담당하게 됩니다. 하나의 프로세스는 여러개의 스레드를 실행시킬 수 있고 이 스레드가 모두 실행이 종료되어야 비로소 프로세스도.. 더보기
[C#] StringBuilder 문자열을 다루고자 할때 흔히 사용하느 타입이 string입니다. string s = "hello world!"; Console.WriteLine(s); string은 한번 문자열값을 할당한 뒤 변경이 없는 경우에는 쓸만하지만 문자열 추가와 같은 잦은 변경이 발생한다면 StringBuilder를 사용하는 편이 성능상 훨씬 이득입니다. StringBuilder sb = new StringBuilder("hello world!"); sb.Append("abc"); sb.Append("def"); Console.Write(sb.ToString()); string은 값이 변경될때마다 변경이후의 크기만큼 메모리를 힙에 할당하고 문자열의 내용전체를 복사해 할당된 힙메모리에 저장한뒤 해당 힙의 주소를 string변수에.. 더보기
[C#] Stopwatch System.Diagnostics.Stopwatch를 이용하면 시작과 끝사이의 시간차를 알 수 있습니다. System.Diagnostics.Stopwatch w = new System.Diagnostics.Stopwatch(); w.Start(); int length = 5; for (int i = 0; i < length; i++) Thread.Sleep(1000); w.Stop(); Console.WriteLine(w.Elapsed.TotalSeconds + " 초 소요됨"); 더보기
가비지 수집기 : GC (Garbage Collector) GC는 힙에 할당된 객체의 소멸을 자동으로 처리하여 메모리를 관리합니다. 이때 객체가 할당된 힙메모리의 관리는 세대로 구분하여 처리하게 됩니다. 예를 들어 static void Main(string[] args) { MyClass m = new MyClass(); Console.WriteLine(GC.GetGeneration(m)); } 위에서 처럼 new를 통해 최초로 개체를 생성하면 이 개체는 0세대로 분류됩니다. 참고로 GC의 GetGeneration메서드를 사용하면 특정 개체의 세대를 확인할 수 있습니다. 이렇게 프로그램 내에서 생성되는 참조형식의 개체들은 0세대로 분류해 계속 힙메모리를 할당하다가 어느정도 용량이 커지게 되면 GC가 자동으로 실행되어 현재 0세대중 사용되지 않는 개체를 골라내어 .. 더보기
[C#] null 조건 다음은 참조형 변수가 null인 상황을 확인하는 전형적인 방법입니다. myClass m = new myClass(); if (m != null) { Console.WriteLine(m?.i); } 하지만 null 조건을 사용하면 아래와 같이 소스코드를 간단히 변경할 수 있습니다. myClass m = new myClass(); m = null; Console.WriteLine(m?.i); 만약 m이 null이라면 null을 반환하고 그렇지 않으면 m의 멤버변수 i의 값을 출력할 것입니다. 더보기
[ASP.NET] 인증및 접근제어와 로그인 1. 인증 웹사이트에서 사용하는 대부분의 인증은 Form인증방식입니다. 사이트 자체에서 사용자의 정보를 확인하고 인증을 처리해 주는 방식입니다. 이 방식의 인증을 활용하기 위해서는 우선 web.config의 하위에 다음과 같이 인증방식을 설정합니다. 필요에 따라 요소를 통해 인증과 관련된 여러가지 설정사항을 등록할 수 있습니다. ASP.NET은 인증이 완료되면 사용자에게 특정 쿠키값을 제공하는데 name은 이 쿠기값의 이름을 의미합니다. 이름의 기본값은 .ASPXAUTH입니다. 사용자가 인증이 필요한 페이지에 접속을 시도하거나 로그인을 시도하는 경우 보여줄 로그인을 페이지는 loginUrl로 지정합니다. 인증이 완료되고 나면 쿠키값을 받게 되는데 이때 쿠키의 보호수준을 protection으로 지정합니다... 더보기