'STL'에 해당되는 글 4

  1. 2009/11/06 My Recent Tweets 20091104
  2. 2009/07/13 수학적 엄밀함으로 살펴보는 C++ 타입과 알고리즘
  3. 2009/06/25 My Recent Tweets 20090624
  4. 2009/05/12 std::stack에 관한 소고

My Recent Tweets 20091104

 프로그래밍programming
  • RT repi: Metalscroll VS plugin looks good, need to try it, thx RT jburnett: repi re: rockscroll - see http://bit.ly/RLAWc #programming #
    • 유용했지만 개발이 중단되어 아쉬웠던 VS addin, rockscroll의 향상된 대안이 나왔습니다.
  • Stack Overflow Careers - an online CV service which is a spin-off of Stack Overflow: http://su.pr/2BVM13 #programming #
    • 스택오버플로의 또다른 서비스, 온라인 이력서 서비스가 생겼군요. 해외취업 고려 중이신 프로그래머라면 한번 이용해볼만할듯.
  • RT spolsky: Transcript & slides of amazing talk by jonskeet at London #DevDays http://is.gd/4LQTV #programming #
    • 왜 프로그래머들이 실패하는지 보여주는 귀여운(?) 슬라이드
  • RT programmingjoy: Recursion Using Trampoline Functions #programming http://bit.ly/1KWyoS #
    • 재귀를 구현하는 흥미로운 기법
  • RT programmingjoy: Innovating Cron: Announcing Norc #programming http://bit.ly/1Vwcbs #
    • 유닉스 계열에서의 잡 스케쥴링 도구인 cron을 대체하는 유틸 norc
  • RT programmingjoy: A customizable dynamic code colorizer for programming blogs #programming http://bit.ly/1n0GdP #
    • 또다른 프로그래밍 블로그를 위한 문법구문강조기
  • RT programmingjoy: Functional Programming with a Mainstream Language #programming http://bit.ly/311kB7 #
    • 요즘 대세인 함수형 프로그래밍에 대한 강연. 영어 필수.
  • RT programmingjoy: Power and complexity in a programming language #programming http://bit.ly/1BKNYL #
    • 프로그래밍 언어의 강력함과 복잡도의 상관관계에 관한 짧은 글
  • "Why expression templates matter ?" - A nice introduction to 'expression templates' : http://su.pr/6ydIaU #C++ #programming #
    • C++에서의 expression templates이 무엇인지 궁금하셨던 분들에게 강추
  • RT programmingjoy: Structural Regular Expressions , created by Rob Pike #programming http://bit.ly/1qqWNu #
  • RT programmingjoy: LuaJIT 2 beta released #programming http://bit.ly/PQyUj #
    • 루아Just-in-time 컴파일러의 최신 베타 버전
  • RT programmingjoy: Product Review: Das Keyboard Model "S" #programming http://bit.ly/dJ4vX #
    • 키보드 리뷰
  • RT spolsky: Grady Booch: "You may be surprised to hear that I'm firmly in Joel's camp." http://is.gd/4JxqS #programming #
  • Kiln - a complete source control management sytem based on Mercurial with tightly integrated code review: http://su.pr/3tv2NG #programming #
  • How to Write a Spelling Corrector (Compare implementations in several languages): http://su.pr/2kJ7DN #programming #
    • 스펠교정기에 대한 설명과 그의 다양한 프로그래밍 언어를 이용한 구현들
  • RT programmingjoy: The state of D programming. Is this situation accurate?! #programming http://bit.ly/4G1K4n #
    • D 언어를 5년 동안 사용해온 사람의 D 언어의 현 상황에 대한 다소 우울한 보고
  • RT gamearchitect: 15 Websites To Find Code Snippets With Ease: http://bit.ly/XMPXb #programming #
    • 코드 조각 찾는데 유용한 웹사이트 모음
  • RT programmingjoy: Git and Microsoft Development: A Success Story #programming http://bit.ly/4t0YzZ #
    • Git비주얼스튜디오와 같이 사용하는 것에 관한 간단한 소개글
  • RT programmingjoy: "Frames per second" is just not relevant | Rachels Lab Notes #programming http://bit.ly/3P73nP #gamedev #
    • 게임에서 프레임레이트가 생각만큼 중요하지 않다라는 논지의 글
  • RT mike_acton: Insomniac Games - Blog "How much does framerate matter?" http://bit.ly/RndVz #gamedev #
    • 윗글의 소재가 된 Insomniac Games 개발자의 글
  • RT programmingjoy: A new great programming language #programming http://bit.ly/XgGwT #
    • 리스프의 강력함과 파이썬의 가독성, C의 성능을 조합했다는 새로운 프로그래밍 언어
  • CLI 1.0.0 released - It is a DSL for defining command line interfaces of C++ programs: http://su.pr/2x2WG4 #C++ #programming #
  • RT programmingjoy: Subbuilds: build avoidance done right #programming http://bit.ly/uNKfF #
    • 최적화 분산 빌드 도구. 증분빌드에도 강하다고 하는데, 아쉽게도 VS 미지원
  • RT programmingjoy: Reddit: tells us hidden Features and Dark Corners of STL? #programming http://bit.ly/2nks7l #C++ #
    • STL의 잘 알려지지 않은 활용 기법들
  • RT programmingjoy: On the PIL -- a Platform Independent Language #programming http://bit.ly/3WX3KJ #
    • 플랫폼 독립을 위한 새로운 접근
  • RT programmingjoy: celebrate the 15th anniversary of the original Design Patterns from the Gang of Four #programming http://bit.ly/3kJVYM #
  • Why MIT switched from Scheme to Python: http://su.pr/1kcp2a #programming #
    • MIT가 프로그래밍 강좌 언어를 스킴에서 파이썬으로 바꾼 이유
  • Structure Padding Analysis Tools: http://su.pr/1hQ7Eq #C++ #programming #
    • PDB 파일을 분석해 C++ 구조체 패딩 정보를 알려주는 도구
  • RT programmingjoy: First issue of the left fold, a weekly digest of interesting articles about programming #programming http://bit.ly/Kt3Jd #
    • 주간 프로그래밍 관련 글들을 정리해 알려주는 서비스
  • RT unclebobmartin: RT nashjain: Object Orientation left me vulnerable to adding extra complexity http://bit.ly/29z4OZ #programming #
    • 개체지향에서 오는 쓸데없는 복잡성에 관한 경고
  • RT programmingjoy: Why good programmers are lazy and dumb #programming http://bit.ly/3UeCv8 #
    • 귀차니즘좋은 프로그래머의 자질이 될 수 있는지 설명하는 글
  • RT programmingjoy: Ars reviews Windows 7 #programming http://bit.ly/1b2okc Too long to read... T^T #
  • RT programmingjoy: langref.org: cookbook/programming examples: 12 languages: groovy, PHP, python, erlang, #programming http://bit.ly/3qnO3 #
    • 여러 프로그래밍 문제들에 대한 해법다양한 프로그래밍 언어로 제시해 보여주는 사이트
  • RT codemonkeyism: "Minimalism in Computing" http://bit.ly/4d4oVC #programming #
    • 컴퓨팅에서의 미니멀리즘에 관한 엣지있는 슬라이드
  • RT mike_acton: Thanks for the bug reports everyone! Just fixed the broken links. Insomniac R&D: http://bit.ly/nfJ6v #programming #gamedev #
    • 대인배 게임 회사 Insomniac의 새로운 R&D 사이트
  • RT programmingjoy: Tranform ASCII diagrams into beautiful figures #programming http://bit.ly/ShOHP #
    • 아스키 다이어그램을 이쁜 다이어그램 이미지로 변환해주는 도구

