일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 터미널
- 건프라
- go언어
- emacs
- 이맥스
- Reflection
- 패널라인
- Go 언어
- 양자역학
- 스플릿키보드
- 고양이책
- 음각몰드
- Golang
- 엘리스배열
- 리플렉션
- md600alpha
- 다이어트
- 바로코
- driverless
- mopria
- 벤치마크
- Go
- nil
- 프라파손
- mf642cdw
- mistel md600 alpha
- magicsculpt
- 체리적축저소음
- Griffiths
- 키보드
- Today
- Total
목록분류 전체보기 (50)
Meandering Trajectory
Go의 인터페이스 타입 변수는 단순한 포인터가 아니다. 예를 들어 인터페이스 I를 구현한 구조체 S가 있다고 할 때, var s *Svar i Ii = s 위 코드에서 s는 초기화를 하지 않았으므로 nil이지만 이변수가 대입된 i는 nil이 아니다. 그 이유는 인터페이스가 nil이 되기 위해서는 내부적으로 타입에 해당하는 필드와 값에 해당하는 필드가 모두 nil이어야 하기 때문이다. 다시 말해서 위 코드에서 i가 nil이 아닌 이유는 값에 해당하는 필드는 nil이지만 타입에 해당하는 필드가 nil이 아니기 때문이다. 더 자세한 설명은 다음 링크 참고:"nil" Interfaces and "nil" Interfaces Values
오랫동안 오디오테크니카의 ATH-M50을 사용해왔다. 헤드밴드가 벗겨져 지져분하다는 것만 빼면 여전히 좋은 소리를 들려주고 있고 임피던스가 낮아 아무 기기에나 연결해도 음악듣는데 문제가 없어서 좋다.그런데 최근 들어 다른 성향의 헤드폰, 특히 오픈형 헤드폰으로 음악을 들어보고 싶다는 생각이 자꾸 들어 벼르다가 며칠전 베이터다이나믹의 DT990을 주문했다. 이 제품은 32, 250, 600옴 이렇게 세가지 임피던스를 갖는 모델이 나오는데 이 중 250옴 모델을 구입했다.물론 외국 포럼과 유튜브 리뷰 영상 등을 통해 확인해보고 산 것이기는 하지만, 헤드폰을 앰프에 물려 들어보기 전까지 불안했던게 바로 헤드폰의 임피던스였다. 내가 가진 헤드폰 앰프는 Fiio 사의 Q1이라는 모델인데 이 제품의 권장 헤드폰 임..
난 리눅스 데스탑 환경으로 KDE를 사용한다. KDE의 기본 터미널 에뮬레이터는 콘솔(konsole)이다. 콘솔 역시 현대적인(?) 터미널 에뮬레이터답게 탭기능이 있다.작업을 하다보면 탭을 여러개 띄우게 되는 경우가 있는데 탭 사이를 클릭을 해서 옮겨다니는 일은 여간 귀찮은게 아니다. 그래서 나는 Alt와 함께 숫자를 누르면 특정 탭으로 바로 이동할 수 있도록 단축키를 지정해서 사용한다.단축키를 지정하려면 다음과 같은 경로를 통해 콘솔의 단축키 설정창을 연다.상단 매뉴의 설정 --> 단축키 설정열린 창에서 위 스크린 샷에 보이는 것처럼 "탭 X(으)로 바꾸기" 동작을 찾아 단축키를 설정하면 원하는 탭으로 한번에 이동할 수 있다. Alt+1부터 Alt+0까지 10개의 단축키를 지정해 둔 것을 볼 수 있다...
변수 선언 Go의 기본적인 변수 선언 방법은 다음과 같다. var v int Go에서는 변수를 선언할 떄 초기화 하지 않으면 각 타입별 기본값으로 초기화된다. int와 같은 숫자를 표현하는 타입은 0이 기본값이다. 따라서 위와 같이 선언을하고 나면 v의 값은 0이 된다. 원하는 값으로 변수를 초기화하고 싶다면 이렇게 하면 된다. var v int = 7 또는 var v = int(7) 이렇게 해도 된다. 단축형 선언 그리고 Go에는 변수를 선언하는 다른 방법이 하나 있으니 바로 단축형 변수 선언이다. 다음과 같이 ":="를 이용해서 단축형 선언을 할 수 있다. v := 7 타이핑을 적게 한다는 것은 반길 일이다. 단축형 선언에는 독특한 특성이 하나 있는데 바로 변수 재선언이 가능하다는 것이다. 아래 코드..
에러타입(error)의 정체 Go는 예외처리를 함수의 반환값에 기반하여 처리한다. 하지만 C와 달리 에러의 타입을 표준화 했다. 에러타입은 error라는 이름을 가지고 있고 다음과 같이 정의되어 있다. type error interface { Error() string } Error() 메서드 한개를 가진 인터페이스다. 이 인터페이스를 구현한 어떤 타입이든 에러가 될 수 있다. 그냥 정수형도 사용자 정의 타입으로 만들면 에러로 사용 가능하고 멤버가 없는 구조체도 Error() 메서드만 구현하면 에러로 사용할 수 있다. // 정수를 사용자 정의 타입으로 정의 type intAsError int // Error() 메서드 구현 func (i intAsError) Error() string { return f..
Go에는 메모리에 오브젝트를 생성하는데 쓰이는 내장 함수가 2가지 있다. make와 new가 그것이다.newnew에 임의의 데이터 타입을 파라미터로 주고 호출하면 메모리에 해당 오브젝트를 생성한 뒤 오브젝트에 할당된 공간을 모두 0으로 초기화하고 그 포인터를 반환한다. 예를 들어type Point struct { x int32 y int32 } ptr := new(Point) // ptr의 타입은 *Point 이 코드에서 ptr.x와 ptr.y의 값은 0이 된다.부연하면 new는 내장함수로 builtin 패키지에 속하고 Go 언어 공식 매뉴얼에 나온 프로토타입을 보면 다음과 같다.func new(Type) *Type Type을 파라미터로 받아 *Type을 반환하게 되어 있다. 반환하는 값의 자료형이 포인..
고루틴과 채널은 Go의 대표적인 기능이다. 고루틴은 서로 다른 작업이 함께 진행될 수 있도록 해주고 채널은 고루틴들이 통신을 통해 협력할 수 있게 한다.select 문을 이용하면 여러 채널을 모니터링하다가 먼저 데이터가 도착한 채널의 데이터를 읽도록 할 수 있다. 이런 기능이 없다면 프로그래머는 각 채널별로 별도의 고루틴을 할당해야 한다. Go 스케쥴러의 특성상 지나치게 많은 고루틴을 사용하는 것은 부작용이 있을 수 있으므로 한개의 고루틴으로 여러 가지 일을 할 수 있다는 것은 여러 모로 좋은 일이다.이렇게 한개의 스레드를 이용해 여러 데이터 소스(이 경우 채널)를 한꺼번에 들여다 보고 있다가 먼저 도착한 데이터를 우선 읽어 처리하는 방식의 프로그래밍을 이벤트 기반 프로그래밍(event-driven pr..
C의 영향을 받은 언어들은 대다수가 부등호를>=이렇게 표시한다. 최근 구글의 빽을 등에 없고 뜨고 있는 Go 언어도 위 기호를 부등호로 사용한다. 한편 Go에는 채널에 대한 데이터 흐름의 방향을 표시하기 위해 빼기 문자와 부등호가 조합된 화살표 기호를 쓴다.ChanX
Go에는 슬라이스라는 확장 가능한 배열이 있다. 다음과 같이 선언한 뒤 사용한다.var s []int s = append(s, 1, 2, 3)다음과 같이 변수 선언만 한 경우var s []int슬라이스는 값은 무엇일까? 정답은 nil이다.그런데 이렇게 선언만 된 슬라이스의 동작은 기묘하다. 예를 들어 다음과 같이 선언만 된 슬라이스를 출력하면var s []intfmt.Println(s)결과는 이 아니라[] 즉 빈 문자열이다. 심지어 이 슬라이스의 길이도 구할 수가 있다.fmt.Println(len(s)결과는 0이다. 슬라이스 자체를 출력했을 때 빈 문자열이 출력된 것과 결이 맞다.따라서 출력된 결과값만 봐서는 어떤 슬라이스가 빈 슬라이스인지 선언만된 슬라이스인지 알 방도가 없다. 그렇다면 이 슬라이스는 ..
이번 포스팅에서는 tmux 쓰는데 도움이 될 간단한 팁을 공유하려고 한다. 리눅스나 맥 OS에서 터미널 작업을 할 때 사용하면 유용한 tmux라는 유틸리티가 있다. 터미널 혹은 원격 터미널 세션 한개에서 여러 터미널 세션을 열어 쓸 수 있게 해준다.위에 보이는 것처럼 한개의 터미널에 여러 터미널 세션을 연 뒤 각각 다른 프로그램을 띄우고 왔다갔다 하면서 사용할 수 있다. 작업 내용을 한화면에서 모두 볼 수 있기 때문에 원하는 터미널을 찾는 것이 상당히 수월해 진다. ssh을 통해 원격 터미널 세션에 접속할 경우 로그인 한번으로 여러 작업을 동시에 할 수 있기 때문에 특히나 감사하게 되는 프로그램이다. 기본적인 사용법이 여기 매우 잘 정리되어 있으니 구미가 당기는 사람은 읽어보시고...tmux의 기본 작업..