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

2013년 9월 24일 화요일

[Team L.A.D] 재학생 Study 02 - Collection 의 이해 - Map0

이제 Map 에 관해서 알아보자.

Map 클래스를 상속받는 아이들은 총 4가지가 있다.


HashTable

- 데이터가 해시테이블에 동기화되어있는 클래스 이다. 동기화가 필요한 부분에서

   사용하기에 용이하다.

HashMap

- HashTable 이랑 거의 비슷하나 , 다른 점은 동기화 되어있지 않으며 , NULL 값을

   허용한다.

TreeMap

 - red-black 트리에 데이터를 담는다. TreeSet 과 다른점은 Value 가 아닌 Key 에 의해서

   순서가 정해진다.

LinkedHashMap

 - HashMap 과 거의 동일하며 , 이중 연결 리스트를 이용하여 데이터를 담는다는

   사실만 다르다.

그럼 이 4가지 맵 중에 누가 빠른가?

hashMap : TotalUsedTime :24 ms
hashTable : TotalUsedTime :21 ms
treeMap : TotalUsedTime :29 ms
linkedMap : TotalUsedTime :26 ms

솔직히...ㅋㅋ 거의 비슷비슷 하다.. 큰 차이가 없다..

역시 TreeMap 이 느리긴 하나..

key 값으로 찾는다는 점이 있고

다른 모든 것은 해시 함수 기법으로 검색 하기 때문에 상당히 빠르다.

그럼 지금까지의 모든 기법을 알아봤으니 뭐가 제일 나은지 정리 해보자

Set - HashSet

List - ArrayList

Map - HashMap

Queue - LinkedList

아마 가장 안정적이고 자주쓰는 것을 자바 에서 지정해줬으리라..

그럼 여기서 끝...

다음엔 더 자세히 해보자~

[Team L.A.D] 재학생 Study02 - Collection List

Collection 2번째 이제 List 에 대해서 알아보자

List 는 기본적으로 사용함에 있어서 Set과 특별한 차이점은 없으나.

넣는대로 Index (색인)이 된다는 점 , 중복을 허용한다는 점이 다르다.

그럼 List 의 종류에 대해 알아보자.

LinkedList

- 서로 앞뒤의 관계에 대해서만 정보를 가지고 있다 . 나머지 사항은 ArrayList와 비슷하다.

- 그러나 LinkedList 는 서로 앞뒤에 대한 Link정보만 갖고 있기 때문에 검색하는데

   상당히 느린 구조를 띈다.

- 그러나 서로의 연결정보만 갖고 있으므로 추가 삭제에는 , 특히 대량으로 Data의

   추가 삭제가 이뤄질 경우 상당히 빠른 구조를 띈다.


ArrayList

- List의 대표적인 클래스고 가장 많이 쓰인다.

- 각 Data가 Index 번호를 갖고 있어서 , 검색에 상당히 용이하다.

- 그러나 Array 의 형태를 띄고있어서 Data삭제 또는 추가시 임시 배열을 만들고

   옮기는 방법을 사용하므로 , Data의 잦은 추가 삭제 , 대량 추가 삭제가 많을 경우에는

   적당하지 않다.


Vector

- 위 2 클래스의 아버지와 같은 클래스로 Java 1.0 부터 사용되어 왔고 , 지금도 가끔

   사용하는 클래스 이긴 합니다.. 기능은 ArrayList 와 동일하나 동기화 기능이 포함되어

   있다는 점이 차이점입니다.


그럼 List 관련 클래스 중 누가누가 빠른가??

Vector
LinkedList
ArrayList

10만 runCount for 문 처리

ArrayList : TotalUsedTime :13 ms
LinkedList : TotalUsedTime :69939 ms
Vector : TotalUsedTime :12 ms


LinkedList Select 시간이 장난아니게 오래 걸리는걸 확인할 수 있다.

여기서 LinkedList 를 순차 처리 할수 있게 poll() 메소드를 사용해보자

ArrayList : TotalUsedTime :13 ms
LinkedList : TotalUsedTime :14 ms
Vector : TotalUsedTime :13 ms

엄청난 차이를 보인다. 

LinkedList 를 조회에도 사용할 경우 poll() 메소드를 반드시 써주자




 

2013년 9월 23일 월요일

[Team L.A.D] 재학생 Study 02 - Collection 의 이해 Set

