Unity 버전관리와 meta 파일

Unity 버전관리를 위해서는 EditorSetting에서 version control을 meta로 설정해야 합니다.
Asset server도 설정할 수 있지만 이것에 대해서는 잘 모르니깐 넘어가고..

Meta로 변경하게 되면 Asset 폴더 내부의 모든 파일/폴더에는 .meta파일이 생성되는데
이 파일을 svn에 같이 올려야지만
정상적인 버전 관리가 가능합니다.

Unity는 실행 할 때 Library 폴더를 만들고 거기에 meta 정보를 생성합니다.
Library 폴더는 Unity가 실행할 때 생성하며 svn에 올리지 않습니다.

만일.. EditorSetting에서 version control을 설정하지 않고 svn에 올린 경우에 다른 사람이
SVN에서 새로 받아서 Unity를 실행하게 되면
모든 연결 정보(Script, Material..)가 사라져서 제대로 보이지 않습니다.

이 경우에는 올린 사람의 Library 폴더가 있어야 복구할 수 있습니다.
(연결 정보가 제대로 들어가있는 Library 폴더)

Library 폴더 내부에 있는 meta에 연결 정보가 제대로 있다면 Library폴더를
복사해서 적용할 경우 제대로 보입니다.

연결 정보가 정상적임을 확인하였다면 EditorSetting에서 VersionControl을
Meta로 설정하여 .meta파일을 생성하고 SVN에 올려 제대로 관리할 수 있을 것입니다.

[리뷰] 자바 개발자를 위한 함수형 프로그래밍

자바 개발자를 위한 함수형 프로그래밍(한빛 소프트)



해커와 화가를 읽으면서 Lisp이라는 함수형 프로그래밍언어가 좋다는 이야기를 들었고,
그뒤로 스칼라, 얼랭, 클로저… 다양한 함수형 프로그래밍 언어에 관한 책이 나오는 것을 보았다.


다양한 언어가 개발되고, 책이 번역되어 나오고 있는 상황이어서, 그저그런 언어들중 하나인가보다 생각했고,
C++,Java같은 객체 지향(OOP)언어도 제대로 못하고 있는데 무슨 함수형 프로그래밍이냐?
배운다고 해도 어디에 쓸수있을까? OOP나 잘하자.. 라는 생각만 하고 있었다.

이 책을 처음 봤을때도 역시 같은 생각이었다.

그래도 조금더 호기심을 가지고 책에 대한 설명을 읽어 보았더니,
확 땡기는 문구가 있어서 책을 읽을 수 있었다.
“함수형 프로그래밍 기법을 익힌 개발자와 그렇지 않은 
개발자가 작성하는 코드의 품질은 완전히 다르다”  - 역자, 임백준

이책에서 도대체 무엇을 설명하기에 이렇게 말할 수 있는것인가?
나도 함수형 프로그래밍을 배우면 OOP로 작성하는 코드의 품질도 좋아 질 수 있는간가?
C++도 lamda를 지원하기 시작했고, Java 8 부터는 클러저와 람다 기능이 포함된다고 한다니..
이제부터라도 조금씩 봐두면 더 좋은 품질의 코드를 작성할 수 있지 않을까? 는 생각으로 책을 읽었다.

책을 읽고 난 뒤의 결론은, 역시 뭐든지 한번에 얻을 수 있는 것은 없었다.

어려워서 이해 안되는 내용들도 있었지만, 상당히 괜찮은 내용들로 생각의 꺼리들을 던져줬다.

이 책은 특정 함수형 프로그래밍 언어에 대한 개론서나 문법 설명같은 책이 아니다.
OOP개발자에게 함수형 프로그래밍이란 무엇인가, 어떻게 하는가에 대해서 설명한 앏은 책이다.
(E-book이기 때문에 두깨를 알 수는 없지만 100페이지도 안하는걸 보면 분명 앏은 책일것이다)

책은 Java를 기준으로 설명한다. 그렇다고 자바에서의 클로저와 람다 사용법을 설명하지는 않는다.
지금의 자바에서 함수형 프로그래밍을 어떻게 할 수 있는지에 관한 설명을 한다.

