Java2012. 9. 18. 16:48

EhCache의 Spring Framework적용에 대해서 알아 보겠다.


동일한 데이터 요청을 여러번 할 경우 매번 그데이터를 Database에 접근해서 데이터를 가지고 온다면..


Database에는 큰 부하가 걸릴 것이다.


만약 이 요청한 데이터의 변하지 않는다면 Database를 거치지 않고 그대로 그 데이터를 저장하고 있다가


보내준다면 Database에는 무리가 덜 할 것이다.


그 기능을 해줄 것이 바로 Cache!!


이러한 고민을 나만 한것이 아니라 아마도 개발자들이 개발을 시작하면서 부터 계속 해왔을 것이다.


검색을 해보니 OSCache, JCS, EhCache등 여러 오픈 소스들이 있었다.


그중에 성능이 가장 좋고 또 사용 하기에 간편하고 Spring에서 Annotation설정 하나 만으로도 사용가능한


EhCache을 선택해 Spring에 적용을 해보았다.


EhCache를 iBatis에 바로 적용 시키는 방법도 있다.


하지만 EhCache는 Spring에서 지원(?) 콜라보레이션(?)을 하고 있다.


http://code.google.com/p/ehcache-spring-annotations/


위의 사이트에서 라이브러리를 다운 받자.


압축을 풀면 ehcache-spring-annotations-1.2.0.jar 파일과


lib폴더 안에는 Ehcache에 관련되 라이브러리들이 들어 있다.


이미 Spring Framework의 라이브러리를 추가해 놓았다면 그외에 필요한 라이브 러리를 프로젝트에 추가하자.


필요 한 라이브러리의 목록은 다음과 같다.


aopalliance-1.0.jar

commons-codec-1.5.jar

ehcache-core-2.4.5.jar

guava-r09.jar

slf4j-api-1.6.2.jar


라이브 러리 추가를 마쳤으니 이제는 설정!!


우선은 Spring Framework의 Application-Context.xml에 EhCache의 FactoryBean을 등록 해야한다.


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:ehcache="http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring"
       xsi:schemaLocation="
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
            http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring/ehcache-spring-1.1.xsd">
    <ehcache:annotation-driven cache-manager="ehCacheManager" />
   
    <bean id="ehCacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
        <property name="configLocation" value="/WEB-INF/config/ehcache.xml" />
    </bean>

</beans>

붉은색으로 표시된 부분을 추가 해줘야 한다.


FactoryBean추가 부분을 보면 Property의 configLocation이 있는데 여기엔 EhCache설정 파일의 경로를 적어 주어야 한다.


다음은 EhCache의 설정 파일 부분이다.


<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
    updateCheck="false">
    <diskStore path="java.io.tmpdir" />
   
    <cacheManagerPeerProviderFactory
        class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
        properties="peerDiscovery=manual,
                    rmiUrls=//192.168.0.99:2424/TalkMsg.channelTalkCache"/>
    <cacheManagerPeerListenerFactory
    class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
    properties="port=2424, socketTimeoutMillis=120000" />
   
    <defaultCache eternal="false"  
        maxElementsInMemory="5000" 
        timeToIdleSeconds="300"
        timeToLiveSeconds="600"
        overflowToDisk="false"
        diskPersistent="false"
        diskExpiryThreadIntervalSeconds="120"
        memoryStoreEvictionPolicy="LRU">
    </defaultCache>
   
    <cache name="cache1"
        maxElementsInMemory="5000"
        eternal="false"
        timeToIdleSeconds="300"
        timeToLiveSeconds="600"
        overflowToDisk="false"
        diskPersistent="false"
        diskExpiryThreadIntervalSeconds="120"
        memoryStoreEvictionPolicy="LRU">
        <cacheEventListenerFactory
           class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
           properties="replicateAsynchronously=false,replicateUpdatesViaCopy=false" />
          
        <bootstrapCacheLoaderFactory
                 class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory"
           properties="bootstrapAsynchronously=false,
                     maximumChunkSizeBytes=5000000" />
    </cache>
</ehcache>

설정 파일 안에는 캐쉬를 어떻게 사용할지에 대해서 설정을 한다.


cacheManagerPeerProviderFactory와 cacheManagerPeerListenerFactory는 캐시 서버가 여러대일 경우


다른 서버와의 동기화에 필요한 설정들이다.


그리고 defaultCache는 꼭 있어야 하는 캐쉬 설정이며, cache name="cache1"는 내가 프로젝트내에서 사용할 캐쉬의 설정.


그외 설정의 세부적인 부분은 이후의 포스팅에 다룰것이다.


EhCache는 Java RMI를 이용하여 다른 캐시 서버와의 통신을 한다.


그럼 마지막으로 캐시를 적용할 부분을 보자.


@Override
    @Cacheable(cacheName="cache1")
    public List<?> getList(Map<String, Object> param) {
        return getSqlMapClientTemplate().queryForList("TalkMsg.getTalkMsgList", param);
    }

    @Override
    @TriggersRemove(cacheName="cache1", removeAll=true)
    public Object insertMsg(Map<String, Object> param) {
        return getSqlMapClientTemplate().insert("TalkMsg.insertTalkMsg", param);
    }

