일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 터미널
- md600alpha
- 음각몰드
- 스플릿키보드
- 리플렉션
- 키보드
- 다이어트
- 바로코
- 고양이책
- Go
- driverless
- nil
- Reflection
- 벤치마크
- Golang
- mistel md600 alpha
- 양자역학
- mf642cdw
- Go 언어
- doom-emacs
- go언어
- mopria
- 패널라인
- emacs
- 이맥스
- eslip
- 건프라
- 엘리스배열
- Griffiths
- 체리적축저소음
- Today
- Total
목록컴퓨터 (32)
Meandering Trajectory
업무에 사용하는 프로그래밍 언어가 C에서 Go, Python 등으로 바뀌면서 근 몇년간 JetBrains의 IDE의 편리함에 빠져 이맥스를 거의 버리다시피 했다가 최근에 다시 이맥스를 쓰기 시작했다.전에는 그냥 바닐라 이맥스 상태에서 여기저기서 가져온 설정을 덕지덕지 붙여 사용했었는데, 다시 쓰기 시작하며서부터는 설정 관리를 위해 doom emacs를 사용 중이다. doom emacs는 vi 키맵 플러그인인 evil-mode를 기반으로 개발된 이맥스 활경 설정 관리자다. 원래부터 vi랑 Emacs를 모두 사용하던 터라 단축키에 대한 어려움은 별로 없었다. 그리고 평소 vi의 입력과 명령 모드를 구분하는 방식이 효율적이라는 생각을 가지고 있었기 때문에 키맵에 대한 반감도 딱히 없다.그런데 한가지 (매우) ..

난생 처음으로 복합기를 구매했다. 필수적으로 필요한 기능이무선랜복사자동 양면인쇄에어프린트이 4가지 였다. 복사랑 양면인쇄 지원되는 모델을 지정하고 보니 맨 위 2개 모델이 모두 에어프린트가 지원됐다. 그래서 인쇄 해상도가 높다고 표시되어 있는 캐논 제품을 구매했다.여기 있는 제품 중 두번째(Canon MF643Cdw).지난주 토요일에 자정에 가까운 시각에 주문을 했는데 일요일에 배송된다는 말이 쓰여 있길래 설마했는데 일요일에 배송됐다. 그렇게 까지 빨리 받을 필요까지는 없었는데... 뭔가 누군가의 주말을 빼앗았다는 기분이 든다.크게 고민 안 하고 구입했는데 무게도 무게고 크기가 너무 커서 너무 과한 걸 샀나 하는 생각이 들었다. 전원을 켜자 한참 롤러 도는 소리가 나서 처음에는 고장난 건가 했는데 그건 ..

최근 잦아진 왼쪽 손목 통증 때문에 한참을 고민하며 여러 키보드를 살펴봤다. 사실이런 형태의 키보드가 더 확실한 처방이 될 것 같았다. 그래서 구입을 고민했지만 저 키보드를 이용한다고 손목 통증이 확실히 사라질거라는 장담을 할 수 없는 상황에서 저 가격(가장 저렴한 모델이 542,000원)의, 정식 수입도 되지 않는 키보들 덜컥 사고 싶지는 않았다. 결국 포기하고 미스텔의 MD600 ALPHA를 구입해 회사에서 사용한지 한달이 다 되어가고 있다.그래서 오늘은 그동안 이 키보드를 사용하면서 있었던 일과 그 후기를 좀 적어보려한다.손목 통증이 키보드를 산 목적이 손목 통증 때문이었으니 이와 관련하여 한 시도와 현 상황에 대해 좀 정리를 해보려고 한다.시도 #1: 왼쪽 스페이스바를 컨트롤로 변경개선이 되기는 ..

가끔씩 찾아오던 팔목 통증의 주기가 얼마전부터 짧아졌다. '이러다 실업자 되지'하는 생각으로, 좀 찾아보니 정말 제대로 된 어고노믹 키보드들은 가격 후덜덜한 것은 둘째치고 정식수입이 안 되는 것들 뿐이었다.결국 정식 수입되는 제품 중에 적당해 보이는 제품을 찾았다.바로코라는 대만 회사에서 나온 MISTEL MD600 ALPHA라는 제품으로 분리형이면서 양쪽 키패드에 모두 B키가 있는 제품이다. (영문의 경우 B는 왼손으로 타이핑하지만, 한글의 경우 같은 키('ㅠ')를 오른손으로 타이핑 하기 때문에 이런 방식의 키배열이어야 불편이 없다) 게다가 엘리스 배열이기까지. 설마 둘 중(분리형, 엘리스 배열) 하나는 팔목 통증에 효과가 있겠지.체리 적축 저소음 스위치가 채용된 모델이다. 적축은 처음 써보는데 스위..
panic Go에서 에러 처리는 반환값을 통해 이루어지는 것이 일반적이다. 하지만 프로그램 수행을 더 이상 진행할 수 없을 정도의 심각한 에러가 발생한 경우 Go 런타임은 panic을 발생시킨다. 예를 들어 아래 프로그램은 고의로 "index out of range" 예외를 일으키고 있는데package main import ( "fmt" ) func fn() { a := []int{1,2,3}; fmt.Println(a[3]); } func main() { fn() } 이때 Go 프로그램은 panic을 발생시키고 그 결과는 다음과 같다.panic: runtime error: index out of range goroutine 1 [running]: main.fn() /tmp/sandbox410484699..
C나 C++ 같은 언어에서는 다음과 같이 조건절에 변수에 값을 할당(assignment)하는 문법을 사용하는 것이 가능하다.if (x = 10) {...}이것이 가능한 이유는 이들 언어에서 할당은 표현식(expression)이고 0이 아닌 임의의 값이 참으로 간주되기 때문이다.이런 특성 때문에 종종 프로그래머들은 등호(==)를 넣어야 할 자리에 할당 연산자(=)를 넣는 실수를 한다. 이런 실수를 할 경우 조건이 무조건 참이 되는데다가 변수의 값마저 변경되기 때문에 심각한 오류가 발생할 수 있다. 따라서 이런 실수를 방지하기 위해 많은 프로그래머가 if 문의 조건을 다음과 같이 쓰도록 조언한다.if (10 == x) {...}상수값과 변수의 위치를 바꾼 것이다. 이렇게 쓰면 등호를 할당 연산자로 잘못 썼다..
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
난 리눅스 데스탑 환경으로 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..