자 오늘 부터 Collection 을 제대로 이해해 보자.

너무 이건 내용이 방대해서

Set / List / Map 으로 나눠서 설명하고 Queue는 그냥 알아두는 용도로 하겠다.

그리고 기타적으로 Stack Class 에 대해서도 별도로 언급한다.

Set은

순서가 없고 (즉 색인이 없으며) , 중복을 허용하지 않는 Collection이다

Java Class Collection 을 상속받는다.


그럼 Set의 종류는 무엇이 있을까?

1. HashSet

    - 데이터를 해시 테이블에 담는 클래스 , 당연히 순서 없다.

2. TreeSet

    - red-black 이라는 트리에 데이터를 담는다. 값에 따라서 순서가 정해진다.

    - 당연히 HashSet 보다 느리다. 데이터를 담으면서 동시에 정렬한다 하면

       유용하지만.. 그닥 쓰지 않는다.

3. LinkedHashSet

    - 해시 테이블에 데이터를 담는데 , 저장된 순서에 따라서 순서가 결정된다.

※ red-black 트리 : 이진 트리 구조로 데이터를 담는 구조 , 그러나 성능이 영
                            좋지 않은 트리 구조 이므로 사용하지 않길 권유 한다.

자 그럼 Set 명령어 중에 누가누가 빠른가 비교해 보실까 .

비교 대상

HashSet

TreeSet

LinkedHashSet

이 3가지의 속도와 메모리 사용량을 비교한다.

HashSet : TotalUsedTime :50 ms
TreeSet : TotalUsedTime :69 ms
LinkedHashSet : TotalUsedTime :39 ms

3개 모두 빠르지만 , LinkedHashSet 이 가장 빠르다.


2013년 8월 7일 수요일

와우 애드온 벤치마킹

와우 애드온 구성
-  TOC : 애드온에 사용할 기본 xml 경로 및 스크립트 경로 기재
-  XML : 애드온 UI 의 정보를 담고 있거나 , Lua 스크립트의 경로 기재
-  Lua  : 애드온에서 기능을 담당

와우 애드온 제작시 고려해야 하는 것

 - WOW API :  http://www.wowwiki.com/World_of_Warcraft_API#Testing_Functions
 - Lua 레퍼런스 : http://www.lua.org/manual/5.1/


와우 애드온의 특징

- 와우는 GUI의 기능 향상 과 인터페이스 부분을 외주 제작을 가능하게 한다는
  블쟈님 의 (아름다운) 사상 하에 View 부분과 Control 부분을 누구나 제작 가능하고
  게임에 접목 할 수 있게 설계 한 것으로 보인다.

- 와우가 Lua 를 선택한 것은 GUI 퍼포먼스가 중요한 MMORPG 의 특징상

  속도가 빠른 Lua 를 선택한 것으로 보여지며 , Addon 제작시 퍼포먼스가

  떨어질 수도 있다는 사실을 감안 한 것으로 보인다.

와우 애드온의 개발 방법

1. 새 애드온을 만들기 위한 Interface 파일을 xml 로 불러온다. 불러오는 부분은 UI

2. 불러온 UI 에 대해 수정할 부분을 xml 에서 작성한다.

3. 해당 UI 에 넣을 기능에 대해 Lua 에 작성한다.

와우 애드온을 통한 프로젝트에 적용할 방안

- 와우의 애드온은 기본적인 애드온 UI 는 제공해주는 형태에 , 사용자가 필요에 따라

  변형하고 기능을 추가하도록 제공해주고 있는 것이다.

- 그리고 그 방법을 블쟈는 XML + Lua 로 선택했다.

- 현재 Project 는 C# 으로 개발을 기획중에 있고 , 루아를 써도 상관없겠으나

  이보다는, 확장성의 방법으로 블쟈의 방법도 있다는 것을 참고할 필요가 있고

  확장성을 제공하는 공간에 대해서는 블쟈처럼 염두해 둘 필요가 있다.

2013년 7월 20일 토요일

Team L.A.D - Draw.io 벤치마킹(2)

Draw.io 를 이제 구성적으로 분석해 보자

Draw.io 는 구글의 무료 Web Application 이다.

흐름도 , UML , ERD , 전자회로 등등 다양한 Diagram 을 그릴 수 있게 해주는

