달력

5

« 2020/5 »

  •  
  •  
  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  
  •  
  •  

'공부하는 것'에 해당되는 글 80

  1. 2008.04.09 Spring Dynamic Module 개발 환경
  2. 2008.03.29 Spring.Net에 관하여
  3. 2007.11.26 좋은 코드에 대한 나의 생각
  4. 2007.11.13 Ruby On Rails 환경 구성

Spring Framework에 대한 관심이 어느때보다 높다.
단지, 유행의 차원을 넘어서서, 개발 효율을 한단계 높일수 있는 계기가 될거라 생각하는 많은 SI업체들이 경쟁적으로 도입하고 있다. 최근 내가 근무하고 있는 회사에서도 일부 도입하여 개발하는 팀도 생기고 있고, 도입을 고려하고 있는 팀도 있다.
내가 속해 있는 팀은 후자에 속한다. 개발의도는 기본적으로는 재활용성을 극대화 하여 모듈간의 의존성을 줄이면서도 중복 개발을 피하려는 의도가 포함되어 있다.

이미 아는 사람들은 알고 있겠지만, Spring Dynamic Module은 기존의 Spring OSGi에서 변경되었다. (Spring Dynamic Modules for OSGi Service Platforms이 Full Name이고 약어로는 Spring-DM으로 사용된다.)
위에서 잠깐 언급하였지만, 현재 진행하고 있는 프로젝트는 Spring Framwork의 여러 부분들과 Spring-DM을 적극 도입하려고 검토하고 있다.

최근에 호주로 간 Toby(일민)이와 채팅을 통해서 어떤 부분들을 공부해야 하는지 의견을 나누었었다.  OSGi에 대한 무지한 내가 어떤식으로 접근해야 하는지 정말 막연했는데, 여러가지 정보들을 얻을수 있었다. 이는 나중에 기회가 되면 따로 정리할 것이다.

Spring-DM은 Java 1.4와 OSGi 4.0이 필요하고 Spring 2.5 또한 필요하다.
OSGi는 일반적으로 Eclipse-equinox가 추천되고 있다. 이미 아는 사람들은 다 알겠지만, Eclipse IDE 3.x는 OSGi를 기반으로 설계되어 개발되었고, 이미 수백만 개발자들이 다운받아 사용하고 검증한 OSGi의 가장 성공한 Case model이다. 그리고, Spring Framework 2.5도 OSGi 번들로 개발되어있다.

이런점에서 Eclipse-Equinox는 OSGi를 분석하고 공부하는데 분명 큰 도움이 될것이다.

Posted by 행복상자

댓글을 달아 주세요

2008. 3. 29. 09:11

Spring.Net에 관하여 공부하는 것/Spring Framework2008. 3. 29. 09:11

회사에서 나의 업무는 Java쪽에서 주로 일을 한다. 그런데, 이상스럽게도 요즘 내가 찾아보는 자료는 대부분이 .Net 관련 자료들이고 MS와 관련된 기술들이다.

사실, 일을 할때는 .Net이든 Java Side이건 가리지는 않는다. 양쪽 모두 발전하고 있는 기술들이고, 언제 고객의 요구가 변경될지도 모르기 때문에 항상 주지하고 지켜보고는 있지만, 요즘처럼 틈틈히 .Net쪽의 기술을 검토하고, 분석하지는 않았었다.

최근에 새로 프로젝트를 시작할 일이 있어서, 미국의 연구소와 같이 일을 하고 있는데, 그 쪽에서 .Net과 Java의 장단점에 대해서 나열 할 때도, 현실적으로 기존에 구현된 구현부는 Java이기에 .Net보다는 Java를 지지하기도 했었는데, 이상하게도 .Net 관련 기술에 빠져들고 있다.

아마도 기존의 MS는 폐쇠적익, 자기 기술에 대한 표준화에 대한 강한 의지 때문에 폐쇠적이고 자기 중심적인 면이 강했는데 반해, 요즘의 기술적 트렌드와 MS이외의 휼륭한 기술과 Framework을 받아들이는 적극적이고 긍정적인 면이 보기기 때문인것 같다. 기술적 관점에서 외적인 기술 트랜드에 대해 유연한 모습을 자주 보여주기 때문에 나의 관심도가 증가한 것 같다.

