프로그래밍 104

[tmux] 1. tmux 개념 및 설치 및 설정 변경 ~/.tmux.conf

tmux 란? - 개발시 화면을 전환 및 분활을 쉽게하여 개발을 편하게 해주는 도구 입니다. - 세션 기반의 프로램으로써 background로 프로그램을 동작 시키고 다른 것을 할수 있게 해줍니다. tmux 버전 - tmux.32tmux next-3.2 설치 1. CentOS Linux release 7.6.1810 (Core) 기준 #git clone https://github.com/tmux/tmux.git #cd tmux #./autogen.sh * 연관 라이브러리 설치 - 대체로 libevent-devel 과 ncurses-devel 이 없어 미리 설치 #yum -y install libevent-devel #yum install ncurses-devel #./configure - 없는 라이브러 ..

[Multi thread] Multi thread 에서 localtime 문제

1. 목표 multi thread에서 시간을 관리하는 방법을 알아 보겠습니다. 꼭 C++에 만 해당되는 내용은 아닙니다. C library를 사용한다면 발생 합니다. 2. multi thread에서의 시간 함수 사용시 주의해야 할 사항 multi thread 환경에서 gmtime() 함수와 localtime() 함수를 같이 사용하면 시간 값에서 충돌이 발생 합니다. 왜냐하면 내부적으로 gmtime과 localtime는 같은 시간 변수를 공유 하기 때문에 문제가 발생 합니다. 이걸 방지 하기위해서 C Library에서는gtime_r() 과 localtime_r()을 제공 합니다. 이 함수들은 내부적으로 "시간 변수" 서로 유 하지 않습니다. 1) 증명 (1) 코드 #include #include int m..

[Linux Tip] 리눅스 꿀 Tip 모음

1. grep을 이용한 특정 파일의 내용 앞 뒤로 보기 1) grep만 사용 grep -B 라인수 -A 라인수 [찾을 단어][찾을 파일] (-B: before , -A: after) Ex)#grep -B 10 -A A test test.log 2) pipe( | )를 이용한 grep 사용 화면에서 출력 가능한 각종 리눅스 명령 | grep -B 라인수 -A 라인수 [찾을 파일] (-B: before , -A: after) Ex)#cat test.log | grep -B 10 -A 10 test #svn log | grep -B 10 -A 10 bugfix101

[윈도우] window 프로그래밍 한글 처리 c++

1. 목표 1) window에서 한글 URL을 처리하기 위한 변환 2) Web에 window의 한글을 전달 하기 위한 변화 2. 핵심 Web에서는 URL encoding시 UTF-8 encoding을 사용합니다 그러나 window는 ANSI encoding을 사용합니다. 그래서 Web에서 사용하는 UTF-8 encoding을 window에서 사용하는 ANSI encoding으로 변경해야 합니다. 그러나 window에서는 UTF-8을 ANSI encodig로 한번에 변경할 수가 없습니다. 중간에 UNICODE로 변경 한 다음 ANSI로 변경해야 합니다. 2. 변환 과정 원리 1) window에서 한글 URL을 처리하기 위한 변환 과정 (utf8->ANSI(CP949) ) (1) URL -> UTF-8 de..

[VIM] 1. VIM 을 이용한 코드 정리 정규 표현식

하도 까먹어서 적어둠... 1. , 뒤 공백 추가 1,$s/ ,/,/g 1,$s/,/, /g 2. 라인끝 공백 제거 %s/\s\+$//e 3. tab을 공백 2개로 변경 1,%s/\t/ /g 4. 들여쓰기 맞추기 1,$s/) {/){/g 1,$s/){/) {/g 5. 주석 간격 변경1,$s/\; \//\; \//g 6. 함수 공백 제거 1,$s/( /(/g 1,$s/ )/)/g 1,$s/ (/(/g 7. if 문뒤 공백 추가 1,$s/if (/if(/g 1,$s/if(/if (/g 1,$s/for(/for (/g 1,$s/ ;/;/g 8. else 맞추기 1,$s/} else{/}else{/g 1,$s/}else {/}else{/g 1,$s/}else{/} else {/g 9. 여러 정규표 현식 입력 방..

[byteordering] big endian vs little endian

[byteordering] big endian vs little endian 1. Byte Ordering이란? - 데이터를 메모리 어떠한 순서로 저장 할 지를 정의한 것이다. - 입력 데이터 : 12345678 1) Big Endian - 숫자 데이터(12345678)를 기준으로 설명 하면 자리수 단위가 높은 단위에서 작은 자리수 단위 방향으로 메모리에 순차적으로 저장한다. 2) Little Endian - 숫자 데이터(12345678)를 기준으로 설명 하면 자리수 단위가 낮은 단위에서 높은 자리수 단위 방향으로 저장한다. 2. Byte Ordering을 알아야 하는 이유?? - network 상의 데이터 전송 순서와 host(시스템을 칭한다)상의 데이터 저장 순서가 다르기 때문이다. - 이렇기 때문에..

[OPENSSL-1.0.2] SSL 연결 코드 구현

[OPENSSL-1.0.2] SSL 연결 코드 구현 1. SSL 연결 개요. - 일반 TCP 연결을 암호화로 감싸는 것이다. 2. SSL연결 내부 연결 성립 절차 1) TCP handshake(TCP 통신을 연결하는 과정을 진행) - TCP 3-way hand shake 진행 2) SSL handshake(SSL 통신을 연결하는 관정을 진행) - 클라이언트는 암호 목록 및 임의 값을 보냅니다. - 서버가 암호를 선택합니다. - 서버는 공개 키와 임의이 값과 함께 인증서를 보냅니다. - 클라이언트는 서버 인증서를 확인하고 클라이언트 개인 키로 암호화 된 개인 키 - 서버는 개인 키를 수락하고 자신의 개인 키를 보냅니다. 3. OpeSSL Server 코딩 1) OpenSSL 초기화 (1) 모든 알고리즘 불..

[OPENSSL-1.0.2] 코드로 알아보는 SSL 통신이해

[OPENSSL-1.0.2] 코드로 알아보는 SSL/TLS 통신이해 1. SSL 통신을 위해 필요한 구조체 1) SSL_CTX(SSL Context)(전역 구조체) (1) Global context 구조체 (2) SSL_CTX는 SSL 응용프로그램당 1개면 충분합니다. (3) SSL 구조체들에 대한 기본값을 저장하며, 연결을 위해 만들어집니다. (4) 연결과 세션에 대한 기본 정보를 갖고 있습니다. - SSL 연결 개수, 재협상, 세션 재개 (5) ssl.h 에 정의 되어 있습니다. - 버전별 정의 - OpenSSL_1_0_2 - 선언 - ssl/ssl.h : typedef struct ssl_st SSL; - OpenSSL_1_1_1-stable cadb6f0e32 - 선언 - include/opens..