기본 콘텐츠로 건너뛰기

라벨이 push인 게시물 표시

STL container.emplace ...

C++11의 컨테이너에 emplace 시리즈 메소드가 생겼다. 요놈들은 뭐하는 놈들일까? 일단 내가 전혀 뜻을 모르는 영어단어라 사전을 찾아보니, '설치하다'라고 나온다. 이게 뭐여... 형태도 얄딱꾸리하게 생긴 녀석이다. template< class... Args > iterator emplace( const_iterator pos, Args&&... args ); 이렇게 생긴 녀석인데, 하는 일은 insert나 push_back/push_front 랑 비슷하다. 컨테이너에 원소 하나를 추가하는 일을 한다. 다만 기존 insert/push 시리즈는 넣을 객체를 caller에서 예쁘게 만들어서 전달하는데 이 과정에서 의도치 않게 임시객체가 뿅~하고 만들어지고 사라지는 부하가 생길 수 있다. 반면, emplace는 노드에 추가할 때, 주어진 인자(위에서 args)를 이용하여 객체의 생성자를 호출한다. 따라서 임시객체를 만들지 않거나, 임시객체 생성횟수를 줄여준다. 어지간한 경우에 emplace류가 insert/push류보다 빠르다고는 되어 있는데, effective c++이나 modern c++에서 찾아봐야겠다. 뭔가 함정이 있을 것 같은 느낌이 있달까. * Fundamental types(int, char, long ...)에게는 아무런 의미가 없다~

Apple's APNS drops SSLv3 with Poodle bug

아침부터 개발하고 있는 서비스가 난리법석이다. 고친 것도 없고, 어뷰징도 딱히 보이지 않았는데, Apple 푸쉬서비스 APNS에서 자꾸 끊긴다. 아름답게도 접속은 잘 하는데, SSL_read/write할 때 매번 접속이 끊긴다. 그래서 무한 재접속... 지금은 개발하고 있는 서비스 이슈를 해결하긴 했지만, 최근 OpenSSL SSLv3 Poodle 버그로 이 바닥이 난리난 적이 있다. 딱히 패치는 나오지 않고 SSLv3를 제거하라는 가이드만 나와 있는 상황인데, Apple이 오늘 아침에 그걸 적용한 듯 싶다. 접속 유지하고 있던 커넥션이 끊기고 다시 붙으면 Handshake과정에서 끊기는게 아니라 read/write할 때 끊겨서 더욱 찾기 애매했다. 그리고 뒤늦게 찾은 Apple의 공지사항:  https://developer.apple.com/news/?id=10222014a