^M 을 없애보자...

Posted by 빵빵빵
2015/12/29 14:41 전산(컴퓨터)/리눅스



^M이 뭔소린가 하는 분도 있을 것이다.

도스(윈도우)에서 텍스트 파일을 만들어서 유닉스 계열의 OS에서 읽으면 라인 맨 끝이 ^M이 하나식 붙는다.

눈에 거슬리는 거 빼면 그냥 텍스트 읽는 거에는 문제가 되지 않는다만, 이게 소스 일경우에는 문제가 커진다.

컴파일러는 ^M을 만나는 족족 에러로 뱉어주시기 때문이다.


어떻게 해결할까....

vi를 사용할 경우...

Vi 에서 Esc키를 눌러 명령 모드로 전환한 후, 다음 정규식으로 ^M을 치환한다.
복잡한 정규식은 아니고, 각행의 끝($)에 있는 ^M 기호를, 모두(g) 공백(//)으로 바꾸는(%s) 것이다.



주의할 점은 ^M 을 키보드로 치면 안된다. 특수문자이기 때문에 Ctrl+V, M 키를 눌러서 입력해야 한다.
Ctrl키를 누른 상태에서 v, m 이라는 2글자를 소문자로 연속으로 입력하면 된다.

안되면... ㅡㅡ;;;;;

쉘에서 dost2unix라는 유틸을 사용해 보자.



input.txt에서 ^M 다 떼어네 output.txt로 만들어 준다.


얼라려? 그런데 또 이놈이 설치가 안되어 있는 경우도 있다. 헐~~~



요렇게 설치하면 된다.


에혀... 요즘 스타워즈도 개봉했는데 영화본지도 오래됬는데... 같이 갈 사람이 없구나...
2015/12/29 14:41 2015/12/29 14:41

광장시장 먹방!! 육회집 창신육회!!를 시작으로 맛집투어

Posted by 빵빵빵
2015/12/25 14:31 일상사/맛집



동호회에서 몇몇 사람들이 모여 육회 먹으러 가자고 멤버가 조직되었습니다.

물론 오늘 아니구요....(오늘 크리스마스임.. ㅡㅜ) 지난 10월 16일... 단톡방에 마지막 대화가 그렇게 끝이 나 있더군요.

자... 우리 쓴 돈부터(왜 남자 막내가 총무냐고요.. 형님들 막내줌 뽑아주세요) 광장시장은 역시 가격대비 성능 최고에요~

엑셀에 C~H 6명 같지만 한분이 거이 끝쯤에 와서 5명이었다 보면 됩니다. 요정도로 대략 가격을 가늠해 보세요.

사진이 별루 없어서 안타깝군요

사용자 삽입 이미지


어쨋든 육회 사진부터
사용자 삽입 이미지
5명이 갔는데요... 우리는 낚지 육회를 먹었어요.

육회+낚지라서 가격은 두배(+천원이덩가 아니덩가... 가물가물)

육회도 찰지고 맛났지만 꼬물 꼬물 움직이는 낚지 먹는 맛도 일품이에요. 가는길에 육자매집인가도 자매육회집인가... 거기도 유명하다고합니다. 담에 가볼라굴요.


약도~
사용자 삽입 이미지




2차로 간 빈대떡은 화장실 다녀오는 동안에 이미 다 해체 되 있어서 사진도 안찍고 패쓰.... ㅡㅡ 육회 먹고 또먹구... 대단한 멤버들



광장시장이라하면 마약김밥을 빼 놓을 수 없죠. 요넘은 저도 따로 한팩 사왔습니다. 아침에 밥대신 먹을라구 ^^

사용자 삽입 이미지
약간의 야채와 김, 밥, 통깨에 기름 살짝 바른건데...

와사비 간장을 살짝 찍어 먹어주면 정말 마약처럼 끊을 수 없는 맛입니다.

쥑여~ 줘여~ 요건 시장통에 돌아다니다 보면 많이 팝니다. 밥알이 탱글탱글하고 야채가 축 쳐지 않은 넘으로 골라서 사세요..


주막집과 육미는 이미 제대로 된 사진을 찍을 지경이 아니어서 넘어갑니다. ^^
2015/12/25 14:31 2015/12/25 14:31

VC++(MFC) 에서 /MD와 /MT 의 차이점

Posted by 빵빵빵
2015/12/10 17:15 전산(컴퓨터)/PC-Windows



/MT와 /MD 차이


컴파일 옵션중에 /MT(multi-threaded), /MD(multi-threaded dll)라는게 있습니다 (설정위치: 프로젝트속성-C/C++-코드생성-런타임라이브러리). 특히나, 정적 라이브러리를 사용할 경우에는 이것 때문에 무척 골치가 아픕니다. XXX is already defined in YYY 어쩌구 하는 라이브러리 충돌 컴파일 에러들은 모두 이놈들 때문에 발생합니다. 사용한 라이브러리가 하나는 /MT로 생성되었고 하나는 /MD로 생성되었다면 짤없이 라이브러리 충돌 에러 메시지를 보게 됩니다. http://msdn.microsoft.com/ko-kr/library/2kzt1wy3(v=vs.90).aspx에 보면 /MT, /MD가 설명되어 있지만 핵심 내용은 컴파일시 정적 버전의 C 런타임 라이브러리를 사용할 것이냐(/MT) 아니면 동적 버전을 사용할 것이냐(/MD)의 차이입니다.

 


/MT: 응용 프로그램에서 다중 스레드 정적 버전의 런타임 라이브러리를 사용하도록 지정합니다. 즉 응용 프로그램에서 입출력, 메모리 할당과 같은 C 런타임 라이브러리(CRT, C Run-Time library) 기능을 사용할 때 정적 링크 버전인 LIBCMT.lib를 사용하여 프로그램이 빌드됨.

 


/MD: 응용 프로그램에서 다중 스레드 DLL 전용 버전의 런타임 라이브러리를 사용하도록 지정합니다.  즉 응용 프로그램에서 C 런타임 라이브러리 기능을 사용할 때 이것의 동적 링크 버전인 MSVCRT.lib를 사용하여 프로그램이 빌드됨.

 


만일 사용하는 외부 라이브러리는 /MT로 빌드되었는데, 현재 응용 프로그램은 /MD로 빌드하면 동일한 기능에 대해 서로 다른 두 버전의 라이브러리가 동시에 사용되기 때문에 XXX is already defined in YYY 어쩌구 하는 무수한 충돌 메시지를 보게 됩니다. 외부에서 가져온 라이브러리라면 /MD, /MT를 맞추거나 /NODEFAULTLIB:library 외에는 별 방법이 없지만(이렇게 해도 해결 안되는 경우가 많음), 자신이 직접 정적 라이브러리를 만들 경우에는 라이브러리든, 응용프로그램이든 모조건 다 /MT 옵션으로 맞추면 됩니다(debug용은 /MTd).

2015/12/10 17:15 2015/12/10 17:15