화요일, 3월 22, 2011

역시 코드 설계(?)의 기본의 기본은 로깅 인듯합니다.
로깅관련 기능을 소홀히(디버깅하기 위한 로그는 나오므로)하고 넘어가고,
나중에는 다른곳(?)에서 만들었던 로그를 가져다 쓰려했더니 불라 불라 문제가 많이 생깁니다.
사실 불라불라 문제라기 보다는 내 입에 맞지않는 혹은 용도에 맞지않는것이지요.

그나마 좀 낳은것은 전체가 일관되게 다 적용되어 있어서 부모가되는 혹은 부모의부모만 수정하고 적당하게 인터페이스를 만들어서 끼워주면 될듯해서 위로(?)가 되어집니다.

어디서 본 코드 설계에대한 기본 원칙이 있는 듯한데, 저도 그런 비슷한 것을 만들어 놓고
일할때 체크리스트 처럼 하나씩 점검해야하지 않을까도 싶습니다.

너무 구조화시키는 걸지도 모르겠네요.  몸으로 깨지면서 배우는게 최고인데...

월요일, 3월 21, 2011

코드를 사람이 이해하기 쉽도록 잘 만드는 것은 참 어려운듯합니다.

사람도 이해하고, 기계도 이해하기 쉽게 말입니다.
사람은 가독성 및 의사 교환, 코드로 문서 대신하기 등까지 생각해야하고
기계는 당연히 안전성과 속도 일듯합니다.

연속되는 exception 처리를 해야하는 코드와
1. a 수행

2. a 수행 정상 이면 b 수행

3. b 수행 정상이면 c 수행

4. 후속처리

2-1. a 수행 비정상이면 d 수행

4-1 후속 처리

.....

이런 코드가 반복 되고 미묘하게 중복 되는 코드가 발생 하는 상황에서 처리가 애매 합니다.
끙 오전내내 끙끙 거리고 있는데, 결국은 미묘하게 변하는 코드를 공통화 하기 보다는 코드가 중복되고 장황하게 늘어지더라도 그대로 놔두어야 겠다도 싶습니다.

부모 코드가 복잡하게 처리되는 상황에서
중복되는 코드를 공통화 하겠다고 if else 내지는 상속해서 처리하기 보다는 말입니다.

좀더 멋진(바른) 코드는 어떤 것일까요?
더 치열하게 고민하고 해야하는데 아쉽네요. 일단 좀더 고민해 보아야겟어요~

목요일, 3월 10, 2011

web project 내보내기

internal package 존재하여 org.eclipse.jst.j2ee.web 프로젝트를 부모로하는 fragment project 이어여 합니다.  소스코드는 변수 이름이 직관적이어서 설명이 없어도 쉽게 이해할수 있을듯 하여 생략합니다.

IWorkspace workspace = ResourcesPlugin.getWorkspace();
IWorkspaceRoot root = workspace.getRoot();
IProject project = root.getProject(projectName);
if(project == null) {
throw new Exception(projectName + Messages.WARExporter_0);
}

WebComponentExportDataModelProvider provider = new WebComponentExportDataModelProvider();
IDataModel dataModel = DataModelFactory.createDataModel(provider);

dataModel.setProperty(IJ2EEComponentExportDataModelProperties.PROJECT_NAME, project.getName());
dataModel.setBooleanProperty(IJ2EEComponentExportDataModelProperties.OPTIMIZE_FOR_SPECIFIC_RUNTIME, false);
dataModel.setBooleanProperty(IJ2EEComponentExportDataModelProperties.EXPORT_SOURCE_FILES, exportSource);
dataModel.setBooleanProperty(IJ2EEComponentExportDataModelProperties.OVERWRITE_EXISTING, overwrite);
dataModel.setProperty(IJ2EEComponentExportDataModelProperties.ARCHIVE_DESTINATION, destnateion);

IVirtualComponent component = ComponentCore.createComponent(project);
dataModel.setProperty(IJ2EEComponentExportDataModelProperties.COMPONENT, component);

WebComponentExportOperation operation = new WebComponentExportOperation(dataModel);
return operation.execute(new NullProgressMonitor(), null);

다음에는 톰켓 프로젝트 구성과 설치등을 적어볼게요.

월요일, 3월 07, 2011

나의 자질에 핑계하지 않고,
나의 모든 것을 정직하게 쏟을 수 있는 무언가가 있으면 좋겠습니다.

글 쓰다보니, '무언가'라고 핑계하고 있네요.
쏟아야 할 무언가는 넘치는데, 무엇인가 두려워하고 있네요.
예를 들어,
     무식함.. 기초 지식.... ㅋㅋㅋ 넉두리할때 책보기로...
     혹은 이제 30대 중반이 되어버린 나이(?)... ㅋㅋㅋ 아직도 20대 초반이라고 착각하는데..
     미래에....

요즘, 가지고 있는 지식을 중요하게 여기기 보다는, 창조(?)적인 것이 무엇인지 잘 모르지만, 창조적이라는 것에 좀더 귀 기울이려고 하고 있습니다.


아참 희찬이가 이제 초등학교 4학년 올라가는데요.
아이가 무언가 쉽게 포기하고 타협하는것을 보게 되는데...
부모와 타협하고 희성이와 타협하고 더 걱정스러운것은 자신과도 타협하게 됩니다.

희찬이가 정말 중요한 것 혹은 가치에는 타협하지 않았으면 좋겠습니다.

추구하고 탐구하고 고민하는 아이가 되었으면 좋겠습니다.
작은 일에도 인생의 의미와 기쁨을 발견해 가는 아이 였으면 좋겠네요.