기본 콘텐츠로 건너뛰기

6월, 2007의 게시물 표시

Windows에서 F1이 도움말로 작동하지 않도록 하기

차를 좋아하는 글쇠판

내 회사 키보드는 茶를 그리도 좋아하나보다. 이전 i-rocks 6300은 녹차 먹고 엔터와 시프트를 비롯한 중요키를 작살내고 편히 쓰레기통에서 쉬더니만, 며칠 전에 산 i-rocks 6170은 복숭아홍차를 먹을 '뻔' 했다. 먹었으면 바로 내 피 같은 2만 원(1만 9천 9백 원)이 공중에 부~웅하고 뜨는거다. 원본 위치: http://purewell.egloos.com/3257729

비 오는 날

회사에서 열심히 놀고 일하고 있는데 어디선가 뽀독뽀독 소리가 들린다. 뭔가 했더니, 건물 바깥쪽 유리창 닦는 소리란 걸 알고 가뿐히 넘어...갈께 아니잖아! 장마라고! 왜 비 오는데 유리창을 닦는데!? 비 오는 날 세차하는 것과 동급인거야? 그런거야? 원본 위치: http://purewell.egloos.com/3256238

글쇠판바람

우리팀에 키보드 바람이 분 지 좀 지났지만 지금 글을 올린다. 키보드 바람 장본인 A씨(일전에 글에 나온 사람과 전혀 다른 사람)는 푹 익혀진 키보드 마니아이다. 그가 수제 키보드 세개 팔아서 DSLR을 구입했을 정도니 말이다. 덕분에 우리팀에 키보드에 대한 관심이 높아졌고, 하나 둘 좋은 키보드를 구입/제작하기 시작했다. 마지막 주자인 옆에 앉은 B과장은 10만원짜리 키보드를 구입하였다. (HHK Pro가 30만원인가? 그것에 비하면 싸긴 하지만...) 여기저기에서 짜그락짜그락 소리가 경쾌하게 들리고, 가끔씩 가서 써보면 느낌이 매우 좋다...만 그만한 가치는 잘 모르겠다. 난 그냥 일반 번들 키보드는 오래 좋은 느낌(?)을 느낄 수 없기에 i-rocks x slim을 구입하여 쓰는 것으로 만족하고 있다. 결혼해서 돈이 없어서가 절대로 아니다. -_- 원본 위치: http://purewell.egloos.com/3254248

이번엔 i-rocks 미니닷!

저번에 6300을 녹차목욕한 뒤부터 삼성번들 키보드 사용했다. 아~ 원숭이 꽃신이라고 했던가... 손꾸락이 너무 아프다. 마침 후배가 키보드에 대해 관심을 갖고, 또 마침 용돈도 충전했기에 i-rocks를 또 사기로 했다. (주인님 결재 완료) 오늘 드디어 도착한 i-rocks 6150. 사실 nano모델을 사려고 했지만, 특수키는 Function키를 누르고 다른 키를 누르라는... 또한 왼쪽에 키패드 없이는 절대로! 숫자 못 누르는 나에게는 너무 가혹하기에 그냥 미니모델로 싸지른 것이다. 키 배열이 익숙치 않지만, 다시 노트북 키감을 찾아서 아주매우많이 흡족하다. 아힝~* 좋아~* 근데 이놈의 한영키 누를 때마다 Alt키 누르는게 영 거시기 하네. 원본 위치: http://purewell.egloos.com/3253893

쩍벌녀도 있다.

지하철 같이 긴 의자에 여럿이 앉는 의자에서 다른 사람에게 피해를 주는 양다리 쩍~하니 벌리고 앉는 남자를 흔히 쩍벌남 이라고 한다. 많이 고쳐지고 있지만, 아직도 그런 ' 남자 '가 있다. 그러나... 오늘 출근길에 내 옆에 앉은 40대로 보이는 여자. 정장스타일로 쫙 빼입고 양다리 민망할 정도로 쫙 벌려 앉았다. 여자도 그러는구나. 누가 하든 민망하고, 옆 사람에게 피해를 주는 잘못된 앉는 자세는 반드시 고쳐야 한다. 원본 위치: http://purewell.egloos.com/3253643

깜빡하는 사이에 맛이 갈 수 있다.

