블로그 이미지
초딩입맛제주아재
하고 싶은 것만 하며 살고 싶다

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
2007. 2. 12. 11:25 삶은달걀

상경 4년차(2004-2007)...
지난 토요일 3번째 이사를 했다.
여전히 월세 신세를 면치 못하지만....-_-;;

서울 집값은 너무 비싸다.
아파트 한채에 수억,수십억이라니...
집이란 무엇인가...
1억이란 돈은 어떤 금액인가..
평범한 직장인이 몇십년을 아끼고 아껴도 모을까 말까한 돈이 아닌가...

대체 서울에 아파트(위에서 말한 억단위의)를 가지고 있는 사람들은 그 돈을 어떻게 마련했을까..
물론 대다수 서민들은 대출을 받아서 샀을것이다.
빚을 내서라도 사 두면 대출 이자율 보다도 더 많이 집 값이 오르니까..

집이 단순한 주거 공간이 아닌 돈 벌이 수단으로 이용되고 있는건
국가의 책임이다.
탁상공론과 끼워 맞추기식 정책 수립의 결과 실패를 거듭하는 부동산 정책.
정치에 대해 잘 모르고 정치에 별 관심도 없지만
요즘 뉴스를 볼때마다 그나마 조금 남아있는 애국심이 타들어간다...
대체 언제쯤 저 높은 자리에 계신 양반들은 허리를 굽혀 백성의 가려운 곳을 긁어주시려는가...


월요일부터 신세 한탄이라니....

'삶은달걀' 카테고리의 다른 글

쇼펜하우어가 말하는 논쟁에서 이기는 37가지 방법.  (0) 2007.04.06
개발자라며??  (0) 2007.03.28
선수관리  (1) 2007.01.10
금연 3일째~  (3) 2007.01.03
데스노트, 주문했음...  (0) 2006.12.07
posted by 초딩입맛제주아재
2007. 2. 7. 23:23 Programing

달룟님께 선물할 Smalltalk 이미지 백업 배치파일


@echo off

SETLOCAL

SET ST_IMG_HOME=F:\작업자료\프로그램\smalltalk\가계부
SET ST_BACKUP_DIR=F:\작업자료\프로그램\smalltalk

SET BACK_NAME=
  FOR /F "tokens=1,2,3 delims=-" %%i IN ("%DATE%") DO SET BACK_NAME=%%i_%%j_%%k
  FOR /F "tokens=1,2,3 delims=: "  %%i in ('time /t') DO SET BACK_NAME=%BACK_NAME%_%%i_%%j_%%k.zip

alzip -a "F:\작업자료\프로그램\smalltalk\가계부\Community Edition.img","F:\작업자료\프로그램\smalltalk\가계부\Community Edition.sml","F:\작업자료\프로그램\smalltalk\가계부\Community Edition.chg" "F:\작업자료\프로그램\smalltalk\%ST_BACKUP_DIR%.zip"

ENDLOCAL



나도 알집을 쓰고 달룟님도 알집을 쓰신다고 해서 알집을 사용했는데 초반에 고생을 좀 했다.

퇴근 후 집에 와서 코딩을 했는데 집에 설치된 알집은 5.6버전이었다.
알집의 도움말을 통해서 커맨드라인 옵션을 보고 당연히 되겠구나 해서 코드를 짰는데 에러가 발생하였다...
아니 정확히 말하면 에러는 아니다. 화면에 아무 에러도 뱉어 내지 않았으니까.
단지 아무일도 일어 나지 않았다.
알집이 잠깐 떴다 바로 사라졌지만 디렉토리에 새로 생긴 압축파일이 안보이는 것이다.
몇번 더 테스트를 해보다 알집 최신 버전을 설치 하고 다시 테스트를 했더니 제대로 된다 -_-;;
오후에 서핑중에 보았던 알집에 대한 비판글이 조금은 이해가 됐다;;


이번 스크립트로 변수를 좀더 자유롭게 다룰수 있게 되었다.
정말정말 날 힘들게 했던 부분은 공백을 걸고 넘어지는 문제였다.

