Archive for 4월, 2008

보첼리, 감동

목요일, 4월 24th, 2008

안드레아 보첼리 공연을 보러 갔습니다. 정말 갈 수 있을 거라곤 생각 안했는데

어쩌면 평생 다시 한국엔 안올 것 같은 공연.

기대했던 만큼 참 좋은 공연이었습니다.

잘하면 감동이 되는구나 하는 생각. 그리고 그만큼 잘하는 사람이더라도 저렇게나 실수하지 않고 하려면 연습과 관리가 철저했겠지요.

그래서 어제의 그런 생각을 하게 됐던 것 같습니다.

한번 사는 인생. 그저 그렇게 지나는 게 아니라,
삶을 걸어 감동을 주는 삶이었으면 좋겠다고.

노래를 그렇게나 잘하면,
아무 생산적일 것 같지 않은 노래가,
마음을 적셔주고 그래서 살고 싶다. 열심히 살아야겠다 하는 생각을 하게 하는 것 같습니다.
그리고 착해지고 싶다는 생각도.

보첼리는 12살 때 머리를 다친 이후로 장님이 되었대요
그리고는 법을 공부해서 변호사를 하다가 나중에야 다시 노래를 시작해서..

사람의 미래는 모르는 것이네요.

미치도록 좋아하는 것. 저도 그러고 싶습니다.

Resting..  이란 노래가 생각나는 날입니다.

강물과 같은 시간

목요일, 4월 24th, 2008

참 시간은 흘러가는 것 같아요. 같은 기회가 다시 올거라 생각했는데

이것 저것 읽다가 느낀 것이,
이제 대학 졸업할 후배님들과 같은 시작을 할 수 있는 시기는 이미 지났구나 라는 거네요

직장경력 6년. 이것 저것 합치면 7년쯤..

이제는 경력 중간에 끊어먹고 대학원 간.. 어쩌면 풍운아

처음에는 뭐든 할 수 있을 줄 알았고, 회사가 나를 선택하지 않으면 큰 손해본 거라고, 정말 좋은 사람을 놓친거라고 자신하기도 하고 했는데
그리고 나는 매일 발전할 거고 나의 미래는 밝다 못해 광채가 나게될 거라고 자못 맹랑하게 생각하곤 했는데

쌓아두었던 그동안의 것들을 덮어두고 잠시 숨을 고르러 온 지금, 참 뭔가 모르고 살았구나 하는 생각이 드네요

강물 같아서 시간은,

내가 선택했던 그 때로 다시 돌아갈 수가 없고, 그 때와 비슷한 상황이 다시 오지 않습니다.

다시 오지 않을 시간인데, 후회없는 선택들을 했었는지..

진정 제가 얘기했던 부끄러움 없는 탁월한 삶을 살았는지..

그 때는 몰랐어요 첫번째 선택할 때는.

회사란 것은 결혼과 같아서 제 인생에 엄청나게 큰 이정표라는 것을

사람도 마찬가지

그리고 내가 했던 일들과 지나온 발자취는 평생 나를 정의하는 데 쓰일 것이고 직장이나 어디든 선택하는 것은 인생에 몇번 없는 갈림길이라는 것을

헤드헌터, 유학, 어느것 하나도 후회 없기를..

만났던 사람들, 상사분들, 지금은 잘 모르지만 친구들, 다시 만날 건데..

길지 않은 인생인데도 뒤돌아보면 넘치고 흐른 자국들이 있네요

아직 젊다 생각했는데 그 때 그 일들은 이제 다시 시작할 수 없으니까..

첫사랑이 그렇고, 첫 직장이 그렇고.. 다시 공부 시작했을 때가 그렇고

그러니까 이젠 돌이킬 수 없고

좀더 공부해서, 좀더 발전해서 해야지 했던 것은 그 때 아니면 할 수 없었던 거네요.

에 또 다시, 그러니까,

