달력

072010  이전 다음

'2006'에 해당되는 글 335건

  1. 2007/02/15 Raible의 TSE 2006, Spring-OSGI 요약
  2. 2007/02/15 Raible의 TSE 2006, Spring 큰 그림(i21 CTO Adrian Colyer 발표)
  3. 2007/02/15 DDD에 대한 Raible의 간결한 정리
  4. 2007/02/15 DDD에 대한 흥미로운 대화(토비님과)
  5. 2007/02/15 Raible의 TSE2006, Spring Web Flow 요약
  6. 2007/02/15 Raible의 TSE 2006, Rapid Web Application Development 요약
  7. 2007/02/15 Spring Experience 2006에 참가한 토비님과의 대화(첫날 밤)
  8. 2006/12/31 카카오 열풍, FAD의 일부가 되어 버린 나 (2)
  9. 2006/12/31 세밑 구글리더로 옮겨가며... (7)
  10. 2006/12/31 흥미로운 주석의 위치 (4)
  11. 2006/12/30 어떻게 함께 할 것인가? (3)
  12. 2006/12/28 과연 누가 장애인인가?
  13. 2006/12/27 Younghoe.info v2.1을 구상하며 (4)
  14. 2006/12/23 JVM에서는 자바만 구동한다? (깨지는 상식) (5)
  15. 2006/12/23 글쓰기 이책 한권이면 충분하다:외수님의 내공서 (3)
  16. 2006/12/22 당신의 주말은 몇개입니까: 주부의 심정을 들어주기 (2)
  17. 2006/12/22 국제화 되는 한글 (2)
  18. 2006/12/22 컴포넌트의 설계 (2)
  19. 2006/12/20 개발자로 살아가는 길 (6)
  20. 2006/12/20 현행화의 어려움, 대책은? (4)
  21. 2006/12/19 내가 사용하는 이클립스 팩(SDK + 플러그인 모음) (2)
  22. 2006/12/19 지훈씨 포스트를 통해 시작된 블라블라 파노라마 (3)
  23. 2006/12/18 적의 화장법: 내 이면에서 어떤 일이 벌어지고 있는가? (2)
  24. 2006/12/18 기동성 훈련단: 이번 주도 화이팅 (2)
  25. 2006/12/16 토요일 오전, 그저 기록하기 (4)
  26. 2006/12/16 울 준비는 되어 있다: 에쿠니 가오리 심화 학습 (2)
  27. 2006/12/15 메타모델과 스테레오타입에 대한 이해를 돕는 한장의 그림 (7)
  28. 2006/12/15 Search 2.0 검색 인터페이스에서 배운다 (1)
  29. 2006/12/15 일등놀이의 알수없는 쾌감 (6)
  30. 2006/12/15 구글 스타일 (5)
  • What is OSGi?
OSGi stands for Open Services Gateway initiative.


더 감이 오게 정의된 표현은 "The Dynamic Module(Bundle) System for Java"
특징을 훑어 보면

- 모듈화 된 시스템을 위해 고안되었고
- visibility rules을 갖고 있다.(자바의 private/public과 유사한)
- a resolution process(의존성 관리를 위한)가 있고
- 버전 인식이 가능하고
- 설치, 삭제, 갱신, 구동 등이 모두 동적으로 실행 가능하며
- 번들 형태로 서비스를 배포(publish)할 수 있고, Service Registry가 있다.

OSGi 컨테이너

  • Open-source implementations: Equinox, Felix (Apache), Knopflerfish
  • Significant Enterprise usage: Eclipse, IBM (WebSphere, Lotus), JOnAS, interest from BEA and Oracle

  • What problems does it help us to solve?

어디어 써먹을 수 있는가?

Visibility
reflection이나 classloading으로도 접근이 불가능하다. 즉, black-box 기반의 CBD가 가능하고, 보안에도 유리

Operational Control
OSGi 콘솔이나 JMX를 통해 모니터링이 가능하다. 현재 WAS류가 제공해주는 hot deploy 기능보다 한발 더 나아갔다고 해야 하나. 최대 강점은 모든 조작에 재시작이 필요없을 것이란 점


  • How does it work?

What is an OSGi bundle?
jar 형태이며 META-INF/MANIFEST.MF 파일에 다음의 선언만을 필요로 한다.
Bundle-SymbolicName: org.swf.beans

이클립스는 OSGi 번들을 플로그인로 관리하려 생성/편집할 수 있다.
JSR 277 (Java Module System)과 유사해보이는데, 이 녀석은 동적이지 못하여 발표자 등은 OSGi에 기반한 JSR 291 (Dynamic Component Support for Java SE)에 밀릴 것이라고 예상했다.

  • Where does Spring fit in?
  • Spring-OSGi
Spring-OSGi는 컨테이너를 불문하고 "OSGi powered Web Application" 구현을 가능하게 하기 위함이다.  

Spring modules (spring-core, spring-beans, spring-aop) will be shipped as OSGi bundles in Spring 2.1.

2.1 버전에서 Spring이 완전히 OSGi를 수용할 모양이다.
OsgiBundleXmlApplicationContext is a Spring application context based on an OSGi bundle.

There is a "bundle:" prefix for specifying an explicit path.
classpath:나 file: 만이 아닌 bundle: 을 지원하는군.

ConfigurableBundleCreatorTests. This automatically creates an OSGi bundle containing the tests on the fly.

태생부터 테스트를 준비하고 등장한다는거~ 역시 Spring 답다. ^^

사용자 삽입 이미지
그림을 보니까 느낌이 온다. 그렇군. 웹 애플리케이션도 OSGi 모듈로 모두 배포한다면...

이전 프로젝트에서 jar로 모듈화 해서 배포한 것이랑 war로 통으로 배포한 것이랑 별 차이가 없었다.

그런데, OSGi 모듈로 인식되는 jar라면!

Equinox is the only OSGi container that currently supports web applications.

It uses a "bridge servlet" that acts as a front controller and dispatches servlet requests to bundles. To package your application as and deploy it to Equinox, you basically have to create a WAR with the bridge servlet as the only entry in web.xml and the only JAR in WEB-INF/lib is servletbridge.jar. Everything else is packaged under /WEB-INF/eclipse.

마무리에 Raible은 다음과 같이 정리한다.

Will OSGi containers be the next generation of application servers?

나는 요즘.. 대학원에서 배웠던 원론적인 이야기들이 차츰 실현되는 것을 느낀다.
객체지향 초창기 바이블이 이야기하던 것이 DDD를 통해 구현될 조짐을 보이고 있고
CBD 바이블에서 이야기하던 것을 OSGi는 매우 충실하게 구현해낼 것 같다.  

원문: [TSE] Spring-OSGI with Adrian Colyer
Posted by 영회
전체를 고르게 요약한 것이 아니라 관심사 위주로 정리합니다.(모르는 것 중점적..ㅡㅡ;)

Data Access Layer
기존의 JDBC, iBATIS, JDO, Hibernate, TopLink 지원에 더하여
2.0에서는 JPA 추가(OpenJPA, TopLink Essentials and Hibernate)
2.1: JPA namespace and support for common non-standard features (for example, criteria API and user types)

CICS and IMS 연동 지원한다는데.. 이넘들 어케 테스트해볼 수나 있는 것인가?
LdapTemplate도 있지만 Spring LDAP 쓸만 하다.


Service Layer
MethodInvokingJobDetailFactoryBean으로 스케줄링 간편하게...
TaskExecutor로 비동기로 작업 실행 가능(Simple confugiration change to switch from thread pool to commonj work manager.)

2.0에서 JmsTemplate + Message-driven POJO지원하며 Tx 참여도 가능
OXM (Object XML Mapping)은 Spring Web Services

ESB와의 관계: Mule 2.0은 Spring 기반으로 다시 작성되고 있음

ESB - Mule integration: Spring application context support simple event framework:

ApplicationEventPublisher and ApplicationEventPublisherAware, ApplicationEvent and ApplicationListener. Simple for a bean to publish and listen to events. Mule can integrate into this as a custom event multi-caster.

Configure a bean to listen only to events of interest using MuleSubscriptionEventListener. You can publish events to mule using a normal ApplicationEventPublisher interface and create a MuleApplicationEvent to publish.

보안: "Spring Security is one of the hidden jewels in the bunch here."... Acegi ACL


Clustering
Tangosol Coherence, GigaSpaces, Terracotta


Presentation Layer
SWF can be used with servlets, portlets and multiple web frameworks.

Spring IDE가 AOP를 지원할꺼라는 깔끔한 소식.

Web 2.0 / Ajax / RIA를 위한 Spring의 지원: AbstractXsltView, Spring Web Services, DWR and JSON-RPC

Acegi is apparently looking at doing better support for Ajax and DWR. DWR 2.0 has a new Spring <dwr:*> namespace that allows you to easily nest a <dwr:remote> tag in a bean definition and expose that bean as a JavaScript object.

If you need a real web service, Spring supports that. Use XFireExporter for simple RPC style services. For everything else, there's Spring Web Services

AOP ...
Rapid Application Development: Spring 2.0 supports beans written in alternative languages: JRuby, Groovy and Beanshell. ROO (Real Object Oriented) application. Domain first, infrastructure second. Full static rapid development and has been validated with clients to great success.



원문: [TSE] Keynote: The Bigger Picture with Adrian Colyer
Posted by 영회
[TSE] Domain Driven Design with Eric Evans라는 짧은 글을 통해서 120% 공감할만한 글을 올렸다.

Models are distilled knowledge about the domain and tailored to the situation you're in.

모델은 의사소통 수단이라는 보편적인 정의 이후에 만나게 되는 최고의 정의다!!1

이 정의의 가치를 알기 위해선 이 바닥 구력이 필요하다. "distilled"는 형용사지만 엄청난 의미를 내포하고 있다. 지나치게 공학에만 집착하게 되면 모델을 자꾸만 코드와 엮어서 부풀어오르는 것을 좌시하는 수준이 아니라 조장하는 경우가 왕왕 있다.

모델은 그야말로 "액기스"일 때 진가를 발휘하지 않을까?


more..


한편 모델은 "situation" 혹은 "context"에 밀착 되었을 때 역시 빛이 난다. 모델링을 자꾸만 형식화 하고 특단의 방법론이 있는 양 굴면... 그저 값비싼 문서화 도구를 사용하는 일이 된다.

  • Meaning is specific to a context.
  • Usefulness is specific to some set of scenarios.
  • Practicality is determined by enabling technology.
Raible의 요약을 보고 단박에 공감이 가는 이야기를 좀 풀어보면... 모델은 결국 도메인의 주인인 고객이 만들어야 한다. 우리같은 사람은 풀어가도록 도와주는 역할 이상은 힘들다. 왜냐하면 컨텍스트에 대해서는 오랫동안 그 일을 해온 사람만이 제대로 알 수 있기 때문이다.

반드시 특정 시나리오에 대해서만 모델링을 하는 것 즉, 전략적인 모델링이 좋다. 나도 한때는 화면 입출력 데이터는 물론이고 스토리보드마저도 UML로 모델링 해야 한다고 고집을 부렸던 과거가 있다. 하지만, 돌아보면 설익은 고집으로 주변 사람들을 힘들게 하지 않았다 싶다. 화면 모델링은 구체적인 화면을 빨리 만드는 것이 가장 유용하다. 고객의 요구변화에 맞춰 재빠르게 화면을 변경할 수 있는 인력과 도구만 있다면...

대개의 경우는 수많은 시퀀스도 간결한 상태도로 대치할 수 있다. 문제는 상태 변이에 대한 모델링을 할 수 있는 사람이 드물다는 것인데, SOA 열풍과 함께 등장한 BPM 모델링 도구는 이러한 사상의 결과인 것 같다. 상태도보다는 그리기 쉬운 표현법을 제공한다.

