블로그 이미지
.
속눈썹맨

공지사항

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

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

BLOB - Binary Large Object

2005. 5. 31. 12:05 | Posted by 속눈썹맨
Oracle에서 쓰이는 data type

http://www.ibexpert.info/documentation/%20%203.%20Database%20Objects/%20%203.%20Field/%20%203.%20Data%20Type/%20%201.%20Blob%20-%20Binary%20Large%20OBject/388.html

Lock이 잘 동작하는 지 test하는 방법

2005. 5. 31. 11:47 | Posted by 속눈썹맨
1. lock이 걸리는 변수와 걸리지 않는 변수를 같이 setting한다.
2. 많은 thread를 띄운다.
3. lock을 건다.
4. 두 개 모두 값을 임시 변수에 각각 넣는 다.
5. 시간을 끌거나 context switching을 여러번 시킨다.
    복잡한 loop를 돌거나, loop 중간에 sched_yield() 같은 함수를 넣는 다.
6. 임시 변수의 값을 증가시켜 대입한다.
7. lock을 푼다.
8. 값을 찍는 다.
9. 위의 과정을 반복한다.

C언어 문자열 대입(String assign)

2005. 5. 31. 11:03 | Posted by 속눈썹맨
char* str;
str = (char*)malloc(2 * sizeof(char));

1. str = "S"
2. str[0] = 'S';
    str[1] = '\0';
3. strcpy(str, "S");
4. strdup(str, "S");

1번은 "S"라는 literal이 가리키는 주소(statically allocated constant)를 str에 집어넣어버린다.
http://groups.google.co.kr/group/comp.lang.c/browse_thread/thread/66a16943b9cacc4/c7f6147134e6428f?q=c+string+assign&rnum=1&hl=ko#c7f6147134e6428f
따라서 위에서 이미 할당해 준 메모리에 대해 Memory leak이 발생한다.

2번은 새로운 주소를 넣지 않고 이미 할당받은 곳에 "S"라는 문자열을 집어넣는 것이다.

3번은 2번과 같은 결과를 가져온다.

4번은 새 메모리를 할당하고 "S"를 넣는 다. 1번처럼 memory leak이 발생한다.


char *str = "A";
str[0] = 'B';
str[1] = '\0';

segmentation fault를 낸다.
str이 가리키는 "A"가 들어있는 공간은 statically allocated constant가 들어있으므로 값을 변경할 수가 없다.

참고) statically allocated constant를 가리키고 있을 때 free를 부르면 behavior를 예상할 수 없다.
        (segmentation fault가 나기도 한다.)


string에 새로운 내용을 넣을 때는 function call시 pointer를 쓰고
string의 새로운 공간을 할당하기 위해서는 pointer of pointer를 쓴다.
http://groups.google.co.kr/group/comp.lang.c/browse_thread/thread/9c6dcd4f43190b20/6cdac8fc4afca9e1?q=c+string+assign&rnum=2&hl=ko#6cdac8fc4afca9e1

mantis - php/MySQL/web based bugtracking system

2005. 5. 30. 20:50 | Posted by 속눈썹맨
http://www.mantisbt.org/

apache + mysql + php 설치하기
mysql 계정, DB만들기

cd ~/public_html/ilashman
tar xzvf mantis-1.0.0a2.tar.gz
cd sql
mysql -u 계정 -p암호 디비명 < db_generate.sql
http://호스트명/~계정명/mantis-1.0.0a2/
Signup

e-mail을 받고 그 안에 적힌 url을 클릭하고 암호를 2번 입력하면 활성화 됨

http://호스트명/~계정명/mantis-1.0.0a2/admin/check.php 에서 상태확인

기본 계정 : administrator/root

다른 계정을 만들고 권한을 administrator로 만든 후
administrator계정은 disable하고 protected도 끔.

admin 디렉토리도 지움
$ rf -rf admin

관리 -> 프로젝트 관리 -> 새로운 프로젝트 생성

요약
날짜별로 1,2,3,7,30,60,90,180,365일 동안 올라온 것이 나옴.

뉴스 편집 -> 뉴스추가
헤드라인, 본문을 적으면 첫화면 공지사항으로 올라감.

공무원, 경찰, 소방관 계급

2005. 5. 29. 22:56 | Posted by 속눈썹맨
공무원 계급

대통령
국무총리
장관,차관
차관보
1급공무원 관리관
2급공무원 이사관 : 국장급
3급공무원 부이사관, 부국장
4급공무원 서기관 : 과장급
5급공무원 사무관, 부서기관, 부과장
6급공무원 주사
7급공무원 주사보
8급공무원 서기
9급공무원 서기보

