nezy의 blog  
Front Page
| Wiki | Guestbook | Admin | Write Article   
 
기술에 해당하는 글 6건
2007/05/07   이클립스 플러그인 고치기 (4)
2007/04/22   랜덤tv팟에 리스트 보기 추가 (4)
2007/04/18   전체화면(Full Screen) TV팟 (4)
2007/04/14   공부 삼아 만들어 본 랜덤 TV팟
2005/05/14   NezyIDE(가칭) 수정 (6)
2005/05/04   cStringIO 의 배신 (3)


이클립스 플러그인 고치기
회사에서 사용하는 DB 미들웨어 서버에 config 로 쓰이는 파일에는 이런저런 기능들이 많이 들어가 있어서 좀 복잡하다. 그래서 에디터가 이클립스 플러그인(eclipse plugin)으로 만들어져 있는데, 이게 약간 불편한 점이 있다. 그래서 개발자한테 소스를 받아서 주말동안 공부삼아 고쳐보았다.

목표는 2가지.
  1. config 파일에 대한 outliner 를 제공하는데 이게 sorting 이 안된다. 파일이 점점 길어지고 (Element 가 점점 많아지고) sorting 이 안된 상황에서는 웹개발자들이 자신이 추가한 Element 를 outliner 에서 찾기 위해 Element 의 이름을 임시로 "___________" 또는 "AAAAAAAAAA" 식으로 만드는 안습(?)의 상황이 연출되곤 했다. 그래서 outliner 에 toggle 가능한 Sort 버튼 추가.
  2. 옆자리 개발자분이 outliner 에서 Node 를 하나 누를 때마다 옆에 있는 Editor 와 위치가 sync 가 되어서 보던 위치를 자꾸 잃어버려서 불편하다고 한다. 그래서 outliner 에 toggle 가능한 Link With 버튼 추가.

그래서 이클립스의 플러그인 구조를 대략적으로 훑어보게 되었는데 너무 복잡해서 잘 이해가 가지 않았다. 책이라도 하나 사서 봐야겠다.

내가 하려는 것은 Viewer 만 건드리면 되는 것이라 전체 구조를 잘 이해하지 못해도 패치가 가능했다.

이클립스의 outliner 는 보통 TreeViewer 인데 대략 아래 그림과 같은 구조를 가지고 있다.
사용자 삽입 이미지

저 Viewer 에 Action 을 두가지(sorting 과 link with) 넣어주고 그걸 outliner 의 ToolBar 에 아이콘과 함께 삽입해주면 되는 것이다.

tutorial web page 들은 모두 Viewer 로 설명을 해놓았는데, 이클립스도 계속 발전하는지라 실제 내가 받은 플러그인은 Page 라는 것으로 구성이 되어 있었다. -_-; (어느 것이 최신인지는 잘 모르겠다;) 갑자기 책을 사는 것이 망설여졌다. 괜히 샀는데 옛날꺼면 돈만 날리는 거니깐.

여튼 그냥 Action 들을 만들고, sorter 라든가 listener 같은 것들을 잘 붙여주니 잘 동작했다.

before / after 스샷을 찍어봤는데 별 차이는 없구나. -_-;;
사용자 삽입 이미지사용자 삽입 이미지

가장 큰 난관은 웃기게도 아이콘 붙이기였다. -_-; 설명 예제들은 모두 xml 에다가 icon 파일을 기술하고 그게 자동으로 붙게 되어 있는데, 내가 받은 소스는 outliner 가 Viewer 로 구성되어 있지 않아서 그게 불가능했다. 그래서 소스상에서 직접 붙이게 되었는데, 검색도 많이 해보고 이것저것 해봤는데 잘 안되더라.(심지어 icon 그림 파일의 절대 경로까지 넣어봤다;) 그냥 아이콘 없이 갈까.. 하다가 화룡점정이란 심정으로 계속 삽질을 해봤다. 해답은 아래 url 에서 찾을 수 있었다. Activator 에서 아이콘들을 초기화하고 ImageRegistry 에 등록한 후 불러다 쓰는 방식. 누군진 모르지만 감샤 (__)
http://www.roubenmeschian.com/blog/?cat=6

