본문 바로가기

설명30

go언어 HTTP get web page 받아오기 예제와 소스코드 golang/go언어 HTTP get, web page 받아오기 이번에 import 해서 사용할 모듈은 3가지다. bufio : buffer 관련 IO 처리를 하는 모듈, NewScanner 함수 사용. fmt : 포맷 모듈, 출력과 관련 함수 제공. net/http : network http 관련 method 모듈, Get 함수 사용. 이번 역시 go는 http 관련 처리가 무척 쉽다. 몇 가지 모듈로 몇 줄만에 훌륭한 기능을 동작하다니 신기할 따름. package main import ( "bufio" "fmt" "net/http" ) func main() { resp, err := http.Get("http://golang.com") if err != nil { panic(err) } defer r.. 2021. 12. 23.
go언어 이미지 수집기(crawler) 소스코드 공유 golang/go언어 이미지 crawler, 이미지 수집기 만들기 이번 테스트 대상은 https://hani.co.kr이다. 딱히 이유는 없고 수업에 썼던 샘플 URL이라.. 원하는 대상 URL로 사용하도록 하자. package main import ( "fmt" "log" "net/http" "github.com/PuerkitoBio/goquery" ) func main() { response, err := http.Get("https://www.hani.co.kr") if err != nil { log.Fatal(err) } defer response.Body.Close() document, err := goquery.NewDocumentFromReader(response.Body) if err !=.. 2021. 12. 23.
linux wget 을 사용한 간단한 web server alive check 예제와 공유 wget 을 사용한 간단한 web server alive check 이번 wget 을 사용한 alive check 의 대상으로 google.com 을 써본다. wget --timeout=1 --tries=1 --spider http://google.com 2>&1 | grep -c '200 OK' wget 옵션을 살펴보자. --timeout=1 타임아웃을 지정한다. 응답까지 1초만 대기한다. --tries=1 시도횟수를 지정한다. 1회만 시도한다. --spider http://google.com 대상을 다운로드하지 않고 체크만 한다. 대상 URL 의 상태를 체크한다. | grep 을 제외한 명령문의 결과부터 확인하자. wget --timeout=1 --tries=1 --spider http://googl.. 2021. 12. 22.
[C/C++] C언어 main 함수 전/후에 함수를 실행 하는 방법 C언어 main 함수 전/후에 함수를 실행 하는 방법 10년 전쯤에 이런 질문을 받은 적이 있다. C언어에서 main 함수 전/후에 뭔가 print를 찍는다거나 함수 등을 실행하는 행위를 할 수 있냐고. 나는 안될거다고 얘기했다. C의 entry function 이 main이라 stack의 시작과 끝은 main 함수이기 때문이라 생각하기 때문이다. 근데 물어보신 분은 맞는지 틀리는지 대답을 해주지 않으셨고 어느날 불현듯 그 질문이 생각나서 찾다 보니 가능하다는 글을 보아 갈무리를 하였다. 갈무리 역시 6년 전이지만 정리하는 습관을 기르기 위해 남겨본다. 출처와 내용은 다음과 같다. http://www.geeksforgeeks.org/functions-that-are-executed-before-and-a.. 2021. 12. 21.
POST 시 수신 측에서 데이터 짤려서 받을 때 POST 시 수신 측에서 데이터 짤려서 받을 때 웹 페이지에서 새로운 윈도 팝업을 띄우면서 post를 하는 간단한 동작을 만들었다. 현재 프로토 타입이라 json 데이터는 약 8만 바이트를 약간 넘는 작은 사이즈임에도 불구하고 데이터 일부가 유실되는 상황이 발생하였다. 처음에는 보내는 쪽을 console.log 및 F12 개발도구에서 request / response 데이터를 살펴보았지만 request 데이터는 정상적으로 송신하였고 response는 받은 만큼만 처리해서 응답하는 것을 확인하였다. 그래서 다른 해결 방법을 찾으려 linux 내에서 apache2 error 로그를 확인하다보니 재미있는 문장을 발견하였다. tail -f /var/log/apache2/error.log [Tue Dec 21 0.. 2021. 12. 21.
grep / linux, 사용법, 설명, 옵션, 정규표현식, 예제 grep(그렙, g/re/p) - 텍스트 검색 기능을 가진 명령어 1. 사용법 grep [ -E | -F ] [ -i ] [ -h ] [ -H ] [ -L ] [ -r | -R ] [ -s ][ -u ] [ -v ] [ -w ] [ -x ] [ -y ] [ [ [ -b ] [ -n ] ] | [ -c | -l | -q ] ] [ -p [ Separator ] ] { [ -e PatternList ... ] [ -f PatternFile ... ] | PatternList ... } File ... ] 2. 설명 grep(Globally find Regular-Expression and Print) 은 입력 파일을 줄단위로 읽으면서 PATTERN과 일치하는 문자열이 있는지 확인해서 출력한다. 3. 옵션 -.. 2020. 3. 30.
[C/C++] pthread_mutex_lock 설명 pthread_mutex_lock - 뮤텍스 잠금을 얻거나 해제 1. 사용법 #include int pthread_mutex_lock(pthread_mutex_t *mutex); int pthread_mutex_trylock(pthread_mutex_t *mutex); int pthread_mutex_unlock(pthread_mutex_t *mutex); int pthread_mutex_destroy(pthread_mutex_t *mutex); 2. 설명 * mutex - MUTual EXclusion(상호 배제)devide의 줄임말로 쓰레드간 공유하는 데이터 영역을 보호하기 위해서 사용 - 데이터 영역의 보호는 critical section(임계 영역)을 만들고 임계 영역내에 단하나의 쓰레드만이 진입.. 2020. 3. 30.
컴파일 속도 최적화 / make option, 설명, 예제 컴파일 속도 최적화 make -j 을 통해 컴파일을 병렬 진행 할 수 있다. 이는 물리 프로세서(CPU core) 갯수가 아닌 가용한 스레드 갯수만큼 옵션으로 지정할 수 있다. 뭐 예를 들자면 intel I5 4core 하이퍼스레드 4 라면 총 8개의 스레드를 활용 가능 하다는 것. 리눅스 배포판 마다 다르지만, # cat /proc/cpuinfo | grep cores 명령을 통해 사용가능한 스레드 갯수를 알 수 있다. 즉 make 컴파일을 조금 더 빠르게 하고 싶다면, # make -j 4 이런식으로 스레드 코어를 지정해주는 것이 좋을 것이다. 독립적인 빌드 환경에서는 모르겠지만 SSL이라던가 ALSA 같은 무거운 라이브러리를 사용했을 때는 체감속도가 많이 차이 난다. 2020. 3. 30.