카테고리 보관물: Life

[키보드] Filco – Minila

약 3개월 전에 구매한 키보드입니다. 저는 미니키보드에 대한 약간의 애정이 있습니다.

이번에 키보드를 검색하다 Filco Minila 키보드에 빠져 결국은 지르게 되었습니다.

3개월정도 열심히 쓰니 손에 너무 익어 불편함을 모르고 있습니다. 해피해킹DELETE 키 위치가 서로 달라 고생은 하지만 충분히 사용해볼 가치가 있는 키보드인거 같습니다.

그리고 최근 키캡만 AliExpress에서 구매하여 변경했습니다.

제가 여러가지 미니 키보드를 써보고 느낀점은

키가 적으면 적을수록 익히기가 어렵다.

이상입니다.

사진상에 나오는 키보드는 해피해킹Filco Minila입니다.

이 슬라이드 쇼에는 JavaScript가 필요합니다.

[후기] 테스트 주도 개발

  • 지은이: 켄트 백
  • 옮긴이: 김창준, 강규영
  • 출판사: 인사이트
  • 출간일: 2014년 2월

중요
– 1. 오직 자동화된 테스트가 실패할 경우에만 새로운 코드를 작성한다.
– 2. 중복을 제거한다.

프로그래밍 순서

  • 빨강 – 실패하는 작은 테스트를 작성한다.
  • 초록 – 빨리 테스트가 통과하게끔 만든다.
  • 리팩토링 – 일단 테스트를 통과하게만 하는 와중에 생겨난 모든 중복을 제거한다.

매크로를 이용하여 테스트를 작성한 후 얻은 교훈

  • 테스트가 충분히 빨라서 내가 직접, 자주 실행할 수 있게끔 만들자.
  • 많은 오류가 반드시 어머어마한 양의 문제는 아니다.

TDD가 XP의 어떤 부분을 향상 시키는가?

  1. 짝 프로그래밍
    TDD를 하면서 작성하게 되는 테스트는 짝 프로그래밍 과정에서 뛰어난 의사소통 수단이 된다.
  2. 활기차게 일하기
    XP에서는 기운이 있을 때 일을 시작해서 지치면 그만할 것을 권유한다. 테스트를 통과하지 못하겠거나, 어떤 테스트 두 개를 동시에 통과하도록 만들 방법을 모르겠다면 쉬어라.
  3. 지속적인 통합
    테스트를 좀더 자주 통할할 수 있게 해주기 때문에 아주 훌륭한 자원이 된다. 새로운 테스트를 통과시킨 후 중복을 제거했다면 커밋한다. 그렇게 되면 체크인 간격이 15~30분 정도로 단축된다.
  4. 단순 설계
    테스트를 통과하기 위해 필요한 만큼만 코딩하고 모든 중복을 제거한다면 요구사항에 딱 들어맞는 설계를 얻게 될 것이다.
  5. 리팩토링
    중복 제거 규칙은 리팩토링의 또 다른 이름이다. 테스트가 있다면 더 큰 리팩토링을 수행하더라도 시스템의 행위가 변하지 않았다는 자신감을 얻을 수 있게 된다.
  6. 지속적인 전달
    TDD 테스트들이 정말 당신 시스템의 MTBF(Mean Time Between Failure)를 개선한다면, 고개을 혼란시키지 않으면서도 훨씬 더 자주 코드를 출시할 수 있을 것이다.

추천 도서

  • Smalltalk Best Practice Patterns

[후기] 열혈강의 TCP/IP 소켓 프로그래밍

열혈 TCP / IP 프로그래밍

  • 저자: 윤성우
  • 출판사: 오렌지 미디어
  • 기간: 2016.07.13 ~2016.07.15

키워드

네트워크 프로그래밍

  1. TCP / IP
  2. Socket Options
  3. Linux 기반의 네트워크 프로그래밍
  4. Windows 기반의 네트워크 프로그래밍

본것

네트워크 프로그래밍의 기초에 대한 설명이 단계별로 잘 되어 있는 책이라는 생각이듭니다.
소켓(Socket), 주소체계, TCP, UDP, Gracefull Shutdown, 소켓 옵션, 서버 아키텍쳐등 많은 내용이 아주 체계적으로 잘 되어 있습니다.

그리고 Linux와 Windows에서 다르게 구현 되는 부분을 잘 설명해 놨기 때문에 두가지 환경에서 모두 구현하는데 도움이 될 만한 책인 것 같습니다.

책 중간에 나오는 잠시 JAVA 얘기를: 열려있는 사고를 지니자! 는 간략하지만 제가 느끼는 부분과 비슷한 내용인 것 같습니다.