SET ST_IMG_HOME = FOR ~~~~
echo %ST_IMG_HOME%

이 코드가 에러를 뱉어 내는 이유를 한참 후에 알게 되었다.
'=' 양 옆의 공백이 문제였던 것이다....Orz=3
지금껏 내가 만져본 언어들 중에서 이 문제로 까다롭게 굴었던건 없었다....
이 녀석이 처음이다.... 역시 처음은 강렬하게 다가온다.....쩝...


SETLOCAL과 ENDLOCAL은 한쌍으로
SET으로 선언된 환경 변수를 지역변수로 제한하는 기능을 한다.
만약 SETLOCAL이 없으면 스크립트 실행 후 커맨드라인에서 SET 명령으로 현재 설정된 환경 변수를 보면
스크립트에서 지정한 환경변수가 그래도 살아있음을 확인 할 수 있다. 하지만 그 역시 콘솔을 닫아버리면 사라진다.



추가정보:

프롬프트에서 c:\>help 를 실행하면 사용할 수 있는 명령어들이 나오는데
c:\>cmd /? 를 실행하면 또다른 신선한 내용들이 나온다.

'Programing' 카테고리의 다른 글

스크립트언어의 재발견  (0) 2007.03.09
[펌]포인터  (0) 2007.02.22
윈도우 스크립팅 걸음마  (3) 2007.02.07
euc인코딩  (0) 2007.01.09
위기지학(爲己之學)  (0) 2006.11.29
posted by 초딩입맛제주아재
2007. 2. 7. 16:45 Programing

퇴근하기전 매일매일 엑셀을 이용해서 업무일지를 쓴다.
정말 하기 싫은 작업이다...
엑셀을 실행하고 어제 작성한 업무일지를 불러와서 어제 뭘했나 대충 살펴보고
날짜를 오늘 날짜로 수정한뒤 내용을 싸그리 지우고 오늘 작업한걸 써 나간다.
다 쓰고 새이름으로 저장하기 버튼을 클릭해서 업무일지070207.xls 처럼 날짜로 네이밍을 해서 저장한다.
그런데 가끔 정신이 나갈때면 editplus 에서 하던 버릇이 나와서 Ctrl + S 를 눌러서 어제 작성한 업무일지에
덮어써버리곤 한다.

오늘도 역시 그랬다. -_-;;
어제의 기억은 흔적조차 남지 않게 되었고 인쇄한 업무일지를 잃어버리게 되면
어제 나는 한일이 없게 되는 것이다.

언제까지 이렇게 방치해둘 순 없었다.
그래도 명색이 프로그래머 아닌가.
뭔가 이 비 생산적인 굴레를 벗어날 길이 없을까 고민하다 도스시절을 회상하며 배치파일을 만들기로 했다.

전에 달룟님과 대화중 smalltalk 이미지 백업하는걸 배치파일로 만들어보고자 했던 기억도 있고
뭔가 새로운걸 해보고 싶던 찰나에 이번 프로젝트(?)는 운명적인 것이리라.

kldp에서 스크립팅에 관련한 자료를 찾았다. >>kldp스크립팅자료

bash쉘에 관련된 내용이지만 도스 배치파일에 대한 이야기도 살짝 나온다.
덕분에 bash쉘 스크립팅을 공부해야할 이유가 생겼다.

배치파일 소스는 아래와 같다.


@echo off

IF NOT EXIST %DAILY_REPORT_HOME%업무일지%DATE:~2,2%%DATE:~5,2%%DATE:~8,2%.xls (
  FOR /F %%i IN ('DIR %DAILY_REPORT_HOME% /B /AA /O-D') DO (
       copy %DAILY_REPORT_HOME%%%i %DAILY_REPORT_HOME%\업무일지%DATE:~2,2%%DATE:~5,2%%DATE:~8,2%.xls > NUL
       goto end
  )
)

:end

문법이 참 적응하기 어려웠지만 12살때 배웠던 GW-BASIC도 생각이 나고
하면서 '참 재밌다!!' 라는 생각을 했다.


소스 풀이를 하자면.....

환경변수로 등록된 업무일지 디렉토리(%DAILY_REPORT_HOME%)안에