그리고 이클립스 플러그인 까페에서 찾게된 유용한 튜토리얼 페이지들.
http://cafe.naver.com/ArticleRead.nhn?clubid=11492512&menuid=20&boardtype=L&page=&articleid=328

http://www.elancer.co.kr/eTimes/page/eTimes_view.html?str=c2VsdW5vPTkxNA==
http://www.elancer.co.kr/eTimes/page/eTimes_view.html?str=c2VsdW5vPTkxNQ==
http://www.elancer.co.kr/eTimes/page/eTimes_view.html?str=c2VsdW5vPTExMzA=
http://www.elancer.co.kr/eTimes/page/eTimes_view.html?str=c2VsdW5vPTExMzE=
http://www.elancer.co.kr/eTimes/page/eTimes_view.html?str=c2VsdW5vPTExMzI=
http://www.elancer.co.kr/eTimes/page/eTimes_view.html?str=c2VsdW5vPTEyMzU=
http://www.elancer.co.kr/eTimes/page/eTimes_view.html?str=c2VsdW5vPTEyMzY=
http://www.elancer.co.kr/eTimes/page/eTimes_view.html?str=c2VsdW5vPTEyMzc=
http://www.elancer.co.kr/eTimes/page/eTimes_view.html?str=c2VsdW5vPTE3NDc=
http://www.elancer.co.kr/eTimes/page/eTimes_view.html?str=c2VsdW5vPTE3NDg=
http://www.elancer.co.kr/eTimes/page/eTimes_view.html?str=c2VsdW5vPTE3NDk=
http://www.elancer.co.kr/eTimes/page/eTimes_view.html?str=c2VsdW5vPTE3NTA=


TODO
  • Editor 에서 더블클릭으로 엔트리를 선택하면 해당 node 를 outliner 에서 표시해주기.
  • SQL 문 syntax highlight

이걸 읽고 누군가가 지식을 얻어가리라곤 생각하지 않는다. 기술적인 내용은 하나도 없고 그냥 삽질기를 대충 두서없이 주절주절 써놓은 거니깐. 그냥 로그성 포스트.


랜덤tv팟에 리스트 보기 추가

창수가 뭐라고 해서 목록을 보여주기로 했다. -_-;
창수야.. 저 목록 중에 랜덤으로 보여준다는 얘기야 ㅜ_ㅜ

약간의 버그(내가 목록을 갱신했는데 반영이 안되는 것이다!!)가 있어서 밤새(ㅠㅠ) 고쳤는데.. mx:Model 의 source property 에 http 로 시작하는 외부 변수를 주게 되면 컴파일 타임에 받아와서 바이너리(swf)에 박아버린다. -_-; 이걸 모르고 브라우저에 캐시되는 건가~ 하면서 애꿎은 IE 랑 파폭만 못살게 굴었다.(캐시 다 지워도 보고 Ctrl + F5 연타도 해보고;)
이걸로 끝난 게 아니라, 결국 mx:Model 의 source property 를 웹에 있는 xml 로 동적으로 갱신하는데는 실패했다. XML 객체로 변환해서 넣어도 안되고, text로 넣어도 안되고, object 상태로 그냥도 넣어봤는데 다 실패했다. 그래서 mx:Model 을 버리고 그냥 필요한 컴포넌트들에서 알아서 가져가도록 구조를 바꾸었다. 흠.. mx:Model 의 source 에 동적으로 받아온 xml 을 대입해주는 법을 알아야 할텐데..

여튼 창수 땡큐 -_- (내 하룻밤~)


전체화면(Full Screen) TV팟


전체화면 기능을 추가해봤다. Flash Player 9 이상에서만 동작한다.

Full Screen 버튼을 눌러 전체화면을 만들면 "종료하려면 ESC 누르세요오~" 요런 말이 나오는데, 내가 넣은 게 아니다. -_- ESC 말고 원래 눌렀던 Full Screen 버튼을 누르는게 좋다. 잘 찾아보면 있다.

