분류 전체보기
-
[Python] Tip - 재사용 가능한 @property 메서드에는 디스크립터를 사용언어/파이썬 & 장고 2016. 10. 29. 17:42
파이썬에 내장된 @property의 큰 문제점은 재사용성입니다. 다시 말해 @property로 데코레이트하는 메서드를 같은 클래스에서 속한 여러 속성에 사용하지 못합니다. 또한 관련 없는 클래스에서도 재사용할 수 없습니다.class Homework: def __init__(self): self._grade = 0 @property def grade(self): return self._grade @grade.setter def grade(self, value): if not (0
-
[Python] Tip - 게터와 세터 메서드 대신 일반 속성을 사용언어/파이썬 & 장고 2016. 10. 29. 16:21
다른 언어의 경우 게터와 세터 메서드를 명시적으로 구현하여 사용합니다. 하지만 파이썬에서는 명시적인 게터와 세터를 구현할 일이 거의 없습니다. 클래스의 변수들의 접근제어자를 public으로 할 경우 쉽게 접근할 수 있습니다. 또한 나중에 속성을 설정할 때 특별한 동작이 일어나야 하면 @property 데코레이터와 이에 대응하는 setter 속성을 사용하는 방법으로 바꿀 수 있습니다. class Resistance: def __init__(self): self._data = 10 @property def data(self): return self._data @data.setter def data(self, val): self._data = val self.current = self._data * 10 re..
-
[Python] 메타클래스와 속성언어/파이썬 & 장고 2016. 10. 29. 16:07
메타클래스는 파이썬의 기능목록에서 자주 언급되지만 실제로 메타클래스가 무엇을 하는지 이해하는 사람은 소수에 불과합니다. 메타클래스라는 이름은 어렴풋이 클래스 위에 있고 클래스를 넘어선다는 개념을 암시합니다. 간단히 설명하면 메타클래스를 이용하면 파이썬의 class문을 가로채서 클래스가 정의될 때마다 특별한 동작을 제공할 수 있습니다.속성 접근을 동적으로 사용자화하는 파이썬의 강력한 내장 기능이 있습니다. 파이썬의 객체 지향 구조와 함께 이용하면 이 기능들은 간단한 클래스를 복잡한 클래스로 쉽게 바꿔주는 훌륭한 도구가 됩니다.그러나 이런 강력한 기능에는 많은 함정이 있습니다. 동적 속성은 객체들을 오버라이드하다가 예상치 못한 부작용을 일으키게 할 수 있습니다. 메타클래스는 처음 접하는 사람은 도저히 이해할..
-
[Python] Tip - 공개 속성보다는 비공개 속성을 사용언어/파이썬 & 장고 2016. 10. 29. 16:01
파이썬에는 클래스 속성의 가시성(visibility)이 공개(public)와 비공개(private) 두 유형밖에 없습니다.class MyObject: def __init__(self): self.public_field = 5 self.__private_field=10 def get_private_field(self): return self.__private_field foo = MyObject() assert foo.public_field == 5 assert foo.__private_field == 10 # 에러 클래스 메서드도 같은 class 블록에 선언되어 있으므로 비공개 속성에 접근할 수 있습니다.class MyObject: def __init__(self): self.__private_field..
-
[Python] hasattr()언어/파이썬 & 장고 2016. 10. 29. 14:56
hasattr(object, name)Object내에 name에 해당하는 attribute가 있으면 True, 없으면 False를 리턴.class foobar(): data = [1, 2, 3, 4] def __init__(self, val): self.val = val >>> x = foobar >>> y = foobar(['a', 'b']) >>> z = foobar([1, 2]) >>> hasattr(x, 'data') True >>> hasattr(y, 'data') True >>> hasattr(x, 'val') False >>> hasattr(y, 'val') True >>> delattr(x, 'data') >>> hasattr(x, 'data') False >>> hasattr(y, 'da..
-
[Python] isinstance()언어/파이썬 & 장고 2016. 10. 29. 14:53
isinstance(1, int) # 1이 int형인지 알아봅니다. 결과는 True 입니다. isinstance(1.2, float) # 1.2가 float형인지 알아봅니다. 결과는 True 입니다. isinstance(1.2, int) # 1.2가 int형인지 알아봅니다. 결과는 False입니다. isinstance("hi", str) "hi"가 스트링인지 알아봅니다. 결과는 True입니다. isinstance(mylist, list) # mylist가 list형인지 알아봅니다. 결과는 True입니다. simclass = CSimple() isinstance(simclass, CSimple) # simclass가 CSimple 클래스인지 확인합니다. 결과는 True입니다.
-
[PostgreSQL] pg_hba.conf 설명DB/PostgreSQL 2016. 10. 28. 15:49
PostgreSQL의 pg_hba.conf 파일을 통해 외부접근에 대한 처리는 되도록 배재하는것이 좋습니다. 외부접근제어는 시스템 OS Kernel Level의 Packet Filter( iptable, ipchain...)를 이용하는 것이 PostgreSQL로의 불법로그인으로 인한PostgreSQL 인증체크처리 부하라던지 전체적인 성능에 이득이 됩니다. 즉, Kernel단에서 해당 IP나 IP Block에 대해서 접근제어를 해주는 것이 전체적인 성능에 좋습니다.pg_hba.conf는 PostgreSQL의 인증시스템관련 정보를 담고 있는 설정파일로 설정방법이 간단한편으로 실제적인 계정에 대한 정보는PostgreSQL의 카탈로그 테이블인 pg_user에서 관리하고 접근 Host나 Host의 데이터 전송방식..
-
[Linux] sed 명령어서버 2016. 10. 28. 15:27
sed명령어는 1개 라인씩 입력 라인을 읽어들여 표준출력으로 출력. sed는 각 라인을 읽을 때마다 ed에서 사용하던 형식의 대치작업을 실행. 일치하는 문자열이 있으면 그 문자열을 대치한 후 출력하고 일치하는 문자열이 없으면 그 라인은 수정되지 않고 그대로 출력.라인들을 하나씩 읽고, 수정하고, 출력하기 때문에 기억장치 안의 버퍼를 사용하지 않음. 버퍼를 사용하지 않으면 파일의 크기에 제한 없이 작업을 할 수 있음. sed는 아주 큰 파일을 처리할 때 주로 사용됨.치환$ sed 's/addrass/address/' list.txt # addrass를 address로 바꿈. 단, 원본파일을 바꾸지 않고 표준출력 $ sed 's/\t/\ /g' list.txt # list파일 내 탭문자를 엔터로 전체 변환삭..
-
[Linux] find 명령어서버 2016. 10. 28. 09:59
파일 찾기현재 디렉토리에서 txt 확장자를 가진 모든 파일 찾기$ find -name '*.txt'현재 디렉토리에서 하위 디렉토리까지 전부 찾음루트에서부터 txt확장자를 가진 모든 파일 찾기$ find / -name '*.txt'루트에서부터 ab로 시작하는 모든 파일 찾기$ find / -name 'ab*'루트에서부터 파일명이 txt로 시작하는 모든 파일 찾기$ find / -name '.txt*'루트에서부터 파일명이 txt로 시작하는 모든파일을 찾아 ls 형식으로 출력$ find / -name '.txt*' -ls루트에서부터 ab로 시작하는 모든 디렉토리 찾기find / -name 'ab*' -type d
-
[Linux] iptables 설정서버 2016. 10. 28. 09:45
iptables 세팅을 잘못하면 서버접속을 못하는 상황이 생기므로 신중하게 해야합니다.iptables 옵션테이블(tables)우선 iptables에는 테이블이라는 광범위한 범주가 있는데, 이 테이블은 filter, nat, mangle, raw 같은 4개의 테이블로 구성되며, 이중에서 우리에게 필요한 것은 필터링 규칙을 세우는 filter 테이블입니다.체인(chain)iptables에는 filter 테이블에 미리 정의된 세가지의 체인이 존재하는데 이는 INPUT, OUTPUT, FORWARD 입니다. 이 체인들은 어떠한 네트워크 트래픽(IP 패킷)에 대하여 정해진 규칙들을 수행합니다.가령 들어오는 패킷(INPUT)에 대하여 허용(ACCEPT)할 것인지, 거부(REJECT)할 것인지, 버릴(DROP)것인지..