삽질하는플머

'여가생활'에 해당되는 글 21건

  1. 애니팡 오토... 2
  2. 미리 구경해본 OpenPC 2
  3. 모노 2.10 설치. MySql 연결 테스트. 4
  4. 크로스 플랫폼으로서의 모노... 5
  5. 유니티 테스트 2 - 회전댐퍼 4

애니팡 오토...

여가생활/Others

애니팡은 이미 개발자들의 놀이터가 되어버린... 점수가 우주를 돌파할 기세다!!


느려터진 모비즌 대신 BlueStacks를 대상으로 찍음. 어차피 난 아이폰 사용자. 폰빌리기 귀찮...

2005년도에 델마당에 공개했던 "범용 비주얼드 도우미"의 먼지를 털고 몇군데를 손보아주었다. 

겁없이 "범용"이라는 타이틀을 내걸었는데... 다행히 이름값을 하네... 

30대의 나는 확실히 지금보다 나은 잔머리를 가졌던... 아 돌아가고싶다!!




몇 번 돌려보니 오토류의 점수는 140만점대가 한계로 보인다. 



덤. 

소스가 필요하신 분들은 델마당 자료실에서 제 이름으로 검색을... 

탈퇴하면서 미처 못지워 지금도 남아있을 것임. 


미리 구경해본 OpenPC

여가생활/Others

Open PC 이벤트에 선정되어 실제 기계를 마음껏 써보게 되었습니다. 부족한 글 좋게 봐주셔서 감사합니다. 

11월에 새 기계가 손에 들어오면 신나게 가지고 놀고 삽질기를 올려보겠습니다. ^^;;




지인의 페이스북에 신기한 글이 올라왔다. 

우분투 사용자모임에서 잠시 언급되었던 OpenPC 라는 물건의 체험 시연회가 있고 

이 시연회 참가자를 뽑는 이벤트중이라는 내용...


마침 체험 진행기간이 휴가날짜와 겹쳐 내친김에 신청했고 신기하게도 뽑혔다. 

조금 늦었지만 재미난 기계를 구경하고 온 소감을 정리해 본다. 


남양주에 서식하다보니 시연회가 진행되는 상암동까지는 정말 먼 거리다. 

예약한 시간은 오후 2시~4시 사이였는데, 4시 조금 전에 겨우 도착. 누리꿈 스퀘어 연구&개발 빌딩 입구에서 기념삼아 사진 한 장 찰칵. 



입구에서 경비아저씨가 붙든다. OpenPC 시연회에 간다는 얘길를 하니 못알아듣는다. 아니, 못들어간다는 의지를 내뿜는다. 

잠시 옥신각신 하다가 폰을 꺼내 이벤트 안내 홈페이지를 보여주니 7층에서 방문증 끊고 올라가라네. 13층에 간다는 이야기는 처음부터 했었는데... 이 아저씨 사람을 뭘로 본거지? 반바지에 샌달 신은 개발자 처음 보나?? 아니면 이동네 개발자들은 모두 와이셔츠에 넥타이 받치고 코딩하나??? 확 들이받으려다가 시연회장에 준비되어있다는 냉녹차를 떠올리며 마음을 가라앉혔다. 생각해보니 근처에서 일하는 친구놈은 항상 정장 차림이기도 했고... (그놈은 근데 관리자잖아!!)


시연장에 들어서자 반가운 얼굴이 똻!! 

OpenPC 구경하자고 페이스북에서 꼬셨던 바로 그 지인 신현묵님 되시겠다. 



관심가지고 돌아다니는 지역과 소재가 어쩌면 이리도 비슷한건지... 슬쩍 떠보니 현묵님은 입구에서 별 문제 없으셨던 모양이다. 

사진을 올려놓고 냉정하게 비교해 보니... 왼쪽은 왠지 교수님 오라, 오른쪽은 배달그릇 찾으러 온 느낌이긴 하네~~ ㅎㅎㅎ



대충 인사를 나누고 OpenPC가 설치된 자리에 앉았다. 




오호~ 조 조그만 물건이 게으른 나를 두시간 가까이 지하철로 움직이게 했던 바로 그 물건이로군~~


유선랜 포트, 키보드/마우스가 연결된 USB, RGB로 연결된 모니터, HDMI 포트, 전원선이 보인다. 