ESC 를 눌러서 전체화면을 해제하면 원래 화면 크기로 돌아가지 못하는 버그가 있는데 어떻게 고쳐야 할까? 구글링해봐도 esc 버튼을 눌렀을 때 나오는 이벤트를 핸들링할 핸들러 걸어주는 방법이 없다.

우어어.. 어도비는 방법을 알려달라 'o'/

(연속재생 기능도 추가완료)


공부 삼아 만들어 본 랜덤 TV팟


flex 세미나를 들은 김에 만들어 봤다. Daum 의 Tv팟 에서 내가 지정해둔 몇몇 개의 동영상 중에 하나를 랜덤하게 가져와서 플레이해주는 것이다. 워낙 단순하게 만들어서 소스 코드 다해봐야 몇줄 안된다.

환경은 ethereal 의 도움을 좀 받고
flex + python + php
간단하다. ^-^

그리고 동영상 파일 추가는 나만 된다. -_-;; (괜히 웹으로 만들어뒀다가 퍼져나가면 곤란해질 수도 있으니깐;;)

지금은 동영상 목록에 몇개 없기 때문에 같은게 많이 나온다.
그래도 심심하실 때 보시라~


NezyIDE(가칭) 수정
심심해서 한동안 손놨던 NezyIDE(가칭) 를 좀 끄적끄적 만들었다.

2006-10-29일 추가
google analytics 를 보다가 dparser 로 제 홈페이지를 찾아온 분들이 많길래 위키 링크를 추가합니다.
http://nezy.net/wiki/wiki.php/DParserForPython


위키에 정리하다 말다하고 있다.;;
http://nezy.net/wiki/wiki.php/NezyIDE

펼쳐보기



cStringIO 의 배신
buffer 로 쓸만한 것 만들어보려고 cStringIO 를 사용해 보았다. 메모리가 일정 이상이 되면 새로 메모리를 잡으려고 cStringIO 의 truncate(0) 를 호출했다. (요건 옛날에 혜식이형도 속았댔다 -ㅇ-;)

별 문제 없이 잘 돌길래 잘 쓰고 있는데.. 다른 거랑 성능 비교할 일이 생겨서 좀 많이(10만번 정도) 호출해보았다. 헛 이럴 수가 메모리가 샌다!!! -ㅇ-;; 190 메가까지 커진 버퍼를 망연자실 바라보다 알아보니 seek(0,0) 을 해주어야 한단다.(혜식이형 땡큐;) truncate(0) 를 그냥 호출하면 그 때 파일 포인터의 위치에서 truncate 한댄다;

하아.. 배신이다; (레퍼런스에 좀 자세히 적어주지.. -_-;)

@
제목이랑은 다른 얘기지만 list 의 앞에서 pop 하면 list 를 모두 복사한단다. list 로 버퍼 구현하긴 글렀군;

@
string 이 += 에 워낙 최적화가 되어 있어서 무시무시한 성능을 보여줬다. 내가 만든 buffer 의 약 3배? buffer 왜 만들었냐.. ㅠoㅠ;
아.. 근데 같은 string 으로 계속 test 하면 interned string 이 되어(spell 맞나?;) 메모리에 cache 되기도 한단다; random 하게 string 을 만들어내서 다시 테스트 해봐야 겠다.


nezy의 개인 blog 사이트입니다.
BLOG main image
 Recent Entries
노무현 전대통령 영상 (2)
귀여워서 피식2 (1)
귀여워서 피식
안들려요 (5)
병훈이 추천 애니 (1)
 Category
전체 (109)
잡담 (55)
모음 (6)
기술 (6)
나무 껴안기 (1)
슬래시닷 (17)
 Calendar
«   2024/11   »
          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
 Recent Comments
비아그라 부작용 사례 http..
후불제 - 2020
비아그라 부작용 사례 http..
후불제 - 2020
정품 비아그라 후불제 파는..
정품 - 2019
정품 비아그라 후불제 파는..
정품 - 2019
Open the wrapper, light t..
looking - 2019
 Link Site
Avenante
KLDP
OpenLook :: 이야기
Python 마을
SBTM
Wiki
개인 홈페이지 한샘이
 Visitor Statistics
Total : 1510446
Today : 420
Yesterday : 82
rss