프로그램 입니다.

구글은 제공만 해줄 뿐인것 같고 ,

실제 만든 업체는 JGraph 라는 업체다.


HTML5 로 구성된 WEB Application 개발 전문 업체며

Graph , Diagram 관련된 것만 전문적으로 판매하고 있다.

라이센스 비용을 Single , Team 용으로 판매하고 있으며,

주 판매 Solution 은 mxGraph 이다.

Draw.io 는 홍보 목적 및 서비스 차원에서 구글을 통해 제공되는 것으로 보인다.


Team L.A.D - Draw.io 벤치마킹

개요

  벤치마킹 자료 중 . Draw.io 는 웹이기 때문에 , 접근성이 용이 하며
  
  내부 기능은 별로 없지만 , UI 및 기초 기능은 벤치마킹 하기에 적합하다.

   기능을 살펴 보면서 , Project_V 의 방향을 모색한다.

  1. 메뉴 기능
  • 파일
    • 신규 
      • 곰백그리기 : 새로 그리기다 . 누르면 새로운 웹창이 뜬다
      • 드로잉복사 : 현재 그려져 있는 Diagram 을 그대로 복사해 새로운 웹 창에 띄워 준다.
      • 템플릿 : Draw.io 에서는 여러 예제 샘플을 제공해 준다.        (샘플이 상당히 퀄리티 높다..이게 정말 공짜인가 싶을 정도다..)  예제 샘플을 클릭하면 역시 , 그 템플릿으로 새로운 웹창을 띄워 준다.

    • 열기
      • XML 형태로 저장된 Draw.io 파일을 열어준다.
    • 저장
      • Drow.io 의 Diagram 을 XML 로 저장해준다.
      • 여기서 Browser 에 따라 기능의 버그가 생긴다.
      • IE 7,8,9 : XML 형식이 바로 열린다. 따라서 따로 메뉴 파일에서 저장을 해줘야만 한다.
      • Chrome : XML 형식이 바로 열린다. 마우스 우클릭 하여 파일을 저장해 주어야 한다.
      • 사파리 : 저장시 XML 로 바로 저장된다 , MAC 환경이여서  그럴수도 있다 판단된다.
    • 다른 이름으로 저장
      • 파일 이름을 바꿀 수 있다는 것 외에는 저장과 동일하다.
    • 가져오기
      • 열기와 같다 XML 형식의 파일을 Draw.io 로 열어준다
    • 보내기
      • 여러가지 포멧으로 파일 저장이 가능
      • PNG , GIF , JPG , PDF , XML , SVG 형태가 가능함.
      • 재편집을 하고 싶다면 XML 밖에 안되므로 XML 형식은 반드시 필히 저장해 주어야 함.
      • 폭이나 넓이 , 보더 폭은 정해진다. 변경은 가능하나 오류가 발생하는 것으로 보인다.
      • 바탕화면 색은 고를 수 있으나 , HTML 색상표를 그대로 입력해야 해서 귀찮다.. 쓰기 힘들 듯 보인다.
    • 삽입
      • 현재 XML 소스를 변경 할 수 있다 
      • 근데 솔직히 뭐 하는 짓인지 잘 모르겠다. 설명서가 필요할 듯
    • 편집
      • 현재 XML 소스를 직접 수정 가능하다.
      • 근데 솔직히 뭐하는짓인지 잘 모르겠다...
    • 추가 
      • 좌측의 Drag & Drop 할 수 있는 Object 종류를 선택할 수 있다.
      • 다 보이게 되면 쓰기 불편함으로 만들어진 기능으로 보인다.
    • 플러그인
      • 플러그인 URL 을 적용하면 되는듯 보이는데.. 뭘 추가할 수있는지는.. 잘 모르겠음.
    • 페이지 셋업
      • 페이지 크기 조정 및 가로세로 선택 가능
    • 프린트
      • 인쇄 기능 , 미리보기 가능 
  • 편집 / 뷰
    • 기본적인 편집 기능 과 , 하이퍼 링크 기능이 조합 되어 있다.
    • 뷰 는 브라우저 상에 보여지는 크기를 설정한다.
  • 포멧
    • Object 의 모양 및 색상 등 조정
  • 문자
    • Object 안의 Text 의 UI 조정
  • 옵션
    • Draw.io 의 환경설정 기능
  • 도움,언어
    • 일반적인 도움말과 언어 설정
