다른 사람들과 협업을 하게 되면서 조금씩 느끼는 점들이 있다.

서로의 코드가 서로에게 영향을 끼치게 되는 상황들 속에서,
서로를 위해 해야할 행동들을 익히게 된다.
20090216_MWC2009_LGE-MS스마트폰공동개발계약체결-
20090216_MWC2009_LGE-MS스마트폰공동개발계약체결- by LGEPR 저작자 표시


각자 만든 메소드들을 참조해서 사용해야하는 경우,
누군가가 수정하거나 추가한 환경설정 파일에 의해서 문제가 생기는 경우등 

SVN에서 소스들을 update 받고 테스트를 실행할 때,
이전에 발생하지 않던 부분들에서 무더기로 올라오는 errors 를
보면서 흠칫하게 된다. 

그리고 찬찬히 그 문제를 들여다보면,
각자 만든 메소드들을 참조해서 사용해야하는 경우,
누군가가 수정하거나 추가한 환경설정 파일에 의해서 문제가 생기는 경우 등
 
사소한 부분에서 생긴 문제라는 것을 확인할 수가 있다.

나는 그러지 말아야지.

소스 update 후 Test,
Test Pass 후 Commit의 생활화


110525_egovFramework 세미나

  • 제목 : Dive into Maven
  • 장소 : 청계광장 정보화진흥원 지하1층 세미나실
  • 발표내용
    • 표준프레임워크 오픈커뮤니티를 통해서 프레임워크연구개발이 활성화되길 바란다.
    • Maven is ...
      • 프로젝트 관리(Project Management) 와 빌드 자동화(Build Automation)
      • 2002년, Apache Turbine 에서 비롯되었다.
      • Maven 도입이유
        • 라이브러리 관리의 문제점
          • commons.fileupload 1.0 버그 -> 1.1 해결
          • classpath : 같은 패키지 상에서는 제일 상단에 존재하는 패키지 부터 실행됨
        • 오픈소스를 사용하는 경우 의존성을 지니게 되는 라이브러리
        • 자유도(Ant 확장성이 뛰어남, Maven 정형화 되어 있음)
    • Maven Simple Project
      • project home : pom.xml
      • src/main/java
      • src/main/resource
      • src/test/java
      • src/test/resource
    • Maven vs Ant
      • Maven is formal convensions.
      • Ant isn't formal conventions.
      • Ant is procedural, Maven is declarative
      • Maven has a lifecycle(Ant를 잘 구성하면 lifecycle 구현이 가능하다)
    • Super POM(CoC)
      • 모든 프로젝트의 POM은 SUPER POM을 상속 받는다(All project POMs extends Super POM
    • Simple POM
    • POM.xml
      • POM 의 구조 설명
    • Library Search Path
      • Repository
        • Local repository
          • maven -> installation -> setting.xml
        • Remote repository
          • Repository with WebServer
          • Repository with Nexus
    • Repository
      • <repositories> ~~ </repositories>
      • snapshot 은 상속받지 않는 것으로 되어 있다.
    • Repository with WebServer
      • Maven은 인터넷이 안되면 쥐약
      • 인터넷이 안된다면, 자체적인 저장소를 생성하여 관리한다.
        • Local 저장소에서 복사하여 사용하는 방법
        • Webserver : Apache / document_root / 에 저장
        • apache 에 index를 볼 수 있도록 설정되어 있느냐? search가 안됨
    • Repository with Nexus
    • Nexus 관련 주의사항
      • 플러그인이 설치되지 않는 경우...
      • 넥서스를 이용하여 업로드한 경우
      • <pluginRepositories></pluginRepositories>를 선언해줘야한다.
      • maven_home/sonatype_work/nexus/storage 에 넣은 뒤에는 Nexus를 재기동 시켜줘야 한다.
    • Dependency Scope
      • 종류
        • compile(default)
        • provided : 컴파일과 유사하나 패키지에는 포함되지 않음
        • test
        • runtime
        • system
      • Specify dependency range
        • [,]
        • (,]
        • (,)
    • Transitive Scope
    • Conflict Resolution
      • Exclude Transitive scope
        • <exclusions> ~~ </exclusions>
    • Build LifeCycle
      • phases, goals, plugin
      • Lifecycle을 가지고 있는 장점 : 테스트를 돌릴 수 있다. TestCase를 작성해야 한다.
    • Developing java plugin for Maven
      • Maven Project 생성방법
      • Create Simple Mojo
    • Complie Configure
      • <plugin>
      • Maven plugin <source>, <target>
    • Skip Test
      • <configuration>
 <skipTest>
</configuration>
    • ProGuard
      • 역컴파일 방지기
      • Ddependency, plugin에 넣기
    • Site Reporting
    • PMD
      • plugin rulesets ㅇ르 정의해줘야 한다.
    • Maven Archetype
      • Maven을 이용하여 목적에 따라 Archetype들을 사용하여 지정할 수 있다.
      • 전자정부용 Archetype가 존재한다.
      • 초창기에 만들었는데 알려주지 않는 이유
      • 필요에 따라서 만들면 된다.
    • m2Eclipse
      • Maven projects를 만들고 첨가하는 경우
      • 의존성 저장 및 갱신
      • SCM 저장소로부터 maven Porject 추가
      • WTP에서 통합 -> WTP 쪽 Runtime 에서 오류가 발생, 톰캣 실행시 오류가 발생한다. 오류 가능성을 숙지하고 있을 것
      • 의존성 그래프를 프래픽적으로 추가
      • Maven 의 기능은 다양하다. 많이 써보고, 필요한 기능을 능숙하게 다루면 되겠지.
    • Maven 3.x new Feature
      • dependency 일 경우에는 프로젝트에만 영향을 미치지만...
      • dependency-management 를 구분해서 사용하라.
  • 결론 : 전자정부 프레임워크에는 Maven을 사용했다. 



최근 스프링 프레임워크를 기반으로 하는 프로젝트를 진행하게 되면서 메이븐Maven의 사용이 익숙해져가고 있다. <dependency> 를 추가하는 것만으로 관련한 라이브러리들이 주루룩 다운로드 되는 그 맛이란...

가까운 곳에서 이런 Maven에 대한 내용으로 발표가 있다고 해서 참가했다. 샌드위치 때문에 참가신청(?)을 한 사람들이 많았는가 보다. 160명분을 준비했는데 모두 소진되었다고 하는 걸 보니... 봐도 넓은 회의실을 꽉채우고 있었다. 냉방시설을 가동시킬 수 없어서 꽤나 답답하고 더웠다. 

발표는 한시간, Qn A 시간이 한시간 잡혀 있었지만, 발표내용 자체가 워낙 Maven에 대한 개괄적인 발표이다보니 딱히 무엇을 물어야할지 애매했다. 발표내용도 애매모호한 부분들이 많았다. 차라리, 전자정부 프레임워크를 적용한 프로젝트들에서 Maven과 관련되어 발생한 문제들의 예시와 해결방법을 30분 정도 추가해서 설명하는 건 어땠을까 하고 생각한다.
 
  전체적으로 많이 아쉬운 세미나였다.
  크게 개선되지는 않겠지....

  메이븐Maven에 대해 궁금하시다면
메이븐
카테고리 컴퓨터/IT > 프로그래밍/언어 > 웹프로그래밍 > 웹프로그래밍일반
지은이 박재성 (한빛미디어, 2011년)
상세보기
 이 책과
책의 저자가 운영하던 스터디 사이트 : http://www.javajigi.net/display/IDE/Maven
Maven Project 사이트 : http://maven.apache.org/
에서 필요한 정보들을 찾아보기 바란다.

들여쓰기가 사라지고...

코드 형식 등이 뭉그러져서 div 태그 안에서 그냥 글이 되어버리는군요.

아 슬프다!! ㅡ_-);;
이걸 블로그에서 또 수정하기도 그렇고.... 