아래쪽에 연결된 녹색 잭은 스피커이다. 







일단 재부팅부터 걸어보자. 부팅시간은 일반적인 공유기의 부팅시간보다 약간 더 걸리는 느낌이다. 

(사실 수다 떠느라 정확한 시간을 재 볼 생각은 하지 못했다.)




데스크탑은 전형적인 GNOME 화면. 

오피스를 구동시킬때 나오는 스플래시는 약간 민망. 출시때에는 원래 베이스인 리브레의 것으로 변경될 예정이라고 말씀하셨다. 


  



시연용으로 준비된 데스크탑에 터미널이 없어 잠시 당황... 우분투 서버만 써봤기 때문에 콘솔이 없으면 뭘 해야할 지 모르니... 

컨트롤+알트+F1 으로 TTY를 띄우는 것을 불쌍하게 여긴 옆자리의 현자께서 컨트롤+알트+T 를 누르라고 알려주신다.

나는 선량한 시민이므로 다음에 써 볼 분을 위해 /usr/bin/gnome-terminal 을 바탕화면에 올려두었다. 




먼저 정체부터 살펴보자. 


dh-h 를 쳐보니 3.6기가 중 61%인 2.2기가바이트가 사용중. (아마도 동영상이 자리를 크게 차지하고 있는 듯 하다)

top에서 확인한 메모리는 800메가. 


uname -a 출력은 다음과 같다. 


Linux openpc 2.6.32.9-dove-5.4.2 #408 Mon Jul 2 20:52:01 KST 2012 armv7l GNU/Linux



우분투 10.04가 구동중이다. 요술뿅망치 apt-get 도 정상동작한다. 

신기해서 /etc/apt/source.list 파일을 열어보니 다음과 같은 내용이 보인다. 


Ubuntu-Netbook 10.04 LTS _Lucid Lynx_ - Release armel+dove (20100427.1)



레포지트리 경로가 우분투 본가를 가리키는 것으로 볼 때, 예전에 이슈가 되었던 넷북 리믹스와 뿌리가 같지 않을까... 짐작해 본다. 

이 덕분에 미리 준비된 우분투의 수많은 패키지들을 네트웍을 통해 마음대로 설치해볼 수 있다. 




창을 붙들고 이동하는 일반적인 사용은 많이 느리다. 오래전 2D가속이 되지 않던 시절 윈도 3.1을 사용하던 느낌이다. 

시스템 감시를 띄워보니 CPU가 계속 100%가 되네. 




하지만 시스템 감시를 끄고 콘솔에서 top 으로 확인한 CPU로드는 10% 미만... 



사용율을 표시하기 위해 모든 CPU 자원을 끌어 쓰는 느낌이라고 할까... 아무래도 이 "시스템 감시" 유틸리티는 문제가 있어 보인다. 



브라우저는 크롬이 설치되어있다. 정상적으로 동작하고 정상적으로 표시된다. 다만 x86의 속도감과 비교하지는 말자. 


 


플래시도 표시된다. 


 



들고 갔던 외장하드를 연결해보았다. 각각 exFAT, NTFS 로 포멧된 물건인데 아쉽게도 인식하지는 않았다.




다만 iodd 를 ODD 전용모드로 켜고 연결한 경우는 정상적으로 인식한다. 




준비된 시연용 동영상이 몇 개 돌려보았다. 동영상 플레이어는 토템 2.30.2다.
데스크탑이 약간 버벅이는 느낌이라 별 기대 안했는데... 풀 HD급 영상이 끊김 없이 잘 재생되어 살짝 감동. 





이정도면 XBMC 구동도 무리없을 듯 하다. 내친김에 3D 가속기능도 살펴보자. 

우분투 소프트웨어 센터에서  mesa-utils 를 내려받아 설치하고 glxinfos 를 돌려보았다. 




버전은 2.1. 하드웨어 가속은 기본이고, 버텍스/픽셀 셰이더를 비롯해 적어도 예전에 만들었던 게임용 허접엔진의 확장들은 모두 지원하고 있다. 전체 출력을 따로 파일에 저장해 첨부한다. 관심있는 사람은 열어보자. 


 kkk.txt



glxgears 출력은 초당 25~35 프레임 정도. 




XBMC 구동에는 약간 버벅거릴듯 하지만, 2D 가속도 받지 못한 채 데스크탑에 적용된 gnome 보다는 쾌적한 느낌이지 않을까... 