기회가 왔을 때 때 잡을 수 있는 건 내 잘난 것이 아니라고,, 그건 정말 하나님이 그 시기에 나를 준비돼서 그 자리에 있게 하신 것,, 좀 더 겸손하자. 그런 생각이 들고

또, 다음 번 선택은 인생을 걸만한 선택을 하자. 그런 생각이 듭니다.

저를 움직일 만큼 가치 있는, 아니면 좋아하는.. 그런 것을 선택하렵니다. 그러면 그것이 최소한 10년은 저를 움직이게 하겠지요
그리고 10년 후 이렇게 물어볼 겁니다.

“진정 후회 없는 삶을 살았는가?”

석사 마치고 바로 회사에 갈 지 어떨 지는 모르지만 이렇게 말하고 싶습니다. 혹시 전 회사로 돌아가지 않는다면 말입니다.

(”하나님과” 이 대목은 말하지 못하겠지요) “나라와 민족에 도움이 되고자 하는 사람입니다. 최소한 있는 자리에서 남에게 뒤지지는 않을 자신 있습니다. 안돼도 죽기살기로 할 겁니다. 도움이 될 것이라 생각하는 자리에 넣어주시고 키워주십시요. 그리고 꿈을 얘기해주십시요. 전 꿈이 있어야 살고, 제 꿈과 맞는다면 제 가진 역량을 다 쏟겠습니다.”

그리고, 성실해야된다고 생각합니다. 앞에 있는 사람들에게 충실하기. “하나님과 사람 앞에서의 성실”이라는 말 좋아했습니다. 그렇게 완벽히 살지는 못하지만 계속 생각하고 북돋을 가치 있는 말.
내 혼자 있을 때의 일들도 누군가 본다고 생각하고 임하는 자세. 기억해야지.

이런 말 하는것.. 부끄럽네요. 멋진 듯한 말투로 아무렇지도 않게 공약들 쏟아내기.

시끄러운 Superfetch

수요일, 4월 23rd, 2008

Windows Vista를 사용하는 연구실의 제 PC는 코어2듀오 6320에 2G 메모리로 사양이 좋은편이라고 할 수 있습니다.

그런데 하드를 너무 많이 읽어대서 시끄럽고 느립니다.

왜 그런지 모르겠지만 디스크 IO를 너무 많이 해대는 것 같더군요

전 다만 IE 창 전환하고 싶을 뿐이었는데 디스크를 심하게 긁어대고 버벅거리는 응답속도 참을 수 없었습니다

무슨 프로그램이 그런짓을 하나 작업관리자로 살펴봐도 CPU 점유율이 높은 것은 없더라구요

그런데, 메모리 많이 먹는 프로그램들을 살펴보다가 서비스로 Superfetch라는 걸 찾았습니다.

ReadyBoost와 Superfetch가 같은 그룹에 있는것이 아무래도 prefetch(필요할 것 같은 걸 메모리에 미리 올려놓기)를 열심히 하는 것을 의미하는 것 같더군요

그래서 그 서비스를 종료했더니 확실히 조용해집니다.

Superfetch 를 검색해보니 저와 같은 경험을 하신 분이 있군요.

 

수퍼페치(Superfetch): 비스타의 수많은 하드 디스크 I/O의 원인

수퍼페치가 하는 일을 아주 간단히 설명하면 메모리에 자주 사용하는 것들을 미리 올려두어서 사용하자 필요하는 시점에 그것들을 바로바로 제공해 주는 것입니다. 메모리를 캐시로 사용하겠다는 생각이죠. I/O 병목 지점에서 미리 읽어둔다면 실행 속도가 엄청 빨라질겁니다. 와우. 훌륭한 기능이죠. 물론 아이디어는 좋습니다. 하지만 수퍼페치의 기능을 몇 달간 체험해 본 바로 제가 느낀 점은 "너무 공격적이다"라는 것 입니다. 메모리를 아낌없이 사용하며, 디스크 I/O는 시도때도 해버리는 그런 존재인 것이죠. 제가 봤을때 수퍼페치를 설계한 사람들이 결정적으로 간과한 한 가지 사실은 하드디스크 소음입니다. 그 엄청난 I/O에서 발생하는 소음 공해들. 작업에 집중할 수 없는 환경을 만들어 줍니다. 이런 연유로 저는 오늘 당장 수퍼페치를 중지 시켰고 매우 만족스럽게 사용하고 있습니다. 이제야 조용한 컴퓨터가 되었네요.

 