예전에 학원 강좌에서 Java 네트워크 부분에서 Java에서는 소켓을 연결하지 아주 쉽습니다.

Socket s = new Socket("192.168.10.1", 8888);

위와 같이만 하면 연결 끝입니다. 이런 내용을 듣고 네트워크 프로그래밍 뭐 별거 아니네... 이런 생각을 했는데 프로그래밍을 하면 할 수록 네트워크 부분은 점점 어려워 지는 것 같습니다.

깨달은것

멀티 프로세스 방식은 Java로 서버 개발을 하면서 사용한 적이 없고 멀티 플렉싱 방식은 Java NIO 패키지의 비동기 소켓으로 예제 정도만 구현을 해봤는데 이전 보다 조금 더 알게 된 것 같습니다.

그리고 Windows IOCP는 예전 한국 리눅스 유저 그룹 에서 EPOLL과 열딘 토론의 글을 본적이 있어서 관심은 있었지만 실제로 사용해 본적이 없어 어떤 시스템이라는 막연한 부분이 있었는데 대략적으로 어떤 흐름이다라는 것은 알게 되었습니다.

적용할 것

  • 멀티프로세스 방식, 멀티플렉싱 방식 그리고 멀티 스레드 방식의 서버를 각각 구현해 성능 테스트를 해보자.
  • Windows IOCP 서버를 구현해보자.
  • 네트워크프로그래밍 강좌에서 받은 Windows IOCP 배틀넷 서버 소스를 분석해보자.
이 글은 read 카테고리에 분류되었고 태그가 있으며 님에 의해 에 작성되었습니다.

[후기] 리눅스 그냥 재미로(Just for fun)

리눅스 그냥 재미로

  • 제목: 리눅스 그냥 재미로(Just for fun)
  • 저자: 리누스 토발즈, 데이비드 다이아몬트(안진환 역)
  • 출판사: 한겨례신문사
  • 기간: 2016.07.19~2016.07.19

본것

  • 리눅스를 만들게 된 동기와 오픈소스에 대한 철학을 볼 수 있다.
  • 과학 스스로는 돈을 벌어주지 못한다. 부를 창출하는 것은 과학의 부차적 효과이다. 오픈 소스도 마찬가지다.
  • 유닉스는 “작은 것이 아름답다” 라는 철학을 가지고 있다.

외에 전반적인 리누스가 왜 운영체제 개발을 시작했고 어떤식으로 오픈소스 프로젝트를 시작했는지 그리고 현재까지 유지할 수 있었던 방법은 어떤 것인지에 대한 이야기가 나와있다.

그리고 대학 연구조교를 나와 기업에 취직할 때도 비리눅스 기업에 취직하는 내용은 정말 대단한 사람이라는 생각이 들었다. 이익 보다는 소신을 지키는 내용이 멋있었다.

깨달은것

리누스는 컴퓨터를 처음 사용하면서 프로그래밍을 접하고 그것을 보다 효율적으로 사용하기 위한 방법을 많이 생각했던 것 같다. 나의 어린 시절과 비교를 하면 나는 대부분의 학생들과 마찬가지로 컴퓨터를 가지고 게임을 할 생각만 했지 컴퓨터를 가지고 프로그래밍을 할 생각은 못했던 것 같다.

물론 베이직(GW Basic) 언어를 이용하는 프로그래밍을 배우기는 했지만 그것은 단순 컴퓨터 학원의 커리큘럼 이었을 뿐 집에서 그것을 가지고 내가 원하는 기능을 직접 만들어 본다는 것은 생각조차 하지 않았던 것 같다.

Java라는 언어를 내 기반으로 두고 사용하기에 하드웨어에 대해 모른다는 것을 별로 민감하게 받아들이지 않았지만 좋은 개발자가 되기 위해서는 하드웨어에 대한 지식도 이제는 필수라고 생각한다.

적용할 것

  1. DOS와 같은 운영체제를 만들기(?)

솔직히 위의 운영체제 만들기는 어려울 것 같다는 생각이 들지만 한번 시도를 해보면 정말 많은 도움이 될 것 같다는 생각이 든다. 그렇기 때문에 적용할 것 에 추가해본다.

이 글은 read 카테고리에 분류되었고 태그가 있으며 님에 의해 에 작성되었습니다.

[여행후기] 오크밸리 리조트