오늘 날짜로 된 파일(업무일지%DATE:~2,2%%DATE:~5,2%%DATE:~8,2%.xls)이 없으면

가장 최근의 업무일지('DIR %DAILY_REPORT_HOME% /B /AA /O-D' 의 결과중 맨 처음것)를

오늘 날짜로 복사(copy %DAILY_REPORT_HOME%%%i %DAILY_REPORT_HOME%\업무일지%DATE:~2,2%%DATE:~5,2%%DATE:~8,2%.xls > NUL)

한다......휴~


가장 어려웠던 부분은 최근 파일명 추출이었다.
변수 운용하는 방법을 모르고 (환경변수가 아닌 지역변수 개념의.. 가능한지 모르겠다)
dir 의 결과중 첫라인 또는 마지막라인 만 리턴하는 방법(이건 꼭 알고 싶은데...있을것 같기도 하고..)


그래서 생각한 것이 FOR, 반복문이다.
DIR {디렉토리} /B /AA /O-D 는 {디렉토리}에 있는 순수한 파일(/AA)만을 출력해준다.
물론 쓸데없는 header 와 footer 도 없다(/B). 오로지 파일명만 역순(/O-D)으로 출력해준다.
이 결과물을 가지고 FOR문을 돌리는데
제일 처음 값만 출력하고 바로 :end(goto end)로 가버리고 반복문은 중지된다.

이 배치파일은 내가 출근한후 PC를 켜고 윈도우가 로딩되면 실행되도록

모든 프로그램 > 보조프로그램 > 시스템도구 > 예약된 작업  으로 등록을 해두었다.

내일 아침 출근후 확인해 보는일만 남았다...

THE END...



컴퓨터는 사람을 편하게 하기 위해 만들어진 기계이다.
하지만 요즘은 컴퓨터로 인해 스트레스 받는 사람들이 더 많고
컴퓨터때문에 해야 할 일들이 더 많아지고 있다.

사소한것 하나라도 편하게 바꿔보자!!
그것이 개발자들이 해야할일이 아니겠는가??


'Programing' 카테고리의 다른 글

[펌]포인터  (0) 2007.02.22
윈도우 스크립팅 맛들이기 - Smalltalk 이미지 파일 백업 배치파일  (2) 2007.02.07
euc인코딩  (0) 2007.01.09
위기지학(爲己之學)  (0) 2006.11.29
Drag & Drop로 구현한 쇼핑몰 샘플  (0) 2006.11.09
posted by 초딩입맛제주아재
2007. 2. 6. 10:15 LINUX

wc

화장실 아님 ㅡㅡ;;

통계.

ls | wc -l
: 현재 디렉토리의 파일 수

find -amin +60 | wc -l
: 현재 디렉토리의 엑세스 타임이 한시간 이상된 파일의 수


-c, --bytes                문자의 개수를 표시합니다
-l, --lines                  행의 개수를 표시합니다
-w, --words              단어의 개수를 표시합니다
-L, --max-line-length  가장 긴 줄의 길이를 표시합니다
-w, --words               단어의 개수를 인쇄합니다




'LINUX' 카테고리의 다른 글

VI 한글  (0) 2007.06.25
파일크기를 0으로 만들기  (0) 2007.05.14
FIND  (0) 2007.02.05
crontab  (0) 2007.01.26
서버 시간 맞추기  (2) 2007.01.22
posted by 초딩입맛제주아재
2007. 2. 5. 17:21 LINUX
사용방법 :   find <경로> <연산자>

1) <경로>
  find가 파일을 찾을 처음 위치를 지정한다.
  예을 들어 '/'는 /(root)부터 찾고,  '.'은 현재 디렉토리 부터 찾는다.

2) <연산자>

-print
  find 명령의 결과를 화면에 보여 준다.

-name 파일명
  파일명과 같은 파일을 찾는다. 와일드 카드(*)도 사용가능하다.
예) /home 폴더에서 화일명이 *.bak 인 화일을 찾는 예
  find /home -name '*.bak' -print 