오늘도 열심히 검은 화면에 하얀 글씨와 노닐며 열심히 손톱이 다 닳도록 일하고 있었다. 갑자기 마치 데자뷰 직전 현상(?)처럼 형광등이 몇 번 깜빡이더니 회사 컴퓨터 몇 대가 자살했다. 에어컨과 몇 주 전에 보급한 와이드 모니터 덕분일까? 다시 켰는데 또 깜빡하더니만 이제 부팅도 안 되고 컴퓨터 전원 스위치도 맛이 갔다. 헉! 어쩌지!? 다행히(?) 내 컴퓨터는 전원코드를 뽑았다 끼우니 다시 잘 작동하여 이렇게 회사에서 블로깅하고 있다. 오늘 행운여신이 함께한 사람은 A양. 아예 컴퓨터가 맛이 가버렸다. 주위 회사 동료들이 부러움을 감추지 못하고 있다. 큭큭. 난 다시 검은화면 속으로 고고씽! * IT에서 Ctrl+S와 :w 연타는 정신건강에 무한한 도움을 준다. 원본 위치: http://purewell.egloos.com/3252022

stl::string 객체 증가값?

SGI::STL STL에는 문자열을 다루기 아주 좋은 string이라는 객체가 있다. 이 객체는 실제 요구하는 메모리 양보다 더 많은 메모리를 할당하고 있을지 모른다. 이는 append 연산을 자주한다면, 매번 추가할 메모리를 잡는 것보다 넉넉하게 잡아놓고 채워 나가는게 더 빠르기 때문이다. 문제는 이것이 모든 string객체가 적용받는다는 건데, 만약 append 연산을 하지 않는 녀석이라면? 괜스레 많이 잡아놓고 쓰지도 않는다면 대략 낭비라는거다. #include <string> #include <iostream> using namespace std; int main(int,char**) {     string str1;     string str2("hello, world!");     string str3("hello, world!");     str3 += "okay";     cout << "str1.capacity() " << str1.capacity() << endl;     cout << "str2.capacity() " << str2.capacity() << endl;     cout << "str3.capacity() " << str3.capacity() << endl;     return 0; } STL개발회사나 라이브러리 버전에 따라 전략이 다른데, Linux에서 흔히 쓰는 gnu libstdc++ 두 가지 버전으로 해봤다. 자, 결과가 어떻게 나올까? 아래와 같다. libstdc++-3.4.4-2 str1.capacity() 0 str2.capacity() 13 str3.capacity() 17 libstdc++-4.1.2-12 str1.capacity() 0 str2.capacity() 13 str3.capaci

비... 비를 줘!!

Daum 미디어다음 아놔, 장마 전선이 왜이리 힘을 못 쓰는지 모르겠다. 아직 극초반이긴 하지만, 덥기만 오지게 더워지고, 습도만 높아졌지, 천둥번개폭우는 오히려 봄에 기승이더니만. 비 와야 농사 물 안 모자랄텐데... 원본 위치: http://purewell.egloos.com/3250219

std::map insertion

Standard Template Library에 잘 구현한 map(tree)과 string(char[]). 아무래도 map이 tree구조이기 때문에 insertion에서 list에 비해 느리다. 어따 끼워넣어야할지, 나무 균형 맞춰주기 등으로 좀 버벅이겠지. 근데 그게 어느 정돌까... 쓸만은 할까? 아래와 같은 상황에서 대충대충 짜봤다. $ uname -s -r Linux 2.6.18-8.1.3.el5 $ cat /proc/cpuinfo Intel(R) Xeon(TM) CPU 3.06GHz 2장(생략했음) $ free -m              total       used       free     shared    buffers     cached Mem:          2027       1330        697          0        283        690 -/+ buffers/cache:        356       1670 Swap:         4102          0       4102 $ g++ --version g++ (GCC) 4.1.1 20070105 (Red Hat 4.1.1-52) Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ rpm -qi libstdc++-devel Name        : libstdc++-devel              Relocations: (not relocatable) Version     : 4.1.1                             Vendor: CentOS Release     : 52.el5.2                      Build

/dev/shm과 swap

