2013년 11월 26일 화요일

[토비 스프링-1일차]들어가며

<들어가며>

 - 스프링이란 무엇인가? : 

    애플리케이션 프레임워크
      -> 개발을 빠르고 효율적으로 하도록, 바탕이 되는 틀, 공통 프로그래밍 모델, 기술 API 제공

  * 애플리케이션의 기본 틀 - 스프링 컨테이너
    . 스프링 컨테이너: 설정정보를 참조, 애플리케이션을 구성하는 오브젝트를 생성/관리
      -> 스프링 컨테이너를 다루는 법/설정 정보를 작성하는 법을 알아야 함

  * 공통 프로그래밍 모델 : 애플리케이션 코드가 어떻게 작성되어야 하는지 기준 제공
    . IoC/DI : 오브젝트 생명주기, 의존관계에 대한 프로그래밍 모델(설계 원칙, 핵심 원리)
    . 서비스 추상화 : 환경, 서버, 특정 기술에 비종속적
    . AOP : 애플리케이션 코드에 산재해서 나타나는 부가적 기능을 독립 모듈화

  * 기술 API
    . 일관된 방식으로 사용할 수 있도록 기능, 전략 클래스를 제공

 - 스프링의 성공요인

    사실상 자바 엔터프라이즈 표준 기술: 기본에 충실했기 때문
    스프링을 사용하면서 얻게 되는 두 가지 중요한 가치

  * 단순함
    . EJB의 불필요한 복잡성 비판
    -> 목적을 이룰 수 있는 가장 단순하고 명쾌한 접근/ 객체자향 언어의 장점을 살렸음.

  * 유연성
    . 유연성과 확장성 => 접착 프레임워크/ 스스로 발전하는 프레임워크
    -> 스프링을 제대로 사용하려면 스프링을 필요에 맞게 확장해서 자신만의 프레임워크를 만들어서 사용할줄 알아야 한다.

- 스프링 학습과 활용의 어려움

   스프링의 가치를 제대로 누리며 사용하려면 스프링을 제대로 공부해야 한다.
 
  * 스프링의 핵심 가치와 원리에 대한 이해(Vol 1)
    . 핵심 기술, 프로그래밍 모델을 이해

  * 스프링의 기술에 대한 지식과 선택 기준 정립(Vol 2)
    . 다양한 선택의 문제를 각 기술영역별로 효과적으로 다루는 법 학습
    . 최선의 기술과 접근방법을 선택할 수 있어야

  * 스프링의 적용과 확장
    . 스프링의 자유도를 줄이고 각 현장의 상황에 맞는 접근 방법을 정립


- 스프링을 성공적으로 학습했다면 

  스프링을 학습하고 적용한 후 자신의 코드가 좀 더 깔끔하고 단순해지면서 객체지향 원칙에 충실하게 작성됬는지, 생산성과 품질이 좀 더 나아졌는지 확인. 더 많은 테스트 코드를 작성하고 유연하고 확장이 손쉬운 애플리케이션을 만들고 있는지.

학습 시간: 2013.11.27 오전 9:30 ~ 10:30

2013년 8월 28일 수요일

코딩호러의 이펙티브 프로그래밍(1)


프로그래머의 여덟단계라는 내용이 있다.
이 기준이 재미있어 옮겨 놓는다.
1. 죽은 프로그래머
  - 목차만 봤을 때에는 산송장? 정도로 생산성을 잃은 개발자로 생각 했는데, 최고수준의 개발자를 의미
  - 즉, 저자가 죽고나서도 많은 사람이 읽는 명저 처럼, 그가 사망하고 나서도 돌아가는 프로그램을 만든 사람을 의미한다.
2. 성공적인 프로그래머 => 빌게이츠?
3. 유명한 프로그래머 => 수입은 보장 안되지만 다른 사람이 이름을 알고 있는 개발자
4. 일하는 프로그래머 => 성공적인 경력을 보유하고 주변의 동료가 존경하는 개발자
5. 평균적인 프로그래머 => 코딩에 재능이 있는 것은 아닐 수 있지만, 비즈니스 능력과 사람을 다루는 기술이 뛰어난 개발자
6. 아마추어 프로그래머 => 코딩을 좋아하는 사람, '재미를 위해서'
7. 알려지지 않은 프로그래머 => 전형적인 프로그래머
8.  나쁜 프로그래머 => 프로그래밍에 어울리는 기술이나 능력이 없는 상태에서 개발을 수행하는 직업을 갖게 돈 사람. 그들이 건드리는 것은 모두 다른 동료 개발자들에게 고통과 통증을 안겨준다.

나는 지금 개발자인가? 어떤 모습이 되고 싶은가?
어떤 개발자들과 같이 일하고 있는가?

거품이 꺼지고 나서 어떤 모습일까?

재미있어 시작했는데, 진지해졌다.

2013년 5월 29일 수요일