개발방법론methodology

그래픽스graphics
  • RT bjoernknafla: RT aras_p: New blog post: Deferred Cascaded Shadow Maps http://bit.ly/ibbAb #graphics #
  • Radeon HD 5800 Demos: http://su.pr/6OCKzb #graphics #
    • AMD에서 RadeonHD 5800 용 새로운 데모 둘을 발표했군요.
  • NVIDIA OptiX Now Available, but only for Tesla and Quadro: http://su.pr/1t7vYI #graphics #
  • RT nvidiadeveloper: GPU Technology Conference - recordings of sessions and keynotes now available! http://is.gd/4LYwU #graphics #
    • 엔비디아가 주최한 GPU Technology Conference 세션 및 키노트 동영상들이 공개되었습니다.
  • RT repi: RT thekhronosgroup: Full GTC OpenGL presentation available with audio http://tr.im/DsiG #opengl #nvidia #graphics #
    • 바로 위에서 언급한 GTC에서 발표되었던 OpenGL 관련 세션 슬리이드 및 오디오들
  • RT KageKirin: Firtree: A generic image processing framework in Launchpad http://tinyurl.com/yhvvuvb #graphics #
    • 오픈소스 그래프/노드 기반 GPU 가속 이미지 처리 프레임워크

병렬성parallelism

기타etc


크리에이티브 커먼즈 라이선스
Creative Commons License

'Tweets' 카테고리의 다른 글

My Recent Tweets 20091207  (2) 2009/12/10
My Recent Tweets 20091120  (0) 2009/11/24
My Recent Tweets 20091104  (0) 2009/11/06
My Recent Tweets 20091021  (0) 2009/10/22
My Recent Tweets 20090928  (0) 2009/10/01
My Recent Tweets 20090909  (0) 2009/09/10
Trackback 0 Comment 0