물리 메모리가 2기가인 시스템이 예쁘게 놓여 있다. 여기에 물리 메모리보다 큰 메모리 파일 시스템을 적용해보고 거기에 물리 메모리보다 큰 파일을 할당할 수 있는지, 할당한다면 Resident 상태로 잡히는지 Swap으로 잡히는지 테스트 해보자. $ cat /proc/sys/vm/swappiness 0 $ uname -s -r Linux 2.6.9-42.ELsmp $ free -m              total       used       free     shared    buffers     cached Mem:          2026         35       1990           0          0          6 -/+ buffers/cache:         28       1997 Swap:         4102          0        4102 $ df -h Filesystem            Size  Used Avail Use% Mounted on /dev/sda3              63G  1.4G   59G   3% / /dev/sda1             289M   16M  259M   6% /boot none                  1.0G     0  1.0G   0% /dev/shm 이런 시스템이 있단 말이지. $ mount -oremount,size= 3G /dev/shm $ df -h Filesystem            Size  Used Avail Use% Mounted on /dev/sda3              63G  1.4G   59G   3% / /dev/sda1             289M   16M  259M   6% /boot none                  3.0G     0  3.0G   0% /dev/shm 일단 물리 메모리보다 큰 파일 시스템을 마운트 했다. 이제 아래와 같은 우왁시런 소스로 2.5기가 파일을 생성해보자. #define _LA

mutable

