공룡호가 사는 세상 이야기

연휴 정리

일상다반사2008. 12. 29. 01:07
4일간의 연휴를 정리하면서.
건강히 대구에 계신 부모님께 감사.
외로움 타실 부모님 곁을 늘 지켜준 동생에게 감사.
크리스마스 함께 한 그녀에게 감사.
간만에 만나 소주 한 잔 사준 꼴통 경찰 친구에게 감사.
취업 턱 낸다고 그 늦은 새벽,
택시타고 달려와 술도 안먹으면서 나 고꾸라질 때 까지 술 사준 친구에게도 감사.
초등학교 교실 구경 시켜준 그녀에게 감사.
사법고시 패스하고 멋지게 돌아와 날 찾아준 친구에게 감사.
간만에 마주한 10년지기 동생에게 감사.
피곤한 몸 이끌고 밥사주러 나온 그녀에게 또 한번 감사.
그리고 휴일날 출근해서, 갑자기 생긴 내 일 대신해준 남진씨, 도와준 차팀장님, 유과장님께 감사.

다섯명이 주문한 말도 안되는 민들레영토 코스요리를 시작으로,
오! 당신이 잠든사이, 로티보이 아메리카노, 이찌로 히레까스, 백세주 4병, 노래방.
피쉬앤그릴 참이슬, 스카 당구장, 버디 호가든, 스타벅스 아메리카노, 티니위니, 해지스,
범물초등학교 4학년 2반, 앙팡, 코페아 커피 아메리카노, 볏집삼겹살,
미즈, 크림고구마, 샐러드스파게티, 시애틀의 잠못이루는밤 아메리카노, 대구지하철 2호선

부모님, 동생, 춘미, 광덕, 순이, 동화, 재홍, 정은, 은혜



'일상다반사' 카테고리의 다른 글

그리하여 당신은 누구신가요  (0) 2009.01.28
2009  (0) 2009.01.08
christmas eve  (0) 2008.12.25
소설 책을 고를 때.  (0) 2008.12.15
take me to your..,  (4) 2008.12.07

christmas eve

일상다반사2008. 12. 25. 04:00
이브다. 여차저차 고향 대구에 내려오니 반겨주는 이들이 많다.
몰래 대구에 내려와 동생이 일하는 회사로 몰래 숨어들어 한번 놀래켜주고,
내 초등학교 짝꿍은 자기도 남자친구가 없다며 내가 내려오길 기다렸다며, 저녁을 먹자고 반기고.
오랜지기 친구는 소주한잔 하자며 여자친구 빨리 집에 보내고 전화하겠다 하고.

저녁을 먹고 집에 돌아와 부모님께 인사를 드리고,
친구와 그리움 담은 소주 한 잔 기울이니 새벽 3시가 넘었다.

작년 오늘 나는, 나를 위해 아낌없이 내어주었던 그 사람과 같이 대구에 왔었던 것 같다.
미안한 마음, 고마운 마음. 따뜻한 겨울이다.

따뜻함을 함께 나누기 위해 자신보다 어려운 사람을 돕는 사람들에게는
좀 더 세상이 밝아질 것을 기대할 수 있는 희망을,
내 몸 하나 추스리기 힘든 이 추운 겨울을 혼자 나는 그들에게는
많은 사람들의 사랑이 나뉘어 지기를,
애틋한 이 마음 말하지 못해 가슴 졸이고 있는 그 누군가에겐
그 마음 그 대로 말 할 수 있는 용기를,
간만에 맞은 휴일에 친구들과 소주 한 잔 기울이는 사람들에게는
더 없이 든든한 우정을,
아름다운 사랑을 나누고 있는 연인들은,
평소 확인하지 못했던 서로의 사랑을 느낄 수 있는
마지막으로, 외로운 크리스마스를 홀로 지새우는 이들에겐,
그 외로움 만큼의 아름다운 사람이,
그 앞에 서기를, 희망을, 사랑을, 용기를, 우정을.
마음껏 나눌 수 있는 크리스마스가 되어라.

아름다운 날이어라.

