세상을 뒤흔든 프로그래머들의 비밀
국내도서>컴퓨터/인터넷
저자 : 에드 번즈(Ed Burns) / 김도균역
출판 : 정보문화사 2010.02.16
상세보기




 이 책은 IT 계에 한 획을 그은 최고의 기술 전문가, 소프트웨어 교육 전문가들, 소프트웨어 개발의 고수들을 만나 비기술적 자질, 기술적 자질, 비즈니스, 개인적인 부분(가족과의 생활 같은) 등에 대해 인터뷰 한 내용을 엮은 책이다.


 그 인물들을 리스트 하자면..


 스프링 프레임워크의 창시자 - 로드 존슨, 

 관점 지향 프로그래밍(AOP)의 선구자 - 아드리안 콜리어,

 가장 인기 있는 자바 팟캐스트 'Java Posse' 운영자 - 토 노르비, 조 눅솔, 칼 퀸, 딕 월,

 MS 인터넷 익스플로러 리드 아키텍트 - 크리스 윌슨,

 ASP.NET 및 AJAX 아키텍트 = 닉힐 코타리,

 가장 효율적인 자바 프로그래머이자 The Bile Blog 운영자 - 하니 슐레이만,

 자바의 아버지 - 제임스 고슬링,

 지속 통합 도구 헛슨(Hudson) 고안자 - 코스케 가와구찌,

 세계적인 프로그래밍 베스트셀러 저자 - 허브 쉴트,

 서버사이드닷컴 창립자 - 플로이드 마리네스쿠,

 실용주의 프로그래밍의 창시자 - 앤디 헌트,

 객체 지향 소프트웨어의 선구자 - 데이브 토머스,

 PayPal의 창업자 - 맥스 레브친, 리보 미차렉

 프로그래머들의 록스타 - 위어드 알 얀코빅


 헐.. 각자를 소개한 글만 보면, 당장 읽고 싶어지는 책이다. 


 그치만, 다 읽고 느낀점은 살짝 다른데.. 한마디로 정리하자면, '좀 지루했지만, 읽어 볼 만한 책이다'.


 이 책에 나오는 대부분 개발자들의 공통적인 습관이나 행동들이 그러한데, 우선 각자만의 '정보'를 분류하는 카테고리가 있고 '정보를 습득'하고 '분별'하는 프로세스가 있다는 것이다. 그리고, 도구를 사용함에 있어 얼마만큼 자신에게 맞도록 커스터마이징 하여 쓰는가에 대해 생산성과 연결하여 향상 시킨다/ 별 상관 없다라는 내용은 의견이 분분하지만, 모두가 각자 자신만의 셋팅이 있다는 점. (결국 상관 없다고 생각해도 자신은 자신만의 셋팅이 존재). 또, 대부분의 개발자가 집에서도 일을 하는 경우가 많으며 온통 머리속이 일에 꽉 차있는 경우가 많다는 것이다. 그리고 좋아하지 않는 일, 열정이 불타오르게 되는 일이 아니면 하지 않는다고 한다. 게다가 자식이 IT를 한다면? 이라는 질문에 어떤 개발자는 이렇게 말한다. "아들이 IT하겠다고 하면 좋을 것 같다. 그 이유는 지적인 도전에 대한 동경이라 볼 수 있고, 그것은 역경에 대비할 수 있는 준비가 될 것이다." 자신의 일에 왠만한 자부심이 없다면, 또 환경적으로(사회적) 받쳐주지 않는다면 자식의 직업으로 이토록 강추할 수 있을까? 싶었고 이런 부분은 좀 감명 받았다. (여러모로 부럽게 느껴지는 부분이 많았다)


 그간, RSS 피드를 제대로 활용 해 본적이 없다. 한국 유명 포털 N사, D사에서 뿌려대는 여러가지 기사, 그리고 Twitter에서 팔로우 하고 있는 분들의 글.. 정도로만 보다보니, 흥미로운 글에만 시선이 가고 세상이 어떻게 돌아가는지 무슨 기술이 나오고 지는지 등등.. 무관심하게 지내오던 습관을 좀 바꿔보고 정보를 습득하고 체화시키는 나만의 프로세스를 만들기 위해 이 책을 접고 바로 Google Reader 를 활성화했다. 또, 어떤 문제를 해결하면서 흔히 말하는 삽질, 꼼수를 부리는데.. 사실 쑥스럽지만, 나도 그런 것에 익숙하고 그런 것들이 당연하게 여겨왔던 게 사실이다. 이제부터라도 정도를 걷기 위해 노력 해 보려한다. "아무리 생각해도 정도를 걷기가 너무나 힘들거라는 결론이 나오면 무언가 잘못 된 것입니다. 정도라 함은 그것이 쉽고 또 자연스럽기 때문입니다." 버그를 수정하는 작업의 난이도가 높아질 수록 더욱 더 무언가 배울 수 있다고 여기는 그런 자세는 정말 배우고 싶다. "정말 어려운 것들은 그것들로부터 무언가를 배울 수 있다는 것인데, 그게 바로 목표입니다."


 처음엔 단순한 호기심에 이 책을 집었는데.. 내용도 길고, 모르는 내용이 워낙 많아서인지 그리 쉽게 읽혀지진 않았다. 하지만, 몇가지 되새길 필요가 있는 것들이 있는데 그 점이 좋았다. 