Annotation만으로도 설정이 가능하다.


단순히 List만을 가져오는 경우에는 캐시를 가져와 저장하고 또 불러오기 전 캐시에 내가 원하는 데이터가 있는지 확인하는


Annotation인 @Cacheble를 사용하고 데이터 삽입, 삭제, 수정같은 데이터의 변화가 있을 경우에는 @TriggerRemove


Annotation을 이용하여 캐시의 내용을 모두 지워 데이터의 유효성을 높인다.


이 세가지의 설정만으로 캐시는 정상적으로 잘 작동한다.


영어가 된다면 EhCache의 공식 홈페이지에 가는것을 권장한다.


설정이 너무 간단하다 보니 영어만 좀 된다면 공식 홈페이지의 내용을 보는것이 좀더 정확하고 빠를 것 같다.


EhCache는 단순하고 가볍고 거기에 성능까지 좋다는 평을 받고 있다.


실제로 설정을 하고 사용을 해보니 정말 편하고 성능도 좋았다.


이 이후의 포스팅은 설정의 세세한 부분과 성능 테스트가 될것이다.


그리고 내가 올린 포스팅은 잘못 된 정보가 있을 것이니 참고만 하고 공식 홈페이지의 내용이나 공식 홈페이지에서 제공하는


문서를 주로 참고 할 것을 권장한다.

'Java' 카테고리의 다른 글

Java Server Timeout Test하기.  (0) 2013.02.05
Https SSLHandshakeException..!  (0) 2012.10.16
json-lib-2.4-jdk15.jar  (0) 2012.08.24
Log4j의 Appender..!  (0) 2012.06.26
Log4j 설정..!  (0) 2012.06.25
Posted by Z700zZz
자전거 생활2012. 9. 18. 16:06

사진 그런 것 없다.


구매 후 시험으로 한번 돌려보고 로라용 휠셋이 도착하고 전에 쓰던 스프라켓을 이식한다음 두번 정도 돌려봤다.


로라 라는게 일반 도로를 타는것과 같은것 같지만 그렇지 않은것 같다.


일반 도로를 달리면 패달질을 하다가도 멈출때도 있고 또 오르막이 있으면 내리막도 있다.


하지만 이 로라라는건 그냥 오르막만 있는것 같다..


그냥 오르막..오르막..오르막..오르..마아..악...


경사도 10%이상의 오르막을 경험하고 싶다면 이로라가 답이다.


상오기님의 블로그에 있는 CTS를 돌리지는 않았다.


1시간 10분정도의 러닝타임으로 알고 있는데..처으 25분 정도 돌리고 그 프로그램을 넣고 완주할 자신이 없었다.


그냥 가민을 켜놓고 RPM90정도를 유지하며 1분 인터벌..2분 리커버리 이런식으로 돌렸는데..


바닥에는 땀으로 흥건하고 눈앞에는 아무것도 안보이고..


앞에 틀어놓은 아이패드에는 뉴스가 나오는데 무슨 내용인지는 모르겠고..


30분타고 GG...ㅜㅜ


엘리 슈퍼 크로노 파워 플루이드..그래 너 졸라 짱쌔다.


저항이 너무 쌔다보니 확실히 근력이 늘어날것 같긴하다.


하지만 너무 힘들고 혼자서 하는 운동이다보니 너무 외롭다..


한강에서 홀로 라이딩 하는것보다도 더 외롭다..


뭔가 재미난 영상을 틀어놓고 하면 재미날것도 같지만..로라를 타는내내 너무 힘들어서 눈에도 귀에도 아무것도 안들어 온다.


하아..저거 팔아버릴까라는 생각도 들지만..이미 산것이고 곧 다가올 겨울 요긴하게 쓰거 생각하고 팔생각은 접어둬야겠다.


이 로라를 사기위해 많이 검색도 하고 고민하고 할텐데..


운동하려면 이정도는 사야한다는게 내 생각이다.(나만 혼자 죽을 수는 없다ㅋㅋㅋ)


아무튼 최대한의 운동 효과를 노린다면 이만한 제품이 없는것 같다.


사진 한장 없지만..사진은 개봉기를 참고하면 되고..암튼 좋은 제품이다. 참으로 횡설수설 정신없는 사용기..-_-;;

'자전거 생활' 카테고리의 다른 글

비수기인 요즘..!  (0) 2013.01.29
생활의 즐거움..?  (0) 2012.11.27
ELITE社 Super Crono Power Fluid(엘리트 슈퍼 크로노 파워 플루이드)..!  (0) 2012.09.08
BikeMate ReadWallet..!  (0) 2012.08.28
Fulcrum Racing 1..!  (0) 2012.08.13
Posted by Z700zZz
자전거 생활2012. 9. 8. 01:52

얼마전 라파 세일때 롱슬리브 져지와 시티 레인 자켓을 지른뒤 자전거에 돈 바르는 짓은 이제 그만이라는..


개소리 아닌 개소리를 지껄였다.


맞다 역시 개소리였다.


아침에 출근하며 동호회 게시판에 들어가보니 이마트에서 로라를 싼가격에 팔고 거기에 만원 할인 쿠폰까지..


어머 이건 질러야해!!