수학적 엄밀함으로 살펴보는 C++ 타입과 알고리즘


책 제목과 C++을 만든 이인 Bjarne Stroustrup의 추천 글귀에 끌려 이북으로 구입하였습니다.

일단 총평은 다음과 같습니다.
  • 굉장히 신선한 접근이다.
  • C++ 기준으로 설명하니 좋다.
  • 신선한 만큼 개념 잡기가 쉽지 않다; (생소한 용어와 상당히 추상적 수학적 개념 대거 등장)
  • 제대로 이해하려면 최소 한번 더 읽어봐야 할듯
  • 그럼에도 건질만한 건 있었다...
C++ STL의 알고리즘 방면으로 (자료구조가 아닌) 내공을 쌓고자 하는 분들에게 유용하리라 봅니다. 그리고 수학적 엄밀함과 추상화에 어느 정도 자신있는 분들께 추천드립니다. ^^


 * 이 포스트는 blogkorea [블코채널 : 웹, 컴퓨터, it에 관련된 유용한 정보 및 소식] 에 링크 되어있습니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 0

My Recent Tweets 20090624

크리에이티브 커먼즈 라이선스
Creative Commons License

'Tweets' 카테고리의 다른 글

My Recent Tweets 20090715  (0) 2009/07/15
My Recent Tweets 20090705  (0) 2009/07/06
My Recent Tweets 20090624  (0) 2009/06/25
My Recent Tweets 20090608  (0) 2009/06/08
My Recent Tweets 20090507  (0) 2009/05/08
My Recent Tweets 20090428  (0) 2009/04/28
Trackback 0 Comment 0

std::stack에 관한 소고

이하의 정보는 "C++ Concurrency in Action"에서 얻은 것임을 밝힙니다.
(참고로 아직 정식 출간되지 않은 이 책의 맛보기 버전을 여기에 있는 쿠폰코드를 사용하면 싸게 구입하실 수 있습니다.)

remember to thank all the books you haven't read over the past three years

C++ STL에서 제공하는 스택 컨테이너인 std::stack을 아실 겁니다. (정확히는 컨테이너 어댑터입니다만.)

스택하면 push/pop이 기본인데요, 이 std::stack은 실제 스택 꼭대기에 있는 놈을 리턴하는 top()과 실제 그 놈을 스택에서 꺼내는 pop() 함수가 따로 있습니다. 처음 사용할 때, 왜 이렇게 함수를 나눠놨을까 의아해 하였습니다.

이유가 있었더군요. 예외 안정성 때문이었습니다. 그냥 함수 하나로 값 리턴과 꺼내기를 한번에 수행할 경우, 그 리턴값을 지역 변수 등에 복사할 때 예외가 발생하면, 값은 못얻어왔으나 스택에서는 이미 꺼내버려 값이 사라지는 경우가 발생할 수 있습니다. 현 구현처럼 두 함수로 나눠놓으면 top()의 리턴값을 복사하는 와중에 예외가 발생하더라도 아직 꺼내진 않았기 때문에, 자료구조의 상태를 예외 발생 이전대로 안전하게 유지할 수 있는 것이죠.

근데 이러한 선택이 스레드 안전성에서는 오히려 문제가 됩니다. 아래와 같은 race 상황을 근본적으로 막을 수 없기 때문입니다. top()과 pop() 함수 등을 뮤텍스로 잘 보호해놓았어도 여전히 해결이 안되는 인터페이스 자체의 문제라 하겠습니다.


따라서 예외 안정성과 스레드 안정성을 동시에 보장할 수 있는 인터페이스를 고안해야합니다. 여러가지 해결책이 있습니다만, 다음과 같은 두가지 버전의 pop 함수를 제공해 상황에 맞게 사용자가 골라 쓸 수 있게 하는 것을 추천합니다. 위에 것은 포인터로 리턴하므로 복사 시 예외 문제가 없고, 아래 것은 출력 인자에 값을 복사한 후 pop을 하니 역시 예외 안정성이 유지됩니다.
(여러 해법들의 장단점에 대한 구체적 설명은 서두에 언급한 책을 참고해주세요.)


이 경우 빈 스택에 pop을 할 경우 예외를 던집니다. 스택이 비어 있지 않을 때가지 대기하다가 pop하는 등의 좀더 고급 동작을 원하는 경우, condition variable 같은 고급 동기화 개체를 사용해야 합니다. (위 쿠폰코드가 있는 슬라이드에 그 예가 나와있습니다.)

이렇게 생각할게 많은 병렬 프로그래밍이기에, C++0x스레드 라이브러리 지원이 개발자들에게는 천금과 같은 소식이겠습니다. ^^
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 1 Comment 0

top