나는 무엇보다 모델링의 Practicality 에 관심이 많다. 그래서, 모델링 가이드를 하는 회사에서 다소 구분 되어지는 내 영역을 찾은 것 같다. 모델과 구현 기술을 엮는 작업. 그 과정에서 Spring 팬이 되었다. IoC(Inversion of Control)와 Non-invasion이 강화될수록 모델과 구현 기술(enabling technology)의 긴밀함이 보장된다.

결국, 엔지니어 관점의 진정한 MDA/MDD 실현이나 Round-trip engineering은 CASE 툴의 오로지 팬시하기만 한 기능으로는 불가능하다. 순수 자바로만 프로그래밍 하는 애플리케이션이라면 CASE 툴로도 충분히 가능할지 모른다.

하지만, 그야말로 System Integration이 필요한 대부분의 애플리케이션에서는 Spring과 같은 제약이 적고, 견실한 기술이 도리어 모델링도 돕는다.

현장에서 느낀 것을 압축한 것이 올바른 모델링 활용법 익히기 캠페인인데... Raible의 글에서 보이는 Eric Evans의 생각도 크게 다르지 않은 것 같다.

Eric's Favorite Modeling Tools (currently available)

  • Whiteboard (with a digital camera for persistence)
  • IDE
  • Unit tests
  • Our Mouths and Ears
끝으로 Raible은 무지막지하게 기대할만한 TSE 세션 소개를 한다. Toby님이 듣고 오시리라 믿는다.
In this presentation we'll study an internal web application developed by a major Australian corporation. The application uses a "real object oriented", or ROO, architecture. That means we swapped out those anemic domain objects, fat services, and those repetitive DAOs for rich domain objects that utilize transparent persistence and encapsulate business rules.
  1. 호들갑의 화신임을 고백합니다. [본문으로]
Posted by 영회

TSE2006 둘쨋날 저녁 파티를 마치고 숙소로 돌아온 토비님의 메시지를 시작으로 즐겁고 흥미로운 대화가 시작되었다. 모 단체와는 달리 허술하기 짝이 없는 검열을 통과한 일부를 발췌... ㅋㅋ

더 자세한 TSE2006 둘쨋날 내용은 토비님이 포스팅하셨습니다:
The Spring Experience 둘째날

Toby님의 말: ^^
[永會] 님의 말: 헛.. 이제 마치고 숙소겠군요
Toby님의 말: 네. 파티까지 마치고 오니 11시군요.

[永會] 님의 말: Raible은 역시 DDD엔 별 관심이 없나 봅니다.
[永會] 님의 말: 역시.. 웹 관련 세션만 듣고 심하게 자세히 메모하더군요
Toby님의 말: 네..ㅋㅋ

[永會] 님의 말: Appfuse와 Spring live에 바로 반영할 목적을 지닌것 같아요
Toby님의 말: 그렇군요. 파티때 있나 둘러봤는데 안보이더니
[永會] 님의 말: sales 관점이 강한 것 같습니다. 
Toby님의 말: 네.. 자기 장점을 잘 아는 거겠죠
Toby님의 말: 웹프레임워크쪽이 전문일테니까요

[永會] 님의 말: 전.. 웹쪽은 Raible에게 듣고 토비님께 DDD 들어서
[永會] 님의 말: 보완적으로 배울 것 같습니다. 감사.

Toby님의 말: 오늘은 4개 세션을 DDD로만 들었는데 아주 좋았습니다
Toby님의 말: 감을 잡았다고나 할까.. ㅋㅋ
Toby님의 말: Keith Donald가 예제를 아주 잘 만들어서 이해하기 쉬었어요
Toby님의 말: 완전한 소스코드도 준다고 하니.. 아주 기대만빵입니다
[永會] 님의 말: 와우~

Toby님의 말: 최초로 공개되는 DDD적용코드... 얼마나 찾았던지.
Toby님의 말: 근데 Eric Evans이 DDD트랙때 계속 들어와있어서
Toby님의 말: Keith Donald도 긴장했더라고요..
Toby님의 말: 중간중간에 좀 난해한 질문이 나오면 Eric에게도 물어보기도 하고.
Toby님의 말: 자신을 DDD Believer라고 하던데. 저도 그렇게 될 것 같네요.

[永會] 님의 말: 마치 그 방면 오리지널리티를 갖은 학자가 실무자에게 묻는 격이군요
Toby님의 말: 반대죠. 실무자가 오리지날 창시자에게 물어보는..
[永會] 님의 말: 네 제가 반대로 얘기했네요. ^^

Toby님의 말: Eric시간에는 세션장이 가득찼었는데 그 이후는 많지 않더라고요
Toby님의 말: 워낙 쟁쟁한 세션들이많아서.. ㅋㅋ 저도 Rod Johnson이 하는 거 듣고 싶었지만
[永會] 님의 말: 아무래도 DDD보다는.. Spring 2.0 개괄적인 것이 더 인기였겠죠
[永會] 님의 말: 제 생각엔.. 토비님처럼 이미 Spring 2.0을 파악하고 간 사람이 많지는 않을 것 같은데요

Toby님의 말: DDD를 파느라. 한 자리를 계속지켰죠. 일요일에는 Acegi의 Ben Alex가
Toby님의 말: ROO라는 것을 애기하는데 일종의 DDD응용 아키텍처더라고요
Toby님의 말: Real Object Oriented라고.
Toby님의 말: 이제 SUN blueprints의 3-tier를 벗어나서 다양한 layered architecture들이 등장하는 시기인 것 같네요
Toby님의 말: 특히 Domain layer를 독립하는 구조의 DDD아키텍처들이 많이 나올 것 같습니다
Toby님의 말: Keith도 그렇고 Ben도 그렇고 다 실무에 적용해서 성공을 했다고 하니 매우 고무적이죠

Toby님의 말: 한국 가면 영회님한테 모델링을 좀 배워야겠어요. 체계적으로.
[永會] 님의 말: 흠.. 저도 모델링 가이드 하면서 늘 제어 측면이 복잡해지는 걸 보거든요
[永會] 님의 말: 그러다보면.. 제어기 중심의 모델이 나오고 결국 구현된 모습은 Fat Service죠
[永會] 님의 말: 그건 아니라고.. 제가 백날 열을 올리지만..
[永會] 님의 말:  문제는 도메인만 포착해서는.. 구현할 방안을 내놓지 못하니까..
[永會] 님의 말: 아마.. 그게 가능해진다면 그렇게 가이드가 되도록 노력하는게
[永會] 님의 말: 일종의 직업적 사명감이 될 것 같습니다.
Toby님의 말:  네..

Toby님의 말: 일반적으로 분석모델과 실제디자인이 많이 차이가 나나요?
[永會] 님의 말: 문제는.. DDD적 접근이 아닌 현행의 BEC(Boundary-Entity-Control) 방식의
[永會] 님의 말: 접근이 대개의 경우.. 근저를 이루는데 이렇게 하게 되면.. 모든 사용 시나리오에
[永會] 님의 말: 화면과 엔터티(도메인 로직) 사이에 제어기가 들어가는데..
Toby님의 말: 네

[永會] 님의 말: 제어기가 사실 dispatcher 개념으로 인식해야 하는데
Toby님의 말: 그렇죠
[永會] 님의 말: 마치 제어기를 로직/ 엔터티를 디비 엔티티로 보니까
Toby님의 말: 그럼 Entity에 behavior가 들어가지 않나요?
[永會] 님의 말: 그걸 교정하는게 힘들구요
Toby님의 말: Anemic Entity?
[永會] 님의 말: 네. 교정을 해봐야 .. 제어기가 너무 많아져서
Toby님의 말: 네..
[永會] 님의 말: 의존성 처리에 시간을 투자하다 보면
[永會] 님의 말: 정작 도메인에 대해 고민할 시간이 없습니다.
[永會] 님의 말: 결국.. 컴포넌타이징/패키지를 어떻게 구성하느냐로 시간을 너무 허비하죠
Toby님의 말: 오브젝트를 사용했다 뿐이지 transaction script나 다를바 없군요
[永會] 님의 말: 네.

[永會] 님의 말: 그보다는.. 화면과 도메인을 명확하게 하고 중간에.. 이들 사이의 디스패칭은..
[永會] 님의 말: 실측 기반으로 시행착오법을 쓰거나 테스트 트리븐으로
[永會] 님의 말: 시나리오별 관리를 하는 것이 현재보다 훨씬 개선된 접근이 될 것 같습니다.
Toby님의 말: 네..

[永會] 님의 말: 이걸.. 입증하기 위해선.. DDD에 대한 최소한의 RI가 필요한데.. 그게 없어서.. 생각만 할 뿐이죠
Toby님의 말: 암튼 서울 가게 되면 제가 좀 괴롭히겠습니다
[永會] 님의 말: 저도.. 맞대응을..
Toby님의 말: ㅎㅎ

Toby님의 말:  오늘 같이 애기한 개발자중에는 50대도 있지만 20대 초반도 있더라고요..
[永會] 님의 말: 다양한 스펙트럼이네요
Toby님의 말: 네. 외국 IT컨퍼런스의 특징이죠. 그게 젤 부럽죠.. ㅜㅜ
Toby님의 말: 백발의 아저씨들도 있고. 펑크스타일의 젊은 이들도 있고 그래도 잘 어울려서 얘기할 수 있으니..
[永會] 님의 말: 네.. 저도 TSSS 가서
[永會] 님의 말: 젊은 mule 개발자에게 백발의 교수님 같은 분이 질문하는게 인상적이다 못해 감동적이었는데.. 
[永會] 님의 말: 평범한 모습이군요.. 그들에게는
[永會] 님의 말: 하긴.. 저희 스터디에도.. 대학생 아들 둔 영보님 오십니다. 
Toby님의 말: 오호.. 그렇군요.
[永會] 님의 말: 요즘 Prototype 소스 코드 분석에 빠져서 사시죠.

Toby님의 말: 오늘은 일본 NTT에서 온 개발자를 한명 만났는데
Toby님의 말: 아시안 스프링 유저그룹을 만들기로 했습니다
Toby님의 말: 그 친구가 일본에서 스프링 커뮤니티를 준비한다고 하니
Toby님의 말: 여러가지로 교류도 하고 필요하면 서로 컨설팅도 해주고 할 생각이죠.
[永會] 님의 말: 와우..
Toby님의 말: 아무래도 아시아는 워낙 소외된 것 같습니다
Toby님의 말: 언어문제도 있고 정보도 제한되어있고

[永會] 님의 말: 토비님은 마치 저에게 DDD 전도사 같습니다. 
Toby님의 말:  핫핫..
[永會] 님의 말: 이미 저도 DDD에 대한 믿음이 꽤 있는데
[永會] 님의 말: 거의 확신을 심어주려고 하시네요
Toby님의 말: 어쩌다 보니. 지난 Spring세미나 준비하면서 부터

Toby님의 말: 사실 관심은 컸는데 실무에 적용하려니 너무 막막해서 좀 힘들었죠.
Toby님의 말: 이번 컨퍼런스때 많이 배우고 가면..다시 도전해볼 생각입니다
Toby님의 말: 사실 아직도 막막한게 많지만요. ㅋㅋ

[永會] 님의 말: 제가 그 세미나 가게 된 것도 고객사 여자 차장님이 알려줘서 갔는데
[永會] 님의 말: 그때까지만 해도 전 DDD의 Enabling Tech가
[永會] 님의 말: Spring인지 인지하지 못할때였습니다.
[永會] 님의 말:  그때 세미나 듣고 아주 인상적이었습니다.
Toby님의 말: Eric말이 Spring은 minimalism을 지향하기 때문에 DDD에 적합하다고 하더라고요
Toby님의 말: 거기에 AOP기술과 POJO기반의 컨테이너 등등이 결합해서 멋진 도구가 된 것 같습니다