그래 휠셋 할부가 한달이 남아있어도 그래 이거 뭐 세달 할부면 괜찮겠지하고 출근해서 쿠폰 먹이고 지르려고 하다보니..


패러럴즈에서 공인 인증서 인식불가..-_-;;


그러다 댓글에 생일 쿠폰 먹어요라는 댓글보고 눈이 뒤집어져서는 친척동생한테 생일 선물 조공까지 받쳐가며 가입을 시켰다.


그렇게 친척동생 이마트 가입까지 시켜가며 생일 쿠폰 먹여 로라를 질렀다.


그이름 하여 ELITE社 Super Crono Power Fluid(엘리트 슈퍼 크로노 파워 플루이드)..!


아 그 놈 참 이름하나 길다.


그냥 나 짱쌔 하면 될걸 가지고..단어를 몇개를 갖다 붙여 놓은건지..뭐 대충 느낌은 나 졸라 열라 엄청나게 짱쌔 뭐이런 느낌??


검색을 해보면 고장 난줄 알았다는 사용기와 괜히 이름긴게 아니라는 사용기를 볼수 있었다.


그렇게 우여곡절 끝에 주문을 하고 오매 불망 기다리고 있었다.


그게 오래전에 올라온 물건이라 품절되서 안올수도 있다는 말도 있었는데 바로 배송 들어가는거 보고 안심했다.


그리고 주문 다음날 아무런 연락도 없는거 보고는 다시한번 안심..


그렇게 택배가 도착했는데 11시면 순찰 도는 경비아저씨 덕분에 로라와의 조우는 다음날 아침으로 미뤘다.


다음날 아침 새벽같이 일어나 로라와 만남을 하고 널 탐닉(?)해주겠다는 다짐은 안드로메다로 날려버렸..


그냥 로라 올려다놓고 출근하기 바빴다..


참 서론이 길었다.


일단 이건 사용기가 아닌 개봉기와 조립이 주를 이룰것 같다.





박스에 회사 이름이 크게 박혀 있고, 그 밑에는 제품 사진과 작지만 제품이름이..


나 열라 졸라 엄청나게 짱쌔!!


박스안에는 휠셋 교체전까지 사용하던 순정 휠셋이..





참 이때가 택배를 받을때보다 더 기쁜 것 같다.


칼로 테이프를 가르고 박스를 여는 순간..


"주인님 그동안 어두웠다구요. 무서웠어요. 어서 저를 꺼내 주세요!!"





"그래!! 그 좁고 어두운 곳에서 너를 구원해 줄게!! 조금만 기다려!!"





"어??"


쑥 뽑는데 박스 하나가 옆으로 툭하니 떨어졌다.


이런건 좀 조심하라고 써주면 안되나??아 하긴 영어로 써있으면 난 까막눈이라 못알아 먹었을테지..





울트라 플루이드 파워 젤..


아마로 로라의 중요 핵심 부품인 저항(?)이 들어 있는것 같다.


2011이라는 숫자와 2010이라는 숫자..그해에 나온 제품인지 아님 그해에 만들어진 제품인지..


전에는 이런 숫자 참 신경쓰이고 신제품이 더 좋고 그랬는데..





"조금만 기다려 너도 어둠에서 구해줄게!!"





거치대 외의 부품들이 들어있다.





제일 중요한 제품 설명서..!


제품을 사용하기전에 사용설명서 정독 두번은 필수는 개뿔..


개뿔은 개뿔이어도 조립하다 부서지면 내눈에서 흐르는 눈물은 어쩔수 없기에 조립부분은 정독하자.





우람하다..빨갛다..세배는 더 힘들다는 표시일까..





참..사진 찍는다고 오와열 맞춰 놓고..이게 뭐하는 건지..-_-;;





이탈리아노..


멘붕와서 사진까지 흔들렸다..


영어도 까막눈인데 이탈리아어라니.





그래 세계 만국 공통어는 영어야!! 영어는 빼놓지는 않았을 거라고!!


하지만 난 영어는 까막눈..


그림보고 맞추자..





어라..안끼워진다??





반대다 대고 억지로 끼우고 있으니 될리가 있나..


더 얇은 쪽을 보면 이렇게 센터를 맞추라고 아주 친절하게 스티커가 붙어있다.





설치 모습..





그럼 뒤집어서 로라 부분을 맞추자..


부품 사진에 보면 나사 두개가 저 길쭉한 구멍에 들어간다.


로드 휠셋은 26인치니 가장 위쪽 구멍 두개에 나사를 맞춰 끼우도록 하자.





로라 조립 완료!!


이 간단한걸 30분동안 맞추는 나도 참........





자 이제 원래 있던 큐알을 빼고 로라용 큐알로 바꾸자..





로라에 거치한 모습!!




이것 역시 거치 모습!!



설치는 처음이라 좀 헤맷지만 쌘 저항값 만큼 쉽다?


일단 설치를 하고 간단하게 돌려 보았다.


저항값 쌔다..이 로라를 두달전쯤인가 파워 테스트 한다고 탔었는데 그때 파워 테스트 하다가 돌아가신 외할아버지를


만나뵙고 온적이 있었다..