'Books > 컴퓨터, 인터넷' 카테고리의 다른 글

세상을 뒤흔든 프로그래머들의 비밀  (4) 2012.07.29
Posted by Min-gu, Kim
Unity Engine2012.07.26 18:44

이번 포스팅은 정말 간단한 내용이 되겠네요.


Missing Prefab 복구!!


Unity3D 로 프로젝트를 진행하면서, Prefab 을 많이 만들어서 사용하게 됩니다. (저만 그런 건 아니겠죠?)


제 경우에는 재사용성을 고려해서.. 혹은, 다른 Scene으로 복사하려는 목적으로.. 혹은 Package Import, Export 순으로 다른 프로젝트로 옮길때.. 등등 Prefab 을 만들었다가 다시 Project 뷰에서 Prefab 을 제거하는 경우가 생기더라고요.


헌데 이렇게 연결 된 Prefab 을 삭제하고 나면 Hierarchy 뷰에 있는 GameObject(Prefab 과 연결 되 있던) 가 Prefab 을 Missing 했다면서 빨간색으로 변하게 됩니다. ㅠ.ㅠ 



신경 안쓰고 넘길 수도 있지만, 저는 이게 너무나도 싫어서~(보기 흉해) 방법을 좀 찾아봤습니다. 당연히, Inspector 뷰에서 처리할 수 있는 줄 알았는데 도저히 못찾겠더라고요.


Google 검색 키워드도 제대로 타이핑 할 수 없어 해메다가.. 정말 찾기 쉬운 곳에 해결 방법이 있었습니다. (ㅠㅠ)

바로 GameObject 메뉴에 있더군요.




해결방법!


Missing GameObject 를 Hierarchy 에서 선택 하신 뒤, GameObject > Break Prefab Instance 를 클릭 하면 짜잔~ 정상(White color)으

로 돌아옵니다. 더이상 Missing GameObject 가 아니게 됩니다. 



Posted by Min-gu, Kim
Books/문학(소설)2012.07.22 09:54


 
시간을 파는 상점
국내도서>소설
저자 : 김선영
출판 : 자음과모음 2012.04.10
상세보기


 자음과 모음 출판사에서 1주년 기념으로 청소년문학상을 개최. 당선 된 작품이다.

 e-book 으로도 출간 되 뉴아이패드로 처음 읽게 된 책이기도 하다. 자주 활용해야지~


 '시간을 파는 상점' 은  다소 판타지적 요소를 생각나게 하는 제목과는 달리, 온조라는 소녀가 시간을 파는 상점을 오픈하면서 겪는 에피소드를 소개한 내용의 소설이다. 


 '엥? 시간을 파는 상점을 오픈한다는 점이 판타지적이지 않은가? '


 빵집 아르바이트 도중 점장의 비도덕적 행위 (오늘 만든 빵만 판매합니다. 라고 써 놓고 재고를 다음날에도 판매하는..)에 참다못해 한 마디 하고 아르바이트를 그만 두거나, 좋은 사람들과 좋은 아르바이트 자리를 구해 일 할때는 코피가 나는 등 체력적인 문제로 인해 그만두거나.. 등등 몇 번의 아르바이트를 짧은 시간에 끝내고 온조는 인터넷으로 오프라인 카페를 개설한다. 시간을 파는 상점이다. '자신의 시간을 할애하여 의뢰받은 일을 해 준다' 즉 발칙한 상상으로 만들어 낸 아르바이트 인 셈이다.


 몇가지 기억에 남는 특징이라면 이렇다.


 청소년문학상 수상작. 이라는 타이틀이라 그런지 내 어휘력이 받져주지 않는 생소하거나 가물가물한 단어가 많이 나온다. 예를 들면, '가붓하다' ,'새뜻하다', '송연해지다', '시르죽은', '주억거리다', 스사악스사악', '허위허위', '벙싯한', '꺼떡꺼떡'.... 뭐 내가 청소년을 거쳐오지 않는 것 같이 부끄러운 어휘력임을 되새겼다고 할까? 무튼, 읽어 내는 데 문제는 없지만 다 읽고 몇가지 메모 해 둔 어휘를 찾아봐야 했다. 또, 그럼에도 이 소설은 처음부터 끝까지 한 순간에 내리 읽을 수 있을 정도로 엄청나게 잘 읽힌다. 단순히 에피스드가 재밌고 줄거리가 좋아서 가능한 부분은 아닌 것 같다. 단어 하나하나, 문장 하나하나를 저자가 신경 써서 집필하였기 때문 아닐까? 


 시간에 대해 어떻게 생각하고 청소년에게 훈계하려는 작품이 아니라, 청소년에게 다소 무겁거나 너무 철학적일 수 있는 '시간'에 대해 고찰하고 각자가 받아들이는 바에 대해 정의 해 볼 수 있도록 배려한 작품인 것 같다.