[永會] 님의 말: 하긴.. 저도 모델링 오래 하지 않았지만.. 모델 관점에선 minimalism 추종자입니다.
[永會] 님의 말: 보편적으로 분석 모델이라고 칭하는 것 중에서 도메인 모델만 추리고
[永會] 님의 말: 그걸.. 구현을 통한 검증 과정에서 확신을 갖아나가는 방법
[永會] 님의 말: 이것이 진짜 모델링이 될꺼라 생각합니다.
Toby님의 말: 네..

[永會] 님의 말: 지금은.. 대개 모델링과 개발을 분리하거나 약간의 연결고리 정도로 보는데
[永會] 님의 말: 전.. 둘이 완전히.. 통합적  사고로 투영된다고 보구요.
Toby님의 말: 네.. 맞습니다. DDD의 철학이 그거죠.
Toby님의 말: 분석, 설계, 구현이 단일화된 관점으로 다뤄지는 거죠

[永會] 님의 말: 그러려면.. 반드시.. 모델이 고도로 응축된 산출물이 되어야 한다고 믿습니다.
[永會] 님의 말: 네.. 현장을 보면.. 고객들이 요구하는 팬시한 산출물에 맞춰주는라
[永會] 님의 말: 본질보다는.. 기법이 강조되어 전달되고
[永會] 님의 말: 게다가.. 무거운 CASE 툴과 결합하면 화학반응(?)은.. 상상 이상입니다. 
[永會] 님의 말: 제가.. 모델링에 회의를 느낄 정도였죠.

Toby님의 말: Eric이 강조한 것은 Modeling은 그 목적을 분명하게 가지는게 중요하다는 겁니다.
Toby님의 말: Keith는 그것을 영화를 만드는 것에 비유하기도 했죠
Toby님의 말: 하나의 팩트를 가지고도 다양한 영화를 만드는 것처럼.
[永會] 님의 말: 영화요?
Toby님의 말: real world의 특별한 관점을 가진 snapshot이라는 뜻이죠
[永會] 님의 말: 아..  모델링이 스냅샷이라구요
Toby님의 말: 네.. 목적을 가진 스냅샷이죠.
Toby님의 말: 목적에 따라서 다양한 모델이 나올 수도 있다는 거고요
[永會] 님의 말: 네.. 목적..

Toby님의 말: 하나의 완벽한 모델을 만들려고 하지는 말라고 하더라고요
[永會] 님의 말: 그게 핵심이죠.
[永會] 님의 말: 목적에 따라 다각도의 뷰를 정의할 수 있는데 대개 뷰 하면.. 4+1뷰식으로 얘기하죠..
[永會] 님의 말: 그건.. 초석이 되는 논문일뿐 시간이 지나고 장소가 바뀌고 사람이 바뀌면
[永會] 님의 말: 뷰도 바뀌는게 당연한 이치인데

Toby님의 말: DDD는 훨씬 실용적으로 접근하는 것 같습니다
Toby님의 말: 도메인엑스퍼트와 개발자간의 커뮤니케이션을 통한
Toby님의 말: 통일된 언어로 표현된 시스템의 문제가 바로 모델이라는 거죠
[永會] 님의 말: 넵.. 모델링 관점에서 보면... 일종의 Xtreme Modeling이죠
Toby님의 말: 네.. 그런 것을 지향하더라고요
Toby님의 말: 모델과 구현이 긴밀히 연결되어있어야 하는 이유중의 하나가
Toby님의 말: 변화에 쉽게 대응하기 위한 것이라는 거죠.
모델은 초반에는 잘 나왔는데.. 바뀌다보면 구현만 바꾸고 모델은 초기버전으로 남는 경우도 많으니까요
[永會] 님의 말: 넵.. 

[永會] 님의 말: 변화에 대한 적응성의 골자는 모델과 코드의 alignment를..
[永會] 님의 말: 사람이 인지하기 좋게 하는 것인데
[永會] 님의 말: 그걸.. 자꾸만.. 툴로 자동화 하다 보니
[永會] 님의 말: 사람들이 연계를 잊어버리도록 독촉하는 결과가 되죠

Toby님의 말: 툴을 써서는 변화의 속도를 따라잡기가 힘들죠. 특히 비주얼 툴...
[永會] 님의 말: 제가 모델링 도구를 쓰면서 느낀게.. 비주얼 툴을 포커스를 가지고 쓰면
[永會] 님의 말: 상당히 좋다는 것입니다. 
[永會] 님의 말: 종이나 PPT로는 시맨틱스 관리가 안되니까요..
[永會] 님의 말: 문제는.. 자신이 교육받은 방식으로
[永會] 님의 말: 그대로 쓰려는 습성을 못버리는게 문제죠
Toby님의 말: 네.. 보통 비주얼툴의 단점을 얘기할 때
Toby님의 말: 수정하는데 시간이 많이 걸린다는 거라고 하더라고요

[永會] 님의 말: 자동화 기능을 풀로 쓰려는 고객들의 잘못된 욕구가
[永會] 님의 말: 도메인의 문제에 툴의 문제와 모델링 프로세스의 문제를 가중시켜서
[永會] 님의 말: 이제 막 모델링을 익힌.. 도메인 엑스퍼트나 개발자들을
[永會] 님의 말: 안개 낀 도로로 몰아버리는 격이죠
Toby님의 말: 네.. 쩝.

[永會] 님의 말: 근데.. 전..  처음부터 그런 모습만 목격하다가
[永會] 님의 말: IoC 덕에 그래도 인터페이스 제너레이션의 의미를 찾는 법을 작년에 경험했고
[永會] 님의 말: 돌아오는.. 해에는.. DDD가 이런 현실을 조금이라도 개선해주리라고 믿습니다. 
Toby님의 말: 네..
[永會] 님의 말: 그래서.. 즐겁네요
Toby님의 말: DDD는 더 많이 연구가 필요한 분야일 것 같네요
Toby님의 말: 암튼 DDD시대가 도래하기를 기대하고 있습니다
[永會] 님의 말: 넵..

Toby님의 말: 사실 Spring/Hibernate를 적용해서 나름 POJO기반의 로직을 구현했다고 해도
Toby님의 말: 시스템이 복잡해지면 그 장점이 많이 사라지더라고요
Toby님의 말: SQL에 로직을 담는 것보다는 훨 낫지만
Toby님의 말: 자바같이 코드가 redundant한 랭귀지로는 POJO를 써도
Toby님의 말: 로직이 복잡해지면.. 읽기가 힘들어지죠
Toby님의 말: anemic model + big service layer의 한계가 그것인 것 같습니다

(중략)

[永會] 님의 말: 피곤하지 않으세요?
Toby님의 말: 네.. 사실 피곤해서 저녁을 굶고 그 시간에 잤더니 지금은 쌩쌩합니다
[永會] 님의 말: 헉
Toby님의 말: 배는 고프지만..
Toby님의 말: 파티때 살사랑 치즈 등등이 나와서 그걸 조금 먹었죠
Toby님의 말: 빈속에 간만에 맥주도 한잔 했더니 기분이 좋네요..
Toby님의 말: 내일은 developerworks에 참관기를 써서 넘겨줘야 해서 바쁠 것 같습니다
Toby님의 말: 일정상 내일까지 달라고 하더라고요
[永會] 님의 말: 네..   점심 먹으라고 호출하시네요. DDD 얘기 즐거웠습니다. 
Toby님의 말: 네.. 좋은 주말 보내세요

Posted by 영회
[TSE] Designing Stateful Web Application Control Flow with Erwin Vervaet

Spring Web Flow (SWF) does not fit into an application or a feature where free-flow navigation is required. It works best where you need to lock down and control navigation.

Spring Web Flow는 자유로운 네비게이션이 아니라 네비게이션 흐름을 관장하고자 할 때 필요
하다.

Core Functionality

  • Navigation is controlled by a flow (complete navigational control)
  • Automatic state management (scoping, cleanup)
  • A flow is a reusable application module (fully encapsulated: input/output contract, black box)

전체적인 개념 설명

SWF is not a general purpose workflow engine. It's simplified for use with web conversations and lacks features like split and join.
범용적인 워크플로우 엔진이 아니라 웹상에서의 Continuation을 위해 단순화 된 것이다. 고로 플로우의 fork/join이 안된다.

continuation이란?

서비스와의 링크는 어떻게 시키냐?

<bean-action bean="phonebook" method="search"> 
    <method-arguments> 
        <argument expression="flowScope.searchCriteria"/> 
    </method-arguments> 
    <method-result name="results"/> 
</bean-action>

bean 이름과 메소드를 지정해주면

public interface Phonebook {
   public List<Person> search(SearchCriteria criteria);
   public Person getPerson(Long id);
   public Person getPerson(String userId);
}

허걱 이렇게 되면.. Controller는 사라지느냐?

<bean name="/phonebook.htm" 
class="org.springframework.webflow.executor.mvc.FlowController"> <property name="flowExecutor" ref="flowExecutor"/> </bean>

설정만으로 가능한 모양이다.

매개변수를 넘기는 방식은 Form을 쓴다면 아래와 같고

<form:form action="phonebook.htm" commandName="searchCriteria" method="post"> 
    <input type="hidden" name="_flowExecutionKey" value="${flowExecutionKey}"> 
    <input type="submit" class="button" name="_eventId_search" value="Search"> 
    ... 
</form:form>

Link 사용시는 아래와 같다.

<a href="phonebook.htm?_flowExecutionKey=${flowExecutionKey}&amp;_eventId=select&amp;id=${colleague.id}">

단지 영감을 줄 정도만 요약했다.

SWF comes with 4 repository (storage) implementations

Posted by 영회

다음 세션을 듣느라 토비님의 중계가 끝나고 난 후 막 자려던 찰나에 Raible의 블로그를 통한 실황 중계가 시작되었다.

DDD 보다는 역시 그에겐 [TSE] Rapid Web Application Development with Rob Harrop가 흥미로운 모양이다. 세 개의 세션 가운데 망설이다가 롭 해럽의 세션을 선택한 사유가 흥미롭다.

If you don't use your knowledge in two weeks, you generally lose it


맞다. 뭐든 곧 활용할 것이 아니라면 모르는 것이 약이 될 수도 있다.

아젠더에 대한 그의 긴 메모를 그대로 옮기는 것 대신에 흥미로운 부분만 요약해본다.

Basic Tool Set

Rob recommends IDEA. 흠... Jetty is your friend! It allows you to rapidly deploy, it's resilient to hot deploy, starts everything in about 2 seconds and integrates with everything.

IDEA와 Jetty라... 일단 Jetty는 조만간 시도해봐야겠다.


Accelerating Spring MVC development

Rob이 SimpleFormController을 권장하지 않는 점이 흥미로웠다고 한다. Spring MVC에 처음이라면 차라리 SFC를 배우지 말고 바로 Web Flow를 쓸 것은 권장했다고 한다.

One of the new things in MultiActionController is you don't have to return ModelAndView - you can return Map or have void methods as well.

Another new class in Spring 2.0 is ModelMap. This class figures out your model names based on the simple class name. Single objects are simply lowercased, whereas collections of objects are available as objectnameList (i.e. a Set of User objects will be userList).


몰랐던 내용이다. 그리고 CoC를 위해 기억해둘만한 것

more..

Ruby 연동에 관한...

