Table of Contents

6월 7일

대이작도 소이작도 다녀옴. 인천 차이나타운에 다녀왔는데, 여기 춘장이 맛이 좋다. 춘장 뒷맛에 콩맛이 느껴지는게 깊이가 있어!

6월 24일

오늘 구입한 것

요즘 뭘할까 계속 고민중.

6월 28일

Nokia6100Test 프로젝트 정리

  1. ResouceFilter에서 main_*.c 파일 exclude 한거 뺌
  2. 현재 모든 파일이 eZ430_WSM_ROOT12이 ez430_WSM_ROOT_LINUX으로 연결이 되어 있었는데(아마도 리눅스 환경으로 바뀌면서) 이걸 다시 eZ430_WSM_ROOT 으로 바꾸었다.

다음에 리눅스에서 할때는 다시 Linked Resouceces 에서 환경변수를 eZ430_WSM_ROOT을 ez430_WSM_ROOT_LINUX 로 바꾸면 되겠군!

… 음

통신하는 파트로 넘어가자. Serial포트로 신호를 보내면 LED 깜박이는 거를 만들어 보자.

main_ED.c 와 main_AP.c 분석중

질문:

  1. VLO가 뭐지? → A feature of most 2xx devices is the very low oscillator (VLO). This oscillator is designed to give a . VLO는 기본 세팅에서 12KHz로 작동한다고 한다. MSP430F2274도 그럴려나?

네트워크 링크 연결없이 그냥 Send 해봤는데 스펙트럼 애널라이저에 신호가 뜨지 않는다. CC2500의 신호범위 (2400MHz ~ 2483.5MHz), 그런데 주파수는 어떻게 바꾸지? SimpliciTI 라이브러리에서 채널을 바꾸면 주파수도 변하나?

참고:

6월 30일

머리속에 드는 생각 - 지금 아니면 못할 일들은 무엇인가? - 나는 언제 보람을 느끼나: 여러개 하는것 보다, 작은것의 다양한 뷰포인트를 볼 때 보람을 느낌.

이 두가지 생각에 따라서 내 일상이 흘러가면 좋겠다. 그리고 실행력있게.

Growing Object-Oriented Software, Guided by Tests

어제 사당 반디앤로니스에서 구입한 책. 코딩도조 책에서 언급이 있었는데, 주영님이 인사이트 블로그에서 추천하시는 듯 해서 제대로 읽어 볼려고 구입.

이 책에게 바라는 점:

<2013-06-30 일 11:31>

이책을 영어로 읽었으면 얼마나 스트레스 받았을까? 반대로 스트레스 받지 않고 영어로 읽을 방법 없나? TDD가 스트레스 줄이면서 코딩하는것을 가르쳐 줬듯.

5p 점진적 개발

  점진적인 개발에서는 모든 꼐층과 구성 요소를 구축한 다음 그것들을 마지막에
  통합하는 대신 시스템을 기능별로 구축한다. 각 기능은 시스템의 모든 관련
  부분에 걸쳐 전 구간에 이르는 '조각'으로 구현한다. 

7p 테스트 주도 개발의 황금률

  실패하는 테스트 없이는 새 기능을 작성하지 말라.

나에게는 잘안 지켜지는 률.

16p 값과 객체

  시스템을 설계할 때는 값과 객체를 구분하는 것이 중요하다. 여기서 값은 변하지
  않는 양이나 크기를 나타내며, 객체는 시간이 지남에 따라 상태가 변할지도    
  모르지만 식별자가 있는 계산절차를 나타낸다.

최대한 객체를 적게 만드는게 사이드 이펙트와 의존도를 줄이는 이라고 한다.

객체를 변경하는것 보다 변경할 때마다 값으로 새롭게 생성해서 쓰는 방법 연구필요.

17p 메시지를 따르라

객체 간의 의사소통에 초점을 맞추는 행위가 어떻게 설계를 바꿀까? 앨런케이의 말이 이해는 같지만 그게 구체적으로 설계를 어떻게 바꿀지는 생각 못해봤는데, 아니 ㅡ.ㅡ; 잘 이해가 안갔다. 앨런케이말은 한번에 이해 안가니깐, VPRI 스태프들도 그랬구 .

19p 묻지 말고 말하라?

문지 말고 말하라는 무슨 말이지?

  1. > 호출할때 여러 메소드의 체인을 통해 묻는것보다. 묻는 것 자체에 말하는

메소드(내부적으로는 질문을 통해서 말하고 하는 답을 구하겠지만)를 쓴다.

((EditSaveCustomizer)
master.getModeliable().getDockablePanel().getCustomizer()).getSaveItem().setEnabled(Boolean.FALSE.booleanValue());

// 대신에 
master.allowSavingOfCustomizations();
// 를 쓰는게 낫다는 이야기

이거 컬렉션 쓸 때 체인으로 많이 부르는데, master가 대신 묻지 말고, master가 원하는 답을 정확하게 이야기 하도록 하는게 중요.

또 많이 쓰는 패턴으로 컬렉션에서 filter 하는 예제도 알려주는군

if (carriage.getSeates().getPercentReserved() < percentReservedBarrier)

보다는

if (carriage.hasSeatsAvailableWithin(percentReservedBarrier)
#+END_SRC

그런데 내경우는 이런 경우 아래처럼 한번에 호출되도록 만들기는 하는데, 정확하게 이름을 뭐로 할지 고민이 되는 경우가 많다. 영어의 문장 구성하는게 어려워서 그런다. 컬렉션 사용하는 이런 패턴도 몇가지로 나눌 수 있는데 조사할 필요가 있다. 워드의 코드 보면, 이런 법칙을 참 짧고 우하하게 쓴다.

https://github.com/WardCunningham/Smallest-Federated-Wiki/blob/master/server/sinatra/stores/file.rb

그런데 이런 코드를 보면, 구지 추상화 하지 않았다. 음 그냥 스몰토크 마이크로 패턴.

그런데 재밌는것은 https://github.com/WardCunningham/Smallest-Federated-Wiki/blob/master/server/sinatra/page.rb

Page 클래스를 만드는 것은, 위키의 구조로 부터 객체를 발견하는 과정에서 만들어진 파생물 같은 느낌이다. 시나트라에서 코딩한다면 구지 Page 클래스를 만들거 없이 파일이나, DB를 통해서 페이지를 생성하고 지우고 그럴텐데, Page라는 클래스를 통해서만 위키 페이지를 다룬다.

무엇을 객체로 만들고 객체에는 어떤 메소드가 있어야 하는지에 대한 답을 구하는 방법을 알면 좋겠다.

Law of Demeter가 뭐지?

  More formally, the Law of Demeter for functions requires that a method M of an object O may only invoke the methods of the following kinds of objects:
  1. itself
  2. M’s parameters
  3. any objects created/instantiated within M
  4. O’s direct component objects
  

코드의 추상화 레벨을 여기 저기 뛰어 넘지 않고, 최대한 주변의 관련있는 친구들과 관계를 맺는 법칙이군.

요즘 산만한 나에게 필요한 법칙. 정리가 필요해.