페이지

2012년 9월 24일 월요일

추창민, 광해

광해
별 다섯.

고리타분한 왕실을 상식으로 바꿔 보려한 한 광대의 이야기.

요즘 대선 철이라 그런지
작금의 정치상황을
보고 얘기하려 한것은 아닌지.
만약 그렇다면 제일 가까운 이는  xxx가 아닌가 싶다.

비록 정치에 대한 경험은 떨어지지만
국민을 가엽게 여기는 맘으로
모든 것을 헤쳐나가고자 하는 이.

누구나 측은지심을 가지고 있고
상식만 가지고 있다면
왕의 자리에 누가 앉든 중요하지 않다.
그 자리가 그 사람을 왕으로 만들겠지.

광대의 목소리 vs 왕의 목소리
남자의 목소리에 대한 매력의 극과 극을 보여준다.
누구나 노력을 하면 목소리도 바꿀 수 있다고 한다.
존 내버로는 주름살 제거 수술 보다는
목소리에 대한 투자가 훨씬 현명한 일이라 했다.
남자들이여 목소리에 투자하라~

2012년 9월 20일 목요일

using cdt index

using CDT index

intro

CDT는 내부적으로 우리가 자주 사용하는 code assist, Open Declaration(F3), Open call Hierarchy(Ctrl + Alt + H) 등에 사용하기 위해서 내부적으로 c/c++ 코드를 parsing 해서 그 정보를 가지고 있는데 이것을 Index라고 한다. Indexer를 사용해서 특정 변수/함수 의 definition , declaration, reference 등의 정보를 가지고 올 수 있다.

getting IIndex

ICProject project = CoreModel.getDefault().getCModel().getCProject("hello");
CCorePlugin.getIndexManager().joinIndexer(IIndexManaer.FOREVER, null); // wait until indexing completes
IIndex index = null;
try{
    index = CCorePlugin.getIndexManager().getIndex(project);
    index.acquireReadLock(); // lock index

    IIndexBinding[] bindings = index.findBindings(Pattern.compile("main"), false, IndexFilter.All, null);
    for (IIndexBinding b : bindings) {
        System.out.print("name: " + b.getName()+" " );
        String[] qnames = b.getQualifiedName();
    }
}catch(Exception e){
    e.printStackTrace();
}finally{
    try{
        index.releaseReadLock();
    }catch (Exception e2){
        e.printStackTrace();
    }
}

Indexing 작업은 보통 main thread와 다른 thread에서 수행이 되기 때문에 joinIndexer로 인덱싱이 끝날때까지 기다린후 index에 lock을 걸고 findBinding 으로 쿼리를 수행할 수 있다.

querying

findBinding으로 IIndexBinding 을 얻고 여기서 얻은 IIndexBinding으로 아래 함수들을 불러 원하는 IIndexName을 얻을 수 있다. IIndex::findDeclarations : 함수/변수의 선언부와 구현부 IIndex::findDefinitions : 함수의 구현부 IIndex::findReferences : 합수나 변수가 사용된(use) 부분 그렇다면 함수의 선언부만 쿼리하고싶으면 어떻게 할까? IIndex::findNames(binding, IIndex.FINDDECLARATIONS)를 부르면 된다. 실제로 IIndex::findDeclarations은 IIndex::findNames(binding, IINdex.FINDDECLARATIONSDEFINITIONS)와 같다.
// finding declaration of BasicApp::CreateInstance
Pattern[] p = new Pattern[2];
p[0] = Pattern.compile("BasicApp");
p[1] = Pattern.compile("CreateInstance");
IIndexBinding[] bindings = index.findBindings(p , true, IndexFilter.CPP_DECLARED_OR_IMPLICIT, monitor);
for (IIndexBinding binding : bindings) {                
    IIndexName[] names = index.findNames(binding, IIndex.FIND_DECLARATIONS);
}  

getting index info

위 쿼리 함수들로 얻은 IIndexName으로 파일 위치나 기타 정보등을 얻을 수 있다.
for(IIndexName name: names){
    // get full path
    String path = name.getFile().getLocation().getFullPath();
    // get offset & length
    int offset = name.getNodeOffset();
    int length = name.getNodeLength();  
}

2012년 9월 6일 목요일

응답하라 1997



지금보다 절실한 나중이란없다. 나중이란 영원히 오지않을수도 있기때문이다. 눈앞에 와있는 지금이 아닌 안올지도 모르는 다음 기회를 얘기하기엔 삶은 그리 길지 않다


누구를 좋아하는 건 선택의 문제가 아냐. 가슴이 시키는 거야.

16화 - 첫사랑이 이루어지지 않는 이유.

2가지 재미난 상징들!


1.
윤재
+ 넌 어떻게 나보다 우리 형 마음을 그렇게 잘알아? 
정신과 가서 사람들 맘 좀 들여다 보고 치료좀 해주라고

준희
= 남의 마음은 잘 보는데 내맘을 잘 몰라서
내 맘부터 정리하고(포장된 박스를 테이프로 봉인한다. )

2.
준희 
+ 이게 마지막 짐입니다. 
- 아유 그래도 또한번 확인해보세요. 
항상 갔다가 한번은 되돌아 오더라고요. 
꼭 하나씩 빼먹고 오더라고요.
+ 그래요? (집으로 올라가자 윤재가 있고 그와 마지막 인사를 한다. )

후자에서 소름 돋았음.

----------
저마다의 첫사랑이 아름다운 이유는
첫사랑이 그닥 아름다웠기 때문만은 아니다.
그 첫사랑의 시절엔
영악하지 못한 젊음이 있었고
지독할 만큼 순수한 내가 있었으며
주체할 수 없이 뜨거운 당신이 있었기 때문일 것이다.
그리고 다시는 젊고 그 순수한 열정의 시절로
돌아갈 수 없다는 걸 이미 알고 있기 때문이다.

첫사랑은 무모하다.
영악한 계산없이 순수와 열정만으로
모든 것을 던져 버리고는
결국 실패한다.
하지만 그래서 극적이다.
다시는 가져볼 수 없는 체온과 감정들로 얽혀진 무모한 이야기들
첫사랑은 그래서 내 생애 가장 극적인 드라마다
그리하여 실패해도 좋다
희극보다는 비극적 결말이 오래 남는 법이며
그리하여 실패한 첫사랑의 비극적 드라마 한편쯤
내 삶 한자락에 남겨두는 것도
폼나는 일이다.

첫사랑은 시절이다.
흘러가면 그 뿐이다
이제 맞게 되는 새로운 시절엔
새로운 사랑에게 기회를 줘야 한다.

첫사랑의 체온과 순수함은 아닐지라도
그 상처로 인해 조금은 자라고 성숙해진
어른의 사랑을 기다려야 한다
기다리는 사람만이 사랑을 꿈꿀 수 있다.
---------
로맨스가 지나면 생활이 온다.
순수함은 때묻어 가고 열정은 얼어붙어 가며
젊음은 영악함으로 나이들어 간다
그리하여 순수했던 시절의 첫사랑은
이제 고단하고 지난한 일상이 된다.
마치 첫사랑은 이루어지지 않은것처럼 보이는 이유다
누구도 성공한 첫사랑의 로맨스는 이야기하지 않으니까