<lang:jruby id="stocklistController"
  script-source="WEB-INF/script/StocklistController.rb"
  script-interfaces="org.springframework.web.servlet.mvc.Controller"
  ... />

Raible의 요약을 옮겨본다.

Summary: Rapid Development with Spring MVC

  • Use a project template: Build your own (simply create a ZIP file) or use Maven 2 archetypes.
  • Make sure you can deploy quickly and frequently: Jetty is the way to go here.
  • Build deployment into your build script: slapped wrists for using Tomcat Manager!
  • Adhere to a code/test cycle: create mock tests to test error conditions. Use integration tests to verify end-to-end functionality.
  • Code by Convention reduces repetition and increases uniformity.
  • Dynamic languages: rapid prototyping, take advantage of additional language features
  • JSP form tags: Largely replace <spring:bind/>

Exploiting Web Flow

왜 굳이 Web Flow를 써야 하는가?

Productivity! It removes plumbing from your code: state management, flow management, allowed actions/security, isolation and concurrency. By removing this plumbing, it allows you to focus on the business code.


Web Flow의 핵심 컴포넌트

  • Flow Definition: A definition of a process in the application. For example: checkout, register and CRUD.
  • State: A single state in the execution of a flow.
  • View State: A pause state that displays a view to the user and typically prompts for input.
  • Action state: A stat that executes on or more actions and then moves to another state (where the logic happens).
  • Decision state: a routing state, evaluates or or more expressions (against data in the various scopes) and routes to a given state.
  • Action: The logic inside the Action state that gets executed.
  • Event: The user signaled event (submit, cancel, process, etc.).
  • Transaction: a movement from one state to another in response to some event.
The three configuration elements of Spring Web Flow are: Flow Executor, Flow Repository and Flow Registry


폼 컨트롤이나 위저드에 비해 Web Flow의 강점은 테스트라고 한다: AbstractXmlFlowExecutionTests



