2012. 1. 26. 15:31 IT
posted by smplnote
2012. 1. 26. 10:24 1300K
그림 엄마
국내도서>가정과 생활
저자 : 한젬마
출판 : 넥서스주니어 2011.05.15
상세보기


창의미술의 일곱가지 원칙

대화로 관찰력을 키우자
칭찬으로 내아이를 피카소로 만들자
다양함 NO, 반복하자
부족하게 아껴서 주자
단순한 재료로 상상력을 키우자
마음껏 모방하게 하자
창의 습관을 들이자 - 관찰,질문,메모,현대미술즐기기,시간표만들기, 성찰하고휴식하기, 정리하기

사진기내주기
도자기 빚기
현미경 선물하기
꽃구경하기
집창문 꾸미기
우리집 광고포스터 만들기
마음 그려보기
상상 꽃과 상상 물고기 그리기
간식 그리기
베이비 라빈스 31 그리기 (콘만 미리 그려주기)
케이크 그려서 초에 불끄기
피자 그려서 손님 초대하며 놀기

[숲체험 프로그램 운영]
숲 연구소 www.ecoedu.net
애벌레 생태학교 www.younhees.com
파주 자연학교 www.nolgo.co.kr
홀로세 생태학교 www.hoioce.net
한국 생명과학 연구소  nas.123rere.com


엄마들의 그림 읽어주기 노하우
1. 명화집을 볼때나 전시장에 갔을때 아이에게 좋아하는 그림 한점을 고르게 한다.
2. 그이 유를 물어본다
3. 아이 자신만의 느낌과 생각을 말할 때까지 기다려주자 
4. 그림속에 보이는 것들을 구석구석 찾아보게 한다
5. 이와 관련된 세가지 질문을 던져본다
6. 그 질문을 가지고 답을 하지말고 대화를 풍부하게 나눈다
7. 그림을 본 전체적인 느낌을 말하게 한다
8. 작품의 제목을 마음대로 붙여보게 한다
9. 전시장의 큐레이터나 화집등을 참고해서 정확한 정보를 살펴본다
10. 아이와 나눈 이야기중 작가의 의도와 비평 등과 비교해본다.
* 전시장에서는 많은 작품을 빨리 다 보는 것보다 한 작품을 깊게 감상하는 것이 좋다. 

미술관 정보 사이트
네오룩 www.nneolook.net
달진닷컴 www.daljin.com
갤러리가이드 cafe.naver.com/galleryguide
지오엑스포 www.goexpo.co.kr
아트팩츠 www.argfacts.net 


p.s. 평범하긴 누가 평범해. 
posted by smplnote
2012. 1. 26. 10:20 IT

미카도 메소드 : 리팩토링, 리스트럭처링을 위한 사고 도구 "a tool for large scale refactoring"

교육용 완구, 보드게임으로 분류되는 미카도 게임과 유사한 개념임에 착안하여 명명지었다고 합니다.



물론 이게임을 소개하자는건 아니고..

대규모 코드 베이스를 변경, 개선하는 것은 쉬운 일이 아닙니다.
하지만 그래도 손대야 한다면?
안전하게, 확실하게 변경하기 위해 추천하는 방식입니다. (물론 그전에 [Working effectively with legacy code] 책을 먼저 추천합니다. )

간단한 모듈의 수정은 과감한 리팩토링을 해볼만 하지만, 그 규모가 인간의 단기기억 저장소를 넘어서는 단계에 이르면 (빅데이터냐..) 어느순간 되돌리기도, 계속 나아가기도 어려워집니다. 