아무래도 OpenPC는 그 특성상 "소유하는 것 만으로도 부러움을 사는" 라즈베리파이와 많이 비교된다. 

물론 라즈베리쪽의 가격이 훠얼씬 저렴하지만, 한국으로의 배송비와 관세를 적용하면 이게 또 얘기가 된다. 

게다가 4G 짜리 스토리지가 제공되는 것도 마음에 들고... 


제일 처음 떠오르는 용도는 TV옆에 놓아두고 네트웍으로 영화를 끌어당겨 보는 셋탑박스 대용 XBMC 전용머신. 

또한 파일공유, 웹, FTP, VPN, SVN, 레드마인 등의 서버용도로도 상당히 쓸만할 것이다. 

3D 쪽의 성능이 조금 더 담보된다면 영상 재생능력과 버무려 안내용 키오스크로 활용도 괜찮고... 

다만, 시연의 주제가 되었던 데스크탑 PC의 대체용으로 사용할 것이냐고 묻는다면... 그건 아직은 아닌 듯 하다. 

시간이 조금 더 있었다면 소프트웨어 센터에서 xfce 를 내려받아 써보고 조금 더 가벼운지 테스트 해 보고 싶었지만... 


아무튼 가지고 싶은 물건이다. 언제 가지게 되냐고? 그거야 당연히 안지기 허락이 먼저지~~




덧붙이기. 

여담이지만... 뽑힌 이유가 혹시 이것 때문인가... 







모노 2.10 설치. MySql 연결 테스트.

여가생활/Unity,Mono&.Net

시작은 유니티였는데... 옆길로 참 많이 새고 있다. 


굳이 이런 시도를 해보는 이유는? 모노가 WCF를 지원하고 있다는 것에 눈이 번쩍 띄었기 때문이다. 

현재 XMLRPC+PHP로 DB를 호출하고, 이 PHP를 HipHop으로 빌드해 바이너리로 서비스하는 방식을 쓰는 중인데...

닷넷으로 WCF 서비스를 만들고 델파이로 접근해 사용하도록 바꿔준다면 손도 편하고 머리속도 간단해지니까. 

게다가 C#은 디버깅도 되잖아? 디버거 없이 날코딩하는 PHP같은 인터프리터 언어는 나이가 먹을수록 부담스러워~~


기왕에 삽질할 꺼면 모노 2.8 이상을 설치해 새 바닥에서 놀자. 


우분투에 모노 2.10 설치는 트위터의 @nbridgewater 님이 작성한 스크립트를 쓰면 한방에 해결. 

중간 중간에 sudo 암호만 넣어주면 된다. 시간은 좀 오래 걸림. 


http://www.integratedwebsystems.com/2011/02/mono-2-10-install-script-for-ubuntu-fedora/


# wget --no-check-certificate https://github.com/nathanb/iws-snippets/raw/master/mono-install-scripts/ubuntu/install_mono-2.10.sh

# chmod 755 install_mono-2.10.sh

# ./install_mono-2.10.sh



위치는 /opt/mono-2.10 에 설치된다. 다음과 같이 윈도에서 #Develop 로 작성한 .Net 4.0 바이너리를 실행시킬 수 있다. 


# /opt/mono-2.10/bin/mono ./test.exe

Hello World!

#



MySql의 닷넷용 커넥터는 MySQL 에서 직접 개발 및 배포하고 있다. 라이센스는 GPL. 

http://dev.mysql.com/downloads/connector/net/


현재 버전은 6.5.4 이다. 일단 윈도용을 내려받아 설치하자. 







#Develop 에서 mysql-test 솔루션을 시작한다. 프로젝트 탐색기의 "참조" 에서 우측키를 누른 뒤 "참조 추가" 메뉴를 클릭하자. 

GAC 탭에서 "MySql.Data" 를 선택한 뒤 "확인"을 눌러준다. 




http://www.mono-project.com/MySQL 에 MySql 에 접근하는 좋은 예제가 있다. 

int형 ID와 varchar형 Name 을 필드로 가지는 테스트용 DB에 접근하는 코드를 다음과 같이 만들어주었다. 


using System;
using System.Data;
using MySql.Data.MySqlClient;

