Documents

문서들  

리눅스 시리얼 콘솔

posted Feb 7, 2011, 4:56 AM by hyunghwan chung

리눅스에서는 시리얼 포트를 콘솔로 사용할 수 있다. 시스템에 연결된 모니터와 키보드가 없을 때 유용하게 사용할 수 있다.

시리얼 포트

  • COM1 - /dev/ttyS0
  • COM2 - /dev/ttyS1  

상태확인

stty를 이용하면 해당 포트의 상태를 확인할 수 있다.

stty -F /dev/ttyS0 

/etc/inittab

ttyS0에서 로그인을 하려면 getty가 필요하다. 여기서는 agetty를 /etc/inittab에 추가한다.. 추가후에 init q를 실해하면 바로 수정내역이 적용된다.

S0:12345:respawn:/sbin/agetty ttyS0  19200 vt100

/boot/grub/grub.conf 

부팅시부터 시리얼 포트를 사용하려면 부트로드 설정도 변경할 필요가 있다. grub을 사용하면 경우 /boot/grub/grub.conf파일에 빨간색으로 된 부분을 추가 한다.

serial --unit=0 --speed=19200
terminal --timeout=5 serial console
default=0
timeout=5
title CentOS_ServerCD (2.6.9-42.EL)
        root (hd0,1)
        kernel /boot/vmlinuz-2.6.9-42.EL ro root=LABEL=/ console=tty0 console=ttyS0,19200
        initrd /boot/initrd-2.6.9-42.EL.img

여러개의 커널이 있다면, 필요한 모든 커널에 console=tty0 console=ttyS0,19200를 추가 한다.

/etc/securetty

/etc/securetty 파일이 존재하는 경우, ttyS0를 이 파일에 추가하지 않으면 root로 로그인 할 수 없다. 그러므로 필요하다면 ttyS0를 추가하도록 한다.


리눅스 Subversion 서버 설치

posted Feb 7, 2011, 4:49 AM by hyunghwan chung

 준비

  • 플랫폼 - CentOS 4
  • 저장소 - /data/svnroot
  • svnadmin 및 trigris 사용자와, developer 그룹이 존재한다고 가정
  • tigris사용자는 developer 그룹에 속한다고 가정
  • /etc/services에 svn이 등록되어 있다고 가정.

필요한 패키지

  • subversion - 커맨드라인용 클라이언트와 서버포함
  • mod-dav-svn - 아파치 서버용 모듈. http나 https 프로토콜을 이용하고자 할 경우 필요.

패키지 설치 

  • yum install subversion
  • yum install mod-dav-svn

저장소 생성

  • svnadmin create /data/svnroot

SSH서버을 사용하여 접근하기

서버측

SSH서버를 사용하는 경우에는 로컬 사용자 계정으로 인증하므로 저장소의 소유자와 권한을 설정해야 함.

  1. 저장소의 소유자와 그룹설정: chwon -R svnadmin:develper /data/svnroot
  2. 저장소의 권한 설정: chmod -R 0774 /data/svnroot

위의 경우 svnadmin이라는 사용자와 developer그룹에 속하는 모든 사용자는 /data/svnroot 저장소를 읽고 쓸수 있으며, 다른 사용자는 읽을 수만 있음. 익명접근은 불가능함.

클라이언트측

  • 저장소의 URL: svn+ssh://사용자아이디@서버주소/저장소경로
  • ase라는 서브디렉토리를 저장소에 추가: svn import ase svn+ssh://tigris@192.168.123.21/data/svnroot/ase --message "initial import"
  • 추가된 ase를 checkout: svn checkout svn+ssh://tigris@192.168.123.21/data/svnroot/ase

svnserve를 사용하여

서버측

svnserve를 사용하려면 저장소의 svnserve.conf를 설정해야 함. /data/svnroot/conf/svnserve.conf

[general]
anon-access = none
auth-access = write
password-db = passwd
realm = 192.168.123.21

설정후 svnserve를 실행해야 함. svnserve를 데몬으로 실행하거나 xinetd에 등록해서 실행할 수 있음.

xinetd에 등록해서 실행하려면 subversion 설정화일이 필요: /etc/xinetd.d/svn

service svn { 
	flags = REUSE
	socket_type = stream 
	wait = no
	user = svnadmin
	group = developer
	server = /usr/bin/svnserve
	server_args = -i -r /data/svnroot 
	disable = no 
}

xinetd를 재시작해야 함: service xinetd restart

svnserve를 데몬으로 실행하려면 /etc/init.d/svn 을 생성할 것

 

chkconfig --add svn 345 on

service svn start

클라이언트측


OpenVMS

posted Feb 6, 2009, 7:42 PM by Unknown user

Commonly Used Commands

    
 copycp
  
 renamemv
  
 deleterm/rmdir
  
 purge   
 set protection
chmod/chown
  
 create/directoymkdir
  
 deletermdir
  
 typecat
  
 show default
pwd  
 set default
cd
  
    
    
 type/page nla0:
type/page nl:
 clear  





File name specification

node::device:[directory]filename.type;version


Wild card

% single character
* 0 or more characters.
a%e                        a?e
as*                        as*


Defining a foreign command
awk := $USER3:[BACONEVI.ASE.TEST.AWK]awk.exe
aw*k := $USER3:[BACONEVI.ASE.TEST.AWK]awk.exe
a*wk := $USER3:[BACONEVI.ASE.TEST.AWK]awk.exe

deleting a directory tree with perl
perl -e "use File::Path; rmtree(['directory_name'],1,0);"

Simpel file commands

copy                                cp
rename                              mv
delete                              rm/rmdir
purge                               n/a
set protection                      chmod/chown
create/directory                    mkdir
type                                cat
show def                            pwd


OpenVMS                            Unix
--------------------------------------------------------
SHOW SYSTEM/OUTPUT=NLA0:           ps -ef > /dev/null
--------------------------------------------------------
TYPE/PAGE NLA0:                    clear
TYPE/PAGE NL:

ESC[0,7] = 27
WRITE SYS$OUTPUT "''ESC'[2J''ESC'[1;1H"
--------------------------------------------------------

define/user sys$output t1.out      ls /dev > t1.out
show devices

--------------------------------------------------------
define/user sys$input a.c          cat < a.c
type sys$input

--------------------------------------------------------
pipe show devices | search sys$input DQA     ls -l /dev | grep DQA

--------------------------------------------------------
pipe show users | search sys$input bacon     who | grep bacon

--------------------------------------------------------
show system                                  ps -ef

--------------------------------------------------------
write sys$output "hello world"               echo "hello world"

show logical sys$login                       echo $HOME
    
in fact, sys$login is a logical name while HOME is the environment variable.
An environment variable is closer to the symbol in OpenVMS. but a logical name
can not be printed with the write command as in write sys$output sys$login.



---------------------------------------------------
/dev/null       NLA0:
/bin            SYS$SYSTEM:
/tmp            SYS$SCRATCH:


--------------------------------------------------------
File Descriptor  OpenVMS Logical  Meaning
0  SYS$INPUT  Standard input
1  SYS$OUTPUT  Standard output
2  SYS$ERROR  Standard error



-----------------------------------------------------------
Text Library

Text Library for C Run-Time Library
SYS$LIBRARY:DECC$RTLDEF.TLB

LIBRARY/LIST SYS$LIBRARY:DECC$RTLDEF.TLB
LIBRARY/LIST/FULL SYS$LIBRARY:DECC$RTLDEF.TLB
LIBRARY/LIST=RTLDEF.LIS SYS$LIBRARY:DECC$RTLDEF.TLB

LIBRARY/EXTRACT=*/OUTPUT=RTLDEF.OUT SYS$LIBRARY:DECC$RTLDEF.TLB
LIBRARY/EXTRACT=STDIO/OUTPUT=STDIO.H SYS$LIBRARY:DECC$RTLDEF.TLB
LIBRARY/EXTRACT=(STDIO,STDLIB)/OUTPUT=STDIOLIB.H SYS$LIBRARY:DECC$RTLDEF.TLB

자바스크립트와 네임스페이스

posted Jan 22, 2009, 7:48 PM by Unknown user

자바스크립트는 네임스페이스를 공식적으로 지원하지 않지만 아래의 코드를 가지고 간단히 처리 가능하다.

QJS = 
{
       
Namespace:
       
{
                make
: function (nsname)
               
{
                       
var w = nsname.split (".");
                       
var x;

                       
/*
                        for (var i = 0; i < w.length; i++)
                        {
                                if (i == 0) x = w[i];
                                else x = x + "." + w[i];
                                eval ("if (typeof " +  x + " == 'undefined') " + x + "= {};");
                        }

                        x = eval (nsname + ";");
                        */

       
                       
for (var i = 0; i < w.length; i++)
                       
{
                               
if (i == 0)
                               
{
                                        x
= eval ("if (typeof " +  w[i] + " == 'undefined') " + w[i] + "= {}; " + w[i] + ";");
                               
}
                               
else
                               
{
                                       
if (typeof x[w[i]] == 'undefined') x[w[i]] = {};
                                        x
= x[w[i]];
                                       
//x.name = w[i];
                               
}
                       
}

                       
return x;
               
},

                kill
: function (nsname)
               
{
                       
eval ("delete " + nsname + ";");
               
}

       
}
}


사용법은 간단하다.

QJS.Namespace.create ("net.abiyo.NS");
net.abiyo.NS.Test = { x: 10, y: 20 };


QJS.Namespace.kill ("net.abiyo.NS")는 편의를 위해 제공되나 네임스페이스에 대한 레퍼런스가 있는경우 완전히 없애지는 못한다.
var ns = QJS.Namespace.make ("net.abiyo.NS");
ns.Test = { x: 10, y: 20 };
QJS.Namespace.kill ("net.abiyo.NS");
alert (ns.Test.x);






1-4 of 4