미카도 게임은 기다란 나무 막대들(mikado stick)을 윷처럼 던져 막대들이 쌓이면, 주위 막대를 건들지 않도록 하면서 하나씩 들어올려 가장 높은 점수를 얻는 게임입니다.
( 자세한 게임룰 소개는  쇼핑몰에서 검색하여 제품소개를 보면 알 수 있고, 제네스 님의 설명도 이해에 도움이 됩니다.   http://blog.naver.com/PostView.nhn?blogId=genes75&logNo=100000447201  )

이것이 바로 리팩토링, 리스트럭처링을 할때 제안하는 작업 방식에 대한 은유가 되는거죠..

높은 점수의 막대 (목표, goal) 를 들어올리기 위해서는
더이상 건들 막대가 없는(그 위에 쌓인게 없는) 막대(전제조건, prerequisites)를 먼저 들어올려야 한다는 생각이고,
이를 그래프화 한 것이 바로 미카도 그래프가 됩니다. 

제안자들이 제시하는 규칙 혹은 가이드라인은 다음과 같습니다.
1. 가장먼저 목표(goal)를 적는다.
2. 시도해볼 것을 찾아내고 
3. 깨진 코드에서 돌아오고 (roll back)
4. 순환해서 전제조건들( prerequisites )을 고쳐나간다. 

아래는 미카도 그래프의 예시입니다.
그래프가 다 그려지면 제일 위에 있는 나뭇잎부터 해결하면서 체크하면 됩니다.
마지막에는 최종 목표인 "Stranger Erons 사에 새로운 제품" 을 달성하게 된다.


출처 : [Beheading the software beast] Draft버전 , Daniel Brolund외,  pdf본 p46 그림 2.16


느낀점.

심플하지만 활용도가 높은 방법이 될듯. (물론 어느정도의 규모의 복잡도가 있어야 가치가 있다.)
목표를 중심에 두고 생각 하는 것이 중요하며, 복잡한 연관관계를 머릿속에 (물론! 머릿속에서 위와 같은 그림을 그려버리는 능력자들은 존재한다. ) 그려내기 보다 시각적으로 표현하는 것이 좀더 효과적이란것.
그리고 (정말.. 별걸 다 만들었다 싶은.. )

참고로 Method&Tools 2012 Jan. 메일을 통해서 알게되었습니다. 

관련자료
- 홈페이지 :   http://mikadomethod.org/
- PDF :  Beheading the software beast   http://www.agical.com/mikmeth/mikadomethod.pdf 
- JavaZone 동영상 : http://vimeo.com/28765431  Sep 8 2011. Oslo, Norway
posted by smplnote
2012. 1. 25. 10:52 1300K

클로즈드 노트 - DVD
DVD>아시아영화
배급 : 유키사다 이사오(Isao Yukisada) / 사와지리 에리카,타케우치 유코역
출시 : 2011.10.12
상세보기


만남이란건.. 운명의 실로 이어져 있으니까, 있다고 생각해! 한정된 우연속에서 만나는 것이니까 그건 기적이라고 말해도 돼

만남이란 신기하네요. 의식하지 않으면 아무리 지나쳐가도 만나지 않은것처럼. 의식하고서야 처음으로 만난 것이 되니까요.

/*

소학교 여교사의 사랑과 아이들에 대한 애정을
우연히 그녀가 살던 집에 이사온 여대생을 통해 되돌아보게 하는 이야기.


[세상의 중심에서 사랑을 외치다]를 만든 감독의 작품. => 그래선지 느낌이나 사람들의 분위기가 다 연장선상에 있다.

이야기의 전개가 어느정도 예측 가능한 흐름이었고, 다소 상투적인 느낌이 들긴 했지만

아름다운 색감과 배경, 그리고 해맑게 표현된 초등학교 선생심(유코)의 모습은 맘 편히 즐기기에 좋은 영화였다.

마지막 편지가 되는 글이었는데 감사 보다는 좀더 사랑하는 마음을 표현했으면 좋았을텐데.. 아쉬움이 남는다.

P.S. 남자는 왜이리 비호감 타입이었는지...

*/

posted by smplnote
2012. 1. 18. 15:17 IT

최근 chef에 대해 이야기를 들었다. 
그게 뭐지? puppet은 들어봤지만.

puppet, chef 는 인프라 구성 자동화 도구라고 하면 되겠다.   (cfengine, slack 이란것도 있다.  )

system 설정 자동화 listup : Bcfg2, cfengine, Chef, Puppet, SmartFrog
app 서비스 설정 자동화 : Capistrano, Fabric, Func, ControlTier, Glue 


puppet : http://puppetlabs.com/
Enterprise버전은 상용이나 10개 노드 이하는 Free 
고유 DSL 제공 
사례 :  징가, 트위터 
단점 : 새로 익혀야 하는 DSL

chef : APL
http://wiki.opscode.com/display/chef/Home
ruby 코드 
참고 :  https://www.ibm.com/developerworks/mydeveloperworks/blogs/9e635b49-09e9-4c23-8999-a4d461aeace2/entry/215
사례 :  RightScal

glue :  deployment and monitoring automation platform APL2.0
https://github.com/linkedin/glu 
소개글 :  http://linkedin.github.com/glu/slides/glu-tech-talk-201107.pdf 
-> 여기서 glue와 puppet을 비교하면서 puppet은 machine infra에 대한 configuration, glue는 dynamic application 에 대한 provisioning 에 좋다고 평한다. (물론 glue를 만든 사람이 하는 말이다.)
재미있는건 ZooKeeper를 이용하여 정보를 저장하고 이벤트 통지 등을 관리 한다는것.. 
 groovy 코드 
 
slack : 구글에서 쓴다고 하네요 

cf) 분산시스템 모니터링은  nagios, opsview, etc 
posted by smplnote
2012. 1. 18. 08:49 IT