Spring의 DI(Dependoncy Injection)와  IoC(Inversion of Container)는 Java 쪽의 Spring Framework를 접해본 사람들은 흔히 듣는 익숙한 용어들이다. 그리고 Spring Framework의 Core 부분이다.
그런데, ASP.Net 3.5에서는 이에 대해 흔히 언급하고 있다. 그리고 DO와 IoC를 지원하다고 언급하고 있기에 나의 관심이 동했다.

Spring.Net은 스프링을 만든 SpringSource(Interface21에서 사명 변경)에서 지원하고 있다.
간략하게 설명하면, Spring Framework의 .Net 버전으로 생각하면 된다.  
따라서 Spring Framwork의 핵심적인 부분은 모두 반영이 되어있지만, .Net의 언어적인 측면을 따라서 만들어져 있다.

DI와 IoC는 스프링의 코어 부분이다. 이는 당연히 Spring.Core 모듈에 포함되어 있다.
Spring.Aop모듈은 스프링 철학의 핵심이라고 할 수 있는 모듈간의 Dependecy를 줄이기 위한 AOP(Aspect-Oriented Programming)을 지원한다. AOP는 한국에서는 상황 중심 프로그래밍으로 알려져 있는데, 웹 개발자라면 한번쯤은 관심을 가져볼만 하다. 아니 Architect를 꿈꾸는 사람이라고 하면, 반드시 접해보는 것이 바람직할 것 같다.
 
그리고, Database와 Data layer에 Access를 위해서 ADO.Net과 NHibernate를 사용하고 있다. 이부분은 Spring Framework과 많은 차이가 있을 것같다. 왜냐하면 ADO.Net도 나름대로 많은 장점이 있기 때문이다.

Spring.Web 모듈은 MVC를 제공하기 위한 기능들을 지원한다.  ASP.Net 3.5의 Extention 기능으로 MVC를 지원하기로 한것은 이미 잘 알려져 있다. 이는 스프링 MVC와는 많은 부분이 다른다. 마치 Rails와 유사하다.

자세한 내용은 아래에 Spring.Net의 링크를 이용하여 얻을 수 있다.
Spring.Net은 Spring Framework ver 2.5의 모든 기능을 지원하지는 않는다. 예를 들어 Spring Dynamic Module(Spring OSGi)는 아직 지원하지 않는다. 공식적으로 사용 가능한 Spring.Net은 ver 1.1이다.

Spring.Core – Use this module to configure your application using Dependency Injection.   

Spring.Aop – Use this module to perform Aspect-Oriented Programming (AOP).  AOP centralizes common functionality that can then be declaratively applied across your application in a targeted manner.   An aspect library provides predefined easy to use aspects for transactions, logging, performance monitoring, caching, method retry, and exception handling.

Spring.Data – Use this module to achieve greater efficiency and consistency in writing data access functionality in ADO.NET and to perform declarative transaction management.

Spring.Data.NHibernate – Use this module to integrate NHibernate with Spring’s declarative transaction management functionality allowing easy mixing of ADO.NET and NHibernate operations within the same transaction. NHibernate 1.0 users will benefit from ease of use APIs to perform data access operations.

Spring.Web – Use this module to raise the level of abstraction when writing ASP.NET web applications allowing you to effectively address common pain-points in ASP.NET such as data binding, validation, and ASP.NET page/control/module/provider configuration.

Spring.Web.Extensions – Use this module to easily expose a plain .NET object (PONO), that is one that doesn't have any attributes or special base classes, as a web service, configured via dependency injection, 'decorated' by applying AOP, and then exposed to client side java script.

Spring.Services – Use this module to adapt plain .NET objects so they can be used with a specific distributed communication technology, such as .NET Remoting, Enterprise Services, and ASMX Web Services.  These services can be configured via dependency injection and ‘decorated’ by applying AOP.

Spring.Testing.NUnit - Use this module to perform integration testing with NUnit.

Spring.Net 1.1이 나온지도 꽤 된것 같다. Spring Framework ver 2.5의 새로운 Picture가 반영된 버전은 언제 나올지 궁금하다.

