'Information'에 해당되는 글 26건

  1. 2008.10.08 [펌]풀업
  2. 2008.09.03 [펌] SUDO를 씁시다
  3. 2008.04.23 전용회선(T1, E1)
  4. 2008.04.19 _vimrc
  5. 2008.03.17 멱등(Idempotent)
  6. 2008.03.17 repair vs fix
Information2008. 10. 8. 15:47

일단 풀업저항의 크기 정하는것부터 알려주시구요.

풀업저항,풀다운저항사용하는이유도 여러가지 있던데..
예를들어서 첫번째로..

아래 첨부그림에서요....

1. 입력쪽에 풀업,풀다운을 다는 이유
1) 입력 논리값을 H,L 을 올바르게 인가하려는 경우

이건데여..

스위치를 누르거나 띠었을때 디지털회로입력에
어떻게low,high값이 들어가는지
자세하게 이해좀 시켜주십시오



그림1.(b)에서
스위치를 누르면 전류가 접지쪽으로만 흐르고 회로쪽으로는 안흐르는지....
그리고 스위치를 띠면 풀업저항의값이 많이높게되면 회로쪽으로 입력되는 전압은 거의 없을수도있는데 왜 high가 되는건지....마지막으로 풀업저항의 값은 어떻게 정하는지..입니다.. 왜그런지 설명도 부탁드려요

----------------------------------------------------------------------------------------------------


아주 적은 양의 전류 -보통 leakage current라고 합니다.- 를 빼곤 모두 접지쪽으로 흐릅니다. 원리적으로 접지의 전압레벨이 낮기때문에 입력단자의 전압레벨도 접지쪽으로 맞추져야 하므로 입력은 low가 되는게 맞습니다. 입력단자의 전압레벨이 접지의 레벨과 같다고 하더라도 상관없습니다. 어차피 전압레벨은 low이니까요.

그리고, 추가질문의 두번째 "스위치를 띠면 풀업저항의값이 많이높게되면 회로쪽으로 입력되는 전압은 거의 없을수도있는데 왜 high가 되는건지...."에 대한 질문은 아까 설명을 드렸어야 했는데, 깜빡했네요.
스위치를 떼었을때, 입력단에 입력되는 전압이 거의 없을 경우는 풀업 저항값이 엄~~청 큰 경우와 입력 단자의 전압 레벨이 접지 레벨 수준이어서 모든 전압이 풀업 저항에서 강하가 일어날 경우인데요, 전자의 경우는 적정선에서 너무 크지 않은 풀업 저항을 달아주면 되고, 후자의 경우는 입력 단자의 전압 레벨이 접지 레벨이라는 것은 회로적으로 아무런 의미가 없기 때문에 고려하지 않아도 됩니다.

풀업 저항값을 선택하는 방법에는 사용되는 logic family에 따라 조금씩 다릅니다. TTL, CMOS +5V 논리 게이트는 보통 DC 입력 전류값으로 20mA 정도를 사용합니다. 그래서 입력단을 high인 상태에 놓기 위해, 수 mA정도 범위의 입력이 인가되도록 해야합니다. 이 역할을 하는게 풀업 저항이죠. 소자 종류에 따라 다르지만, 보통 풀업으로 1.5k에서 4.7K(일반적) 또는 10K 옴까지 사용을 합니다. 풀업 저항에서 일정 부분 전류 분배가 일어나 나머지가 입력으로 들어올테니까요.(전압, 전류 분배를 생각하시면 됩니다.) 수 mA의 전류를 만들려면, 수 Kohm의 저항이 필요하겠죠. 딱히 어떤 값이다 또는 어떻게 계산한다에 대해선 뭐라 드릴 말씀이 없네요. 이정도로 밖에.
--------------------------------------------------------------------------
--------------------------------------------------------------------------

