Programming Language/Python
-
[psycopg2] postgresql oid 에 대한 텍스트 가져오는 쿼리Programming Language/Python 2021. 11. 15. 18:05
postgresql 에는 oid (object identifier) 가 있는데 테이블의 타입도 oid 로 관리하고 있다. 만약 python 에서 psycopg2 라이브러리를 사용한다면, 아래처럼 타입을 oid 로 받게 된다. import psycopg2 conn = psycopg2.connect() cur = conn.cursor() cur.execute("select A, B from TEST") cur.description # (Column(name='A', type_code=20), Column(name='B', type_code=25)) 이때, 해당 oid 에 대한 타입명을 알고 싶으면 아래 쿼리를 사용하면 알 수 있다. # psql select 20::regtype::text; text ----..
-
[python] CLOSE_WAIT 해결 방법 with TimeoutIteratorProgramming Language/Python 2021. 5. 7. 11:20
tcp 연결된 소켓의 상태가 CLOSE_WAIT 상태에서 처리되지 못하고 계속 소켓을 잡고 있는 상황이 발생하여 해당 내용을 정리한다 0. 용어 end, end-point : aplication, user 등 연결에서 한 쪽 끝 프로세스 tcp 상태 1. 개념 정리 CLOSED : 연결이 없음 LISTEN : Passive open, SYN을 기다리는 상태 SYN-SENT : SYN을 보내고 ACK를 기다리는 상태 SYN-RECEIVED(SYN-RCVD) : SYN+ACK을 보내고 ACK를 기다리는 상태 ESTABLISHED : 커넥션이 생성된 상태, 데이터를 전송할 수 있다. FIN-WAIT-1 : 첫 FIN이 보내진 상태, ACK를 기다리고 있다. CLOSE-WAIT : 첫 FIN을 받고 ACK를 보..
-
[Python] PLY (Python Lex-Yacc) 정리 - YaccProgramming Language/Python 2021. 4. 28. 17:22
Lexer 에 대한 내용은 Lex 정리 문서 를 참조 해주세요. 2. parse 언어 문법을 파싱하기 위해서 yacc.py 를 이용한다. YACC(Yet Another Compiler Compiler) 은 LR-parsing / shift-reduce parsing 으로 알려진 분석 기술을 사용한다. LR-parsing 입력 기호들을 읽어가면서 기호들을 reduce 하여 시작 기호로 반환되는 상향식(bottom-up) 구문 분석 기법이다. stack 과 input buffer 를 이용해서 분석이 가능하다 참고링크 : https://en.wikipedia.org/wiki/LR_parser syntax 는 BNF(Backers Naur From) 구문으로 표기한다. 예를 들어, 간단한 산술 계산식을 분석 하..
-
[Python] PLY (Python Lex-Yacc) 정리 - LexProgramming Language/Python 2021. 4. 28. 10:08
YACC 에 대한 내용은 YACC 정리 문서 를 참조 해주세요. 1. Lex lex.py 를 이용한다. 문자열을 tokenize 할 때 사용한다. 1.1. The tokens list (tokens 리스트) tokens 라는 list 객체에 lexer 에서 사용 될 토큰의 이름을 모두 정의해야 한다. tokens = ( 'NUMBER', 'PLUS', 'MINUS', 'TIMES', 'DIVIDE', 'LPAREN', 'RPAREN', ) 1.2. Specification of tokens (토큰의 명세) prefix (t_ ) 를 각 토큰이름 앞에 사용해서 rule 을 정의 한다. rule 은 re 모듈의 정규 표현식으로 정의 한다. re 컴파일러는 re.VERBOSE 옵션을 사용한다. (multili..
-
문자열 암호화 / 복호화 with PythonProgramming Language/Python 2021. 2. 1. 18:44
문자열을 네트워크를 통해 주고 받을 때 위험성 문자열을 누군가가 탈취 할 수 있다. 탈취된 문자열을 기반으로 임의의 수정을 하여 시스템에 문제를 야기 할 수 있다. 암호화 / 복호화를 통해 문자열(data)로 인한 위험성을 줄일 수 있다. 1. rsa 키 생성 openssl 명령어를 이용해서 rsa private/public key 생성 generate private key $ openssl genrsa -out private.pem 4096 Generating RSA private key, 4096 bit long modulus (2 primes) ......................++++ ...........................++++ e is 65537 (0x010001) $ ls -..
-
RST (reStructuredText) & Sphinx 문법 정리Programming Language/Python 2019. 12. 9. 17:59
문서 내 용어 RST : reStructuredText Markdown : Markdown sphinx : 파이썬 코드(.py)의 내용을 html로 변환해서 웹페이지로 만들어주는 툴 또한, rst로 작성된 것을 HTML, PDF 등으로 변경해주는 도구 $ pip install sphinx 명령을 통해 설치 index.rst : 웹 문서의 첫 페이지 toctree : sphinx에서 index.rst를 작성 할 때 사용되는 directive RST 글자 표현 italic 체 - * 을 양옆으로 붙임. *텍스트* bold 체 - ** 을 양옆으로 붙임. **텍스트** 섹션 헤더 주의 : 제목의 위/아래에 들어가는 문자의 개수는 제목내용과 같거나 많아야 한다. # 잘못된 예 title == # 잘된 예 tit..
-
Requests Library in pythonProgramming Language/Python 2019. 12. 5. 00:42
Requests 라이센스 Apache Software License (Apache 2.0) 특징 python으로 작성된 HTTP library HTTP/1.1 request 사용 가능 headers, form data, paramters 등등을 간단히 추가 가능 설치 pip install requests Import 방법 import requests Method 종류 GETparams : Dictionary, list of tuples or bytes requests.get(url, params=None, **kwargs) OPTIONS requests.options(url, **kwargs) HEAD requests.head(url, **kwargs) POSTdata : Dictionary, list ..