저는 이와 함께 searchindexer도 꺼줘야 할 것 같습니다.

http://trustnoone.tistory.com/entry/searchindexerexe

권욱현 교수님

월요일, 4월 21st, 2008

올 학기 초에 "우연히" 학부 세미나 과목에 청강하러 갔다가 권욱현교수님의 고별연설겸 특강을 듣게 됐습니다.

권욱현 교수님은 제어학과의 거두쯤 되시는 분으로 올해 은퇴하시게 됩니다. 관련 인터뷰

이 분이 유명한 이유는 가장 큰 것이 이른바 ‘벤쳐의 대부’ 라고 불릴 정도로 후진들의 벤쳐 창업과 성공이 눈부시기 때문입니다.

제가 일전에 다녔던 우리기술이란 회사도 이 분의 제자들이 만든 회사였지요

사실 나이가 그렇게 많으신 줄 몰랐고 이제 은퇴하신다니(이미 명예교수셨습니다) 아쉽기도 했습니다.

특강 때 그 분께서 하신 말씀중 하나가 기억납니다.

"10년 정도면 목표 하나를 이룬다고 생각하고 노력하자"

자기 일생을 뒤돌아볼 때 그렇게 살아왔던 것 같다고 하시더군요

앞으로의 인생도 10년을 두고 뭔가 하나씩 배우고 이루어나가면 되지 않겠느냐 하셨습니다.

예를들어 구기종목 하나 배우고 악기 하나 배우고,

또한 해야할 목표들을 이루어가고 - 가깝게는 근래에 있을 세계제어학회 호스트, 책 쓰기등

10년 법칙 얘기가 한때 많이 나오기도 했었는데(예를 들면 공병호씨나 아니면 작은 소책자로 나왔던 스펜서 존슨씨의 "10년 후") 이분도 같은 생각을 하시는 것 같습니다

또한 일전에 들은 이야기로 피터드러커씨도 고령에임에도 불구하고 테니스도 배우시고 끝까지 배우고 이루어가는 삶을 살았던 걸 기억합니다.

제가 살갑지 못하고 용기가 없어서, 그리고 나름 자존심이 있어서 배우고 싶은 분과 만나서 이야기하고 그런 기회가 많이 없네요

하지만 가끔 그런 분들의 말씀을 들을때마다 도전이 됩니다.

Cache-Conscious Structure Definition

월요일, 4월 21st, 2008

프로그램에서 배열로 쓰는 것 보다는 구조체나 클래스를 정의해서 쓰는 게 알고리즘적으로는 더 스마트합니다.

그런데 하드웨어 입장에서 보면 캐쉬 구조상 관련된 것들끼리 메모리상으로 가까울 것으로 예상하고 또한 성능이 더 좋습니다.

그렇다면 구조체나 클래스를 쓸 때도 캐쉬를 생각해서 구조를 잡는 게 유리하겠죠

 

그에 대한 페이퍼를 찾아봤는데

scholar.google.com에서

class struct cache live

이렇게 검색하니 나오네요.

ftp://ftp.cs.wisc.edu/wwt/pldi99_cache_def.pdf 99년에 나온 페이퍼입니다. 아직 읽어보진 않았습니다.

Cache-Conscious Structure Definition

Trishul M. Chilimbi, Bob Davidson, James R. Larus

