카테고리 :: GO언어(Golang)
전체 75개
Go 윈도 프로그래밍시 실행파일에 리소스정보 적용
우선 Walk를 쓰던 뭘 하던 윈도용 프로그램을 만드는 경우에는 .. 프로그램의 아이콘을 지정하고 싶기도 하고 .. 프로그램의 기본 아이콘과 보통 윈도 프로그래밍에서 말하는 메니페스트(Manifest)의 적용은 rsrc 라는 패키지를 통해 합니다. GitHub - …
폴더 복사하기
Go에서 파일의 복사도 그렇지만 폴더를 복사하는건 .. 일일이 폴더명 따져서 생성을 시키고 파일도 따로따로 복사해대고 하는걸 반복해야 하는 작업입니다. 특정폴더를 다른 위치로 복사하고 싶을때 사용하시면 됩니다. Go package main import ( "fmt" …
Go언어에서 ShellExcute, ShellExcuteEx 함수 사용하기
Go언어에 exec 패키지를 통해 exec.Command().Run 이나 Start등으로 외부 명령을 실행할 수 있으나 이 함수들의 단점은 CreateProcess 기반인데다 부가적인 옵션이 거의 존재하지 않습니다. 예를들면 Run 함수의 경우에는 실행시킨 명령이 종료되기 전까진 대기 …
현재 윈도가 32비트인지 64비트 인지 확인
Go언어는 개발하는 컴퓨터의 OS나 아키택처 상관 없이 다양한 플랫폼을 대상으로 실행파일 빌드가 가능합니다만. runtime 패키지의 GOARCH나 GOOS 등은 컴파일시에 해당 바이너리가 타겟으로 잡은 정보가 나올뿐 실제 현 시스템에 대한 정보를 대변하진 않습니다. 예를들어 64비트 …
특정 경로의 총 파일 사이즈, 폴더 갯수, 파일 갯수 얻기
지정한 경로내의 총 파일 크기의 합과 폴더, 파일의 갯수를 리턴해주는 함수입니다. 관리자 대시보드등에서 특정 경로의 사용용량등을 표시하는데 쓰시면 되겠습니다. Go / * dirUsage / func dirUsage(currentPath string, info os.FileInfo, …
Go언어로 윈도 서비스 어플리케이션 만들기
최근에는 MS의 Visual Studio도 기본적으로 무료로 사용가능하지만.. 무료버전으로는 서비스 어플리케이션은 개발할 수가 없습니다. ( 물론 Professional 버전 등에서 관련 리소스들을 복사해와서 꼼수로 개발환경을 구성가능하기도 하지만 ㅎㅎ ) 여튼 .. Go로도 윈도 서 …
파일복사 함수
기본적으로 파일을 이동시키거나 삭제하는 함수는 제공되고 있지만 복사의 경우 따로 구현을 해야 합니다. Go / * 파일 복사 함수 / func copyFile(srcFile string, destFile string) error { // 기존 파일이 있으면 삭제 if , err := …
프로그램 실행경로를 실행파일 위치로 고정
간혹 프로그램을 어디서 실행했느냐 따라서 .. 상대경로로 지정된 코드들이 파일을 못찾는 경우가 생깁니다. 이럴경우 실행파일의 위치로 실행경로를 조정해주면 됩니다. Go if err != nil { return } exPath := filepath.Dir(ex) currDir, …
올바른 이메일 주소, 알파벳, 숫자 체크(Regexp)
Goa-zA-Z0-9?(?:\.a-zA-Z0-9?)$") return er.MatchString(email) } /** 알파뱃 , 숫자 체크 / func isAlphaNumString(str string) bool { match, _ := …
간단한 파일 다운로드(HTTP GET)
프로그래밍을 하다보면 HTTP GET방식으로 파일을 다운받아 저장해야할 일이 종종 있습니다. 그런떄 사용가능한 GET 방식의 간단한 파일 다운로드 예제입니다. Go func downloadFile(filepath string, url string) error { // Create …
윈도 API를 이용한 wav 사운드 파일 재생
간단히 소리로 무언가를 알려야 할경우에 유용한 코드입니다. 구글링 중에 얻은 코드인지 깃헙 돌아다니다 발췌한 코드인지 기억이 가물가물해서 출처가 애매하네요 ;; Go package main import ( "syscall" "unsafe" …
현재 날짜, 시간 구하기
Go / * 현재 날짜 및 시간 문자열로 얻기 / func currDateTimeStr() string { t := time.Now() return fmt.Sprintf("%04d%02d%02d_%02d%02d%02d", t.Year(), t.Month(), …
CP949 <-> UTF-8 변환
Go언어는 기본적으로 UTF-8을 인코딩으로 사용합니다만. 윈도의 경우 기본적으로 CP949 또는 UTF-16입니다. 한글 윈도를 설치한 경우에는 많은 경우에 CP949가 기본 인코딩인 경우가 대부분이라 exec 패키지 등으로 콘솔 명령어를 실행하고 결과를 받아서 사용하는 등의 경우에 …
파일, 폴더 존재여부 체크
Go / * isExistFile / func isExistFile(fname string) bool { if _, err := os.Stat(fname); os.IsNotExist(err) { return false } return true } / * …
MS윈도 파일또는 폴더를 휴지통으로 버리기
윈도에서 프로그래밍을 하다보면 파일을 바로 삭제하는게 아닌 휴지통으로 이동시켜야 하는 경우가 생깁니다. os.Remove 같은 메소드를 이용하여 파일자체를 영구 삭제하는거야 매우 편하지만 .. 사용자를 대상으로 배포할 프로그램을 만드는 경우에는 가능하면 사용자의 실수도 감안하여 바로 …
TCP/IP 안쓰는 포트 얻기 - freeport
서버 프로그램을 만들다 보면 가변포트를 사용해야 할 경우가 있습니다. 이런경우 시스템에 사용하고 있지 않은 포트를 얻어야 할때가 있는데요, 그런경우 사용가능한 패키지 입니다. GitHub - phayes/freeport: Get a free and open tcp port that …
JSON to GO
Go로 JSON 데이터를 다루다 보면 .. map 을 이용해 Unmarshal 등을 해도 상관은 없지만. 이래저래 불편합니다. 그래서 보통은 구조체를 생성해서 처리를 합니다. 이때 JSON 구조가 단순하다면야 직접 struct 를 잡아서 작성하면 되지만 복잡한 구조의 JSON 데이터의 …
XML to GO
JSON에 비해 XML의 경우 좀더 파싱이 복잡한 편이긴 합니다만. Go에서는 XML의 Marshal, Unmarshal도 지원을 하고 있습니다. 앞서 작성한 JSON to GO와 마찬가지로 XML의 경우도 구조체를 통해 처리하는 것이 여러모로 관리가 편합니다. xmltogo 이 사이 …
파일 읽기, 파일을 한줄씩 읽기
Go if err != nil { log.Fatal(err) } fmt.Println( string(rbuf) )
윈도 API를 이용한 중복실행방지 ( feat. mutex )
윈도용 프로그램을 Go로 개발하다보면 중복실행을 원치 않을 경우가 있습니다. 이런때 윈도 API 의 뮤텍스 관련 함수를 이용하면 같은 프로그램의 중복실행을 방지할 수 있습니다. Bash go get github.com/rodolfoag/gow32 위 패키지 설치가 필요합니다.