'Books > 문학(소설)' 카테고리의 다른 글

개를 훔치는 완벽한 방법  (2) 2012.08.10
시간을 파는 상점  (4) 2012.07.22
공중그네  (2) 2012.07.13
빅 픽처  (0) 2010.11.29
Posted by Min-gu, Kim
Books/문학(소설)2012.07.13 10:06


 
공중그네 (양장)
국내도서>소설
저자 : 오쿠다 히데오(Hideo Okuda) / 이영미역
출판 : 은행나무 2005.01.15
상세보기



 단편인데 장편인 소설이다. 다섯 개의 에피소드(고슴도치, 공중그네, 장인의 가발, 3루수, 여류작가) 로 되 있지만 모두 정신과 의사 이라부와 섹시한 간호사 마유미가 엮인 이야기이기 때문이다.


 정신과 의사 이라부는 그를 찾아 온 환자에게 비타민이 부족해서 그런다며 비타민 주사를 놓는다. 황당하기 그지 없는 비타민 주사 한 방에 환자들은 당황스러워 하고 뭐 이런 곳이 있나 싶다. 그들은 각자 다른 고민으로 이라부를 찾지만, 치료는 단 하나. 사계절 내내 섹시한 의상을 입고 있는 마유미 간호사의 비타민 주사. 지금 생각 해 보니, 각자 다른 고민이지만 근본적인 이유는 심리적인 이유였기 때문에 모두 같은 치료를 한 것이 아닌가 싶다.


 각자의 고민거리를 들어주고 해결책이나 조언을 주는 것이 아니다. 되려 그들의 고민거리는 안중에 없고, 그들의 하는 일에 관심을 보이며 그들 보다 더 적극적으로 임한다. 야쿠자의 중간보스가 찾아 왔을때는 야쿠자로, 공중그네를 타는 서커스단원이 찾아 왔을때는 육중한 그의 몸매로 공중그네를 타는 서커스 단원이, 장인의 가발만 보면 웃음이 나는 친구가 찾아 왔을때는 5살 꼬마처럼 장인의 가발을 벗겨버리는 장난을 치며, 야구선수가 찾아 왔을때는 야구에 심취하고, 여류작가가 찾아 왔을때는 본인도 작가가 되고 싶다며 출판사를 찾아 본인의 글을 건넨다.


 황당하기 그지 없는 이라부의 행동에 환자들은 거부감이 들지만, 본인들의 일에 본인보다 더 적극적으로 임하고 아이같은 순수함으로 접근해서인지 조금씩 이라부에게 동화된다. 그리고 그들은 어떠한 치료법도 건네 받지 않았지만(아! 비타민 주사 하나) 더 이상 환자가 아닌 모습으로 이라부의 정신과를 나가게 된다. 바로 환자들의 일에 적극적으로 뛰어들어 아이같은 순수함과 호기심으로 접근하는 이라부의 모습이 그들 각자의 문제를 다른 시각으로 접근하고 관찰할 수 있게 해 준 것이다. 


 남들의 시선을 의식하고 크고 작은 강박증을 하나쯤은 갖고 있는 우리들에게 유희적 인간인 이라부를 통해 건네는 메시지는 보다 긍정적으로! 즐기며 스트레스를 날려버리라는 것 같다. 


 마치 이런 말을 들은 것 같다. "인생이 별거야? 즐겨~"