역시나..테스트로 일분 좀넘게 돌렸는데 어질어질하다.


실질적인 사용은 아마도 새로운 스프라켓을 구매하고 현재의 휠셋의 스프라켓을 이전의 순정 휠셋으로 이식하면 그 때부터


시작 될 것이다.


내가 암만 돈쓸데가 자전거밖에 없다고 해도 비싼 타이어를 막쓰는 그런놈은 아니니까..ㅜㅜ


근데 스프라켓 분리 공구와 스프라켓을 또 사야하는 불상사가..아..암만 좋아서 하는거지만 이건 뭐..


대한민국의 날씨가 건기와 우기로 변한만큼 또 잦은 야근으로 운동을 못하는 날 나의 스트레스를 날려줄 물건..


아 지름은 역시 기쁘다..하지만 한달뒤에 내 통장에서 돈빠져 나갈땐 꼭 해킹 당한 기분이 든다.


열심히 타자..

Posted by Z700zZz
Mac2012. 8. 30. 17:49

Mac OSX에 기본으로 포함되어 있지 않은 UNIX도구들을 설치하고 관리 해주는 도구에는 Homebrew와 MacPorts가 있다.


그중 Homebrew의 설치에 대해 알아보겠다.


Homebrew는 Intel CPU가 장착되어있는 Mac에서만 동작된다.


OSX 10.5이상에서만 지원이 된다.


그리고 XCode가 깔려 있어야 하며, Homebrew의 패키지를 컴파일 하기 위해서는 GCC가 필요하지만


최신 XCode의 경우 GCC가 자동으로 깔리지 않는다.


그래서 XCode설치 후 Preferences > Downloads > Command Line Tools를 설치 하도록 하자.


그런 다음 터미널을 열어 다음의 명령어를 일력해 준다.


/usr/bin/ruby -e "$(/usr/bin/curl -fksSL https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)"


그러면 설치가 된다.


여기까지가 네이버나 구글을 검색하면 어디서나 볼수 있는 내용이다.


이대로 하니 안된다.


curl: (22) The requested URL returned error: 404


404에러 메세지만이 나온다.


현재 구성되어 있는 내컴의 버전들은 OS는 Mountain Lion인 상황..


이것 때문인가??


Homebrew를 깔려는 목적은 MongoDB를 깔기 위해서 였던것..


MongoDB공식 홈피에서 Mac OSX에 MongoDB까는 방법이 Homebrew로 설명이 되어 있는데 거기에 Homebrew링크를


눌러 들어가보니 설치 명령어가 다르...?응!?!?


거기에 나온 명령어는 다음과 같다.


ruby <(curl -fsSkL raw.github.com/mxcl/homebrew/go)


가..간단하다..엔터를 치니..


설치가 된다..


==> This script will install:
/usr/local/bin/brew
/usr/local/Library/...
/usr/local/share/man/man1/brew.1

Press enter to continue
==> /usr/bin/sudo /bin/mkdir /usr/local
Password:
==> /usr/bin/sudo /bin/chmod g+rwx /usr/local
==> /usr/bin/sudo /usr/bin/chgrp admin /usr/local
==> Downloading and Installing Homebrew...
remote: Counting objects: 79209, done.
remote: Compressing objects: 100% (37997/37997), done.
remote: Total 79209 (delta 54118), reused 62913 (delta 40389)
Receiving objects: 100% (79209/79209), 11.22 MiB | 312 KiB/s, done.
Resolving deltas: 100% (54118/54118), done.
From https://github.com/mxcl/homebrew
 * [new branch]      master     -> origin/master
