2016년 7월 7일 목요일

Linux에서의 Swift 시작

Swift 2.x 까지는 Linux에서 Swift 언어 자체를 테스트하고 활용하는데에는 괜찮지만,  C binding을 제대로 지원하지 않아, 본격적인 프로젝트에 활용하기에는 문제가 많았다.

그러나, C binding이 Swift 3.0부터, Swift package manager를 활용하여 지원하기 때문에, Linux에서도 어느 정도 재미있는 프로젝트를 진행할 수 있는 기반이 된 것으로 보인다.

나는 Swift development snapshot을 이용하여 테스트를 진행하였다. swift.org에서 ubuntu용 이미지는 배포를 하고 있지만, 나는 arch linux를 사용하기 때문에, swift-development-bin 패키지를 설치하여 테스트를 진행하였다.

정상적인 설치여부 확인

$ swift --version
Swift version 3.0-dev (LLVM c191431197, Clang c6195325c5, Swift add621a959)
Target: x86_64-unknown-linux-gnu

$ swift package --version
Swift Package Manager – Swift 3.0

개발 시작, 빌드 및 실행


$ mkdir sample

$ cd sample

$ swift package init --type executable
Creating executable package: sample
Creating Package.swift
Creating .gitignore
Creating Sources/
Creating Sources/main.swift
Creating Tests/

$ swift build
Compile Swift Module 'sample' (1 sources)
Linking .build/debug/sample

$ .build/debug/sample
Hello, world!

어떤가? 간단하지 않은가?

Golang에 대한 소회

최근 반년간 golang을 스터디 목적으로 관심을 가지고 테스트를 해왔다.

여러가지 장점이 있는 반면, 시간이 갈수록 단점이 점점 더 부각되어, 더이상의 시간 투자는 하지 않으니라 생각하며, 이 글을 정리한다.

뭐, 단순히 말하면, 나와 맞지 않는 언어라는 결론...

장점이야 여러 사이트에 잘 정리되어 있으니, 그쪽을 참조하면 될거 같고,

점점 부각되는 단점으로는...


  • GC
    • 개인적으로 시간이 갈 수록 GC의 특성이 나에게 점점와 닫는거 같다. 최근에 가장 곤란한 상황은 C와의 binding에서 golang object에 대한 포인터를 C에서 관리하기 힘든 문제 때문이었다. Java의 경우 이러한 문제를 이미 해결한 상황으로 보이고, golang도 시간이 지나면 해결할 수 있을 것으로 보이긴 하지만, 지금의 상황에서는 나에게 큰 불편함으로 다가 온다.
  • Namespace 지원 관련
    • golang이 namespace를 지원하지 않는 것은 아니다, 다만, 다른 언어 만큼 자유롭게 namespace를 쓸 수 있는 것은 아니다. 이로 인해 singleton instance 관련 함수 이름 선정에 우아함을 부여하기 힘들다.
  • Object creator의 일관성
    • new operator 있다. 그러나, interface를 기반으로 하는 object를 생성하는 방법에 대한 일관성이 부족하다. 즉, 언어적 지원 사항이 없다. 
  • OOP
    • golang은 공식적으로 oop를 지원하지 않는다. 그러나, 다양한 방안을 이용하여 oop를 구현 활용할 수 있다.
    • 하지만, 이러한 구현 방법은 결국 일관성을 해치게 될 것이다. 각 개발자 마다 서로 다른 방법을 사용할 수 있고, 이것은 코드의 일관성과 가독성을 해치게 될 것이다.
    • 단기적으로는 큰 문제가 되지 않을 수도 있지만, 장기적으로는 golang 자체를 해치게 될 가능성이 많다.
프로그램 언어를 사용만 했지, 그 자체에 대한 전문적인 지식이 일천하여, 멋진 말로 설명하는 재주는 없다.
그러나, golang이 현 상황에서 여러 좋은 장점이 충분히 부각되는 서버쪽에서는 유용할지 모르나, 다른 분야에서까지 활용되기에는 아직 부족한 점이 많다.

물론, 똑똑한 사람들이 개발에 참여하고 있으니, 이러한 부족한 점들이 점점 개선되겠지만, 시간이 많이 필요할 것으로 예상된다. 최소한 2.0 이상 버전에서나 어느정도 개선될것으로 보임.

