블로그 이미지
올해목표 // 10월 어학연수 떠나자~ 자수씨

카테고리

전체글 (1457)
Brand New! (28)
주절주절 (213)
MOT (11)
해외쇼핑 (49)
쇼핑노트 (150)
취미생활 (94)
iPhone (4)
Eclipse (121)
Google (83)
Spring (31)
JAVA (176)
JavaScript (59)
WEB (49)
Database (20)
OS (26)
Tools (8)
Tips (26)
IT정보 (1)
Book (21)
Programming (37)
외부행사 (43)
주변인들 (17)
여행노트 (60)
학교생활 (30)
회사생활 (52)
사회생활 (5)
외국어공부 (12)
잡동사니 (30)
Total
Today
Yesterday
 
01-09 02:39
 

달력

« » 2025.1
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
 

최근에 올라온 글

최근에 달린 댓글



블로그를 시작한지 3년 2개월 정도 지났습니다. 처음엔 만들어만 놓고 방치하다가 08년 2월부터 본격적으로 블로깅을 하기 시작하였습니다. 처음 시작한 계기는 같은 회사에 다니는 선임님이 우리 회사에서 사용하던 기술을 블로그에 잘 정리하시고 계셨는데 방명록에 해당 기술에 대한 번역 감수 의뢰가 들어온 것을 보고 부러움에...

이런 이유로 시작한 블로그가 시간이 흐르면서 여러가지 개발 관련 기술들도 올리고, 쇼핑, 볼링과 같은 취미생활도 정리하다보니 벌써 1100 여개의 글이 모였습니다. 1일 1포스팅에 목메달던 시절도 있었고, 블로그를 통해 경품에도 당첨이 된 적도 있었습니다.

블로그를 운영했던 기간 동안 다양한 이유가 있었겠지만, 지금의 제가 블로그를 하는 이유는 아래와 같습니다.

1. 나만의 정리 노트
회사에서 하는 개발이나 평소에 관심이 있던 개발을 하다가 막혔을 때, 답답함이 아닌 '포스팅 거리 하나 늘겠는데?' 라는 생각을 가지고 정리하다 보니 상당히 많은 삽질 노트가 쌓였습니다. 25살 이후부터 찾아온 건망증으로 인해 같은 문제를 맞닥들였을 때 검색을 하게되는데, 자신의 블로그에서 찾아볼 수 있다면 신뢰도가 높은 검색된 결과를 얻을 수 있습니다.

2. 자신의 스펙을 만드는 공간
사실 남의 글을 스크랩을 하여 글을 쌓아가는 블로그에 대해서는 높은 평가를 하지 않습니다. 하지만 단 한줄이라도 자신의 생각을 포함하여 글을 작성한다면 스크랩과는 의미가 다릅니다. 이렇게 자신의 생각을 하나 둘 씩 쌓아나간다면 관련 기술에 대해 포탈에도 많이 노출이 될 것이며, 입지도 쌓을 수 있을 것 입니다. 만약, 기술면접관이 자신이 자주 찾는 블로그의 운영자가 자신의 회사에 입사를 희망한다면?... 제가 기술면접관이라면 인성면접만으로 뽑았을 것입니다. 트위터나 페이스북 처럼 자신의 일상을 알리는 수단이 아닌 블로그를 통해 자기가 걸어온 길을 잘 정리한다면 생각지도 못한 행운이 찾아올 수도 있을 것 입니다.

3. 의사소통의 공간
사실 제가 개발을 해오면서 개발 소울메이트라고 할 수 있는 분을 블로그를 통해 처음 만났습니다. 그 이후 이클립스 플러그인 카페에서 친해지게 되었지만 시작은 블로그였습니다. 내 안방에서 방명록이나 댓글을 통해 글을 남겨주시는 분들과 소통을 할 수 있는 것이 찾아주시는 분들에게도 감사하고 나름 뿌듯함을 느낍니다.


그 외에... 광고 수익도 있고 여태까지 해온 것이 아까워서 등이 있겠지만, 3년 간 쌓아온 한 포스팅 한 포스팅이 참 소중합니다.


후배들이나 지인들에게 블로그를 해보라고 많이 권유를 하지만 폭풍 포스팅과 같은 열정을 보여주는 사람은 극히 드문 것 같습니다. 주제도 없을 뿐더러 시간 확보에도 어려움이 많은 것도 이유 중에 하나일 것입니다.