Cool tools to save you time

  • SiteMesh: Apply site-wide formatting, use it in conjunction with a CSS Framework (Rob is using the same one that AppFuse does - Mike Stenhouse's CSS Framework).
  • AspectJ: Great for adding in filtering, monitoring and profiling.
  • Jamon: Great in conjunction with AspectJ.
  • JMX: Adds in management functionality.

토비님이 주로 DDD 세션을 듣기 때문에 Raible의 글을 보충역할을 해준다.

Posted by 영회
Spring Experience 2006이 시작되었다. 토비님은 자비로 참석했다고 한다. Spring에 관심이 없는 사람도 이 그림을 보면 컨퍼런스에 흥미를 느낄 지 모르겠다. ^^

사용자 삽입 이미지

대화 내용을 옮겨놓는다. 더 자세한 경험담을 듣고자 한다면
The Spring Experience 첫날


Toby님의 말: 방금 오프닝 키노트 끝나고 들어왔죠
Toby님의 말: 로드존슨이랑 스프링 멤버들 다 보고 왔습니다
[永會]님의 말: 오프닝은 rod johnson이 했겠군요?
Toby님의 말: 그죠. 분위기가 달라서 그런지 아주 발표를 편하게 하더라고요
[永會]님의 말: 저도 스페인에서 봤지만, 그땐 로드 존슨 혼자였는데
[永會]님의 말: 게다가.. JBoss 무더기가 주류여서.. 다소 아웃사이더였습니다.
[永會]님의 말: 근데.. 스프링 파티니까..
Toby님의 말: ㅋㅋ
[永會]님의 말: 오픈시드에 갔더니 응원/부러움의 메시지가 있더라구요
Toby님의 말: 여러모로 기대가 되는군요..
[永會]님의 말: 흠.. 저도 내년에는 사비를 들여서라도 가고싶습니다.
Toby님의 말: 내년에는 꼭 같이 가죠
Toby님의 말: 찾아봤지만 한국사람은 한명도 없는 것 같더라고요
Toby님의 말: 중국애들은 많고, 일본사람은 한명
Toby님의 말: 아프리카에서도 왔던데..
[永會]님의 말: 아프리카요.. 허걱.. 남아공이요?
Toby님의 말: 정확히는 모르겠고 영어를 잘 못하는 새까만 아저씨들이
Toby님의 말: 몇 있더라고요
[永會]님의 말: 한국 사람이 토비님 뿐이란 것이..
Toby님의 말: 다 확인한 것은 아니니까 있을지도 모르죠
[永會]님의 말: 하긴.. 시대가 바뀌어도 자바원 같은 행사가
[永會]님의 말: 많이 가더라구요.. 뭔가 권위를 쫓는 인상을 받았습니다.
[永會]님의 말: 전.. 자바원은 돈 줘도 가기 싫던데..
Toby님의 말: 저도요.. 떼로 가서 우르르 몰려다니는 행사는 영..
[永會]님의 말: 그래서. 안그래도 자바원 대신 TSS 가겠다고 해서 간거거든요
[永會]님의 말: 자바원은 벤더 선전이 반은 되는 것 같습니다.
Toby님의 말: 그죠.. TSSS가 차라리 낫죠
[永會]님의 말: 원래 OOPSLA 가려다 시간 안맞아서..
Toby님의 말: 오늘은 멕시코에서 온 사람이 옆에 앉아서 얘기를 좀 했는데
Toby님의 말: 실력이 대단하더라고요
[永會]님의 말: 멕시코요?
Toby님의 말: 멕시코시티에서 스프링 전문 컨설팅 일을 하는데
[永會]님의 말: 흠.. 토비님에겐 정말 좋은 기회겠네요
Toby님의 말: 네.. 그러게요.
[永會]님의 말: 세션 발표도 발표지만.. 휴식시간이나 BoF 같은데서
[永會]님의 말: 그런 일들 하시는 사람 만나서 정보도 교류하고
Toby님의 말: 다양한 사람들 만나서 얘기하는게 재밌을 듯 싶어요
Toby님의 말: 뭐.. 다들 알아서 붙어서 수다떠는 분위기라
Toby님의 말: 식사도 3끼 같이 하고
[永會]님의 말: 식사 3끼요.. 호~
Toby님의 말: 중국, 일본에서 온 애들하고 얘기해서
Toby님의 말: 아시아 스프링 유저네트웍을 함 만들어볼까도 생각중입니다
[永會]님의 말: Wow
Toby님의 말: 상대적으로 아시아권 지원이 약하니까 뭔가.. 필요를 보여주게요.
[永會]님의 말: 매우 자극적인 이야기네요..
Toby님의 말: 일본에서 온 애는 아주 열심이던데
Toby님의 말: 오늘은 기회가 없어서 얘기는 못했지만 낼 한번 만나볼려고요
Toby님의 말: 내일 첫세션은 Eric Evans의 DDD입니다
[永會]님의 말: 헉
Toby님의 말: 전체 트랙이 5개인데.. 그중 하나가 DDD트랙이죠. DDD만 열개세션이 있죠
[永會]님의 말: 토비님은 아마도 DDD on Spring이 제일 관심을 갖으실 것 같습니다.
[永會]님의 말: spring 자체 뭐.. 대부분 아시니까
Toby님의 말: 사실 다른 기술은 자료를 보면 되는데
Toby님의 말: DDD는 이게 경험적인 지식이 많이 필요한지라
Toby님의 말: 이번에 좀 집중적으로 들을려고요.
[永會]님의 말: 흠.. 저도 미리 공부를 했다면 토비님 편에 질문이라도 전하는 건데.. 아쉽네요..
Toby님의 말:  DDD랑 OSGi, WebFlow, SpringWebSerivce 등등이 관심분야죠..
Toby님의 말: 뒤에 세개는 내년에 Spring의 개발 포커스가 되는 분야라고 하네요
[永會]님의 말: OSGi는 어떤 파급효과가 있을지 저는 영 감이 안오던데
Toby님의 말: 저도 막연한데.. 암튼 다들 관심이 지대하더군요
[永會]님의 말: 디플로이의 자유도 문제인가요?
Toby님의 말: 서비스지향적인 컴포넌스 아키텍처인데
Toby님의 말: 그것도 포함되죠
Toby님의 말: 플러그인 구조로 핫플러깅이 되고
Toby님의 말: 이클립스도 지금은 OSGi호환으로 되어있죠
[永會]님의 말: 흠.. 그럼.. 컨테이너들이 OSGi-compliant 되는 것이 필수겠군요..
Toby님의 말: 그래서 플러그인 만들때 OSGi설정을 같이 하더라고요
Toby님의 말: 그럼 스프링으로 만든 서비스를 이클립스에 플러그인으로 척 붙이는 게 가능하다는 얘기죠
[永會]님의 말: 일종의 표준 모듈 스펙이 되겠군요
Toby님의 말: 뭐.. 아직 잘은 모르겠지만 나름 영향력 있는 회사, 단체들이 멤버니
Toby님의 말: 암튼 기대해볼만 합니다
Toby님의 말: 예습을 해야하는데.. ㅋㅋ
[永會]님의 말: 행사가 3일인가요? 3박4일?
Toby님의 말: 3박4일인데 오늘은 뭐 키노트만 하니까 실제로는 풀로 3일이죠
Toby님의 말: 50개 세션. 공식행사가 밤 11시 끝나죠
[永會]님의 말: 딱 좋네요...
Toby님의 말: 저녁먹고 키노트 하고 BoF하고, 또 파티하고
Toby님의 말: 아침도 같이 먹고 어디 구경다닐 시간도 없네요..
[永會]님의 말: 아침/저녁을 같이 먹는다니.. 하드코어 컨퍼런스네요
Toby님의 말: 그게 매력인 것 같아요. 같이 둘러앉아서 밥먹으면서 서로 토론하고
Toby님의 말: 스프링 개발자들한테 언제든지 가서 질문해도 된다네요
Toby님의 말: 하드한 질문을 하라는데.. 뭘 물어볼지..??
Toby님의 말: 오늘 들은 재밌는 얘기중 하나는
Toby님의 말: 로드존슨도 스프링의 모든 기능을 다 못 써봤다네요
[永會]님의 말: ㅎㅎ
Toby님의 말: 어떤게 있는지는 알지만..
Toby님의 말: 이제는 Spring Portfolio라고 하더군요
Toby님의 말: 워낙 범위가 커지니까..
[永會]님의 말: 하긴 관련 프로젝트까지 포함하면
[永會]님의 말: J2EE를 거의 포괄하지 않나요?
Toby님의 말: 그렇죠.
[永會]님의 말: 참.. 거긴 몇시죠.. 지금?
Toby님의 말: 지금 밤 10시반이네요
[永會]님의 말: 아.. 이제 말로 여유로와진 시간이시군요.
[永會]님의 말: 낼부턴.. 이시간에 정리/예습하셔겠네요
[永會]님의 말: 대화 내용을 블로그에 옮겨도 되겠죠.
[永會]님의 말: 옮기고 식사 하러가겠네요.
[永會]님의 말: 블로그에 올려놓고 토요일날 들으러 오라고 하려구요..
Toby님의 말: 그러세요.. 영회씨하고는 대화도 조심해야겠군요..
[永會]님의 말: ㅋㅋ

댓글 보기



Posted by 영회

사용자 삽입 이미지

책상 한켠에 자리한 카카오 두 통. 보통 56%라고 불러줘야 맛(?)을 느낄 수 있다. 언젠가 모임에서 한 친구가 들고 왔을 때는 그저 하나의 음식물에 지나지 않았다. 그 친구가 72%가 어떻고 99%가 어떻고...

신경 쓰지 않고 들었지만 그런 정보는 바로 복사가 되는 모양이다. 우유를 사러 간 슈러 카운터에 잔뜩 싸인 56%를 보니 왠지 72%나 99%를 찾아 보게 된다. 그후에도 서너 번 카운터에 노출되고 나니 56%와 함께 72%도 사게 되었다.

그 친구가 그랬던 것처럼 나도 어처구니 없이 전파에 나선다. (지금 생각해보면 그런 행동 양식의 복사는 놀라운 일이다.) 동생에게 72%를 내밀고 자랑을 한다. 동생 역시 56%는 먹어보았다고 한다. 그리고 보니 2,3일 전에 사무실에서 누군가 99%를 맛보라고 준 기억이 난다. 별로 중요하지도 하는 수치가 정확한지 한참 고민하게 된다. 동생이 65%라고 할 때 56%라고 수차례 정정한 기억이 떠오른다. ㅡㅡ^

어제인가 명록이에게 밥주고간 분은 메이지 카카오라는 일산을 즐기신다. 88%와 99%. 내가 구매한 초컬릿은 복사기 제조사는 아니자만 복사로 유명한 회사의 제품이다. 아마도 메이지의 영향을 받았나 보다 하고 생각한다.

순식간에 두통을 먹어치우고 나서... 다행히 의도된 FAD에 개입된 상황을 인지하고 나니... 자유로운 상태가 된다. 왠지 꼭 또 사와야 할 것 같은 강박관념은 자연스럽게 소멸 되었다. 항상 내가 무언가 선택할 수 있는 상태라고 느끼는 것은 상당한 착각이다.

Posted by 영회
사용자 삽입 이미지

첫 페이지로 사용하던 한RSS, 토요일 오전, 그저 기록하기에 언급한 것과 같이 보고 싶지 않은 광고에 강요받는다. 이미 한RSS에 충분히 익숙해져 있기 때문에, 편안함을 고수하려면 이 정도 불편함을 감수해야 한다.

그렇지만, 최근 몇 주의 추천 RSS는 잘하면 외울 것 같다. 그래서, 마땅한 대안을 찾아본다. 가장 먼저 두어 달전 RSS 리더에 대한 비교 글을 보고 주저리...에서 소개받은 구글리더를 떠올린다. 구글이라면 광고에서는 훨씬 자유로울 것이다.

하지만, 옮기는데 있어서 부담은 216개의 구독 링크이다.[각주:1] 다행히, OPML 주고 받기가 가능했다.

사용자 삽입 이미지


혹시, 피드 이전이 필요한 분들을 위해 과정을 공유해본다. 한RSS 사이트의 왼쪽 메뉴에서 OPML 내보내기 링크를 클릭하여 OPML 파일을 원하는 곳에 저장한다.

http://www.google.com/reader/settings로 이동. Import/Export 탭을 클릭한다.

사용자 삽입 이미지

찾아보기 버튼을 눌러서 앞서 저장한 OPML 파일을 고르고, Upload 버튼을 클릭한다. 이후에는 마치 낯선 동네에 갑자기 도착한 것처럼 적응하면 된다. 구글 G메일 사용자라면 어렵지 않게 적응할 수 있지만, G메일을 처음 들어보시는 분이라면 난감함을 떨치기 힘들 것이다. 그렇더라도 조금만 익숙해지면 UI관점에서만 봐도 장점이 금새 눈에 뜨인다.

또 한가지 중요한 사실은 파이어폭스2 주소창에서 바로 구글Reader 구독 신청이 가능한가 하는 점이다.

사용자 삽입 이미지

도구 - 설정 - RSS에서 구글 리더를 찾을 수 있었지만, 실제 추가를 하면 구글 개인화 홈 페이지에 추가되는 오작동을 한다. ㅡㅡ;
  1. 이참에 제가 현재 한RSS로 구독중인 링크를 공유합니다: http://www.hanrss.com/share.qst?email=ahnyounghoe@gmail.com&output=html [본문으로]
Posted by 영회
처음 Comments in Java Code를 봤을 때는 '뭐 이런 쓸 때 없는 짓을 해보느냐' 싶었다.
다시 마음을 고쳐 먹고, 다시 드려다 보았다. 역시 마음 먹기 나름이다. ^___^

사용자 삽입 이미지

이렇게 코드를 고쳐보았더니 문장(statement) 사이에 주석을 넣으면 안된고 알았던 막연한 스스로의 고정 관념이 깨진다. 고정 관념을 깨고 나면 선택권을 갖게 되기 마련이다. 물론, 이 경우는 대단한 선택권은 아니지만...  
Posted by 영회
레거시(Legacy)라는 말을 쓰는 상황과 유산이라는 말을 쓰는 상황이 다르다 보니 통찰력 있게 이들을 돌아볼 수 있는 기회가 내게는 최근에야 주어졌다.

내가 얻는 것들. 가령, 도움을 주는 사람들, 지식, 직책, 사회적 위치, 경제적 위치, 그리고 지독하게 고착된 습관과 같은 것들의 다른 이름은 레거시이다.

컨설턴트라는 이름으로 새로운 기술이나 기법을 보급하려고 하면, 기존의 기술과 관행을 지닌 분들의 거부감을 만나게 된다. 더러는 논리적인 이유를 제시하기도 하지만, 대개는 언성을 높이거나 경직된 자세로 왜 바꿔야 하느냐고 묻는다.

J2EE 컨설팅에 소개된 다음 내용을 보면
 2.2 Java로 Batch Job 구현시 성능은 Pro*C에 대비해서 어느 정도인가?
 2.3 UI, 컴포넌트, 클래스, DB Table까지 포함된 비지니스 로직을 정의하는 산출물이 가능한가?
 2.4 Spring을 사용하지 않고 EJB + POJO 개발 방식을 사용할 수 있는가?


왠지 자신이 아는 것을 지키고 싶은 마음과 모르는 것에 대한 막연한 두려움이 느껴진다. 저러한 논의를 끌어낸 분들에 대해선 알 수 없지만, 적어도 내 마음 속에서 그런 마음이 존재하고, 저 글을 보면 그런 마음이 묻어 있다고 느껴진다.

사회의 기본 전제는 함께 산다는 것이다. 함께 산다는 것은, 내가 옳다고 믿는 것을 상대가 믿도록 강요하는 것은 아닌 듯 하다.

함께 사는 것의 의미를 진지하게 생각해본 적이 없다는 것은 놀라운 일이다.

어떻게 하면 변화를 거부하지 않을 수 있는가? 그리고, 어떻게 하면 변화하는 가운데서 다른 사람들과 공존할 것인가? 짧은 경험이지만 한가지는 분명한 것 같다. 나와 다른 주장을 하는 상대를 만나면 옳고 그름을 따지기 이전에, 상대를 그대로 인정해야 한다.

쉬운 일이 아니고 긴 훈련이 요구된다. 직감적으로 내가 찾아낸 훈련법은 무언가를 새로 만들고자 할 때 이미 존재하는 것들을 돌아보라는 것이다. 그래서 기존의 유산과 함께 진화하는 방안을 몸으로 익히는 것이다.

첫번째 시도로 블로그에 산재해서 정리했던 개발 관련 글을 위키로 옮기려 하는데, 완전히 새로운 위키 대신에 네이버 프레임워크 카페 위키와 융화하여 시작하기로 했다. 새로 시작하는 것에 비해 여러 고려 사항이 부가된다. 번거롭다 여겨지지만, 어쩌면 번거로움을 풀어가는 과정이 함께 사는 것의 진의에 대한 단초를 제공해줄지 모른다는 기대감을 갖게 된다.
Posted by 영회

가족들과 둘러 앉아 본 TV 프로에서 발로 비즈 공예를 하는 장애인이 출연했다.
보는 사람도 불편하기 이를데 없는 자세로 구슬을 한땀 한땀 꿰는 일이 숙련된 여성이다.
워낙에 밝게 웃는 모습은 내게 아름다움이란 무엇인가를 제대로 보라는 듯하다.

순간 부끄러운 마음이 들었다. 이런저런 일로 우쭐했던 마음이 있었기에...
사사건건 일터에서의 불평으로 하루를 소진한 나에게 묻는 것 같다.

생활에 임하는 자세 혹은 일을 하는 태도를 놓고 보면 과연 누가 장애인인가?

그 몸으로 비즈 공예에 이어 이젠 대학 검정고시를 준비한다니
나로썬 위대하다 라고 호들갑을 떨며 고개를 떨구는 역할이 주어졌다.
그리고, 내 자신이 의지박약의 장애인이라는 사실을 각인하게 되었다.

TV에선 소개하지 않았지만 환한 미소를 가진
위대한 비즈 공예가의 발가락은 수도 없이 바늘에 찔렸을 것이다.
환한 미소는 그러한 고통을 의연하게 견뎌낸 결과로 빚어진 것일테고...

과연 가능할까 하는 불신의 마음부터 피어나지만...
나 역시 앞으로 수백번 작심삼일을 경험하더라도...
다시 한번 마음을 고쳐 먹는다면... 근처라도 갈수 있을지 모르겠다.

언젠가는 이런 나약한 글은 쓰지 않고,
아름다운 모습을 보면 흐뭇한 미소로 지나칠 수 있기를 바라는 마음에 남긴다.

Posted by 영회

이것저것 욕심을 부리다 보면 실속 없이 시간과 에너지를 낭비하게 된다.
버려진 것들보다 더 무서운 것은 소모적인 시간이 습관으로 내 안에 자리한다는 사실이다.

블로그를 옮겨 새단장을 한지 세달이 조금 넘었다.
Spring 2.1 출시에 맞춰서 버전2.1을 달아볼까 하는
그야말로 뜬금 없는 생각을 하다가... 지난 블로그를 추억해본다.
2003/10/02 개설했다고 하니 3년이 지났다.
초반에는 축구에 관한 글을 메모했던 모양이다.
그리곤 당시 공부했던 것들을 산발적으로 메모하고, 그걸 정리해왔다.

몇일 동안 블로그를 쉬었다.
생활의 변화를 꾀하는 시점에서 블로그도 첨병 역할을 해야 할 것 같다.
그간의 습관과는 다르게 사용해서...
글쓰기의 달콤함은 좀 뺐기더라도...
보다 수렴형 블로그를 지향하고, 수렴형 생활로 새해를 맞아야겠다.

Posted by 영회
닷넷의 CLR(Common Language Runtime)은 단일 플랫폼에서 다수의 언어를 지원하는 것으로 알려져 있었다. 하지만, Novell이 주도하는 mono에 의해서 Linux, FreeBSD, UNIX, Mac OS X, Solaris 등에서도 구동이 가능하게 되었다. 대부분의 플랫폼에 포팅된 것이다.
 
JVM은 다수의 플랫폼에서 단일 언어를 지원하는 것으로 알려져 있었다. 하지만, 이미 2005년 봄을 기준으로 200여개의 언어가 JVM 상에서 구동한다. 이렇게 많은 언어가 JVM에서 구동할 수 있다는 사실에 앞서, 이렇게 많은 언어가 존재한다는 사실부터가 놀랍다. :)
Posted by 영회
지난 여름인가 cbiscuit님이 느닷없이 '글쓰기 공중부양' 아냐고 물어봤다.
그야말로 뜬금 없이.. 이외수님의 이름이 나오지 않았다면 흘려 들었을 이야기.
거의 10년전 '벽오금학도'를 읽고 범상치 않다 여겼기에

배송된 책을 받자마자 냉큼 반절을 읽어버리다 덮어버린 책이 책꽂이에 놓여 있다.
언젠가 다시 시간을 내어 내공서를 보듯 찬찬히 보고 따라 하고 싶었기에
반이나 읽고도 덮어둔 책.

글쓰기의 공중부양
이외수 지음
/동방미디어

그리고 시간이 꽤 흘러 아래의 포스트를 보았다.

