iOS에서 빌드 시, 빌드 창(?)에 copying swift standard libraries 진행 중에 아이디랑 비번을 계속 물어볼 때가 있다.


해당 내용은 개발자 인증서에 관련된 문제로, stackoverflow에서 해답을 찾을 수 있었다.

http://stackoverflow.com/questions/9738298/xcode-asking-username-password-everytime-i-compile-to-device


요약해서 말하자면, 개발자 인증서를 keychain system category에 넣어놓은 경우, 매번 codesigning을 할 때마다 아이디/비번을 물어오게 된다. 해결 방법은 developer certification을 login category에 넣으면 간단하게 해결된다 -_-.....

만약, 로그인에도 동일한 ('비슷한'이 아니다.) certification이 있을 경우, system에 있는 인증서를 걍 지우면 된다....

어찌보면 당연한 얘기이긴 한데...예부터 보자
(돌려보진 않고 막 짠 코드)

void* testFunc(void* arg) {

...

}


int main() {

pthread_t p_thread[5];

int status[5];

int arg[5] = { 0, 1, 2, 3, 4 };

for (int i = 0; i < 5; i++) {

int thread_id = pthread_create(&p_thread[i], NULL, testFunc, (void *)(&(arg[i])));

}

for (int i = 0; i < 5; i++) {

pthread_join(p_thread[i], reinterpret_cast<void **>(&status[i]));

}

64bit에서는 요런식으로 pthread_join을 하게 되면 status가 4byte인 포인터를 넘겨주었는데
이대로 실행을 하게 되면 pthread_join()내부에서 8byte의 값으로 덮어쓰게 된다.
따라서 stack corrupted 오류가 발생하거나, 이상한 값이 들어올 수 있당

따라서 status를 8byte인 long long같은 형식으로 정의하면 된당

안드로이드 에뮬레이터를 콘솔에서 작업해야 할 때도 생긴당....
그럴 때 유용한 콤보를 알아보자.

- SD카드 생성
    $ mksdcard <size> <file>

- 설치된 안드로이드 target 알아보기
    $ android list targets
- VM 생성
$ android create avd -n <name> -t <targetID> [-<option> <value>] ... 
- VM 실행
$ emulator -avd <avd_name> [<options>]
sdcard를 탑재하고 싶으면 -sdcard <file>

이러면 이제 에뮬레이터가 뜨기 시작한당
그럼 이제 컨트롤! adb 명령어에 대해서 대충 알아보자

adb [<options>]


C++에서 32비트와 64비트를 #ifdef를 사용해서 정의하는 방법을 설명

결국 리눅스와 윈도우를 한꺼번에 가져갈 수는 없구만...

http://stackoverflow.com/questions/1505582/determining-32-vs-64-bit-in-c

허망하도다 -_-;

모르는걸 어째? 알면 되지 ㅋㅋㅋ


http://stackoverflow.com/questions/20669108/how-to-get-8-byte-pointer-value-on-64-bit-machine-on-gdb

$ git config --global credential.helper cache

시간 설정 가능
$ git config --global credential.helper 'cache --timeout=3600'

2014. 06. 18. 추가

현재는 meld랑 winmerge를 주로 사용하고 있다.
http://winmerge.org/
http://meldmerge.org/

아래는 각 블로거들의 주관적인 diff tool 성능 비교

http://bigcircle77.wordpress.com/2013/02/14/diff-%ED%88%B4-%EB%B9%84%EA%B5%90/

http://allofsoftware.net/90

그리고 진리의 스택오버플로우

http://stackoverflow.com/questions/572237/whats-the-best-three-way-merge-tool


다시 훑어보니 P4merge를 한번 써봐야겠다는 생각이 드는군....

게다가 에디터와 함께 사용할 수 있는 툴로는 sublime merge, vimdiff, emacs정도가 있는 듯
http://www.sublimerge.com


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

Diff 기능을 지원하는 툴을 알아보다가 알게 된 SourceGear Diff Merge.

상용 diff툴은 사용할 수 없기 때문에 찾아보다가 알게 되었다.

실험하신 분 [http://ljh131.tistory.com/143]에 의하면 상용 소프트웨어인 beyond compare와 비슷한 성능을 내주는 듯.


실제로 다운받아서 써보니 꽤 괜찮아보인다.

다운로드 : [http://www.sourcegear.com/diffmerge/downloads.php]


2014. 06. 18. 내용 추가

스핑크스랑 하나 더 있었는데......기억이 안난다.

다른 문서화 툴들이 doxygen보다 이쁜 문서를 만들 수 있다고 한다.

자세한 내용은 나중에 언젠가....생각이 나면 추가해서 포스팅해야겠당

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

회사에서 코드 보다가 멘탈이 날아갈 것 같아서 일단 정리해서 보고자 여기저기를 기웃거리다

가 찾았낸 doxygen을 소개한다.

옛날에 뭔가 썼던 기억은 나는데 GUI환경도 아니었고(상관없지만 귀찮다) VS2012에 addin도 안올라가고 해서 그냥 gui로 잘 되어있는 툴을 찾았다.

http://www.stack.nl/~dimitri/doxygen/

여기서 다운받아서 설치 ㄱㄱㄱ

원래는 설치할 때 path도 설정해주고 이것저것 있었던 것 같지만 지금은 GUI front-end로 나왔으므로 걍 설치만 하면 GUI환경으로 작업할 수 있다.



또, 여기서 graphviz를 설치하면 doxygen에서 call graph를 깔끔하게 볼 수 있다.

http://www.graphviz.org/


여기는 doxygen보다 가볍고 깔끔하다고 하는 doxys가 있는 곳!

http://www.doxys.dk/doxys_homepage/index.html


근데 왠지 난 안끌린다....(GUI환경 아니라 귀찮아서 그렇겠지)

직접 써봤더니 C/C++ 말고 다른 언어도 지원하고 꽤 잘 된다.


뭐 하나 해서 스샷찍어보려했더니 뭐 없네...

지금 보는건 회사문서라 안되고 -_-;;;

#pragma once

처음 솔루션을 만들면 stdafx.h 헤더파일 앞에 붙어있다.

이 명령이 없다면 컴파일을 할 때 여러군데에서 이 헤더파일을 include하고 있을 때, 매번 define 되어 중복 정의 되었다는 오류가 발생하게 된다. 이 경우 중복 정의 되지 않고 한번만 컴파일을 한번만 하게 해주는 명령이다.

중복 정의되는 것을 막기 때문에 컴파일 시간도 줄어들게 된다. 따라서 대부분의 헤더파일에 #pragma once명령을 삽입하는 것을 권장한다.

또한, #pragme는 컴파일러에 직접 명령을 전달하기 위해 사용한다고 한다.


회사에 들어와서 처음부터 다시 C++공부하느라 정신이 한개도 없다...

뭐 이런 기본적인 내용도 몰랐나 싶고 뭐 그렇다 ㅠㅠㅠㅠㅠ

같은 솔루션 내의 다른 프로젝트의 헤더파일이나 소스파일을 include하고 싶을 경우에는

프로젝트의 속성 -> C/C++ -> General 에서 Additional Include Directories의 항목에 적절한 패스를 추가해주면 된다.



+ Recent posts