A program’s cache performance can be improved by changing the
organization and layout of its data—even complex, pointer-based
data structures. Previous techniques improved the cache performance
of these structures by arranging distinct instances to increase
reference locality. These techniques produced significant performance
improvements, but worked best for small structures that
could be packed into a cache block.

후략

같은 사람이 2000년에 낸 페이퍼도 있습니다.

http://ftp.cs.wisc.edu/wwt/computer00_conscious_original.pdf

Trishul M. Chilimbi, Mark D. Hill, James R. Larus

Making Pointer-Based Data Structures Cache Conscious

위스콘신대랑 MicroSoft

 

http://www.info.uni-karlsruhe.de/lehre/2002SS/uebau2/papers/ChilimbiHillLarus-1999.pdf

Proceedings of the SIGPLAN ‘99 Conference on Programming Languages Design and Implementation (PLDI 99), May 1999,
Atlanta Georgia.

Trishul M. Chilimbi, Mark D. Hill, James R. Larus

temporary TSP -2

금요일, 4월 18th, 2008

image

그래서 reverse tournament에 Num_Pop/2까지로 해서 95%로 돌려봤다.

population 다양성은 유지되면서 결과값은 더 좋게 나왔다. 800 조금 밑.

 

99%로 해봤다.

image

800조금 위

 

Num_Ipop*2로 하고 90% 해봤다.

image

별로

 

따로 define하고 200으로 해봤다. ipop=50, pop=1000

image

그림은 좋지만 값은 850넘는다.

 

mutation alarm(60초) 후에는 200에서 100으로 줄여봤다. 각이 더 꺾어진다. 좋아짐. 836

image

 

image

30초 60초 90초에 mutation rate과 victim max를 변경했다.

별 소용 없는 듯..

미리 팍 꺾어줘야 할 듯.

 

image

rate 4단계로 하고 max변경 안했다. 30초때 변경이 효과 있는 듯.

 

rate 6단계 max 변경 rate 변경

image

 

그럼 이제 처음에 mutate은 소 elitism은 대 에서 시작하여 mutate 올리고 elitism 내리는쪽으로 하자

mutate은 작은 걸로 시작해 +0.2까지 올라가고

선택 파라미터는 1에 가까운 데서 시작해 10% 내려가도록

image

첫번째 바꿀 때 많이 내려간 걸 볼 수 있다. 그 다음부턴 별로다. 결과도 별로

#define REVERSE_TOURNAMENT_PRESSURE 0.95
#define REV_TOR_STEP    (-(0.06/RATE_CONTROL_CNT))
#define REVERSE_TOURNAMENT_MAX_VICTIM   100
#define REVERSE_TOURNAMENT_VICTIM_STEP  (-20)

#define TOURNAMENT_PRESSURE 0.85
#define TOR_STEP    (-(0.1/RATE_CONTROL_CNT))

#define RATE_CONTROL_CNT    6
#define TIMED_MUTATION_RATE
#define TOURNAMENT_PRESSURE_CONTROL
#define TOURNAMENT_VICTIM_CONTROL
#define MUTATION_CONTROL_STEP   (0.2/RATE_CONTROL_CNT)

 

image

그래서 약간 파라미터 수정했다. 결과는 약 810으로 40쯤 좋아짐

#define REVERSE_TOURNAMENT_PRESSURE 0.94
#define REV_TOR_STEP    (-(0.06/RATE_CONTROL_CNT))
#define REVERSE_TOURNAMENT_MAX_VICTIM   120
#define REVERSE_TOURNAMENT_VICTIM_STEP  (-20)

#define TOURNAMENT_PRESSURE 0.83
#define TOR_STEP    (-(0.1/RATE_CONTROL_CNT))

 

이제 반대방향 해보자 끝값이 아까의 시작값과 비슷한 수치로 했다.

image

결과는 816 비슷하다.