위의 그림 1의 경우를 말씀드리자면요.
그림1의 로직은 입력을 low로 만들어놓은 그림들이라는 걸 아실겁니다.
그런데, (a)와 (b)의 차이가 바로 풀업저항의 의미가 되겠는데요
이 점을 물어보시는 것 같습니다.
일단, (a) 그림을 보면, 스위치가 눌렸을 때
전원으로 부터 접지라인까지 바로 연결이 되니까 이 로직은 low가 인가가 되지요.
그런데, 스위치가 떨어졌을 경우는, 입력 상태가 어떤 상태인지(정해지지 않은) 알 수 가 없죠. 이런 경우를 플로팅 되어있다라고 합니다.
이 상태(플로팅 상태)에서는 입력 레벨이 어떤지 알 수 없기때문에 로직 디바이스가 동작하는데 문제가 생길 수 있습니다. 왜냐면, 알 수 없는 입력(사용자 입장에서)이 들어왔기 때문에 알 수 없는 결과값이 나오게 되기 때문입니다.
여기서 알 수 없는 결과라 함은 사용자가 의도했던 결과를 의미합니다.

이러한 플로팅되어 잇는 입력 상태를 없애주고자 고안된게 풀업 저항(그림2의경우는 풀다운)입니다. 그래서, 그럼 두번째 (b)의 그림을 보면요,
마찬가지로 스위치가 눌렸을 때, 풀업저항에 의한 약간의 전압 강하를 빼곤 위에서 설명드린 것과 같다는걸 아실테죠.
풀업 저항의 주 목적은 바로 스위치가 떨어져 잇을 때가 됩니다.
(a)번 그림과는 다르게 풀업저항을 통해서 전원 +5V로 연결이 되어 있기 때문에
스위치가 떨어져 잇다하더라도, 입력값의 혼동이 없죠. 즉, 이른바 알려진 입력 상태가 되는 것입니다.


그리고, 덧붙여 풀업이 없을 경우, 스위칭이 일어날 때 과도한 전류가 흐를 개연성이 많기 때문에, 이로 인해 디바이스 안 좋은 영향을 끼칠 수가 있습니다.
이런 문제도 풀업(또는 풀다운)저항으로 해결할 수가 잇죠.

쉽게 예를 들어서 설명을 다시 드리자면,
스위치가 ON(눌림) - OFF(안 눌림) - ON - OFF 로 동작한다고 가정하면,
(a)번 그림의 회로는 0V - F(floating) - 0V - F(floating) 이런식의 입력이 들어가겠죠.
이와는 다르게 (b) 그림에서는 Floating 대신 +5V (실제론 저항에 의한 전압 강하가 일어나 더 낮은 전압 또는 전류값이 됩니다.)가 인가되어,
0V - +5V - 0V - +5V 이렇게 인가가 되겠죠.
이해가 되셨으면 좋겠네요.

'Information' 카테고리의 다른 글

LED 보호 저항 계산  (0) 2008.10.08
sink / source  (0) 2008.10.08
[펌] SUDO를 씁시다  (0) 2008.09.03
전용회선(T1, E1)  (0) 2008.04.23
_vimrc  (0) 2008.04.19
Posted by OTOTO
Information2008. 9. 3. 14:15
저작권자 : 루미넌스

인터넷을 통한 서비스를 위하여 설치된 서버에는 반드시 OS설치시부터 관리자 계정(root 또는 administrator)이 만들어져 있다. 이 계정의 권한은 직원이라 하더라도 함부로 알려줘서는 안되며, 관리자 권한이 필요한 업무를 보는 사람에게, 제한적으로 권한을 수행할 수 있도록 허용하는 보안정책이 필요하다. 작업용 공용계정을 사용하는 경우도 마찬가지이다.(하지만 작업용 공용계정을 없애는것이 보안의 첫걸음이다.)
이 기능을 훌륭히 수행해주는 sudo의 사용법에 대하여 요약해 보았다.

sudo

  • 개발, 운영 등의 작업을 수행함에 있어, 로그인계정 외의 다른 계정의 권한이 요구될 때, 그 계정을 직접 사용하지 않고(혹은, 패스워드를 알아내지 않고), 본인의 로그인계정의 인증을 통해 해당 계정의 권한으로 작업을 수행할 수 있다.
  • 용법
사용자 삽입 이미지

  • 가장 간단한 방법은 sudo <command>이다. 이렇게 하면 <command>에 적은 쉘커맨드가 root권한으로 수행된다.
  • root 계정이 아닌 다른 계정의 권한이 필요한 경우엔, sudo -u username <command> 로 수행하면 username 계정의 권한으로 <command>를 수행한다.
    • sudo -u #uid <command> 와 같이 uid값을 사용할 수도 있다.
    • 이 유저를 Runas user라고 한다.
  • sudo로 su - (root계정의 로그인쉘 얻기)를 수행한 예
