전체 글 497

[libcurl] libcurl + openssl + multi thread 처리에 대한 고민

*무단으로 퍼가지 마세요.* libcurl + openssl + multi thread에 대한 정리 이번 글은 curl을 multi threading 기반으로사용시 발생하는 문제점을 정리 하려고 한다. 1. curl을 multi thread처리가 되어있는가?? - 내가 생각하는 multi thread라 여러 Thread가 각자의 connection을 만들고 이후 작업을 동시에 수행해야한다. - curl 공식 홈페이지에 가보면 "libcurl is thread safe but has no internal thread synchronization: libcurl은 쓰레드에 안전하다. 그러나 내부 쓰레드 동기화는 없음(이게 뭔 개소리인지.) 결국 사용자가 lock걸로 알아서 동기화 해서 쓰라고함 - 결론 li..

[메모리] share memory 사용법

1. Shared memory 리란? - IPC(Inter-Process Communication) 의 일종으로 프로세스간 통신 할때 사용한다. 2. 데이터 공유 방식 - 커널에 생성된 공유 메모리를 통해서 프로세스간 데이터를 공유한다. - 공유된 메모리 영역을 통해서 통신이 가능하다. - 단순히 공유 메모리를 point 함으로써 프로세스에서 사용되는 메모리가 증가되지는 않는다. 3 . shared memory를 사용하기 위해서 필요한 헤더 및 함수 1)헤더 - #include - #include 2) 함수 - int shmget(key_t key, int size, int shmflg) => shared memory 생성 또는 가져오는 함수 - void *shmat( int shmid, const vo..

3장. 프로세스의 기본 부품과 개념들

1. 컴퓨터 하드웨어 구성 - 큰 그림 2. 마이크로 아키텍쳐란? - 사전 적인 정의 인텔 4004는 최초의 일반용, 상용 마이크로프로세서이다.마이크로프로세서(영어: microprocessor, 문화어: 극소형처리장치(極小型處理裝置), 미크로처리장치(미크로處理裝置)) 또는 초소형 연산 처리 장치(超小型演算處理裝置)는 컴퓨터의 중앙 처리 장치(CPU)를 말한다 - 마이크로프로세서 하나를 만드는데 필요한 알고리즘 및 회로 수준의 구조를 자세히 정의한 것을 마이크로아키텍쳐 라고 한다. - 즉 CPU만드는데 필요한 설계도!!! 3. 프로세서의 내부 구조 1). 산술 논리 장치(Arithmetic Logical Unit) ALU - 프로세스 내에서 계산을 담당하는 장치 - 지원하는 연산 (1). 정수 사칙 연산 ..

[libcurl] 사용법 및 connection 유의 사항

1. libcurl의 openssl 버전 확인 방법 및 업그레이드 방법 [localhost]$ curl --versioncurl 7.49.1 (x86_64-pc-linux-gnu) libcurl/7.49.1 OpenSSL/1.0.1e zlib/1.2.8Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 2. libcurl compile옵션 설정 (1)./Configure ex) ./configure --disable-shared --disable-ldap --without-zlib --with-ssl="openssl 설치 경로" --prefix=/usr/local/c..

[libcurl] post data 전송

1. crul post data보내는 방법 - 전체 코드는 sameple프로그램을 보자. - post데이터 전송시 data 크기를 지정해 주지 않을경우 data부분은 strlen으로 계산 하여 보낸다. - post데이터 전송시 data 크기를 지정해 주었을경우 지정하 크기만큼 본낸다. 이를 이용하여 post data부분에 구조체 정보를 담아 보낼수 있다. if(curl){curl_easy_setopt(curl, CURLOPT_URL, send_query); } if( dsize > 0 ){ //dsize는 보낼 post data의 크기 /* Now specify the POST data */ curl_easy_setopt(curl, CURLOPT_POST,1L); curl_easy_setopt(curl,..

2장. RISC vs CISC 차이점

1. 과거 RISC vs CISC 차이점 [ 코드 ] struct Vector{ int x; int y; int z; }data[10]; data[index].y = 0x87654321; RISC 코드 해석 ldr r1 , [sp, #4] ; r1 = index mov r3 , #0xC ; r3 = sizeof(vector) mul r2 , r1 , r3 ; r2 = index * sizeof(vector) add r3 , sp , #8 ; r3 = data add r3 , r3 , r2 ; r3 = &data[index] add r2 , r3 , #4 ; r2 = &(data[index].y) ldr r3 , [pc, #8] ; r3 = 0x87654321 str r3 , [r2] ; *(r2) = r..

[bash] 가장 혼란 스러운 문법정리

[ 변수 정리 ] 1. ${variable} 과 $variable 의 차이 점 - ${variable}을 사용시 변수에대한 직접 적인 세부 조작이 가능한다. array="TEST" echo "$array:0:1" => 결과 : TEST:0:1 echo "${array:0:1}" => 결과 : T [ 비교 문 정리 ] 1. 문자열 비교 if [ ${variable} = 10 ] VS if [ "${variable}" = 10 ] - 차이 전혀 없다. - 문자 비교 연상자 " = != " 사용시 양쪽 모두 string으로 인식하여 처리하기 때문이다. - 나름의 권고 : 문자 비교시 ""를 붙이자. 2. 숫자 비교 if [ ${variable} -eq 10 ] VS if [ ${variable} -eq "10..