https://sourceforge.net/projects/tinyxml/

요기 들어가서 clone or download 눌러서 다운 받자. xinyxml2-master.zip이라는 파일로 다운된다.

최상위 폴더에 CMakeList가 있는걸 봐서 CMake도 지원하나보다.

Makefile이 있으니 리눅스 쓰시는 분들은 그냥 make로 빌드하시면 될듯..

근데 고맙게도 visual studio 2015버전 솔루션으로 바로 라이브러리를 빌드 할 수 있게 해놨다.

tinyxml2 폴더에 들어 가면 visual studio 2015 솔루션 파일이 한개 있다.

근데 내 컴퓨터에 visual studio 2015가 없어서 그냥 2010 솔루션 파일로 보인다.

visual studio 2010으로 열어도 변환 없이 그냥 열린다. 

뭔가 에러도 안나고, 변환도 안하고, 기분좋은 예감에 그냥 빌드하면 아래와 같은 에러를 만날 수 있다.

 

"error MSB8008: 지정된 플랫폼 도구 집합(v140)이 설치되지 않았거나 올바르지 않습니다."

왜냐면 나는 돈이 없어서 vs2015는 없으니까...

빌드하기 전에 아래와 같이 플랫폼 도구 집합을 변경해주자.

난 vs2010에서 코딩할 거라 도구집합을 v100으로 변경해서 빌드했다.

빌드가 다 되면, 메인폴더의 bin폴더 아래 빌드 구성에 따라 라이브러리가 생성된다.

 

빌드 구성은 아래 4개가 있으니까 쓰고 싶은 것 빌드해서 쓰면 된다.

Debug-Dll : 디버깅용 동적라이브러리

Debug-Lib : 디버깅용 정적라이브러리

Release-Dll: 릴리즈용 동적라이브러리

Release-Lib: 릴리즈용 정적라이브러리

 

참고로 솔루션에 프로젝트가 2개 들어가 있다.

한개는 라이브러리 빌드하는 프로젝트고 나머지 한개는 테스트용 프로그램..

둘다 빌드해 놓고 test프로그램을 실행시키면 dll이 없다고 실행이 안된다.

그냥 디버깅할 때, vs디버거가 사용하는 working 디렉토리가 아닌 곳에 dll이 생성되서 그런다.

 

만들어 놓은 test.exe와 dll을 그냥 모두 복사해서 tinyxml2.h 가 있는 폴더에다 옮겨보자.

그리고 test.exe를 실행시켜보자.

뭔가 콘솔이 잠깐 켜졌다가 꺼지는데 resources/out에 아래같이 파일이 생기면 성공한거다.

 

끝!

Posted by 굿쟌
,

면접

잡담 2017. 11. 21. 20:32

면접

그녀를 만난 것은 회사 앞 엘리베이터 앞이었다. 깔끔하게 입은 흰 블라우스와 검은색 정장치마, 그리고 잘 닦인 검정 구두는 그녀가 오늘 면접을 봤다고 말해 주었다. 정장 차림은 말쑥 했고, 뒤로 묶어내린 머리는 단정 했다. 그런데 그 모습이 왠지 그녀와 어울리지 않았다. 아직 후드티와 운동화가 더 어울리는 얼굴을 하고 있었기 때문인 것 같다. 아마 이제 막 면접이 끝난 모양인지, 아직 긴장이 풀리지 않아 보였다. 이제 좀 쌀쌀해진 날씨에 손은 빨갛게 얼어 있었다. 그녀는 지나가는 사람들에게 멋적게 인사를 했다. 그날 따라 그녀에게 엘리베이터는 좀 처럼 빨리 오지 않는 것같이 보였다.

나는 복도 건너 편 사무실로 가는 길이었다. 그녀와 눈이 마주쳤고, 나도 멋적게 목인사를 건냈다. 인사를 하다가 목도리를 놓쳤는지, 다시 눈을 들어 그녀를 보았을 때 그녀는 목도리를 줍고 있었다. 그리고 나는 곧 건너편 사무실로, 그녀는 이내 도착한 엘리베이터로 들어갔다. 그녀와의 짧은 만남은 이것이 전부다. 아무 관련이 없는 사람. 나는 나대로 그녀는 그녀대로 삶을 살다, 잠시 한 점에서 스쳐 지나간 것이다. 하지만 왜 인지, 그 장면이 머리속에서 떠나지 않는다. 왜 기억에서 떠나지 않는 걸까? 그녀가 이성적으로 매력적이었기 때문은 아닌것 같다. 그 만남엔 특별 할 것도 없었다. 그러나 차가운 공기, 추워 보이는 손, 긴장 되어 보이는 어깨, 어색한 표정만이 이상하게도 선명히 머리에 남아있다.

