블로그 이미지
.
속눈썹맨

공지사항

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

calendar

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

NPTL 지원여부 확인 방법

2005. 6. 10. 15:55 | Posted by 속눈썹맨
. Thread Library를 이용하여 프로그램을 작성한다.
. Compiler해서 link된 library를 nm으로 본다.
. nptl관련 부분이 들어있으면 nptl을 지원하는 환경에서
  컴파일한 것이다.

Reentrent and thread safe

2005. 6. 10. 12:47 | Posted by 속눈썹맨
Reentrent function
- Static Data를 전혀 사용하지 않는 다.
  non-reentrent function을 call하지 않는 다.

thread safe fuction
- 다른 thread가 들어와도 안전하다.
  lock을 이용할 수도 있고, thread local storage를 이용할 수도 있다.

reentrent 이면 thread safe하다
Thread safe해도 reentrent하지 않을 수 있다.
interrupt 같은 상황은 single thread에서도 발생할 수 있기 때문이다.
signal handler에서는 reentrent function만 쓰는 것이 좋다.

런던지하철

2005. 6. 10. 03:09 | Posted by 속눈썹맨
런던지하철(London underground, tube)
http://www.tfl.gov.uk/tube/

지하철 노선도
http://www.tfl.gov.uk/tube/maps/
Access Map을 이용하면 index에서 위치를 찾고 좌표에 해당하는 곳을
보면 된다.

지하철 역 찾기
http://www.visitlondon.com/tubeguru/

런던 뮤지컬 예약하기

2005. 6. 10. 02:49 | Posted by 속눈썹맨
런던 뮤지컬 예약하기
http://www.prettynim.com/information/musical.htm
http://www.prettynim.com/mystory/mystory-51.htm

좌석배치도(앞 쪽 일수록 비싼자리)
http://www.ticketmaster.co.uk/seatingchart/188732/10161

필요한 것
e-mail 계정
신용카드
300DPI이상의 컬러 프린터
Acrobat reader

공연일)
2005년 6월 24일 오후 7시 30분(25분까지 입장)

Loyal Lyceum Theatre(극장) 가는법
http://www.londontheatre.co.uk/londontheatre/westendvenues/lyceum.htm
Wellington 지역 가는 법
지하철 Covent Garden 역(Piccadilly Line, Blue)

숙소에서 가는 법
Wimbledon -> Earl's Court(8정거장)
Earl's Court -> Covent Garden(8정거장)

Confirmation Number : 14-40340/UK3
Ticket Information
------------------------------------------------------------------------

You have purchased 2 ticket for:
DISNEY PRESENTS
** THE LION KING **
LYCEUM THEATRE
WELLINGTON ST LONDON WC2
FRIDAY EVENING 19:30
24TH JUNE 2005

Seating Information
------------------------------------------------------------------------

ORCHESTRA STALLS
PRICE LEVEL 1
MUST BE SEATED BY 7.25PM

SECTION STALLS, ROW P, SEATS 13 TO 12
Total Price
------------------------------------------------------------------------
£90.50
($165.88)
    
Customer Service
+44 (0) 870 1535353

C, C++ extern const variable 사용하기

2005. 6. 9. 17:00 | Posted by 속눈썹맨
. C언어 일 때 (gcc 2.9, 3.x 로 컴파일함)
[ilashman@ob test_extern]$ cat a.h
#ifndef A_H
#define A_H
int a;
#endif /* A_H */
[ilashman@ob test_extern]$ cat b.h
#ifndef B_H
#define B_H
#include <stdio.h>
void func();

void func2()
{
    printf("b.h a :  %d\n", a);
    printf("b.h &a :  %p\n", &a);
}
#endif /* A_H */
[ilashman@ob test_extern]$ cat a.c
#include "a.h"
#include "b.h"
#include <stdio.h>

extern int a;

int main()
{
    a = 3;
    printf("hi\n");
    printf("a.c a : %d\n", a);
    printf("a.c &a : %p\n", &a);

    func();
    func2();

    return 0;
}
[ilashman@ob test_extern]$ cat b.c
#include "a.h"
#include "stdio.h"

extern int a;

void func()
{
    printf("b.c a : %d\n", a);
    printf("b.c &a : %p\n", &a);
}
[ilashman@ob test_extern]$ cat Makefile
all:a

a:
        gcc a.c b.c -o a -g -Wall

clean:
        \rm a
[ilashman@ob test_extern]$ ./a
hi
a.c a : 3
a.c &a : 0x8049600
b.c a : 3
b.c &a : 0x8049600
b.h a :  3
b.h &a :  0x8049600

-------------------------------------------
C와 C++에서는 extern, extern const를 쓰는 용법이 각자 다르다.

. C++의 경우 Visual Studio .NET 2003에서 테스트 함.
. C++ extern variable
. header에는 아무 것도 적지 않는 다.
. 한 cpp 파일
const int x = 10;
. 다른 모든 cpp 파일
extern int x;

