일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Sync
- 리뷰
- Callback
- windows
- JavaScript
- window
- 책
- mutex
- channel
- package
- Golang
- FOR
- go언어
- write
- 영화
- bitcoin
- Python
- C
- json
- Close
- range
- File
- http
- go
- API
- Linux
- tcp
- GO 언어
- install
- c++
- Today
- Total
목록전체 글 (203)
Code Habit
Windows에서는 line ending으로 CR(Carriage-Return, \r)과 LF(Line Feed, \n)을 사용하고 Unix 나 Mac OS 는 LF만 사용한다. 이로 인해 실제 코드는 변경된게 없는데 변경으로 착각하는 문제가 발생할 수 있다. 이런 문제를 방지하기 위해 OS가 달라도 문제가 없도록 crlf 처리 방법을 결정해야 한다. Git 설정 - core.eof : git이 line ending을 어떻게 처리하는지 관련된 항목이다. 세 가지 설정을 할 수 있다. core.eol = native : 기본 설정. 시스템에서 line ending을 처리하는 방법에 따른다. windows에서는 CRLF를 사용하고 Linux, OS X는 LF만 사용한다. core.eol = crlf : CR..
상수를 0으로 나누었을때 다음과 같이 예외 코드 "0x0000094"가 발생한다. 의미하는 바는 다음과 같다. 0x0000094 : Integer division by zero.
sentry-native를 빌드하는데 "error C2220: 경고가 오류로 처리되어 생성된 'object'파일이 없습니다."란 에러가 발생하였다. 구글을 검색해보니 다음과 같은 내용이 있었다. error code C2220 은 경고의 수준에 따라 오류로 처리할 지, 오류로 처리하지 않을 지에 대한 컴파일 설정에 따른다. 경고수준은 프로젝트 속성 -> C/C++ -> 경고수준 에서 경고로 처리할 범위를 정할 수 있고, 경고의 수준에 따라 오류로 처리할지 하지 않을 지는, 프로젝트 속성 -> C/C++ -> 경고를 오류로 처리 에서 '예', '아니오'로 설정이 가능하다. 경고 수준은 /W0 에서부터 /WX까지 설정이 가능하다. 숫자가 커질수록 많은 경고를 발생시키게 된다. 간단히 예시를 들면 /WX로 '경..
빌드한 프로그램을 실행하려 하는데 ".dll이(가) 없어 코드 실행을 진행할 수 없습니다. 프로그램을 다시 설치하면 이 문제가 해결될 수 있습니다." 메시지가 발생한다면 이는 해당 바이너리가 사용하는 dll을 찾지 못해 발생하는 문제이다. 위와 같은 오류 메시지가 발생하였을 때 다음과 같은 방법으로 해결할 수 있다. C:\Windows\SysWow64 폴더에 해당 dll을 복사해 준다. 실행 파일(exe)가 있는 폴더에 해당 dll을 복사해 준다.
앞에서 포스팅한 "net/http" 패키지로 http 서버 구현 후 Get/Post 요청을 구분하여 처리하는 예제이다. 예제 - 서버 // main.go package main import ( "fmt" "io/ioutil" "net/http" ) func handler(rw http.ResponseWriter, req *http.Request) { fmt.Println("Method : ", req.Method) fmt.Println("URL : ", req.URL) fmt.Println("Header : ", req.Header) b, _ := ioutil.ReadAll(req.Body) defer req.Body.Close() fmt.Println("Body : ", string(b)) switch..
배열을 매개변수로 전달할때 포인터 변수를 사용하여 (시작)주소값을 전달하게 되는데 이 때 우리는 배열의 크기를 같이 전달해야 한다. 원래 배열의 크기는 sizeof()함수로 구할 수 있으나 매개변수로 전달될 때 포인터 변수로 받기 때문에 이를 sizeof() 함수로 처리 할 시 포인터 변수의 크기가 구해지기 때문이다. 즉 매개변수로 배열을 전달할 때는 꼭 크기도 같이 전달하자 ! void func( int* p, int nSize ); void main() { int n[100] = {0, }; printf( "%d\n", sizeof(n) ); // 400 : 4(int) * 100 func(n, 100); // 배열 n 과 사이즈 전달} void func( int* p, int nSize ) // i..
golang은 "net/http" 패키지를 통해 간편하게 http 서버를 만들 수 있다. 다음은 서버를 구현하는데 필요한 함수이다. func ListenAndServe(addr string, handler Handler) error : HTTP 연결을 받고, 요청에 응답 func HandleFunc(pattern string, handler func(ResponseWriter, *Request)) : 경로별로 요청을 처리할 핸들러 함수 등록 사용예제 // main.go package main import ( "net/http" ) func main() { http.HandleFunc("/hello", func(res http.ResponseWriter, req *http.Request) { res.Wri..
golang에서 "net" 패키지에서 TCP 프로토콜을 제공한다. 간단히 TCP 프로토콜 에코서버와 클라이언트를 만들어 보겠다. 서버 예제 // main.go package main import ( "fmt" "io" "net" ) func handler(conn net.Conn) { recv := make([]byte, 4096) for { n, err := conn.Read(recv) if err != nil { if err == io.EOF { fmt.Println("connection is closed from client : ", conn.RemoteAddr().String()) } fmt.Println("Failed to receive data : ", err) break } if n > 0 ..