근래 회사에서 개발하는 것들이 꽤 재미있는 부분이 많았다. 생각도 정리할 겸 이것저것 적어 보는걸로.


새롭게 개발하는 것들이... 기존의 기능을 유지하면서 새로운 기능을 덧붙여야 하는데...기능이 많아! 이런 일들이 꽤 생겼다.

코드의 재사용성은 최대한 높이면서 다른 기능과는 붙이기 좋게 만들어야 한다. 라는 결론을 지극히 당연한 결론이긴 하지만,

상세 구현과 구현을 위한 언어의 스펙을 활용하는 것에 관해서 동료인(그리고 고수인) L과 이야기를 많이 하게 되었다.

(기억이 좀 부정확해서 아직 헷갈리는 점이 좀 있다.)

평소에 생각했던 것과 이야기, 개발을 통해서 느낀 걸 좀 정리해 보면..


1. 싱글톤 사용.

디자인 패턴에 보면 매우 좋은 것으로 설명이 되어 있긴 한데, 실제 써보면 딱히 좋진 않다.

일단 생성 시점이 명확하지 않으며, 해제 또한 그렇다. 만약에 유닛 테스트 등을 적용하기에도 매우 좋지 않다.


결정적으로 싱글톤 패턴을 사용하면 코드의 커플링이 매우 높아진다. 이는 유지 보수를 매우 어렵게 만든다.


프로세스에 하나 정도 있는 것은 나쁘지 않다. 물론 딱 하나만.


싱글톤이 좋은 점은 딱 하나다. 개발할 때 생각없이 데이터를 넣고 쓰기 좋다는 것.


2. 출력 타입의 통일

중간 데이터로 파일을 생성하거나 결과물을 생성할 때는 하나의 포맷으로 출력하는 편이 좋다.

xml 또는 json이 매우 적합하다고 본다.


처음 결과물은 빈약할지라도 서드 파티의 사용으로 데이터 가공이 매우 쉽다.


3. 참조

클래스 내부에 다른 기능을 하는 클래스의 참조를 최대한 제거하는 게 바람직하다. 참조를 가지게 되면, 인터페이스를 가지며 콘크리트 객체를 직접적으로 가지지 않는다. 만약 클래스간의 순차적 실행이 필요하다면 이벤트(이 부분은 언어적 특성에 따라 달라질 수 있다)를 사용하는 것이 바람직하다.


4. 상속

모든 부분에 상속을 적용하는 것이 바람직한가? 사실상 코드 뎁스만 늘리는 것이 아닌가?

상속의 depth 는 제한할 필요가 있다. 무분별한 상속은 구조만 복잡하게 만들 뿐이며 큰 이득도 존재하지 않는다.

상속이 필요한 부분은 state machine의 형식을 가지는 기능(뭔가 애매한 설명이긴 한데 더 정리가 안 된다.)이 적합하다.

제한적으로 type확정이 필요한 클래스에 사용하면 좋다.(기능은 같지만, 타입 자체는 다르고 혼용하면 안되는 기능)


코드를 보면서 이야기 할 때는 뭔가 설명이 잘 되는데 코드 없이 글로만 정리를 하려니 꽤 어려운 듯 하다.

연휴를 맞아서..놀아야 하는데 집에서 도커를 만지작 거리고 있었다.

사실 계기는...요 근래 나와 다른 분야에서 일하는 K선배를 한두번 만날 일이 있었다.

대화 중 나온 이야기.


"윈도우 프로그래머는 게을러...도커 같은거 한번 배워놓으면 엄청나게 유용한데 클릭질에 너무 길들여져 있어."


꽤나 키배가 라이브로 벌어졌지만, 집에 온 뒤로 꽤나 인상깊었다.

사실 리눅스는 이것저걸 깔아보고 심도있게 써 본적은 없었다.

사실 우분투를 데탑으로 깔아서 대략 2주 정도 써 본적은 있었지만, 결국 포기했었다.


현재는 맥을 쓰긴 하지만, 사실 하드웨어의 완성도(요즘에는 XPS등도 좋지만, 2013년에 살땐 맥 정도의 하드웨어 완성도가 없었다. 삼성의 Series9 이 좋았지만 비싸기도했고...)를 보았을때 맥 만한게 없어서 쓰고 있다. 트랙패드가 꽤 편하기도 하고 말이지.(전체적으로 개발 환경을 보았을 때는 윈도우가 훨씬 좋다.)


그렇지 않아도 회사에서 베타 테스트를 하고 이런저런 일을 진행하다가, 개발 서버가 이것저것 분산되다 보니 현재 구조에 좀 한계가 있던 참이었다.


그것때문에 라즈베리 파이 3를 구매해서 라즈비안을 설치하고 도커를 시험삼아 가동해 보았다.

사용한 이미지는 이용하면서 그 편의성에 항상 감탄했던 jenkins로 했다.


2일 정도 이것저것 테스팅을 해 보고 느낀점은


장점


1. 깔끔하다. 이전의 apt-get, yum으로 대표되는 패키지 관리자가 있었지만, 뭔가 깔끔하지 않고 의존성이 꼬이면 개판되는 경우가 좀 있었는데.

그런 문제가 없다. 그냥 rm / rmi 명령 하나면 끝

2. 편하다. 내가 뭐 할 필요없이 호환되는 이미지만 받아서 시작하면 끝. 명령어에 필수적으로 알아야 하는 스위치 옵션이 적다.

아직 윈도우의 '클릭질' 에 비하면 불편하지만 이정도면 장족의 발전이라 할 수 있다.


단점


1. 하드웨어, 배포판을 좀 탄다. 문제가 발생하면 그냥 통상 에러 메시지만 던져주고 끝이라 하드웨어 문제라면 문제를 알아차리기가 꽤 힘들다.

나는 라즈베리파이위에 올려서 그런가 official 이미지라고 해서 받았는데 안되는 경우가 꽤 많았다. 대부분은 java가 rpi버전이 따로 있더라는 점.

2. 공간이 많이 필요하다. 개별의 컨테이너마다 os의 이미지부터 쌓아서 올리기 때문에 공간이 꽤나 많이 필요하다.

커스터마이징 하면 가능한 부분이지만 그렇게 되면 편의성에 손상이 좀 있어서 단점인듯.