그러나, 언어 개발자들의 특성이 내가 원하는 바가 반영되려면 더 많은 시간들이 걸릴 것으로 예상되어, swift 로 전환하고자 한다.

2016년 5월 30일 월요일

New review for Seiko Astron Dual Solar

뉴스를 구독하다가, Watch New Site에서 작성한 Review가 있어서 공유합니다.

http://www.ablogtowatch.com/seiko-astron-gps-solar-dual-time-watch-review/

2016년 4월 26일 화요일

Seiko Astron GPS Solar Dual Time SSE049

이 시계를 오랜 고민 끝이 인터넷 면세점에서 구매하였다.

현재 거의 한달간 사용중인데, 이 시계에 대한 간단한 리뷰를 적고자 한다.

일단 간단히 평가는 여전히 굉장히 만족하면서 사용하고 있다. 내 몸에 걸치고 있는 아이템 중에 가장 반짜이는 아이템이다.
개인적으로 다른 사람이 구매하고자 한다면 적극적으로 추천하고 싶은 제품이다.


제품 선택 이유


최근 다양한 gps 수신 장치들이 출시되고 있다. 물론 주로 시계다. 순토, 가민, 시티즌, 카시오 등등...

이중에 순토, 가민에서 출시하는 장치들은 시계 본연의 기능보다는 사용자 추적, 운동 보조 등의 기능이 강조되고 있어, 사실상 스마트워치 기능을 하고 있다.

그런데, 이러한 스마트워치는 그 특성상 gps를 자주 수신해야 하고, 스마트폰과의 동기 등 다양한 기능을 제공해야 하므로, 배터리 소모가 크기 때문에 자주 충전을 해줘야 한다.

나는 이런 배터리 충전이 싫다. 스마트폰 배터리 관리만으로도 충분히 신경 쓰이고 있는데, 거기에 다른 기기가 추가된다는 것은 생각만 해도 짜증나는 일이다.

따라서, 시계 본연의 기능을 하는 gps 시계를 선택하고자 했다. 현재 gps 시계를 출시하는 곳은 세이코, 시티즌, 카시오 등이 있는 것으로 알고 있다.

대부분 기능면에 있어서는 아주 유사하다. gps 수신은 기본이고, 태양광 충전도 다 같이 지원한다.

그러나, 나는 그 중에서도 원조가 좋다. 그래서 SEIKO. 그리고, Astron이 디자인이 좀 더 고급스럽다. 물론 가격도 더 비싸다.

내 성격의 대부분은 대충 대충이고 너그러운데, 간혹 섬세해 지기도 하는데, 시계에 있어서는 좀 그런 것 같다.

시계는 늘 정확했으면 좋겠고, 날짜도 알아서 잘 맞춰 줬으면 좋겠다. 그리고, 배터리 같은거 신경 쓰기도 싫다.

그런면에 있어서, SEIKO ASTRON은 나에게 가장 완벽한 시계다.

이런 나에게 기계식 시계는 최악이다. 관리도 복잡하고, 시간이 잘 맞지도 않는 것이 비싸기만 하다.


시계외관


Black Titanium, Sapphire crystal, 45.0mm 의 간단한 사양이다.

Sapphire crystal은 너무나 투명하여, 많은 사람들이 유리가 있는지 없는지 구분하기 힘들 정도다.
Black Titanium은 시계 무게 자체를 줄여 크기에 비해 가볍다.

특히, 개인적으로 나토밴드를 좋아해서, 원래 있던 Titan Band를 나토밴드로 교체한 이후에는 거의 항상 시계를 차고 다니다.
나토밴드를 추가로 주문하였지만, 아직 도착전이라, 예전 시계에서 차고 있던 나토밴드를 대신 사용중인데, 다른 나토밴드와의 궁합도 기대되는 부분이다.

그리고, 시계 안쪽은 굉장히 입체적이다. 각각의 시계 파트가 print 되어 있는 것이 아닌, 작은 조각들로 구성되어 있는 형태라 그 입체감이 굉장하다.

그리고, 각 파츠들이 반짝반짝 빛을 반사하고 있어서, 화려한 보석 같다. 사실 이 부분이 장점이기도 하고 단점이기도 한데, 내 몸에 있는 유일한 악세사리이면서, 유일하게 반짝이는게 시계다.
그런데, 너무 반짝여서 시인성이 좀 떨어지는 면이 있다.

그리고, 날짜 표시 부분이 작아서 읽기가 좀 힘들다. 사실 노안이 슬슬 오고 있다.