글쓰는 것을 업으로 사는 이가 경지에 이르는 법을 기록했기에
다른 것을 업으로 하는 이가 경지를 꿈꾼다면 저와 같이 해야 하는 것인가?
Posted by 영회
경험하지 못한 것을 시종일관 들어주는 것은 힘겨운 일이다.

당신의 주말은 몇 개입니까
에쿠니 가오리 지음,
김난주 옮김
/소담출판사

다만, 결혼이란 어떤 것인지를 말해주는
내가 아는한 가장 섬세하고 객관적인 이야기 같다.

메모하고 싶은 글귀
서로의 생활 패턴을 속으로 우습게 여기면서 것으로는 각자가 알아서 할 일이라며 간섭하지 않는다.

가끔은 외간 남자를 만난다. 외간 남자는 아주 친절하다. 예의 바르고, 얘기도 많이 해준다. 나와 내 일을 칭찬해 주고, 잔이 비기 전에 재빨리 한 잔 더 주문해 준다. 물론 나는 외간 남자의 그런 배려가 반갑지는 않지만, 남편이 그렇게 해주면 얼마나 좋을까 하고 생각한다. 그리고 이 남자도 자기 아내에게는 이렇게 친절하게 굴지 않겠지, 하고 생각한다.

나는 회사란 과연 어떤 곳일까 하고 때로 불가사의하게 생각한다. 한 사람의 어른을-그것도 원래부터 규칙적이었다고는 도저히 여겨지지 않는 성격의 한 남자를- 이렇듯 제압하고, 더구나 그런 상황을 당연하게 받아 들이게 하는 장소

덧붙일 이야기가 있는 글귀
남편은 잠이 들었는데, 나는 작은 소리로 그렇게 말했다. 말이라도 하지 않으면 불쾌함이 몸 안에 쌓이기 때문이다. 투덜투덜투덜, 만화에 나오는 잔소리 마누라처럼.
아직 내게 잔소리를 하는 사람은 부모님 뿐이다. 제정신일 때는 그러려니 들어 넘기지만, 가끔 상태가 좋지 않을 때-특히 아침에는 버럭 성질을 내기도 한다. 부모님 몸에 불쾌함이 남지 않도록 견뎌내는 훈련이 필요하다. (쉽지 않다. 방금 엄마가 잔소리를 했는데...)

어리광을 피우고 어리광을 피우게 하는 것은 어른의 특권이라고 생각하니까. 그래서 행복할 수 있다면 아주 손쉬운 일이다. 서로를 행복하게 해주는 편이 서로를 길들이는것보다 훨씬 멋진 일이니까.
예전에 여자친구에게서 내 모습을 보았을 때 소스라치게 놀란 적이 있다. 우린 너무 다른 존재였는데, 내가 그녀를 길들이는데 성공했고... 결국 우린 이별을 했다. 서로 길들이지 않고, 인정해주는 것. 결혼을 하게 되면 이를 목표로 삼아야 할런지도...
Posted by 영회

국제화 되는 한글

2006 2006/12/22 17:21
소프트웨어 개발자와 큰 화면 번역을 계기로 모니터를 하나 주문하게 되었다.
Martin Fowler는 삼성 모니터를 쓰지만 나는 델(Dell)을 쓰기로 한다.
델 노트북은 참사 소식이 연이었지만, 다행히 모니터 폭발 소식은 없다. ^^;

사용자 삽입 이미지

카드 결제나 인터넷 뱅킹 결제 모두 위와 같은 화면을 보여주었다.
RFC 2068이라... 설마 저걸 읽어보란 것은 아니겠지. ^^;

다행히 전화번호가 있었다. 한동안 개그 프로에서 우려 먹었던 바로 그 말투가 들린다.
조선족이라고 해야 하나? 하여튼 그 말투다.
응대하시는 분이 나름 최선을 다하기에 조금 답답하나마 무리 없이 알아들을 수 있다.

마치 컨퍼런스에서 여러 나라 사람이 모여서 영어를 하는 장면 같은 것이 스친다.
그리고, 얼핏 들었던 국제 결혼 소식이 떠오른다.
우리나라 결혼의 10%를 넘는 수치가 국제결혼이란다.
특히나 농어촌의 경우, 해외에서 온 신부가 1/3에 해당한단다.
대개는 동남아에서 오게 되고, 그들은 어색한 발음으로나마 한글을 사용하게 될 것이다.
단일 민족, 단일 문화 국가로만 여겼던 우리나라도 변하는 모양이다.

그나저나.. 델 언제 사게 해줄래? 설마, 결제 서버가 폭파된건 아니겠지. ^^;

후기: 조금 지나서 전화가 와서 결제를 해주겠다고 한다.
목소리를 들어보니 다른 사람인데 발음이 역시 어색하다.(같은 동네 분인듯)
델은 전화 주문과 인터넷 주문이 10만원 이상 차이나는데
서버 문제로 전화 주문으로 대치해주겠다고 한다.
Posted by 영회
Designing a Component는 UI 컴포넌트 설계를 다룬 글이다. 하지만, 라이브러리나 비즈니스 컴포넌트에 투영해보아도 훌륭하게 적용된다. 무엇보다 세 가지 항목으로 정리할 수 있다는 것은 매력적인 추상화다.

Make the component specific in purpose, yet flexible in use.
기능을 추가하다가 누더기게 되게 하지 말라. 요구사항이 증가하면 컴포넌트는 변모하게 되어 있다. 그래서 리팩토링이 필요하고, 클래스 수준에서 보면 역할을 적절하게 분배하여 효과적으로 협업(collaboration)하게 해야 한다.

여기서 다소 느닷 없는(?) 길로 들어서보자. 성인이면 여러 가지 역할을 부여 받기 마련이다. 가령, 직장인이라면 회사에서 하나 이상의 역할을 수행하게 되고, 부모님이 계시면 자식으로써의 역할, 결혼한 분들은 배우자로써의 역할, 아이가 있다면 부모의 역할이 있다. 이러한 역할이 만만치 않은 이유는 동시에 수행해야 한다는 점이다.

이러한 책임 사이에서 적절하게 조화를 이루지 못하는 사람이 소프트웨어 설계를 맡게 되면 잘 할 수 있을까? 둘은 완전히 다른 문제인가?

결론은 소프트웨어 컴포넌트나 사회인으로써나 다양한 역할에 대해서 초점을 분명히 하여 '할 것만 하고', 상황 변화에 유연하고 기동성 있게 대처해야 한다.


Separate the concerns of interface, interaction, and content.
model view controller 아키텍처 패턴이 떠오른다. 하지만, 도리어 interface, interaction, content가 더 어감이 좋다. 앞서 말한 초점을 분명히 하는 기법 중 하나로 볼 수 있다.

Document the interface and use the component before releasing it.
당연한 것이지만 개발자 입장에서 늘 간과하기 쉬운 요소이다. 쓰지 않으면 컴포넌트로써의 가치가 없게 된다.

오픈시드에 참여하면서 커뮤니티 활동과 지식 공유에 열심인 이들은 새로운 문서화(Documentation) 방법을 고민하고 있음을 알 수 있다.

문서 하면 종이나 텍스트 형태의 전자 문서를 떠올리게 된다. 그러나, 음성이나 영상 형태로 문서화를 하는 것이 더 효과적인 경우가 있는 것 같다. 요약이 어렵다는 것이 최대의 약점이지만, 전달의 효율성 입장에서는 텍스트 문서에 비할 바가 아니다.

동영상 제작에도 여러 가지 기법이 있다. 직접 촬영을 할 수도 있지만, 화면 캐스팅을 할 수도 있고, 온라인 회의와 병행한 화면 캐스팅도 가능하다.

사무실에서 서류철이 자취를 감춘 것을 떠올려 보면, 문서화를 텍스트에 국한해 생각하는 관념을 서서히 탈피해야 할 때가 온 것 같다.

Posted by 영회
토비님이 의미심장한 글을 올렸다. 사전에 들은 것이 있어서인지, 라는 제목이 토비님 스스로에게 던지는 도전적인 질문으로 느껴진다. 또한, 답변을 위한 질문이라기 보다 스스로 단련해가는 과정으로 보인다.

'선택과 집중'이라는 말이 오래동안 회자되었는데 이를 실천하기 위해서 피부에 와닿는 단어로 바꾸면 '용기 희생'이 된다. 선택하기 위해서는 스스로에 대한 믿음과 뒤를 돌아보지 않는 용기가 요구된다. 또, 선택한 길을 가려면 그 길을 가면서 마주하게 되는 수많은 다른 길을 포기해야 한다.

최근에 개발자로써의 진로를 고민하면서 두 가지 축을 보게 되었다. 직업직장. 직장 생황을 해보면, 하고 싶은 일을 고집하면서 안정적인 직장을 고집할 수는 없음을 알게 된다. 둘 사이에서 선택이 강제된다면 무엇을 택할 것인가?

직장을 택하면 직장이 제공하는 이미 준비된 많은 것들 즉, 사회 생활을 위한 인프라에 해당하는 것들을 제공받는다. 대신 자신이 하고 싶은 일, 좀 더 생기있는 말로 대신하면 꿈을 포기해야 한다. 커오면서 이미 많이 퇴색된 꿈인데 거기서도 더 포기해야 한다.

반대로 자신의 일을 택하려면 직장이 제공하는 일종의 인프라를 스스로 구축해야 한다.

모처에서 고객사 직원 한분이 동료한테 소개팅을 시켜주려고 여자 후배에게 말을 걸었다 퇴짜를 당한 이야기를 해준다. 그 이유가 '오빠랑 같은 회사면, 시간이 없어서 안된다'는 것이었다. 당연한 이야기라고 답변했더니, '그럼 결혼하려면 회사를 옮겨야 하냐'라고 묻는다.

차마 설익은 답변을 발설하지 못했다. 스스로 그렇게 해보지도 않고서 수많은 말들을 내뱉었던 지날 날이 있었지만...
Posted by 영회

프로젝트를 하다 보면 현행화라는 것이 중요시된다.

현행화란 실제 상황과 관리 장표나 관리 데이터가 일치하게 만드는 것을 의미한다.
관리조직/팀에서는 최고의 관심사 중의 하나다.
현행화를 위해서 추적성을 확인해야 하고, 형상관리도 요구된다.

가령, UML 모델이나 엑셀 파일 형태의 관리 데이터와
실제 소스 코드의 동기화가 요구되는 경우를 가정해보자.

소스 코드에 변경이 일어났을 때 모델에 어떻게 반영할 것인가?

현장 경험이 적다면 RTE(Round-trip Engineering) 같은 것을 떠올려 볼 수 있다.
작은 시스템이라면 도전해볼 수 있겠지만
대규모 시스템이라면 툴 지옥[각주:1]을 경험할 수 있다.

경험 많은 사람이라면 엑셀 시트나 코드 체계[각주:2] 같은 것을 떠올린다.

또 한번 그야말로 가상상황을 만들어보자.

만일, 어떤 시스템이 개발 과정에서 모델을 만들어 놓고서
일목요연한 관리표가 별도로 필요하다고 엑셀 시트를 별도로 만들었다고 하자.
엑셀 시트가 유지보수 주체에게 전달되었다.

운영환경에서 코드를 하나 고치려면 영향을 받는 다른 코드를 찾아내야 한다.
인간의 존재 이유가 따분함을 극복하기 위해서만은 아니기 때문에.. ^^
그때마다 일일이 엑셀 시트를 보면서 수정할 소스 파일을 찾아나갈 수는 없다.

IDE가 제공하는 의존성 추적(dependency trace) 기능을 쓰는 것이 생산적이다.
SM 업무를 하는 이대리[각주:3]는 IDE의 해당 기능을 사용하여 쌈빡하게 수정을 해내고 좋아라 퇴근을 했다.
금요일이라 한잔 걸치고 신나게 놀았다.

