단순함 Go 언어는 단순함(simplicity)과 실용성(pragmatism)을 지향하는 언어로 이 두가지 철학이 다른 모든 것들 보다 상위에 있다. go 언어에 없는 것들을 보자. 패턴매칭 함수 프로그래밍 : 어느 정도 특징을 가지고 있기는 하지만 지향점은 아니다. immutable variables Option types : 값외에 유효한지, 초기화가 됐는지 등의 추가적인 정보를 설정할 수 있다. 예외(exception)가 없다. 클래스도 없다. 제너릭(generics)를 지원하지도 않는다. 현대적인 언어들이라면 당연히 가지고 있음직한 굵직한 특성들을 가지고 있지 않다. 심지어 “Go는 40년 동안의 프로그래밍 언어에 대한 연구를 던져버린 유일한 언어”라고 평가를 받기도 한다(제너릭의 경우 지원하려는 움직임이 있는 것 같기는 하다).
Go 언어에 대해서 구글이 2009년에 만든 비교적 새로운 프로그래밍 언어다. 2009년이면 거의 7년 이상된 구닥다리 언어잖아? 라고 생각 할 수 있겠으나, Ruby(1996년) 나 python(1991년) 과 비교해보면 느낌이 다를 것이다. V8 자바스크립트 엔진 개발에 참여했던 Robert Griesemer, UTF-8을 만든 Rob Pike, 초창기 유닉스 운영체제를 설계했으며 B언어(C언어의 전신)를 개발한 Ken Thompson등 쟁쟁한 개발자들이 만든 언어다. 구글이 개발 했다는 프리미엄과 함께 도커(Docker)의 개발 언어라는게 알려지면서 유명세를 타게 됐다. Python이나 Java와 같은 범용 프로그래밍 언어이며, 시스템 프로그래밍과 네트워크 프로그램의 개발을 목표로 만들어진 언어다.
사이트에 블로그 올리는 방법 Golang Korean Community 사이트는 깃헙의 golangkorea Organization의 웹사이트로 GitHub Pages를 이용해 제작되고 있습니다. 현존하는 Static Site Generator중 가장 빠른 Hugo를 엔진으로 사용하고 주로 Go언어에 관련된 포스트와 글로벌 기술 동향및 최신의 개발 기법등을 소개하는 포스트를 다루고 있습니다. 참여자격 깃헙에 계정이 있는 개발자라면 누구나 제작에 참여하실 수 있습니다. Fork it! Golang Korean Community 사이트는 다음과 같이 두개의 Repo를 가지고 개발됩니다. golangkorea-hugo Hugo로 제작하는 golangkorea.github.io의 소스 프로젝트입니다. golangkorea.github.io golangkorea-hugo의 submodule로 Hugo로 빌드된 웹사이트입니다.
분류(Taxonomy)기능 사용하기 사이트에 컨텐트가 많아 질 수록 고민이 생깁니다. 비숫한 주제의 컨텐트를 한 곳에 나열해 주는 페이지를 만들수는 없는가? 순진한 저자는 자기가 포스트한 내용을 모두 한 포스트에 링크할 지도 모릅니다. 주제 별로 나열해 주는 포스트를 만들어 새로운 포스트가 올라올 때 마다 링크를 걸어 줄 수도 있겠죠. 손이 많이 가고 더군다나 다른 저자들의 비슷한 포스트는 포함되지 못하는 일도 허다할 겁니다. Hugo는 이런 문제를 분류(taxonomy)라는 기능으로 간단히 햬결해 드립니다.1 기본적으로 Hugo에는 tags와 categories라는 분류변수를 지원합니다.
사이트 테마 개발하기 시리즈 1 마지막에 hugo-octopress 테마를 사용하여 처음으로 사이트를 구축한 기억을 하실 겁니다. 사이트를 구축하기 전에 Hugo에서 사용할 수 있는 테마가 어떤것 있는지 한번 살펴보고 생각하고 있는 사이트와 잘 맞는 테마를 선택하는 일도 중요합니다. Hugo의 테마 쇼케이스에서 한번 감상하시길 바랍니다. Hugo 테마 쇼케이스 자신만의 테마를 개발하기 위한 첫걸음은 남이 개발해 놓은 테마를 사용하는 것에서 부터 시작합니다. 테마 설치하는 법 테마의 사용법은 대단히 간단합니다. hugo new site명령으로 사이트 프로젝트를 초기화하면 themes 폴더가 생기는 것을 이미 아실 것입니다.
Hugo 입문 두번째 시리즈로 컨텐츠 제작과 관련해 꼭 알아야 할 개념들을 소개합니다
Hugo 시작하기 Hugo는 Go로 제작되고 하나의 실행파일로 배포됩니다. 다양한 설치 방법이 있지만 우선 Package Manager를 쓰시는 분들을 중심으로 살펴보겠습니다. Package Manager로 설치하기 MacOS를 쓰시는 분들은 Homebrew를 이용해 쉽게 설치하실 수 있습니다. brew update && brew install hugo Windows에서 Chocolatey를 쓰시는 분들도 비슷한 방법으로 설치가 가능합니다. C:\> choco install hugo Linux에서는 조금 복잡해 집니다. 우분트를 쓰시는 분들은 우선 Hugo 릴리즈 페이지로 가서 최신 deb 버전을 다운로드한 후에 다음 명령을 실행 시키면 됩니다.
Hugo는 현존하는 가장 빠른 정적 사이트 제너레이터(Static Site Generator)로 알려져 있습니다. 기능적인 측면에서도 여타 동적 사이트 제너레이터(Static Site Generator)에 비해 손색이 없을 뿐더러 설치가 간편하고 Go언어에 친숙한 개발자들에게는 최고의 컨텐츠 제작 환경을 제공한다고 생각합니다. Golang Korean Community 사이트도 Hugo로 제작되고 있습니다. Hugo 입문 시리즈를 통해 이 사이트에 기여하시고자 하는 분들에게 가이드라인을 제공할 뿐만 아니라 자신만의 블로그 사이트를 쉽게 제작하고자 하는 분들에게도 도움이 되길 기원하는 마음으로 시리즈를 준비했습니다. Hugo 시작하기 컨텐츠
Vim Vim은 Emacs와 함께 (적어도 리눅스에서는) 가장 널리 사용하는 에디터일 것이다. 가볍고 빠르며, 어디에서나 실행되기 때문에 그 단순함에도 불구하고 여전히 사랑받고 있다. GUI 환경에서 사용하는 IDE에 익숙한 개발자라면 “요즘 같은 시대에 왠 구닥다리 터미널 기반 에디터냐”라고 생각할 지도 모르겠다. 아래 그래프를 보자. Go언어를 대상으로 조사한 결과인데, Vim이 거의 40% 정도를 차지하고 있다. Emacs까지 하면 터미널 기반 에디터를 사용하는 개발자가 절반이 넘는다. 물론 Go 언어가 시스템과 네트워크 분야의 백앤드 프로그램의 개발에 특화된 측면을 고려해야 겠지만 말이다.
The Slow Hunch Where Good Ideas Come From: The Natural History of Innovation의 저자 Steven B. Johnson에 따르면 인류의 역사를 바꾼 혁신들은 번뜩이는 아이디어에서 시작된 경우가 매우 드물다고 합니다. 대개는 개개인의 작은 아이디어들이 오랜 시간에 걸쳐 다른 사람이 갖고 있는 비슷하거나 전혀 다른 아이디어들과 충돌하고 결합하면서 커뮤니티의 지능으로 진화하고 어느 순간 돌이킬 수 없는 변화의 모멘텀을 형성하며 세상을 바꿉니다. 커뮤니티내에 공유되고 있는 지능이 다시 역으로 개개인에게 영감과 비젼을 제시하는 상호작용을 일으키게 되는데 그런 과정은 통해 아이디어의 생산을 가능케하는 현상을 slow hunch라고 부릅니다.