친구에게 자동차 키를 주고 할머니를 태우게하고 너는 남아서 여자친구와 행복하게 사는거다
나름대로 괘찮은 영화였다...
'영화/애니' 카테고리의 다른 글
연예,그 참을 수 없는 가벼움 (0) | 2006.11.08 |
---|---|
타짜 (2) | 2006.10.26 |
달콤살벌한연인 (0) | 2006.08.17 |
비열한거리 (0) | 2006.07.24 |
구름속 저편, 약속의 장소 (0) | 2006.07.23 |
친구에게 자동차 키를 주고 할머니를 태우게하고 너는 남아서 여자친구와 행복하게 사는거다
연예,그 참을 수 없는 가벼움 (0) | 2006.11.08 |
---|---|
타짜 (2) | 2006.10.26 |
달콤살벌한연인 (0) | 2006.08.17 |
비열한거리 (0) | 2006.07.24 |
구름속 저편, 약속의 장소 (0) | 2006.07.23 |
스킨을 바꾸려고 시작했던것이
테터를 새로 설치하게 되고...
그러다 첨부 파일이 다 날라가버렸다.
젠장.
무료계정이라 복구가 안된단다...
돈을 내고 써야 하나 -_-...
에효
연휴의 마지막날은 데이터 복구에 전념해야겠다...
돌아가는 키보드라.... (0) | 2006.10.11 |
---|---|
바탕화면과 아이콘이 이쁜 외국사이트 (0) | 2006.10.10 |
이렇게 절묘할 수가... (3) | 2006.08.17 |
프로그래머의 천적. 그대의 이름은 '귀차니즘' 이로다 (0) | 2006.07.19 |
일일 가이드 체험(?) (0) | 2006.07.03 |
Author: mylerdude ( http://myler.mp/ )
Source: http://www.flickr.com/photos/mylerdude/3563553/
This file is licensed under Creative Commons Attribution 2.0 License
스티브 잡스
Steven Paul Jobs a.k.a. Steve Jobs
1955년에 태어나서 76년에는 위즈니악, 웨인과 함께 애플社를 창업하고,
그래픽 사용자 환경(GUI)와 마우스의 상업적 가능성을 처음으로 인지한 사람 중 하나이며
1984년에는 GUI를 탑재한 상업용 컴퓨터를 업계 최초로 성공적으로 데뷰시켰으며
1985년에는 자신이 만든 회사인데도 불구하고 애플에서 쫓겨났고
그후 NeXT 컴퓨터社를 설립하여 넥스트스텝이란 PC를 만들었다.
넥스트스텝은 비록 판매량은 형편없었지만,
WWW의 창시자인 Tim Berners-Lee가 넥스트스텝 워크스테이션에서 WWW를 태동시켰으며
1986년도에는 조지 루카스로부터 단돈 1천만달러에 CG전문가들을 사들여서
컴퓨터 그래픽 스튜디오를 설립했으니, 이것이 현재의 토이 스토리로 유명한 Pixar이다.
1996년, 애플社는 넥스트社를 4억2백만$에 사들이고
그는 다시 애플로 귀환하게 된다.
97년, 그는 애플의 임시 CEO가 되었고
98년에 이르러서는 빈사 상태에 있던 애플을 살려내기 시작했고
애플社와 컴퓨터 산업 전반에 폭풍처럼 강렬한 영향을 끼친
iMac을 발표하기에 이른다.
iMac과 신형 매킨토시들의 영향으로
IT업계는 물론 각종 상품의 디자인과 컨셉에 "투명"이라는 조류가 불어닥치게 된다.
2001년 3월에는 현존하는 가장 아름다운 운영체제인 Mac OS X을 데뷰시키고
그해 말, 세계의 휴대용 음악기기 시장의 판도를
완전히 뒤바꿔 놓게 될 iPod 시리즈의 첫번째 모델을 데뷰시켰다.
2003년, 애플은 iTunes Music Store 서비스를 미국에서 시작했고
2005년, 애플은 앞으로 Intel의 CPU를 사용할 것이라는 충격적인 선언을 했으며
그 약속대로 Intel CPU를 사용한 매킨토시를 속속 출시하고 있다.
그리고, 다수의 "자칭"컴퓨터 전문가들이라고 하는 자들의 칼럼과는 반대로
매킨토시에서 Windows를 가동시키는 것을 공식적으로 지원하기에 이른다.
혹자는 애플이 앞으로 나아갈 방향이 두 가지가 있다고 한다.
그것은 post-Dell 과 post-Microsoft 이다.
애플은 윈도우가 돌아가는 머신을 그 어느 회사(dell, compaq)보다 아름답게 만들 수 있고
또한 그 누구보다 사람과 기계(컴퓨터)가 소통하는 데 있어서
가장 올바르고 재미있는 길이 무엇인가를 OS에 담아낼 수 있는
철학과 기술을 가진 회사이다.
드디어 IT와 PC를 선도했던 제다이가
오랜 침묵을 깨고 시장의 주도적인 위치를 다시 넘보고 있다.
그리고 그 선봉에는
세계 최소 연봉(연간 1$)이라는 일견 황당한 타이틀을 달고 있는 스티브 잡스가 있다.
공교롭게도, 혹은 계획적으로,
1996년 2월, 돈만 많은 패배자의 위치에 있던 그가 애플로의 복귀를 앞두고
와이어드지와의 인터뷰에서 이런 말을 남긴 적이 있다.
데스크톱 컴퓨터 시장은 죽었다. 혁신은 사실상 끝장이 나버렸다. MS는 아주 미약한 혁신만을 주도하고 있다. 그렇다, 모든 것은 끝나버린 것이다. 애플은 갈 길을 잃었고, 데스크탑 시장은 암흑기에 접어들었다. 그리고 이 암흑기는 앞으로 10년간, 혹은 이 세기가 끝날 때까지 지속될 것이다.
그로부터 10년이 지난 지금
그는 지금의 위치에 있다.
우연으로 볼 것인가
아니면
필연으로 볼 것인가는
앞으로의 역사가 증명해 줄 것이다.
스티브 잡스의 명언록
Quotes of Steve Jobs
무덤에 들어 앉은 부자따위엔 관심 없다.
잠자리에 들 때, "우린 놀라운 일을 해냈다"라는 말을 할 수 있는 것이
나에겐 더 중요하다.
1993년 봄, 월스트리트 저널과의 인터뷰 中 / 빌 게이츠와 MS社에 대해
애석하게도, 사람들은 MS에 저항하지 않는다. 뭘 몰라서 그런거다.
롤링스톤 매거진과의 인터뷰 中
나는 내 나이 스울셋에 백만장자가 되었다.
그리고 스물넷에는 억만장자가 되었다.
하지만 스울다섯이 되었을 때,
그런 것들은 아무 의미가 없게 되었다.
왜냐면 나는 돈을 위해서 그런 일들을 한 것이 아니었기 때문이다.
PBS 다큐멘터리, "멍청한 자들의 승리" (1996) 中
MS가 가진 문제는 그들이 "맛"을 가지고 있지 않다는 것이다.
여기서 내가 말하는 "맛"이라는 것은 단순한 느낌을 말하는 것이 아니다.
아주 광범위한 영역을 뜻한다.
그들은 자신만의 착상을 하지 않고,
그들의 생각을 제품에 담지를 않는다.
PBS 다큐멘터리, "멍청한 자들의 승리" (1996) 中
EBS 지식채널 - 이소룡이 이소룡에게 1부 (0) | 2007.02.02 |
---|---|
구글 마스터플랜 (0) | 2006.12.01 |
대우 중공업 김규환 명장이 삼성에서 강의한 내용 (2) | 2006.11.29 |
성숙한 사람 (0) | 2006.05.18 |
‘진짜 인재’의 7가지 특징 (0) | 2006.05.08 |
| ||||||||||
| ||||||||||
| ||||||||||
| ||||||||||
사자.... 술을 한잔 덜 먹으면 되고 고기 한번 덜 먹자. 저녁은 라면으로 때우고 담배는 3일에 한갑으로 만족하자. 사는거다... 사는거야... | ||||||||||
kiss kiss - sweetpea (0) | 2007.02.13 |
---|---|
서태지의 "난 알아요"가 표절인가... (4) | 2007.01.08 |
ABBA, 나에게 힘이 되어주는... (0) | 2006.10.29 |
Stranger by the day - Shades Apart (0) | 2006.07.03 |
소울메이트 OST ep.12~14 (1) | 2006.05.13 |
출처 : 스몰토크와 객체지향이야기
유니코드란?
국제표준으로 제정된 2바이트계의 만국 공통의 국제 문자부호 체계(UCS: Universal Code System)를 말한다. 애플컴퓨터·IBM·마이크로소프트 등이 컨소시엄으로 설립한 유니코드(Unicode)가 1990년에 첫 버전을 발표하였고, ISO/IEC JTC1에서 1995년 9월 국제표준으로 제정하였다. 공식 명칭은ISO/IEC 10646-1(Universal Multiple-Octet Coded Character Set)이다.
데이터의 교환을 원활하게 하기 위하여 문자 1개에 부여되는 값을 16비트로 통일하였다. 코드의 1문자당 영어는 7비트, 비영어는 8비트, 한글이나 일본어는 16비트의 값을 지니는데, 이를 모두 16비트로 통일한 것이다. ISO/IEC 10646-1의 문자판에는 전세계에서 사용하고 있는 26개 언어의 문자와 특수기호에 대해 일일이 코드값을 부여하고 있다. 최대로 수용할 수 있는 문자수는 6만 5,536자이다. 이 가운데 3만 8,885자는 주요 국가의 언어를 구현하는 용도로 이미 할당되어 있고 6400자는 사용자 정의 영역으로, 나머지는 2만여 자는 새로 추가될 언어 영역으로 각각 비워두고 있다. 코드 할당비율을 보면 한자가 39.89%로 가장 많고, 한글 17.04%, 아스키 및 기호문자 10.39% 등의 순이다.
여기에 포함된 한글 코드 체계는 옛 한글의 자모를 포함한 한글자모 240자(HANGUL JAMO, 11열)와 한국표준인 KSC 5601의 조합형 한글자모 94자(HANGUL COMPATIBILITY, 31열), 한글에서 구현할 수 있는 최대 글자수 1만 1,172자를 가나다순으로 배열해 놓은 완성형(HANGUL, AC열∼D7열) 등 3종으로 되어 있다. 또한 각국의 문자를 2바이트로 수용하기 위해 우리나라와 중국·일본·타이완의 한자를 통합하였다. 한자의 비중이 높은만큼 동양권에서는 서체의 통합과 입출력 방식에 대해 계속 논의를 해오고 있다.
유니코드에서 한글은 십진수로 44032부터 55203까지입니다.
이 유니코드 한글의 패턴을 분석해보면,
1. 초성은 19자로
ㄱ, ㄲ, ㄴ, ㄷ, ㄸ, ㄹ, ㅁ, ㅂ, ㅃ, ㅅ,
ㅆ, ㅇ, ㅈ, ㅉ, ㅊ, ㅋ, ㅌ, ㅍ, ㅎ
의 순서이고,
2. 중성은 21자로
ㅏ, ㅐ, ㅑ, ㅒ, ㅓ, ㅔ, ㅕ, ㅖ, ㅗ, ㅘ,
ㅙ, ㅚ, ㅛ, ㅜ, ㅝ, ㅞ, ㅟ, ㅠ, ㅡ, ㅢ,
ㅣ
의 순서,
3. 종성은 28자로
(없음), ㄱ, ㄲ, ㄳ, ㄴ, ㄵ, ㄶ, ㄷ, ㄹ, ㄺ,
ㄻ, ㄼ, ㄽ, ㄾ, ㄿ, ㅀ, ㅁ, ㅂ, ㅄ, ㅅ,
ㅆ, ㅇ, ㅈ, ㅊ, ㅋ, ㅌ, ㅍ, ㅎ
의 순서입니다.
따라서 19*21*28 = 11172 = 55203-44032+1 자의 한글이 구성됩니다.
이들 한글 초/중/종성으로 코드를 구성할 때,
초성, 중성, 종성의 순서로 코드를 구성합니다.
즉, 코드 44032는 '가' 이고, 코드 44033은 '각', 코드 44034는 '갂', ...
'가'에 종성 붙이는 것이 끝나면 '개', '객', ...
이런 식입니다.
따라서, 어떤 글자의 코드에서 44032를 빼고, 21*28로 나누면,
0 ~ 18의 숫자를 얻게 되고, 이는 위 초성의 순서와 같습니다.
마찬가지로, 44032를 빼고, 21*28로 나눈 나머지를 다시 28로 나눈 몫은
0 ~ 20이고, 이는 위 중성의 순서와 같습니다.
마지막으로, 44032를 빼고, 21*28로 나눈 나머지를 다시 28로 나눈 나머지는
0 ~ 27이고, 이는 위 종성의 순서와 같습니다.
따라서 char ch 의 종성을 알고자 한다면,
int third = ( ( ch - 44032 ) % ( 21 * 28 ) ) % 28;
로 얻은 int third 값을 이용하면 됩니다.
참고로 초성은
int first = ( ch - 44032 ) / ( 21 * 28 );
중성은
int second = ( ch - 44032 ) % ( 21 * 28 ) / 28;
입니다.
Drag & Drop로 구현한 쇼핑몰 샘플 (0) | 2006.11.09 |
---|---|
JAVA(JSP)가 좋은점이 무엇이냐... (1) | 2006.10.28 |
Sort Algorithm (0) | 2006.10.24 |
웹해킹 - SQL 인젝션 (0) | 2006.10.14 |
스파게티 소스 (0) | 2006.05.16 |
특정 IP 접속제한/거부 하기( route, iptable, oops-firewall )
출근직후 서버이상유무점검을 하다보면 message, secure 로그를 비롯한 각종로그에
비정상적인 방법으로 접속을 시도하는 아이피가 있다.
이외에도 특정아이피에 대해서 접속을 차단하고자 여러방법을 찾아봤다.
1. tcp wrapper ( /etc/hosts.deny, /etc/hosts.allow )
일반적으로 원격접속(ssh), 파일전송(FTP) 서비스를 관리자의 특정아이피에 한해서
개방하는데서 사용한다. ( 물론 필자도 이런용도로 사용중 )
그리고 tcp wrapper 는 inetd 를 이용한 tcpd 데몬에 한한다.
ex) a.b.c.d 아이피 차단
/etc/hosts.deny -----------------------
ALL : a.b.c.d
----------------------------------------
ALL : tcpd 를 이용하는 모든서비스
ex) a.b.c.d 아이피 허용 ( sshd 데몬만 )
/etc/hosts.allow -----------------------
sshd : a.b.c.d
----------------------------------------
2. route 이용 ( 포트나 서비스 관계없이 모두 거부 )
#route add -host 차단할ip reject ; 차단될아이피를 추가
#route ; 차단된 아이피 확인 / 차단된 경우 Flags 가 H! 로 표시됨
- 하지만 route 명령을 이용해서 차단하면 패킷은 일단 받아들이고
응답을 제한하는 것이라서 비효율적임.
3. iptable 이용 ( 가장 합리적인 방법이라 생각함; )
iptable을 이용하면 가장능동적이게 처리할수있다.
#iptables -A INPUT -s 차단할ip -p tcp --dport 차단할포트 -j DROP
명령어로 등록할수있고..
영구적으로 등록하기위해서는 rc.local 같은 부팅스크립트파일에 등록해줘야한다.
조금더 쉽고 편하게 관리하고자 하면
http://oops.org 김정균님 홈페이지에서 oops-firewall 관련해서 찾아보기바랍니다~
무척간단하고 관리하기 편합니다 ^^;
ex) oops-firewall
/etc/oops-firewall/user.conf --------------------------------
%-A INPUT -s 차단할ip -p tcp --dport 차단할포트 -j DROP
------------------------------------------------------------
서버 시간 맞추기 (2) | 2007.01.22 |
---|---|
시스템 정보 확인하기 (0) | 2006.11.10 |
Yum (0) | 2006.09.17 |
X윈도우에서 Consol로 (0) | 2006.09.17 |
메일 계정만 접속가능하도록 설정 (0) | 2006.09.08 |
Yum 방식 |
---|
Yum은 지정된 서버주소로부터 업데이트된 패키지들을 검사하여 다운로드하고 설치까지 처리해주는 텍스트 기반의 업데이트 프로그램입니다. 또한 의존성 문제도 같이 검사하여 관련 패키지들을 자동으로 설치해주기 때문에 이전에 다소 불편하던 RPM 기반의 프로그램 설치 및 업데이트를 대폭 개선한 패키지 관리자입니다.
1. 설정 확인
yum 업데이트를 위해서는 업데이트 서버의 URL와 기타 세부적인 설정사항들을 확인해야 합니다. yum 동작에 필요한 설정은 /etc/yum.conf 파일에 기록되어 있으므로, 텍스트 편집기 등을 통해 yum 설정내용을 확인합니다.
[main]
retries = 20
removepackages = 0
tolerant = 1
cachedir = /var/cache/yum/
exactarch = 1
pkgpolicy = newest
distroverpkg = Haansoft-release
debuglevel = 2
logfile = /var/log/yum.log
[base]
URL(제품에 따라 다름)
[updates-released]
URL(제품에 따라 다름)
[main] 파트에서 yum 동작을 위한 상세한 설정을 할 수 있으며, [base][update-released] 등과 같은 파트를 통해서 업데이트 서버의 주소를 지정하게 됩니다.
주요 항목에 대한 설명은 아래와 같습니다.
항목 | 내용 |
cachedir | 업데이트를 위해 다운받은 패키지들을 임시로 저장하는 경로 |
logfile | 업데이트 내역을 기록하는 로그 파일의 위치 |
name | 업데이트 서버들을 구별하는 명칭 |
baseurl | 업데이트 서버의 주소 및 경로를 지정 |
2. 업데이트
위와 같이 설정사항에 이상이 없다면 바로 업데이트 명령을 통해 패키지를 업데이트 할 수 있습니다.
위의 명령을 입력하면 설정파일에 있는 경로를 참고하여 업데이트 서버에 접속한 뒤, 현재 시스템의 패키지들과 업데이트 서버의 패키지들을 비교하여 최신의 패키지를 모두 업데이트 하게 됩니다. 위의 명령은 손쉽게 모든 패키지들을 업데이트 할 수 있기에 가장 많이 사용되는 업데이트 방법입니다. 만일 특정한 패키지들만 업데이트 하고자 하는 경우에는 아래와 같이 원하는 패키지를 별도로 지정해 줍니다.
패키지를 업데이트하기 전에 업데이트된 패키지가 있는지를 체크하기 위해서는 아래와 같이 체크 옵션을 사용합니다.
단, check-update의 경우 현재 시스템에 설치된 패키지를 기준으로 업데이트 목록을 출력해주기 때문에 업데이트 서버에는 등록되어 있지만 현재 시스템에 설치되지 않은 패키지 목록은 볼 수 없습니다. 이럴 경우 아래와 같이 list 명령을 사용해서 업데이트 서버에 있는 모든 패키지 목록을 확인할 수 있습니다.
반대로 현재 시스템에 설치되어 있는 패키지 목록을 확인하기 위해서는 아래와 같은 명령을 입력합니다.
list가 많아서 한 번에 지나가버려 확인이 어렵다면 아래와 같은 리다이렉션 명령으로 리스트를 파일로 생성한 뒤, 확인할 수 있습니다.
# yum list > server.lst
# vim server.lst
3. 신규설치
yum을 이용하면 기존 설치되어 있는 프로그램의 업데이트 뿐만 아니라 시스템에 아직 설치되어 있지 않은 새로운 패키지들도 검사하여 설치가 가능합니다. 앞서 말한 yum list 명령으로 업데이트 서버에 있는 패키지 리스트를 확인한 다음, 설치를 원하는 새로운 패키지가 있다면 install 명령으로 설치를 진행할 수 있습니다.
여러 패키지들을 한 번에 설치하기를 원한다면 해당 패키지를 계속해서 적어 줍니다. (install 옵션에서는 기본적으로 하나 이상의 패키지를 지정해야 합니다.)
4. 패키지 삭제
yum을 이용하여 패키지를 업데이트하고 신규 설치하는 것 이외에 패키지를 삭제하는 기능도 수행할 수 있습니다.
여러 패키지들을 삭제하고자 한다면, 신규설치의 경우와 같이 삭제 명령 뒤에 해당 패키지를 계속해서 지정해주면 됩니다.
5. 기타 기능
업데이트 서버에 등록되어 있는 패키지에 대한 상세한 정보를 보기 위해서는 아래와 같은 명령을 입력합니다.
최근에 업데이트한 패키지에 대한 정보는 아래 명령으로 확인합니다.
패키지명이 중복되는 경우에서의 yum 사용 방법
i386 아키텍처 기반의 시스템이 아닌, x86_64 / PPC / IA64 등과 같은 아키텍처를 사용하는 시스템에서는 아래의 예와 같이 중복된 이름의 패키지가 존재하기도 합니다.
[예] gtk2-2.4.13-18.1AX.i386.rpm / gtk2-2.4.13-18.1AX.x86_64.rpm
이는 x86_64와 같은 시스템에서 i386 아키텍처 기반으로 동작하는 프로그램을 지원하기 위한 패키지들로서 정상적인 동작을 위해서는 위의 2가지 아키텍처가 모두 설치되는 것이 좋습니다.
yum에서는 패키지명을 기준으로 업데이트를 처리하기에 위와 같이 패키지명이 동일하고 아키텍처만 다른 프로그램의 경우, 간혹 하나만 설치되거나 잘 설치되지 않는 경우가 있습니다. 이런 경우에는 아래와 같이 설치 시 아키텍처까지 명시하는 방법으로 모두 설치가 가능합니다.
# yum install gtk2 (일반적인 방법)
# yum install gtk2.i386 gtk2.x86_64 (아키텍처 구분 설치법)
위와 같이 2개 이상의 아키텍처가 존재하는 시스템으로는 아래와 같은 것들이 있습니다.
서버 시간 맞추기 (2) | 2007.01.22 |
---|---|
시스템 정보 확인하기 (0) | 2006.11.10 |
iptables (0) | 2006.09.22 |
X윈도우에서 Consol로 (0) | 2006.09.17 |
메일 계정만 접속가능하도록 설정 (0) | 2006.09.08 |
1. 부팅시 자동으로 Console 모드로 가기
/etc/inittab 파일내 id:5:default: 를 id:3:default: 로 바꾸면 됨.
2. 현재 X 상태에서 완전히 Console 모드로 가기
터미널을 하나 띄운 후 루트로 로긴하고
# init 3
라 명령함.
3. 현재 X 상태에서 잠깐 Console 모드로 가기
Ctrl+Alt+F1 ~ Ctrl+Alt+F6 까지는 X Window 상태에서도 사용할 수 있는
6개의 Console Terminal 입니다. 부팅시 열려있습니다.
다시 X Window 화면으로 오려면 Ctrl+Alt+F7 입니다.
서버 시간 맞추기 (2) | 2007.01.22 |
---|---|
시스템 정보 확인하기 (0) | 2006.11.10 |
iptables (0) | 2006.09.22 |
Yum (0) | 2006.09.17 |
메일 계정만 접속가능하도록 설정 (0) | 2006.09.08 |
서버 시간 맞추기 (2) | 2007.01.22 |
---|---|
시스템 정보 확인하기 (0) | 2006.11.10 |
iptables (0) | 2006.09.22 |
Yum (0) | 2006.09.17 |
X윈도우에서 Consol로 (0) | 2006.09.17 |
이번에 국제전화카드 쇼핑몰 프로젝트를 끝내고
로그파일을 하루 종일 지켜보고 있어야 하는 상황에서
출근하자마자 그날의 로그파일을 새로 tail -f 로 모니터링 해야했다.
그일이 불편하여 자동으로 새로운 로그파일을 모니터링 할 스크립트를 만들어봤다.
사용법 :
우선 해당 소스를 실행 모드로 설정 : chmod 777 LogViewer
LogViewer 실행
끝~
코드를 보자.
tail -f 를 직접 구현하고자 하니 여간 어려운게 아니었다.
쉬워보여서 뛰어든건데 -_-
하지만 막상 구현이 끝나니...
이게 뭐야 -_-;;;
아무튼 소스는 주석의 내용만으로 충분히 이해가 갈듯하다.
#!/usr/local/php5/bin/php -q
<?php
/**
* FILE_NAME : LogViewer
* AUTHOR : asrada2001@hotmail.com
* DATE : 2006-08-21
* DESC : 로그파일 자동 뷰어
- 일별 또는 월별 등 날짜로 명명되어진 로그파일을 보여준다.
- 날짜 변경시 자동으로 다음 로그파일을 보여준다.
* LICENSE :
**/
$filehead = 'logfile head'; //로그파일구성 = 헤드(유무) + 날짜(항목은 상황에 맞게 설정)
$basic_readline = 5;
$current_file = Null;
$firstopen = true;
while(true){
$filetail = date('Ymd');
$filename = $filehead.$filetail;
if($current_file != $filename){
echo "===============================================================\n";
echo "## New LogFile Watching -- ".$filetail."\n";
echo "===============================================================\n";
$current_file = $filename;
$last_pos = Null;
$firstopen = true;
}
if(file_exists($filename) == true){
if(filesize($filename) == 0){
continue;
}
$readline = 0;
$first_pos = Null;
$result = Null;
$fp = fopen($filename,'r');
$pos = -2; //파일의 마지막 문자가 \n 이므로 -2 부터 시작
$char = Null;
while(fseek($fp,$pos,SEEK_END) == 0){
$char = fgetc($fp);
if($char == "\n" || $char == "\r"){
$str = fgets($fp);
$this_pos = ftell($fp);
if($this_pos == false){
break;
}
$readline++;
//열려진 파일의 최초 검색된 new line(\n) 의 포인터 위치를 저장하여
//다음번 로딩시에 이 포인터 이전의 내용은 검색을 제한한다.
if($first_pos == Null){
$first_pos = $this_pos;
}
//이전 파일의 마지막 포인터의 위치
//현재 포인터가 이전 파일의 마지막 포인터와 같은 값을 갖을때 검색을 중지한다.
if($last_pos == $this_pos){
break;
}
//출력되어질 로그파일의 내용
$result = $str.$result;
//최초 파일 오픈할때는 마지막 5라인 출력
if($firstopen == true){
//echo "============= first_line cashing....".$readline." ========================\n";
if($readline == $basic_readline){
$firstopen = false;
$readline = 0;
break;
}
}else{
if($last_pos == Null){
break;
}else{
if($this_pos <= $last_pos){
break;
}
}
}
}
$pos--;
}
$last_pos = $first_pos;
if($result != Null){
echo $result;
}
fclose($fp);
unset($fp);
sleep(1);
}
else{
echo $filename." << file not found...\n";
sleep(10);
}
}
?>
필요에 의한 개발...
필요라는 동기가 무척이나 중요한것 같다.
만약 이번 프로젝트가 없었다면
언제 이런걸 만들어볼까~~~
디렉토리별 디스크 사용량을 확인하는 du의 활용 (0) | 2007.03.05 |
---|---|
Drag가 가능한 메모보드 (26) | 2007.01.26 |
파일 확장자 바꾸는 스크립트 (1) | 2006.12.12 |
XmlHttpRequest를 사용한 일정관리 (0) | 2006.11.10 |