어느날 회의에 참석한 이대리.

고과장[각주:4]: 자네 산출물 관리 장표는 현행화 되었는가?
이대리: (오기 전에 확인은 안했지만, 평소 늘상 확인했기에) 네. 아마도...
고과장: 아마도가 뭐야? 기면 기고, 아니면 아니지.
이대리: 늘 확인했으니까 맞을 껍니다.

얼마 지나지 않아 팀내 다수의 개발자들이 원인 모를 문제로 고생하기 시작했다.
원인은 드러나지 않았지만, 팀원들의 불평과 고생이 늘어가던 어느날
이대리는 갑자기 불안감이 느껴졌다.

'헛..'. 장표 갱신을 누락시켰던 기억이 난다.
문제가 너무 커진데다가 다들 원인 모를 문제로 인식하고 있어서
선뜩 말을 꺼낼 수가 없었다.

가상상황이지만 충분히 발생할 법한 이야기고,
엑셀은 그렇다 쳐도 별도의 UML 모델과의 연계까지 관리하라면...
변경 자체를 어렵게 하는 일이다.

필연적으로 업무 변화를 빠르게 하자는 경영이론들이 쏟아져 나오는데
이를 가능하게 하는 정보시스템에서는 변경을 어렵게 한다면 심각한 문제다.

...

- 점심을 먹으러 식당을 찾아 가는데 건물밖에 간판만 있고 실제 식당이 없는 경우가 있었다.

- 더불어 학생 시절에 SCM(Supply Chain Management) 관련한 수업을 들을 때
강사가 '상물의 분리'라는 모호한 용어를 쓰면서 실제 정보와 정보 시스템의 데이터의 불일치에서 나오는 현상을 열올려 설명하던 기억이 떠올랐다.

- 겨울인데 어떤 식당에서 '봄맞이 냉이국 추가'라는 문구를 본 기억까지 쏟아져나온다.

정보 시스템 만의 문제는 아니다. 현행화.. 답은.. 꾸준히 열심히 하는 것.
변화에 기민하게 대응하는 것. 매직은 없다.

  1. '띄우는데만도 세월' 혹은 '무서워서 명령을 못내리는 경지' [본문으로]
  2. 모델 중심의 사고로 보면 모델이 엑셀 시트와 코드 체계 형태로 존재하게 되는 것이다 [본문으로]
  3. 소개도 없이 등장하는 이대리, 첫 등장 [본문으로]
  4. 우정 출연 [본문으로]
Posted by 영회

기본 구성: 이클립스 SDK 3.2.1 + WTP 1.5.2-200610261841 [다운로드]

확장 플러그인
1) zip 파일 다운로드를 통해 설치해야 하는 플러그인
- Classpath Helper 1.2.2 <http://classpathhelper.sourceforge.net/>
- Copy Fully Qualified Class Name Plugin 1.1 <http://www.jave.de/eclipse/copyfully/index.html>
- JSEclipse 1.5.3 (12/19 갱신 및 개발사 Adobe로 인수)http://www.interaktonline.com/downloads/eclipse/100/JSEclipse_1.5.3.zip
- JUtils ToString Generator 2.0 <http://eclipse-jutils.sourceforge.net/>
- SwitchUnit 0.5beta