'일상다반사' 카테고리의 다른 글

2009  (0) 2009.01.08
연휴 정리  (0) 2008.12.29
소설 책을 고를 때.  (0) 2008.12.15
take me to your..,  (4) 2008.12.07
첫 눈 내리는 날  (6) 2008.11.19

읽을 만한 소설 책을 골라야 할 때,
내가 가장 눈여겨 보는 점은 그 소설 내에 등장하는 말줄임표의 빈도다.
뒤틀린 편견일지도 모르겠지만
나는 말줄임표가 적으면 적을 수록 좋은 작품임이 틀림없다고 생각한다.
글을 쓰는 이들은 흔히 말줄임표를 격양된 감정과 극적인 상황을 동시에
표현할 수 있는 일종의 공인된 기호라고 생각하기 일쑤다.
그러나 그 결과물은 언제나 실망스럽다.
말줄임표는 너무나 많은 의미를 가지기에,
제대로 된 의미는 단 하나도 전달할 수 없다.
게다가 말줄임표(침묵은) 소설 속에 나오는 그 어떤 인물도
'표현'할 수 있는 것 아니겠는가.
결국 소설에서의 진정성이란,
말줄임표를 얼마나 더 지울 수 있는가로 판가름나기 마련이다.



'일상다반사' 카테고리의 다른 글

연휴 정리  (0) 2008.12.29
christmas eve  (0) 2008.12.25
take me to your..,  (4) 2008.12.07
첫 눈 내리는 날  (6) 2008.11.19
cafe, mizmoren  (0) 2008.10.27

take me to your heart.
take me to your soul.
bring me far away.
give me your hands and hold me. 

- I hope.., does not think that my mind is light
081207235210




'일상다반사' 카테고리의 다른 글

christmas eve  (0) 2008.12.25
소설 책을 고를 때.  (0) 2008.12.15
첫 눈 내리는 날  (6) 2008.11.19
cafe, mizmoren  (0) 2008.10.27
눈길에 미끄러졌을 때..,  (0) 2008.10.22

zero copy 기법을 이용하면 리눅스나 유닉스에서 실행되는 I/O 위주의 자바 애플리케이션의 성능을 향상시킬 수 있다. zero copy 기법은 중간 버퍼 간의 불필요한 데이터 복사를 피하게 해 주고, 사용자와 커널 사이의 context switching을 효과적으로 줄여줄 수 있다.
데이터를 소켓을 이용하여 전송하려 할 때, 기존 방식은 디스크에서 해당 데이터를 읽어 커널-사용자 간 경계를 넘어 애플리케이션 단계로 밀어 올리고, 그 것을 다시 소켓에 쓰는 과정에서 커널-사용자 경계를 다시 넘는다. 결국 데이터를 가져왔다가 바로 보낼 건데, 비 효율적으로 중계자를 두고 있다. 이 차이는 매우 적지만, 전송해야 할 데이터 양이 많아질 수록 그 차이는 현격하게 차이나기 시작한다.

자바 클래스 라이브러리에서는 리눅스와 유닉스 시스템에서 java.nio.channels.FileChannel 클래스의 transferTo() 메소드를 통해 zero copy를 지원한다. 이 방법이 왜, 그리고 얼마나 효율적인지 알아보자.

기존 방식의 context switching
기존 방식에서의 맥락 전환


개선된 방식을 사용할 때의 context switching
transferTo()를 사용할 때의 맥락 전환

궁금하지 않은가? 그리고 얼마나 효율적일지도.

원문 : http://www.ibm.com/developerworks/kr/library/j-zerocopy/

유닉스를 자주 다루다 보니, 유닉스 관련 포스팅이 잦다.
지난 달에 포스팅 했던 '콘(Korn) 셸(Shell) 스크립트 작성하기'에 이어 두 번째 리뷰.
지난 번 포스팅이 초보용 이었다면, 이번은 중급용이다. 좀 더 깊게 배우고 싶으면 이번 Article을 주의깊게 보자.
단순하고 유연하게 스크립트를 작성하고, 아무리 강조해도 지나치지 않는 문서화.
그리고 디버깅 까지. 사실 여기서 다루는 디버깅은 환경변수가 올바로 등록되어 있다는 조건 하에서 이루어지는 것이긴 하지만...
그리고 set -x 옵션으로 실행 과정을 표준 출력으로 찍는 것 까지.

