일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- C
- 리뷰
- 책
- http
- install
- Linux
- Sync
- mutex
- JavaScript
- range
- windows
- package
- API
- Close
- json
- write
- File
- go언어
- FOR
- Python
- Callback
- bitcoin
- window
- tcp
- go
- GO 언어
- Golang
- 영화
- channel
- c++
- Today
- Total
목록전체 글 (203)
Code Habit
윈도우 위에 마우스가 올라가 있는 상태를 보통 'hover'로 정의한다. hover의 사전적 의미로는 '맴돌다'로 윈도우나 컨트롤 위에 마우스가 위치해 있는 상태를 말한다. 보통 이 상태를 체크하고 싶을 때 'TrackMouseEvent'를 이용한다. 하지만 이런식으로 처리하면 윈도우 안에 자식 컨트롤이 있을 경우 원하는데로 결과가 안나올 수 가 있다. 왜냐하면 패널 안에 있는 자식 컨트롤 위로 마우스 포인터가 이동할때 부모 윈도우에 'WM_MOUSELEAVE' 메시지가 호출되어 마우스가 윈도우 영역을 벗어났다고 인식할 수 있기 때문이다. 그래서 여러개의 자식 컨트롤들을 가지고 있는 윈도우의 Hover상태를 체크 하기 위해서는 다른 식의 접근이 필요하다. 필자는 Timer를 활용해 보겠다. 다음은 WTL..
postgresql 에서 DB 및 Table 용량을 확인하는 간단한 쿼리 몇가지 정리해 보겠다. SELECT pg_size_pretty(pg_database_size('mydb')) : mydb 데이터베이스 용량 확인 SELECT pg_size_pretty(pg_relation_size('mytable')) : mytable 테이블 사이즈 계산 SELECT pg_size_pretty(pg_index_size('mytable')) : mytable의 인덱스 크기를 계산 SELECT pg_size_pretty(pg_total_relation_size('mytable')) : mytable 테이블 사이즈 체크시 연관된 인덱스 사이즈 까지 합산 참고로 pg_size_pretty는 바이트 수를 사람이 읽을 수 있..
"container/list" 패키지를 사용하면 go에서 연결리스트를 사용할 수 있다. 다음은 "container/list"에서 연결리스트를 사용하기 위해 제공하는 함수이다. func New() *List: 연결 리스트 생성 func (I *List) PushBack(v interface{}) *Element : 맨 뒤에 노드 추가 func (I *List) PushFront(v interface{}) *Element : 맨 앞에 노드 추가 func (I *List) PushBackList(other* List) : 맨 뒤에 다른 리스트를 붙임 func (I *List) PushFrontList(other* List) : 맨 앞에 다른 리스트를 붙임 func (I *List) InsertAfter(v i..
마샬링 논리적 구조를 로우 바이트로 변경하는 것을 마샬링 or 인코딩이라 한다. 즉 Go 자료형을 바이트 슬라이스로 변경하는 것이다. 언마샬링 반대로 로우 바이트를 논리적 자료 구조로 변경하는 것을 언마샬링 or 디코딩이라 한다. encoding/json 패키지의 다음 함수들을 통해 go 자료형을 Json데이터로 변환하거나 반대로 Json데이터를 go 자료형으로 변환할 수 있다. func Marshal(v interface{})([]byte, error): Go 언어 자료형 -> JSON 데이터 변환 func MarshalIndent(v interface{}, prefix, indent string)([]byte, error): Go 언어 자료형 -> JSON 데이터 변환 & 들여쓰기 func Unmar..
time 패키지는 현재 시간을 구하거나, 일정한 시간을 측정하는 등 시간 관련 기능을 다룰 때 사용한다. - 현재 시간 구하기 & 포맷 변경 // main.go package main import ( "fmt" "time" ) func main() { // 현재 시간 now := time.Now() fmt.Println(now) // 2020-06--19 14:45:56.1516017 +0900 KST m=+0.006982201 // yyyy-mm-dd hh:mm:ss 형식으로 포맷 custom := now.Format("2006-01-02 15:04:05") fmt.Println(custom) // 2020-06-19 14:45:56 custom = now.Format("2006-01-02") fmt...
golang에서 os 패키지를 사용해 파일 Read/Write를 편하게 할 수 있다. 다음은 사용되는 함수이다. func OpenFile(name string, flag int, perm FileMode)(file *File, err error) : 파일 플래그, 파일 모드를 지정하여 파일 열기 func (f* File) Close() error : 파일을 닫음 func (f* File) Write(b []byte) (n int, err error) : 파일에 값을 씀. 쓴 데이터의 길이와 에러 값 리턴 func (f* File) Read() (b []byte)(n int, err error) : 파일의 내용을 읽음. byte형식으로 기록되며 읽은 Count와 에러 값 리턴 사용 예제 // main.go..
golang에서는 다양한 문자열 관련 함수들을 제공한다. 그 중 문자열 파싱할 때 자주 사용하는 몇 가지 함수들만 알아보겠다. func Contains(s, substr string) bool : s 안에 substr 이 포함되어 있는지 검사 -> true : 포함, false : 불포함 func ContainsAny(s, chars string) bool : s 안에 chars의 문자가 포함되어 있는지 검사 -> true : 포함, false : 불포함 func Count(s, substr string) int : s안에 substr문자열이 몇번 나오는지 검사 -> 개수 리턴 func Index(s, substr string) int : s안에 substr 의 위치를 구함(첫글자). 리턴값이 -1이면 ..
데이터베이스에서 일련번호를 생성하기 위해 사용되는 것으로 시퀀스를 생성하면 기본키와 같이 순차적으로 증가하는 컬럼을 자동적으로 생성 할 수 있다. 시퀀스는 테이블과는 독립적으로 저장되고 생성되므로 하나의 시퀀스를 여러 테이블에서 쓸 수 있다. - 시퀀스 생성 CREATE SEQUENCE behavior_id_seq MINVALUE 1 MAXVALUE 9223372036854775807 INCREMENT BY 1 START WITH 1 CACHE 20 NOCYCLE; MINVALUE : 시퀀스가 가질 수 있는 최소 값 . MAXVALUE : 시퀀스가 가질 수 있는 최대 값. INCREMENT BY : 증가 값 설정. START WITH : 시작 값. CACHE n | NOCACHE : 메모리상의 시퀀스 값..