오크밸리 리조트 & 수영장


  • 일정: 2016. 07. 01 ~ 2016. 07. 03 (2박 3일)
  • 누구랑: 안지기 아는 사람 가족(지우, 지호)과
  • 장점: 아름다운 풍경과 울창한 숲
  • 단점: 유아가 놀기에는 다소 차가운 수영장.

일본 출장 때문에 아이들과 못놀아줘서 기분도 낼겸해서 금요일 연차를 쓰고 오크밸리에 다녀왔습니다.
어디로 갈지 딱히 정하지 못했는데 쿠팡을 통해 저렴한 객실과 7/1일이 성수기로 포함되지 않았다는 점 때문에 오크밸리로 다녀왔습니다.

리조트는 평범했지만 주변 경관 및 진입로가 너무 잘되어 있어 깜짝 놀랬습니다.

겨울에 스키장으로 간다면 잘 못 느낄거 같은 풍경들이 여름이 가니 보여서 좋았습니다.

[키보드] Fujitsu – Libertouch

후지츠 리버터치

  • 장점: 부드러운 키감.
  • 단점: 87키가 아닌점.

후지츠 리버터치(출처: 아마존재팬)

 

 

일본 IT 전시회를 관람하기 위해 방문 한 김에 한국에서는 판매하지 않는 리버터치 를 구매했습니다. 리버터치는 중고나라에서 봐도 아직도 찾는 사람이 있을 정도로 키보드에 대한 평이 좋습니다.

한가지 키보드를 너무 오래 사용한 느낌이 있어 출장비를 아껴 키보드를 구매했습니다. 원래는 87키를 구매하려고 했으나 제가 착오를 한건지 오프라인 매장에서 판매를 안하는 건지 요도바시 카메라 아키하바라 점에서 찾질 못하고 어쩔수 없이 103키를 구매했습니다.

출장후에 쭉 사용하고 있는데 느낌이 아주 부드러운게 미끄러지는 듯한 타이핑이 가능합니다.  이 키보드를 쓰다가 다른 키보드를 못쓸정도로요..^^

작업환경이 여러개라 Mac에는 해피해킹 Windows에는 Libertouch 를 연결해서 사용하는데 해피해킹 으로 가서 타이핑을 하면 묵찍하다는 느낌이 듭니다. 그만큼 Libertouch 가 부드럽다는 것이겠죠..

[키보드] Truly Ergonomic

키보드 후기


 

  • 장점:  타이핑이 정말 편안하다.
  • 단점
    • 키 배열에 익숙해지는데 시간이 많이 걸린다. (처음치는 순간 멘붕)
    • 조합이 필요한 키를 사용하기가 어려울때가 있다.
    • Tab 키가 가운데 있어 shell 에서 자동완성 기능을 사용할 때 불편하다.

The only Truly Ergonomic Keyboard with mechanical keyswitches

2년전쯤에 키보드 타이핑중에 손목 통증이 있어 인체공학 디자인의 키보드를 찾고 있었습니다. 인체공학 키보드는 대학교때 사용하던 MS Natural keyboard 를 마지막으로 써보고 다른 제품은 아직 못써보고 있었습니다.
그렇지만 중고나라 눈팅중에 Truly Ergonomic 키보드를 발견하고는 직거래로 바로 받아왔습니다.

6개월 정도 사용했는데 단점도 많지만 손목 통증은 조금 완화되는 느낌입니다. 정확하게 제가 병원에서 진단을 받은 것도 아니기 때문에 어느정도 좋다라는 객관적인 증거는 없습니다. ^^

지금은 키보드 스위치가 몇개 고장나서 수리를 해야해서 못쓰고 있지만 조만간 사용할 예정입니다.

[캠핑후기] 포천 낭만가족캠핑장

포천 낭만 가족 캠핑장


  • 일정: 2016. 06. 04~2016. 06. 06 (2박 3일)
  • 누구랑: 안지기 아는 사람 가족과
  • 장점: 수영장, 인공 계곡(?)
  • 단점: 화장실과의 거리, 진입로 및 모래언덕

지난 주말 첫째가 캠핑, 캠핑 노래를 불러 다른 가족과 함께 캠핑을 다녀왔습니다.
같은날 캠핑하는 분들이 모두 매너가 좋은 분들만 모여 있었는지 아주 조용하고 편한하게 캠핑을 하고 왔습니다.

오랜만에 별도 많이 보고 나무도 많이 보고 했더니 힐링 되는 듯한 느낌이었습니다. 아이들과 너무 열심히 놀아서인지 몰라도 팔에 근육통도 생기고…^^

