레이블이 github인 게시물을 표시합니다. 모든 게시물 표시
레이블이 github인 게시물을 표시합니다. 모든 게시물 표시

2013년 7월 10일 수요일

TreeGridTable 개발 공유

1. 기존 Table
  • 트리 형태의 데이터이며, 단순 들여쓰기로 표현됨.
  • 한 줄 이상의 데이터는 표시되지 않으며, 클릭 시 펼칠 수 있도록 되어 있음.
  • 테이블 가로 사이즈가 고정형이고, 가로스크롤바가 표시됨.


2. 요구사항
  • 접고 펼 수 있는 트리 형태의 테이블
  • 각 컬럼의 가로 사이즈를 조정 가능
  • 컬럼의 가로 사이즈 조정시 다른 컬럼의 영향을 주지 않고, 테이블 전체 사이즈를 늘리고 줄일 수 있도록
  • 기본적으로 전체 노드가 펼쳐진 상태
  • 데이터의 내용이 왼쪽, 가운데, 오른쪽으로 정렬 가능
  • 손 쉬운 사용

3. 구글링
4. 프로토타입
  1. TreeTable + jQuery UI Resizable
    • 잘 작동함.
    • 가로 길이만 조절하면 되는데, 세로도 조절됨. 막는 코드가 필요함.
    • 맨 오른쪽 셀을 조절 할 수 없음.
  2. TreeTable + Resizable Columns
    • 잘 작동함.
    • 가로만 조절 가능하기에 세로 조절을 막는 코드를 넣을 필요가 없음.
    • 이것도 맨 오른쪽 셀을 조절 할 수 없음.
  3. TreeTable + Felxigrid
    • 잘 작동함, 단 TreeTable을 선행 후 Felxigrid를 수행해야 함.
    • 가로만 조절 가능하며, 맨 오른쪽 셀도 조절 가능 함.
    • 기본 디자인 괜찮음.

5. 결론 및 개발 전략
  • 프로토타입 3번 조합으로 결정
  • Node.js + Grunt(Javascript Task Runner such as Ant http://gruntjs.com/) + Bower(Package Manager for the web such as Gem, NPM http://bower.io/) 을 이용하여 개발
  • TreeTable과 Flexigrid는 Github에 등록되어 있음, 해당 js+css 파일만 복사해오는 방법이 있으나 그러지 않고, Bower에 패키지를 등록하여 설치/관리 하도록 함.
  • 두 라이브러리가 일부 기능 변경이 될 수 있으므로 제 github로 Fork 한 뒤에 Bower에 등록한다.
  • demo(데모), docs(문서), src(개발), test(유닛테스트) 등의 폴더 구조를 갖는다.
6. 결과물


2013년 5월 30일 목요일

GitHub를 이용하여 남의 코드 바꾸기.


요즘 간간히 node.js를 이용하여 개발하고 있는데요.
NPM(node package manager)나 Github등을 통해 여러 오픈 소스를 가져와서 사용하다보니 무척이나 편리합니다.

그런데 다운 받은 오픈소스에 버그가 있는 경우가 있습니다.
설치한 코드를 직접 찾아가서 수정하고 끝내도 되지만, 
좀 더 나은 세상(?)을 만들기 위해 소스 코드 수정 요청을 하였습니다.
몇시간 후 제가 요청한 부분이 반영이 되었고, 이제 다른 사람들도 변경된 모듈을 다운 받을 수 있게 되었습니다.

참 재밌고, 신이 났습니다. 전혀 모르는 외국 개발자들과 일하기가 이렇게 쉽게 될 줄은 몰랐었으니까요.
그리하여 제가 경험했던 것을 공유합니다.

1. node.js를 이용하여 imgur.com에 이미지를 자동으로 업로드하는 모듈을 찾기
3. 설치 후 개발.
4. 앱 실행 후 간혈적으로 오류 발생.
5. 원인은 node-imgur-upload 모듈에서, 이미지 업로드 후 결과값을 무조건 JSON으로 파싱함. (일부는 html 형태로 와서 오류가 남)
6. https://github.com/adamcoulombe/node-imgur-upload를 제 GitHub로 Fork(https://github.com/iamdenny/node-imgur-upload) 해서 소스코드를 수정 후 커밋
7. Pull Request를 누르고, 어떤 오류가 있고, 원인이 뭐고, 해결책은 이러이러하여 커밋하니 리뷰해 달라, 라고 작성.
8. 몇시간 후 적용됨
정말 재미난 경험을 했습니다. 앞으로 더 많이 이런 활용을 해나가서 오픈 커미터로 활동해보고 싶은 욕심이 생겼습니다.^^

2013년 2월 20일 수요일

Mobile Photo Viewer

네이버 자동차 모바일 프로젝트 개발 중에 포토뷰어 개발을 맡게 되었다. 진도 프레임워크를 이용하여 개발하였는데, 콤포넌트화하여 널리 공유하면 좋을 것 같아서 만들기 시작했다.

개발 방법을 어떤 걸 선택할까 고민이 많았다. TDD, ATDD, XP, SCRUM등등 고민 고민 끝에 나는 RDD로 하기로 했다. RDD는 Readme Driven Development이다. DDD(Document Driven Development)과 유사하다. 선택한 이유는 가장 쉽고 정리가 잘 되기 때문이다. 머리 속에 대략적으로 설계 해 놓은 것을 쉽게 글로 막~ 적으면서 정리하면 된다. 그리고 다른 분들이 멋드러지게 작성해 놓은 문서를 밴치마킹 하면서 하면 된다^^. 그래도 Unit Test는 하려고 준비는 해뒀다. 시간 나면 해야지.

소스 형상 관리는 할까, 말까, 고민하다가 하기로 하였고, SVN을 할까 GIT를 할까 고민하다가 GIT를 선택했다. Private으로 할까 Public으로 할까 하다가 이왕 만들꺼 널리 공유하면 좋을 것 같아서 Public을 선택했다. 저장소를 github.com로 할까, dev.naver.com으로 할까, 서버를 만들까 하다가, 전세계적으로 많이 쓰여지고 있고, 트렌트로 떠오르고 있는 github.com을 선택했다. github.com에 소스를 올리면 곧 이력서가 되는 세상이 한국에도 오고 있다.

개발을 쌩 javascript부터 하기엔 개발시간이 늘어날 것 같고, jQuery를 이용하자니 내가 몸담고 있는 곳에서 만든 Jindo가 걸린다. Jindo 선택! Class Base로 개발할 것인가, Module Base로 할 것인가? 난 개인적으로 Class Base가 좋다.

개발툴은 Sublime2 Text 2를 이용했다. 아직 많이 모르지만 가볍고, 여러 유용한 기능들이 편하다. 압타나는 너무 무겁고, 에디터플러스2는 가볍기만 하다.

빈 폴더, Html, Css, Js 파일을 만들고, 초기에 필요한 것들을 셋팅한다. jindo 파일도 넣어놓고, 이미지도 넣어놓고...

이제 본격적으로 개발에 들어간다. jindo.m.Photoviewer.js 파일에 클래스를 만든다. 우선 환경변수를 인자값으로 받을 수 있도록 준비하고, 하나씩 개발해 나가면서 점진적으로 나아간다.

현재 버전 1.0.0을 제작하였다. 앞으로도 수 많은 기능을 넣어야 한다. 완료되면 jQuery Mobile 버전으로도 제작해야겠다.

https://github.com/iamdenny/MobilePhotoViewer