SVN->Git

사실, CVS에서 SVN으로 변화할 때에도 느릿느릿 했었는데,
SvbVersion을 쓰면서 너무 편한거다.

Git을 써야할까 말까 고민하는데,

이 내용을 보면 곧, 아주 곧 써야 할 것 같다.

http://www.slideshare.net/einsub/svn-git-17386752

2013년 5월 24일 금요일

5월 25일 북마크

SI 대비 솔루션 개발환경

http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=69&MAEULNO=28&no=19724&page=1

FITGRID : 페이지 폭에 따라서 그리드 테이블 레이아웃이 변경.

http://www.fitgrd.com/

-> 이에 따라서 가변폭 테스트하는 크롬 플러그인
https://chrome.google.com/webstore/detail/responsive-inspector/memcdolmmnmnleeiodllgpibdjlkbpim

변화, 팀과 자발적 동기

http://subokim.wordpress.com/2013/05/23/think-of-volunteership/?utm_source=twitterfeed&utm_medium=twitter


프로젝트에서 Netty를 사용하지 않기로 결정

http://mentoring-it.blogspot.kr/2013/05/netty.html 에서 검토하고 있던 Netty를 사용하지 않고,
대신 JXM 기반의 MBean을 활용하기로 함.

이유는 기존 소스를 수정/변경하는 작업은 동일하고,

이를 조회하는 부분에서 작업이 MBean의 경우 MBean Client를 활용할 수 있다는 점.

또한, MXBean으로 사전에 정의된 Bean을 활용할 수도 있다는 부분에서

결정 되었다.


MBean과 MXBean의 차이는 여기를 참조.

http://www.javafundu.com/2009/12/mbean-vs-mxbean.html


MBean vs MXBean
Manageable Resources are identified and instrumented as java objects, it could be Managed Bean(MBean) or advanced/extended/simplified Managed Bean(MXBean).

[Visualization]Graphviz

Graphviz 는 간단하게 데이터를 활용, 호출 관계도를 그릴 수 있는 툴 입니다.

최근 3~4년동안 살펴보지 않았는데, 그 동안 구조가 많이 바뀐 것 같군요.


참고할 자료는 http://studyfoss.egloos.com/5358984 ,

설치하는 위치는 http://www.graphviz.org 입니다.

예시는 graphviz의 사이트에 있는데,

지금은 spring 빈 호출관계도를 표현하는 중입니다. 쉽지는 않네요.

추가로 참조하고 정리할만한 내용이 생기면 여기에 올리겠습니다.

2013년 5월 19일 일요일

Netty

네티를 살펴보고 있다. 
최근, 서비스/서버 모니터링 서버 구현을 고민하는데,
Event-Driven 개발을 고려하고 있다.

네트워크 traffic, 에이전트 또는 클라이언트와 서버 구현 용이성,
가져올 정보도 살펴보면,
단순히 네트워크, health check 뿐만 아니라,

현재 진행중인 상담, 고객 대기시간등을 함께 고민해야 하는 부분이라
좀 더 확실한 방법을 찾아다니다가,
6개월전 살펴봤던 그 내용을 다시 열어본다.

다음은 네티의 정의
Netty is an
*asynchronous : 비동기
*event-driven : 이벤트 중심
*network application : 네트워크 어플리케이션
*framework  : 프레임워크
for
*rapid development of : 빠른 개발
*maintainable : 유지보수성을 감안한
*high performance protocol : 고성능 프로토콜
*servers & clients. : 서버와 클라이언트를 위한


다시 요약하자면
개발 뿐만 아니라 유지보수를 감안한 고성능 프로토콜 서버와 클라이언트를 빠르게 개발하기 위한 비동기 이벤트 중심의 네트워크 어플리케이션 프레임워크
이다.

와~!

레퍼런스 체크를 해본다면,
http://netty.io/wiki/related-projects.html를 보면, 자세히 나와 있다
twitter의 기반 프레임워크이며,
facebook에서도 사용하고 있고

그 외 오픈소스에서도 많이 쓰고 있다.
링크는 아래 참조.

한국 사용자 그룹 : https://groups.google.com/forum/?hl=ko&fromgroups#!forum/netty-ko

netty 3.2 사용자 메뉴얼(한글) http://kkamdung.tistory.com/49
http://netty.io/
한국 사용자 그룹 : https://groups.google.com/forum/?hl=ko&fromgroups#!forum/netty-ko

새로운 블로그 생성

예전에 만들었다가 이젠 거미줄 잔뜩 낀 블로그들이 있었다.

주기적으로 글을 올리고, 이를 관리하는 것이 참 쉽지 않았지만,
계속 이런 저런 글을 SNS에 올리고 검색한 자료들을 올리는데

올려놓은 글들을 다시 찾기가 정말 쉽지 않다.

그래서...

오늘 다시 블로그를 만들어놓는다.