. C++ extern const variable (extern variable과는 다르다.)
. header에는 아무 것도 적지 않는 다.
. 한 cpp 파일
extern const int x = 10;
. 다른 모든 cpp 파일
extern int x;
-------------------------------------------
extern을 쓰지말고 namespace를 쓴다.
namespace는 파일에 관계 없이 같은 scope가 유지된다.

. 참고
google, MSDN -> extern const, constant values
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclang/html/_langref_constant_values.asp

Prefork Model

2005. 6. 8. 21:55 | Posted by 속눈썹맨
. Parent가 미리 child n개를 만듬
. 모든 child가 message queue나 listen에서 기다림
. child가 적당히 request를 받고 끝나면 다음 request를 기다림
. parent나 monitoring process는 child 갯수가 부족하면 늘려줌.
  혹은 flag를 보고 child 갯수를 조절.
. sighup을 받으면 child 갯수 flag를 바꿈
. signal을 받았을 때도 모든 process의 flag setting(graceful stop)하거나 signal을 보내서 죽임.
. monitoring server process는 monitoring client가 접속하여 갯수를 받아갈 수 있게 함.

memprof

2005. 6. 8. 18:28 | Posted by 속눈썹맨
사용법
X가 떠 있는 환경에서만 쓸 수 있다.
다시 컴파일 하거나 할 필요는 없다.

실행
memprof

C일때는
/usr/lib/libmemintercept.so

C++일 때는
/lib/libgcc_s-3.2.2-20030225.so.1
/usr/lib/libstdc++.so.5.0.3
/usr/lib/libmemintercept.so
가 설치되어 있어야 함.

메뉴얼이 없다. mail archive를 뒤지자.
http://mail.gnome.org/archives/memprof-list/

네트웍(network) 상태 확인하기

2005. 6. 8. 17:05 | Posted by 속눈썹맨
man netstat -a

netstat -s

네트웍 통계를 보여준다.
active connections openings : 이 서버가 다른 곳에 접속한 횟수
passive connection openings : 다른 서버가 이 곳에 접속한 횟수
packets received, packets sent : 주고 받은 패킷 수
TCPLostRetransmit, TCPFastRetrans : 재전송

트래픽이 매우 크고 TCP lost나 retrans가 많다면 네트웍에 이상이 있거나 대역폭이 부족한 것이다.

netstat -a
listening socket과 non-listening socket의 정보를 보여준다.
(state : listening, established, time_wait, syn_sent, syn_recv, fin_wait1, closing 등..)

netstat -a --tcp : tcp만 보여준다.
netstat -a --udp : udp만 보여준다.
netstat -an : 포트번호를 숫자로 보여준다.(well-known port를 변환해서 보여주지 않는 다.)

C++ template에서는 string literal을 쓰면 안됨

2005. 6. 7. 15:05 | Posted by 속눈썹맨
$ cat ./temp1.cpp
#include <iostream>

extern const char *FOOD_PREFIX = "/tmp/really_hungry"

template<size_t SIZE=8192, const char *PREFIX=FOOD_PREFIX>
class Food
{
    public:
    int m_price[SIZE];
    char *m_prefix;

    Food(const char* prefix=PREFIX) : m_prefix(prefix)
    {
    }
};

int main()
{
    Food<> goodFood;

    goodFood.m_price[0] = 100;

    return 0;
}

[ilashman@ob test_shm2]$ g++ ./temp1.cpp -g -Wall
temp1.cpp: In function `int main()':
temp1.cpp:17: string literal "/tmp/really_hungry" is not a valid template argument because it is the address of an object with static linkage
temp1.cpp:17: ISO C++ forbids declaration of `goodFood' with no type
temp1.cpp:19: request for member `m_price' in `goodFood', which is of
   non-aggregate type `int'

C++ 표준보기

http://library.n0i.net/programming/c/cp-iso/template.html
14.3.2 -2-을 보면
template에서는 string literal을 쓰면 안됨.

비규정적 부분

2005. 6. 6. 20:20 | Posted by 속눈썹맨
모든 예술에는 비규정적 부분이 존재한다.
예를 들자면 3차원 세계를 2차원 캔버스에 그린 그림은 화가가 그린 시점 이외의 다른 부분에서의
모습은 나타나 있지 않다.
예를 들어 모나리자의 정면은 볼 수 있지만 측면이나 뒷통수는 볼 수가 없다.

작품 속에서는 볼 수 없는 부분이지만 인간은 적절히 상상하고 재구성하여 인식한다.

소설에서도 비슷하다.
소설에서 "여기 컵이 있다."라고만 적어놨다면 사람들은 자신들의 배경, 지식(선입관)을 통해 나머지 부분을 채워넣는 다. 색도 적당히 상상하고, 크기, 위치도 적절히 생각해 내야 한다.
그것은 독자 개인마다 각자의 상황과 시점에 따라 다들 수가 있다.

소설을 영화로 연출할 때도 연출자는 비슷한 일을 해야 한다.
세세한 세부 사항을 적절히 분위기에 맡기 채워넣고 소품과 배경을 준비해야 한다.