'Books > 문학(소설)' 카테고리의 다른 글

개를 훔치는 완벽한 방법  (2) 2012.08.10
시간을 파는 상점  (4) 2012.07.22
공중그네  (2) 2012.07.13
빅 픽처  (0) 2010.11.29
Posted by Min-gu, Kim


스무살에 배웠더라면 변했을 것들
국내도서>자기계발
저자 : 티나 실리그(Tina Lynn Seelig) / 김소희역
출판 : 엘도라도 2012.06.04
상세보기


 스텐포드대 미래변화 보고서


 이 책은 [스무살에 알았더라면 좋았을 것들<What I Wish I Knew When I was 20> : 스탠포드대 미래인생 보고서] 를 집필한 티나 실리그의 후속작이다. 아쉽게도 전 작을 읽지 못했지만, 스탠포드대 명강의를 볼 수 있다는 말에 현혹 되 이 책을 구매하게 됐다.


 책 내용과 제목-스무살 혹은, 20대에 무엇을 했더라면 지금의 내 인생이 달라져 있을거라는-은 살짝 납득이 가지 않는다. (전작이 얼만큼 국내에서 인기가 있었는지 모르겠지만, 국내 출판사에서 비슷한 제목으로 전작의 후광을 좀 받으려던 것이 아닐까 싶다.) 왜냐하면, 책 내용은 20대에 무엇을 해야 한다. 그래야 자신의 인생이 달라진다. 이런 내용이 아니다. 바로 "창의성"에 관한 내용이다. 한 단어로 표현하면 "창의성"에 관한 책이라 하겠고, 좀 더 풀자면 창의적인 人이 되게 하려는 훈련에 관한 내용이다. 창의성에 대한 훈련이 20대에 다져진다면 인생이 변했을 것이다. 라고까지 확장한다면 할 말 없지만...


 문제를 해결 할 수 있는 정확한 질문(프레이밍)을 찾아야 한다고 말한다. 즉, 어떠한 난제도 "정확한 문제"를 알게 되야 해결 할 수 있다는 말인데, 프로그래밍을 업으로 삼고 있는 필자에겐 공감 만빵이다. 또한, "왜"라는 질문을 던져 다시 보기(리프레이밍)를 강조한다. 가령 책에서 든 예로, 누군가에게 다리를 지어달라고 하면, 다리를 짓기 전에 "왜 다리를 지어야 하나?" 라고 물어봐야 한다는 것이다. 강의 건너편으로 가기 위해 다리가 필요한 것이라면, 구지 다리가 아니라도 강을 건너는 많은 방법으로 해결 할 수 있다는 것이다. 즉, "왜"라는 물음을 던짐으로 프레임을 더 크게 열 수 있다는 것이다.


 "실패는 데이터다." 아인슈타인이 만번의 실패 끝에 전구에 들어가는 적합한 소재를 찾았을 때 "나는 만 번의 실패를 한게 아니다. 전구에 적합하지 않은 만 가지의 소재를 발견한 것이다." 라는 말을 인용하여 소개한 이 내용은 많은 사람들의 실패에 관한 조언 중 가장 와 닿은 문구다. 실패를 두려워 말고 계속 도전하라고 말하는 가장 큰 근거가 될 수 있지 않을까? 실패한 만큼 발견한 것이니 말이다.


 이 외에도 여러가지 창의성을 훈련하는 조언들이 있는데, 사실 집중해서 읽지 않으면 뭔 말인지 도통 모르겠는게 대부분이다. 하지만, 다음 번에 읽고 싶은 책(게임화 관련 서적)이 생기게 된 것은 값진 결과인 것 같다. (중간에 게임화(Game + fication) 에 관한 언급이 있는데, 흥미가 생겨서 게임화 관련 된 서적을 찾아서 읽어볼 생각이 들었다.)

'Books > 자기계발 학습' 카테고리의 다른 글