namespace mysql_test
{
    class Program
    {
        public static void Main(string[] args)
        {
            string connectionString =     
              "Server=hostname;" +
              "Database=test;" +
              "User ID=user;" +
              "Password=password;" +
              "Pooling=false";
            
            IDbConnection dbcon;
            dbcon = new MySqlConnection(connectionString);
            dbcon.Open();
            IDbCommand dbcmd = dbcon.CreateCommand();
            
            string sql =
               "SELECT ID, Name " +
               "FROM test";
            
            dbcmd.CommandText = sql;
            IDataReader reader = dbcmd.ExecuteReader();
            while(reader.Read()) {
                int ID = (int) reader["ID"];
                string Name = (string) reader["test"];
                Console.WriteLine("Data: " + ID + " " + Name);
            }
            // clean up
            reader.Close();
            reader = null;
            dbcmd.Dispose();
            dbcmd = null;
            dbcon.Close();
            dbcon = null;

            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }
    }
}

(#Develop 에서 코드를 복사해 블로그에 붙여넣으면 하이라이팅이 그대로 살아있네~ 좋다!!)



실행시켜보면 자알~ 동작한다. 





이제 모노의 GAC에 MySql 라이브러리를 설치해보자. http://dev.mysql.com/downloads/connector/net/ 에서 ".Net & Mono" 를 선택한 뒤 "mysql-connector-net-6.5.4-noinstall.zip" 파일을 다운받아 압축을 푼다. 이 압축파일에 포함된 dll은 모두 소문자로 되어있지만 GAC에 등록하기 위해서는 실제 C#에서 참조할 때와 동일하게 대소문자를 맞춰주어야 한다는 것에 주의!


# cd mysql-connector-net-6.5.4-noinstall/

# cd v2

# cp mysql.data.dll MySql.Data.dll

# sudo /opt/mono-2.10/bin/gacutil -i MySql.Data.dll
 Installed MySql.Data.dll into the gac (/opt/mono-2.10/lib/mono/gac)


윈도에서 작성된 바이너리를 옮겨와 다음과 같이 실행시켜보자. 


/opt/mono-2.10/bin/mono ./mysql-test.exe



결과는 짜잔~




덤으로, 앞에서 작성한 CS 코드를 우분투에서 직접 빌드하려면 다음과 같이 하면 된다. 

/opt/mono-2.10/bin/mcs mysql-test.cs  -r:System.Data.dll -r:/opt/mono-2.10/lib/mono/gac/MySql.Data/6.5.4.0__c5687fc88969c44d/MySql.Data.dll


당연한 이야기지만, 이렇게 빌드한 실행파일도 윈도에서 잘 돌아간다. 



크로스 플랫폼으로서의 모노...

여가생활/Unity,Mono&.Net
유니티 얘기하다가 왜 뜬금없이 모노냐고? 취미는 중간에 샛길로 빠지는 맛에 즐기는 거거덩.

오래전 셀빅이라는 물건이 대한민국 PDA의 대명사이던 시절, 
도스나 윈도 이외의 플랫폼이 주는 상큼 발랄했던 청량감은 내게 오랫동안 잊기 힘든 깊은 자욱을 남겼고
그때문인지 발은 윈도에 묶여있으면서도 마음은 항상 다른 플랫폼을 지향하며 살게 된 듯 하다. 

시스템 잡동사니 -> 게임클라이언트 -> 게임서버 프로그래머의 삶을 살아가는 입장에서 
네이티브 바이너리가 아닌 자바나 닷넷은 쉽게 경험하기 힘든 영역이었다. 
그러다보니 머리가 꽉꽉 막혀버려서 뻘생각과 잡짓을 삶의 낙으로 삼으면서도 보수적인 생각에서 한치도 벗어나지 못했는데
유니티 덕분에 모노디벨롭과  SharpDevelop(귀찮으니 앞으로는 #Develop 이라고 쓰자) 을 설치하고
초보수준이지만 C#을 건드리면서 저절로 튀어나온 탄성!!
야~! 이거 신세상이네~~!! 

어쩌면 모노는 내가 그리도 찾아 해메던 크로스 플랫폼에 대한 종착점이 아닐까 하는 생각까지...
거기에 모노 2.6 부터는 LLVM도 지원하지.
LLVM 의 자바스크립트 백엔드인 emscripten 의 강력함을 생각하면
네이티브 바이너리에 대한 집착을 버려야 할 시점이 생각보다 빨리 올지도 모르겠다. 

아무튼 똥인지 된장인지 알려면 일단 찍어먹어 봐야지.

테스트용으로 구동중인 우분투 10.04 서버에 모노를 설치하자. 
2.8을 설치하면 .Net 4.0 도 지원한다고 하지만... 뭐 나중에 병렬 프레임웍을 사용할 때나 해보고~
나와라~ apt-get~~!!!

sudo apt-get install mono-1.0-gac mono-2.0-gac



이제 #Develop 에서 C#으로 콘솔 응용 프로그램을 하나 만들자. 



모노 1.0과 2.0을 깔았으니 .NET Framework는 4.0이 아닌 3.5!!! 로 설정한다. 

자동으로 만들어지는 Hello World 밑에 한글이 UTF-8 로 잘 빠지는지도 확인할 겸 적절한 메시지를 하나 더 출력하자. 

using System;

namespace console_test
{
    class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            Console.WriteLine("우하하하!!");
            
            Console.Write("Press any key to continue . . .\n");
            Console.ReadKey(true);
        }
    }
}


 
윈도에서 실행시킨 화면은 