하루에 최소 2개의 포스팅을 할 수 있는 성실함을 주시옵소서...

Posted by 자수씨
, |

2011/01/29 - [JAVA/Hibernate] - 하이버네이트... 해당 쿼리에 대한 전체 카운트 가지고 오기

위의 글과 같이 전체 카운트를 가지고 오는 부분을 추가했더니... 대략 18번의 쿼리가 수행된 후에 DB 수행작업이 먹통이 되어버렸습니다. 처음에는 원인을 찾지 못하다가, 세션을 가져온 후 반환을 하지 않는 것을 확인하고 코드를 수정하지 않는 선에서 해결책을 찾았습니다.




하이버네이트 프로퍼티에 hibernate.connection.release_mode 의 값을 after_transaction 로 설정하면 굳이 세션을 가져온 후 관리를 하지 않아도 되더군요... 꼭 좋은 방법은 아니지만 위와 같은 방법도 있습니다.

Posted by 자수씨
, |


전체 카운트를 어떻게 가지고 올까 고민을 하다가... 찾아보니 아래와 같이 처리를 하면 되더군요...



DetachedCriteria 를 재사용해서 쓰려다 보니 위와 같은 형식으로 작성했습니다. 헐... 근데 저렇게 사용하니 원하는 결과가 안나오더군요... 그래서 결국 DetachedCriteria 를 새로 만들어 같은 값을 설정한 후 사용하였습니다.

시간이 없어 간만에 작성하는... 포스팅...

Posted by 자수씨
, |

지난 금요일에 Ext JS 4 에 대해 포스팅 이 하나 더 올라왔습니다. 새로워진 Data Package 에 대해 알아보도록 하겠습니다.


Data Package 는 Ext JS 4 에서 완벽하게 다시 쓰여졌습니다. 하지만 이전 버전과 같은 접근 방식으로 사용할 수 있습니다.


무엇이 달라졌을까?
Ext JS 4 의 Data Package 는 43 종류의 클래스로 구성되어 있습니다. Model, Proxy, Store 가 가장 중요한 클래스 3개와 나머지로 구성되어 있습니다.





모델과 스토어
데이터 패키지의 중심은 Ext.data.Model 입니다. 모델은 어플리케이션에서 몇가지 데이터 타입으로 표현됩니다. 가장 심플한 모델은 필드와 데이터로 설정됩니다. Ext JS 3  에서는 Ext.data.Model 의 선구자 격인 Ext.data.Record 를 유사하게 사용하였습니다. 새로운 모델을 만드는 방법은 아래와 같습니다.

모델은 일반적으로 스토어와 함께 기본적인 모델 인스턴스의 집합으로 사용됩니다. 간단하게 스토어를 설정하고 데이터를 로딩하는 방법은 아래와 같습니다.

User 모델 인스턴스는 'users.json' 의 url 을 통해 로드됩니다. 스토어는 AjaxProxy 를 사용하며, url 을 통해 읽어들인 데이터를 Ext.data.Reader 클래스를 통해 디코드 하도록 설정되어 있습니다. 이 경우 서버는 json 을 반환하므로 응답에 대해 JsonReader 가 설정되어야 합니다.

스토어는 Ext JS 4 를 사용한다면, 리모트에서 뿐만 아니라, 로컬에서 정렬, 필터링, 그룹핑을 수행할 수 있습니다. 더 이상 별도의 GroupingStore 는 필요하지 않습니다. 다중 정렬, 필터링, 그룹핑을 표준 스토어에서 처리할 수 있습니다.

스토어가 생성되면, 데이터는 id 보다 name 을 우선순위로 정렬이 됩니다. name 이 'Ed' 인것만 포함되도록 필터링 되며, age 로 그룹핑될 것 입니다. Store API 를 통해 언제든지 쉽게 정렬, 필터링과 그룹핑을 변경할 수 있습니다.



프록시
아래를 통해 스토어를 사용하여 프록시에서 데이터를 어떻게 읽어들이는지 볼 수 있습니다. Ext JS 4 에서의 한가지 구조적 변화는 스토어에서 Reader 와 Writer 에 대한 직접 연결이 필요없다는 것 입니다. 이것은 엄청난 혜택을 제공합니다. 프록시를 모델에서 직접 정의할 수 있습니다.