사용자 삽입 이미지

sudoers

  • sudo를 사용하여 권한을 부여할 구체적인 설정을 하는 파일이 ''sudoers'' 파일이다. 시스템에 따라 약간씩 위치는 다르나, 이 파일을 편집할 권한을 얻으면  시스템의 모든 권한을 얻을 수도 있기 때문에 매우 높은 보안 레벨로 보호되어야 한다.
  • sudo su - 또는 sudo visudo등의 커맨드를 허용하는 것은 매우 신중해야 한다.
  • 이 파일의 편집은 visudo 명령을 실행하여 편집한다. visudo의 기본 편집기(보통은 vi 또는 nano)가 sudoers파일을 열은채로 실행된다.
  • visudo가 사용할 기본 편집기 역시 sudoers파일에 설정할 수 있다.
  • 각 Alias 설정은 문자열 단위로 매치시키기 때문에 주의깊게 작성해야 한다.
  • sudo /usr/bin/su 는 가능하나, cd /usr/bin; sudo ./su는 불가능할 수 있다.

How to Write sudoers

  • Alias 정의 섹션, Default 정의 섹션, Privilege정의 섹션으로 나누어 볼 수 있다.
  • 라인당 하나의 정의
  • Aliases
    • Alias에는 User_Alias, Runas_Alias, Host_Alias, Cmnd_Alias의 4가지 Alias_Type이 있다.
    • 모든 Alias에 대해 ALL은 항상 매치되는 와일드카드로 미리 정의되어 있다(아래 예제 참조)
    • 각 Alias는 NAME = LIST의 형태로 만든다.
      • NAME은 알파벳 대문자로 시작하여야 하고, 두번째 글자부터는 알파벳 대소문자와 숫자, 언더스코어문자('_')를 쓸 수 있다.
      • LIST는 콤마(,)로 구분되고 공백은 무시된다.
      • LIST의 item앞에 '!'(negate operator)를 쓰면 리스트에서 해당 아이템만을 배제시킨다.
        예:[CODE]ALL, !/bin/su    # "/bin/su를 제외한 모두"라는 의미
        ALL, !!/bin/su    # "모두"의 의미, 짝수번 negate 의미 없다.[/CODE]
      • 같은 종류의 Alias는 콜론(:)으로 묶을 수 있다. 다른 라인에 새로운 정의로 포함시킬수도 있다.
    • Alias는 다음과 같은 형태가 된다.
      • Alias_Type NAME = item1, item2, item3, item4
      • Alias_Type NAME = item1, item2, item3 : Name = item4, item5
    • User_Alias
      • sudo 권한을 적용할 유저의 집합을 정의한다.
      • (sudoer 그룹명) = (List of login names)
      • 유저명 대신 %<group> 을 사용할 수도 있다.
        • 예: %admin # admin 그룹에 속하는 모든 유저
    • Runas_Alias
      • 어떤 유저 또는 그룹의 권한으로 명령을 수행할지를 지정할 수 있다.
      • 정의 방법은 User_Alias와 동일하나, #<uid> 의 형태도 사용할 수 있다.
      • 주의: root#0은 동일한 유저이지만, 문자열 매치를 하기 때문에 다른 것으로 간주된다. root, %0도 마찬가지.
    • Host_Alias
      • hostname, IP address, Network address, 다른 Host_Alias를 묶어 호스트 집합을 만들 수 있다.
    • Cmnd_Alias
      • 권한을 허용할 커맨드를 나열하여 집합으로 만든다.
      • 커맨드는 full path로 적는다. 디렉토리명을 커맨드로 지정할 수 있다. 디렉토리를 지정하면 그 디렉토리이하의 모든 커맨드에 대해 허용된다.
  • Defaults : 권한 부여의 기본 옵션을 지정한다.
    • 라인당 하나의 Default_Entry를 정의 한다.
    • Default_Entry는 Default_Type Parameter_List로 정의한다.
    • Default_Type는 다음의 4가지 정의 방법이 있다.
      • Defaults
      • Defaults@Host_Alias
      • Defaults:User_Alias
      • Defaults>runas_username
    • Parameter_List는 Parameter의 리스트를 적는다. Parameter는 다음과 같은 형태가 있다.
      • flag
      • !flag
      • flag=value
      • flag+=value
      • flag-=value
      • other Parameter_Lists
    • 여기서는 유용한 몇개 flag만 소개한다. 자세한 flags는 SUDOERS(5)를 참조한다 (이말을 쓰기 싫어서 작성한 문서에 쓸수 밖에 없다니;;;)
      • lecture: 앞절의 예제 이미지와 같이 타인의 권한으로 수행할때 기억해야 할 것에 대한 짧은 경고문.
        lecture=(never, once, always 중 하나)
      • lecture_file: lecture를 보여줄 때, 이 파일을 보여준다.
        lecture_file=(full path of lecture_file)
      • timestamp_timeout: sudo를 수행한 후 다시 수행할 때, 패스워드를 다시 물어볼지를 결정하는 타임아웃값. 0이면 항상 물어본다.
        timestamp_timeour=(분 단위 정수)
      • editor: visudo에서 사용할 기본 에디터
        editor=(/usr/bin/vim 등의 에디터 full path)
      • passwd_tries: 비밀번호를 틀렸을 경우 다시 물어보는 횟수.
        passwd_tries=(정수)
      • passwd_timeout: 비밀번호 입력대기시간 타임아웃값. 0이면 무한정 기다린다.
        passwd_timeout=(분 단위 정수)
      • fqdn: Host 이름에 Fully Qualified Domain Name을 사용할 것인지의 여부. 이 플래그를 사용하면, sudo수행시에 hostname을 DNS에 쿼리한다.
        fqdn (또는 !fqdn)
      • set_logname: runas user(타겟 유저라고도 함)의 LOGNAME과 USER 환경변수값을 가져오지 않고 현재 값을 유지한다.
        set_logname (또는 !set_logname)
  • User privilege specification
    • 앞서 정의한 Alias들의 조합으로 권한을 부여한다.
    • User_Alias (Host_Alias) = Cmnd_Alias의 형태로 정의한다.
    • Tag_Spec과 Runas_Spec을 사용하는 방법은 역시  SUDOERS(5)를 참조한다. (또.;; 그치만 많이 써본적은 없으므로 필요할때 읽어볼 것.)