한가지 아쉬웠던 점은 진입로 및 캠핑장 내부 도로가 모래로 되어 있고 파인곳도 많아서 아이들이 미끄러지거나 차가 미끄러져서 휠스핀을 하는 것을 많이 봤습니다. 차는 상관 없었지만 아이들이 위험한게 조금 아쉬웠습니다.

그래도 최근에 일에 치여 살다가 나가서 콧바람을 쐬니 아주 좋았습니다.^^

2015년 정리

2015년 정리


2015년 한해는 2015년이 된지 얼마 안된거 같은데 마무리 되는 것처럼 빠르게 지나갔습니다.

블로그에 2015년 초에 게시한 내용을 토대로 정리해봤습니다.

2015년 목표


습관

  • 일반(20권)
  • 전공(10권)
  • 원서(10권)

나를 위한 투자

  • 배드민턴
  • 크로스핏
  • 등산
  • 자전거

가족

  • 아버지와 매달 목욕탕 함께 가기
  • 일주일에 하루는 가족의 날로 정하기

프로그래밍

  • AppStore에 어플리케이션 판매 하기
  • 자료구조
  • 알고리즘 정리
  • C# 개발 해보기
  • Mac용 어플리케이션 만들기

기타

  • 신규 아이템 확인

2015년 결과


습관

달성률 40%

일반서적(10권), 전공서적(5권), 원서(1권)

목표치보다 많은 책을 읽지는 않았지만 전반적으로 2014년에 비해 독서시간이 늘었습니다. 다만 원서 부분은 아직 저조합니다. 원서를 읽는 능력이 아직 많이 부족하기 때문에 초등학생, 중학생 수준의 책을 읽고 있습니다.

전공 서적은 개발 방법론과 소프트웨어 품질 향상을 위한 주제를 주로 읽었습니다.

일반 서적은 여행과 자기계발과 관련된 분야를 읽었습니다.

나를 위한 투자

달성률 20%

배드민턴, 크로스핏, 등산, 자전거등 여러 운동들을 하고 싶었지만 시간이 없다는 핑계와 부상으로 인해 대부분을 포기 했습니다.

그렇지만 약 5개월정도 1주에 3일 정도는 꾸준하게 웨이트 트레이닝을 하였습니다.

가족

  • 아버지와 매달 목욕탕 함께 가기
  • 일주일에 하루는 가족의 날로 정하기

달성률 0%

가족과 함께 하는 부분은 둘째가 나오면서 더욱 신경 써야 되는 부분이지만 가장 못한 것 같습니다. 2016년도는 더욱 노력하여 가족과 함께 하는 시간을 늘려야 될 것 같습니다.

프로그래밍

달성률 40%

[앱스토어 등록]
애플스토어에 개인용 어플리케이션은 총 2개를 등록하였습니다.

1. MERS Korea

한국에 메르스가 퍼지는 시점을 기반으로 개발하여 주춤할 시기에 개발을 완료 하였습니다. 심사중 반려되어 재심사를 요청하는 과정이 생각보다 길어져 출시가 늦었습니다. 그렇지만 서버와 클라이언트를 모두 작성하고 앱 제작 처음부터 끝까지 했기 때문에 재미는 있었습니다.

2. HOW2TOEFL

대학 친구가 기획을 하고 그 기획안대로 개발한 앱입니다. 원어민을 통해서 음원을 녹음하고 녹음된 음원 파일을 재생하는 형태로 하였는데 생각보다 시간이 많이 걸렸습니다.

판매 결과는 최악이지만 많은 교훈을 얻을 수 있었습니다.

[자료구조, 알고리즘 정리]

자료구조와 알고리즘은 따로 정리는 못했고 프로젝트오일러을 통해서 지속적으로 공부를 하고 있습니다.