생성된 console.exe 파일을 리눅스로 옮겨서 돌려보면




정말 세상 좋아졌네.


은양의 프로그래밍 세상에서 C# 서버 코드를 참고, 전송된 바이트값을 바로 리턴하는 간단한 에코서버를 만들었다. 
우분투로 옮기고 실행시킨 뒤 텔넷으로 접속해보니 아주 잘 동작한다. 



이거 짭짤한데~??


내친김에 가상머신에 코분투 10.04 를 설치했다.
데스크탑 폰트는 나눔고딕으로 맞춰주었고 mono-2.0-gac 가 이미 깔려있는 상태. 
여기에 윈폼을 돌리려면  mono-winforms 패키지를 추가로 설치해주어야 한다. 

sudo apt-get install mono-winforms-a11y 




#Develop 에서 간단한 윈폼기반의 실행파일을 하나 만들어 본다. 

 

이 실행파일을 방금 설치한 따끈따끈한 코분투로 이동시킨 뒤 돌려보자. 두근두근~~



첫술에 배부를까마는... 폼 타이틀을 제외한 나머지 글자들이 모두 깨져버린다. 
실망감은 잠시 미루고, 찬찬히 뜯어보면 네모로 표시된 글자의 갯수가 윈도에서 찍으려던 한글의 갯수와 동일하다.  
즉 이것은 유니스크라이브 때도 지겹게 겪었던 폰트문제...

코분투에서 윈폼에 인식된 기본폰트와  다이얼로그 폰트를 다음 코드로 찍어보았다. 

            MessageBox.Show(SystemFonts.DefaultFont.Name);
            MessageBox.Show(SystemFonts.DialogFont.Name);



결과는 "DejaVu sans".
영문폰트라 한글이 없으니 네모로 치환된 것이겠지. 폰트 폴백도 자동으로 되면 좋겠지만... 흠냐리... 

다행히 예전에 링크해 둔 우분투 글꼴 설정에 대한 블로그가 떠올랐다. 
http://anothertimes.tistory.com/22
 

/etc/fonts/conf.d/69-language-selector-ko-kr.conf 에서 sans 구성의 DejaVu Sans 를 아예 날려버리고 나눔고딕만 남겨두자. 

                 <edit name="family" mode="prepend" binding="strong">

                        <string>DejaVu Sans</string> // 이 라인 삭제
                        <string>NanumGothic</string>
                </edit>



재부팅 후 다시 돌려보면 짜잔~~

 

글자 크기가 조금 작은게 불만이네~ 이건 다음에 심심할 때 또 다뤄보자~~

 

유니티 테스트 2 - 회전댐퍼

여가생활/Unity,Mono&.Net
뭐 지인들이 이 글을 보면... 왜 이 인간이 이 짓거리를 하는지 대충 파악할 듯... ^^;
아무튼 어제에 이어 회전댐퍼도 만들어 보았다. SharpDevelop 라는 툴을 만난 덕분에 코딩속도는 *3 이상 증가. 

이건 뭐 쿼터니온 관련 함수들도 모두 내장되어있으니 그냥 가져다 쓰기만 하면 되네~ 완전 행복한 놀이터~~!!



유니티 만세!!