HEAD is now at 4197a48 tests: avoid unnecessary chdir
==> Installation successful!
You should run `brew doctor' *before* you install anything.
Now type: brew help


설치가 되면 다음과 같은 메세지가 출력이 된다.


설치 완료!!


brew update


위의 명령어를 실행하여 Homebrew를 업데이트 하도록 하자.


이로써 Homebrew설치 완료!!


오늘도 느낀것이지만 영어를 할 줄 알아야한다.


공식 홈페이지에 가니 해결 되는것을 엄한 블로그만 검색해서 하고 있었으니..

'Mac' 카테고리의 다른 글

Adobe Lightroom 구독취소  (0) 2020.05.03
Chrome 확장 프로그램 - Momentum  (0) 2015.06.22
도메인 주소의 IP알아내기.  (0) 2013.04.18
MicroSoft Office 2011 for Mac...!  (0) 2011.03.30
Posted by Z700zZz
개발2012. 8. 29. 00:03

평생 개발자로 일하기 위해서 가져야 할 좋은 습관들을 알아보자. 추가로 의견이 있으면 댓글로 달아서 같이 공유를 하면 어떨까?


1. 프로그래밍에 열정이 있어야 한다. 열정이 없고 즐기지 못하면 평생 지속하기 어려운 일이다. 지금 환경이 있는 열정도 꺾어버릴 만큼 열악하다면 심각하게 변화를 생각해야 한다.


2. 프로그래밍 기초 원리를 이해해야 한다. 원리를 모르면 근본적인 해결능력이 떨어지고 수준 높은 개발을 하기 어렵다.


3. 문제 해결 능력을 키워야 한다. 개발자의 가장 중요한 핵심 역량이다.


4. 창의적인 사람이 되라. 대부분의 좋은 해결책은 창의력에서 나온다.


5. 다른 사람의 소스코드를 이해할 수 있는 능력을 키워야 한다. 다른 사람의 소스코드에서 많은 것을 배울 수 있다.


6. 수학을 잘 해야 한다. 수학을 못하면 값싼 쉬운 개발 밖에 못한다. 수학에 관심을 가지고 재미를 느껴보는 것도 한 방법이다.


7. 좋은 커뮤니케이션 스킬을 갖도록 노력해야 한다. 프로그래밍은 컴퓨터와 얘기하는 것이 아니고 사람들과 얘기하는 것이다.


8. 협업 능력을 키워라. 다른 사람과 일을 나눠서 할 수 있어야 내 몸값이 비싸진다. 혼자 일하는 것만 잘하면 평생 혼자 일해야 한다.


9. 논쟁(debate) 능력을 키워야 한다. 고급 개발자가 될 수록 토론하는 일이 늘어날 것이며, 좋은 토론이 좋은 소프트웨어를 만든다.


10. OOP를 완전히 이해해야 한다. OOP는 좋은 Architecture의 핵심이고, 협업능력을 키울 수 있게 해준다.


11. 남이 이해할 수 있는 문서를 작성할 수 있어야 한다. 문서 작성은 평생 따라다니는 중요한 업무이다. 문서작성을 못하는 개발자는 값싼 개발밖에 못한다.


12. 적어도 한가지의 개발언어는 완전히 마스터를 해야 한다. 마스터한 개발언어로는 어떠한 문제도 풀 수 있어야 한다. 모든 개발언어는 원리가 비슷하므로 다른 개발언어도 쉽게 배울 수 있다.


13. 적어도 한가지의 스크립트 언어를 구사할 수 있어야 한다. 간단한 툴은 쉽게 만들어 쓸 수 있다. 스크립트 언어로 쉽게 할 수 있는 일을 C언어로 작성하고 있다면 당장 Python을 공부해라.


14. 비즈니스를 이해해야 한다. 훌륭한 아키텍트가 될 것이다. 좋은 Architect는 비즈니스 전략에서 나온다. 비즈니스에 관심이 없다면 당장 돌아가는 Software는 만들 수 있어도 좋은 Architecture는 못 만든다.


15. 주변에 나보다 훨씬 뛰어난 프로그래머를 둬라. 끊임 없이 배울 수 있다. 주위의 뛰어난 개발자를 경쟁상대라고 생각하지 말고 스승으로 생각해라. 그도 나를 스승으로 생각할 것이다.


16. 끊임 없이 새로운 기술을 익혀라. 전쟁에서 쓸 무기가 많아질 것이다. 몇 가지 소수의 익숙한 기술만 고집하면 도태될 수 있다.


17. 습관적으로 주석을 달아야 한다. 주석은 남을 위해서 다는 것이 아니고 프로그래밍의 일부이다. 주석이 없어도 이해가 가능한 코드를 작성하는 것이 좋지만 그래도 주석은 꼭 필요하고 Doxygen등의 주석을 꼭 이용해라.


18. 남이 이해하기 쉬운 코드를 작성해야 한다. 나중에 내 발목을 잡지 않을 것이다. 내가 좀더 위로 올라가기 위해서는 아래가 자유로워야 한다.


19. 리뷰와 친해져야 한다. 평생 리뷰를 하며 사는 것이 프로그래머의 인생이다. 리뷰를 하지 않으면 발전하기 어렵다. 리뷰는 지금 프로젝트의 문제도 해결해줄 뿐만 아니라 내 프로그래머 인생의 가장 좋은 스승이다.


20. 건강을 유지해라. 건강을 잃으면 실력이고 뭐고 다 필요 없다. 야근도 좋지만 좋은 음식을 먹고 꾸준히 운동도 하자.


21. 좋은 의자를 사라. 건강을 지켜주고 효율을 높여준다. 프로그래머에게 의자는 침대보다 오래 머무르는 곳이다. 비싸고 좋은 의자일수록 좋다.


22. 인생을 즐길 줄 알아야 한다. 프로그래머로 오래 지속하고 싶으면 인생 자체를 즐기는 다양한 방법을 익혀야 한다.


23. 소프트웨어 공학을 익혀라. 주먹구구식 개발에서 벗어나게 해주고 프로그래밍이 더 이상 노동이 아니고 즐겁게 개발을 하게 해준다. 스펙과 설계문서를 작성하고 좋은 개발시스템하에서 적절한 프로세스를 적용해서 개발하는 것이 가장 빠르게 소프트웨어를 개발할 수 있는 방법이라는 것을 경험하고 깨달아야 한다.


24. 높은 연봉을 받을 수 있도록 꾸준히 노력하라. 위의 23가지 방법들을 따라 한다면 저절로 연봉이 높아질 것이다.


개발자의 길을 선택했다.

남들 다 하는 그런 개발, 그저 그런 개발 이런건 정말 하기 싫다.

좋은 개발자, 유능한 개발자가 되기 위해서는 위에서 적은 24개의 습관을 생각 또 생각하자.


출처는 검색해보니 원출처를 모르겠다.


Posted by Z700zZz
자전거 생활2012. 8. 28. 00:50

이번 블로그에 포스팅 할 물건은 BikeMate의 RoadWallet..


자전거를 타러 나가면 꼭 필요한 물건들이 있다.


바로 번개시 다른 동호인들과 연락 할 휴대폰..


카드 사용이 되지 않을때 사용할 현금..


출출함과 갈증을 달래줄 때 사용 할 신용카드나 체크카드..


이 모든 물건들을 프레임에 붙이는 가방이나 안장가방에 넣어 다니면 되지만 이게 라이딩 중 덜렁 거리거나..


미관을 해치게 되는 상황이 발생한다.


그래서 이것들을 져지 뒷주머니에 넣고 라이딩을 하는데 그냥 넣자니 땀으로 인한 습기 때문에 그냥 넣기가 겁이난다.


아이폰은 습기로 인한 리퍼가 되지 않는다..ㅜㅜ


생각해낸 방법이 지퍼백이나 크린백 같은 비닐봉지에 소지품을 넣고 라이딩을 했다.





바로 이렇게 말이다.


검은 봉지는 좀 오바고 평소엔 크린백에 둘둘 말아 넣고 라이딩을 했다.


봉지에 넣고 다닌 모습을 재연하려고 크린백을 찾아보니 그많던 크린백이 어디에 간건지 보이는건 검은봉지뿐..


짜세 나게 타자고 져지입고 쫄쫄이 바지 입고 타는데 정작 정차해 꺼내는건 비닐 봉지에 둘둘 말린 휴대폰과 현금..-_-;;


방수 팩을 사도 이 부족함을 채워주기엔 문제가 있을것 같았다.


눈에 들어오는건 물과 충격으로 부터 보호해주는 케이스..근데 이건 비싸다..


그러다 바이크 메이트에서 이러한 소지품을 넣고 다닐 지갑을 만들것이라는 소식을 입수!!


언제나오나 기다리는데 체험이벤트까지 진행!!


응모 하였지만 당연히 탈락!! 작년엔 이런거 잘 당첨됐던거 같은데..


체험 이벤트 응모자들한테만 주는 10%할인 혜택을 이용하여 누구보다 빠르게 남들보다 빠르게 제품을 주문했다.


제품을 받고 패키지를 뜯어 보았다.





검은색 박스에 핑크색띠..


내가 가진 폰은 아이폰이라 아이폰 버전을 주문했다.





박스 아래 부분..


나는 영어 몰라 까막눈..




박스 열었을 때 보이는 엽서(?)


전체적인 패키지는 3만원정도의 제품 치고는 참 좋다는 느낌이다.


보통 이런 종류의 제품들은 박스가 아닌 투명 플라스틱 케이스나 두꺼운 종이로 제품 이름만 붙은게 다인데..


이런 고급스러움에 놀랐다.


음..잠깐 이기분 이거 뭐지..?라파를 사지 않았지만 라파를 산것같아..ㅋㅋ


라파향이 나..아~이 향기로움..


그렇다면 그래 라파를 배경으로 사진을 찍어보자..ㅋ





자..잠깐 넌 아이폰용 제품을 구입했잖아??


근데 왠 블랙베리??


아이폰은 지금 이 제품을 찍고 있다..


디카도 없고, 또 사진을 다른 기기로 찍어 이동하는게 귀찮다.


그래서 놀고 있는 블랙베리 9700을 넣어 봤는데..어라 잘 맞는다.


아이폰용이라고는 되어 있지만 아이폰크기의 제품이면 모두 맞을것 같다.


그리고 아이폰은 SGP의 네오하이브리 범퍼를 끼우고도 잘 들어갔다.


가민을 쓰기전에 자전거 거치대로 바이크메이트사의 거치대를 사용 하였는데 그땐 터치감이 별로 맘에 들지 않았다.


하지만 이 제품은 터치감이 훨씬 좋아졌고 카카오톡으로 문자도 불편함 없이 보낼정도의 터치감이다.





닫은 상태의 반대편 모습.


검은 제품에 활력을 불어 넣어주는 핑크.


때가 타지 않았으면 한다.





펼쳤을 때의 모습.


왼쪽에는 돈을 수납하는 지퍼, 중간은 휴대폰 수납, 오른쪽은 카드를 세장까지 수납을 할 수 있다.





펼쳤을 때의 반대편 모습.





제품을 받고서 약간은 불안했던 부분이 이 부분이다.


이 제품은 방수까지는 아니더라도 습기로부터 휴대폰을 보호한다고 했는데..?


저렇게 벌어지면 내 휴대폰은 어떻게 하란 말인가??


그리고 휴대폰에 이어폰을 꽂을수 있게 절개가 되어 있다.


이부분은 자국만 나있고 뚫어져 있지는 않다.


자전거를 타며 이어폰을 듣는 미친짓은 하지 않으니 뚫지는 않았다.





위의 사진에서 벌어져 습기로부터 내 휴대폰을 보호할수 있을까란 물음의 해답은 이 사진이 답해줄것이다.


오무리면 옆에 벌어진 곳이 사진과 같이 오무려진다.


안심이다..



제품은 전체적으로 살펴 봤으니 이제부터는 사용기 시작!!


제품을 처음 받고 나가 카카오톡으로 채팅도 해봤고 반포 미니스탑에서는 치킨도 시키며 전화통화도 해봤다.


터치감과 통화 품질(?) 모두 만족할만 하다.


그리고 없어 보이지도 않는다. 편의점에 결재하려고 지갑을 꺼내면 주변 여자들이 반했..아 이건 아니고..


반포 미니스탑에서 치킨을 먹는데 하늘에서는 비가 한두방울 떨어졌다.


그러다 복귀 길에는 비가 내리는데 져지가 축축하게 젖을 정도의 비였다.


게다가 져지 뒷주머니에 지갑을 넣어 뒀는데 바퀴에서 튀는 물이 걱정이었다.


분명 이제품은 방수는 안된다고 했는데..


집에와서 부랴부랴 제품을 꺼내서 휴대폰을 확인해 보니 아이폰은 무사했다.


약하게 내리는 비는 어느정도 방어가 되는듯 하다.


이날 반포에서 집까지 40분정도 라이딩을 했고 져지는 축축하게 졌었고 신발도 젖을 정도의 비였다.


하지만 이보다 비가 더내린다거나 이와같은 비라도 시간이 지속 되면 핸도폰에 비가 스며 들것 같으니..


비가 오는날에는 사용하지 말자..


뭔가 쓰다보니 이제품의 장점만을 적는것 같다.


지금까지 세번정도 가지고 나가 사용 했는데..지금부터는 단점과 걱정이 되는점을 말해볼까 한다.


단점보다는 걱정 되는 점이다.


제품을 받고 이제껏 세번정도 써봤다. 나는 땀이 나지 않는 체질.


과연 땀이 흥건하게 나고 땀만으로 축축하게 젖을 정도로 여러번 라이딩을 하면 어떻게 제품이 변할지가 궁금하다.


재질은 인조가죽으로 보인다.


땀이 여러번 묻게 되고 그것을 제대로 세탁하지 못한다면 냄새가 날것은 뻔하다고 본다.


그리고 방수가 됐으면 어땠을까 하는 아쉬움도 있다.


나는 이제품이 충분히 제 기능을 하고 있다 생각한다.


하지만 이 이상의 기능을 원한다면 이제품을 사면 안될것 같다.



그동안 기다리던 제품의 사용기를 적어서 그런지 단점은 그리 많이 적지를 못한것 같다.


이쁘면 좋은 점만 보인다고 그래서 그런건가..-_-;;


아마도 두어달 더 써보고 다시 한번 사용기를 적어보려고 한다.


두어달 뒤엔 과연 장점을더 적을지 단점을 더 적을지..


그리고 포토샵을 배우고 사진찍을 장비가 필요하다.


사용기가 뭐이리 뽀대가 없는건지..-_-;;

Posted by Z700zZz
Java2012. 8. 24. 18:19

자바에서 JSON을 다루려면 JSON을 다룰수 있는 라이브러리가 필요하다.


그중에 하나인 json-lib-2.4-jdk15.jar


이 라이브러리를 사용 하려면 다음의 라이브러리들이 필요하다.


commons-beanutils-1.8.3.jar

commons-collections-3.2.1.jar

commons-lang-2.6.jar

commons-logging-1.1.1.jar

ezmorph-1.0.6.jar


여기서 한가지 주의해야 할점.


json-lib-2.4-jdk15.jar만 넣고 서버를 구동하게 되면 클래스 파일을 찾을수 없다는 에러가 발생하게 된다.


그 이후 여러가지 검색을 하다 보면 위와 같은 라이브 러리 파일드링 필요 하다는것을 알게 되고..


www.apache.org사이트에서 하나씩 찾아 넣게 되는데..


무턱대고 최신 파일을 찾아서 넣다가는 계속해서 클래스 파일을 찾을 수 없다는 에러만을 보게 될 것이다.


그중에서 내가 여러번 삽질 했던것이 commons-lang-2.6.jar이 파일이다.


최신 버전은 lang3버전이 있을텐데 이것을 다운받아 라이브러리에 추가 하게 되면 서버를 구동 시킬때 계속해서 클래스를 찾지


못한다는 에러만을 보여주게 될것이다.

'Java' 카테고리의 다른 글

Https SSLHandshakeException..!  (0) 2012.10.16
EhCache의 Spring Framework(iBatis)적용...!  (0) 2012.09.18
Log4j의 Appender..!  (0) 2012.06.26
Log4j 설정..!  (0) 2012.06.25
Java Compile Version Error..!  (0) 2012.03.15
Posted by Z700zZz
자전거 생활2012. 8. 13. 21:48

자전거를 구매 후 지금껏 자전거에서 뭔가를 바꾼건..


생각해보니 안장은 4월인가 5월에 바꾼게 다인것 같다.


올시즌엔 속도계와 고글만 지르고 자전거에는 투자를 하지 말아야겠다는 다짐(?)


역시나 DogSound..


얼마전 Fulcrum Racing사의 알루 휠중 최상급에 속하는 Fulcrum Racing 1을 질렀다.





클린처와 튜브리스 타이어 모두를 사용 할 수 있는 휠셋..


튜브리스 휠셋이니 튜브리스 타이어도 써보자 하고 Huchson사의 Atom타이어까지 장착..!


1은 새로 나온 0보다 100g정도가 무겁지만 내구성은 훨신더 좋은 휠셋이라는 설명..


1은 1500g대의 휠셋이고 0는 1400g대의 휠셋이다.


휠셋을 교체하고 기존의 순정 상태에서 600g정도가 줄었다.


줄어든 만큼 업힐이 수월해 질것이라는 생각은 경기도 오산이었나..


하지만 똑같은 휠셋을 교체한 동호회 형님은 평소에 업힐에서 추월당했는데 휠셋 교체후 오히려 추월을 했다고 한다.


휠셋을 교체하고 그동안 400~500키로 정도를 달린것 같다.


느낌은..휠셋이 바뀌어서 인지 휠셋과 타이어 모두 바뀌어서인지..


똑같은 힘을 주었을때 나가는 거리가 더 멀은 그런 느낌..


그리고 땅에 닿는 느낌이 훨씬더 부드러운 그런 느낌..


전에는 길을가다 작은 돌을 밟으면 좌우로 돌을 튕겨 보냈지만 지금은 그대로 밟고 가는 느낌..


속도가 좀 붙었을 때 전보다 힘을 덜들여도 속도가 유지되는 그런 느낌..


뭐 좋다는걸 억지로 더 늘려 말하려다 보니 왠 DogSound아닌 DogSound가 계속 써진다.


그냥 좋다..



자전거를 구매한지 만으로 1년이 지났다.


1년전에 내가 자전거 동호회에 쓴글을 찾아보니 60~70만원대의 로드 자전거가 사고싶어요라는 기억에도 없는 글을..-_-;;


근데 왜 산 자전거는 그 가격에는 살 수도 없는 105급 자전거가..


수많은 번개에 나가며 뽐뿌를 받아 산 클릿슈즈는 클릿슈즈와 패달 모두 합쳐 15만원대로 추천 받습니다란 글도..-_-;;


근데 발에는 시디 최상급 Ergo2가..


이제 남은건 프레임과 구동계..그리고 카본 하이림 정도가 남은듯 하다.


정말로 올해엔 옷이나 몇벌더 구매하는걸로 잔차장비질은 끝을 내고..내년을 기약해야겠다.


벌써 라파 세일 때 구매한 상품을 라파 직원들이 준비하고 있겠지..아마도 다음주 쯤 도착..?


뭐 이렇게 글을 써놓고 휠셋 할부 다 갚고나서 프레임에 눈이 뒤집히면 살지도 모르겠다..


하지만 참아야 한다. 참아야해!!


아 마지막으로..순정 휠셋을 쓰는 분들은 충분히 타보다가 나중에 돈 확실히 모아서 최상급휠셋이나 충분히 내구성이나 성능이


검증된 휠셋을 지르시길 바랍니다.


부족한 휠셋 사용기 읽어 주시느라 고생하셨습니다.

Posted by Z700zZz
Maven2012. 8. 10. 18:33

Maven으로 Dynamic Web Project생성 포스트보다 이게 더 먼저여야하는데 뭔가 뒤죽박죽이다.


Eclipse에 Maven설치 방법..!


Eclipse메뉴 Help - Eclipse MarketPlace 선택.


다음과 같은 화면이 나온다.



1. 검색창이다. 검색단어로 Maven이라는 단어를 넣으면 다음과 같은 목록이 나온다.


2. 검색 리스트중 Maven Integration for Eclipse항목을 선택한다.

    원래는 위나 아래와 같인 Install이라는 버튼이 나와야 하지만 이미 깔려 있는 관계로 Uninstall버튼이..


그다음 단계는 생략하겠다.


다시 지우고 깔고 하기 귀찮아서가 아니라 초딩한테 맡겨놔도 할수 있는 수준이다 보니 별다른 설명을 할 필요가 없다.


Maven하나로 프로젝트의 라이브러리를 수동으로 추가하거나 제거하지 않고 자동으로 된다는 것 너무 편한 것 같다.


아직은 Maven의 시작단계..좀더 공부하고 유익한 정보를 포스팅 하겠다.

'Maven' 카테고리의 다른 글

Maven으로 Web Project 생성시 Dependency문제..  (0) 2012.08.10
Posted by Z700zZz
Maven2012. 8. 10. 18:05

Eclipse에서 Dynamic Web Project를 생성 후 Maven프로젝트로 Convert하게 되면 다음과 같이 프로젝트에 빨간물음표가 뜨게 된다.




프로젝트 우클릭 - Properties - Java Build Path 화면이다.


이는 Maven의 설정 파일인 pom.xml에 Log4j버전 문제때문에 생기는 문제이다.


그럼 어떻게 해결해야 할까..?


간단하다.


<dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.15</version>

</dependency>


위와같이 설정이 되어 있다면 버전은 1.2.14로 바꿔주면 Dependency 문제는 해결된다.


간단하지 않은가??

'Maven' 카테고리의 다른 글

Maven의 설치..  (0) 2012.08.10
Posted by Z700zZz