보다시피 처음에 떨어지는 각도가 예리하다. 후반에는 경사가 완만해진다.

 

image

802 가 나옴.

image

#define TOURNAMENT_PRESSURE 0.98
#define TOR_STEP    (-(0.1/RATE_CONTROL_CNT))

#define REVERSE_TOURNAMENT_PRESSURE 0.88
#define REV_TOR_STEP    (-(0.09/RATE_CONTROL_CNT))
#define REVERSE_TOURNAMENT_MAX_VICTIM   50+15*RATE_CONTROL_CNT
#define REVERSE_TOURNAMENT_VICTIM_STEP  (-15)

#define RATE_CONTROL_CNT    9
#define TIMED_MUTATION_RATE
#define TOURNAMENT_PRESSURE_CONTROL
#define TOURNAMENT_VICTIM_CONTROL
#define MUTATION_CONTROL_STEP   (+0.1/RATE_CONTROL_CNT)

 

다시 worst부터 없애는 걸로

image

image

image

확률적으로 60%씩으로 아래서 쭉 훑어도 별 차이 안보임

 

랜덤으로 선택해도 별..

image

(중간에 끊어서 각이 낮아보임  steep한 것) 830대 나옴.

 

 

 

 

image

815

image

#define VICTIM_MIXED   // parent + worst

#define TOURNAMENT_PRESSURE 0.98
#define TOR_STEP    (-(0.1/RATE_CONTROL_CNT))

#define REVERSE_TOURNAMENT_PRESSURE 0.88
#define REV_TOR_STEP    (-(0.09/RATE_CONTROL_CNT))
//#define REVERSE_TOURNAMENT_MAX_VICTIM 50+15*RATE_CONTROL_CNT
#define REVERSE_TOURNAMENT_MAX_VICTIM   400

#define MUTATION_RATE_CONTROL
#define RATE_CONTROL_CNT    9
#define TIMED_MUTATION_RATE
#define TOURNAMENT_PRESSURE_CONTROL
//#define TOURNAMENT_VICTIM_CONTROL
#define MUTATION_CONTROL_STEP   (+0.1/RATE_CONTROL_CNT)
#define MUTATION_SWAP_CYCLE

 

같은 걸 30도시에서 해봄

image

image

best는 아님

best는 image

20 11 13 19 17 8 18 7 23 3 0 29 24 22 28 2 27 25 1 12 21 10 9 6 16 26 4 5 14 15

 

 

결국 이쪽으로 가려고 한다

image

30에서 best가 나오는거 봤음.

#define DEFAULT_POPULATION  1000
//#define DEFAULT_GENERATION    5000
#define DEFAULT_GENERATION  -1  // unlimited
#define DEFAULT_NEW_POP     100 // new population on each generation

#define SELECTION_TOURNAMENT    /// tournament method
#define TOURNAMENT_PRESSURE 0.85
#define TOR_STEP    (-(0.05/RATE_CONTROL_CNT))
#define TOURNAMENT_STAGE    2   // 1, 2. not implemented others

#define VICTIM_REVERSE_TOURNAMENT
#define REVERSE_TOURNAMENT_PRESSURE 0.95
#define REV_TOR_STEP    (-(0.09/RATE_CONTROL_CNT))

#define REVERSE_TOURNAMENT_MAX_VICTIM   500
#define REVERSE_TOURNAMENT_VICTIM_STEP  (-15)

#define CX_MIX
#define MUTATION_RATE_CONTROL
#define RATE_CONTROL_CNT    9
#define TIMED_MUTATION_RATE
#define TOURNAMENT_PRESSURE_CONTROL
//#define TOURNAMENT_VICTIM_CONTROL
#define MUTATION_CONTROL_STEP   (+0.1/RATE_CONTROL_CNT)
#define MUTATION_SWAP_CYCLE

 

100에서는?? 좀 다르게 해야할지도 모름.