mutable은 C++언어 키워드이다. 이것은 멤버변수를 바꾸지 않는다고 명시적으로 선언한 메서드에서 멤버변수를 바꿀 때 사용한다. 말인지 소인지 개인지 분간이 안 간다면 아래 소스를 보자. class CMyCount { public:     size_t getCount(void) const     {        return m_count;     }     void doSomething(void) const     {        // blar blar...        ++m_count;     } private:     mutable size_t m_count; }; doSomething은 CMyCount가 가지는 어떠한 변수도 바꾸지 않는다고 const 를 써서 명시적으로 선언했다. 그런데 만약 이 함수를 호출한 회수를 통계로 내고 싶다면? 그것도 instance마다 달리 계산하고 싶다면? mutable이 없다면 상황이 꽤나 복잡해질 것이다. doSomething이라는 함수 형태(뒤에 const를 띄어내는 것으로)를 바꿔야한다. 그렇지 않으면 각 instance를 죄다 관리하여 doSomething을 호출할 때마다 카운팅하는 무언가 만들어야한다. ... 귀찮다. 그래서 멤버변수를 바꾸지 않는 메서드 안에서도 변수 내용을 바꿀 수 있도록 컴파일러에게 알려주는 것이 mutable 이다. 지금은 딱히 이것이 통계 정보에나 쓰는 용도 말고는 떠오르지 않는다. 원본 위치: http://purewell.egloos.com/3237691

volatile

volatile은 C언어 키워드이다. 이 녀석은 컴파일러가 잘못 최적화하는 것을 막을 때 쓰인다. 일단 예제를 보자. class CMyThread { private:     void* thrProcess(void* param)     {        while ( !m_bExit )   // 위치1        {           // blar blar blar        }        pthread_exit(NULL);     } private:     bool m_bExit;            // 위치2 }; 위와 같은 쓰레드 소스에서, 쓰레드 루프를 빠져나오는 조건(위치1)이 m_bExit가 참일 때이다. 그런데 컴파일러는 루프 안에서 m_bExit를 고치는 함수가 없다는 것을 판단하면 루프를 아래와 같이 고칠 것이고, 어셈블리어로 변환할 때 비교도 없이 단순히 jmp만 할 것이다. LOOP_START: // blar blar goto LOOP_START; pthread_exit(NULL); 이처럼 최적화로 원치 않는 결과를 막기 위해 이 변수(또는 함수)는 최적화 하지 말라고 컴파일러에 명시적으로 알려주는 것이 바로 volatile 이다. 위 소스에서 간단하게 변수 정의할 때(위치2) 형 앞에 volatile이라고 붙이면 끝이다. private:     volatile bool m_bExit; 원본 위치: http://purewell.egloos.com/3237675

회사와 개발

Jonathan Schwartz's Weblog : Weblog 회사에서 일해본 사람이라면 익히 공감할 것이다. 몇몇 커뮤니티에 글쇠싸울아비들은 아래와 같이 잘 나가는(못 나가도) 회사를 매도하는데 익숙하다. 왜 공개/개발 안 해!? 그거 가지고 돈 쥐어 짜려고 그러는거지? 더런 놈들! 그러나 공개 안 하고 싶어서 안 하는 것도 아니거니와, 개발 안 하고 싶어서 안 하는게 아니다. 공개/개발하기 앞서 공격 당할지 모르는 법률적, 기술적 검토가 필요하기도 하며, 그만큼 인력과 시간이 필요하다. (핑계가 아니다) 비공식적으로 조금만 기다려달라는 말 밖에는 할 수 없다. 그럼 왜 공개하겠다고 공식적으로 말하지 않는데? 왜 개발하겠다고 공식적으로 말하지 않는데!? 공식적으로 말한다는 것은 대단히 신중하게 해야하는 일이다. 이것은 회사 이미지 문제도 밀접하다. 법률적/기술적 검토가 끝나기도 앞서 만약 공개/개발할께요~라고 했다가 어? 안 공개/개발하면 안 되네?라고 하면, 공식적으로 말해서 올려놓은 좋은 이미지보다 더 큰 타격을 입는다. 이래저래 핑계 같은 글이긴 하지만, 돈에 혈안이 돋은 기업만 있는 것도 아니고, 나름 잘 큰 기업은 대세를 읽고 나름대로 준비하고 있으니 너무 비난하진 말았으면 좋겠다. 끊임 없는 고객문의와 대안을 첨부한 비판/비평은 언제나 환영이다. 좀 도와주십쇼~ 원본 위치: http://purewell.egloos.com/3237530

넓은 세상에 오신 것을 환영합니다.

책상 한 가득, LCD들이 무섭게 날 노려보고 있다. 일 많이 하라는 건가보다. 삭신이야... 원본 위치: http://purewell.egloos.com/3236836

던킨, 분발 해봐!

예전에 던킨 도넛츠 맛있게 먹었다. 그러다가 예~전에 좐슨에게 끌려 명동에 미스터도넛에 입을 담근 부터는 던킨이 맛이 없다. 빵이 푸석푸석한게 특히나 안 좋게 느껴졌다. 미스도가 가진 쫄깃쫄깃한 그 맛에 완전히 묶인거다. 아흥~♡ 원본 위치: http://purewell.egloos.com/3235001

맞벌이는 결혼 전제조건

Daum 미디어다음 요즘 화성금성 이야기 같은 떡밥성 기사가 많이 올라오네. 리플을 보니 잘도 낚였고. 지금, 내 주인님(아내) 일하러 나가신다. 내가 많이 못 벌어오는 것이 문제이기 때문이다. 가기 싫은 직장이기에 더욱 안 쓰럽기만 하다. 집안일을 솔직히 완전히 분배하는 것은 불가능하다. 또한 그렇게 하는 것도 인간답지 못하고... 서로 사랑하고 서로 이해하기 때문에 한 쪽이 좀더 많이 하는 것이다. (그렇다고 주인님께 떠 넘겼다거나 내가 떠 맡았다는 소리는 아니다) 저런 기사에 열 올리면서 낚인 사람 치고 결혼해서 애 낳고 잘 살 준비를 한 사람이 몇이나 될런지 알 수 없다. 결혼은 단순히 서로 좋아하는 것만으로 이뤄질 수 없다. 결혼에 기초인 사랑은 희생을 기반으로 하기 때문이다. 정말 사랑한다면, 그래서 결혼했다면 서로에게 희생을 바라지 말고, 내가 먼저 뭘 해줄 수 있는가만을 생각했으면 좋겠다. 하다가 힘들면 당연히 서로에게 힘든 점을 솔직히 털어놔야하고, 들어줘야 한다. 아놔... 써놓고 보니 또 교과서 이야기이다. 뭐, 틀린 말도 아니고, 정말 쉽고, 정말 간단한 건데 사람들이 자승자박하면서 저런 것을 놓치고 있지 않나 싶다. '내가 피해자 다'라고 생각하지 말고, '난 행복 하다'라고 생각하자. 가끔씩 '행복해요?'라고 물으면, '행복해요.'라는 답변이 들려온다. 나도 행복하다. 원본 위치: http://purewell.egloos.com/3234993

이글루스 스티커 도착!!

이글루스 4주년 이벤트 - 축하 트랙백을 보내주세요. 아! 드디어 이글루스 스티커가 도착했다! 오, 푸짐한 커맨드센터(무려 스캔까지 딸려 있는!)들... 으흐흐흐흐~ 이걸로 우주 정복이닷! 반투명이라 밝은 배경에 붙이지 않으면 살짝 그렇다. 일단 스피커부터 점령. 이글루스엔 역시 불여시가 딱이지!! ... 그나저나 키보드까지 점령한 테란...이글루스. 그렇다! 이글루스는 불꽃 테란이다! 사실 그 불꽃은 냉동실 얼음칸이라는거~ 으하~ 볼 때마다 시원하네~ 이 글루스 서비스를 이용해 주셔서 감사합니다. 앞으로도 좋은 사람들을 만날 수 있는 최고의 블로그 서비스가 되기 위해 최선 을 다하겠습니다. 많은 관심과 사랑으로 지켜봐 주시기 바랍니다. 감사합니다. egloos.com 나도 이글루스에 감사하고, 4번째 생일을 다시 한 번 축하한다. > ㅂ<)/ 이글루스 만세~!! 원본 위치: http://purewell.egloos.com/3233829

좐슨, 불법체류노동자 지원하다?

오늘로 같이 일하던 좐슨이 그만 둔다. 살짝 아쉽다. 항간에 소문에 의하면 며칠 탱자탱자 논 뒤에 옆나라 일본에 가서 일할꺼라고 한다. 아... 왠지 눈 앞에 선~하다. 좐슨: 오우, 따당님, 때리지만 말아주세요~ 오우, 따당님, 밀린 월급 이번 달에는 나오나요? (물론 일어로 말하는거다) 5년만에 귀국한 좐슨, 그리고 그를 맞이 하기 위해 김포공항에 나온 샘이와 잼이는 몇 마디 모자란 그의 손에 기겁을 한다. 샘이: 좐슨! 어떻게 된거야!? 좐슨: 아, 별거 아니야. 일하다가 프레스에 살짝 눌린 거뿐이야... 좐슨, 설마 이런 일은 없겠지만, 몸 조심히 잘 다녀와. 어쩌면 쀍스런 우리나라 사정 때문에 안 돌아올 수도 있겠지만, 암튼 건강해!! 원본 위치: http://purewell.egloos.com/3211969

이 블로그의 인기 게시물

Bash Array, Map 정리

Bash에서 Array, Map에 대한 정리. (매번 찾기 귀찮) 찾아보진 않았지만, Bash에서 Array든 Map이든 동일하게 Map(C++에서 Unordered Map)으로 동작하는 것 같다. 왜냐하면, Array의 Index가 연속하지 않아도 동작한다. 그저 Key가 0 이상의 정수인 Map이랑 비슷하게 동작한다. 예) 1, 2, 3, 9, 10 Array # 생성 declare -a empty_array declare -a ar=(haha hoho baba "long string haha hoho") # 접근 echo "ar[0]=${ar[0]}" echo "all as array=${ar[@]}" # 큰따옴표 안에서 각 원소를 따로따로 전달한다. echo "all as one=${ar[*]}" # 큰따옴표 안에서 각 원소를 문자열 하나로 합쳐 전달한다. echo "indexes=${!ar[@]}" echo "indexes=${!ar[*]}" echo "length=${#ar[@]}" echo "length=${#ar[*]}" echo "last=${ar[-1]}" echo "last=${ar[@]: -1}" # 콜론 뒤에 빈 칸이 꼭 필요하다. 옛 방식 # 현재 상황 declare -p ar #(출력) declare -a ar=([0]="haha" [1]="hoho" [2]="baba" [3]="long string haha hoho") ar[100]=hello # 인덱스를 건너 뛰어도 동작한다. declare -p ar #(출력) declare -a ar=([0]="haha" [1]="hoho" [2]="baba" [3]=&

설치한 패키지에서 RPM 추출하기

오래된 패키지를 관리할 저장소가 없어졌고, 기존 패키지로 다른 서버를 세팅해야할 일이 생겼다면 RPM의 리패키지 기능을 이용해보자. $ rpm -e --repackage [PACKAGE_NAME] 위와 같이 리패키지하면, /var/spool/repackage/ 에 생성한 RPM파일이 있다. :-)