-perm 모드
  파일 퍼미션 조건이 일치하는 것만을 찾아 준다.
  퍼미션은 읽기(r), 쓰기(w), 실행(x)하기 등으로 나타낸다.
 
  예제) 현재의 디렉토리에서 000(----------)퍼미션모드의 파일들을 찾는 예
  find . -perm 000 -print

-type 타입
  파일의 타입을 지정하여, 찾고자하는 파일을 찾는다.
  타입의 종류는 다음과 같다.
  b : 블록 특수 파일(block device)
  c : 캐릭터 특수 파일 (character deice)
  d : 디렉토리(directory)
  f : 일반파일(file)
  l : 심볼릭 링크(link)
  p : 파이프 (pipe)
  s : 소켓 (socket)

예제)  현재 디렉토리 아래에 있는 서브디렉토리를 모두 찾을경우
  find . -type d -print


-atime +n/-n/n
  최근 n일 이전에 액세스된 파일을 찾아준다.(accessed time)
  +n은 n일 또는 그보다 더 오래 전의 파일을
  -n은 오늘 부터 n일 전까지의 파일을
  n은 정확히 n일 전에 액세스되었음을 의미한다.
 
  예) 전체 디렉토리에서 10일 이상 한번도 액세스하지 않은 디렉토리를 찾을경우 예
  find / -atime +10 -type d -print

-ctime +n/-n/n
  atime과 비슷하다. 다른 점은 atime은 얼마나 오래전에 파일을 액세스
  하였는가를 검사하지만 ctime은 파일의 퍼비션을 마지막으로 변경시킨 날짜를
  의미한다. (changed time)
  최근 n일 이전에 액세스된 파일을 찾아준다.
  +n은 n일 또는 그보다 더 오래 전의 파일을
  -n은 오늘 부터 n일 전까지의 파일을
  n은 정확히 n일 전에 수정되었음을 의미한다.

  예) 현재 디렉토리 아래에서 최근 일주일 동안 수정된 파일을 찾는 예
  find . -ctime -7 -print

-mtime +n/-n/n
  ctime과 비슷하다. 다른 점은 ctime은 파일의 퍼미션을 변경시킨 날짜를 의미
  하지만, mtime은 파일내의 data를 마지막으로 변경한 날짜를 의미한다.
  (modified time)
  최근 n일 이전에 액세스된 파일을 찾아준다.
  +n은 n일 또는 그보다 더 오래 전의 파일을
  -n은 오늘 부터 n일 전까지의 파일을
  n은 정확히 n일 전에 수정되었음을 의미한다.

-user 유저네임
  '-user' 부분에 지정한 유저 소유의 파일을 찾아준다.
  예) / 내에서 nobody 권한의 파일이나 폴더를 찾는 예
  find / -user nobody -print

  -nouser
  파일의 소유자가 없는 파일을 찾아 준다.

  -group 그룹네임
  지정한 그룹네임에 해당되는 파일을 찾아 준다.

  -nogroup
  파일의 소유자의 그룹이 없는 파일을 찾아 준다.
 
  -exec 명령어 {} ;
  find의 결과로 찾아낸 파일이나 디렉토리에 대해서 지정한 명령어를 실행(execute)한다.
  참고로  {} 와 ;사이는 한 칸 띄워야 한다.

  예) / 폴더에서 화일의 소유자가 없는 화일을 찾아 ls -l 로 보여주는 예
  find / -nouser -print -exec ls -l {} \;

  -size +n/-n/n[bckw]
  n뒤에 아무것도 쓰지 않으면 기본적으로 n블럭 크기의 파일을 찾는다.
  기본적으로 1블럭은 512바이트이다.
 
  예) /home 폴더에서 파일 크기가 0인 파일을 모두 찾는 예
  find /home -size 0 -print
 
  예) 현재 디렉토리내에서 크기가 1024k 이상인 파일을 모두 찾아 보여주는예
  find . -size +1024k -exec ls -l {} \;

'LINUX' 카테고리의 다른 글