경찰관계급

치안총감(큰무궁화4개)

우리나라 경찰에서 제일 높으신 분이지요. 우리나라 전체 경찰조직을 대표해서 국민의 치안을 책임지고 계십니다. 현재(97년2월)는 황용하 경찰청장님이 이 계급에 해당하십니다.
 
치안정감(큰무궁화3개)

이 계급해 해당하시는 분은 총 4분이십니다. 경찰청차장, 서울경찰청장, 해양경찰청장, 경찰대학장
 
치안감(큰무궁화2개)

각 지방경찰청 다시말해서 경기경찰청과 같이 각 도에 있는 지방청의 장을 맡고 계신분입니다.
 
경무관(큰무궁화1개)

경무관이라는 말은 많이 들어보셨을 겁니다.
 
총경(무궁화4개)

경찰의 꽃이라고 하지요. 현재 경찰 조직의 최소 '행정관청'인 경찰서의 장을 맡고 계신분이십니다. 서울을 예로 들자면 매 구마다 있는 종로경찰서, 서초경찰서 등의 장을 맡고 계시지요.
 
경정(무궁화3개)

경찰서의 등급에 따라 다르긴 하지만 주로 일선서의 과장을 맡고 계신분이 여기에 속합니다. 경찰서에는 정보 ,수사, 교통, 보안, 경무등 몇가지 과로 나뉘는데 이의 장을 맡고 계신 분들이지요.
 
경감(무궁화2개)

일선 서의 과장이나 계장을 맡는 계급입니다(각 서의 급수마다 다름). 또 전경대나 기동대등, 경찰의 경비업무 등은 주로 중대단위(약 200명정도)로 구성되어 있는데 여기의 중대장을 맡고 있는 계급이지요.
 
경위(무궁화1개)

이 계급까지가 경찰간부라고 할 수 있겠습니다. 일선서의 주임이나 형사반장, 서에 따라서는 계장까지도 맡게 되는 계급이지요. 경찰대학을 졸업하거나, 일반간부 후보생 시험을 거쳐 경찰종합학교 교육을 마치면 이 계급에 임용이 되지요. 여러분이 익히 아시는 각 동마다의 파출소장이 이 계급에 속합니다. 강원도 어느 파출소는 경감이 파출소장하는 곳도 있다고도 합니다. 그리고 전경대 기동대의 소대장을 맡기도 하지요.
   
경사(봉오리4개)

이 계급부터가 비간부에 속합니다. 좀 전문적으로 들어가자면 수사경찰에는 "사법경찰관"과 "사법경찰관리"이라는게 있거든요? 사법경찰관은 경위에서 경무관까지라고 법상으로 규정되어 있지요(형사소송법) 사법경찰관리는 경사와 경장등 그 이하 계급입니다. 따라서 이계급부터가 사법경찰관리가 되는 거지요. 쉽게말해서 일단 사건이 일어났을 경우 사법경찰관은 [검사의 지휘를 받아서 수사하고, 사법경찰관리를 지휘하여] 수사를 하게 되는 구조를 취하지요. 여기에서 바로 여러분도 들어봄직했던 *수사권독립*이라는 문제가 생기게 됩니다. 파출소장을 보좌하여 국민과 가장 가까운 거리에서 여러분동네의 치안을 담당하고 있는 파출소 부소장에 해당하지요.
 
경장(봉오리3개)


순경(봉오리2개)

많이 들어보셨지요? 오해했음직한 순경=경찰 이 아니란걸 아시겠습니까? 순경은 경찰의 한 계급에 속합니다. 파출소에서 가장많은 인구?를 자랑하지요.
 
전의경(봉오리1개)

(의무경찰 , 전투경찰 줄여서) 의경,전경이란 군복무대신에 경찰에서 의무복무를 하는 대한민국의 든든한 사나이들을 말하지요. 소속에 있어 차이는 있긴 하지만 모두 같은 경찰 식구랍니다. 이 젊은이들이야말로 여러분의 안방을 굳게 지키고 있는 파수꾼이지요.

소방관계급
- 소방 총감 (消防總監)
- 지방 소방 정감 (地方消防正監)

- 소방 정감 (消防正監)
- 지방 소방감 (地方消防監)

- 소방감 (消防監)
- 지방 소방정 (地方消防正)

- 소방정 (消防正)
- 지방 소방령 (地方消防領)

