[Nox] 스크립트 언어 설계 및 컴파일러 만들기 + α (3)
스크립트 언어도 만들었고 그 언어로 작성된 소스코드를 파싱하고 컴파일도 할 수 있게 되었으니, 이제 개발 환경을 만들 차례다! 요즘에는 sublime이나 atom 같은 확장 가능한 에디터가 꽤 많기 때문에 어떤 것으로 고를지 결정하는 것도 고민이었다....
Computer Security, Life, and others
스크립트 언어도 만들었고 그 언어로 작성된 소스코드를 파싱하고 컴파일도 할 수 있게 되었으니, 이제 개발 환경을 만들 차례다! 요즘에는 sublime이나 atom 같은 확장 가능한 에디터가 꽤 많기 때문에 어떤 것으로 고를지 결정하는 것도 고민이었다....
지난 포스팅에서는 우리가 만든 언어로 만들어진 프로그램을 파싱하는 parser를 만들었다. 이번 포스팅에서는 파싱된 token들을 가지고 AST를 만드는 과정을 소개한다. 또한, 만들어진 AST를 기반으로 bytecode를 emit하는 컴파일러도 제작한다. Abstract Syntax Tree 먼저 AST를 만들기...
오랜만에 일과는 전혀 상관이 없는.. 하지만 관련 지식과 기술을 사용한 취미겸 사이드 프로젝트를 지난 3일동안 작업했다. 제목에서도 알 수 있듯이 Nox 라는 RPG 게임에 관련된 프로젝트였는데, 애시당초 이 고전(?) 게임을 왜 들여다 본걸까? Nox...
집에 있는 컴퓨터를 외부에서 remote하게 사용할때, 왠만한 작업은 ssh를 이용해서 할 수 있는데.. 간간히 remote desktop을 부득이하게 사용해야할 때가 있습니다…(아직 쉘로 모든걸 할 수 있는 경지에 못올라서 ㅠㅠ) 그럴때 다음과 같이 vncserver를 설정하고, vnc...
rsync는 리눅스계열에서 유용하게 사용할 수 있는 ‘동기화’ 툴입니다. 서버사이드 설정
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 32 33 34 35 36 |
<div style="padding:10px; background-color:#FAFFA9">설정파일 : /etc/rsyncd.conf 예제를 보겠습니다. 다음 예제의 호스트를 www1이라고 하겠습니다. # cat /etc/rsyncd.conf [web] path = /home/www/htdocs comment = web uid = nobody gid = nobody use chroot = yes read only = yes hosts allow = www2.taejun.pe.kr max connections = 3 timeout 600 [web] 서비스명 path 서비스할 디렉토리 comment 설명 uid 파일전송하는 사용자의 id. 기본값은 nobody gid 파일전송하는 사용자의 그룹 id. 기본값은 nobody use chroot 위의 path를 root 디렉토리로 사용. 보안상 필요함. read only 읽기전용 hosts allow 호스트별 접속허용. 기본값은 all host이므로 보안을 유지하 려면 반드시 설정함 max connections 동시접속자수 timeout 클라이언트에서 접근시 타임아웃시간. anonymous 로 운영하는 경 우 설정을 해야 클라이언트가 죽었을 때 서버에서 접속을 해체할 수 있음. * put(클라이언트에서 서버로 올리는 경우)을 사용하기위해서는 read only = no 로 설정을 해야됩니다. 이 외에도 여러 가지 옵션이 있지만 실제로은 위의 옵션정도가 자주 사용 됩니다. 현재 rsync 자체적으로 암호화는 지원하지 않으며 사용자 인증만 지원합니다. 추후에는 SSL을 지원할 예정이며, 만약 암호화를 사용하려면 ssh를 사용하면 됩니다.</div><br> |
1 |
<br> |
1 |
<b>클라이언트에서 접속</b> |
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
<pre><div style="padding:10px; background-color:#FAFFA9">(접근 클라이언트를 www2.taejun.pe.kr이라고 가정함) rsync -avz --delete www1.taejun.pe.kr::web /home/taejun/~public_html -a는 아카이브 모드. 심볼릭 링크, 속성, 퍼미션, 소유권 등 보존 -v 상세하게 보여움 -z 전송시 압축을 함. --delete www1.taejun.pe.kr에서 web에 해당하는 내용(/home/www/htdocs) 을 ww2.taejun.pe.kr 의 /home/taejun/~public_html 로 가져오면서 www1 (서버)에는 없는 내용은 www2에서 삭제함. 만약 www2 차원에서 생성한 파 일을 보관하려면 옵션 없앰. rsync -avz foo:src/bar /data/tmp 다음 내용은 foo라는 호스트에서 src/bar 안의 내용을 지역호스트의 /data /tmp 디렉토리로 옮기는 것입니다. 여기서 알아두어야 할 것이 있습니다. 만약 위에서 src/bar/ 라고 하면 어떻게 달라질까요? bar 는 그 디렉토리 자체까지 포함해서 가져옵니다. 그렇지만 bar/ 라고 뒤에 디렉토리 표시를 하면 그 디렉토리안에 있는 내용만 가지고 옵니다. 상당히 결과가 달라질 수 있겠지요. 또한 : 과 ::의 차이는 무엇일까요? : 은 rsh나 ssh를 사용하는 것이며 :: 은 rsync 자체에서 지원하는 기능을 이용 자료를 가져오는 것으로 873 TCP 포트를 사용합니다. 상당히 헷갈리지요? : 에서 기본은 rsh를 이용하지만 -e ssh 옵션을 이용하여 ssh를 사용할 수 있습니다. ssh를 사용하려면 비 밀번호를 입력해야하는데 이것도 파일형태로 만들어서 옵션에서 지정해주 면 됩니다. 이에 대해서는 따로 설명하지는 않으며 man page를 참고하세 요. -avz 등의 옵션이 있는데 이중 중요한 옵션만 설명을 하겠습니다. -v verbose (자세하게 보여줌) -a archive mode -u update only(새로운 파일을 덮어쓰지 않음) --delete 서버쪽에 없고 클라이언트쪽에만 있는 파일을 지움 -z compress (전송시 압축을 함) --daemon 대몬 모드로 운영함 (이건 inetd.conf에 지정할 때 필요함) -a 는 -rlptg 와 동일합니다. -r recursive (하위 디렉토리까지 포함) -l 심볼릭 링크 재생성 -p 퍼미션 업데이트 -t 변경시간 전송 (이것이 없으면 전송한 시간으로 바뀜) -g 그룹이름 변경 일반적으로 rsync는 길이와 time-stamp를 이용 파일을 비교합니다. 이제 쉘 스크립트를 만들고 cron에 등록을 하여 주기적으로 데이터를 동기 화하면 됩니다.</div><span style="font-family: Dotum; white-space: normal; "><pre>(출처: http://wiki.kldp.org/KoreanDoc/Rsync-KLDP) |
1 |
추가: ssh를 이용하여 동기화 할때, rsync -avz -e ssh username@host:/path localpath |
1 |
ssh+특정 포트를 이용하고 싶을때, rsync -avz -e "ssh -p xxxx" username@host:/path localpath |
1 |
<br> |
1 |
<br> |
Ubuntu (우분투) 9.04 에서, APM: Apache, PHP, MySQL 설치하기 ============================================================= 1. Apache $sudo apt-get install apache2 2. MySQL authencation module $sudo apt-get install libapache2-mod-auth-mysql 3. MySQL $sudo apt-get install mysql-server mysql-client 4. PHP5 $sudo...