파일크기를 0으로 만들기  (0) 2007.05.14
wc  (0) 2007.02.06
crontab  (0) 2007.01.26
서버 시간 맞추기  (2) 2007.01.22
시스템 정보 확인하기  (0) 2006.11.10
posted by 초딩입맛제주아재
2007. 2. 2. 23:31 날개를달자
posted by 초딩입맛제주아재
2007. 2. 2. 23:18 날개를달자


posted by 초딩입맛제주아재
2007. 1. 26. 21:09 Programing/아뜰리에

사용자 삽입 이미지

메모보드 열기



Drag & Drop 중 Drop을 뺀
메모보드입니다.



소스파일 다운로드

- 소스파일 받아 가시는것에 제한은 없습니다. 흔적만 남겨주세요 ^^;



:log:
======================================================
2007-02-01
 로그인 기능 완성(관리자에 한함)
  ->관리자 로그인만 허용하며, 관리자 로그인이 이루어지면 관리자가 작성한 메모 로드.
  ->로그아웃하면 관리자가 작성한 메모만 화면에서 제거

2007-01-31
  로그인 버튼과 로그인창 추가
  ->개인별 메모 관리 기능을 추가 하기 위함

2007-01-26
  메모 삭제 DB연동
  LOCK 버튼 클릭시 메모 좌표 DB저장

2007-01-22
DB연동
  -> 메모지 정보(좌표,내용 ) Save/Load

2007-01-20
  메모 내용 수정 완료 버튼 추가
  -> 수정후 완료 버튼 누르면 textarea 는 사라지고 내용을 파싱해서 HTML 태그로 만들어 메모지에 붙임.

2007-01-19
  메모 이동시 다른 메모에 의해 방해 받는 문제 수정
  -> 이동중인 메모의 zIndex를 최대치로 설정하고 이동이 끝나면 원래 zIndex로 설정.

2007-01-17
  HTML,JavaScript 코딩 시작.
  메모 Drag
  메모 기본위치 설정/원위치
  메모 생성
  메모 삭제
  메모 수정 모드(저장안됨)

2007-01-16
  기본 구성 설계

posted by 초딩입맛제주아재
2007. 1. 26. 15:34 LINUX

출처 : http://blog.naver.com/nonovoco?Redirect=Log&logNo=140033481812


■ cron

- 명령은 지정된 날짜와 시간에 일정 작업을 주기적으로 수행하기 위해 사용되며 각 사용자별로 /var/spool/cron/crontabs 디렉토리에 사용자 ID와 같은 이름의 crontab 화일을 만들어 cron job을 지정할 수 있다
- cron 명령은 시스템이 부팅되면서 /etc/rc2.d/S75cron 스크립트에 의해서 daemon 형태로 수행된다

■ 형식 : crontab -e

분  시  일  월  요일   실행할 명령

  분 : 0-59
  시 : 0-23
  일 : 1-31
  월 : 1-12
  요일 : 0-6( 0: 일요일)

■ 옵션

crontab –e : 작업할 내용 작성하기
crontab –l : 현재 설정되어 있는 작업내용 보기
crontab –r : 설정되어 있는 작업을 모두 삭제하기

■ 예제

ex1) 1일부터 15일 까지로 날짜를 지정하고 싶을 땐 다음과 같이 하이픈을 이용할 수 있다
0   1   1-15     *   *   [명령]
분, 시, 날, 달, 요일, 모두 적용할 수 있다

ex2) 1일과 7일 15일에 cron을 작동시킬 땐 콤마를 이용하면 된다
0   1  1,7,15    *   *   [명령]
분, 시, 날, 달, 요일, 모두 적용할 수 있다

ex3) 매 5일 마다 실행하고 싶을 땐 슬래쉬(/)를 이용한면 된다
0   1   /5   *   *   [명령]
분, 시, 날, 달, 요일, 모두 적용할 수 있다
/ 안해줘도 달이 *로 표현되어 있어서 매달 실행된다. 하지만 좋은 습관을 들이기 위해..


ex4) 매주 일요일 오전 3:15에 /var 디렉토리에 있는 core 화일을 지우는 작업
15 3 * * 0 find /var -name core 2>/dev/null |  xargs rm -f

ex5) 매월 1일 오후 6시에 시스템 down message 보내기
0 18 1 * * wall "System Will be down"




