분류 전체보기
-
[Python] Tip - 메타클래스로 클래스 속성에 주석달기언어/파이썬 & 장고 2016. 12. 6. 21:00
메타클래스로 구현할 수 있는 기능 중 하나는 클래스를 정의한 이후에, 하지만 그 클래스를 실제로 사용하기 전에 프로퍼티를 수정하거나 주석을 붙이는 것입니다. 보통은 이 기법을 디스크립터와 함께 사용하여 클래스에서 디스크립터를 어떻게 사용하는지 자세히 조사한 정보를 디스크립터에 제공합니다.예를 들어 고객 데이터베이스의 로우를 표현하는 새 클래스를 정의한다고 가정합니다. 데이터베이스 테이블의 각 컬럼에 대응하는 클래스의 프로퍼티가 있어야 합니다. 따라서 프로퍼티를 컬럼 이름과 연결하는 데 사용할 디스크립터 클래스를 다음과 같이 정의합니다.class Field: def __init__(self, name): self.name = name self.internal_name = '_' + self.name def..
-
[Python] Tip - 메타클래스로 클래스의 존재를 등록언어/파이썬 & 장고 2016. 12. 6. 20:33
메타클래스를 사용하는 또 다른 일반적인 사례는 프로그램에 있는 타입을 자동으로 등록하는 것입니다. 등록은 간단한 식별자를 대응하는 클래스에 매핑하는 역방향 조회를 수행할 때 유용합니다.예를 들어 파이썬 객체를 직렬화한 표현을 JSON으로 구현한다고 가정합니다. 객체를 얻어와 JSON 문자열로 변환할 방법이 필요합니다. 다음은 새엉자 파라미터를 저장하고 JSON 딕셔너리로 변환하는 기반 클래스를 범용적으로 정의한 것입니다.import json class Serializable: def __init__(self, *args): self.args = args def serialize(self): return json.dumps({'args': self.args}) class Point2D(Serializabl..
-
[Python] Socket과 TCPServer를 이용한 TCP/IP 프로그래밍 (작성중)언어/파이썬 & 장고 2016. 12. 6. 19:50
파이썬에는 HTTP, FTP, SMTP등 다양한 프로토콜을 구현한 네트워킹 라이브러리들이 있는데 그 라이브러리들이 공통으로 사용하는 라이브러리가 있습니다. 바로 Socket 모듈입니다. socket모듈은 TCP/IP, UDP/IP를 지원하는 버클리 소켓 인터페이스를 여러가지 함수와 socket클래스를 통해 제공합니다. socket 클래스를 이용하면 거의 모든 인터넷 프로토콜을 구현할 수 있다는 장점이 있지만, 익히고 사용하기가 간단하지 않다는 단점도 있습니다. 그래서 여기서는 socket클래스와 함께 TCPServer 클래스 모듈을 이용한 TCP/IP 프로그래밍을 설명합니다. TCPServer 클래스는 이름이 말하는 것처럼 서버 애플리케이션에서 사용하며 클라이언트의 연결 요청을 기다리는 역할을 합니다. ..
-
[Linux] IPv6 비활성화 방법서버 2016. 12. 6. 16:44
활성화 확인$ cat /proc/sys/net/ipv6/conf/all/disable_ipv6 0 # 사용중 1 # 사용안함sysctl.conf 파일 수정$ sudo vi /etc/sysctl.conf # 파일 내 아래 내용 붙여넣은 후 저장 #IPv6 Disable net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1적용$ sudo sysctl -p $ sudo reboot활성화 확인$ cat /proc/sys/net/ipv6/conf/all/disable_ipv6 1 # 활성화 상태 확인에서 사용안함 0 # 활성화 상태 확인에서 사용중
-
[Linux] 다중명령어(세미콜론, 파이프, &&, ||) 차이점서버 2016. 12. 6. 16:31
세미콜론(;)하나의 명령어 라인에서 여러 개의 명령을 실행(하나의 명령어 다음에 추가)첫 번째 명령이 실패하여도 두 번째 명령은 반드시 실행이 됨.$ printf "first command\n"; printf "second command\n" first command second command # linux; date -bash: linux: command not found 2016. 09. 04. (수) 11:21:39 KST파이프(|)앞에서 나온 명령 결과를 두 번째 명령에서 사용$ ps -ef | grep python root 30426 1 0 15:51 ? 00:00:00 sudo python3 manage.py runserver 0.0.0.0:80 root 30427 30426 0 15:51 ?..
-
[Python] 환경변수 값 구하기언어/파이썬 & 장고 2016. 12. 6. 10:10
보통 장고에서 환경에 따라 다른 파일을 실행하기 위해 settings.py을 분리하는데 이때 사용자가 입력한 환경변수의 값을 다음 함수를 사용하여 구할 수 있습니다. # 실행 명령어 $ python3 manage.py run --settings=base.settings.local import os env_var = os.environ.get('DJANGO_SETTINGS_MODULE') print(env_var) # 결과 # base.settings.local