나도 구직자였다. 대학원 졸업을 앞두고 몇몇 회사에 자소서를 쓰기 시작했었다. 내 삶은 면접관이 주목 할 만한 역경이 없었다. 그냥 남들이 공부하기에 공부를 했고, 남들이 대학에 가기에 나도 대학에 갔다. 집에 돈이 부족해서 돈걱정이 좀 있었지만, 대출받은 돈으로 등록금을 내고 운이 좋게 서울로 시집 간 누나네 집에 얹혀 살 수 있었다. 그냥 평범했다. 아마 당시 27살, 내 또래들의 삶 또한 그러 했을 것이라 생각한다. 내 삶에 무슨 역경이라도 있길 바라는 건지 대부분의 회사에서는 자소서에 나의 역경에 대해 물었다. 역경이 부족한 만큼 미사여구가 늘어났다. 자소서가 아니라 자소설이 되기 시작했다.

그렇게 서너군데 회사에 서류전형 지원을 했다. 몇몇 회사에서는 서류전형 이후에 합격한 인원을 대상으로 인적성 시험을 봤는데, 나는 운이 좋게 한두 회사의 시험을 통과 할 수 있었다. “몇월 몇일 몇시까지 어디로 오세요” 인적성 합격과 함께 도착 한 면접 일정 메시지에 마음은 이미 합격한 것 처럼 기뻐던 기억이 난다. 늦은 나이에 얻은 막둥이 아들이 이제 다 자라서 구직도 하고 면접도 보는것이 기쁘셨는지, 누나들 시집갈 때 입었던 양복을 아버지께서 직접 다려 주셨던 기억이 난다. 면접장소는 양재의 어떤 대기업 연구소였다. 양재역에 내려서 한참을 걸어가야 했는데, 한여름의 뙤약볕에 발이 아픈 검정색 구두를 신고 열심히 걸어갔던 기억이 난다.

그렇게 시작한 면접에는 나 말고 다른 사람 둘이 더 들어왔다. 면접장소에서는 기다리는 태도도 평가점수에 들어간다는 말을 어디선가 듣고 대기장소 부터 웃는 얼굴로 기다리느라 얼굴이 좀 얼얼 해 지려던 참이었다. 면접관들은 우리에게 몇가지 질문을 했다. “~했습니다”라고 말하려다 보니 안그래도 긴장되는 분위기에 말은 무지 꼬였다. 사실 긴장되는 것과 별개로 면접관이 나에게 했던 질문에 대한 답을 나는 알지 못했다. 옆 사람은 “~했습니다”로 말하지 않았지만 내가 답하지 못한 질문의 답을 곧 잘 설명했다. 곧 PT면접이 시작되었다. 내 발표에 면접관들은 흥미를 잃었는지 일부는 눈을 감고, 일부는 턱에 손을 괸채 나의 PT면접을 들었다. 딱히 발표에 대해 질문도 없었다.

곧 면접이 끝나고, 면접비를 줄 계좌 번호를 적으라고 해서 면접자 명부에 이름을 적는데, 다른 면접자 정보에 써진 출신 학교들을 보니 기가 죽었다. 그날 집으로 가기 위해 양재역으로 되돌아 나오는 그 길은 무척 길고도 더웠던 것 같다. 구두는 발이 아팠고, 양복이 잘 다려진 만큼 마음이 아팠다. 난 지금까지 뭘 한걸까.. 스무살 때부터 그때까지 나만 바라보고 살던 여자친구에게 미안했고, 또 부모님께 죄송했다. 내가 지금까지 살아온 인생이 낙제라고 평가받은 것 같은 느낌이었다. 더 이상 사회에서 날 받아줄 곳은 없는 것 처럼 느껴졌다. 드라마 였다면, 길건너다 다친 회장 할아버지를 도와 드려서 취직에 성공했을 텐데 아쉽게도 현실에서 그런건 없었다. 예상대로 실패.

