블로그 이미지
progh2
지루한 것에서 벗어나 재미난 것 속으로 풍덩~☆

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

Notice

Recent Post

Recent Comment

Archive

제1장 시작하기
유닉스 프로그램 PATH
유닉스는 PATH 변수에서 항목을 구분하기 위해 MS-DOS와 같이 세미콜론(;)이 아니라 콜론(:)을 사용한다는 것에 주의하기 바란다. 유닉스가 콜론을 먼저 사용하기 시작했으므로 유닉스가 왜 다른 문자를 선택했는지에 대해서 의문을 가질 필요는 없다! 다음은 PATH 변수의 예이다.
[CODE]/usr/local/bin:/usr/bin:.:/home/neil/bin:/usr/X11R6/bin[/CODE]
여기서 PATH 변수는 표준 프로그램 위치, 현재 디렉토리(.), 사용자의 홈 디렉토리와 X윈도우 시스템에 대한 내용을 가진다.

이맥스
이맥스 튜터리얼 -> C + h, t
C + v 다음페이지
M + v 이전페이지
C + x c 끝내기(!)

man vs. info
info 가 man 보다 보통 더 유용하다!

헤더파일
대개 /usr/include와 서브디렉토리에 위치한다. 또, C 컴파일러에서 -I (아이) 플래그를 지정하여 서브 디렉토리나 다른 어떤 디렉토리의 헤더 파일을 사용할 수 있다.
[CODE]$ gcc -I/usr/openwin/include fred.c[/CODE]
종종 헤더 파일에서 특별한 정의문과 함수 원형을 찾기 위해 grep 명령을 사용하는 것은 편리하다. 프로그램으로부터 종료 상태를 반환하기 위해 사용되는 정의문의 이름을 알 필요가 있다고 가정하자. 간단히, /usr/include 디렉토리로 이동하고 예상되는 이름으로 grep을 사용한다. 다음과 같이 할 수 있다.
[CODE][07/18_14:44][progh2@aged:~]$ cd /usr/include/ [07/18_14:44][progh2@aged:/usr/include]$ grep EXIT_ *.h argp.h:#define ARGP_HELP_EXIT_ERR 0x100 /* Call exit(1) instead of returning. */ argp.h:#define ARGP_HELP_EXIT_OK 0x200 /* Call exit(0) instead of returning. */ argp.h: (ARGP_HELP_SEE | ARGP_HELP_EXIT_ERR) argp.h: (ARGP_HELP_SHORT_USAGE | ARGP_HELP_SEE | ARGP_HELP_EXIT_ERR) argp.h: (ARGP_HELP_SHORT_USAGE | ARGP_HELP_LONG | ARGP_HELP_EXIT_OK \r stdlib.h:#define EXIT_FAILURE 1 /* Failing exit status. */ stdlib.h:#define EXIT_SUCCESS 0 /* Successful exit status. */ [07/18_14:44][progh2@aged:/usr/include]$[/CODE]

라이브러리 파일
라이브러리(libraries)는 재사용이 가능하도록 작성된 미리 컴파일된 함수의 모임이다. 대개 /lib 와 /usr/lib에 저장된다. C 컴파일러나 (더욱 정확히)링커는 기본적으로 표준 C 라이브러리를 검색하므로 검색할 라이브러리를 알 필요가 있다. 따라서 표준 디렉토리에 라이브러리를 저장해 두고 컴파일러가 이것을 찾도록 요구하는 것은 충분치 않으며 라이브러리는 독특한 명명 전통을 따르고 명령 라인에서 지정될 필요가 있다.
라이브러리 이름은 항상 lib으로 시작하며 c라이브러리를 가리키는 c나 수치 연산 라이브러리를 가리키는 m과같이 라이브러리의 내용을 가르키는 부분이 나타난다. 이름의 마지막 부분은 마침표(.)로 시작하고, 라이브러리의 형태를 지정한다.
전형적인 정적 라이브러리를 가르키는 .a
공유 라이브러리를 가리키는 .so 와 .sa
일반적으로 라이브러리는 ls /usr/lib을 통해서 볼 수 있듯이 정적 라이브러리와 공유 라이브러리의 형태로 존재한다. 컴파일러에게 전체 경로 이름을 지정하거나 -l 플래그를 사용하여 라이브러리를 찾도록 지시할 수 있다. 예를 들어, 다음은 함수에 대한 참조를 해결하기 위해 표준 C 라이브러리 외에 수치연산 라이브러리를 검색하도록 지시한다.
[CODE]$cc -o fred fred.c /usr/lib/libm.a[/CODE]

비슷한 결과를 다음을 통해 얻을 수도 있다.
[CODE]$cc -o fred fred.c -lm[/CODE]
-lm은 표준 라이브러리 디렉토리의 하나인 /usr/lib에 있는 libm.a라는 라이브러리에 대한 단축기능(shorthand)이다. -lm 표기 방식의 추가적인 장점은 공유 라이브러리가 존재할 때 컴파일러가 이것을 자동으로 선택한다는 것이다.
라이브러리는 일반적으로 헤더 파일과 같이 표준의 장소에 저장되지만, 컴파일러에서 대문자의 -L 플래그를 사용하여 검색 디렉토리에 추가할 수 있다. 예를들어, 다음은 디렉토리 /usr/openwin/lib에 존재하는 라이브러리 libX11의 버전을 사용하여 x11fred라는 프로그램을 컴파일하고 링크할 것이다.
[CODE]$cc -o x11fred -L/usr/openwin/lib x11fred.c -LX11[/CODE]
posted by progh2
2004. 6. 1. 17:37 기술문서창고/php
이전에 SCSC 서버에 아는 분(꽃님누나)이 테터툴즈를 설치해서 잘 사용하는 것을 본 적이 있습니다.이상한 것은, 서울대 서버 내에 있는 서버에 테터툴즈를 포함한 몇몇 복잡한 php나 cgi 프로그램을 설치하면 서울대 방화벽에서 연결을 차단하곤 했는데 그런 현상이 나타나지 않은 것입니다. 그래서 원인을 추측해보니, 설치된 테터툴즈의 directory가 cgi-bin 아래에 있다는 것을 발견했습니다. 그래서, 혹시 cgi-bin 아래에 있는 프로그램들은 연결을 차단당하지 않는 것이 아닐까란 생각이 들어 한번 시도해보았는데 아직까진 차단당하지 않았습니다. ;_; 경과를 몇일 더 두고 봐야겠지만..