블로깅 때문에 검색하다가 우연히 발견. 

http://grailsboston.com  

무려 h2 database로 운영한다 ㅎㅎ

플러그인 목록을 보면서 이것저것 생각하게 되는데 ( http://grailsboston.com/twittersearcher/plugin/list  )

(정말 작은 커뮤니티를 가지고 많이도 만들었네... )
 
posted by smplnote
2012. 1. 18. 08:20 IT

Jump Into Grails 2.0 스크린캐스트 ( http://grails.org/screencast/show/31 ) 를 따라해봄
 

1. 플러그인 추가
 

conf/BuildConfig.groovy
---------------------------
    plugins {
                ... 
runtime ":spring-security-core:1.2.7"
                ... 
    }

2. compile을 이용하여 플러그인 자동설치 
>grails compile

실행이 잘되면 "s2-quickstart" script를 실행하라는 메세지가 나온다. 

cf) 여기서 제대로 안되고 다운로드를 실패하면 바로 이전 글 "Grails에서 플러그인 설치실패" http://pffm.tistory.com/273  내용을 참고바람.

3. spring security 초기화 및 도메인 클래스 생성 
다음과 같이 실행하여 초기화 및 도메인 클래스를 생성하는 작업을 수행한다. 
>grails s2-quickstart org.example.demo User Role
 
작업이 끝나면 conf/Config.groovy 에 수정이 반영되었으니 확인하라는 메세지가 나온다. 

하단에 세줄이 추가된 것을 알 수 있다. 
conf/Config.groovy
 
---------------------------
grails.plugins.springsecurity.userLookup.userDomainClassName = 'org.example.demo.User'
grails.plugins.springsecurity.userLookup.authorityJoinClassName = 'org.example.demo.UserRole'
grails.plugins.springsecurity.authority.className = 'org.example.demo.Role'

여기에 한줄 더 추가 입력 (로긴 성공시 기본으로 갈 Url)
grails.plugins.springsecurity.successHandler.defaultTargetUrl = '/home' 


4. 테스트용 컨트롤러 생성
이제  home 과  publiccontroller 를 만들고.. 
>grails create-controller home
>grails create-controller  public


5. 각각 컨트롤러의 접근 권한을 다르게 부여

- 접근 권한이 불필요한곳
class PublicController{
    def index() { render 'public' }

- 명시적으로 접근권한 부여 (Secured annotation 사용)
import grails.plugins.springsecurity.Secured
@Secured(['ROLE_USER'])
class HomeController {
    def index() { render 'home' }

    @Secured(['ROLE_ADMIN'])
    def adminOnly() { render 'admin' }
}


6. 부트스트랩에 USER, ROLE  사전 등록작업  
 conf/BootStrap.groovy
--------------------------
 import org.example.demo.* // import 문 추가 
...
    def init = { servletContext ->   // init 안에 추가 
        // admin Role과 userRole 을 생성 
def adminRole = Role.findByAuthority('ROLE_ADMIN') ?: new Role(authority: 'ROLE_ADMIN').save(failOnError: true)
def userRole = Role.findByAuthority('ROLE_USER') ?: new Role(authority: 'ROLE_USER').save(failOnError: true)

        // user role을 가진 bobby와 admini role을 가진 adminuser를 생성  
def user1 = User.findByUsername('bobby') ?: new User(username: 'bobby', enabled:true, password: 'pass').save(failOnError: true)
if(!user1.authorities.contains(userRole)){
UserRole.create user1, userRole, true
}
def user2 = User.findByUsername('admin') ?: new User(username: 'adminuser', enabled:true, password: 'pass').save(failOnError: true)
        if(!user2.authorities.contains(userRole)){ UserRole.create user2, userRole, true }
        if(!user2.authorities.contains(adminRole)){ UserRole.create user2, adminRole, true } 
 
 7. 확인작업
>grails run-app
 | Server running. Browse to http://localhost:8080/demo

1) http://localhost:8080/demo/public 은 로그인 없이 접근 OK
2) http://localhost:8080/demo/home 은 로그린 화면으로 redirection
3) bobby 로그인 후 http://localhost:8080/demo/home/index 접근 OK
4) bobby 로그인 후 http://localhost:8080/demo/home/adminOnly 접근 불가
5) adminuser 로그인 후  http://localhost:8080/demo/home/adminOnly 접근 OK