3. 리눅스를 전혀 사용해 보지 않았다면 학습이 좀 필요하다.


단점이 하나 더 많긴 하지만, 실제 써본 바로는 배포에 있어서는 정말 좋았다.

하지만 라즈베리 파이에서는 매우 느렸다는건 함정.


회사에서는 윈도우 서버를 이용해야 하기에 사용하지 못할 것 같지만, 개인적으로 사용하기에는 정말 좋은 듯 하다.

다만 공간을 많이 사용하기에 전용 머신이 있어야 할 것같다.

남은 연휴동안 좀 더 열심히 삽질을 해 보고 후기를 더 추가할 예정(?)

11월 부터 일이 많아서 꽤 바쁘게 보냈다. 뭐 개발하면서 이것 저것 느낀것도 많아서 연말에 쉬면서 블로그에 차근차근 정리해볼 생각이다.


1. 버그 패치

이번에 베타를 하게 되면서, 버그 수정이 빈번하게 이루어졌는데, 아무래도 개발자 입장에서는 버그가 생기고, 크래시 리포트가 계속 오게 되면 팔리 패치하고 싶은 게 인지상정이다. 우선순위에서 낮으면 버그 패치도 일정을 정해서 하는 게 좋은데, 이게 의외로 조급함이 꽤 생기더라. 팀장님이 막지 않았으면 막 넣을 뻔 했음.


2. 엔진

게임 엔진을 계속 사용했는데...좀 애매한 점이 있다.

이상한 부분에서 크래시/오류가 계속 나는데, 엔진을 뜯어볼 수가 없으니 꽤 답답. 오류 원인은 추론 가능한데, 실제 확인할 수가 없으니 뭐...


3. 최적화

결국 메모리, CPU최적화가 의외로 생각과는 다른 부분에서 나는 경우가 있다.

코드에서 땜질하기 시작하면 결국 최적화라는게 물건너 가는 부분이 많더라 하는 걸 느낌.

의외의 부분에서 나는 경우에는 일반적으로 Update로직에서 타고 들어가다 찾는 경우가 많았음.

그리고 VS 프로파일러 짱좋음.


4. 테스트 기반

게임 프로그래밍에서 이게 좀 애매한데, 일단 모든 테스트 방법론을 쓰기가 어렵다.

최초 개발 단계에서 QA를 상시 돌릴수도 없는 일이고...

개별 함수들이 변경되지 않는다는 보장이 있는 게 아니기 때문에 유닛 테스트를 사용하기도 쉽지 않다.

(심지어 유닛 테스트 프레임워크가 있음에도!)

런타임에 최대한 편하게 테스트가 가능하도록 하는 것이 좋은 듯 하다.


OSX 에서 유니티를 사용해서 개발하기 위해서는 현재까지 Monodevelop를 사용하는 방법밖에 없었다.

하지만 한글이 지원되지 않고(자모가 분리된다.) 왠지 c#은 Visual Studio로 개발해야 할 것 같은 그런 느낌이 좀 있다. ㅋㅋ


패러럴즈를 설치하여 개발하는 방법도 있으나, 방법이 매우 번거롭고, 그럴거면 윈도우 쓰지 뭐하러 맥을 쓰는가... 하는 마음에,

작년에 등장한 VS Code 를 눈여겨 보고 있었다.


어제 공식 홈페이지에 들어가 보고 알았는데, 드디어 Unity3d 프로젝트를 에디팅 하는 방법이 공식 홈페이지에 소개되었다.

https://code.visualstudio.com/docs/runtimes/unity

에서 확인해 볼 수 있다.


이리저리 웹에서 검색하다가 본 dotBunny 의 방법을 소개해 두었다.

캐나다의 인디 게임 개발 스튜디오에 감사해야겠다.

처음에는 이름만 보고, Visual Studio 2015같은게 멀티플랫폼으로 나오는 것인가! 라는 느낌이었지만,

그건과는 한참 먼 물건이었다.

(일단 Preview 버전이기도 하고...)


회사에서는 Windows를 메인으로 사용하지만, 작년부터 집에서는 OS X를 주력으로 사용하기 시작하면서, C / C++ / C# 개발툴이 쓸만한게 없어서 고민이 많던 참이었다.

뭐 나름..쓸려면 쓸 수도 있지만...


오오 하면서 써 봤더니, 뭐 아직은 웹개발툴이고, 에디팅이 vs스타일인거 말고는 WebStorm에도 한참 밀리더라.

(사실 vs 스타일이라기보단, sublime에 매우 가까운 느낌이긴 했다.)

유니티 연동은 되긴 된다. 프로젝트 선택도 되고. monodevelop 말고 맥에서 에디팅이 된다는건 장점이긴 하다.

근데 한글이 안되서 쓰려나 모르겠다. 여긴 아예 안된다. 모노처럼 자음 모음이 분리되는게 아니라. (이건 아마 정식이면 해결될 것 같긴 하다.)


아직 웹개발에 특화된 다른 개발툴을 밀어내기에는 한 세월이 걸릴꺼 같고...

빨리 C# 프로젝트를 잘 지원하는게 답일것 같다.

(근데 Xamarin하고의 관계도 있는데 잘 되려나..)

개발자 등록까지 해 가면서 어떻게든 써보려 했던 크롬캐스트를 결국 판매했다.


미러링 지원으로 안드로이드에서는 사용성이 매우 높지만,

IOS / OSX를 사용하고 NAS를 사용하는 사용자 입장에서는 깔끔하지 않다.


짧은 사용 기간이었지만(만으로 일주일이 안 됨) 장 단점을 정리해 보기로 했다.


장점


1. 작은 크기

크기가 매우 작으며, 요즘 가정마다 하나씩은 있는 microUSB전원을 사용해서 공간활용이 좋다

2. 유투브

유투브 활용에는 극강의 활용성을 보여준다. 유투브의 경우, 원격 기기에서 주소만 던져주면 내부의 자바스크립트 엔진으로 재생하는 방식이라 원격 기기의 배터리 소모도 없다.

3. 미러링

안드로이드 기기를 사용할 경우에는 미러링을 통해 휴대폰 영상을 전송할 수 있다. 극강의 사용성을 보장할 수 있는 방법이지만, 이 경우에는 (2)번의 장점은 없어진다.


단점


1. 자막

기기 자체가 자바스크립트를 통해 동영상을 재생하는 방식이라 자막을 볼 수가 없다.

