자택경비대

Alpine linux ERROR: unsatisfiable constraints: docker (missing): required by: world[docker] 오류 해결방법

Programming

알파인 리눅스에서 도커를 설치하려고 할때 다음과 같은 오류가 발생하는 경우

~# apk add docker
ERROR: unsatisfiable constraints:
  docker (missing):
    required by: world[docker]
~#

아래 명령어로 repository를 추가해준뒤 apk update하여 다시 시도하면 해결된다.

~# echo "http://dl-cdn.alpinelinux.org/alpine/latest-stable/community" >> /etc/apk/repositories
~# apk update
~# apk add docker

Python timeit 모듈 사용법 (성능 측정)

Programming
# 기본적인 사용법
# import timeit
# timeit.timeit(stmt='pass', setup='pass', timer=<default timer>, number=1000000)
#
# stmt: 성능을 측정할 코드를 뜻한다.
#         '''code''', """code""" 등의 멀티라인 스트링을 이용해서 작성할 수도 있다.
# e.g.)
# >>> timeit('''\
# ... for i in range(100):
# ...     n += i
# ... ''', setup='n=0')
#
# setup: 측정 전 필요한 코드를 나타낸다. 유닛 테스트의 setup, teardown 과 같은 개념이라고 봐도 무방하다.
# timer: 측정에 사용할 타이머 함수를 지정한다. 이는 파이썬을 실행하는 플랫폼에 따라 달라질 수 있다.
# number: 테스트를 몇 번 시행할 지 나타낸다.

>>> from timeit import timeit
>>> timeit('"number is " + str(n)', setup='n=123')
0.26701879501342773
>>> timeit('"number is %d" % (n,)', setup='n=123')
0.6445150375366211

Python curses 모듈 사용법

Programming
curses.echo()  # 키보드 입력값이 화면에 출력되도록 설정
curses.noecho()  # 키보드 입력값이 화면에 보이지 않도록 설정

curses.cbreak() # 일반적으로는 키보드 입력값이 버퍼링 되며, Enter키를 눌렀을때 입력이 되지만 
                # cbreak 모드를 설정하면 버퍼링 없이 입력을 받을 수 있다
curses.nocbreak() # 위에서 언급한 cbreak 모드를 해제

curses.initscr() # stdscr을 초기화
curses.endwin()  # 프로그램이 실행 되기 이전의 터미널 세션을 복원한다

from curses import wrapper  # wrapper는 위의 curses.initscr()과 curses.endwin()의 과정을
                            # 중간에 Exception이 발생하여 강제종료 되었을 경우에도 핸들링 되도록 한다

wrapper(main)  # 이런식으로 callable 객체를 파라미터로 넘겨주면 된다

def main(stdscr):
    print('LINES:', curses.LINES, ', COLS:', curses.COLS)  # LINES, COLS 값을 가져 올 수 있다
    y = x = 0
    stdscr.move(y, x)  # 커서를 y, x 좌표로 이동시킨다.