8. User에 필드 추가하기 (option)
도메인 클래스만 손보면 알아서 추가해줌... (당연한거잖아.. )

ex) 사용자 정보에 nick 을 추가한다면.. 
User.groovy 
----------------
String nick; // 사용자 정보에 nick 필드 추가 

// 참고로 마지막  encodePassword 메소드를 보면 password 필드를 암호화처리해주고 있음을 알 수 있다.
 
물론..  BootStrap.groovy 안에서도 유저 생성할때 nick 을 추가해주세요. 
... new User(username: 'nickuser', enabled:true, password: 'pass', nick: 'blah blah')  

cf) BootStrap 파일을 수정할 경우에는 grails를 재시작 해주어야 합니다. 당연하긴 하지만.. 뭔가 BootStrap도 재기동 할수 있는 기능을 제공해 해줬으면... 


기타.

1. 한글 문제
한글을 BootStrap.groovy 에 넣어보았는데 안되더라. 원인은 .groovy 파일을 UTF-8 로 저장하지 않아서.  
혹시 이걸로 해결이 안된다면 다음 링크를 참조하세요.  
http://jgrasstechtips.blogspot.com/2008/05/how-to-learn-new-groovy-friend-italian.html 
comment를 보면 JAVA_OPTS 에 groovy.source.encoding 을 전달하라는 이야기가 나온다. 

2.  LDAP, ActiveDirectory 연계는?
찾아보니.. 
spring-security-ldap 플러그인이 제공된다. 


마치며... 
 
이걸 더 진행시킬 기회가 올지는 잘 모르겠다. 아마 힘들듯... 

비교할 자리는 아니지만...

grails와 playframework을 다시 생각해보면 grails는 위와같이 spring 위에 올라탄 느낌을 편리하게 제공해준다.

일단 groovy에 익숙해진다면 플러그인을 직접 만드는 것도 그리 어려워보이지 않는다.

하지만 편리함 뒤에는 내부의 복잡함이 지나치게 숨겨진게 아닌가 싶기도 하다.
 
반면 playframework은 java 고유의 호흡법을 유지할 수 있다는 장점과 컴팩트함을 장점으로 가지는 것 같다. 

물론 다시 안을 들여다 보게 된다면 SCALA의 무덤에 기겁을 할 지도 모른다... (뭘 그리 겁내냐!) 


아무튼...  개인 신변이 조금 정리되어 이제 다시 링크... 
posted by smplnote
2012. 1. 16. 16:51 IT
grails install-plugin xxxxx 를 실행했으나 실패. 

grails plugin 설치가 안되는 문제가 발생. ( set-proxy 로 해결하라고 나오지만 회사에서 proxy는 왠지.. )

시도 1) grails install-plugin http://myserver.com/plugins/grails-example-0.1.zip

시도2) 
grails install-plugin /path/to/grails-example-0.1.zip

둘다 실패... 