작업을 단순하게 만들고 깔금하고 유연하게 코드를 작성하며, 문서로 만드는 기본 규칙을 철저하게 따르면, 이 기사에서 배운 디버깅 기법을 활용해 최상급 스크립트를 작성할 수도? ㅎㅎ
배울 수록 느끼게 되겠지만, 쉘 스크립트로 할 수 있는 일은 생각보다 대단하다.

원문 : http://www.ibm.com/developerworks/kr/library/au-speakingunix_shellscripttech/





얼마 전 부터 노트북의 기본 텍스트 편집기를 vim으로 변경했다.
조금만 익숙해지면, 세상 그 어떤 텍스트 편집기보다 편하고, 빠르다.
지난 번에 소개했던 article보다 낫다. 자주 사용하는 거의 모든 기능들을 튜토리얼을 통해 소개하고 있다.
말이 필요없다. vi가 얼마나 강력한지는. 써 본 사람만이 안다.
ASDF 에 왼쪽 손. JKL;에 오른쪽 손을 놓고. 문서를 편집하는 동안 마우스를 옮겨다닐 필요도, backspace를 누를 필요도 없다. 오직 그 상태에서 모든 편집이 가능하다.
vi에 익숙해지지 않고서 unix에 익숙해지는 것은 더더욱 불가능한 일.
당장에 접속 가능한 unix system이 없다면, 아래 gvim을 설치하고 연습하는것도 좋겠다.

vim download : http://www.vim.org/download.php#pc
원문 : http://www.ibm.com/developerworks/kr/library/tutorial/au-unixtips2/index.html




은근히 모르시는 분들이 많다. 간단하게- 포스팅!

1. METADB 만들기
#metadb -a -f -c3 c2t0d0s4 c2t1d0s4 c2t2d0s4 c2t3d0s4    <--- metadb file을 만들어 준다.
#metadb

2. RAID 0 : Concatenated 구성
#metainit d0 1 1 c2todos1
#metattach d0 c2tld0s1
#metastat  <--- raid 구성확인하기
#newfs /dev/md/dsk/d0   <--- file system 만들기

3. RAID 0 : Striped 구성
#metainit d1 1 2 c2t0d0s0 c2t1d0s0
#newfs /dev/md/dsk/d1

4. RAID 1
#metainit d10 1 1 /dev/dsk/c2t2d0s0     <---concat으로 일단 만듬
#metainit d20 1 1 /dev/dsk/c2t3d0s0     <---concat으로 일단 만듬
#merainit d12 -m d10     <----- 묶기
#metattach d12 d20       <----- d12 묶기
#newfs /dev/md/dsk/d12

5. RAID 0 + 1
#metainit d30 1 2 c2t0d0s6 c2t1d0s6
#metainit d40 1 2 c2t2d0s6 c2t3d0s6
#metainit d34 -m d30
#metattach d34 d40
#newfs /dev/md/dsk/d34

6. RAID 5
#metainit d5 -r c2t0d0s5 c2t1d0s5 c2t2d0s5  <----반드시 장치이름을 3개로 줄것
#newfs /dev/md/dsk/d5

'유닉스' 카테고리의 다른 글

쉘 스크립트를 사용하면 안되는 경우  (0) 2009.02.08
ZFS manual  (0) 2009.01.05
pkgadd 오류: admin 파일 <default>를 열 수 없습니다.  (0) 2008.11.11
SSH setting for solaris8  (0) 2008.08.26
Fixing read-only file system error  (0) 2008.08.13

작년엔 눈이 내리지 않았었던가.
첫 눈이 오는데, 왜 눈이 너무 오랫만이라는 생각이 드는 건지 잘 모르겠다.

