본문 바로가기

c#

(13)
ASP.NET Performance Tips http://weblogs.asp.net/haroonwaheed/ASP.NET-Performance-Tips 페이지의 번역, 요약 Remove Unused HTTP Modules (불필요한 HTTP Module의 삭제) HTTP Modules 은 사용자로부터 각각의 Request를 전달 받을 때 마다 Intercept 를 하게 된다. 그리고 생각보다 많은 Module들이 선언되어 있는 경우가 종종 있는데, 이런 경우에는 불필요하게 선언되어있는 모듈들을 솎아내면 성능 향상에 도움을 준다. 다음 항목 : 을 사용하지 말 것 Product 레벨로의 배포를 할 때 정말 쉽게 볼 수 있는 이 구문은 성능 하락에 엄청난 영향을 준다. 이는 ASP.NET 페이지의 컴파일 시간을 더 걸리도록 하고 디버깅을 위해 코드 ..
[C#] LINQ (Language Integrated Query) : 새로운 시도 LINQ 라는 것에 대해서 개괄적인 내용만 봤을때는 어땠든 Data 를 핸들링하는 기술임에는 틀림없다고 여겼다. 실제로 .NET 3.5 에서 부터 추가된 꽤 최신의 기술이다. 새로운 통합을 통해서 새로운 표준이 되려고 하는 시도가 보이는 다소 야심찬 기술이 바로 이 LINQ 라고 볼수 있다. 어떠한 데이터의 집합들을 LINQ 라는 한가지의 언어를 통해서 .NET Framework 를 사용하는 모든 언어에서 사용하도록 하는 시도이다. SQL 과 더불어 또 다른 표준이 되려는 시도가 보인다. 이런 좋은 시도에도 불구 하고 내가 공부하기 위해 보고 있는 교재에서는 LINQ를 배우기 이전에 이 기술의 허와 실을 낱낱히 공개한다. 결국은 Language에서 항상 화두가 되는 문제인 Coupling(결합도), Co..
[C#] 3.0 의 새로운 기능들 w4wawwwaaC# 에는 자바와는 다른 기능들이 많이 있다. 좀더 융통성있고 개발자 편의적인 부분이 있다. 그중에서 코드의 생산성을 높이고 조금 더 개발을 수월하게 해주는 C# 3.0의 새로운 기능들을 소개 하려고 한다. 1. 암묵적인 타입 : var var test = 1234; // test = "Hello"; // 자바스크립트와는 달리 최초 선언된 형태의 변수로 쭉 간다. 다른 형태로 변경이 불가능하다. // 암묵적 타입을 헷깔리게 왜쓰나여? ---> LINQ에서 꼭 필요하기 때문이랍니다. Console.WriteLine("암묵적 타입 사용 : {0}", test); Javascript 의 var 와는 다르게 초기에 선언해준 인스턴스의 유형을 그대로 가져간다. 때문에 다른 타입의 인스턴스도 올 수..
[C#] 의 고급 문법 : Generic 자바에서 Generic 이라는 것을 처음 접하면서 C++에 있는 Template 라는 것과 많이 비교되며 배운 기억이 있다. Generic 이라는 것이 Template 랑 유사할 것이지 같은 의미로 사용되지 않는다는 점을 꼭 기억했으면 한다. 실제로 자바 뿐만아니라 C#에서 사용되는 Generic 이라는 문법 역시 C++의 그것과는 많이 다르게 단순하며 그만큼 또 유연하지 못하고 기능도 적은 편이라고 한다. Generic을 사용하는 것은 코드의 재사용성을 높여서 타입에 대한 안전성을 극대화시키는 장점이 있지만 반면에 코드의 크기가 커지고 가독성이 떨어지는 불리함이 있다. 코드의 크기가 커지는 것에 대해서는 문제삼기보다는 가독성에 대해서 문제 삼을 점이 많다. 가독성이 떨어진다는 것은 그만큼 소스코드를 이..
[C#] 인터페이스를 사용하는 이유가 뭘까? 인터페이스는 내가 배운 개념중에서 가장 이해가 안가고 왜 있어야되는지를 아직도 잘 모르겠는 것 중에 하나다. 사실 인터페이스에 대한 내용을 싣기에는 부족한 내공이지만 배우고 안 만큼만 블로그를 통해서 적어보려고 한다. 인터페이스라는 녀석은 아주 간단한 형태를 띠고 있다. class 라는 선언문 대신에 interface 라고 선언을 하고.. 그 안에는 접근제어자(Access Modifier : public protected private) 가 없는 메소드만이 존재할 수 있게 된다. interface INoodle { void cookPasta(); void cookRamen(); } 아주 심플한 모습인데.. 왜 이런 뼈다귀 같은 구조를 짜놓으며 왜 이런 구조의 인터페이스가 필요한 걸까? 메소드를 선언하는 ..
[C#] 왜 추상클래스를 사용하게 될까? 왜 추상클래스를 사용해야할까요? 어떤 기술의 사용이라는게 좋은 취지에서 사용이 되었더라도 다른 부분에서의 예기치 못한 불협화음을 만들어 낼 수 있다. 클래스의 상속이 그러할지도 모르겠다. 상속을 설명하며 Animal 이라는 클래스와 Cat, Dog 라는 클래스는 IS 의 관계를 만드는 관계를 맺고 있다. 그러면서 생기는 논리적인 문제는 구체적이지 않은 Animal 이라는 클래스의 인스턴스를 만들 수 있다는 점이다. Animal ani1 = new Animal(); Animal ani2 = new Dog(); Animal ani3 = new Cat(); 그럼 Animal 이라는 클래스로부터 Dog, Cat 이라는 클래스가 공유해야할 것들은 공유하되 직접적인 Animal 클래스의 인스턴스의 생성을 막으려면 ..
XML을 처음으로 사용해보다.. XmlDocument, XmlReader 클래스 귀찮아 프로그램을 사용하다보니까 점점 욕심이 많이 생깁니다. 프로그램의 기능 자체를 사람의 개입 없이 자동으로 처리 해 주고 싶은 마음까지 생기니까요.. 뭐 물론 그렇게 하기 위해서는 자연어 처리라는 난제를 해쳐 나가야하는데.. 이건 순전히 욕심이고 -_-;; 어쨌거나.. 네이버를 검색하면 각종 광고에 플래시들이 난무하는데다가 특히 플래시같은 경우에는 굉장히 리소스를 많이 잡아먹어서 버벅댑니다. 그 때문에 메모리 최적화나 성능을 고려 안한 중구남방의 귀찮아 같은 경우는 -ㅅ-;;.. 좀 암울합니다. 그래서.. 네이버 OpenApi 를 통해서 검색 데이터를 XML 데이터로 받아오는 방법을 알게 되었습니다. 확실히 XML 데이터로 받아오는 건 알겟습니다만.. 이 XML 데이터를 다시 객체로 만들 방법을 전혀..
[C#] HtmlElement 클래스 ScrollIntoView() 메소드 사용 귀찮아를 만들면서 포인트를 둬야할 부분중에 하나가.. -_-; 자동 스크롤이 되었으면 좋겠다.. 라는 점이었다. 서버쪽의 소스를 알수도 없는데다가.. 서버쪽에 지장을 안주고 웹 브라우저만을 통해서 파일을 찾아 갔으면 좋겠는데... 라는 점에서 시도를 해었는데.. ㅎㅎ 어쨌건.. HtmlElement 클래스에 있는 ScrollIntoView 라는 메소드가 그 역할을 대신할 수 있었다. 요녀석을 찾아내기까지는 굉장한 시간이 걸렸다 -_-;; 처음에 WebBrowser 라는 클래스 객체에서 부터 Document 라는 자원을 얻어와야 한다.. 얘는 한마디로 웹페이지의 HTML 소스코드를 가져오는 역할을 한다. 그래서 태그 단위나 ID 단위로 가져 올 수 있다. HTML 코드 자체도 구조화가 되어 있기 때문에 가..