Language
-
CURL 활용Language/C & C++ 2023. 2. 17. 20:35
Windows 와 Linux 에서 활용할 수 있는 크로스플랫폼 HTTP Library 중 하나인 CURL의 사용법에 대하여 안내합니다. Windows 환경에서는 multi_perform 진행시 로직에 따라 메모리에 문제가 발생되는 것으로 확인되어 따로 안내하지않습니다. 해당 라이브러리는 HTTP 의 기본적인 Header, Body, Action 에 대한 지정히 가능하며 각기 콜백을 통하여 진행률 표기, 디버그 로깅, Response 데이터 확인이 가능토록 지원하고 있습니다. CURL Lib 을 별도로 Wrapping 하여 보다 편하게 활용토록 하는 오픈소스들도 존재합니다. 아래는 Header 지정, Body 지정, 각 설정에 대하여 활용하는 방안에 대하여 가이드하는 코드입니다. CURL* CURL_ = ..
-
WebSockify jsLanguage/Javascript 2023. 2. 17. 20:18
WebSocket 와 TCP 간 미들웨어로써 동작하며, 각 프로토콜간 Conversion 을 통해 전달하는 역활을 합니다. nodejs 를 기준으로 작성된 스크립트로써 바이너리화도 가능합니다. 해당 소스를 기준으로 Websocket이나 TCP Socket 단의 동작을 다른 프로토콜로 대체하여도 활용가능할 것으로 보입니다. 로그는 파일로그를 남기게끔 되어있으며, 필요에 따라 파라미터를 환경변수에서 읽어오는 형태의 스크립트로 변경가능합니다. 일반적으로는 연동단에서 필요에 따른 코드를 작성하는것이 맞으나, 프로젝트 진행중 긴급하게 변경해야하는 경우나 고객사의 강력한 요구로 인한 조치시 단기간에 활용가능할것으로 확인됩니다. 아래는 해당 스크립트의 Websocket 메시지 처리 및 연결 종료, 에러처리에 대한 코..
-
Kafka Golang 예제Language/Golang 2023. 2. 12. 14:38
Example For Sarama call_topic 이라는 이름을 가진 Topic 에 Partition 0 번에 Event를 전달하는 예시 // ProducerTest package main import ( "fmt" "time" "github.com/Shopify/sarama" ) //Reference : https://pkg.go.dev/github.com/shopify/sarama func SyncWriter(brokerList []string) sarama.SyncProducer { // For the data collector, we are looking for strong consistency semantics. // Because we don't change the flush setting..
-
Golang에서 Json 사용예시Language/Golang 2023. 2. 7. 21:28
Json Parsing Go 에서는 Marchaling 된 Json 은 Byte Arrary 로 사용되며, UnMarshaling 의 경우 구조체나 map 과 같은 데이터로 치환하여 받을 수 있습니다. map 의 경우 Json Object를 의미하며, Array 의 경우 Json Array 로 표기됩니다. []byte -> map Json을 map 으로 변환합니다. 생성한 result 가 Json 형식과 맞지 않는 경우 실패처리 됩니다. package main import "fmt" import "encoding/json" func main() { b := []byte("{\"a\":10,\"b\":\"test\"}") result := make(map[string]interface{}) err := j..
-
CGO ( Golang With C++ ) 케이스별 설명 및 예시Language/Golang 2023. 2. 7. 21:27
C/C++ 과의 연동 (CGO) Go 에서 C/C++ 관련 기능을 호출할 때는 기본적으로 "C." 로 시작하게 됩니다. Go 에서 C/C++ Header 사용시 Header의 주의점 구조체의 Pack 사이즈는 8byte 일것 만약 8byte 가 아닌 경우, Go 컴파일러에서 구조체를 잘못읽어들여서 일부 필드를 찾지못하거나, 데이터가 깨지는 현상 발생할 수 있습니다. 8byte 가 아니어도 우연히 규격에 맞으면 발생하지 않을 수 있습니다. 구조체 내에 함수가 정의되어 있지 않을것 //if Go Include This Struct Error Ocurred. typedef struct _TEST { int nTemp; char sTemp; void InitStruct() { memset(this, 0x00, ..
-
문법 및 사용법 예시Language/Golang 2023. 2. 7. 21:23
코드의 기본 형식 세미콜론(;) 이 존재하지 않습니다. 키워드 사용시 조건에 대한 소괄호가 존재하지 않습니다. 함수정의시 중괄호는 파라미터의 소괄호 옆에 있어야 합니다. 각 구문별로 들여쓰기가 알맞게 삽입되어야 합니다. 소스코드파일은 유니코드(utf-8) 이어야 합니다. 주석은 C/C++ 혹은 Java 와 동일하지만 CGO를 사용할 경우 다른 사용법 또한 존재합니다. 시작 프로그램 함수는 package 가 main 이어야 하며, 함수명 또한 main 이어야 합니다. 변수를 할당 혹은 선언 후 사용하지 않을 경우 "_" 로 처리하거나 코드상에서 삭제되어야 합니다. 이와 같은 기본 형식이 지켜지지 않았을 경우 빌드에 실패하며 기본 사용 예시는 다음과 같습니다. package main import "fmt" ..
-
자료형 및 키워드Language/Golang 2023. 2. 7. 21:20
Go 자료형과 키워드 자료형 자료형 저장범위 설명 uint8 0 ~ 255 부호 없는 8비트 정수형 uint16 0 ~ 65,535 부호 없는 16비트 정수형 unit32 0 ~ 4,294,967,295 부호 없는 32비트 정수형 uint64 0 ~ 18,446,744,073,709,551,615 부호 없는 64비트 정수형 uint 32비트 시스템에서는 uint32, 64비트 시스템에서는 uint64 int8 -128 ~ 127 부호 있는 8비트 정수형 int16 -32,768 ~ 32,767 부호 있는 16비트 정수형 int32 -2,147,483,648 ~ 2,147,483,647 부호 있는 32비트 정수형 int64 -9,223,372,036,854,775,808 ~ 9,223,372,036,854..
-
Golang 설치 및 IDELanguage/Golang 2023. 2. 7. 21:15
Go 환경구성 Go 기본패키지 및 컴파일러를 설치합니다. 환경에 따라 yum 혹은 apt-get 을 활용하여 설치도 가능하지만, 별도 다운로드를 통한 환경구성을 가이드 하며 Linux 환경을 기준으로 안내합니다. 다운로드 아래 링크에서 환경에 맞는 최신 패키지를 다운로드 합니다. curl 혹은 wget 을 통한 명령을 통해 내려받을 수 있습니다. https://golang.org/dl/ 설치 압축해제 tar -C /usr/local -xzf [다운로드받은 파일명] 경로 설정 Go 를 설치해서 활용하고자 하는 계정에 .bash_profile 혹은 공통으로 쓰고자 하면 /etc/profile.d 내의 파일에 아래내용을 추가합니다. export PATH=$PATH:/usr/local/go/bin 확인 계정을 ..