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 ----..
-
RPC / gRPC 와 예제 코드 with Go, PythonOpen Source 2021. 11. 8. 11:44
What is gRPC? 1. RPC (Remote Procedure Call) 1-1. RPC 는 무엇인가? software communication protocol network 의 상세 정보를 몰라도, 한 프로그램이 다른 컴퓨터에 있는 프로그램의 서비스에 request 를 할 수 있다. 외부 process 가 다른 process 를 호출하기 위해서 사용된다. Procedure call: function call or subroutine call 함수 호출과 같은 순차적인 호출 client - server 모델을 사용한다. request 를 하는 프로그램이 client service 를 제공하는 프로그램이 server RPC 는 일반적인 함수 호출과 동작이 비슷하다. server 에서 결과를 리턴 할..
-
[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 -..
-
[Spark] 컬럼명 대소문자 구분 (case-sensitive) 옵션Open Source/Spark 2020. 10. 14. 16:24
spark version: 2.4.4 spark 은 기본 설정으로 컬럼명의 대소문자를 구분하지 않고 선택을 할 수 있다. 옵션의 이름은 spark.sql.caseSensitive 로 기본 값은 False 이다. 이 때는 아래의 코드와 같이 컬럼명이 대소문자만 다른 문자열로 되어 있는 경우, 하나의 컬럼만 특정하여 선택이 불가능하다. df = spark.createDataFrame([{'ABC': 1, 'abc': 2}]) df.show() ''' output: +---+---+ |ABC|abc| +---+---+ | 1| 2| +---+---+ ''' df.select('ABC').show() ''' output: Traceback (most recent call last): ... pyspark.sql..
-
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..