여기까지가 일반적인 메뉴  기능이다.

오픈된 뮤료 툴 치고는 기본적인 기능들이 다 갖춰져 있다 하겠다.

기본 기능은 Drag & Drop 으로 이루어진 Diagram 그리는 것이 전부이다.

Detail 한 기능들이 있으나 여기서는 생략한다.

그리고 써보면 바로 알 수 있는 기능이여서 설명은 그다지 필요 없을 것으로 보인다


2013년 7월 18일 목요일

C# Study - WPF 입문

이제부터 C# Study 를 등록한다.

C# Study 교재는 Microsoft 공식 지정 학습서 Visual C# 2008 로 진행한다.

툴은 Microsoft Visual Studio 2012 로 진행한다.

학습서는 2008 이고 툴은 2012 이기 때문에 어느정도 차이가 있다.

그런 점을 가만해서 올리도록 하겠다

1. C# 입문 소감.

C# 입문 소감이 어떻냐고 묻는다면 , 그보다 Visual Studio 2012 에 대한 이야기를..

아니 Visual Studio 자체에 대해 이야기 하고 싶다.

전 회사에서 Java 로만 3년 이상 근무했던 나로서는 Eclipse 만 주구장창 써왔는데..

Visual Studio... 이건 정말 사용하기 편하고 UI 구성도 깔끔한 Tool. 게다가

Eclipse 의 유리알 같은 몸 처럼 사망할 일도 없으니 , 어찌 아니 좋단 말인가..

Visual Studio 2012 는 Windows 8을 기반으로 디자인 된거라 ,

더 심플한 느낌을 준다.


2. WPF 입문 소감 

 전 회사에서는 UI를 만들기 위해서 Swing 을 써왔다.. Swing 을...

 이게 얼마나 비효율적이 였는지에 대해 뼈저리게 느끼게 됐다.

 각 컴포넌트의 좌표를 수정하고 , UI 꾸미고 하는데 들였던 그 쓸데없이 많은

 시간소비..하아.. 생각만해도 끔찍하다..

 그에 비해 WPF 는 천국에 다름없다.. 능숙해 진다면 간단한 프로그램 만드는데

 UI만 따지자면 반나절도 안걸릴 분량이다. 대단하다. 짝짝짝

 Visual Studio 2012 다. 소스코드로도 간격 및 레이아웃을 잡을 수 있지만.
 디자인 에디터가 제공되어 있어 Drag 로도 얼마든지 가능하다.

 크기조정 역시 마찬가지 쉽게 할 수 있다.


 이것이 소스 부분인데 , 필요한 부분만 추가 할 수 있게끔 정리가 잘되어 있다.

 결과 화면

이제 소스를 살펴보면 XAML(XML 형태) 로 이루어져 있어서 손쉽게 수정이 가능하다.
물론 디자인으로 하는게 더 직관적이여서 손댈 일은 많지 않다.




이 부분은 클릭했을시 MessageBox 를 띄우기 위해서 추가한 부분이다.

Visual 2008 과 달라진 부분은 문법 부분이다.

교재에서 2008 예제를 보게되면

MessageBox("Hello" + userName.Text);

라고 되어 있으나 , 2012에서는 이것을 좀더 구체화 시킨듯 하다.

해서, 

MessageBox.Show("Hello " + UserName.Text);

라고 수정해줘야 무리 없이 실행된다.

이런 다른 부분은 기재해 나가면서 고쳐 가겠다.


2013년 5월 18일 토요일

컴퓨터 프로그램의 구조와 해석 - 마법사 책 구매하다.

MIT 컴퓨터과학과의 입문서 라고 하는 이 마법사책을

오늘 구매했다.

예전에도 물론 본적은 있으나, 무슨 소린지 못알아 듣겠고 , 2권으로 이루어진

엄청난 양을 독파할 자신이 없어 포기했었드랬다.

물론, 지금도 독파하긴 힘들겠지만. 조금씩 노력해보기 위해 샀다.

더불어 이 책은 , 연습문제가 상당히 많으므로

정리하는 차원에서 블로그에 내용과 연습문제를 정리하도록 하자.

조금씩 정리해놓으면 자산이 되리니....










어디 한번 책피고 공부해보실까~