첫번째는 같은 방식으로 데이터를 로드하는 모델을 사용하는 스토어의 중복을 피할 수 있습니다. 두번째는 모델 데이터의 저장과 불러오기를 스토어 없이 할 수 있습니다.

HTML5 의 새로운 기능을 활용하여 몇 가지 새로운 프록시를 도입하였습니다(LocalStoargeProxy, SessionStorageProxy). 이전 브라우저는 새로운 HTML5 API 를 지원하지는 않지만, 많은 애플리케이션들이 그들의 존재로부터 엄청난 혜택을 알고 있기에 유용합니다. 그리고 필요로 하는 프록시가 없는 경우 쉽게 만들 수 있습니다.



연관 (Associations)
프록시는 모델에 새로운 기능을 추가하는 것에 지나지 않습니다. 새로운 Association API 와 함께 모델을 연결할 수 있습니다. 대부분의 애플리케이션은 다양한 모델과 거의 대부분이 모델과 연관된 것으로 다루어 집니다. 블로그 작성 애플리케이션은 사용자(User), 포스트(Post)와 댓글(Comment)을 가지고 있을 것 입니다. 각 사용자는 포스트를 작성하고, 각 포스트는 댓글을 전달받을 것 입니다. 이들의 관계는 아래와 같이 표현할 수 잇습니다.

이것을 통해 애플리케이션에서 다른 모델들 간의 풍부한 관계를 표현하기 쉬워집니다. 각 모델들은 임의의 순서를 정의할 수 있는 모델을 통해 임의의 연관 번호를 가질 수 있습니다. 일단 모델 인스턴스를 갖는다면, 쉽게 연관 데이터를 조회할 수 있습니다. 예를 들어, 특정 사용자의 각 포스트에 만들어진 댓글을 로깅하기를 원한다면 아래처럼 할 수 있습니다.

각 hasMany 관계는 모델에 추가된 새로운 함수에 의한 결과 위에 만들어집니다. 각 사용자 모델은 hasMany 포스트로 선언되었습니다. user.posts() 호출에 의한 결과 스토어는 포스트 모델에 의해 구성됩니다. 결과적으로 설정된 hasMany 댓글 연관으로 인해 포스트 모델은 comments() 함수에서 댓글들을 가지고 올 수 있습니다.

User.load 호출에서 'success' 함수로 왜 전달을 해야 하는지 궁금해 할 수도 있습니다. 하지만 사용자의 포스트와 댓글을 접근할 때 그럴 필요가 없어졌습니다. 모든 데이터는 보통 어딘가에 있는 서버로 부터 로드되어야 하기 때문에 비동기적으로 로드될 것으로 간주합니다. 이것은 보통 위에 정의된 'success' 함수와 마찬가지로 데이터가 로드되었을 때 호출되는 콜백에 전달하는 것을 의미합니다.



중첩 데이터 로드(Loading Nested Data)
위에서 그랬듯이 연관을 설정함으로써, 프레임워크가 단일 요청에 의해 자동으로 중첩 데이터를 파싱 할 수 있습니다. 단일 서버에 응답으로 이 모든 데이터를 반환할 수 있습니다.

데이터는 프레임워크에 의해 모두 자동으로 파싱됩니다. 대부분 환경에서 데이터를 로드하는 모델에 대한 프록시들을 쉽게 구성할 수 있고, Reader 들은 대부분의 형식을 처리할 수 있습니다. Ext JS 3 과 마찬가지로, 모델과 스토어는 그리드, 트리와 폼과 같은 다양한 구성요소들의 프레임워크에 걸쳐 사용됩니다.


아래 그림은 Ext JS 4 가 곧 출시된다는 것을 표현한 것 입니다. 먼가 확 와닫는 디자인이네요.
 


Posted by 자수씨
, |


Ext JS 4 가 슬슬 공개가 되려나 봅니다. Sencha 블로그 에 관련 포스팅이 올라왔습니다.

다이나믹 로딩과 새로운 클래스 시스템에 대한 설명입니다.


ㅁ Ext JS 4 Class System



Ext JS 4 에서는 새로운 네가지 특징(클래스 정의, 믹스인, 자동 getter/setter 설정, 다이나믹 디펜던시 로딩)을 갖습니다.


1. 클래스 정의