일단 숙제 제출용으로는 프로파일 옵션 빼야하고 길이와 경로 프린트 시키고..

pollock에선 조금 다르게 세팅해서 테스트 pressure를 0.85, 0.93 로 하고 있음.

temporary tsp

목요일, 4월 17th, 2008

image mutation rate control + alien

 

image no alien no mut ctrl

image roulette wheel, 800 50 mutation control alien

468

image roulette, no mut ctrl, no alien

 

image roulette pressure 3.0 no mut ctrl, no alien

 

image  roulette, 10 ipop

 

 

image

100개 도시. roulette 3.0 10 ipop, no mut ctro, no alien

image

같이 100개 도시. no mutation - 엄청 나빠짐을 알 수 있다.

5000번 정도부터 평균값과 최저값이 거의 수렴해버렸다.

image

800개에서 2000개로 population 올렸고 20개 ipop. 여전히 수렴해버린다.

 

image

여기에 mutation을 넣었다. 지금부턴 mutation을 통해 다양성을 늘리고 있으나 수렴이 늦다. 1300대

 

 

image

역시 100개도시. mutation control을 켰다. 그리고 mutation의 25%는 완전히 새걸로 섞는다. population이 redundant한가를 avg와 best가 5% 이내 차이나냐로 하고 0.5% 스텝으로 mutation rate증가시켰다. 그러니 8%정도에서 멈춘다.

1000대로 결과가 좋게 나온다.

 

 

image

이번엔 ipop을 50으로 늘여봤다. 120초 후의 세대가 70000대로 줄었다.

역시 비슷하게 1000대 (pressure는 3.0) mut rate은 4.5%가 됐다.

2000으로 내려가는 것은 빠르고, 그 이후로는 완만하게 내려간다.

 

 

자 여기서 selection을 tournament로 바꿔보자 2단계로, 0.6 압력이다

image image

970정도 나온다. mutation rate은 9%가 됐다. 한번 더 했는데 930대. 7%

 

 

초기  mutation rate를 조금 올려보자. 1.5%였는데 5%로 올려볼까

image

1000 넘는다. 아까의 970보단 그닥 좋게 안나온다. mutation rate는 8%로 됐다.

아예 랜덤하게 selection하는 것 보단 좋다는 걸 보이겠다.

selection을 random으로 한 것과 random diversity 한 것(좋은거 하나 나쁜거 하나 offspring만들기)

image

엇 예상보다 잘나왔다. 1050 random

 

그렇다면 mutation이 거의 주 팩터라는 얘긴데(CX도 별거 아닌 건 위에서 봤음)

image

random diversity는 1100대가 나온다. selection이 조금 효과가 있긴 있다고 볼 수 있나…

 

 

mutation을 극단적으로 올려보자 초기를 45%로

image

diversity로 한 경우 1200대로 더 나빠졌다.

 

random으로 해보자

image

1300대로 더 안좋다.

 

0.15%로 돌려보자

image

1033 좋다.

 

tournament로 ipop을 20으로 했다.

image

1100대 50때가 좋다.

selection은 한껀당은 roulette가 좋지만 연산이 느려서 세대가 느리게 증가함으로 tournament가 시간제약상황에서 더 우수하다.

 

Tournament 800-20

image

980대로 예상보다 좋은 값을 가졌다

image

여기에 stage를 1로

좀더 안좋다. 1080대

선택압을 0.6에서 0.7로 올려보자

image

1060대 그다지 변화없다

그러므로 0.6 stage2로 해보자.

 

이제 30개 도시 테스트

image

470대. 예상외로 최적값이 나오지 않고 설익은 수렴했다. 450대란 걸 알고 있고 본적이 있는데 그렇게 안나온다. 두번 해봐도 마찬가지.

- 100개를 위해 최적화하다보니 어차피 안되는 최적값 찾기는 포기하고 수렴을 빨리 하도록 최적화된게 아닌가 한다.