2) 업데이트 사이트를 통해 설치가 가능한 플러그인
- Spring IDE for Eclipse 1.3.6 [ http://springide.org/updatesite ]
- AnyEdit tools Plug-in 1.6.1.1 (12/19 갱신)
- JDepend4Eclipse Plug-in 1.1 [ http://andrei.gmxhome.de/eclipse/ ]
- Subversive SVN Team Provider 1.1 M8a [ http://www.polarion.org/projects/subversive/download/1.1/update-site/ ]
- Implementors plugin 0.0.15 [http://eclipse-tools.sourceforge.net/updates/ ]
- Metrics 1.3.6 [ http://metrics.sourceforge.net/update ]
- HTTP Headers 1.0 [ http://httpheaders.info/eclipse/update ]

Posted by 영회
경고: 그야말로 가십이기 때문에 소중한 시간을 터무니없이 낭비하실 수 있습니다.

분명히 경고를 했음에도 읽는 분들은 내가 했던 시간 낭비를 함께 하게 된다.
늘 그렇듯 오전에는 한RSS에서 구독 포스트를 스캐닝한다.
지훈씨 블로그에 인상적인 이름의 와인 관련 글이 올라왔다.

애초에 와인에는 전혀 관심이 없지만
지훈씨 얘기인지라 와인에 대한 관심이 그야말로 눈꼽만큼 생긴다.

그라나, 도리어 HTML 노가다로 주석을 달던 지훈씨가
티스토리 설치 버전보다 세련된 footnote 플러그인 덕에 화사한 주석을 단 것이 눈에 띈다.

하여 댓글을 단다 -> (답글로)  '괴물영회님 납셨군요' 라니
-> (최근 글에서) 재미있는 리퍼러라는 글을 확인 -> 맞어 이게 있었지!


누가 '괴물 영화보기'로 검색을 하다 오타를 쳐서 지훈씨 오게 된 것에 대한 기록이다.
내 블로그에 저렇게 온 사람도 있다. ㅡㅡ;


지훈씨에게 더 황당한 것을 소개해주었다.

최근에 외국인 블로그에 트랙백을 달아서인지
외국인으로 사료되는 사람이 구글의 번역 기능을 이용해서
생성한 방명록 화면을 확인할 수 있었다.


나조차도 알아보기 힘든 내 영문이름.. zero sliced raw fish가 등장한다. ㅡㅡ;
Posted by 영회
내 경험치와 인식을 훌쩍 넘어서는 고수가 들려주는 이야기다.
어렴풋이 인지하는 내 이면의 이야기를 그야말로 적나라하게 풀어놓았다.


적의 화장법
아멜리 노통 지음,
성귀수 옮김/문학세계사

메모해두고 싶은 구절

책을 읽는 사람은-진짜로 읽는 사람 말이오-이곳에 없소.

어른들은 아이들에게 숙녀를 만나면 인사를 하라든가, 콧구멍 속에 손가락을 넣으면 안된다는 것은 가르치지만 학교 동급생을 죽이지 말라고는 가르치지 않아요.

이거야말로 인간 두뇌의 특징이라고나 할까. 본질적인 것을 회피하기 위해 조잡스런 세부에만 스스로를 집중시키지.
Posted by 영회
이너게임(또): 지상 최고의 세미나에서 언급한 것 처럼
이너게임기동성이라는 개념이 소개됩니다.

정확히 어떻게 정의했는지는 이제 기억에서 흐릿해졌지만
스스로는 "능동적으로 자신의 변화의 방향을 결정할 수 있는 능력"으로 정의합니다.
그리고, 스스로를 기동성 훈련단으로 임명합니다.
별도의 단원이 있는 것은 아니지만, 왠지 그럴싸한 기분이 들면 쉽게 지치지 않으니까.

일요일이 지나고 월요일을 맞이하는 밤이면
다가오는 한주에 대한 고민이 밀려오기도 합니다.
나는 그것을 떨쳐내기로 마음 먹어봅니다.
무슨 방법이 있을지 딱히 떠오르지는 않지만...

지난주에 기동성 강화를 위해 실시했던 훈련 하나를 소개하겠습니다.

Caps Lock 없는 생활에 익숙해지기에 쓴 것처럼
Ctrl에게 Caps Lock의 위치를 돌려주는 것은 논리적으로 바람직해보입니다.
그러나, 실천을 해보니 꽤나 짜증스러운 일이었습니다.
IBM ThinkPad를 쓰다가 후지쯔 Lifebook으로 옮겼을 때 키배열에 당황한 것처럼...

이틀 정도는 쉴새없이 실수를 연발했습니다.
복사(Ctrl+C/Ctrl+V)나 저장(Ctrl+S)은 안되고
대문자 C나 V가 화면에 쓰여지는 일을 수도 없이 반복했습니다.

잠시 '이게 과연 옳은 일이냐'
고민을 하게 됩니다.

그리고, 익숙한 것과의 결별에 한표를 던집니다.
마음을 먹자 생각보다 쉽게 적응이 되었습니다.
아직도 완전히 적응한 것은 아니지만, 3일 정도 지난 후부터는 실수가 현격히 줄었습니다.
10년 넘게 사용하던 Ctrl의 위치를 3일만에 바꾼 것이면... 나쁘지 않은 시도였던 것 같습니다.
Posted by 영회
* 이글은 스스로의 변하기 위해 무의미하게 낭비되는 시간을 추적한 글입니다.

오전에 설비 기사가 오기로 해서 방을 치웠다. 안온다.
아웃소싱이 고객에게까지 그대로 노출되는
통신사업자들을 보면 업무 일관성이 매우 떨어진다.
인터넷 상품 해지를 통보하면 만류하는 전화가 여러 차례 다른 주체에 의해 걸려오는 것처럼

책상을 정리하다가 읽으려고 출력해둔 아티클이 오래도록 방치된 것을 알게 된다.
정리해서 블로깅해두려고 노트북을 켠다.

늘 무언가 하기 전에 RSS 구독 목록의 새글을 보고 메일을 확인한다.
이러한 습관을 바꿔야 하는데 저항이 심하다.

G메일이 아웃룩보다 편해서 쓰고 있다.
G메일도 포털 웹처럼 관심을 끌어가려는 행보가 진행되는 것을 느낀다.

사용자 삽입 이미지

상단에 광고와 함께 신문 배너가 배치되었다.
제거를 위한 옵션은 없다. FireFox 확장 기능을 찾아봐야겠다.
스치는 생각으로 언젠가는 GreaseMonkey를 배워야 할 지 모르겠다는 생각까지 스친다.
뉴스의 침투력을 심각하게 생각해본 사람은 흔하지 않다.
하지만, 면밀히 추적해보면 무척 놀라운 현상을 발견할 수 있다.
이들은 마치 매트릭스의 스미스요원처럼 거의 모든 곳에 존재한다.

선정적 혹은 감정을 자극하는 기사에 반응하지 않으면 된다.
하지만, 그것은 말처럼 쉬운 일이 아니다.
하루에도 수차례 나를 포함한 주변 사람들이 걸려드는 모습을 볼 수 있다.
완전히 기사에 자유로워질 때까지는 피해다닐 필요가 있다.
스미스에 대응하기 위해서 네오가 내공을 쌓았던 것처럼... ^^

젠장할.. 한RSS마저도 안전지대가 아니다.
사용자 삽입 이미지

내 블로그 소개도 등장하기에 늘 흐뭇하게 쳐다보았던 추천RSS에 선정적인 글이 침투하기 시작했다. 그중 또 내 클릭을 유도한 곳은 처녀들의 모텔 탐방기이다.

이야기 전개를 위해서 고백이 나올 시점이다. 나는 모텔을 간 적이 있다. 내 경우 미리 준비된 시나리오에 의해서 가는 일은 드물고, 시나리오를 준비했다 하더라도 '모텔을 간다' 정도다.

그런데 모텔을 골라가는 여자를 만날 수 있었다. 정숙하게 보이려 노력하는 것 같음에도 불구하고 모텔에 대해서 무척 상세하게 알고 있었다. 대개는 직접 경험이 아니라 들은 바인 듯 하다. 친구들 사이에서 이런 정보를 유통하는 것 같다.

그러한 요구를 수용해서 상업화 하는 모양이다. pazzi.com이라는 이름을 보니 가본적은 없지만 여자들의 정보처인 것 같다.

재밌다. 이제 많은 여자들이 자연스럽게 성개방 풍토에 적응하고 있는 것 같다. 정말 사랑하는 사람이라면 풍토고 나발이고 따지지 않는다. 그러나, 주변 시류가 그래서 모텔도 가야하고, 좀 좋은 모텔 찾아가고 이러는 것이라면 안타까운 일이 아닐 수 없다. 섹스와 사랑에 대한 가치관을 마련하기 위해서는 다른 사람의 생각이 아니라 자신의 삶을 통해 체득해야 하는데... 스스로 착한/바른 사람이라고 여기는 사람들에게는 온전히 스스로 하도록 내버려두지 않는다. ^^

결국 나는 아티클 정리를 하지 못하고 한 시간 정도를 날린다.
내 관심사를 앗아가는 사회에 저항하기 위해서...
하지만, 언젠가는 나는 잘 살아갈 것이다. 내 관심사를 유지하면서 사회와 조화를 이루며
Posted by 영회
다 읽고 나서 도무지 이해할 수 없는 내용이라는 느낌이 퍼뜩 들었다.
나는 이해할 수 없는 내용이 나오면 부끄러워하는 좋지 않은 습관을 갖고 있다.
이런 류의 책이 내게는 공부에 가깝다는 생각까지 든다.

표지는 너무 이쁘고, 책실[각주:1]은 연보라색인데 처음 본다.
표지가 너무 이뻐서 조심해서 봐야겠다는 생각까지 든다. 표지답지 못하면서 표지답다. ^^

신지를 사모해서가 아니라 신지가 곁에 있었던 때의 젊은 자신을 사모하는 마음

난도질이 취미인 내가 이책에서 처음으로 밑줄친 부분이다.

한때 오래전에 헤어진 여자친구를 떠올리며
지금이 아닌 당시의 여자친구를 그리워한 적이 있다.
다시 그녀를 만난다고 해도 그때의 그녀는 만날 수가 없다는 아릿하지만 아름다운 일이다.
그래서, 더 충실하게 하루 하루를 살아야 하는 것이리라.

에쿠니 가오리의 섬세한 표현이 내게는 무척 이질적이어서 종종 지루하게 느껴질 때도 있다.
이점이 내가 여친과 교감하지 못했던 오랜 시간을 상기시킨다.
그래서, 에쿠니 가오리의 책을 모두 읽기로 결심한 것이다.

그렇지만, 종종 줄을 안칠 수 없게 하는 표현들과 더불어
주인공이 변화되면 동일한 공간에서 다른 시점으로 글을 전개하는 점은 매우 흥미롭다.
그런 시점의 변환은 지루해졌던 마음을 다독여준다.

먼 발치에서 학교의 소년/소녀를 바라보는 남자의 이야기에서
창가에서 그 남자를 바라보는 여자의 이야기로 자연스럽게 전환하는 점은
고도로 세련된 시점의 전환이다. 멋지다.

여자가 있을 지도 모르겠다고 생각한 까닭은 우선 속옷 때문이다. 다케시는 그때까지, 서랍 속 속옷을 차례대로, 마리코가 개서 넣은 대로 차례차례 꺼내 입었다. 그런데 언제부터인가, 비교적 새 것을 골라 입는 날이 있다는 것을 알았다. 수요일이 많은 듯 했다.

바람을 피는 것에 나는 매우 민감하다.
어릴적에 아버지가 바람을 펴서 어머니와 별거했던 기억이 있다.
그래서, 바람 피는 것을 혐오하지만 스스로 바람끼가 다분하다는 것을 느끼기 때문에 더 그렇다.

윗글은 결혼이란 어떤 것인지, 여자들이 어떤 과정으로 남편을 알아가는지 여실히 보여준다. 저런 이미지는 이런 책이 아니라면 상상조차 할 수 없는 광경이다.

"어머 멋있네요. 정말 잘 어울려요. 내가 남편이라도 다시 사랑에 빠질 것 같은데요."

물건 파는데 제격인 멘트다. 늘 내 스타일은 아니라고 생각해온 부류의 멘트지만
언젠가 저런 말을 해봐야겠다고 마음 먹고 옮겨본다.


자유란, 더 이상 잃을 것이 없는 고독한 상태를 뜻하는 말이다.

자유에 대한 완전히 새로운 정의다.
'아 자유롭고 싶다'라는 멘트와 함께 머리 속에 여행을 떠올리던 시절
나는 자유를 전혀 모르던 시절로 규정한다.
지금은 자유라고하면 용기와 책임이 떠오른다.
하지만, 저러한 정의도 있다.


나츠키는 감색 외투를 입고, 회색 타이츠를 신고-타이츠는 발목께에서 접혀 주름져 있다-검정 구두를 신고 있다.

에쿠니 가오리는 모든 소설을 통해 등장하는 이러한 류의 표현이
나에게는 가장 어려운 부분이다.
도무지 왜 굳이 이야기의 흐름을 놓칠 수 있는 위험에도 불구하고
'타이츠는 발목께에서 접혀 주름져 있다'를 삽입하는가?
  1. 정식 명칭은 뭘까? [본문으로]
Posted by 영회

Figure 4: Metamodel and model approach

발췌한 글 논지의 중심에 선 그림은 아니지만, 글 자체보다는 이 그림이 확 시선에 들어왔다.

모델러가 모델을 그릴 때는 메타를 염두해야 한다.
메타(Meta)라는 말을 알 필요는 적다.
더구나 거북한 단어니까 가급적 남용할 필요도 없다.
다만, 어떤 기준을 가지고 모델을 도출하고 표현해야 하는데 그 기준이 곧 메타라 할 수 있다.

UML로 객체지향 모델링을 하면 가장 기본적인 단위가 클래스이다.
클래스 역시 일종의 타입이 된다.
모델링을 하면 구체적인 타입으로 클래스 이름이 부여된다.
클래스라는 타입과 개별 클래스 사이에서의 구분이 요구되는 경우는 거의 늘상 일어난다.
가령, 한국과 개별 번지 사이에 구분이 필요한 것처럼 세상은 무척 복잡하기 때문이다.

그래서, UML에서 확장방안으로 제공하는 것이 스테레오타입(stereotype)이다.
그렇다고, 반드시 스테레오 타입에 메타 타입을 부여해야 할 이유는 전혀 없다.
모델은 의사소통을 위한 것이라는 대전제를 잊지 않는한 그야말로 아무거나 부여할 수 있다.
'왜 그런 것을 스테레오타입으로 부여하느냐'라고 묻는 분들에게 대답을 준비할 필요는 있다.

하지만, 효용성의 관점과 형식적 완성이 늘 부합하지는 않는다.

그래도 우리는 선택의 자유가 있다. ^^

나는 대개의 경우 둘 사이의 조화를 찾으려고 노력한다. 조화가 궁극에 다다르면 오늘 조엘이 올린 글에 소개된 다리처럼 우아함을 갖게 된다.



하지만, 소프트웨어 개발에서는 우아함만 고수하기엔 현실이 척박하다. 따라서, 둘 중 하나를 포기해야 할 상황이 발생하고... 나는 어느 때고 효용성을 택한다. 그리고, 그래야 한다고 떠들고 다닌다. (그래서, Pragmatic 시리즈가 너무 좋다. ^^)

어디까지나 순전히 가상상황이지만, 내가 어떤 제품을 쓰는데 클래스나 메소드이름을 영문과 숫자가 섞인 12자리 암호로 정해야 한다면 어떻게 할 것인가? 스테레오타입에 한글 클래스명을 넣겠다. UML만 공부한 사람이 '쟤는 UML 알긴 하는거야' 라고 코웃음 칠 수 있지만... 나는 UML을 졸업했으니까, 굳이 규정(disciplines)에 얽매일 필요는 없다.

규칙과 원칙(principle)이 충돌하면, 원칙을 새우기 위해서 새 규정을 만들어야 한다.

Posted by 영회
에서 애플리케이션의 사용자 인터페이스나 사용성(Usability)에 대해서 배울 만한 점을 찾아본다.

사용자 삽입 이미지

구글의 SearchMash는 UI의 본질적인 개선을 볼 수 있다. 단순한 스타일을 고수하면서, 대개 검색엔진 사이트에서 광고등의 용도로 사용하는 오른편의 공간을 보면 특정 분류별 검색 결과를 별도의 키입력 없이 빠르게 볼 수 있게 배려했다. 물론 이러한 UI를 돋보이게 하는 바탕에는 구글의 정교한 검색 결과가 있다. Live.com 역시 비슷한 스타일을 제공하지만, 검색 결과를 보면 확연한 차이를 느낄 수 있다.


검색 품질이 떨어지지만, UI 관점에서만 보면 snap은 놀라울 정도로 인상적이다.
사용자 삽입 이미지

검색 결과가 왼쪽에는 목록으로 오른쪽에는 미리 보기로 배열된다. 스크롤을 하면 뒤쪽의 항목이 자동으로 로딩 되어서 페이지를 클릭할 필요가 없다.

사용자 삽입 이미지

도움말도 매우 직관적이다. 설명이 없어도 충분히 직관적인 인터페이스인데, 그야말로 직관적인 설명을 제공한다.
Posted by 영회
대개 1등놀이를 즐기면 중독증세를 의심해봐야 한다. 그게 아니라면, 자신을 이른바 "초딩"으로 분류해야 할지도 모른다. 그런데... 블로그 개설 붐을 맞이하여 일등놀이를 연타로 하다가 오랫동안 쉬니까 아쉬운건 뭘까?

일등놀이는 눈밭에 첫발을 내딛는 인상을 제공한다. 최고의 쾌감은 주인장이 본문도 쓰기 전에 올리는 명록이 선점이다.

가끔 정보력에 밀려 1등을 놓치는 안타까운 일도 발생한다. 티스토리 초대장을 구해준 곳마저도... 주식시장에서도 고급 정보가 따로 있듯이 1등 놀이도 마찬가지다.

지인이 티스토리 오픈 베타 초대장을 신청했다는 확실한 정보를 듣고, id를 유추하여 종종 들어가다 1등을 낚았다. 발빠른 움직임이다. 오픈을 알리는 공지 외에는 아직 글도 없는 상태다. 주식으로 치자면 장외주식쯤 되려나... id를 유추하다가 뜻밖의 횡재를 하기도 한다.

정보가 빨라도 가끔은 엉겹결에 1등의 기회를 놓치기도 한다.

1등놀이는 중독성이 있어서 이제 막 블로그 라이프를 시작하자마자 1등을 선점 당했던 사람이 복수를 하기도 한다.



일등놀이는 시간 낭비로 볼 수도 있지만, 뻘쭘하기 이를데 없는 블로그에 생기를 불어넣을 수도 있다. 누군가 알려준 명록이 밥준다는 표현처럼...
Posted by 영회
http://groups-beta.google.com/groups/roundedcorners?c=666666&bc=white&w=80&h=80&a=tr

이렇게 입력하면

http://groups-beta.google.com/groups/roundedcorners?c=666666&bc=white&w=80&h=80&a=tr

위와 같은 둥근 모서리를 만들어낼 수 있다.

그야말로 구글 스타일이다.
개념적으로 이랬으면 하고 떠올릴만한 개발자 API
실제 그것을 범용화 하여 만들어내기는 쉽지 않다.

구글은 마치 생각만 하면 만들 수 있는 이들 같기도 하다.
웹개발자라면 위 주소를 보고 단박에 사용법을 짐작하리라

C는 Color에 대한 RGB 값이고,
BC는 Background Color,
W는 Width
H는 Height

유일하게 Zach의 설명이 필요한 것은 a이다.
A는 which corner를 의미했고, tr이란 Top Right를 의미했다.


출처: http://xach.livejournal.com/95656.html
Posted by 영회