9월, 2018의 게시물 표시

파이썬의 First-Citizen(일급시민), Closure, Decorator

1. First-Citizen 정의 : First-Citizen은 특정 자료형을 의미하는 것이 아니고 위 3가지 조건을 만족하면 First-Citizen이다. First-Citizen의 조건 - 변수나 데이터에 할당할 수 있다. - 객체의 인자로 전달할 수 있다. - 객체의 리턴값으로 리턴할 수 있다. function_name / function_name() 에 대한 차이를 먼저 알아야 함. 파이썬에서는 함수도 일급시민이 될 수 있다. 예를들어 아래 코드를 보자. def some_func(number): def square(): print(number * number) return square some_func(4)를 호출하면 square 함수를 반환한다. square 함수의 실행 결과값이 아니라 함수를 반환한다. 2. Closure (먼저 일급시민에 대한 이해가 필요하다) 정의 : 외부 함수의 실행이 종료된 후에도, 내부 함수가 local scope내의 변수(외부함수에서 정해진 변수라던가)를 기억하고 접근할 수 있는 경우를 의미. * 쉽게 말해 외부함수에 의해 환경이 설정 된 내부 함수를 의미한다. Closure is an inner function that remembers and has access to variables in the local scope in which it was created even after the outer function has finished executing. Closure closes over the free variables from their environment. 예를들어, 아래와 같은 함수가 있을 때 def outer_func(msg): message = msg def inner_func(): print(message) return inner_func hi_func = outer_func("Hi") hello_func = outer_...

9/4 Sphinx 사용, 디렉토리 경로 Customize, Redis 설치 / 활용

1. Sphinx 사용 - 기본적인 Sphinx 사용방법은 http://www.hanul93.com/python-sphinx/ 여기. - 자동으로 생성되는 index.rst 외에 내가 추가로 만든 모듈들도 자동으로 문서화가 가능하다. - conf.py 내 path 설정 하는 부분의 주석을 해제하고, 소스코드와 모듈이 위치한 경로를 지정해주면 source라는 폴더가 생성되며 해당 폴더 내에 모듈별 rst 파일들이 생겨난다. - 그 rst 파일들을 make로 build하면 해당 경로 내의 rst 파일들도 자동으로 문서화 되며 이는 스핑크스가 만들어주는 index html에서 볼 수 있다. 2. 디렉토리 경로 수정 - 파이썬에서 제공하는 라이브러리 중 os 모듈에는 여러 함수가 있다. - 그 중 디렉토리명, 현재 파일 경로등등 다양한 값을 도출할 수 있다. - 로그가 생성될 폴더명만 config폴더에서 지정하면 소스코드 단에서는 폴더가 생성되기 바로 직전의 경로까지만을 os.path 모듈을 이용하여 준비해둘 수 있다. 3. Redis 설치 / 활용 - Redis에서 제공하는 자료구조는 dict, list, set 정도의 형태가 있다. - List를 사용하면 Message Queue 형태로 - 다른 연결 필요없이 Redis Client들은 정해진 IP, Port를 향해 접속하면 다중접속이 가능하다. (즉, Redis 서버 정보만 잘 입력하면 Connection이 맺어진다는 뜻) - Redis를 공부하며 다양한 명령어를 써봤는데 이는 다음과 같다.

9/3 스핑크스, Python-mysql 연결, DHCP와 IP주소 할당 원리

스핑크스(sphinx) 설치, 사용해 봄 CLCP의 dependancy들은 pip의 requirements 명령어로 설치. Python과 MySQL을 연결하는 dependancy는 가끔 버전상의 오류로 (혹은 게시 된 파일 Porting 오류로) 잘 되지 않는 경우가 발생. https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient에서 내 개발환경에 맞게 수동으로 검색해서 다운로드 받은 후 pip install (다운로드한 wheel)로 설치. MobaXterm 설치 : Putty처럼 SSL 접속하는 프로그램인데 GUI를 통해 더 쉽고 FTP 기능도 갖춤. 0.0.0.0 의 의미 : 호스트가 아직 자기의 IP 주소를 모른다는 뜻. 그럼 동적 IP주소가 어떻게 할당 되는지? : 부트스트랩시(디바이스 전원이 들어와서 작동이 되기 시작할 때) 호스트는 255.255.255.255로 메시지를 전송. 255.255.255.255는 DHCP IP이며, DHCP는 호스트가 보낸 메시지를 보고 IP를 할당해 줌. 구체적인 프로세스는 밑의 DHCP DHCP? - 동적으로 IP주소를 할당해주는 프로토콜. 임대->갱신->반환 프로세스를 거친다. - 임대 : 4단계에 걸친 임대 (discovery, offer, request, acknowledge) discover : IP주소가 할당되지 않은 클라이언트들이 자신의 MAC주소를 담아 로컬 네트워크를 향해 Discover 패킷을 Broadcast한다. Broadcast이기 때문에 다른 클라이언트들도 메시지를 수신하는데 MAC주소가 자신의 MAC주소와 다르면 그냥 폐기한다. offer : DHCP서버는 discover 패킷을 받고, discover 패킷에 내장 된 MAC주소를 offer 패킷에 담아 broadcast한다. 클라이언트들은 mac주소가 자기 것과 같으면 DHCP가 있다고 판단하고 request를 준비하며 mac주소가 다른 클라이언트들은 폐...