sample

  • 가장 소극적인 보안책으로 사용할수 있는 sudoers 예제
    [CODE type=config]# 아무런 Alias를 정의하지 않고,
    # admin group에 속한 계정 전체에 대해서
    # 모든 커맨드를 root권한으로 수행할수 있도록 허용함
    # sudo를 사용하기 위해서 항상 패스워드를 물어본다.

    # Host alias specification

    # User alias specification

    #Cmnd alias specification

    # Defaults
    Defaults   lecture=always,tty_tickets,!fqdn,timestamp_timeout=0,editor=/usr/bin/vi

    # User privilege specification
    root    ALL=(ALL) ALL

    # Members of the admin group may gain root privileges
    %admin ALL=(ALL) ALL
    [/CODE]
  • 다양한 용법과 문법의 예
    [CODE type=config]# User alias specification
    # 3가지의 유저셋을 정의한다.
    User_Alias     FULLTIMERS = millert, mikef, dowdy
    User_Alias     PARTTIMERS = bostley, jwfox, crawl
    User_Alias     WEBMASTERS = will, wendy, wim

    # Runas alias specification
    # 2가지 Runas 유저셋을 정의한다.
    Runas_Alias    OP = root, operator
    Runas_Alias    DB = oracle, sybase

    # Host alias specification
    # 4가지 호스트셋을 정의한다.

    # IP/NETMASK 지정방법, 호스트명 지정방법의 예가 모두 나와있다.
    Host_Alias     CUNETS = 128.138.0.0/255.255.0.0
    Host_Alias     CSNETS = 128.138.243.0, 128.138.204.0/24, 128.138.242.0
    Host_Alias     SERVERS = master, mail, www, ns
    Host_Alias     CDROM = orion, perseus, hercules

    # Cmnd alias specification
    # 커맨드셋을 정의한다.
    Cmnd_Alias     DUMPS = /usr/bin/mt, /usr/sbin/dump, /usr/sbin/rdump,\
                           /usr/sbin/restore, /usr/sbin/rrestore
    Cmnd_Alias     KILL = /usr/bin/kill
    Cmnd_Alias     SHUTDOWN = /usr/sbin/shutdown
    Cmnd_Alias     HALT = /usr/sbin/halt
    Cmnd_Alias     REBOOT = /usr/sbin/reboot
    Cmnd_Alias     SHELLS = /usr/bin/sh, /usr/bin/csh, /usr/bin/ksh, \
                            /usr/local/bin/tcsh, /usr/bin/rsh, \
                            /usr/local/bin/zsh
    Cmnd_Alias     SU = /usr/bin/su

    # Override built-in defaults
    # 기본 옵션을 지정한다.
    # lecture를 항상 보여준다. fqdn 사용하지 않는다. 3분내에 다시 sudo하면 패스워드를 물어보지 않는다. visudo의 편집기로 /usr/bin/vi를 사용한다.
    Defaults   lecture=always,!fqdn,timestamp_timeout=3,editor=/usr/bin/vi

    # runas user가 root가 될때는 set_logname 하지 않는다.
    # 즉, root 의 환경을 가져오지 않는다
    Defaults>root          !set_logname

    # FULLTIMER에게는 lecture를 보여주지 않는다.
    Defaults:FULLTIMERS    !lecture

    # SERVERS에서는 패스워드 입력을 1분내로 해야 한다. sudo 로그 파일을 별도로 지정한다.
    Defaults@SERVERS       passwd_timeout=1, logfile=/var/log/sudo.log

    # User privileges
    # root도 sudo를 수행할 수 있다.
    root           ALL = (ALL) ALL

    # wheel그룹에 속한 모든 유저는 sudo를 통해 모든 명령을 수행할 수 있다.
    %wheel         ALL = (ALL) ALL

    # FULLTIMERS에게는 패스워드를 물어보지 않는다.
    FULLTIMERS     ALL = NOPASSWD: ALL

    # PARTTIMERS에게는 패스워드를 물어본다.
    PARTTIMERS     ALL = ALL

    # operator에게는 패스워드를 물어보고, 지정된 커맨드셋을 허용한다.
    operator       ALL = DUMPS, KILL, SHUTDOWN, HALT, REBOOT, PRINTING,\
                   sudoedit /etc/printcap, /usr/oper/bin/

    # joe는 operator가 될수 있다.
    joe            ALL = /usr/bin/su operator

    # fred는 DB 유저권한이 필요할때에만 패스워드를 물어보지 않고 모든 권한이 허용된다.
    fred           ALL = (DB) NOPASSWD: ALL

    # john은 SERVERS호스트셋에서 옵션없이 su를 수행할 수 있다. su에 옵션을 줄수 없고 root로의 su는 불허한다.
    john           SERVERS = /usr/bin/su [!-]*, !/usr/bin/su *root*

    # jen은 SERVERS호스트셋을 제외한 모든 호스트에서 모든 권한을 패스워드를 물어본후 얻을 수 있다.
    jen            ALL, !SERVERS = ALL
    [/CODE]