■ Access 제한

- /etc/cron.d/cron.allow 파일이나 /etc/cron.d/cron.deny 화일을 이용하여 시스템 관리자는 각 사용자별로 crontab 파일에 대한 Access 권한을 제한 할 수 있다
* crontab을 access 할 수 있는 사용자

  - /etc/cron.d/cron.allow 화일이 존재하는 경우, 그 파일 안에 지정된 사용자
  - /etc/cron.d/cron.allow 화일이 없는 경우 : /etc/cron.d/cron.deny 파일 안에 지정되지 않은 사용자
       
* crontab을 access 할 수 없는 사용자

  - /etc/cron.d/cron.allow 파일이 존재하는 경우 : 그 파일 않에 지정되지 않은 사용자
  - /etc/cron.d/cron.allow 파일이 없는 경우 : /etc/cron.d/cron.deny 파일에 지정된 사용자
  - /etc/cron.d/cron.allow와 /etc/cron.d/cron.deny 파일이 모두 없는 경우 : root를 제외한 모든 사용자
   
- OS가 설치되면 기본적으로 /etc/cron.d/cron.deny이 생성되고 그 안에 아래의 사용자들이 지정된다
daemon
bin
smtp
nuucp
listen
nobody
noaccess

/etc/cron.d/cron.allow와 /etc/cron.d/cron.deny 화일에 사용자를 지정할 때는 위와 같이 한줄에 한명씩 사용자를 지정한다.




0 4 1,10 * * 명령1

위 처럼 crontab을 편집하면 매월 1일과 10일 4시에 명령1을 실행한다는 의미이다. 또
0 4 1-10 * * 명령2

위처럼 crontab을 편집하면 매월 1일부터 10일동안 매일 명령2를 실행한다는 의미이다. 그리고

0 4 */5 * * 명령3

라고 편집하면 매 5일마다 실행한다는 것으로 1일, 6일, 11일 등과 같이 5일 간격으로 실행한다는 의미이다.
그리고 그 외에 root 권한으로 다른 사용자의 crontab 파일을 편집하기 위해서는 다음과 같이 명령하면 된다.

'LINUX' 카테고리의 다른 글

wc  (0) 2007.02.06
FIND  (0) 2007.02.05
서버 시간 맞추기  (2) 2007.01.22
시스템 정보 확인하기  (0) 2006.11.10
iptables  (0) 2006.09.22
posted by 초딩입맛제주아재
2007. 1. 22. 10:28 LINUX
서버 시간이 제대로 맞지 않으면 난감한 일이 한 두 가지가 아니다.
게시판에 글을 쓸때 입력 시간이 이상하게 나오거나
cron으로 돌리는 작업들이 원하는 시간에 실행되지 않을 수 있다.

이럴때는 서버 시간을 동기화 시켜줄 필요가 있다.


rdate

이 명령어가 그 일을 해준다.


rdate -s {timeserver} && /sbin/clock -w

좀 길어 보인다.
&&뒤의 명령은 하드웨어 시간까지 동기화 시키라는 뜻이다.
리눅스 시스템만 동기화를 시켜두면 서버를 재부팅하면 말짱 도루묵이 되버리기 때문이다.

{timeserver}에는 동기화 대상이 되는 서버를 넣어 주면 된다.

gps.bora.net(데이콤)
ntp.kornet.net(코넷)
time.kriss.re.kr(한국 표준과학 연구원 시간-주파수 연구실)



ntpdate

이 명령어도 있다.

ntpdate -b -s {timeserver}



그런데 위 두 명령어가 잘 안될때가 있다.

우선 급한 불을 끄고자 한다면

date명령어를 써서 시스템 시간을 수동으로 바꿔주자.

date 월일시분년 - date 010115402006 : 2006년 1월1일 15시 40분

'LINUX' 카테고리의 다른 글

FIND  (0) 2007.02.05
crontab  (0) 2007.01.26
시스템 정보 확인하기  (0) 2006.11.10
iptables  (0) 2006.09.22
Yum  (0) 2006.09.17
posted by 초딩입맛제주아재