March 27, 2022

Go에서의 빠른 Hex decode

인코딩은 어떤 데이터를 원하는 포맷으로 변경시키는 것을 말한다. 만약 string을 base64로 변경시켜야 하는 경우 string을 b64로 인코딩한다고 한다. 반대 방향의 변환은 디코딩이라고 부른다. 정확히는 방향이 반대일 때 디코딩은 아니고, 주체가 어떤 것이냐에 따라 다르다고 할 수 있다. 예를 들어 b64를 디코딩하여 문자열을 만들 수 있고, 또 b64를 문자열로 인코딩할 수도 있을 것이다. 두 연산의 결과는 같겠지만. 아무튼 go에서는 encoding/hex패키지에서는 다음과 같은 함수를 제공한다. func Encode(dst, src []byte) int // Hello Gopher! Read more

March 17, 2022

경과 시간을 측정하는 방법

위키에 쓸까 며칠 고민했는데, 이 정도는 간단하게 블로그에 적어도 되지 않을까 싶어서 여기에 쓴다. 얼마 전 회사에서 어떤 분이 질문하기를, Go에서 fmt.Println()으로 time.Now()를 찍으면 나오는 m=+0.xxxxx와 같은 수치가 뭐냐고 물어 보았다. 그냥 프로그램 실행 이후 경과된 시간을 알려주는 것이라고 간단하게 대답했는데, 대답을 들었던 분이 이게 왜 필요한지를 정확히 이해하지 못한 것 같았다. 그렇지, 일반적으로는 실행했을 때 시간을 알면 현재 시간에서 빼기만 해도 바로 경과 시간을 알 수 있으니까 말이다. package main import ( "fmt" "time" ) func main() { now := time. Read more

January 27, 2022

호환성

최근 새롭게 라즈베리 파이를 사용하여 만든 시스템이 너무 마음에 든다. 기존과 대비해서 장점이 너무 많은 것이다. 하나를 꼽아 보자면 성능이 확연히 차이가 날 정도로 더 좋다는 것인데, 기존에 사용했던 ODROID-U3는 출시일이 대략 2013~2014년 사이니까 벌써 10년전 제품이다. 라즈베리 파이 4로 말하자면 출시된 지 길어야 1~2년이니 아무래도 성능이 차이가 날 수밖에 없는 것. 기존 시스템에서 힘들었던 것으로 어플리케이션의 속도가 느리다는 것이었다. 개인 코드 저장소로 사용하는 gogs가 너무 느리고, 특히 커밋이 많은 코드일수록 더 느려진다. Read more

January 22, 2022

해야만 하는 일이 있다

어떤 일들은 반드시 일을 시작하기 전, 처음에 해야만 한다. 그런 일들은 만 명중 만 모두 동의하는 것이기도 하고, 또 모두가 동의하지 않아 우선순위에서 밀리는 것들이 있기 마련이다. 어느새 일을 시작한 날이 오래되어 많은 사람들과 일하면서 느낀 것이 있는데, 사람들이 생각하기에 중요한 일은 다 중요한 일이 아니고 대강 이렇게 두 가지가 있다고 믿는 것 같다. 중요하고 필수적인 것, 그리고 중요하지만 필수적이지는 않은 것. 그렇기 때문에 전자의 경우 처음에 진행하는 것에 아무런 이견을 달지 않지만, 다른 일은 반대하는 사람들이 생긴다. Read more

June 15, 2020

위키 업데이트

위키를 업데이트했다. 기존에는 Dokuwiki 기반의 사이트였는데, 이번에 블로그와 같이 hugo를 사용하기로 했다. 도쿠위키, 생각해보면 도쿠위키가 진짜 애매한 것이 아닌가 싶다. 파일 기반으로 위키를 관리하면서 정적 페이지도 아니고, 그렇다고 뭔가 현란한 기능이 있는 것도 아니고. 처음에 위키를 만들 때 어떤 솔루션으로 할지 신중하게 고민했던 기억이 있다. 그러면서 어떤 것이 장점이 되고 단점이 될지 여러 위키 엔진을 비교하며 결정을 했는데, 그 때 도쿠위키를 선택한 이유는 크게 이런 이유들이었다. 파일 기반이라 데이터베이스가 필요없다 php기반이므로 잡다한 권한 관리가 될 것이다 … 블로그를 hugo로 변경하니, 위키도 정적 페이지로 만들어볼만 하겠다는 생각이 들었다. Read more