Ext JS 3 버전에서는 아래와 같은 방식으로 클래스를 정의하였습니다.


Ext JS 4 에서는 아래와 같이 "Ext.define" 이라는 함수를 이용하여 새로운 클래스를 정의합니다.


Ext JS 4 의 클래스 매니저를 통해 문자열로 설정된 부모 클래스를 찾아 새로운 클래스를 정의하는 구조로 변경되었습니다.

클래스 정의가 깔끔해지긴 했지만, 아직까지 큰 장점에 대해서는 와 닿지 않네요.



2. 믹스인

믹스인은 재사용이 가능한 행동이나 구성을 정의한 것으로 쉽게 클래스에 정의가 가능합니다. 하나의 클래스에는 여러 개의 믹스인을 적용할 수 있습니다.


위의 "Sample.Musician" 클래스는 "guitar" 에 대해 "Sample.ability.CanPlayGuitar" 의 기능을 갖게 되는 것 입니다. DI 랑 유사한 구조라고 볼 수도 있을 것 같습니다.




3. 자동 getter/setter 설정

Ext JS 4 에서는 아래와 같이 정의를 하게 되면 title 과 관련된 getter/setter 가 자동으로 정의됩니다.


Ext JS 3.3 에서 위와 같은 효과를 보려면 아래와 같이 클래스를 정의해야 합니다.


자동으로 생성된 getter/setter 에 대해 오버라이딩도 가능합니다.


getter/setter 정의가 코드에서 빠지면서 소스 코드의 크기도 많이 줄어들 것으로 예상됩니다.



4. 다이나믹 로딩

이전의 Ext JS 에서는 사용하는 클래스가 미리 다운로드 되어 있지 않는 경우 에러를 발생하게 됩니다. Ext JS 4 의 Ext.require() 함수를 이용하여, Ext.Window 클래스가 다운로드 되어 로드 되는 시점에 호출이 되도록 처리할 수 있습니다.


Ext.Window 는 아래와 같이 extend, requires, mixins 설정으로 정의되어 있습니다. 관련 설정들이 안정적으로 로드될 때 까지 다이나믹 로더가 반복적으로 작업을 처리하게 됩니다.


이전의 Ext JS 의 경우 ext-all-debug.js 파일 안에 모든 클래스들이 정의되어 있었습니다. 실제 운영환경에서 사용하기에는 사이즈가 너무 크기에 JS Builder 를 이용하여 ext-all.js 파일로 배포를 하지만 그 사이즈도 만만치가 않습니다. 다이나믹 로더를 통해 필요한 클래스들만 로드할 수 있는 구조가 될 것으로 생각됩니다.

클래스 구조
src/Window.js
src/Panel.js
src/util/MixedCollection.js
src/util/Draggable.js

드디어 Ext JS 도 자바의 패키지의 구조 처럼 패키지를 폴더로 구성하는 것 같습니다. 다이나믹 로더에서 패키지 명을 토대로 클래스 위치를 판단하여 로딩하는 구조라면... 조금 더 직관적인 환경으로 발전해 나갈 것 같습니다.



Ext JS 4 기대가 되는군요...

Posted by 자수씨
, |


W3Schools 라는 사이트를 오늘 검색하다가 발견하였습니다. 여태까지 보았던 웹 레퍼런스 사이트 중에 제일 잘 정리가 되어있는 사이트인 것 같습니다.

왜 몰랐을까... 왜 몰랐을까...

Posted by 자수씨
, |


요즘에 한참 재미가 들린 하이버네이트와 Spring MVC, 그리고 Ext JS 를 이용하여 손쉽게 DB 테이블 데이터를 그려주는 방법을 연구하고 있었습니다.

즉, 하이버네이트로 데이터를 조회하고, Spring MVC 로 Ext JS 에서 사용할 데이터를 만들어서 Ext JS 의 컴포넌트가 요청하는 구조입니다.


만약 아래와 같은 Entity 가 있다면




VickiHibernateDaoBaseImpl 을 구현한 Dao 클래스를 생성합니다.




AbstractBaseMonitoringController 를 상속받은 Controller 클래스를 생성하였습니다.




그런 후, ConfigLoadGridPanel 의 데이터에 기본 URL 을 설정해주기만 하면!!!



아래와 같이 데이터를 확인할 수 있습니다.




역시 짜릿한 어노테이션의 손맛!!!