참고

man pages; SUDO(8), VISUDO(8), SUDOERS(5)

'Information' 카테고리의 다른 글

sink / source  (0) 2008.10.08
[펌]풀업  (0) 2008.10.08
전용회선(T1, E1)  (0) 2008.04.23
_vimrc  (0) 2008.04.19
멱등(Idempotent)  (0) 2008.03.17
Posted by OTOTO
Information2008. 4. 23. 15:42

T1 = 1.544Mbps, 64Kbps의 채널 24개

디지털 부호 코드 변조, TDM(시분할 다중화)을 사용하는 디지털 회선
Full-duplex(2가닥 송신, 2가닥 수신 총 4가닥 전선 사용)
사용 매체 - 구리선(UTP), 동축케이블, 광케이블, 디지털 마이크로웨이브 등등
음성 신호를 초당 8,000번 sampling, 8 bits 단위로 디지털화, 24채널 동시에 디지털화
1 frame이 192 bits, frame 구분에 1 bit 사용
즉,
192 bits/frame * 8,000 frames + 8,000 framing bits
                   = 1.544Mbps

T3 = 44.736Mbps


E1 = 2.048Mbps, 64Kbps의 채널 32개

ITU-T에 의해 고안되고 CEPT(유럽 우편 및 통신운영회의)에서 이름 붙인 디지털 전송규격
북미의 T-1 형식에 대응하기 위해 규격화, E-2부터 E-5까지 있고 E-1 형식의 배수로 증가하는 형태