[C# 개발 해보기]

회사에서 필요로 하는 타이머 어플리케이션을 개발했습니다. 간단한 어플리케이션이지만 요청사항에 까다로운 부분이 있어서 애매한 부분이 있었습니다.

다시 느낀 결론은 UI프로그램은 힘들다.

[Mac용 어플리케이션 만들기]

화면이 없는 OSX용 프로그램을 개발했지만 화면이 있는 것은 하지 않아서 안한것으로 간주하겠습니다.

기타

[신규 아이템 확인]

앱 개발의 필요성을 느끼면서 지속적으로 모니터링하고 메모하고 생각하고 있습니다. 이 글을 쓰고 있는 시점에도 어떤 어플리케이션이 좋은 아이템이 될지 생각하고 있습니다. 아마 다음에 개발하는 어플리케이션은 단순한 게임이 되지 않을까 하는 생각입니다.

결론

1년이란 시간은 연초에 보면 참으로 긴 시간인거 같지만 연말에 보면 정말 빠르게 지나가는 시간인거 같습니다. 새삼 시간관리및 자기관리의 필요성을 느낍니다.

2016년은 보다 현실적은 계획과 세운 계획을 철저히 실천하는 것을 목표로 해야겠습니다.

이상입니다.

[후기] 좋은 코딩 나쁜 코딩

읽기 쉬운 코드가 좋은 코드다.

  • 제목: 좋은 코딩 나쁜 코딩
  • 저자: 박진수
  • 출판사: 한빛미디어
  • 기간: 2015.09.28~2015.09.30

키워드

코딩 스타일(Coding Style)

  1. 논리를 표현하는 방식
  2. 알고리즘을 표현하는 방식
  3. 문장을 표현하는 방식
  4. 표현식을 표현하는 방식

본것

  • 함수와 함수 사이는 빈줄을 추가하여 가독성이 좋게 한다.
  • 프로그램의 주석에는 작성자, 파일명, 목적, 사용방식, 사용 파일, 제한사항, 오류처리, 이력사항을 포함하도록 한다.
  • while문의 조건 판별부에 대입 연산을 사용하지 않는다.
  • 연산자 우선 순위만 믿지말고 괄호를 적용하라.
  • 나눗셈 연산에는 주의하라
  • 변수명 및 함수명을 정의 할 때는 주의해서 작성하라.

깨달은것

C언어 스타일의 가이드로 되어 있어 보기도 편했고 모르던 내용도 많이 있어 도움이 되었다.

그렇지만 책이 나온지 10년정도 되어서 코딩 가이드에 약간의 변화가 있을 수도 있을 것 같다. 최근에 본 코딩 스타일 가이드 강좌(https://cleancoders.com/) 에서 나오는 내용과 상반되는 내용이 많이 있다.

책의 저자 및 클린코드의 강사중 어느 쪽을 반드시 따라야 한다는 규칙은 없을 것 같다. 자신 또는 팀의 성격에 맞는 방식을 따르면 좋을 것 같다는 생각이다.

예를 들면 책의 내용중에 버전 변경 이력에 대한 내용을 작성자, 변경일, 변경내용을 기록해야 한다고 설명되어 있다. 그렇지만 클린코드의 저자는 변경 내용에 대한 이력 관리는 버전 관리 시스템에서 하기 때문에 소스코드에 불필요한 내용을 적지 않아도 된다는 내용을 설명한다.

그리고 변수에 대한 주석도 상반된다. 코드를 이해할 수 있다면 별도의 주석을 필요 없다는게 클린코드의 설명이고, 저자는 변수에 주석을 달아 놓으면 다른 사람이 작업할 때 훨씬 편리하다라는 내용이다.

코딩 스타일에 관한 자료를 검색하다가 가장 마음에 와닿는 글을 게시한 블로그가 있었다.(주소는 생각나지 않음)

그 블로그에서는 주석을 달기 전에 자신이 작성한 코드에 혼란을 일으킬 수 있는 부분이 있는가 또는 자신의 코드의 잘못된 부분을 인식시키기 위해 주석을 작성할 것인가를 생각해보고 주석을 추가하라고 한다.

개인적으로 블로그에 나온글이 맘에 든다.

Objc 로 코딩을 하다보니 viewWillDisappear(), viewDidLoaded() 와 같은 함수와 TableView를 구현하기 위해 상속받는 함수들의 이름이 짧지 않고 함수명에 이 함수는 무엇이다라는 것을 정의한 것처럼 작성이 되어 있다. viewWillDisappear() 함수는 뷰가 사라질 것이라는 의미를 함수명에 내포하고 있어서 LifeCycle을 확인하지 않아도 대략적인 시점을 예측할 수 있다.

함수명이 무조건 길어진다고 좋은 것만은 아니지만 가독성에 도움을 준다면 어느정도의 길이는 상관이 없다고 생각이 된다. 그리고 최근에는 IDE 환경이 좋아서 소스 코드 전체를 키보드로만 입력하지 않아도 되기 때문에 가능한 일인것 같다.

적용할 것

  1. 현재 작성중인 코드의 변수명 및 함수명이 어떤 내용을 의미하는지를 내포하고 있는지 확인한다.
  2. 최신의 코딩 스타일이 무엇인지 확인한다.
  3. 본문에 포함된 코드중 이해가 안되는 코드는 실행해본다.
이 글은 read 카테고리에 분류되었고 태그가 있으며 님에 의해 에 작성되었습니다.