어느 회사든 꼭 자소서만 쓰면 물어보는 질문이 있다. “자신이 겪은 역경과 그 역경을 극복한 경험을 쓰시오”. 그런데 사실 사람이 겪어 볼 수 있는 역경 중에 가장 큰 역경은 구직이 아닐까? 이렇게 생존의 문제와 맞닿아 있으면서 자기 자신에 대해 실망하게되고, 실패하면 미래가 보이지 않는 역경이 또 있을까 싶다. 그 역경을 맞이 해 울어가며 살아가는 사람들에게 “역경을 쓰시오” 라고 묻는것이 꼭 “미안한데 취직같은 평범한 고통 말고 좀 더 큰 고통은 없었니?” 라고 물어 보는 것 같아 마음이 미안하다.

아마도 그래서 였던 것 같다. 그 어린 면접자의 얼어있던 손이 이토록 기억에 오래 남는 이유는. 잠시 스쳐지나가는 인연 이었지만, 그 모습에서 몇 년 전 양재역으로 터벅터벅 걸어가던 내 모습을 본 것 같았다. 면접을 잘 보았는지, 아니면 말이 꼬여 면접을 망쳤는지모르겠지만, 잘하고 있다고 어깨 툭툭치며 말해주고 싶었다. 아직 운동화와 후드티가 잘 어울리는 그녀에게, 그리고 양재역을 쓸쓸히 걸어가던 나에게.


'잡담' 카테고리의 다른 글

우물쭈물하다 내 이럴줄 알았다.  (0) 2014.06.29
블로그를 열었다.  (0) 2014.06.21
Posted by 굿쟌
,

원래는 한 포스트로 다 쓸려고 했는데, 쓰다보니 너무 길어지고 continueAfterSetup에서 설명해야 할 것들이 너무 많아지는 감이 있어서 포스트를 두개로 나누었다. 아는 것도 어렵지만 아는 것을 글로 남기는 것은 전혀 또 다른 문제인 것 같다. ㅎㅎ

 

그럼 RTSP서비스로부터 SDP를 받고 이로부터 각 SubMediaSession에대해 setup명령을 전송하는 과정까지 설명했던 지난 포스트에 이어서 이번 포스트에서는 이 이후 단계인 continueAfterSetup부터 살펴보자.

 

continueAfterSetup은 RTSP서버로 SETUP명령을 보내는 sendSetupCommand 함수가 호출 된 후 서버로부터 처리 완료 신호가 클라이언트 단으로 도착했을 때 실행되는 콜백함수로 sendSetupCommand함수의 인자로 전달되었었다. 여튼 setup이 완료되어서 미디어 데이터를 전달받을 환경이 조성되어 실행되는 continueAfterSetup은 아래와 같다.

 

역시 잘 안보이지만 눈을 크게 뜨고 보자.. =_=

 

콜백으로 전달되는 함수들은 모두 static이기 때문에 인자로 전달되는 rtspClient 포인터로부터 이 함수가 어떤 rtspClient의 콜백으로 호출되었는지 밝히는 부분이 함수 첫 281 ~ 287에 나와있다. 이건 뭐 그다지 중요한 내용은 아니고 중요한 내용은 297로부터 시작된다.

 

사실 297이 이 전체 샘플코드의 핵심이다.

이 코드를 이용해서 전체 샘플코드가 사용할 파이프라인을 구성하고 있기 때문이다.

297줄에 보면 DummySink 인스턴스를 하나 만들고 subsession이 가지고 있는 sink에 할당한다.

이 과정을 통해 이DummySink가 subsession에 연결되어

 

"subSession (Source를 포함하는 객체) - DummySink"

 

구조의 파이프라인이 구축된다. 그리고 나서 306줄과 같이 startPlaying함수를 통해 파이프라인이 동작하도록 명령한다. 단, 이 playing이라는 의미는 파이프라인이 활성화 상태로 들어가게 한다는 의미이지 실제로 미디어 서버쪽에 미디어를 재생하라는 RTSP의 PLAY신호를 보낸다는 의미는 아니다.

 

실제 PLAY신호는 모든 Subsession들에 대해서 setup이 완료 되고 난 이후에 sendPlayCommand라는 함수에 의해서 RTSP서버쪽에 전달되어 실제 데이터 전송을 요청하게 된다.

 

==추후 갱신==

Posted by 굿쟌
,