마지막으로 Spring.Net에 대한 동영상 자료는 아래 링크를 참조하면 도움이 될것이다.
http://www.infoq.com/presentations/pollack-intro-spring


Posted by 행복상자

댓글을 달아 주세요

2007. 11. 26. 23:27

좋은 코드에 대한 나의 생각 공부하는 것2007. 11. 26. 23:27

좋은 코드에 대한 나의 생각

내가 개발자의 길로 들어선 이후로, 내가 봐도 제법 괜찮다고 하는 코드를 짠것은 쾌 오래전의 일인듯하다.  내가 공들여서 개발할 코드라도, 약 2개월만 다른 프로젝트를 하다보면, 내 것인지 아니면 동료의 것인지 한 눈에 알아보기 힘들다.
평소에는 본인의 코드를 보고 자화자찬하는 사람은 드물것이다.
정말 오래전의 일인데, 나는 내가 짠 코드를 보고, 감탄했던 적이 있었다. 어느날 내가 우연찮게 봤던 코드였는데, 군더거기 하나 없는 코드였고, 구조도 복잡하지 않았다. 이렇게 코드의 구조를 가져갈 수 있다니 하고 감탄했었다. 지금 생각하면 참 남사스럽고 부끄럽다.

일반적으로 사람들은 자신에게는 무척 관대하지만, 이것이 내것인지 남의 것인지 구분이 안되는 상황에서는 객관적인다. 그런데 나는 내 코드인지도 모르고 누군지 모르지만 참 잘짰다고 속으로 생각한 것이었다. 그리고는 소스 코드가 내가 몇달전에 작성한 것을 알고는 참 멋적기도 했지만 기분이 좋았다. 나르시즘에 빠진것인지도 모른다. 요즘말로는 환자다.
하지만, 좋은 코드는 사람을 행복하게도 해준다.

내가 현재의 직장에 입사한 후로 여러가지 다양한 프로젝트을 했지만, 결코 많은 시간을 투자하지는 못하고 좋은 코드도 많이 만들어 내지 못했다. 그러나 좋은 코드를 만들고자 하는 욕심은 누구보다 많다. 내가 생각하는 좋은 코드는 사실 다른 개발자들이 생각하는 것의 범주를 뛰어 넘지는 못한다. 왜냐하면, 나의 능력 밖의 코드는 만들어 내지 못한다. 다른 개발자를 설득하기에는 아직 힘이 부족하다. 사실 문인들을 글로 말하지만, 개발자는 코드로 말한다.
하지만,

1. 좋은 코드는 읽기에 불편함이 없어야하고
2. 내용을 전달함에 난해해야 하지 않으며,
3. 그 구조가 간결해야 한다.
4. 그리고 변경에 민첩하게 반응 할 수 있어야 한다.

좋은 코드를 생성하는 방법은 여러가지가 있지만, 나는 리펙토링을 좋아하는 편이다. 같은 목적을 가진 코드에 변화를 주면서 조금씩 조금씩 코드가 좋아지는 것을 보면 기분이 새롭다. 이것은 나를 만족시키는 방법이고 나를 위한 것이지만, 내 혼을 한땀 한땀 새겨 넣는 이 행위는 장인의 마음과 다르지 않다.
Posted by 행복상자

댓글을 달아 주세요

2007. 11. 13. 23:32

Ruby On Rails 환경 구성 공부하는 것/Ruby On Rails2007. 11. 13. 23:32

Ruby On Rails 환경 구성

요즈음 내가 갑자기 다양한 웹 기술에 관심을 갖게 되었다.  처음 웹을 접한지 벌써 10년이 넘어섰다. 그동안 큰 변화들이 있었지만 최근 1~2년의 기술 발전은 정말 비약적이다. 하루 하루 새로운 것이 나온다. 특히 ExtJS는 요즘 나의 관심거리이다. 현재 2.0 beta가 나온 상태이다.