2. 코덱

코덱 지원이 매우 제한적이라 볼 수 있는 영상이 제한된다.

3. 플랫폼 호환

안드로이드를 제외한 다른 플랫폼과는 호환이 매우 좋지 않다.

4. 고성능 서버 필요

미디어 재생을 마음대로 하려면 트랜스코딩이 되는 나름 고성능(?)의 서버가 필요하다. 


안드로이드 기기를 썼다면 장점을 모두 얻을 수 있으면서 단점을 상쇄할 수 있었을텐데...
결국 라즈베리 파이로 복귀했다.


지난 포스팅까지의 절차를 진행하였다면, 이제 서버에는 Visual SVN이 설치되어 호스팅 되고 있고,

다른 서버 혹은 같은 서버에서 Bitnami Redmine Stack 가 호스팅 되고 있을 것이다.


이제 레드마인에서 SVN의 정보를 땡겨오고 싶은데,

일반적으로 https 프로토콜을 사용하여, Visual SVN을 사용하기 때문에 난관에 봉착하게 된다.

redmine이 https 프로토콜에 잘 안 붙는다!


저번의 번호에 이어서...


7.1 PSTools 를 다운받는다

여기서 받을 수 있다.


다운받은 후에 관리자 권한으로 콘솔을 실행하여

압축이 풀린 폴더로 들어간다.

다음 명령어를 입력한다.

PSEXEC -i -s -d CMD

이제 새 콘솔 창이 뜨게 되는데 여기서 다음 명령어로 확인한다.

whoami

이 명령어로 system 계정이 확인되면 다음 명령어로 svn 인증서를 system 계정으로 받는다.

svn info "https://svn프로젝트 주소"

인증서 저장 방식을 물어볼 때는 p를 눌러서 영구 저장하면 된다.


7.2 VisualSVN 을 http 프로토콜로 사용 시에는 7번 주소만 적으면 잘 된다.


8. 이제 redmine에 저장소가 연결되었다.

저장소를 연결 하였으면, 커밋 메시지로 이슈를 변경할 수 있는 기능을 추가하자.

이 기능이 필요 없었으면, 굳이 저장소와 redmine를 연결할 필요가 없다.


redmine 페이지에, 관리자 계정으로 접속한다.

최상단의 관리 메뉴를 눌러 들어가면 ( 7번 과정에서 들어갔던 프로젝트 관리 메뉴와는 다른 메뉴이다. 주의! )

저장소 라는 항목이 있다.


이 항목을 선택하면, 일감의 분류에 따라, 커밋 메시지를 확인하여, 상태를 바꿀 수 있는 기능이 있다.

한글로 잘 설명되어 있으니 자신에게 맞게 키워드를 설정하여 세팅하고, 저장한다.


9. 이제 이슈를 할당하고, 커밋을 해 보면 이슈가 자동으로 돌아가지 않을 것이다. !!!

왜냐면 저장소 페이지를 한번 리프레쉬 해야 저장소의 로그를 가져오고, 그 로그를 파싱해서 이슈를 변경하기 때문인데,

매번 저장소 페이지를 방문하면, 이슈를 자동으로 돌릴 이유가 없으니,

자동 갱신을 위해, SVN 에 Post hook 를 추가해야 한다.


일단, 페이지 갱신을 위해, redmine에서 API Key를 생성한다.

8번 항목을 할 때, 관리 -> 저장소 페이지에서 API Key 라는 항목이 있는데, 이 항목을 체크하면,

API Key 가 생성된다. 이 Key는 나중에 쓴다.


리눅스라면 콘솔에서 자동 갱신이 매우 편한데, 윈도우라 그런거 없다.

redmine 공식 페이지에서는 curl이나 wget 등을 이용한 갱신 방법을 소개하고 있는데, 윈도우에서는 그런게 없으니,

wget 을 다운 받아서 이용한다.

윈도우용 wget 은 다음 페이지에서 받을 수 있다.


여기서 wget 을 받고 Visual SVN 서버의 적당한 위치에 둔다.

VisualSVN 서버의 관리 콘솔을 켜고, 리포지토리를 오른쪽 클릭하면, 속성이 나오는데,

여기서 Post hook 를 추가할 수 있다.

post hook 를 다음과 같이 추가한다.

파일위치\wget --spider "http://<redmine url>/sys/fetch_changesets?key=<your service key>" 

<redmine url> 과 <your service key> 는 구축하고자 하는 페이지의 것을 잘 복사해 넣자.


이제 커밋을 하는 동시에, 이슈 상태를 전환할 수 있을 것이다.


프로젝트 성격에 따른 세부 설정은 언제가 될지 모르는 다음 시간에 ~ 





버전 관리와 이슈 트래커 용으로 윈도우 환경에서 VisualSVN, Redmine 를 사용해서 환경을 구축해 보았다.

Trac의 경우도 설치해 보았으나 기능이 생각보다 별로여서, Redmine를 선택하게 되었으며,

리눅스 환경이 아니라 윈도우 환경에서는 약간의 꼼수가 필요하기도 하고 해서 정리도 할겸 포스팅 하게 되었다.


1. VisualSVN Server 를 설치한다.

http://www.visualsvn.com/ 에서 설치 파일을 받을 수 있으며, 무료 버전으로도 상업적 사용이 가능하다.


2. Bitnami Redmine Stack 를 설치한다.

https://bitnami.com/stack/redmine/installer 에서 설치 파일을 다운받을 수 있다.


VisualSVN Server 와 Bitnami Redmine Stack 가 설치된 머신은 서로 달라도 상관 없다.


3. VisualSVN 에 repository를 생성한다.


4. VisualSVN 에 Redmine를 위한 사용자 계정을 생성한다.

이 계정은 Redmine에서 SVN의 로그를 가져오는 데 쓰인다.


5. Redmine에서 프로젝트를 생성한다.

진행하고 있는 작업(또는 프로젝트)의 페이지를 생성함.


6. 프로젝트 페이지의 [관리] 페이지로 들어간다. 


7. 저장소 탭을 선택하여, SVN의 호스팅 주소를 적는다.

여기서부터가 중요하다.

VisualSVN의 경우 svnserve 프로세스를 동작해서 서비스를 호스팅하는 것이 아니기 때문에,

