소스 코드4 [C/C++] signal handler library 활용과 소스코드 공유 signal handler library C/C++ 에는 signal.h 를 사용한 signal 함수가 존재한다. 시스템 인터럽트 외 여러 상황에 사용할 수 있기 때문에 필수로 시그널 처리를 하게 된다. 가장 쉬운 예를 들면 ctrl + c를 통해 SIGINT를 발생시켜 프로그램을 종료할 때 메모리 반환을 하여 메모리 누수를 막거나 소켓 또는 IO 핸들러들의 상태를 닫아주어 graceful 한 종료를 해야 할 때 사용된다. 수많은 프로그램을 작성하면서 번번이 signal에 대한 정의와 시그널 처리에 따른 콜백 함수 등을 작성하기 귀찮아 라이브러리로 작성하였고 이를 공유한다. https://github.com/muabow/home/tree/main/library/cpp/lib_signal GitHub - .. 2021. 12. 24. 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. golang/go언어 프로그램의 구조 설명과 예제 golang/go언어 프로그램의 구조 go의 구조를 이해할 수 있도록 작은 프로그램을 하나 짜보았다. package main import "fmt" func add(a, b int) int { return a + b } var a, b int = 1, 2 func main() { result := add(a, b) fmt.Printf("Result=%d = add(%d + %d)", result, a, b) } 문장 구성의 특이사항으로 line 끝에 ;(semicolon)을 사용하지 않는다. 이는 line의 끝을 알릴 때 사용하지 않고 line의 구분을 나타낼 때 사용하며 go formatter 가 자동으로 정렬해준다. ex) var a = 1 int ; var name = "test" string → .. 2021. 12. 22. 이전 1 다음