10번째 광주 출장.
이젠 여기도 익숙하다. 사람도 거리도 건물들도.
4일째 밤, 잠을 청하기 위해 담배연기가 가득한 방에 차가운 바람을 좀 넣을까. 커튼을 제꼈더니
함박눈이 내린다.

창문을 열고, 그 뒤에 버티고 선 모기장을 제끼고,
위를 봤다, 아래를 봤다.
고개를 조금 내밀었더니 머리에 차가운 그것이 내려와 앉는다.
몇 개 더 내려앉더니 이젠 그것이 녹아서 이마를 타고 코 위로 흐른다.
이마에선 차갑던 것이 코 위에서는 따뜻하다.

눈이 내려 건물들 지붕이 모두 흰색이다.
익숙했던 거리와 건물이 낯설어진다.

문득 뒤돌아 전화기를 들어 보니 새벽 1시가 넘었다.
기역부터 히읗까지 전화번호부를 돌렸는데, 마땅히 전화할 사람이 없다.
형님들 친구들에게 전화해서 눈온다고 호들갑 떨면 이게 오밤중에 미쳤다 할게 분명하다.

이런 날은, 지나간 옛 사랑을 그리워 해 보기도 하고.
유리창이 넓은 까페에서 아메리카노 한잔 마시는 것도 좋은데.
갑자기 낯설어져 버린 여기에, 그것도 혼자서 밖을 나갈 용기는 없고,

거꾸로 히읗부터 기역까지 혹시 놓친 사람은 없는지.
전화번호부를 돌리다가.
씁쓸한 커피 한잔 타서, 키보드를 두드린다.

첫눈이 내린다.
옛날, 아주 옛날에
내가 소년이었던 시절.
첫눈이 오면 거기 그 자리에서 그 시간에, 다시 만나기로 했던 사람이 있었는데.
나는 첫 눈이 오던 날, 첫 눈이 내리는 걸 모르고 있었다.
뒤늦게 알고서 나는 거기에서.
눈이 녹아 옷이 흠뻑 젖을 때 까지 그 사람을 기다렸는데.
끝내, 그 사람은 오지 않았다.
그리고 언젠가 부터, 그 사람이 먼저 왔다가 가버린거라고 믿기 시작했다.
그리고 몇 년이 지난 후, 숙녀가 된 그 사람이 내게 말해 주었다.
그 날, 내가 기다리는 걸 보고선 돌아갔다고.
만나서 무슨 말을 해야 할지 잘 몰랐다고.

오늘도 첫눈이 내린다.
오늘 만나기로 했을 그 누군가들은,
꼭 다시 만나 손을 잡는 날이 되어라.

커피가 맛있다.
키보드도 좋다.
내일은 일찍 일어나서, 눈 밟으면서 출근해야지.

'일상다반사' 카테고리의 다른 글

소설 책을 고를 때.  (0) 2008.12.15
take me to your..,  (4) 2008.12.07
cafe, mizmoren  (0) 2008.10.27
눈길에 미끄러졌을 때..,  (0) 2008.10.22
그 남자의 말, 그 여자의 말.  (0) 2008.10.21

EtherNet/IP 프로젝트를 진행하면서 SPARC Solaris 5.10 에서 공유 메모리를 사용하게 되었다.
기존에 Windows 에서는 공유 메모리 Key 제약도 char* 형태로 받아서 문제없이 진행되었지만
shmget 같은 경우는 key_t 형태로 Key 를 받기 때문에 기존에 char* 형태의 Key로
유일무일한 key_t 타입으로 변경하기엔 쉽지 않았다. 물론 이것만 보면 가능하겠지만
우리 프로젝트에서는 좀 더 많은 제약사항이 있었기에 힘들었다는 것이다.

이 문제를 해결하고, 당면한 문제는 Solaris 5.10 에서 공유 메모리 할당 받는 부분에서
Segmentation Fault 에러가 난 것이다.
Debugging 을 통해서 공유 메모리를 할당받은 것을 memset 하는 부분에서 나는 것을
알 수 있었고, 좀 더 삽질 끝에 공유메모리 개수에 따라 에러 유/무가 나타나는 것을
알 수 있었다. 이러면서 ipcs 명령어로 생성된 공유 메모리 상태를 확인하였는데
128개에서 더 이상 생성되지 않는 것이다.