Posted by 자수씨
, |


예전부터 사랑스러워 하던 에네루프와 관련된 이벤트를 후배에게 전해듣고 바로 "에네루프 모바일 부스터 블로그" 를 찾아가보니 여러가지 이벤트를 하고 있었습니다.

요즘 지를게 없어서 손이 근질근질 했는데... 이벤트 당첨여부와 관계없이 질러볼 생각입니다.



원문: [이벤트]XX에네루프 스크랩 이벤트 2주차(1.20~1.26) 오픈~!!






안녕하세요~! 에네루프 모바일부스터 블로그입니다!

 

 

 

기존 에네루프보다도 25%나 용량을 높인 고용량 배터리 XX에네루프!

배터리 사용이 많은 전문가들에게는 필수라고 할 수 있는 아이템입니다.

완충 후 3년이 지나도 75%를 유지하고 있을 정도로 방전율도 낮은대다가

고용량이다보니 이미 많은 분들께 사랑을 받고 있는 제품이죠.

 

그런 XX 에네루프의 두번째 이벤트가 돌아왔습니다!

1차 때 떨어지셨다고 속상하셨던 분들 많으셨죠?

하지만 아직 기회가 남아 있으니 놓치지 마세요. ^^

 

그럼 이벤트 내용 나갑니다~!

1차때와는 내용이 바뀌었으니 확인 꼭 부탁드릴께요^^

이번엔 당첨의 기운을 팍팍!! 받으시길 바랄께요 ^^

 

 

고용량 충전지!! XX에네루프의 두 번째 이벤트!!

 

이벤트 내용: XX에네루프 스크랩 이벤트!!

참여 대상: ‘에네루프블로그 방문자 모두~!!

 

참여 방법: XX 에네루프 이벤트 페이지를 스크랩 해 주세요!

 

, 이번 이벤트에서 스크랩 개수는 중요하지 않아요!

단순 스크랩보다 직접 포스팅 해 주시는 것이 당첨에 유리하답니다.

스크랩, 포스팅 후 URL을 덧글로 남겨 주시면 신청 완료!!

 

이벤트 기간: 1주차 120 ~ 126

는 총 4주간 진행될 XX에네루프 이벤트의 그 두번째 이벤트!

 ( 3주차– 2/7~2/13, 4주차- 2/14~2/20)

 

당첨자 발표: 1 27일 오후 6

 

당첨자 선정방법: 댓글로 참여하신 분들 중 5명 선정

 

경품: XX에네루프 충전배터리 AA 4개 세트 + 4알 케이스

 



Posted by 자수씨
, |

에네루프 모바일 부스터 블로그에서 이벤트를 하네요... Wii 를 비롯한 여러 장비에 사용하던 완소 에네루프...

역시 한정판도 구매욕구를 불러일으키네요...


원문: http://blog.naver.com/ebattery9211/20120960926


에네루프에서 출시 5주년을 기념하여 발매 된 스페셜 에디션 에네루프 톤즈 글리터!

드디어 2차 이벤트를 오픈합니다!! ^^

화려한 디자인 덕분인지 1차에서도 경쟁률이 치열했는데요.

아직 기회는 끝나지 않았습니다!!

 

화려한 모습과 한정판이라는 매리트까지 가진 에네루프 톤즈 글리터.

간단한 스크랩 이벤트로 한정판을 받아 가세요 ^^

 


 

1차 때와는 달리 일반 스크랩 이벤트로 변경되었습니다!!

이번에는 추가 미션이 없으니 참여하시기가 더욱 편하실 거에요^^

스크랩 하시고 URL을 덧글로 남겨 주시면 됩니다^^

그럼 많은 참여 부탁드려요~!!!

Posted by 자수씨
, |

오라클에서 비밀번호를 몇 번 틀리다보면 계정이 LOCK 걸리게 됩니다.

관리자 계정으로 접속하여 아래의 쿼리를 실행하면 계정 상태를 확인할 수 있습니다.

SELECT
USERNAME
, ACCOUNT_STATUS
, LOCK_DATE
FROM
DBA_USERS


아래와 같은 쿼리 문을 통해 계정의 LOCK 을 풀어줍니다.

ALTER USER [계정] ACCOUNT UNLOCK


Posted by 자수씨
, |

글 보관함

최근에 받은 트랙백