아무튼 이렇게 과서버에 돌아온 김에 몇가지 php 설정변경을 해보았습니다. 오늘 시도한 것은 업로드 용량 조절인데, /etc/apache/php.ini 파일의 설정을 변경해서 2메가로 한정된 용량을 늘려보는 것이지요. 그래서 여러번의 시행착오끝에 아래 url에서 문제를 알아낼 수 있었고, 해결했습니다.
http://kr.php.net/manual/kr/configuration.directives.php#ini.memory-limit

아래 2개의 설정은 기본적인 설정으로, 여기서 용량을 늘려주면 업로드 용량이 증가하게 됩니다.
upload_max_filesize = 2M
post_max_size = 8M

하지만, 실제 해보면 10메가 정도 까지는 잘되나 그 이상으로 올리면 마음대로 되지 않는다는 것을 알 수 있습니다. 그 이유는 "시간설정" 때문입니다.즉, php 실행시간이 30초를 넘어가면 자동취소되기 때문에 이 설정도 변경해주어야 합니다.
max_execution_time = 30

그래도 약간밖에 늘어나지 않는다는 것을 깨달을 수 있습니다. 이것은 "메모리"문제 때문입니다. php 스크립트가 차지하는 메모리양을 제한해놓았기 때문에, 이것까지 손을대지 않으면 아됩니다. 최소한 업로드 파일용량보다 크게 해야하는 것 같습니다. 즉 8메가를 올린다고 하면 8보다 큰 값을 지정해주어야지 제대로 업로드가 되는 것입니다.
memory_limit = 8M

이 말은 곧 업로드 용량을 허용한만큼 서버의 메모리를 소비한다는 말입니다. 따라서 여러 클라이언트가 접속해서 한꺼번에 대용량들을 업로드 한다면, 서버의 메모리는 금방 고갈되서 스왑메모리를 소비할 것이고 이렇게 되면 서버는 매우 느려질 수 있습니다. 이렇기 때문에 php.ini 의 설정에서는 2메가라는 매우 적은 용량으로 제한해놓은 것이라 생각해볼 수 있습니다.

그래서, 결국 제가 한 설정은 다음과 같습니다.
upload_max_filesize = 100M
post_max_size = 100M
max_execution_time = 180
memory_limit = 106M
100메가 까지는 너끈히 올릴 수 있겠지요. :)
메모리제한을 -1 로 하면 무한(..)이 되긴 하는데 이거가지고 이상한짓을 할 사람도 있지 않을까 해서 하지 않았습니다. ( ")
그런데, 업로드 용량을 늘려서 어디다 쓰지?
posted by progh2
2004. 5. 24. 13:13 기술문서창고/etc
각 나라별 ip 대역 리스트.
출처: PHPSCHOOL?
posted by progh2
분명 네트웍은 정상이고, 다간다 등의 프로그램의 검색도 깨끗한데도 불구하고 인터넷이 안될 때가 있다. 이럴 경우 의심되는 것이 바로 Alexa 스파이웨어다.

검색결과, 아래 링크의 방법대로 하니 고칠 수 있었다.
http://kdaq.empas.com/dbdic/db_view.jsp?ps=src&num=3482275

시작 = > 실행 = > regedit

HKEY_LOCAL_MACHINE
software
microsoft
internet explorer
extensions

왼쪽창에서 다음폴더를 지우십시오.
{c95fe080-8f5d-11d2-a20b-00aa003c157a}
posted by progh2
2004. 5. 8. 18:55 기술문서창고/etc
아직 수년은 이르지만, 언젠가 교생이나 선생님이
되었을 때 써먹기 위해 기록해둠 ^^
posted by progh2
Sasser 라고 명명된 웜이 퍼지기 시작했고, 위험도가 critical로
치명적일 수 있다는군요. 자신의 o/s가 xp나 2000, 2003 이라면
아래 패치를 설치하세요. (윈98 은 해당사항 없음)

posted by progh2
2004. 4. 28. 11:28 기술문서창고/windows tip
자꾸 런타임 에러 등등 자바스크립트 오류가 계속 뜰 때는
익스 메뉴의 도구/인터넷 옵션/고급에 있는
아래 설정들을 아래와 같이 할 것!

http 오류메시지 표시 <-- off
스크립트 디버깅 사용 안 함 <-- on
모든 스크립트 오류에 관련된 알림 표시 <-- off

사실, 근본적으로 그 사이트의 자바스크립트 등이
문법을 제대로 지키지 못한다거나 해서 일어나는 문제지만,
이렇게 하지 않으면 사이트 서핑조차 제대로 못하는 곳이
있으니 어쩔 수 없다.
posted by progh2
2004. 4. 22. 09:56 기술문서창고/mysql
use mysql
create database 디비이름;
insert into db values ('%','디비이름','아이디','y','y','y','y','y','y','y','y','y','y');
insert into user (host, user, Password) values ('localhost','아이디',Password('암호'));
flush privileges;
posted by progh2