1.Parallel Programming

   쓰레드를 직접 다루지 않고 멀티쓰레드 프로그래밍을 할 수 있는 새로운 모델을 제시 우와.

   http://msdn.microsoft.com/en-us/library/dd460693.aspx


   http://msdn.microsoft.com/en-us/library/dd460685.aspx 우와 parallel stack 짱..


2.dynamic keyword 란 무엇인가 - 타입추정. InterOp 을 위해 태어난 놈인듯?

   http://msdn.microsoft.com/en-us/library/dd264736.aspx


3.Tuple - 여러개의 데이터를 넘기긴 해야겠고 클래스나 구조체 만들기는 뭐할때 유용!

   http://msdn.microsoft.com/en-us/library/system.tuple.aspx

   http://sankarsan.wordpress.com/2009/11/29/tuple-in-c-4-0/


4.아니 근데 var 키워드는 뭔가요?

    http://msdn.microsoft.com/en-us/library/bb384061.aspx

   이건 C# 3.0 부터 소개되었던 것 같은데 ( LINQ 하면서 등장한것 같음 )

   복잡한 타입 정보를 유저가 작성하지 않고 컴파일러에게 대신하도록 하는데 그 목적이 있는듯.

   내 생각에는 이걸 남발했다가는 가독성이 매우 크게 떨어질 것 같다.


5.dynamic과 var 의 차이는?

   dynamic은 runtime에, var는 compile-time 에 type이 결정됨.

   다시말해 var 는 그냥 타이핑을 컴파일러가 대신해주는 것.

   http://stackoverflow.com/questions/961581/whats-the-difference-between-dynamicc-4-and-var


6.Entity Framework

   http://msdn.microsoft.com/en-us/library/ex6y04yf.aspx

'C#, .NET' 카테고리의 다른 글

C# coding style guide  (0) 2011.06.17
class library 의 documentation 생성  (0) 2011.06.17
ReceiveFromAsync(), ReceiveMessageFromAsync() 버그  (0) 2011.06.17
직접 구현한 MinHeap  (0) 2011.06.17
value type에 관한 진실  (0) 2011.06.17
Posted by 휘사마
,

두 메소드 모두 udp socket에 대해서 사용하는 것인데


아주 심각한 버그가 있다.


ReceiveFromAsync() 의 경우 Completed event 발생 후 RemoteEndpoint가 '가끔' 올바르게 설정되지 않는다.


http://stackoverflow.com/questions/5802998/is-this-receivefromasync-bug


이런 현상이다. (내가 쓴 글임)



밑에 답글에 보면 ReceiveMessageFromAsync()과 SocketAsyncEventArgs.ReceiveMessageFromPacketInfo를 쓰라고 되어있는데


SocketAsyncEventArgs.ReceiveMessageFromPacketInfo.Address 는 항상 null 이다!!!!


http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.receivemessagefromasync(v=VS.90).aspx


여기 있는데로

To ensure that all IPPacketInformation objects are valid, an application should set the PacketInformation socket option to true before it is bound to a local endpoint using the SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean) method.

bind 하기 전에 소켓 옵션을 설정해도 안돼!!!


그래서 찾아보니..


ReceiveMessageFromAsync() 버그는 .NET framework 4.0에서 고쳐졌다고 한다.


http://connect.microsoft.com/VisualStudio/feedback/details/543700/net-framework-3-5-socket-receivemessagefrom-leaves-ippacketinformation-empty


아오 빡쳐ㅕ ㅁㄴ이라ㅜㅁㄴ인ㄻㄴㅇ


ReceiveFromAsync() 는 모르겠다. 고쳐졌나? ㅠㅠ




-------------------------------------------------


확인 결과 : ReceiveFromAsync(), ReceiveMessageFromAsync() 의 버그가 닷넷 4.0 에서 모두 fix 되었다.


근데 SocketAsyncEventArgs.ReceiveMessageFromPacketInfo.Address 에는 port가 없다. 으흑흑...

Posted by 휘사마
,

직접 구현한 MinHeap

C#, .NET 2011. 6. 17. 19:43

C# 에는 heap 도 없고 set도 없다. multiset 도 없다.


그래서 이런것들을 구현해놓은 


http://powercollections.codeplex.com/


이런 위대한 분도 계신다.




나는 네트워크 엔진을 구현하다가


"거의 정렬된 순서로 들어오는 input 에 대해 add,remove 성능이 좋은 min-heap" 이 필요했는데,


SortedList<T> 나 SortedDictionary<T> 를 써봐도 성능이 도통 좋지 못했다.


위에서 언급한 power collection 을 써봐도 마찬가지였고 그래서 직접 구현했다.




테스트코드와 함께 업로드한다. 테스트 코드는 완벽하게 sorting 된 input을 집어넣는데,


모든 경우에 있어 내가 구현한 heap이 가장 성능이 좋음을 알 수 있다.


딱히 sorting된 input에 대해 최적화를 할 수 없었는데, random input에 대해서도 아마 성능이 꽤 괜찮을 것이다.

 

Posted by 휘사마
,