요즘에 공부하고 있는 건 스프링입니다. 거기에 JSP, HTML, JavaScript, CSS도 해야한다죠? 

공부하는 내용들을 머리에 입력시키느라 머리가 아프기는 하지만, 그래도 재미납니다용. +_+) 
  발생분야 :  
 


  관련분야 :  
 


  오류코드 혹은 로그 :  
 


  발생원인 :  
 


  해결방법 :  
 


오늘 서점에 가서 노트를 찾다가, 오답노트를 보았다.

그리고 오전에, 스프링 실습을 하면서 구현한 프로젝트를 import 하는 과정에서 발생한 오류를 해결한 경험이 겹쳐지면서,
빈번하게 접하게될 오류들과 그에 대한 해결 방법을 블로그에 기록해두는 것도 좋을 것이란 생각이 들어 위와 같은 형태로, 기록을 남기려고 한다.
과연 얼마나 도움이 될지는 알 수 없지만, 꾸준하게 한번 해보자. ^^

포기하지 않고 계속 앞으로 나아가는 것이 중요하다.

문고에는 꽤 많은 종류의 노트들이 꽤나 얇은 두께로 다양하게 비싼 가격으로 팔고 있었다. 그렇지만 내 마음에 드는 노트는 없었다. ㅡ_-);;

메이븐
카테고리 컴퓨터/IT > 프로그래밍/언어 > 웹프로그래밍 > 웹프로그래밍일반
지은이 박재성 (한빛미디어, 2011년)
상세보기
잠시 초반에 베타리딩에 참가했던 이 책이 세상의 빛을 보았다.
게으름 탓에 많은 부분에 참여하지 못했고, 그 때문에 많이 부끄러움을 주는 책이다.

이 책을 반성의 거울로 삼아서 열심히 개발자로서 거듭나보려고 한다. 지금은 이 책을 한창 읽으면서 이클립스 내에서 메이븐Maven 플러그인을 통해서 메이븐 프로젝트Maven Project를 생성하고, 필요한 오픈소스 라이브러리들을 추가하고 빌드하는 것을 따라하고 있다.
처음에 아무것도 모르고 따라하다가, 이클립스에서 실행하려고 하면 안될 때 잠시 혼란에 빠지기도 했지만, 이렇게 해보고 저렇게 해보면서 조금씩 조금씩 메이븐Maven의 가능성에 대해서 큰 기대를 품기 시작하고 있다.

버전관리툴인 Subversion도 함께 사용하다보면 꽤 그럴싸한 빌드툴로 거듭나게 된다. 거기에 TDD로 테스트까지 병행하면 금상첨화일텐데... 아직 내 이해단계에서는 각각의 툴들이 가지고 있는 장점들에 대해서는 알고 있어도, 이것들을 하나의 유기적으로 연결하는 것은 미숙한 편이다.
이것들을 자주 접하고 시간이 지나다보면 어느샌가 익숙해지겠지.

당분간 진행하게될 프로젝트에서는, 스프링 프레임워크Spring Framework를 기반으로 하여 모바일 환경을 구축하면서 HTML5와 웹표준에 대한 경험을 얻을 수 있을 것으로 기대하고 있다. 이에 대한 다양한 경험들을 기록으로 남겨둘 수 있으면 좋겠다. ^^ CSS와 jQuery(Mobile)도 사용해볼 수 있는 기회가 되겠지. 이번에는 사용하는 것에 그치지 않고, 그것들이 가지고 있는 특징과 장단점에 대한 이해와 함께 내 것으로 만들려는 노력을 하고자 한다.

자, 새롭게 시작이다.

+ Recent posts