그 동안 사용했던 웹 개발 환경도 참 다양하기도 하지...
아는 사람을 아는 Interdev 1.0 beta 버전을 이용하여 1996년 처음 ASP를 접했었다.
그리고 Perl을 이용해서 리눅스 환경에서 CGI를 개발하기도 했고, C컴파일러를 이용하여 HTML을 직접 제어하기도 했다. 그리고 현재는 Java를 이용하여 솔루션을 개발하고 있다.

그러나 이 모든것은 Server Side의 변화와 개발이었으며, 사용하는 언어는 개발 환경에 개발 속도에 영향을 주는 환경이었다. 어떤 개발 환경을 선택하냐에 따라 개발 결과와 효율이 크게 달라 졌었다. 사실, Vi 에디터는 웹 개발에는 별로 도움이 되지 않는 도구라고 생각할 때가 많았었다. (오해하지 마시라, Vi를 손발처럼 다루는 선수들 말고, 나를 예를 드는 것이니까... ^^) Web 서버와 DB서버를 오가면서 수동으로 작업할때 중간에 버리는 짜투리 시간들이 참 많다.특히 EJB로 개발할 때는 컨테이너 올리고 내리는 것은 정말 참기 어려운 작업이었다. 좀더 자동화 되고 지능적인 툴을 사용한다면, 시간을 생산해 낼 수 있다.

현재는 개인적으로 Roby를 공부 중인데,  아래는 집에서 사용하고 있는 개인용 PC에 설치되어 있는 gem 목록이다. 최근에 Rails를 설치하고 RedRails 플러그인을 eclipse에 설치해서 개발 환경을 만들었다. 그리고  DB는 학습을 위해서 간단한 Sqlite를 설치했다.

RedRails를 이용하여 예제를 생성하고, 테스트 하는 것은 정말 간단한 작업이었다. 그러나, 환경을 만들어 주는 것은 쉽지는 안았다. 시행 착오를 격으면서 gem 을 이용하여 Ruby 라이브러리를 설치하고 Eclipse 플러그인을 설치했다. 최신 버전을 설치하기 위해서는 검색엔진의 도움을 받는 것이 쉬운 길인듯 하다.

설치과정을 간단하게 설명하면(정말 간단하게),
 
1. Ruby 1.86 버전을 설치한다.
2. Eclipse 3.3 버전을 설치한다.
   - Ruby 개발을 위해, DLTK를 SW Update를 이용하여 설치한다.
3. Rails를 설치한다.
    - gem install rails 라고 도스 명령창에 입력후 앤터 (Y/N 확인을 해야 한다.)
   - 다음과 같이 Dependency 옵셜을 주면 자동으로 설치한다.
       gem install rails --include-dependencies
4. Eclipse를 위한 aptana 플러그인을 설치(
http://www.aptana.com)
   - aptana 사이트에서, RedRails 플러그인을 Eclipse에 설치한다.

이클립스에서 Rails 프로젝트를 만들어서 사요하면 되는데, 이는 다음을 참조한다.
동영상:
http://www.aptana.tv/movies/aptana_radrails_intro/aptana_radrails_intro.html

만약, 위 동영상 예제와 같이 sqlite를 이용하고 싶다면, sqlite를 다운받아야 하는데, 내가 약간의 시행 착오를 겪은 것은 sqlite.dll을 어디에 두어야 하는 것이지 였다. 
이 파일은 Rails가 만들어준 디렉토리중 bin 디렉토리에 두고 사용하면 된다.
아마 쉽게 위 동영상 예제를 따라 할 수 있을 것이다.

오늘 회사에서 Rails를 설치하려 했는데, 사내 보안 정책으로 인해서, gem을 사용할 수 없다는 것을 깨닫는데, 많은 시간이 걸렸다. 일종의 Proxy 정책의 영향인데, robyforge에 정상적으로 연결이 되지 않는다. Gem을 이용하여 Rails를 원격으로 설치할 수 없었다.

그래서 집에 있는 PC에 저장되어 있는 Gem 파일을 이용하여 Local에서 설치하려고 한다. 아래는 내 PC에 있는 gem 패키지 목록들이다.

도스창에서 dir/s *.gem 명령을 입력하고 실행시키면 된다.

사용자 삽입 이미지

Rails 설치를 위한 gem 파일 목록

Posted by 행복상자

댓글을 달아 주세요