특징
ADSL(보통 3Mbps)등의 회선 보다 느리지만 높은 안정성 보장
광통신 발달 이전의 주력 전용회선

'Information' 카테고리의 다른 글

[펌]풀업  (0) 2008.10.08
[펌] SUDO를 씁시다  (0) 2008.09.03
_vimrc  (0) 2008.04.19
멱등(Idempotent)  (0) 2008.03.17
repair vs fix  (0) 2008.03.17
Posted by OTOTO
Information2008. 4. 19. 15:26

더도말고 딱 한번만(사실은 거짓말 ㅋㅋ) 맛 들이면 다른 에디터는 도저히 쓸래야 쓸수가 없는 Vi Editor
ctags + cscope + taglist + bufexploer를 위한 _vimrc 파일
윈도우용.

mkcs.bat는 cscope database 만드는 배치 파일

ctags, cscope는 구글링 강추.

'Information' 카테고리의 다른 글

[펌]풀업  (0) 2008.10.08
[펌] SUDO를 씁시다  (0) 2008.09.03
전용회선(T1, E1)  (0) 2008.04.23
멱등(Idempotent)  (0) 2008.03.17
repair vs fix  (0) 2008.03.17
Posted by OTOTO
Information2008. 3. 17. 17:38

멱등은 동일한 작업을 어떤 부작용도 없이 한 번이고 두 번이고 계속해서 할 수 있다.

멱등이라는 말은 여러가지 의미로 사용된다.
HTTP/서블릿 환경에서 이 말은 동일 요청은 서버에 어떤 잘못된 결과를 야기하지 않고
두 번이상 이루어질 수 있다는 의미이다.

동일 요청은 동일 응답을 가져야 한다는 의미가 아님을,
요청으로 어떤 부작용도 발생하지 말아야 한다는 의미가 아님을 유의해야 한다.

HTTP 스펙 1.1에서는 GET, HEAD, PUT은 멱등이라고 정의하고 있다.
POST는 HTTP 스펙 1.1에 의하면 멱등이 아니다.

GET은 HTTP 스펙에 따르면 멱등 메소드이다.
HTTP GET은 말 그대로 무엇인가를 서버로부터 가져오는 것이지, 서버에 수정을 가하기 위한 것이 아니다.
즉, GET은 어떤 부작용(bad side effect)없이 여러 번 실행할 수 있다.

POST는 반대로 멱등 메소드가 아니다.
POST로 전송되는 몸체의 정보는 트랜잭션을 위한 것이면, 이는 되돌릴 수 있는 성질의 것이 아니다.

'Information' 카테고리의 다른 글

[펌]풀업  (0) 2008.10.08
[펌] SUDO를 씁시다  (0) 2008.09.03
전용회선(T1, E1)  (0) 2008.04.23
_vimrc  (0) 2008.04.19
repair vs fix  (0) 2008.03.17
Posted by OTOTO
Information2008. 3. 17. 08:49

사용 빈도에 따라
fix : american english
repair : british

의미의 차이
repair : 망가지거나 훼손된 상태를 처음의 상태 또는 그에 근접하게 고친다는 의미
fix : repair의 의미를 포함. 더불어 처음의 상태와 상관없이 더 나은 상태, 더 편리한 상태로 고치는 경우에 사용

예)
"fix the problem"( O )
"repair the problem"( X )

'Information' 카테고리의 다른 글

[펌]풀업  (0) 2008.10.08
[펌] SUDO를 씁시다  (0) 2008.09.03
전용회선(T1, E1)  (0) 2008.04.23
_vimrc  (0) 2008.04.19
멱등(Idempotent)  (0) 2008.03.17
Posted by OTOTO