그래서 ipop을 50으로

image

그래도 비슷하다.

image

467 ipop20다시 돌아옴.

 

랩 사람들의 얘기를 들어보니 cross over 연산자를 order cx로 바꾸면 더 성능이 잘 나온다는 것 같다.

바꿔보았다.

30개 도시

image

120초 동안 전체 34만 generation으로 cycle crossover랑 비슷한 속도. 대신에 average가 위에 있는 것이, 다양성이 많다. 최적값은 아니었지만. (최적값으로 수렴하게 하는 것은 mutation이랑 관련 있는 것 같음)

 

100개 도시

image

모양은 비슷한 것 같다. 대신에 다양성이 꽤 많아서, mutation ratio가 증가하지 않았다. 조정하는 게 좋겠고 16만 generation. 비슷하다. 900대

 

여기에 mutation ratio 조정을 시간으로 하게 해봤다.

전체 수행시간의 절반 이후는 +45%

image

그러나 그다지 좋아지지 않았다. 1000대 아까랑 비교할 때 더 안좋아진 느낌.

+10%로 해봤다

image

결과값은 조금더 좋았다. 그다지 차이는 없다 970쯤

 

여기에 ipop을 50으로 늘여봤다.

image

값 차이는 없다 추세도 비슷.

 

여기에 다시 cx 연산자를 mix해봤다. 4번에 cross simple, cross, order 2번 섞었다

image

910대로 좋아진다! 추세도 주욱 내려간다. 처음 이쪽으로 내려갔다.

수렴속도가 느려진것 같다. 그러면 여기에 replacement policy 를 수정하면?

그러나 두번째 재수행 때는 더 안좋았다. 1100대.. –;

image

 

replacement policy를 worst removal로 했다.

image

790대가 나왔다. 이걸 좀 더 다양하게 해주면?

image

victim을 g마다 랜덤하게 parent/worst로 해봤다. 870대 그닥..

 

image

victim을 worst로 cx mix를 바꿔봤다. 870쯤 ipop은 1000

gnuplot 간단사용

목요일, 4월 17th, 2008

정말 단순한 점 그래프만 그릴거라면

텍스트 파일에 컬럼으로 쭉 덤프된 파일 만들고

$ gnuplot

 

#gnuplot 프롬프트에서

# plot "dump.txt" u 1:2 title "column2", "dump.txt" u 1:3 title "column3"

이런식으로 쓰면 됨.

image

이 그림은

plot "r30.txt" u 1 title "best", "r30.txt" u 2 title "average"

 

plot 커맨드를 파일에서 입력해 그리고자 한다면

echo "plot \"${PLOT_FILE}\" u 1 title \"best\", \"${PLOT_FILE}\" u 2 title \"average\"" > plot.cmd
gnuplot -persist plot.cmd

이런식으로 하면 된다.

-persist는 플롯을 그리고 나서 종료되어도 플롯 그림은 그대로 남아있게 하는 옵션이다.

TSP

목요일, 4월 17th, 2008

image

개인적으로 정리하려고 올리는 글들

TSP 100개 도시 최적은 아니고 최적과 근접한 경로 찾음.

/var/tmp/badcontext

목요일, 4월 17th, 2008

관리하는 서버가 계속 이런 파일이 생기네요

selinux관련 오류같은데

일단

restorecon으로 클리어하고 지우면 된다는군요.

selinux를 잘 몰라서.. 좀 더 알아봐야겠습니다.

http://www.redhat.com/archives/fedora-selinux-list/2004-September/msg00161.html

restorecon -f /var/tmp/badcontext.YGZFP27816
Will fix the context, then delete the files. We are investigating how do handle this better. Also
some of the bad contexts are not really bad, IE the tools not smart enough to realize that the context is
valid. Setfiles is just reporting files that don’t match the regular expessions in the file_contexts file.

So cache files created by mozilla get marked as bad even though they are valid.