svn:// 으로 시작하는 프로토콜을 사용하지 않는다.

( 할 수 있는 방법이 없는건 아니다. 하지만 여기선 다루지 않는다. )

일반적으로 http 또는 https 프로토콜을 사용하여 서비스하게 되는데,


http의 경우는 문제가 없으나, https의 경우에는 조금 문제가 있다.

이 부분은 이후 추가 작업이 필요하다.


글이 생각보다 길어지니 다음 단계는 다음 글에 계속 이어서 진행하도록 함.


  1. 버크하우스 2014.08.08 01:46 신고

    잘 보고 가요. 좋은 하루 되세요. ^^

크롬캐스트 개발을 위해서, 개발자 콘솔에 5$ 를 내고 등록했다.


크롬캐스트는 특수한 버전의 크롬 브라우저가 탑재되어 있는데, 이 브라우저를 통해서 원격 호스트에 있는 자바스크립트를 실행해서 동작하는 듯 하다.


테스트용으로 AppID 를 하나 등록하고, AWS에 NginX 를 설치하고, 하나의 문서로 된 html파일을 호스팅했다. 이제 테스트용 senderApp에 AppID 를 넣어서 실행하니 실행이 되지 않는다.


왜 그런지 확인하기 위해 port 9222로 접속해도 접속이 되지 않고....


구글 개발자 사이트에서는 디바이스 등록 후 재부팅만 하면 된다고 했는데, 되지 않더라. 한참 삽질한 끝에 장비를 리셋하고 나서 해결할 수 있었다.


이건 추측인데, 장비를 스마트폰의 chrome cast 앱으로 재부팅 해야 하는것 같다. (난 그냥 usb전원을 차단했는데, 이 문제 때문에 업데이트가 잘 되지 않았던 것 같다.)

유니티 사용 시, Resource 디렉토리에서 파일을 다시 리로드 해야 할 경우가 있다.

일반적으로는 발생하지 않으나, 개발 과정에서 필요한 경우가 있는데,


이럴 경우 Resource.Load()를 사용하면 이미 캐싱된 데이터를 가지고 오는 것에 불과하여

파일이 런타임에 변경되었다면 가져오는 것이 불가능하다.


이럴 경우, 

AssetDatabase.import()

또는

AssetDatabase.Refresh()

를 사용하자


로딩 시간이 필요하지만, 파일을 하드디스크로부터 다시 로드할 수 있다.

NGUI 사용 시, sprite 라거나 label 등에 마우스 이벤트를 추가하기 위해서는


1. NGUI의 카메라에서 Mouse Event 를 활성화한다.


2. 최소 인식 정도를 정하고 싶다면 Thresholds 를 조절한다.


3. 이벤트를 받고 싶은 object 에 collider 를 추가한다. ( 여러개라면 단축키를 사용하는 게 정신건강상 좋다 )

