Sangjun 개발 블로그
    • 게시글
    • db
    • devops
      • docker
    • framework
      • django
    • os
      • linux
      • windows
    • programming
      • golang
      • python
    • algorithm
      • leetcode
    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
    [python] 테스트 프레임워크 pytest 사용법

    1. 개요 및 설정 pytest는 에러 없는 좋은 코드를 개발만들기 위한 목적으로 개발된 Python 테스트 프레임워크이다. pytest 특징 다른 testing 라이브러리에 비해 사용법이 간단하다. 테스트를 병렬로 실행할 수 있다. 특정 테스트를 스킵할 수 있다. 다양한 서드 파트 라이브러리들이 있다. 설치 pip install -U pytest 2. 기본 사용법 2.1. 기본 테스트 test_sample.py # 테스트 대상 기능 def inc(x): return x + 1 # 테스트 실행 함수 def test_answer1(): assert inc(3) == 5 def test_answer2(): assert inc(3) == 4 pytest 실행 결과

    February 8, 2022 Read
    Hero Image
    python boto3라이브러리 이용한 AWS s3 사용법

    1. 개요 및 설정 Boto3는 python 애플리케이션과 AWS 서비스를 연결시키기 위해 사용하는 python 라이브러리이다. boto3 라이브러리 설치 pip install boto3 라이브러리 import 및 AWS key 설정 conf.py import os AWS_ACCESS_KEY_ID = "ACCESS_KEY_ID" AWS_SECRET_ACCESS_KEY = "SECRET_ACCESS_KEY" AWS_REGION = "REGION" AWS_BUCKET_NAME = "BUCKET_NAME" 2. boto3 기본 사용법 2.1. client client Low-level 인터페이스 service description에 의해 만들어짐 botocore 수준제어 (botocore는 AWS CLI와 boto3의 기초가 되는 라이브러리) AWS API와 1:1 매핑 메소드가 스네이크 케이스로 정의되어 있음 import boto3 from conf import * client = boto3.

    January 10, 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
    python 날짜와 시간 계산

    python 날짜 및 시간 계산은 python 표준 라이브러리 datetime, 확장 라이브러리 dateutil 2개의 라이브러리가 있으며 단위의 차이가 있다. datetime : 마이크로초, 밀리초, 초, 분, 시, 일, 주 단위 사용 dateutil : 마이크로초, 초, 분, 시, 일, 주, 월, 년 단위 사용 1. datetime 라이브러리 날짜와 시간을 조작하는 클래스를 제공하는 python 표준 라이브러리 1.1 사용예시 now : 현재 날짜 및 시간 import datetime as dt now = dt.datetime.now() print(f"now = {now}") now = 2021-12-27 11:24:27.

    December 26, 2021 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 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
    python json 파일 읽기/쓰기 성능

    python 언어에서 대용량 json 읽기/쓰기 성능은 사용방법과 라이브러리에 따라서 성능 차이가 있다. 테스트 기준은 동일한 json 파일을 100번씩 반복 실행하였다. json 라이브러리의 파일 읽기/쓰기 모두 byte 모드가 상대적으로 빠르다. 라이브러리 버전 python : 3.8.10 ujson : 5.1.0 orjson : 3.6.5 1. json ========================= json_r = 0.045 sec json_w_dump = 0.186 sec json_w_dumps = 0.065 sec ========================= json_rb = 0.034 sec json_wb_dumps = 0.055 sec 1.1. read with open('github.json', "r") as json_file: data = json.

    December 6, 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
    • ««
    • «
    • 1
    • 2
    • »
    • »»
    바로가기
    • About
    • Recent Posts
    Contact me:
    • sangjuncha.dev@gmail.com

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