하루 15분 정리의 힘  (2) 2012.10.09
스무살에 배웠더라면 변했을 것들  (2) 2012.07.04
민도식의 자기경영 콘서트  (0) 2010.11.12
거인과 싸우는 법  (0) 2010.11.05
서른살 직장인 책읽기를 배우다  (0) 2010.10.28
Posted by Min-gu, Kim
Unity Engine2012.07.03 18:22

Ray Cast 란, 3차원 공간에서 어느 한 점(시작점)에서 Ray 를 정해진 방향(direction vector)으로 쏴 Ray 와 충돌 되는 객체를 구하는 방법을 말합니다. 


Unity3D 에서는 Ray Cast 를 위한 몇가지 유용한 클래스와 struct, 메소드 등을 제공합니다. 

샘플 구현에 필요한 몇가지를 우선 소개 하자면,


Ray (struct)  > Unity Script Reference 참고

Ray Cast를 위한 재료 중 가장 중요한 Ray 의 정보를 담습니다.

origin : Ray 가 시작되는 지점을 설정하고,

direction : Ray 가 시작 지점(origin)에서 쏘여지는 방향을 설정합니다.


Physics.Raycast (Physics class, Raycast Method)  > Unity Script Reference 참고

Ray Cast 를 실행하여 Ray 와 객체가 충돌하는 지 체크하는 메소드입니다.

객체와 충돌 되는 경우 true 값을 반환합니다. 


RaycastHit (struct)  > Unity Script Reference 참고

Physics.Raycast 메서드의 파라미터로 값을 할당(out)하며 Ray 에 충돌 된 객체의 정보를 담습니다.



그럼, 직접 샘플을 통해 Ray Cast 를 구현 해 보겠습니다. Ray Cast는 다양한 방법으로 이용 될 수 있겠지만, 우선 저는 스크린에서 마우스 버튼이 Up 될 때 마다 그 지점에서 Ray를 쏴 객체와 충돌하는지 체크하는 샘플로 Ray Cast 구현 방법을 설명 해 보겠습니다.



1. Ray 객체 생성

- Mouse 가 Up 될 때마다 실행 되야 하기 때문에 Input.GetMouseButtonUp() 를 체크하여 그 때 마다 Ray 객체를 생성합니다.

public Camera MainCamera;
    
// Update is called once per frame
void Update () {

    if (Input.GetMouseButtonUp(0)) {
        // Ray 객체 생성
        Ray ray = MainCamera.ScreenPointToRay(Input.mousePosition);

        // rayCasting 실행
        rayCasting(ray);
    }
}


- MainCamera (Inspector 상에서 할당했습니다.) 의 ScreenPointToRay 메서드는 Screen 상에서의 좌표를 World space 상에서의 좌표로 변환하여 시작점(origin)으로 설정하고, direction 을 카메라가 비추는 방향으로 설정 된 Ray 객체를 반환합니다.



2. Ray Cast 실행

void rayCasting(Ray ray) {
    RaycastHit hitObj;
    if (Physics.Raycast(ray, out hitObj, Mathf.Infinity)) {
        if (hitObj.transform.tag.Equals("Cube")) {
            CubeScript cubeScript = hitObj.transform.GetComponent<CubeScript>();
            if (null != cubeScript) {
                cubeScript.Hit();
            }
        }
    }
}


- Physics.Raycast 메서드를 실행하면, Ray 객체의 origin에서 direction 으로 Ray 를 쏴 줍니다. 그리고, 충돌 되는 객체가 있으면 true 를 반환하고 RaycastHit 객체를 out 키워드를 통해 파라미터로 던져 주면 충돌 된 객체의 정보를 담아서 반환 해 줍니다. 


- 메서드 실행 시 Ray의 길이를 float 값으로 받습니다. 이 값은 Ray 가 얼마만큼(길이만큼) 쏴 지도록 설정하는 것인데, Mathf.Infinity를 할당하면 무한대로 쏴서 체크합니다.



3. Ray 에 맞은 객체 처리 구현

- Cube 를 Prefab 으로 만든 뒤에 Tag에 "Cube"라고 입력 하고, Cube 객체를 컨트롤 할 CubeScript 를 컴포넌트로 추가했습니다.

- CubeScript 에서 Hit 메소드를 만들어 Ray에 맞았을 경우 호출 하도록 합니다.

float angle = Random.Range(270, 360);
this.gameObject.transform.Rotate(Time.deltaTime * angle * Vector3.one);





 Sample Project


RaycastingSample.7z





Sample Video



Posted by Min-gu, Kim

티스토리 툴바