Sangjun 개발 블로그
    • 카테고리
    • Algorithm
    • apple
    • AWS
    • boto3
    • cron
    • crontab
    • DB
    • Django
    • Docker
    • facebook
    • fcm
    • Go
    • google
    • Gopacket
    • Gui
    • Guide
    • kakao
    • Learning
    • LeetCode
    • Linux
    • logging
    • mariaDB
    • Models
    • MSSQL
    • naver
    • NFS
    • Numpy
    • oauth
    • Opencv
    • PostgreDB
    • pytest
    • Python
    • Sniff
    • Swagger
    • Windows
    • Windows10
    • WSL
    Hero Image
    [golang] gui 라이브러리 fyne

    1. 개요 Fyne는 사용하기 쉬운 UI 툴킷과 Go로 작성된 앱 API로 데스크탑 및 모바일 환경을 지원합니다. fyne git 1.1. 사전 설정 Fyne 사용시 필요한 개발환경 Go 버전 1.14 이상 C 컴파일러 및 시스템 개발 도구 tdm-gcc download 테스트 시스템 환경 분류 버전 OS Windows 10 go 1.17 fyne 2.1.2 1.2. 라이브러리 설치 > go get fyne.io/fyne/v2 2. 간단한 사용법 2.1. 예제 코드 package main import ( "fyne.io/fyne/v2/app" "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/widget" ) func main() { a := app.

    February 21, 2022 Read
    Hero Image
    golang Socket, TimeRotateFile logging

    1. 개요 golang 기본 로깅에서는 지원하지 않는 TimeRotate 로깅은 별도의 외부 라이브러리를 사용한다. go get github.com/lestrrat-go/file-rotatelogs 이후에 소켓 통신을 같이 사용한 logging 프로그램까지 구현한다. 2. TimeRotateFile logging 해당 file-rotatelogs 라이브러리는 단일 파일 작성만 지원한다. 멀티 파일 작성은 다른 라이브러리를 사용해야 한다. 2.1. OPTIONS Patterm 로그저장 경로 및 파일이름 패턴지정(required) 예시: rotatelogs.New("log/%Y-%m-%d.log") Clock (default: rotatelogs.Local) 시간대 시스템 로컬 시간으로 설정 예시: rotatelogs.WithClock(rotatelogs.Local) RotationTime (default: 86400 sec) 로테이션 반복 주기 지정한 시간간격으로 파일 로테이션 동일파일 존재시 로그 추가작성으로 동작 time.

    January 7, 2022 Read
    Hero Image
    golang db nullable 데이터 처리

    golang에서는 타입별로 정해진 zero value가 있는데, DB colume 타입의 zero value와 맞지 않을 때 다음과 에러가 발생한다. panic: sql: Scan error on column index : converting NULL to string is unsupported 각 타입별 zero value 문자열 타입 string : "" 부울린 타입 boolean : false 정수형, Float등 숫자형 타입 : 0 기타 타입 : nil 1. 사전환경 아래의 글을 진행했다는 가정에서 설명한다. golang postgreDB CURD 2. 에러가 발생한 코드 기존에 작성한 코드에서 Update 함수의 name 부분을 nil 값으로 수정하여 실행한다.

    December 23, 2021 Read
    Hero Image
    golang 도커 이미지 만들기

    간단한 golang 웹 프로그램을 Docker 이미지로 실행방법으로 golang 코드보다는 docker 설정 위주로 설명한다. 1. 예제 코드 사용예시는 아래의 주소를 git clone 받는다. > git clone https://github.com/olliefr/docker-gs-ping docker-gs-ping 2. 예제 프로그램 실행 git clone 받은 프로젝트 경로에서 터미널을 실행하고 진행한다. > go run main.go 설정한 웹주소로 접속 요청시 간단한 response 메세지를 응답한다. > curl localhost:8080 Hello, Docker! <3 3. Dockerfile dockerfile 명칭은 Dockerfile.<something> 또는 <something>.Dockerfile 형식으로 생성한다. 도커 명령어 FROM : 기본 이미지 지정 WORKDIR : 작업 디렉터리 지정 COPY : 소스코드 복사 https://docs.

    December 22, 2021 Read
    Hero Image
    golang cron 스케줄링 라이브러리 사용법

    go언어에서 cron 처럼 동작하는 스케줄링 외부 라이브러리 사용법 cron 함수는 지정한 주기마다 동작시키는 기능으로 별도의 비동기함수로 실행된다. main 함수가 종료되면 go 프로세스가 종료되어 비동기 함수도 종료된다. cron 기능을 사용할려면 main 함수가 종료되지 않도록 적절한 조치를 해야한다. 1. 라이브러리 설치 go version : 1.17 > go get github.com/robfig/cron/v3@v3.0.0 2. 예제코드 select : 복수 채널이 대기하면서 준비된 (데이터를 전송받은) 채널을 실행하는 기능이다. case 채널들이 준비되지 않으면 계속 대기하게 되고, 가장 먼저 도착한 채널의 case를 실행한다.

    December 21, 2021 Read
    Hero Image
    golang fcm(firebase cloud messaging) push 메세지 사용법

    Firebase Cloud Messaging(FCM)은 firebase에서 무료로 메시지 전송할 수 있는 교차 플랫폼 메시징 솔루션이다. 최대 4,000바이트의 페이로드를 클라이언트 앱에 전송할 수 있다. 아래의 예제는 Go언어 기반의 백엔드 서버 예시이며 fcm token이 이미 발급받았다는 가정하에 진행된다. 1. 라이브러리 설치 > go get firebase.google.com/go/v4 > go get google.golang.org/api 2. Firebase APP 초기화 사용자 인증 정보 제공의 안내에 따라 서비스 계정의 비공개 키 파일을 다운받는다. 해당 파일에는 다음과 같은 정보가 있다. 파일명은 serviceAccountKey.json라고 가정한다.

    December 18, 2021 Read
    Hero Image
    golang postgreDB CURD

    golang에서 postgre데이터 베이스의 SQL 생성, 수정, 읽기, 삭제 기능의 간단한 사용법이다. postgreDB가 이미 설치되어 있다는 전제하에 진행한다. 로컬 설정 : PostgreDB 설치 도커 이미지 : PostgreDB, pgadmin4 도커 설치 방법 1. 라이브러리 설치 go version : 1.17 > go get github.com/lib/pq 2. 테이블 구조 postgreDB에 아래와 같은 구조의 User 테이블이 선언된 상태로 진행한다. CREATE TABLE user ( id SERIAL PRIMARY KEY, name VARCHAR(20), age INT ); 3. DB 설정 초기화 package main import ( "database/sql" "fmt" _ "github.

    December 16, 2021 Read
    Hero Image
    golang learn-go-with-tests GitBook 정리

    사이트 주소 원본 링크 한글 번역 링크 5. struct, method & interface struct 구조체의 변수 첫글자는 대문자여야한다. (외부에서 사용 가능하도록) type Rectangle struct { Width float64 Height float64 } 구조체 필드이름을 선택적으로 지정할 수 있다. {shape: Rectangle{Width: 12, Height: 6}, want: 72.0}, {shape: Circle{Radius: 10}, want: 314.1592653589793}, methods func (receiverName ReceiverType) MethodName(args) r Rectangle 수신자 변수를 유형의 첫 번째 문자로 지정하는 것이 Go의 관례이다. func (r Rectangle) Area() float64 { return 0 } interface Go에서 인터페이스 자료형은 암시적 이다.

    August 2, 2021 Read
    Hero Image
    golang gopacket 라이브러리를 이용한 통신

    gopacket : 이더넷 어댑터 설명(dev.Description)명칭으로 ethernet 통신하는 라이브러리이다. 예제 코드 package main import ( "fmt" "log" "net" "strings" "time" "github.com/google/gopacket" "github.com/google/gopacket/layers" "github.com/google/gopacket/pcap" ) var ( device string = "Realtek PCIe GbE Family Controller" eth_name string currentIP string snapshot_len int32 = 1522 promiscuous bool = false err error timeout time.Duration = 30 * time.Second handle *pcap.Handle buffer gopacket.SerializeBuffer options gopacket.SerializeOptions ) func main() { devices, err := pcap.FindAllDevs() if err !

    July 29, 2021 Read
    Hero Image
    Go 언어 문법 (Golang grammar)

    1. 디렉토리 관련 함수 2021년 3월 3일 수요일 오전 8:55:31 1.1. 단일 디렉토리 생성 os.Mkdir(path, permission) err := os.Mkdir("tmp", 0755) if err != nil { log.Fatal(err) } 1.2. 다중 디렉토리 생성 os.MkdirAll(path, permission) : err := os.MkdirAll("tmp/new", 0755) if err != nil { log.Fatal(err) } 1.3. 현재 작업 디렉토리 얻기 os.Getwd() path, err := os.Getwd() if err != nil { log.Println(err) } fmt.Println(path) 1.4. 디렉토리 존재유무 확인 os.Stat(paht) if _, err := os.

    March 2, 2021 Read
    바로가기
    • About
    • Recent Posts
    Contact me:
    • sangjuncha.dev@gmail.com

    Toha Theme Logo Toha
    Copyright 2020. SangjunCha all rights reserved.
    Powered by Hugo Logo