시계기능

퍼페추얼 캘린더

잘 알려졌다시피, 2100년까지 날짜를 따로 조정할 필요 없는 퍼페츄얼 캘린더 기능을 가지고 있다.
내가 처음 가져보는 퍼페츄얼 캘린더라 굉장히 만족하고 있다. 

2099년쯤까지 이 시계가 동작하고 있다면, 그때쯤 캘린더 관련 패널을 교환하면 추가로 더 사용이 가능하다고 한다. 하지만, 그때까지 동작할까?

태양광 충전

시계를 수령하고 처음 케이스를 열었을 때도, 배터리는 완충 상태다. 일반 직장인이라 사무실 생활이 많은데, 그럼에도 불구하고, 한번도 배터리 게이지가 떨어지지 않는다. 당연한 결과이기도 하면서, 신기하기도 하다.
충전 배터리가 노후되어 수명이 다 되기 전까지는 계속해서 사용 가능할 듯. 10년에 한번은 교환해 줘야 하지 않을까?

Timezone

공식적으로 40개의 Timezone을 지원한다. 웬만하면 이정도면 충분하지 않을까 싶다.
물론, DST(Daylight Saving Time, 서머타임)도 수동으로 지원하기 때문에 웬만하면 모든 지역을 커버할 것으로 보인다.

다만, 버튼을 눌러 Timezone을 자동으로 설정하는 경우 반드시 하늘이 보이는 장소에서 진행해야 제대로 진행되기 때문에, timezone에 대한 지식이 있는 경우에는 수동으로 설정하는 것이 훨씬 간편하다.

특히, sub dial에 있는 시간 설정을 위한 타임존 설정은 수동으로 밖에 안되기 때문에 수동 타임존 설정 기능은 반드시 숙지하는 것이 좋다.

비행기를 이동하는 경우, 비행기와 공항을 이용하는 시간이 긴데, 이 시간동안 타임존 설정을 하지 않는 것 보다 수동 타임존을 설정하면 훨씬 편리할 것이다.

유튜브를 보면, 씨티즌 GPS 시계등과 타임존 설정 성능을 비교하는 것이 있는데, 이중에 Astron이 성능이 가장 늦다. 그러나, 이것이 과연 어떤 의미가 있을까 싶다.

수동 설정이 가장 빠르고, 간단하다.

Dual Time

이 시계의 가장 큰 장점이 Dual Time 지원사항이다. Dual Time 지원을 위해, 작은 시계와 오전/오후 표시를 위해 dial이 존재한다. 원래 목적은 외국 여행중에 local time 확인을 위해서 존재한다.

하지만, 외국 여행이 잦지 않은 나같은 경우, 작은 시계를 회사의 본사(미국 서부) 지역 시간으로 설정하여 사용하고 있다.

sub dial의 timezone 역시 간단한 설정으로 변경 가능하므로, 이것 역시 유용한 기능이다.

GPS Time Sync

GPS 기반 Time sync는 단 하나의 gps 신호만 수신하면 가능하므로 타임존 설정에 비해 간단한 작업이다. 따라서, 하루에 한번 자동으로 시간 설정을 시도한다.
그런데, 이 자동 시간 설정이 명확한 부분도 있는 반면, 일부는 명확하지 않다.

한가지 명확한 것은, 한번 사용자가 수동으로 gps 시간 설정을 하면, 그 시간을 기억하고 있다가 하루에 한번 그 시간에 gps 시간 설정을 시도한다는 것이다.

그외에, 태양광을 일정시간 이상 쬐는 경우에 자동으로 시간 설정이 된다고 하는데, 이 부분에 있어서는 동작이 명확하지 않다.
그동안의 테스트 결과로는, 이전 gps sync가 fail 상태이고, 강한 햇빛을 쬐는 경우 자동으로 gps sync를 시도하는 것으로 보인다.

따라서, 항상 gps 수신이 가능한 시간에 수동 시간 설정을 한번 하기를 권고한다. 예를 들어, 규칙적인 출퇴근 시간 같이.

결국, 적당한 시간에 gps sync를 수동으로 한번 진행하고, 이후 잊고 사는게 답이다. 대부분의 경우 항상 정확한 시간을 표시하고 있을 것이기 때문이다.

공식 홈페이지는 http://www.seiko-astron.com/8x_dual-time/