책 설명에서는 Java를 몰라도 OOP에 대한 개념만 있으면 코드를 이해하는데 무리없다고 했지만,
Java의 제네릭과 익명 함수에 대해서만큼은 어느 정도 개념이 잡혀 있어야 책을 읽는데 무리가 없을 것이라 생각된다.
안그러면 저처럼 음음음.. 이런 내용이고, 대략 이렇게 흐름을 잡아가겠구나..할 수 밖에 없을것이다.

개인적으로 책에서 마음에 들었던 부분은 객체 지향 프로그래밍을 할때
함수적 아이디어를 어떻게 적용할 지에 관해 설명하는 5장 더 나은 객체지향 프로그래밍 챕터이다.
객체 지향 프로그래밍으로 프로그래밍을 하고 있기 때문에 함수형 프로그래밍 자체보다는 객체 지향에 적용할 수 있는
함수적 아이디어를 알려주었기 때문이라 생각된다. 객체 지향 프로그래밍에 대해 가지고 있던 생각들을
다시 한번 점검해볼 수 있어서 아주 괜찮았다. 이 내용이 더 많이 있었으면 좋겠다는 생각도 들었다.

그 외에도 책에서는, 동시성 문제, 더 낳은 타입 설계, 리스트와 맵, 함수적 동시성.. 

다양한 함수형 프로그래밍 개념을 설명해주고 있다. 


OOP개발자가 함수형 프로그래밍언어에 관심을 가지고 있다면, 

가장 우선적으로 이것을 읽고 다른 언어책을 읽어보기를 권하고 싶다. 


그리고, OOP개발자이지만, 함수형 프로그래밍에 대해서 아무런 관심이 없는 

개발자에게는 책에 나와있는 내용을 권하고 싶다.

“앞으로 10년 이내에 새롭게 배울 언어는 모두 클로저로부터 

지대한 영향을 받은 언어일 거라는 사실에 내기를 걸어도 좋다”

이정도의 자신감이라니, 당장 클로저를 배워둬야 겠다는 생각이 들었다.


책 뒷부분에 나오는 용어 정리는 적당히 알고 있던 용어들에 대해서 명확한 정의를 해주어서 좋았고,
각 챕터마다 연습문제를 주어서 독자에게 연습을 시키려고 하지만.. 풀어보지는 못했다.



VBA를 이용해서 Visual Studio에 GUID 추가하기

예전에 NDC 발표자료중 "M2 프로젝트의 오류 보고 시스템"에서 asset에 GUID/UUID를 남겨서 파일의 라인수가 변해도 오류를 추적할 수 있다는 내용을 보았었다.

팀내에서 오류(assert)를 관리하는 작업을 하면서 우리도 GUID를 코드에 넣어 놓으면, 라인수와 관계없이 GUID로 추적하면 좋겠다는 생각이 들어서 GUID를 간편하게 추가할 수 있는 방법을 찾아보았다. 
개발자가 GUID생성에 관심을 가지지 않아도, 별다른 비용없이도 GUID가 생성되어 출력된다면 좋겠다는 생각이 들어서....

Visual Studio에서 작업을 하기 때문에 VBA를 이용하는 쪽으로 방향을 잡았다.
c++에서.. 다른 방법이 있는지는 모르겠고(아시는분은 알려주세요) 
VBA를 이용하면 GUID를 생성해서 현재 커서 위치에 추가하는게 가능할꺼 같았다.

역시나.. 구글님께 검색을 해본 결과 비슷한것이 있어서 참고..

http://www.w3courses.com/source-code-creating-guid-vba 


포스팅된 글보다 댓글에 달린 더 심플한 방법을 적용해봤더니 잘되어서 댓글의 방식을 적용했다.


Public Module GUID
  Public Sub MakeGuid()
    Dim guid As String
    guid = Mid$(CreateObject("Scriptlet.TypeLib").GUID, 2, 36)

    Dim sel as TextSelection
    sel = DTE.ActiveDocument.Selection
    sel.Text = Chr(34) + guid + Chr(34)
  End Sub
End Module

이렇게 하고.. Visual Studio에서 단축키를 지정하면, 단축키가 눌릴때의 커서 위치로 GUID가 생성되어 추가된다.

'프로그래밍' 카테고리의 다른 글

유니티커스텀 에디터  (0) 2013.03.27
Unity 버전관리와 meta 파일  (0) 2013.02.12
yoda conditions(요다 표현식)  (0) 2012.09.22
기본 생성자와 생성자 오버로딩  (0) 2012.09.08
eclipse에 pydev 설정 에러 처리  (0) 2012.06.18