Sun Document 를 찾아 본 결과 아래와 같은 결론을 지을 수가 있었다.

1. Solaris 8 버전 이하에서는 /etc/system 파일에서 IPC 설정을 하면서 제어가 가능했다.
2. 새롭게 Solaris 10 버전에서는 /etc/project 파일에서나 Resource controls 프로그램으로 
    IPC 설정이 가능하다.
3. 기존의 구성 설정은 무시된다.

간략하게 요약하면 위와 같다. 좀더 세부적인 항목은 아래를 살펴보자.

자원 제어

폐기된 항목

이전값

최대값

새 기본값

process.max-msg-qbytes

msginfo_msgmnb

4096

ULONG_MAX

65536

process.max-msg-messages

msginfo_msgtql

40

UINT_MAX

8192

process.max-sem-ops

seminfo_semopm

10

INT_MAX

512

process.max-sem-nsems

seminfo_semmsl

25

SHRT_MAX

512

project.max-shm-memory

shminfo_shmmax

0x800000

UINT64_MAX

실제 메모리의 1/4

project.max-shm-ids

shminfo_shmmni

100

224

128

project.max-msg-ids

msginfo_msgmni

50

224

128

project.max-sem-ids

seminfo_semmni

10

224

128


우리는 위의 표에서  project.max-shm-ids 부분을 주목할 필요가 있다.
바로 우리가 찾는 128 한계 값인 것이다. 이것을 우리가 원하는 값으로 수정해줄 필요가 있다.
자원제어(rctls) 기능은 Solaris 9에서 새롭게 지원되는 기능으로, 기존에 Solaris 8 이전에 제공되던
Software Express 파일럿 프로그램의 새로운 버전이라고 생각하면 된다.

각설하고 우리는 여기서 prctl 라는 Resource controls 프로그램을 사용하기로 하였다.
이 프로그램은 실행되는 프로세스, 태스크, 프로젝트 단위로 Resource를 얻거나 설정할 수 있다.
기타 다른 설정할 수 있는 프로그램으로는 rctladm 이라는게 있다고 한다.
물론, 찾아보면 zonecfg 로도 설정할 수 있고 /etc/project 파일에서 설정할 수 있다고 한다.
하지만, 내가 생각하기에 가장 명료한 prctl 로 제어를 하기로 했다.

# prctl -n project.max-shm-ids $$
NAME ...생략
           privileged       128 ... 이하 생략

value 인 128을 수정해야 한다.

# prctl -n project.max-shm-ids -v 1000 -r -i project user.root
# prctl -n project.max-shm-ids $$
........ 생략 1.00K .... 생략...

1000 개로 바뀐 걸 알 수 있다. 명령어에 대한 자세한 사항은 해당 man 페이지나
http://docs.sun.com/app/docs/doc/816-5165/prctl-1?l=ko&a=view 사이트에서
자세히 알 수 있고, 마지막 user.root 는 어디에 적용시킬지 정하는 건데
# id -p 를 통해서 현재 내 projid=1(user.root) 임을 확인하고 적용시켰다.
물론 그룹으로 해도 되며, group.root 형식으로 하면 된다.

두 번째로, shm-memory 값도 변경하여야 한다. 형식은 위와 같다.

# prctl -n project.max-shm-memory -v 100M -r -i project user.root

확인 하면 100MB로 설정 돼 있는 것을 알 수 있을 것이다.
물론 이는 시스템이 재부팅 되면 다시 기본 값으로 되돌아 온다.
이를 막기 위해서는 /etc/project 파일에 적어주는 것과
해당 명령을 부팅 시에 자동으로 적용 시킬 수 있게 만들어 주면 될 것이다.

참고자료 : http://download.oracle.com/docs/cd/B19306_01/install.102/b15690/pre_install.htm#sthref259