- 소방령 (消防領)
- 지방 소방경 (地方消防警)

- 소방경 (消防警)
- 지방 소방위 (地方消防尉)

- 소방위 (消防尉)
- 지방 소방장 (地方消防長)

- 소방장 (消防長)
- 지방 소방교 (地方消防校)

- 소방교 (消防校)
- 지방 소방사 (地方消防士)

- 소방사 (消防士)

충정부대, 충정훈련

2005. 5. 29. 22:50 | Posted by 속눈썹맨
http://kin.naver.com/browse/db_detail.php?d1id=6&dir_id=607&docid=43570
공수부대를 중심으로 한 대도시 부근의 일반 부대.
전두환 신군부측의 폭동진압, 시위 진압용 부대.
5.18 광주에 투입됨.

은박지를 이용한 봉투 묶기

2005. 5. 27. 19:24 | Posted by 속눈썹맨
비닐 속에 많은 양의 물건이 들어가면 묶기가 힘들다.
은박지를 길게 접어서 비닐을 봉할 때 같이 감는 다.
은박지가 말리면서 비닐도 쉽게 봉해진다.

쓰레기 봉투에 많은 양을 넣을 때 유용하다.

디버그 옵션에 따른 C++ 프로그램의 크기

2005. 5. 27. 16:03 | Posted by 속눈썹맨
$ cat ./inc.cpp
#include <iostream>

int main()
{
    for (int i = 0 ; i < 1000000; i++)
    {

    }

    return 0;
}

$ g++ ./inc.cpp -g -Wall -S -o ./inc.g.s
$ g++ ./inc.cpp -O0 -Wall -S -o ./inc.s

$ g++ ./inc.cpp -g -Wall -o ./inc.g.out
$ g++ ./inc.cpp -O0 -Wall -o ./inc.out

$ wc inc.s
    208     392    3311 inc.s
$ wc inc.g.s
  31507   61063  455649 inc.g.s

$ ls ./inc.out -al
-rwxrwxr-x    1 ilashman ilashman    12735  5월 27 16:03 ./inc.out
$ ls ./inc.g.out -al
-rwxrwxr-x    1 ilashman ilashman   120275  5월 27 16:02 ./inc.g.out

아주 간단한 프로그램에서 debug옵션을 넣으면 assembly code 크기는 150배,
binary 크기는 10배 커졌다.

CxO의 종류

2005. 5. 27. 15:54 | Posted by 속눈썹맨
. CEO - Chief Executive Officer
. CTO - Chief Technolony Officer
. COO - Chief Operation Officer
. CFO - Chief Finance Officer
. CHO - Chief Human Resource Officer
. CIO - Chief Infomation Officer
. CMO - Chief Marketing Officer
. CSO - Chief Strategy Officer

C++의 메모리 공간(heap, stack)에 따른 주소

2005. 5. 25. 18:06 | Posted by 속눈썹맨
$ uname -a
Linux ob.ds.neowiz.com 2.4.20-8smp #1 SMP Thu Mar 13 17:45:54 EST 2003 i686 i686 i386 GNU/Linux

$ cat /etc/redhat-release
Red Hat Linux release 9 (Shrike)

$ cat /proc/cpuinfo
Intel(R) Xeon(TM) CPU 2.40GHz x 2

$ cat ./addr.cpp
#include <iostream>

using namespace std;

int main()
{
    int a = 10;
    int *b = new int();
    *b = 20;

    cout << "a : " << a << endl;
    cout << "&a : " << &a << endl;
    cout << "b : " << b << endl;
    cout << "&b : " << &b << endl;
    cout << "*b : " << *b << endl;

    delete b;

    return 0;
}
[ilashman@ob cpp_test]$ ./addr
a : 10
&a : 0xbfffdac4
b : 0x8049ce0
&b : 0xbfffdac0
*b : 20

-------------------------
IA32, linux의 경우는 stack일 때 0xbf로 시작하고 heap일때 0x80 부터 allocation을 시작하는 것 같다.
각 환경의 특성을 알아두면 메모리 관련 문제에서 디버깅할 때 변수의 주소를 찍어봐서 디버깅 할 수 있다.
예를 들어 new로 할당해서 heap에 들어가 있을 것으로 가정했는 데,
주소가 stack이라면 중간에 임시 객체가 생겨서 casting, copy constructor, assign 등이 일어났음을
암시할 수 있다.
혹은 share하는 변수(or static 변수)가 정말로 같은 곳을 가리키고 값이나 lock을 공유하는 지 알 수 있다.