[리뷰] 애자일 회고

애자일 회고 책을 읽었습니다.



애자일 회고

저자
에스더 더비 지음
출판사
인사이트 | 2008-01-20 출간
카테고리
컴퓨터/IT
책소개
회고, 즐겁게 돌이켜보고, 기민하게 해결하고, 강점을 살려주는 ...
가격비교


괜찮은 내용이라 팀내 공유를 위해서 간단히 소개형식의 발표자료를 만들었습니다.

지속적으로 발전하는 팀이 되면 좋겠다는 생각이 되어서.. 



추가로, 이번 발표에서는 사람들의 흥미를 좀더 끌기위해서 Prezi를 이용해서 설명했습니다.


같은 내용으로 두가지를 만들어봤습니다.

발표하는 입장에서는 Prezi를 사용한 발표가 이야기를 진행하기 수월했습니다.


책속에서의 회고가 아니라 실제 회고를 진행해봐야겠습니다.

yoda conditions(요다 표현식)

새로운 프로그래밍 은어라는 글을 보고 yoda conditions라는 것을 처음 알았습니다.

yoda conditions에 관한 설명은 링크에 아주 자세히 설명되어있으니 그것을 보시는것이 좋을 듯합니다.


yoda conditions이 좋은건지, 안좋은건지를 떠나서 그런게 있다는것만 알고있었는데, 최근 회사 동료분이 yoda conditions을 사용하는것에 대해서 어떻게 생각하느냐 하는 말을 했을때 자세히 알고 있는 지식이 없어서 아무런 말도 할 수 없었습니다.


그분이 사용한 yoda conditions은 if - true에 대한것으로 

if( true == is_player ) 와 같은 식입니다.


yoda conditions이 그렇듯 is_player에 true를 assign하는 경우를 방지할 수 있을것입니다.

좀더 명확하게 알아서 설명해주고자 구글님께 요청하니 역시나 많이 문서들이 나왔습니다.


결론은 yoda conditions이 괜찮다는 글도 있고, 안좋다는 글도 있었습니다.


http://www.thesatya.com/blog/2012/08/

http://pushinginertia.com/2011/05/why-yoda-conditions-are-bad-and-usage-of-javas-final-keyword-is-good/


상황에 따라, 취향에 따라 다른가보다라며 넘어갔었지만, 좀더 적절한 근거가 있는것같습니다.

우선, 언어와 ide에 따라서 다양하겠지만 최근 대부분의 IDE는 

if( is_player = 6 ) 구문에서 컴파일 오류를 뱉어내게 됩니다. 


visual studio 2008에서는 경고수준 4(/W4)로 설정하게 되면 다음과 같은 warning이 납니다.

warning C4706: 조건식 내에 할당이 있습니다


warning을 컴파일 실패로 설정을 해놓으면 컴파일이 실패하겠지만, 

대부분의 경우 warning을 신경쓰지 않는다면 찾기 힘든 로직 버그를 만들어 내게 됩니다. 

이런경우라면 yoda conditions이 좋을 수도 있겠다는 생각을 했습니다.


다른 언어에서도 테스트를 하고자 visual studio c#에서 동일한 테스트를 진행했습니다.

c#에서는 if( is_player = 5 )에 대해서 컴파일 에러를 뱉어내게 됩니다.

error CS0029: 암시적으로 'int' 형식을 'bool' 형식으로 변환할 수 없습니다.


visual studio의 경우라면 비교를 할당으로 잘못입력한 구문은 충분히 컴파일 시점에서 

걸러질수있으니 yoda conditions을 사용하지 않아도 될것 같습니다.


yoda condition을 사용하지 말자는 블로그에서 가장 큰 문제점으로 들었던 것이 

어순 배열이 달라진다는 점이었는데 그것은 공감할 수 있었습니다. 


왼쪽에서 오른쪽으로 코드를 읽는다고 할때,

if( true == is_player)는 "만일 true인가 is_player는?" 처럼 이상한 해석을 하게됩니다. 


반면에 if( is_player == true)는 "만일 is_player가 true이면"과같이 

일반적인 영어의 해석을 따르게 되어 자연스럽게 느껴집니다.