4. 대상 오브젝트에 스크립트를 추가하여, 다음 함수를 추가하면 사용 가능하다.

  • OnHover (isOver)
  • OnPress (isDown)
  • OnSelect (selected)
  • OnClick ()
  • OnDoubleClick ()
  • OnDragStart ()
  • OnDrag (delta)
  • OnDragOver (draggedObject)
  • OnDragOut (draggedObject)
  • OnDragEnd ()
  • OnInput (text)
  • OnTooltip (show)
  • OnScroll (float delta)
  • OnKey (KeyCode key)

  • 동료와 잠깐 본 결과 NGUI 에서 SendMessage 를 사용하여 위 함수들을 호출한다.

    맨티스에서 레드마인으로 마이그레이션


    레드마인은 bitnami_Redmine을 사용해서 설치했음


    레드마인 도움말에는

    rake redmine:migrate_from_trac RAILS_ENV="test"

    를 사용하라고 되어 있지만,


    bitnami_redmine에서는

    {bitnami_redmine_install_direcory}\apps\redmine\htdocs 에서

    ruby bin\rake redmine:migrate_from_trac RAILS_ENV="test"

    를 사용해야 함.

    nodejs 개발환경으로 sublime text 2 를 많이 사용한다.


    일반적으로 command + b 명령을 입력하면 빌드를 하는데,

    웹 서버 같은 걸 띄우면 프로세스가 계속 살아있어서 매우 귀찮다.


    열심히 찾아본 결과 다음과 같은 방법으로 하면,

    process kill 과 build를 동시에 할 수 있다.

    플러그인을 깔아도 osx의 경우는 안 되서 직접 넣었다.


    복붙을 위해 텍스트로

    {

      "selector": "source.js",

      "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",

      "shell":true,

      "encoding": "cp1252",

      "windows":

        {

        "cmd": ["taskkill /F /IM node.exe & node", "$file"]

        },

      "linux":

        {

          "cmd": ["killall node; node", "$file"]

        },

      "osx":

        {

          "cmd": ["killall node; /usr/local/bin/node \"$file\""]

        }

    } 


    라즈베리 파이 구동시 무선랜이 연결되고 끊기는 일이 무한 반복될 떄가 있다.

    ( raspmbc 사용시 엄청난 렉이 발생한다 )

    이 경우, 공급 전력을 확인하자


    5V 700mA 경우에는 끊기는 일이 발생했다.

    ( 무선랜카드와 어댑터의 상태에 따라 다르지만, 700mA로는 무선랜카드까지 구동하기에는 전력이 부족한듯 함. )


    5V 1A 로 어댑터를 변경하니 잘 된다.

    투알라틴 코어 1Ghz / 512MB정도의 램인 IBM x30 노트북에 서버를 깔아 보기로 했다.

    ( 그러고 보면 학교다닐때 중고로 35에 사서 정말 징하게 쓴다. )

    스펙상으로는 충분할 것 같다 ( XBMC 구동이 좀 걸리긴 한다. 안되면 미러링은 포기하자 )


    우분투 12.04.4 를 usb로 설치하는데 계속 cdrom 마운트 에러가 뜨는 문제가 있었다.


    usb에 burn 한 프로그램은

    LiLi Usb Creator - 에러 발생

    unetbootin - 에러 발생

    이 두가지 프로그램은 여지없이 cdrom 에러가 난다.

    iso 를 변경없이 그래도 cdrom 처럼 사용하는 듯 하다.

    결국 universal usb installer ( uui ) 로 usb를 burn 하니 해결.


    확실히 노트북이다 보니 소음은 기존의 것 보다 적다.

    기존의 서버라 해봐야 cpu는 공랭 쿨러로 소음이 없으니, 결국 파워 / hdd 소음인데

    파워 소음은 줄어들 것 같다.


    다음은 레이드 스토리지 외장 케이스를 구입하여야 할 것 같다.

    현재 집에서 쓰고 있는 서버는 AMD에서 나온 프로푸스 620

    서버로 쓰기에는 차고 넘치는 성능...에다가 소음도 끝내줌.

    CPU쿨러를 공랭식으로 바꾸어 달았음에도 같이 살기에는 너무 힘들다.


    내가 필요한 기능은 XBMC / FTP / Transmission이니...

    저장장치는 외장 스토리지 쓴다고 하고 USB 포트 하나..

    인터넷은 무선랜 쓰고,

    영상 출력은 HDMI 쓰면...


    USB 2 포트와 HDMI 1포트만 있으면 된다는 계산이니, 라즈베리 파이가 왠지 딱인것 같다.

    하나 주문해서 사용해 봐야겠다.

    이번 작업에서 C++로 SOAP 연동 작업이 있었음.


    기존 SOAP사용하던 인터페이스를 대체하고, 새로운 인터페이스를 넣는 부분이었는데, 생각보다 이것저것 일이 많더라.

    정리해보면 2가지 문제가 있었다.


    1. 기존 코드가 VS6.0 기반이다.

    2. RPC Call 반환값이 XML이다.


    개발 환경 업그레이드의 경우, VS2005이후로, atlServer 관련 라이브러리가 같이 제공되지 않아서, 오픈소스로 된 라이브러리를 빌드하고, 링크하는 방식으로 해결했다. 인터페이스를 땡겨오는 문제는 VS의 빌드 전 이벤트 기능을 사용하는 걸로 해결!

    ( 말로 하면 간단한데, 이게 은근 짜증난다. 자료도 거의 없고 )


    반환값이 XML String인데, 서버에서 DateSet를 리턴해주는 것이었다.

    간단간단하게 가자고 DOM 파서인 MSXML을 사용하였는데, 이게 계속 에러가 발생.

    원인을 찾아보니, Root 태그가 없던 거였다.( 왜 이런지는 아직 잘 모르겠다. )


    결국 Root태그를 임의로 붙이고 파싱하니 잘 된다.


    C#으로 받아보니 편하던데, C++로 하니 뭔가 낭비도 심하고...별로 안 좋더라.

    서버 코드랑 딱 분리되는거 하나는 좋더라.


    요약)

    1. VS6.0 에서 업글하는거 짱남

    2. XML데이터 C++에서 쓸려면 스트링 파싱해야함. 중복 태그 있으면 매우 짜증남

    3. 서버코드랑 딱 분리되는건 좋다.

    목적성 없이 코드짜는게 좀 별로라 추진력이 부족하다

    안드로이드 코드도 짜 보기로 했다.


    근데 일단 가지고 있는 장치 인식부터 안됨. ㅋㅋ

    찾아보니 검색어가 구린지 뭐 잘 안나오고, 검색에서 한대로 했는데 안되는거다. 왜지!


    영어가 약해서 왠만하면 그냥 검색해서 찾으려고 했는데 안되서 그냥 구글페이지로 가봄

    페이지는 여기 -> http://developer.android.com/tools/device.html


    가 보니 이렇게 하라고 되어 있다.

    1. 설정파일 편집 시작

    sudo vim /etc/udev/rules.d/51-android.rules.

    2. 파일 내용 수정

    SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev" 

    3. 파일 권한 수정

    chmod a+r /etc/udev/rules.d/51-android.rules

    4. 혹시 모르니 재시작

    sudo restart udev


    들어가 보면 벤더 코드가 있어서 그걸로 쓰면 됨.

    내가 가지고 있는 모델은 LG 꺼라 벤더 코드가 1004. 기억하기는 쉽다.


    케이블 다시 연결하니 인식이 잘 되는 듯 하다.

    오히려 왠지 설치하기 찝찝한 드라이버 안 깔아도 되고 더 좋은 듯 하다.

    고무적인 일이다. 아직 윈도우로 돌아가지 않았음
    점점 게임 말고는 윈도우 머신을 켤 일이 없어지는 것 같다.

    그 동안에 한 일은.뭔가 점점 일기같이 되어가고 있다.

    1. 크롬 설치
    파이어폭스가 좋고 나쁘고를 떠나서, 일단 폰트가 마음에 들지 않는다.
    그럭저럭 나쁘지 않다고 생각은 하지만, 부드러운 스크롤 이라고 하고 속터지는 스크롤 사실 이건 옵션을 끄면 해결된다.과 왠지 모르게 흐릿흐릿한 한글 폰트가 너무 크다.
    설정에서 폰트 최소 크기를 먹여도 안 바뀌는것 같고...어쨌거나 크롬으로 변경!
    크롬은 최소 폰트 크기 설정이 잘 먹어서, 나름 폰트가 깔끔하게 보여서 만족 중

    2.에어비디오 서버 설치
    뭐 에어비디오 설치법은 검색하면 널려 있으니, 나중에 스크랩 해 놓던지 하고.
    ppa 사용하면 잘 깔린다. jdk 이런거 깔 필요도 없이 한방에 설치되는 듯.
    근데 미디어 있는 디스크가 ntfs라 자동 마운트가 안 되어 있어서 그쪽 설정은 해 주어야 할 듯

    일단 이 정도인 듯.
    아무래도 우분투까지 깔았는데 개발을 안 하면 섭섭하겠지.
    다음에는 이클립스 깔아서 hello world! 라도 해볼까 생각 중이다. 이것은 개발의 정석 hello world

    딱히 게임을 안 한다면 우분투 쓰는 것도 나쁘지 않은 선택인 듯 하다.
    다만 모바일과 연동하는 부분이 좀 부족한 듯 하다. 오히려 ssh를 쓸 수 있어 콘솔 명령어만 때리면 되니 원격 조정이라던가 하는 일은 더 편리할 것 같은데, 아무래도 사용자 풀이 적어서 그런지도. 이쪽은 한번 알아보고 소일꺼리로 해 볼까 생각중임.



    서버로 쓰고 있는 피씨에 우분투 12.04.2 LTS버전을 설치했다.

    윈도우를 쓰고 있었지만, 나에겐 라이센스 키가 하나밖에 없을 뿐이고...

    게임용 PC에도 똑같은 라이센스로 깔았을 뿐이고(결국 불법)


    뭐 게임용 PC의 사용이 극히 드물지만, 요즘 퇴근시간이 좋아지면서, 직장인의 꿈 칼퇴 시간이 남아서 잉여잉여하니 감행

    하루밖에 안 되서 계속 삽질 중이지만, 느낌 & 삽질 정리


    1. 폰트가 깔끔하다.

    예전에 백묵체인가 뭔가..한 9.04 쯤이었던 걸로 기억하는데, 아여간 그때는 글씨가 뿌옇게 보였다. 나눔고딕을 채택한 것 같은데, 아직 윈도우의 깨끗한 폰트와는 뭔가 좀 차이가 있는 것 같지만, 하여간 깔끔한 듯.


    2. XBMC의 영상 재생 이상

    윈도우에서 XBMC를 사용해서, 영상을 감상을 덕질 하고 있었는데, 일부 영상의 영상/음성 싱크가 안 맞아서 인 듯 하다.

    뭐 이건 답도 없고. home디렉토리의 설정 파일을 다 열어봐도 코덱을 어디서 설정하는지 모르겠으니 일단 패스

    검색으로 SMPlayer에서 -nocorrect-pts 옵션을 주면 된다고 해서 SMPlayer를 깔았더니, 아예 설정을 조작하는 부분이 있어서

    일단 이걸 사용하기로 결정.


    문제는 xbmc에서 쓰던 휴대폰의 remote기능인데, 이건 어떻게 할지 모르겠음.

    진짜 앱이라도 만들어야 하나. 근데 난 맥북이 없잖아? 안될거야 아마


    unity를 채용해서 구리다는 사람도 많은데, 굳이 그정도까진 아닌 것 같고. ui도 나름 깔끔한 편


    일단 다음에는 ftp를 열어야 할 듯 함.

    근데 전원 관리는 어떻게 되는 지 잘 모르겠음. 윈도우 사용 시에는 asus EPU4 라는게 있어서 클럭 조정이 자동으로 되던데 말이지.

    전기세 크리 맞으려나


    일단 계속 써서 익숙해 지는 게 우선인 것 같다.

    사회 생활을 시작하게 되면서 공인인증서를 이용하게 되는 일이 빈번해졌습니다.
    이것저것 필요한 물건도 지르고 사고..세금도 내고, 저축도 하게 되고 말이죠.

    이런 금융거래를 하는 것에 있어서 공인인증서가 없으면, 분명 돈인데 돈이 아니게 되는.
    웃긴 일이 발생합니다.

    전혀 사용할 수가 없는 죽은 돈이 되어버리죠.

    공인인증서를 사용하면서 정말로 화가 났던 적은, 숫자로 시작하는 모 쇼핑몰에서 결재할 때 였습니다.
    쉴새없이 바로가기 링크를 깔라는 팝업이 뜨고, 액티브액스을 설치했더니, 익스플로러는 에러가 나고.
    다시 액티브 액스를 설치해야 하고, 링크는 잘못된 링크라고 뜨지...
    저렴한 곳만 아니었다면 다시는 쓰고 싶지 않을 정도였습니다.

    이렇게 공인인증서를 사용한다는 것은 짜증과 불편을 동반합니다.
    최근 읽고 있는 책 "한국 IT 산업의 멸망" 에서도 정말 가루가 될 정도로 까고 있더군요.

    하지만, 현재 시점에서 공인인증서를 폐기한다는 발상에 대해서는 의구심이 드는 것이 사실입니다.

    본인을 인증하는 것이 아닌 공인인증서 파일을 인증하는 것이고, 사람들은 보통 비밀번호를 비슷하게 쓰는 것을 감안하더라도,
    로컬에 별도의 파일을 가지고 인증하는 방식은 생각보다 메리트가 있는 방식입니다.

    공인인증서가 없다면, 다른 대체할 수 있는 식별수단이 없기 때문이죠.

    서명이 있다곤 하지만, 전자서명이 일반화된 한국에서 서명의 신뢰도가 얼마나 될까요? 일부 공/사문서에 사용하는 보안이 되어 있는 서버어 저장된 전자서명이 아니고서야. 필기 자체를 정확하게 인식하지 못하는 전자서명의 신뢰도는 떨어질 수 밖에 없습니다.

    물론 지금까지 일어난 일들이, N모 솔루션을 출시하는 보안전문기업과 외국기업의 진출을 경계하는 산업계의 이해 관계가 맞아떨어져서 생긴 악습임에는 분명합니다.

    하지만 PSN해킹 사건 등을 통해서 카드번호조차 해킹 위협에 노출되어 있고, 서명 또한 신뢰도가 높지 않은 상황에서 앞으로 공인인증서를 대체할 인증수단이 나오기란 요원해 보입니다.

    하지만 역시 개인적으로는 대체 인증 수단이 빨리 등장했으면 합니다.
    집에 여러가지 기기가 많습니다. 문론 전자제품 한정이죠. ㅋㅋ

    집에 굴러다니는 잡다한 저사양 기기에 약간의 수고를 더하면 그럭저럭 쓸만한 멀티미디어 시스템을 구축할 수 있습니다.
    사실 멀티미디어 홈서버라 해도 별 건 없습니다. 그냥 파일 다운받고 FTP로 공유하던지 아니면 HTTP로 파일을 전송할 수 있기만 하면 됩니다.
    (요즘은 네이버 N드라이브가 스트리밍 서비스도 지원한다더군요. 아마 이 조합과 같이 사용하면 좋을 것도 같지만, 약간 더 귀찮음이 동반되서...자동화 작업을 한번 나중에 시도 해 봐야겠군요)

    처음에는 서버로 사용할 PC가 필요합니다. 아주아주아주 예전에 쓰던 PC도 좋습니다.
    실제로 제가 지금 서버로 사용하는 PC또한 2000년대 초반에 출시된, IBM X30 입니다.

     IBM ThinkPad X30
    X30입니다. ㅋㅋ 무려 펜3 1.2GHz 512MB
    나름 출시되었을때는 고가모델이었죠. 블투도 되고 무게도 가볍고....음음 지금이야 구리지만, 지금도 키감 때문에 찾는 사람이 있더군요.

    1. 일단 노트북에 OS를 설치합니다.
    학생이라면 www.dreamspark.com을 이용해서 무료로 제공하는 OS를 사용하시면 됩니다.
    저도 일단 학생일 때 받아둔 게 있어서 Windows Server 2003을 설치했습니다.
     
    2. 방화벽을 해제합니다.
    기본적으로 방화벽이 설정되어 있는지는 확실하지 않은데...
    [제어판] - [네트워크 연결] - [로컬영역 연결] 설정에 가셔셔 [자세히] 버튼을 눌러서 [고급] 탭을 보시면 방화벽을 확인할 수 있습니다.

    3. uTorrent를 설치합니다.
    인터넷에 검색하면 쉽게 설치할 수 있죠. ㅋㅋ

    4. WebUi를 활성화합니다.

     사용자 이름을 적어주시고 사용하고 싶은 포트를 적어주시면 됩니다.
    다운로드하고 싶은 경로도 지정해주시고요. 경로는 여러 곳을 지정할 수 있습니다.

    이제 다운로드 할 수 있는 환경을 만들었습니다. 
    접속을 해 보죠


     IP주소:포트/gui 
    이렇게 사용할 수 있습니다.
    이걸로 항상 들고 다니는 스마트폰이나, 회사 또는 학교에서 항상 접속이 가능합니다.
    (막혀있다면 포트를 잘 찾아보면...) 
    이제 서버에 받아두는 환경을 구축하였으니, 다음 포스팅에는 원격으로 활용하는 법을 적도록 하겠습니다.
    쉽고 재미있는 서버구축~ 
    소프트웨어에서 끝판대장이라 할 수 있는 OS를 만들고 싶어 졌다.
    책도 사고...슬슬 이제 코드 작성에 들어가보고자 하는 찰나에 편집기가 없다 =ㅅ=

    책에서는 메모장 쓰네 뷁 ;; 어쩌라고 아무리 그래도 메모장은 좀 아니잖아 

    안그래도 시간이 나는 김에 오피스도 32비트랑 64비트가 꼬여서 엉망이고 해서 포맷을 감행했다.
    그래서 Visual Studio를 까는 중에 어셈 편집기랑 텍스트 편집기로 Vim을 써야지 하면서 룰루랄라 하고 깔고 사용하는데 저장하는게 안된다 -_- 쉣

    포기할까 하다가 역시 프로그래머의 로망은 까만화면에서 코딩하는거지 하면서 
    :w d:\development\Vim 
    이딴식으로 다 쳤는데 이것도 못할 짓이라 계속 찾아보다 보니...
    호오 vimrc에 set dir이란게 있네?

    근데 이건 그냥 스왑파일 경로 정하는 거더라 -_-

    약 한시간을 삽질한 결과 아주 간단히 찾았따 -_-


    등록정보에서 시작 위치만 변경하면 된다 -ㅅ-
    인터넷에 보면 cd d:\어쩌구
    이런식으로 해서 폴더 변경하라 했는데 그냥 이런식으로 하면 된다. 

    어째서 이런 거 팁 올려주는 놈은 한놈도 없네
    젠장 내 시간을 돌려줘
    보통 웹 사이트에서 우편번호를 검색할 때 팝업 창으로 많이 활용합니다.

    이런 식으로 주소창이 뜨게 되죠.
    요즘같이 브라우저에 팝업 차단기능이 있는 시대에는 굉장히 뒤떨어진다고나 할까요...

    이 기능을 AJAX Toolkit의 Modal 팝업을 이용하여, 만들어 보겠습니다.

    뭐...그리드 뷰에 데이터베이스 바인딩하고 이런 문제는 생략하겠습니다.
    아신다는 가정하에..ㅋ

    나중에 시간이 나면 포스팅 하도록 하죠.

    일단 업데이트 패널을 2가지 만듭니다.

    위쪽 사진이 보여질 화면(최초 페이지 로딩 시)
    아래쪽 화면이 검색하면 보여질 모달 윈도우 입니다.

    두 가지를 각각Update Panel 로 묶어 주시고
    아래쪽 패널은 Visible 속성을 False 로 하여 보이지 않게 합니다.


     다음 과정으로 우편번호 검색 버튼에 Extender 를 추가해주시면 되겠습니다.

    그 다음에 속성에서 사진에서 진한색으로 표현되어 있는 부분을 고쳐주시면 되겠습니다.
    Modal_Back 부분은 스타일입니다.
    배경이 아무래도 검은색 투명으로 하면 간지나기 때문에 적용했습니다.


    이 부분이 cs파일 소스입니다.
    우편번호 검색에서 중요한건 클릭할때 뿐이기 때문에 클릭할때의 소스 빼고는 중요한 점이 없죠.
    업데이트할 폼뷰의 텍스트 박스 컨트롤을 가져와서 넣어 줍니다.


    이제 굉장히 중요한 부분입니다.
    위쪽 패널. 그러니까 팝업으로 뜰 패널 말고 회원 가입 패널은 UpdateMode에서 Conditional로 바꾸어야 합니다.
    이걸 안해주면 모달 창에서 버튼을 누를 때마다 페이지가 PostBack 되어서 페이지가 새로 로드되게 되므로...망합니다. 모달창이 꺼져버리게 되죠.

    마지막으로 트리거 속성을 선택해보면, [...]이라는 버튼이 있습니다. 이 버튼을 클릭해서 이벤트를 선택해주면...주소를 클릭했을 때 페이지가 PostBack 되면서 모달 윈도우가 꺼지게 됩니다.

    이제 결과를 보면....
    이런 페이지가 완성되었습니다!

    ASP.NET를 하면서 처음 만들어 본 컨트롤이라 굉장히 보람차네요.
    앞으로 개발하면서 자주 업데이트 해야겟습니다. 한국에는 의외로 ASP.NET자료가 적어서...

    요즘 정신없이 프로젝트를 돌리면서 여유가 많이 없어진 것 같다.
    블로그도 작년 중순까지는 꽤 열심히 한것같은데 지금은...음 =ㅅ= 집으로 치면 흉가가 되 버린듯

    일기 쓰기에는 매일매일 재미있는 일이 없어서 힘들 것 같고, 소소한 개발 노트나 써 봐야겠다.

    일단 지금 하고 있는 과제와, SVM얼굴인식, 안드로이드 프로젝트, ASP .NET 프로젝트..;
    ....음 내가 왜 이렇게 힘든지 갑자기 이해가 되는군.
    하나 하나 끝내 봐야겠다.

    기본적으로 윈도우 7에서 VS6.0을 사용하는 것은 가능합니다.
    상위 버전의 VS를 설치하지 않은 상황에서, 6.0을 제품군중에 가장 먼저 설치하면 사용 가능하죠.

    하지만 컴파일까지만 가능할 뿐, 디버그 모드로 들어가기 되면, 어셈블리 코드로 튕겨나게 됩니다. 그야 말로 디버그가 안된다면 학부 1학년 수준의 printf만 사용하는 프로그램이 아닌 이상 정상적인 프로그램 코딩은 불가능하죠..(뭐....튜링같은 괴물은 한방에 프로그램 짰다고는 합니다만..)

    일전에 윈도우7에서 Visual Studio 6.0을 돌리기 위해, VMWare를 사용한다는 포스팅을 한 적이 있었습니다. 결과는 성공이었지만 만족스럽진 않았죠. 제가 사용하는 노트북의 램이 2G인데.(지금은 1.5G가 되었습니다. 램이 한개 운명하시는 바람에....)VMWare의 경우, 램이 상승하는 것에 비해서, 그다지 큰 성능의 향상을 가져오지는 않았고, VS6.0을 사용하는 데에 있어서, 하드 로딩을 너무 많이 하는 등의 문제가 있어서 사용하지 않게 되었습니다.

    결국 대안으로 떠오른 방법은 Windows Virtual PC인데요. 상당히 괜찮은 방법이라고 생각을 하고 있습니다. Virtual PC에서 운영체제를 실행 한 후에 Visual Studio를 실행해도 되고, 다른 방법으로 프로그램만 실행하는 방법이 있습니다.
    설치를 하게 되면 이런 메뉴가 생기는데 실행하게 되면
    이런 식으로 윈도우 7에서 실행되는 것처럼 사용할 수 있습니다. 물론, 컴파일되는 프로그램 또한 동일하게 돌아가게 됩니다. 백그라운드에서는 Virtual PC가 실행되고 있는 거죠. 흠 아주 괜찮은 방법이라고 생각합니다. 메모리는 256만 잡아주어도 괜찮게 돌아가더군요.

    하지만, 하드웨어에 의존적인 프로그램은 코딩할 수 없는건 명심해야합니다.


    기본적으로 제가 사용하는 삼성 NT-X22A/A2에서는 윈도우 7을 지원하지 않습니다.


    ...음...슬프군요..

    윈도우 7에서 일단 드라이버는다  잡아주는 관계로.... 그냥저냥 쓰고 있었습니다만..

    검색해보니...비스타에서는 단축키를 소프트웨어를 통한 방법으로 쓰고 있더군요.

    Speed manager와 Display manager 이 두개를 쓰고 있습니다.

    그리고 삼성 노트북 일부 모델은 윈도우7용 소프트웨어를 지원하고 있고요..

     

    그래서 문득 든 생각이.

    이거....그냥 내가 써도 되지 않나... 하는 생각이 들더군요.

     

    그래서 시험해봤습니다.


    이렇게....버튼이 되는 것을 확인할  수 있었습니다.

    역시 소프트웨어적인 것이라 스크린샷도 찍히는군요.

    단지 이걸 깔면 메모리를 좀 점유하는 느낌이군요.

    제가...뭐 프로그램 좀 많이 띄워놓고 쓰느라....항상 뭐 메모리가 50% 이상이긴 합니다만...

    "난 단축키 별로 안쓴다." 하시는 분은 안 까셔도 무방.

    하지만 확실히 있는 편이 편하겠죠?

    단지 F7키는 안됩니다. 이건 매직 닥터인가 그 버튼인데 아직 윈도우7용을 못 찾았네요.

     

    이 글은 스프링노트에서 작성되었습니다.

    스프링노트에서 블로그를 포스팅하는 방법도 있네요.

    물론 예전에 Windows Live로도 포스팅을 해 봤습니다만..

    위키가 이렇게 까지 발전했다니 놀랍군요.

    이전에 스프링노트를 쓰다가. 생각보다 굉장히 불편한 점이 많아서 접었는데,

    이제 좀 다시 생각해 봐야 겠습니다.

     

    단지 이미지가 캡쳐후 Ctrl+V 로 붙지 않는다는 점이 좀 불편하네요.

    그 외에는 일반 블로그의 포스팅 환경보다 원활한 듯 합니다.

    백업이 용이하다는 점이 있고요.

    앞으로 여기서 블로그 포스팅 해야겟네요.

    이 글은 스프링노트에서 작성되었습니다.

    이건 32비트

    http://ftp.neowiz.com/pub/centos/5.4/isos/i386/

    이건 64비트

    http://ftp.neowiz.com/pub/centos/5.4/isos/x86_64/

    이거 공식 사이트 토렌트 파일이 다 꺠져서 저장해 둬야겠다.

    Visual studio 6.0버전은 윈도우 7에서 호환성 문제가 있습니다.

    디버깅을 할 때 Step (단축키 F10)으로 진행을 하게 되면 어셈블리 코드로 날아가 버리는 버그가 있네요.

    그리고 막힌다던가 해서 Shift+F5로 강제로 디버깅을 코드 수준에서 종료하게 되면 디버깅 대상 프로그램이 종료되지 않는 버그가 발생합니다.

    이때 원상태로 돌아오는 한가지 방법이 있는데, Visual studio 자체를 종료해야 합니다.

    혹시나 해서 지금 window virtual PC를 깔고 있는데 잘 될지는 모르겠군요.
    1. Mr_D 2010.03.29 21:15 신고

      Windows7에서는 자체기능이 XP Mode가 있으니, 그 기능을 이용하면 됩니다.

      • Tertis 2010.03.30 02:48 신고

        네 XP Mode 가 있죠. 지금은 VMWare를 사용하지만 3개월 정도 그걸로 잘 썼습니다 ^_^

        XP모드도 VM의 일종으로 XP모드에서 쓰던 파일을 VMWare에서 열면 사용 가능합니다.

    + Recent posts