my-grails-app/lib 에 xxx.zip 또는 dependency를 가지는 jar 파일을 복사해서 해결함

cf) 
http://search.maven.org/  ,  http://plugins.grails.org  를 활용.
xxx-plugin.xml 파일 내용중 dependency 부분을 확인해서 추가로 받아야 할 것들을 확인할것.


참조하세요 ->  http://grails.org/doc/latest/guide/plugins.html
posted by smplnote
2012. 1. 16. 16:07 1300K
파수꾼 (Bleak Night,)
영화 > 드라마
감독 : 윤성현 / 출연 : 이제훈, 서준영, 박정민
 2010
상세보기

잘 만든 독립영화

최근 팟캐스트로 자주 듣는 목소리인 이동진과 김혜리 기자가 추천한 영화라서 뭔가 싶어서 보았다.
결과는 만족스러운 편. 독립영화의 순수한 느낌과 통속적이지 않은 성장을 다룬 이야기였다.


이해받고 싶어하는 마음이 더이상 위로받을 곳을 잃었을때 가장 상처가 큰 법이다.
그래서 사람들은 늘 상처받으면서도 누군가에게 사랑받고 싶어하는가 보다.

사람들은 상처받았들때 상대방에게 그 상처만큼의 고통을 다시 돌려주고 싶어한다.
내 상처를 크고 과장되게 표현하는 것이 바로 상처를 치유하는 것이라고 믿으니까. 믿음 이전에 본능인지도 모르겠다.
하지만, 처음 의도하지 않았던 행동이 부메랑처럼 서로에게 상처를 남기고나면 결국은.
돌이킬수 없는 결말을 낳는다.

세 친구들만 적용되는 이야기일까?
사랑하는 남녀도, 부모와 자식관계도 마찬가지.

한마디로 요약하자면 입을 조심하라.


P.S.
첫 장면에 대해 해석하자면, 아마도 기태가 처음 학교의 짱을 먹게 된 때를 보여주는 것으로 생각한다.
다수의 학생들이 모두 모여있는고 기태의 두 친구도(적어도 한 친구는 싸움장소에 갈만한 친구는 아니었으니까) 같이 끼어서 기태가 싸우는 모습을 진지하게 바라보고 있다.
기존의 짱과 붙어서 새로운 짱으로 등극하면서 권력을 가지게 된 순간, 어쩌면 바로 우정이 어긋나기 시작한 바로 그때를 기록한게 아닌가 싶다.

P.S. 이제훈의 연기는 강렬했다. 그의 앞으로의 미래가 기대된다. 그런데 고등학생이 아니라니.. 놀랍.

P.S 영화 파수꾼의 비화모음에 대한 재미있는 글  http://lb1011.blog.me/130122381533 
posted by smplnote
2012. 1. 13. 16:51 IT

- 준비물
JDK 1.6.X
STS  (현재버전 2.9.0 M1) 

- 설치 
1. STS 실행후 Dashboard의 Extension Tab으로 가서 Grails 와 Grails Support 를 추가로 설치.
컴파일러를 groovy 1.8로 바꾸려면 Groovy Eclipse 플러그인을 다시 추가해야한다 . (이거 dependency 걸어서 같이 받게좀 해주세요.. )
참조 :  http://grails.org/STS+Integration 

2. STS재실행후  grails 홈 설정 ( STS 실행경로 바로 상위에 grails-2.0.0 이 생김. )

3.  http://grails.org/Quick+Start   따라하면 됨.. 

cf) H2 메모리 DB를 이용해서 테스트할때 좋은건 Grails가 DB web 콘솔을 기본으로 제공한다는것 ( 2.0 소개 스크린캐스트에서 발견..) 이때 jdbc url은 conf/DataSource.groovy 파일에 있는 설정값을 이용하면 된다. 


ps. 왠지 그레일즈는 설치해서 튜토리얼 한번 해보고 뭐좀 더 해보려다가 멈추게 된다.
진중하게 좀 파고들어야 하는데...
그리고 STS는 왤케 느리냐..  
다음엔 grails의 spring security 아니면  spring-security-facebook  을 조금 건드려볼까함.. 

posted by smplnote