이걸 programming tip에 넣긴 좀 이상하지만 어쨌든.
ssh로 remote host에 대해 shell command를 실행할 때 주의할 점.
1. sed 등에서 regexp를 사용할 때 double quote escape를 확인할 것. 그냥 shell에서 사용할 때와 다르게 double quote가 인식되지 않았다.
2. remote에서 backstick(backquote, '`')로 실행한 결과를 인자로 사용하려고 하면 local에서 실행된 결과만 인자로 넘어간다.
- 2012/05/08 10:42
- kyeru.egloos.com/5635445
- 덧글수 : 0
- 2012/03/28 15:48
- kyeru.egloos.com/5621043
- 덧글수 : 0
어제오늘의 멍청한 짓에서 배움.
gcc/g++ linking시 object file이나 library file이 지정된 순서대로 symbol을 찾는다. gcc option 설명을 인용하면,
It makes a difference where in the command you write this option; the linker searches and processes libraries and object files in the order they are specified. Thus, `foo.o -lz bar.o' searches library `z' after file foo.o but before bar.o. If bar.o refers to functions in `z', those functions may not be loaded.
bar.o에서 호출하는 함수를 모르는 상태에서 z의 해당 함수가 load되지 않기 때문이다. 내가 한 짓도 예제와 똑같은데, 이것 때문에 어제부터 undefined symbol 에러메시지를 해결하지 못하고 있었음.
게다가 난 저 설명을 보고도 착각한 게, z의 함수 중에서 참조된 것들만 load되는 것을 몰랐기 때문에 당연히 먼저 나와야 한다고 생각했다. 결과가 기대와 정반대인 건 당연지사.
단, 이것은 .a archive에 대한 설명이므로 shared object의 경우는 좀 다를 수 있다. 마찬가지로 확인해봐야함.
- 2012/03/15 22:54
- kyeru.egloos.com/5616490
- 덧글수 : 4
while 또는 for loop의 종료 조건이 만족되면 뒤따라오는 else 문이 실행된다.
아예 loop을 시작하지 않아도 마찬가지.
(내용이 너무 짧다.)
- 2012/03/06 21:54
- kyeru.egloos.com/5613210
- 덧글수 : 0
영어로 된 자료를 읽다보면 가끔 재미있는 잡지식을 얻게 되는데 그 중 기억에 남는 것 두 가지. 출처는 제각각인데 100% 믿을 수 있는지 확신은 없지만 설명은 일단 그럴 듯 하다.
1. 왜 "I"만 대문자로 쓰는가.
영어에서 한 글자로 된 단어는 "a"와 "I" 뿐인데, 이중에서 "I"는 (고유 명사를 제외하면) 유일하게 항상 대문자로 쓴다. 이 방식은 이미 14세기 이전부터 시작되었다는데, 당시 중세 영어에서는 1인칭 대명사가 독일어와 비슷한 "ic"였다고 한다. 그러다가 이것이 "i"로 바뀌었는데, 아무래도 한 글자만 써놓기가 폼이 안났던지 다른 글자보다 조금 크게 썼다고 한다. 이런 경향이 점점 두드러져서 결국 대문자로 쓰게 되었다는 얘기이다. 그렇다면 첫 문장에서 얘기한 "a"도 한 글자인데 왜 대문자로 안쓰냐고? 아무래도 "i"보다는 소문자로 써도 보기 괜찮아서 그랬다나.
2. 동사의 과거형
영어에서 가장 많이 쓰이는 10개 동사는 다음과 같다.
1. be
2. have
3. do
4. say
5. get
6. make
7. go
8. know
9. take
10. see
그런데 이 동사들의 공통점은 과거형이 불규칙 변형이라는 것이다. (e.g. have -> had, take -> took) 예전에 이에 대한 흥미로운 해석을 들었는데, 과거에는 더 많은 동사가 이런 불규칙 변형이었으나 시대가 흐르면서 점차 뒤에 d나 ed만 붙이는 규칙형 동사로 바뀌었다는 것이다.
어린이들이 말을 배울 때 자주 쓰는 단어는 과거형도 접할 기회가 많지만, 그렇지 않은 단어일수록 정확한 과거형을 기억하지 못하고 자라서 규칙형 동사로 사용하게 되었다. 시간이 지나면 이렇게 사용하는 비율이 높아져서 결국 표준 과거형이 바뀐다는 설명이었다. 위 단어들은 항상 사용하면서 과거형도 기억할 기회가 많아서 변하지 않았다는 것이고.
조금 다른 얘기지만, 최근 O'Henry의 단편선을 읽으면서 이따금 현재 쓰이지 않는 문법을 볼 수 있다. 두드러지는 것이 바로 주어와 동사의 인칭형이 뒤섞이는 경우다. 예를 들면 "I goes" 라든가 "you was"라든가. 이런 문법이 19세기 말 - 20세기 초에 허용되었던 것인지, 아니면 인물이나 지역 특성을 묘사하기 위해 집어넣은 것인지는 모르겠으나, 어쨌든 쓰이기는 했을 것이다.
- 2012/02/28 20:25
- kyeru.egloos.com/5610651
- 덧글수 : 0
static: 함수 밖에서 변수의 첫번째 declaration에 static이 붙으면 internal linkage. (translation unit 내에서 유일하다)
extern: 함수 안에서 선언되면 외부에 definition이 있음. 함수 밖에서 첫번째 declaration에 extern이 붙거나 아무것도 없으면 external linkage. (전체 program 내에서 유일하다)
one-definition rule이 적용되는 범위가 다름. storage는 같음. 첫번째 declaration이 static이 아니면 프로그램 내 여러 파일에서 definition이 포함된 header를 include할 경우 링커에서 multiple definition 에러 발생.



최근 덧글