2010년 7월 31일 토요일

[펌] iPhone App 개발 후 앱스토어를 거치지 않고 본인의 iPhone으로 배포가 가능한가요?

순정 아이폰에 개발자용(AdHoc 용)으로 앱스토어를 통하지 않고 배포는 가능하나
배포에 기간제한이 걸린다고 함.

자체인증서를 사용하는(개발자등록없이 개발하는) 경우에도 이게 되면 좋으련만..
음...


http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=104&docId=106139000&qb=7JWE7J207Y+wIOyVseyKpO2GoOyWtCDrsLDtj6w=&enc=utf8&section=kin&rank=1&sort=0&spq=0&pid=gadiWB331xRsssrmpZNssv--496538&sid=TFQYrFLnU0wAAH3icG0

[문화] 2NE1의 씨엘.

빅뱅이 현 예능계에서 대단한 아이들이라고 인정을 받고 있고.. 거기엔 어느정도 동의한다..

근데..

2NE1의 씨엘이 훨씬 더 많은 에너지와 재능으로 똘똘 뭉친것으로 느껴진다.

빅뱅은...음 뭐랄까 일종의 백화점 느낌이 강한데.. 2NE1은 에너지와 흥이 느껴진다.

특히 씨엘... 얘는 정말 대단하다..

뮤직비디오에서의 에너지는 더욱 놀랍다.

2010년 7월 30일 금요일

XCODE 개발자 라이센스 없이 아이팟 어플 (ipa) 만들기

일단 여기 참고하고..

http://story.tistory.com/242

-->근데 여기서 하란대로 하면 안되는 경우 있음. Xcode의 info.plist에서 패턴매칭으로 다 바꾸라고 되어 있지만, 맨 위부터 2개만 바꿔줘야 함. 다 바꾸면 Xcode 실행시키면 돌아가심.

아래 참고하면..

http://blog.naver.com/baek2187?Redirect=Log&logNo=150067093058


할 수 있음..


XCode 3.2.x 에서 구동됨.


@ipa를 설치한다 해도 해킹된 아이팟에서만 구동가능함을 참고할것.

2010년 7월 12일 월요일

gcc 컴파일중 "no new line at the end of file" 메시지 나올때...

윈도우에서 개발한 소스를 리눅스에서 컴파일할때 자주 나타나는warning인데..

c의 문법상 파일의 끝에는 반드시 개행문자가 하나 붙어줘야함. 근데 윈도우에서 개발하면이 개발툴들이 자동으로끝 라인을 날려먹어버림.

그래서리 이 코드를 gcc로 컴파일하려면 요딴워닝이 뜸.

Visual Studio나 Xcode같은 경우 특정 warning을 없애버리는 기능을 통해 안보이게 할 수 있는데 gcc에서는 불가능 함.

구글뒤져보면 C문법이 그런거니까 당연한 거다. 모든 파일끝에 엔터 한방씩 먹여라! 라는 답변만 수두룩함.
문제는 윈도우 쪽 에디터에서 작업하면 도루묵이 되는 경우가 많다는 거...

다행히 용자 하나가 나타나 gcc를 패치해서 막아버리도록 하긴 했는데... 이게 패치하려면 소스 있어야 하고 다시 컴팔하고 해야하니 무쟈게 귀찮고 오히려 엔터먹이는것보다 시간을더 먹을수도 있음.



결론: 참고 살던가 모든 파일끝에한줄 넣던가... 그냥 코드하나 짜서 모든 소스파일 끝에 개행넣어주는 프로그램 짜던가...
암튼 gcc 옵션에는 그런 기능 엄뜸.



References

  • http://crossgcc.rts-software.org/doku.php?id=mingwformac
  • http://www.tomatowax.com/ZeroboardXE/Home_HamRadio_Programming/5051
  • http://stackoverflow.com/questions/282851/what-flag-silences-gccs-warning-about-no-new-line-at-file-endings

2010년 7월 10일 토요일

아이폰 OS 기반으로 오디오 프로그래밍할때...

최근 3.0 버전 넘어서면서부터 AVFoundation이 제공되어 좀더 편하게 오디오 디바이스를 핸들링할 수 있게 되어 있긴 하나....

생긴 데이터를 보낼수 있는 방법이 URL(파일 또는 HTTP live streaming(?)으로)로 뿜는 방법 이외에는 제공하지 않음.

그래서 할수 없이... 파일저장용이 아닌 실시간 전송용으로는 AVFoundation같은 High Level API는쓸 수 없고 Low Level API를 써야하는데 이게 제법 귀찮은것 같으며, 정보도 많이 없음.

비록 맥OS, 아이폰 OS가 BSD계열이긴 하나 /dev/밑에 device에 직접 access 할 수 없음.
즉, 리눅스의 사운드 드라이버인 alsa, oss로 사용할 수없다는 말.

결국 오디오 데이터를 raw하게 손을 대고 싶으면... low level api를 써야함.

Low Level API로는

AudioToolBox, CoreAudio 등이 있음.

아마 AudioToolBox의 Audio Queue Services 기능을 이용해야 할 것 같긴한데... 좀더 들여다봐야 할 듯..(요기 정리가 잘 되어 있는것 같음)



아이폰 어플은 접해보면 접해볼수록 잘 만든것 같긴한데 자유도는 꽝이고 애플의 횡포에 적응해야 하는것 같음.


References
[1] http://sites.google.com/site/iphonecoreaudiodevelopment/
[2] http://developer.apple.com/iphone/library/documentation/musicaudio/Conceptual/CoreAudioOverview/WhatisCoreAudio/WhatisCoreAudio.html#//apple_ref/doc/uid/TP40003577-CH3-SW1
[3] http://iiixzu.tistory.com/17
http://developer.apple.com/iphone/library/DOCUMENTATION/MusicAudio/Reference/AudioQueueReference/Reference/reference.html#//apple_ref/doc/uid/TP40005117

2010년 7월 9일 금요일

TCP socket을 통한 파일전송에서 속도 안나오고 CPU 점유율 높아질때...

매우 단순한 원인이긴 했지만....

윈도우7에서...

한쪽에서 fread로 파일을 읽어 tcp socket으로 send하고...
다른쪽에서 tcp socket read하고 fwrite하는 매우 단순한 프로그램...

근데 이놈만 돌리면 CPU load 쫙쫙 올라가고 로컬에서 카피하는데도 20kbps나 나오나 그런다...

원인은 fread할때 한 바이트씩 읽어서 보내고 받아서 저장했기때문...
그래서 512byte나 1024byte씩 읽어서 보냈더니 성능 짱짱하게 나와줌.

근데 신기한건....
한바이트씩 읽어서 던지게 만든 코드를 리눅스에서 돌렸을땐 짱짱하게 잘 돌아줬다는 사실..


평소 개발습관이 리눅스에서 간단히 돌려보고 윈도그로 포팅하는 편인데...
이런 차이가 생겨주시니... 후덜덜하군..

암튼...덕분에 하루 날려먹었음. 할꺼 많은데..

2010년 6월 3일 목요일

아이팟 2세대 (2.2.1) --> 3.1.3 업글 --> 해킹?

1. http://www.felixbruns.de/iPod/firmware/ 에서 최신 펌웨어(3.1.3) 다운.

2. 아이튠즈에서 저걸 가지고 복원

 ---> 이러면 순정 3.1.3 이 됨.

3. 해킹(Spirit사용)

http://rebas.tistory.com/97

끝.

2010년 5월 25일 화요일

좋은 교육 사이트

ITunes University에 좋은 자료들이 제법 보인다.

스탠포드, 하버드, 호주의 스윈번즈등..

http://podcasts.swinburne.edu.au/ 여기 함 가보자. 좋다. 플래쉬 개발 비디오 강좌도 있다. 지금 이거 보고 있음...

2010년 5월 24일 월요일

윈도우7에서 "socket()" 함수가 -1 떨굴때/ socket() function returns -1 on windows7

Simon says.......Computer does not lie...


When you make command-line programming using visual studio rather then using automated MFC classes, you may encounter socket error that always returns -1 on "socket()" function call.

Following codes are required on intiali functions such as "main()"

    int nErrorStatus;
    WORD wVersionRequested = MAKEWORD(2, 2);
    WSADATA wsaData;

    nErrorStatus = WSAStartup(wVersionRequested, &wsaData);
    if(nErrorStatus!=0)
    {
        printf("WSAStartup failed\n");
    }


Also, when you make it clear, you can use following code.

    WSACleanup();

윈도우7에서 telnet 사용하기/How to use 'telent' on Windows7

Summary
=========
Control Pannel --> Program --> Windows Functions enable/disable --> check 'telnet client'

제어판->프로그램->프로그램 및 기능->Windows 기능 사용/사용 안함 클릭
제일 아래 텔넷클라이언트 체크박스 체크.

끝.

요기 참조하는게 더 빠를꺼임. 근데 애드센스인지 때문에연결이 가끔 허벌 느려짐.
http://cheum.net/entry/Telnet-uses-from-window-7

2010년 5월 23일 일요일

Visual Studio: 명령어 인자 주기

아는 사람한텐 너무 쉬운거지만...

커맨드라인 옵션을 주고자 할때 사용방법~

이를테면,

c:\test.exe arg1 arg2

요로코롬 주고 싶은데 F5를 눌러버리면 그냥 test.exe만 실행됨.

인자 주려면~

"프로젝트속성 -> 디버그 -> 명령줄 인수" 에다가 인자("arg1 arg2")를 넣어주면 됨.

음..

알면 당연히 쉬운거고..

모르면 헤매는거고..

ㅋ~

C로 된 함수를 C++에서 불러쓸때 참고사항

컴파일 레벨에서는 큰 문제없이 조정가능한데...
링킹할때 요상스런 메시지와 함께 에러가 뜨는 경우...

C함수를 프로토타이핑하고 있는 헤더를 include할때

#ifdef cplusplus
extern "C"
{
#endif

#include .....


#ifdef cplusplus
}
#endif

를 씌워주고 새로 컴파일 하면 됨.
이유는 말로 설명하자면 길어짐. 암튼 링킹할때 symbol을 Visual Studio가 못찾는 거임. prefix가 C++용 일떄와 C용일때 다르다는 정도만 알고... 그냥 습관적으로 마촤주자~


근디...

만약 MFC에서 커맨드라인용으로 컴파일 하다보면 저렇게 해도 안될꺼임.
걔는 디폴트로 "cplusplus"가 정의가 안 되어 있기 땜시롱...

그랄땐 그냥 무작정 extern "C" { ... }로 씌워버리삼.

2010년 5월 20일 목요일

Visual Studio 2008에서 command line 프로그래밍 하기

프로토콜 스택만드는건데... 매번 UI 작업하는데 쫘증이 밀려와서 걍 command line programming으로 갈아탐.

간단한 작업 방법은 다음과 같음.

(*참고. 떡검 색히들. 개나라당 색휘들.. 이런 떨거지들을 지지하는 넘들은 내 블로그 보지마라. 느그들 보라고 쓴글 아니다. 물수제비 폭탄에 맞아바야 아~~~ 인생 둋같이 살았구나 할끼야?)

암튼......

먼저 1번...

아... 1번이라고 쓰면 북한이 사주한 거라고 할라나? 븅신들. 개좆중똥들...
언제부터 '1번'이란 말을 쓰면 북한이랑 연결시키는 거냐? 수치를 모르는 종자들.


1. 프로젝트 새로만들기 --> Visual C++ --> Win32 --> Win32 콘솔 응용 프로그램 선택

머..프로젝트야 알아서 이렇게 만들면 됨.

2. 끝! ㅎㅎ


팁1. pthread등 기타 라이브러리를 쓰면 Alt-F7 눌러서 프로젝트 셋팅에서 관련 lib 파일 추가.
팁2. socket 프로그램일 경우 마찬가지로 "Ws2_32.lib"추가
팁3. main 함수가 조금 다르게 생겼을 꺼임. 그냥 하던대로 하고 싶음 아래와 같이 해도 무방

int main(int argc, char *argv[])
{

}

#if 0
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
#endif

unicode등 때문에 저렇게 한건데... 필요에 따라 _tmain을 써도 되고...

윈도우 프로그래밍: 짜증나는 GUI 프로그래밍..

사소한 기능 하나 만드는데에도 GUI를 만들어주고
변수만들어주고 연결해주고...
다시 화면에 보이도록 리스트, 트리...등등..

그러다 UI 로직 바뀌면 삭 새로 짜고 -_-# 뷁!

으아아아아악!!! 짜증나!!!

그냥 리눅스에 하듯이 커맨드 라인입력 받고..출력하고 하면 얼마나 편해애애애애애~!!

쫌 쉬운 UI 프로그래밍 방법 없나...

Qt로 넘어갈까부다. 에이 구찮으!!

2010년 5월 17일 월요일

2세대 해킹팟 --> 3세대(OS 3.0) 해킹팟

http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=10206&docId=69506040&qb=7JWE7J207YyfIE9TIOyXheq3uOugiOydtOuTnA==&enc=utf8&section=kin&rank=1&sort=0&spq=0&pid=f/aFRg331y0ssatg6wZssv--425611&sid=S-FnNPJZ8UsAAE1qFj0

여성 아이돌 그룹 표절 참 많이 한다.

내가 음악을 그리 많이 듣는 편은 아니지만..

가끔 TV나 라디오등을 통해 들려오는 아이돌그룹들의 노래가 내 귀에 짝짝 달라 붙는다.

근데..

어? 어라? 어어어라라? 이거 많이 듣던 멜로디인데? 아... 번안곡 이구나...

근데 이게 왠일? 다 자작곡이라고 하네?

특히, 카라의 루팡은.... 요건 제일 좋아하는 노래이긴 한데 쫌 어디서 많이 듣던... 표절지적을 받는 부분 말고 하이라이트부분이 상당히 귀에 익음..


티아라의 너땜시롱 미쳐뿐당게.... 요건...쫌... 베낄게 없어 브리트니꺼를 베끼냐.. 그냥 사오지 그랬어...
(http://blog.naver.com/khsgreat?Redirect=Log&logNo=60104376767 참고)
이건 너무 노골적인거 아닌가 싶을정도....

허긴... 나라 돌아가는 꼬라지가... 검은색도 희다고 빤빤하게 우겨대는데.... 광대판들이야 오죽할까..

일종의 나랏님들 하는 꼬라지에 대한 패러디인가부지.

2010년 5월 15일 토요일

오픈소스 게임류

예전 한참 공부할때에는 오픈소스 게임의 수준이 그닥~수준이거나
머드게임이 주를 이루었었는데...

요즘엔 머드게임 찾는게 더 어려운 듯... 이게 소켓 프로그래밍 공부에는 짱인데...

암튼..

격투게임, MMORPG게임류도 제법 오픈소스가 나오는 모양임.

  • Ryzom : http://dev.ryzom.com/
맥에서도 컴팔할 수 있도록 xcode용 프로젝트 파일이 있긴 하나 거의(?) 최신에 가까운 Xcode를 필요로 함. 지금 진행중인 맥용을 진행중인 프로젝트가 있어서 새로 설친 못하고 입맛만 다셔봄. 나중에 짬나면 윈도그에서 작업해볼 예정....덴장..근데 시간이 없어어~~~~
(여기서 정보 얻음: http://gamemook.com/entry/mmorpg-ryzom-now-open-source)

  • http://blog.wolfire.com/2010/05/Lugaru-goes-open-source
(여기서 정보 얻음:http://gamemook.com/entry/humble-indie-bundle-open-source)

파이어폭스 검색엔진 추가하기

파이어폭스가 요즘 이상한데 나만의 현상인지 뭔지 모르겠음.

일단 증상.

1. 맥북: 검색엔진에 네이버 추가 안됨. 아이맥에는 잘 되어 있는데..
2. 윈도우 : gmail에서 메일 내용 입력할때 한영전환 안됨. PC가 2대 있는데 모두 동일증상.


해결 방법
1. 검색엔진 추가 :
원리는 http://www.numz.net/won/analysis/?item_no=384154를 참고하면 되고...
그냥 바로 추가하고 싶으면 http://mycroft.mozdev.org/search-engines.html?name=Naver 에 가서 네이버 선택하면 됨

2. gmail 한글입력 안되는거:
원천적 해결방법 못찾음. 그냥 ESC누르고 다시 입력창 클릭으로 걍 넘어가고 있음.

2010년 5월 6일 목요일

윈도우7 정품 인증 업데이트

윈도우 XP에서부터 적용되기 시작한 훌륭한 기능인 정품인증 기능이 윈도우7에도 역시 있다.

정품을 써야 하는 사실은 틀림없는 사실!! !!
복돌이들은 입이 백개라도 할말 없음!!
그냥 조용히 감사한 마음으로 쓰는것에나 감복해야 할 일!
물론 정품구입으로 꼭 이어져야 할 거임.
다만....쫌 싸게 깎아주면 더욱 고마울터!

최근 윈도우7 정품인증 업데이트로 인해 대량의 밴(?)이 예상됨.

다만, 내껀 분명히 정품인데.. 분명 제대로 인증까지 다 했는데~!! 혹여.. 정품이 아니라고 뜰때를 위한 방법은...

아래를 참고.

http://windowsforum.kr/?_filter=search&mid=board04&search_target=title&search_keyword=%EF%BF%BD%EC%94%A4%EF%A7%9D%EF%BF%BD&document_srl=942215


그리고 여기를 참고..
http://www.blogger.com/post-create.g?blogID=6451847104785419526


에헴!

정품 쓰십셔.

2010년 5월 3일 월요일

Endian 관련 함수들

int SHORT_little_endian_TO_big_endian(int i)
{
return ((i>>8)&0xff)+((i << 8)&0xff00);
}

// 4-byte number
int INT_little_endian_TO_big_endian(int i)
{
return((i&0xff)<<24)+((i&0xff00)<<8)+((i&0xff0000)>>8)+((i>>24)&0xff);
}

ntohl() //Network to Host byte order (Long)
htonl() //Host to Network byte order (Long)

ntohs() //Network to Host byte order (Short)
htons() //Host to Network byte order (Short)

unsigned int change_endian(unsinged int x)
{
unsigned char *ptr = (unsigned char *)&x;
return (ptr[0] << 24) | (ptr[1] << 16) | (ptr[2] << 8) | ptr[3];
}

루비 & 루비 온 레일즈에 대한 단상 2

슬슬 재미가 들을려고 함.

일단 레일에 올라타기가 꽤 개나라당 스러워 그렇지 일단 올라타면 반복패턴 작업임.

DRY(Don't Repeat Yourself)가 모토이긴 한데..

아직 예전 코딩습관을 버리질 못해 매우 반복적인 코드를 짜고 있음.


그러나 문서나 서적의 수준은 아직도 밑바닥..

우리나라에서는 2년전까진 그나마 있다가 지금은 거의 씨가 마른 수준..

외국에선 잘 나간다고는 하는데....

솔직히.... 이거 프로젝트 진행하는 애들이 "이제 나 안해" 하면 대책 안 설수 있음.



아.... 루비온레일즈는 괜춘한데..

루비 언어가 괜춘한건진 아직 감이 안 섬. 그닥...

Ruby; Cookie & Session

쿠키(Cookie) 방식이 아마... 1998년쯤 제안되어서 사용된 것으로 기억하는데..
아직도 광범위하게 사용되고 있음.

머 기본 아이디어는..... 단순해서리... 굳이 어렵게 생각할건 엄뜸.

사용자 브라우저(뽜이어뽁스, 인스플뤄등)에서 웹사이트에서 넘겨받은 값을 저장하고 있다가.. 웹사이트에서 필요로 할 때 마다 넘겨주는 데이터를 의미하는데...
(즉, 식당에서 번호표를 줄 선 손님들한테 노나 줬다가 직원이 "몇번 이시죠?" 라고 물으면 번호표를 보고 "저 몇번인데요" 하는 거임)
(또다른 예로... 개나라당이 떡검한테 공천권 순서표 노나 줬다가... 개나라가 "몇번째고?"라고 물으면... "지가요 행님 정적도 누명뒤집어서리 솎아냈고요~ 좀 신경써 주이소~ 그라고, 저 몇번입네다" 라고 대답하는거임.)

아..또 배가 산으로 갔다.


암튼, 근데 이것이 클라이언트 브라우저에 있다보니 조작이 가능함. 이를 확인키 위해 서버쪽에서도 서로 값을 가지고 있어줘야 함. 그래서리 비교해보도록 함.


단순 쿠키를 넣는 방법에 대해서는 나중에 다시 알아보도록 하고..

일단 세션을 활용하는 방법은 다음과 같음( 즉, 쿠키도 쓰고 서버에다가 저장도 하고)

1. rake db:sessions:create

2. rake db:migrate

3. application_controller.rb 파일을 열고

protect_from_forgery:secret=>'8fc080370e56e929a2d5afca5540a0f7'

요 줄을 위처럼 수정해 줌. 근데 뒤의 난수는 막 때려넣으면 될 듯 함.

3.5 config/environment.rb 파일을 열고... 젤 끝에 쯤에다가

config.action_controller.session_store=:active_record_store
config.action_controller.session={
:session_key=>'_dduckgum_session',
:secret=>'f914e9b1bbdb829688de8512f...9b1810a4e238a61dfd922dc9dd62521'
}

이걸 우겨 넣음. 물론, 적절히 위 내용에서 값 수정해도 됨.

4. script/server 재실행

5. 사용법
sessions[:user] = "userid" : 할당할때(주로 로긴할때겠지)
sessions[:user] = nil : 값 날릴때(당빠 로그아웃이지)

필요할때마다 sessions[:user] 를 불러다 쓰면 됨.
":user"는 당연히 느그들이 원하는 변수명 갖다 쓰면 됨.

즉, sessions[:dduckgum] 라고 써도 된다는 말임.

6. 가끔!!
다 하라고 하는대로 했는데도 안될수도 있다. 그땐 db가 꼬였다고 생각하고, rake db:sessions:clear 로 함 날려주고 새로 해보자.
안되면 브라우저 죽였다 띄우는 것도 한 방법..



@여기서 개나라당은 한나라당 아님. 오케? 사면바리 개놜하당아.
@여기서 떡검은 대한민국 검찰 아님. 절대 아님. 오케? 난독증 색검아.
@습하 더러버서..

Ruby; link_to 사용법



근데 :confirm이 먹지 않는다. 찾아보니, javascript를 include해야 하는 것 같은데...
넣어도 안되네? 왤까...

==> 순서가 중요함.

  • <%= link_to c.username, {:controller=> 'user', :action => 'show', :username=>c.username }, :confirm=>"Sure?"%>

    요기서 보는 바와 같이 :confirm은 두번쨰 옵션이 되어야 함. 즉, { ... }에 있는게 옵션1, :confirm은 옵션2가 되어야 함.

    털썩.... 구리다....


    Refer))
    http://www.tutorialspoint.com/ruby-on-rails-2.1/rails-html-links.htm
    http://www.ruby-forum.com/topic/174513
  • 국내 신문사 특색 정리(to be refreshed)

    조모 일보: 쓰레기, 극우파, 메카시즘, 친일파의 대변자. 한 겨울에 사내 게시판에 "추워요~"라고 쓴 글을 여름 기사에 "공공기관 에너지 낭비 극심! 춥다고 아우성" 이라고 쓰는 개쓰레기. 이완용의 후학들.
    중모 일보: 삼성홍보지...가끔 극우기사 띄우는데... 정체성이 사실 헷갈리는.. 그냥 홍보지나 하지..왠 정치판에 껴들어서리...
    동아 일보: 조모일보보다는 덜 극우파. 그러나 극우파라는 사실에는 변화 없음.
    서울 일X: 극우파에 합류중. 가끔 뜬금없는 기사를 띄웠다 내렸다 하면서 게릴라즘을 보여주고있음.
    뉴데일X: 이건 조모일보보다 훨씬 극우파. 뉴또라이들로 구성된 극극우파. 나치즘하고 비슷한 수준. 지옥이 있다면 가장 뜨거운 불지옥에 떨어질 인간들이 모여서 만든 신문.
    세계 일X: 근거없는 기사의 일인자로 등극 중. 결코 확인할 수 없는 "모 전문가에 의하면~", "내부 관계자에 의하면~" 을 남발. 얘네도 게릴라즘에 합류
    한겨X : 대표적인 진보신문..비판이 살아 있으나... 비판만 살아 있기도한....
    경향일X: 원래 완전진보는 아니었지만 삼숭/개나라당과 대립각을 세우면서 진보신문으로 거듭났음.
    내일X문: 이거 물건이다. 미디어 오늘과 유사한 정도로 저널리즘이 살아 있다. 탐사보도 추적보도 좋다. 잘되길 바란다.
    신동X: 이건 동모일보처럼 쓰레기가 아니다. 이름만 비슷할 뿐 저널리즘이 살아있다라고 볼수 있음

    2010년 5월 2일 일요일

    루비 & 루비 온 레일즈에 대한 단상

    내 살다살다 이렇게 문서화 엉망이고 프로그래밍 로직이 자의적인(또는 규칙이 없는) 랭기지는 참 처음 본다.

    그냥... 개인적인 프로젝트 랭기지 수준이라고 해야 하나? 도저히 범용 수준의 랭기지로 보기에는 짜증이 물밀려 온다.

    변수명도 내가 원한 이름이 아닌 자동으로 복수형으로 만들어진다거나...
    리턴값 확인하는 루틴자체가 없다거나...

    물론 알면 좋다.
    근데 알려고 해도 알 방법이 없다.
    그냥 알음알음 누가 이런걸 이렇게 해결했다더라 라는 내용으로 파악해 가야 한다니...

    한참 멀었다.....

    왜! 에 대한 설명이 너무나도 부족한 언어....
    그냥 블로그나 만드는데 만족해야 할 언어로 보인다.

    2010년 5월 1일 토요일

    Ogame 과 그 아류들.. 그리고 국내 서비스

    [1] 일단 정식 ogame은 gameforge에서 운영하는 '오게임(www.ogame.org)'임

    [2] 근데 이거이가 재미있으니까 다양한 오픈소스 프로젝트 등장
    • oasisrage
    2.0버전까지 출시되고 잘 나가는 듯 했으나, 현재 개발/배포 사이트 폐쇄된 상태. 도메인을 날려먹은듯. 1.x버전은 자잘한 버그가 있고 기능상 제약이 있는듯 함
    • Xnova

    • XGP

    [3] 국내 운영 사이트

    - 모게임2(www.mogame2.kr)
    유료결재 시스템등이 없는 순수한 비영리로 운영되고 있음. 그러다보니 망투자가 안되어서 극도로 불안한 상황. 5월부터 나아진다고 하니 기대중이기는 하나 부분적으로 유료화가 진행될 것으로 보임. 초기 oasisrage기반으로 작업하다가 현재는 XGP기반임

    *추가(2010.05.20): http://forum.mogame2.kr/metabbs.php/post/32
    5월 22일 리뉴얼 후 서비스 재개 한다는 군요. 현재까지 공개된 이미지로 보건데 인터페이스가 화려하고 개발/관리 하시는 분이 의욕이 있으니 앞으로 큰 성장을 이룰 것으로 예상되는 사이트임. 스크립트 하나 짜서 매일 DB파일을 백업해 주시는 쎈스!!를 발휘해 주시기 바랍니다. ^^ 공간이 걱정이 된다면, gmail쪽 이메일 계정으로 보내도록 만들어 놓으면 되지 않을까 한다능~ 아무튼 화이팅입니다. 벌써 개장이 기다려지는군요.


    - 인맵 (http://inmap.cafe24.com/xnova/login.php)
    유료가 도입되다보니 빠른 속도와 쾌적한 게임 환경을 제공하긴 하나... 유료이다보니 밸런스가 무너질것 같음. 약간 버그도 보이기는 하는데 게임하는데는 지장없음. xnova기반 게임.

    - 다카하시?(http://121.167.133.222/dakahashi/)
    XGP기반으로 비공식적으로 운영되는 사이트인듯..
    디자인도 새로 만든것 같고, 나름 HTML/CSS등에 조예가 있는 사람이 만든듯. 다만..... 게임하나 하자는데 주민번호가 왜 필요하니? ( ---> 아무 번호나 쳐도 들어감 )

    ===> 오늘(05.06) 갑자기 맛 갔음. 로긴 안되길래 들어가봤더니... 여기도 DB 파일 날려먹음. 쩝쩝... 모게임2가 잘 안되길래 이곳의 성장에 꽤 공을 들였는데... 며칠새 데이터 완전히 날려먹음..

    [4] 결어

    - 시스템 밸런스를 무너트릴 위험을 가진 유료화를 꼭 해야 했을까?
    물론 서버 운영하려면 돈이 든다. 하지만 다른 편의장치나 서비스를 제공해주고 그쪽에서 돈을 받는게 더 낫지 않았을까 한다. 이를테면, 적의 공격이 오거나 할때 SMS나 email로 전달해주는...정도? 게임의 밸런스가 돈빨에 무너지지 않을수 있도록 할 수 있었을텐데 하는 아쉬움이 있다.

    - 국내 게등위가 하는 일?
    요즘 이런 조직이 왜 필요한가 싶다. 물론 잔인하거나 선정적인 게임은 아이들이 못하도록 막아야겠지만.. 구더기 무서워 장 못담그는 형태의 접근방법이 매우 아쉽다.
    모든 게임물에 대해 심의를 받으라는건.... 모든 출간되는 책에 대해서도 심의를 받으라는 것과 마찬가지가 아닌가. 차라리, 자율적으로 게임 서비스를 제공하고 업체 자체적인 기준에 따라 연령을 제한토록 하되, 문제가 되었을때 처벌을 매우 강력하게 내리는게 어떨까 한다.

    - 사용자 데이터의 시스템적 중요성, 신뢰적 중요성(추가)
    아...이건 수백번 강조해도 지나침이 없는 것인데... 다른 건 다 날려먹어도 사용자의 게임데이터는 절대 날리지 말아야 하는것인데.... 아무래도 학생들이고...개발자들이거나 개발에 관심있는 분들이다보니... 그 쪽에 큰 관심을 두지 않은게 아닌가 싶다. 물론 무료로 운영되는것이니 언제 접어도 이상할 일은 없으나, 게임상의 성장에 적지 않은 시간들을 투자한 사람들한테는 큰 실례를 저지른 것이다. 이번 실수들을 토대로 앞으로의 성장에 밑거름이 되길 바란다.
    아.... 두군데에서 연타로 내상을 입으니.... 쩝... 접으란 하늘의 계신가부다. 오늘은 위닝10을 달려야겠다. ㅋ~

    PSP에서 PS1 게임을 돌리는 방법

    험.. PSN network에서 ps1게임을 다운 받아서 플레이 하면 됨.

    뭘 더 바램?


    또다른 방법이 있다는데 뭔소리인지는 모르겠음. 커피는 뭔지... 가카가알면떡검하고뉴또라이시켜4강판다고하겠군

    일단 적어는 봄.

    [1] 뭔가를 다운. (가카에게도개념다운)

    http://nitroroms.com/list/Sony%20Playstation%20%28PSX%29/by-name/page-1

    [2] 뉴또라이들을 떡검(EBOOT.PBP)으로 변환

    [3] 떡검을 "PSP\GAMES\디렉토리명" 에다가 때려넣기


    좀더 자세한 방법은 아래 참고

    http://scoops.tistory.com/25

    2010년 4월 29일 목요일

    Visual Studio 2008에서 난데 없이 mfc90d.dll을 못찾는다며 죽을때

    파일 검색해도 안나올꺼임.

    원인은...

    매니페스트를 disable시켰기 때문임.

    근데 매니페스트를 포함시키면 링킹시에 에러뜨면서 진행이 안될꺼임.

    그래도 허고싶다면..


    일단 '링커'의 '매니페스트 파일'의 '매니페스트 생성'은 enable해주고... '매니페스트 도구'의 '입력 및 출력'의 '매니페스트 포함'을 아니오로 하면 됨.

    난 도저히 용서가 안된다.

    노무현 대통령을 죽음으로 내몬 사람들..

    결코 잊지 않을꺼다.

    개떡껌. 개좆나라당. 개조중동.

    개독교. 개상도.

    수장된 불쌍한 장병들마저 정치적으로 이용하는 개색히들..

    지 자리 지킬려고 구라쳐대는 해참총장, 장교들..

    니들이 사람이냐?

    불쌍하게 불귀의 객이 된 애들이 밤마다 니 꿈에 나타날거다.

    잠 잘도 오겠다.

    2010년 4월 28일 수요일

    자바스크립트, Ajax 추천 21선

    http://resources.savedelete.com/21-awesome-javascript-ajax-effects-every-web-developer-should-know.html#utm_source=faqpal.com

    아.... 자바스크립트도 공부해볼까...

    할거많다..

    애니웨이, 올해는 뭔가 잘 안풀리는 해..

    2010년 4월 26일 월요일

    fopen, fclose 시에 뜬금없는 SIGABRT

    multithreaded 상에서 그냥 fopen/fclose한것 뿐인데..

    SIGABRT 띄우면서 갑자기 돌아가실때....

    0x00007ffff6ec34e5 in raise () from /lib64/libc.so.6
    (gdb) up
    #1 0x00007ffff6ec49b0 in abort () from /lib64/libc.so.6
    (gdb)
    #2 0x00007ffff6efe66d in ?? () from /lib64/libc.so.6
    (gdb)
    #3 0x00007ffff6f03c76 in ?? () from /lib64/libc.so.6
    (gdb)
    #4 0x00007ffff6f06d0e in ?? () from /lib64/libc.so.6
    (gdb)
    #5 0x00007ffff6f08a59 in malloc () from /lib64/libc.so.6
    (gdb)
    #6 0x00007ffff6ef4b6b in ?? () from /lib64/libc.so.6
    (gdb)
    #7 0x0000000000403d53 in PrepBuffer_SendFragment (param=...) at libPrepBuffer/src/PrepBuffer.c:259
    259 fp=fopen((char *)PrepBuffer->fname, "rb");



    원인을 못찾겠음. 당연히 PrepBuffer->fname의 값은 정상임.


    http://valgrind.org/
    http://perens.com/FreeSoftware/ElectricFence/

    을 써서 찾아보라고는 하는데... 번거로버서리...에잇!!

    2010년 4월 25일 일요일

    난 제대로 가고 있나?

    너무 정체되어 살아간지 오래된것 같다.


    뭔가를 해야할텐데...


    음...황지 한번 돌아보고 싶다...

    인요한 박사...

    이런 분들이....이런 가족들이 진정한 크리스챤인것 같다.

    말을 섞어보면 느껴지는 큰 그릇...

    그런 그릇을 가진 사람이 부럽다..

    그런 그릇을 가진 사람들이 배출될수 있는 사회분위기... 교육시스템도 부럽다..


    개독교는 수백번 까여도 할말 없음.

    왜 같은 종교를 믿는것 같은데 하는 짓들은 천지차이일까? 민족성인가?

    2010년 4월 23일 금요일

    textmate 이거 물건인것 같다.

    윈도우용 텍스터 에디터가 ultra edit 라면..

    맥용으로는 textmate가 있음.

    이게 꽤 쓸만해서 windows용으로 '카피'한 애들이 있음...

    두군데정도에서 카피 프로젝트하는 듯함. 어느정도 안정적으로 돌아가는지는 확인요망.

    http://www.e-texteditor.com/
    ==> 요놈은 돈받고 팜.

    http://intype.info
    ==> 아마츄어?

    루비, 개발 툴

    1. 그냥 툴 없이 에디터로 하기..
    --> textmate 가 최고인듯. 울트라에디트만 썼었는데 이녀석도 좀 써줘야 할듯.
    --> 맥에서는 쵝오

    2. locomotive 설치
    --> 2007년정도까지 개발되고 지금은 거의 놀고 있는듯... 아님 다 개발된건가?
    --> http://sourceforge.net/projects/locomotive/files/

    거기서 locomotive2.0 먼저 깔고, bundle을 깔면 됨.
    나중에 좀 써보고 어떤지 재 포스팅 예정.



    @루비 인기가 2006년~2007년을 정점으로 좀 시들한듯....
    @성능측면에서는 그리 나쁘진 않은듯 한데.. 음... 루비의 단점이라기보다는 루비의 진화에 있어서 몇가지 실수가 있지 않나 싶다. 몇가지 보이긴 하는데.. 좀 치명적일수도 있는... 좀더 공부한 담에 다시 썰을 풀어봐야겠다.

    TCP 전송 속도 조절하기

    당연히 단순한 거여야 하는데 뜻밖에 찾기 어려웠음.

    그동안 TCP의 성능을 높이려는 노력은 많았으나, 전송속도를 조절하는 것은 네트웍 레벨에서는 거의 불가능함.

    근데 대부분의 P2P 사이트/프로그램등에서 전송속도를 제한해서 쓰고 있음.

    당연히.

    흔한 방법이고 좀더 나이스한 방법이 제시되어 있을거라 생각했는데..

    걍 시간값 잡아서 통계낸 담에 sleep 주고 있었음.

    while(!feof(fp) && sent_len < fragment_size)
    {
    int size;
    size=fread(&ch, 1, 1, fp);
    ret=send(sockfd, &ch, size, 0);

    if(ret<=0)
    {
    break;
    }

    if((sent_len % 512)==0) usleep(100);//nanosleep(&rate_timer, NULL);
    sent_len+=size;

    }

    이건 그냥 예제일 뿐이고..

    시간값 계산하는건 나중에 따로 만들어서 올리덩가 하겠음.

    그냥 아이디어 차원에서 보기바람.

    2010년 4월 20일 화요일

    루비, 닥치고 달려보기

    0. 디렉토리 생성
    % rails -d mysql mugame

    1. 일단 db 만들기
    % ./script/generate migration create_user_table

    2. 생성된 파일 열고 에디트

    class CreateUserTable < ActiveRecord::Migration
    def self.up
    create_table :userTBL do |t|
    t.string :user_id
    t.string :password
    t.string :email

    t.timestamps
    end
    end

    def self.down
    drop_table :userTBL
    end
    end

    3. DB 실제 테이블 생성
    % rake db:migrate

    4. app/model/users.rb 생성

    5. app/controller/users_controller.rb 만들고 edit
    ==> 파일명 주의
    def index
    end
    추가

    6. app/view/users/index.html.erb 생성

    'Ruby Sucks' 추가

    7. script/server start

    2010년 4월 19일 월요일

    Socket Pogramming중에 SIGPIPE로 서버 돌아가실때..

    코드를 일부 수정해서 돌렸더니 갑자기 서버가 돌아가신다..

    SIGPIPE, Broken Pipe 하는건데..

    아래 참조.

    http://gkoh.ft.co.kr/numz/section/club.php?slid=csdev&bno=1594

    핵심은..

    SIGPIPE를 ignore하도록 처리해주는 거임.

    흠... 어떻게 보면 기본적인건데 여지껏 모르고 살았다니..원..

    2010년 4월 18일 일요일

    Ruby.. Rails... session (cookie)

    이거 책 (agile rails~~ 3rd edition)보고 따라 했는데도 안된다 싶으면...

    브라우저의 쿠키 함 다 날려봐라..

    그럼 된다.

    머...이유는 대충 알겠는데 주저리 설명하기도 싫고...

    Rails....Ruby.... It sucks..

    일단... 루비... 레일즈..


    너무 규격이 자꾸 바뀐다. 그것도 휙휙~

    backward compatibilty가 매우 빈약하다...
    --> 개발자의 의지를 매우 꺾어버린다.

    코드...
    결코 쉽지 않다.

    PHP는 공부하지 않고 그냥 API보고 바로 개발이 가능한데...

    레일즈...루비... 기본 문법 설명조차 부실하다..

    나름 바이블이라 볼수 있는 agile~ 어쩌구하는 책도 ... 주저리주저리 말은 많은데 바뀐게 많아서리 그닥 쓸모없다.

    너무 정보도 부실하고....

    쩝..

    괜히 공부하나 싶기도 하다..

    2010년 4월 17일 토요일

    Ruby on Rails 2.x.x & Scaffold && ActiveScaffold

    최종 정리....이길 바란다..


    루비온 레일즈... 과연 이 랭기지가 앞으로도 계속 성공할지 의문스럽다.. 이건 다른 글에서 얘기하기로 하고....


    일단 정리를 하자면

    Rails 1.x 와 Rails 2.x 대는 많은 변화가 있었음(뭔진 모르지만 REST 기법 적용했다는데...)
    근데 이썩을 넘들이 Rails 3.x 만들고 있음.
    backward compatibility라는건 애시당초 생각을 안한건지..

    아..또 얘기가 엄한데로 흘렀다.



    최종정리!!

    1. Rails 2.x 대에서는 scaffold 는 'generator' 이다. 즉, 한번 생성된 이후에 자동으로 수정된 데이터베이스에 맞춰서 코드가 생성되는 기능 없다.

    2. 그래서 나온게 activescaffold 이다. 이 넘은 'plugin'이다. 즉, 데이터베이스의 변화에 맞춰 코드가 생성된다는 말. 이게 좀더 이쁘고 깔끔한 모양으로 표현가능하다고 한다. 근데 사용하기가 좀 귀찮고 어렵다는 군.. 콜롬부스의 달걀이겠지.


    참고한 곳


    http://www.viget.com/extend/rails-3-generators-scaffolding/
    http://www.ibm.com/developerworks/kr/library/l-activescaffold/ (요기 강추)
    http://earlruby.org/2009/06/getting-activescaffold-to-work-under-ruby-on-rails-23/ (요기도)

    2010년 4월 16일 금요일

    이번 천안함 사태에 대한 언론들의 문제점....

    머 말할 필요도 없이 기자들 접시물에 코박고 잠시 반성들좀 해야 겠다.


    특히.. 조중동 쓰레기는 말할것도 없고.. 너네 기사는 제목만 봐두 쓰레기야..


    새로이 쓰레기 대열에 합류하신 세계일보, 문화일보...

    잘 들어라..



    기사는 말이다...


    팩트를 가지고 말해야 하는거야.. 그렇게 얘기하는 근거가 있어야 해.

    근거가 뭐냐고? 증거나 논거지...

    소설을 쓰는게 아니고... 니가 사람들 선동하고자 하는 방향이 아니고...

    알아?

    밑도끝도없이 누가 그랬다. 그 근거는? "누가 그러는걸 들었는데 걔가 예전에 그랬을것 같다는 생각을 했다는 걸 들었대더라~" 가 근거면.. 그게 기사냐..

    야~ 이 개나리들아.

    밥은 니돈주고 먹고 다니냐?

    가서 오늘 마누라하고 니 새끼들한테 잘못했다고 하고 자라. 니 새끼가 자랄 나라 개떡같이 만드는게 니 애비라고.

    Ruby; 입력 필드 체크

    입력 필드가 유효한지 점검하는 방법..


    이번엔 app/mode/ 밑에 있는 rb 파일을 가지고 놈..

    validates_presence_of :field명

    이거만 써줌됨.

    만일 field명에 해당되는 곳에 값을 안 넣은 경우 사용자에게 에러를 띄워서 다시 제대로 할때까지 꼬장침.

    mysql; show tables, desc table_name

    mysql prompt 상에서....

    이 database내에 어떤 테이블이 있고... 그 테이블내엔 어떤 컬럼들이 있는지 확인하는 방법..


    mysql> show tables;

    테이블들 보여준다.


    mysql> desc table_name;

    컬럼들과 각 속성들을 보여준다..


    @이건 tip도 아니고 설명도 아녀...
    @이건 tip도 아니고 설명도 아녀...
    @이건 tip도 아니고 설명도 아녀...
    @이건 tip도 아니고 설명도 아녀...
    @이건 tip도 아니고 설명도 아녀...

    Ruby; DB alter

    음.. 요 루비 마음에 들라고는 하는데... 성능이 어쩔랑가는 조금 의심스럽긴 하군..

    암튼...

    개발하는 도중에 db table을 변경하고자 할때 유용한 기법...
    물론 SQL문의 ALTER 등으로 할순 있겠지만.... 쉽게 갈수 있으면 쉽게가는게 순리!

    %ruby script/generate migration addprice

    물론 뒤의 addprice는 임의로 쓰고싶은거 쓰면 됨. 그럼 db/migrate/2010xxxx_addprice.rb 생김.
    아래와 같이 에디팅해바.

    classAddPricedefself.up
    add_column:products,:price,:integer,:default=>0
    # 요건 내가 이걸 추가하겠다는 의미..
    # products TABLE에 price를 integer로 넣을꺼구... 기본값은 0(빵)으로 채워돌라는 얘기임.

    end
    defself.down
    remove_column:products,:price
    # 요건 나중에 roll-back 할때... 이렇게 하면 된다는 의미임. 지금 바로 동작하는건 아님.
    end
    end


    % rake db:migration

    하면 위 내용대로 반영됨...


    근데....

    generate ~~ 어쩌구 해서 새로운 파일을 db/migrate밑에 생성하게 했으면..
    전 버전의 파일들은 반영안되는듯...
    --> 확인안된 루머임. 확인할라면 금방인데...머...굳이...꼭 필요한것도 아니고... 내가 책쓰자는 것도 아니고... 알지요? 귀차니즘...

    루비 온 레인즈 중 scaffold 사용시...


    도대체 이놈이 뭐하는 녀석인가..

    scaffold !!

    웹프로그래밍을 일반적으로(또는 무식하게 ^^;;) 표현하자면.... 데이터(글, 파일등)를 등록하고 이를 데이터베이스에 저장하는 것으로 본다고 하자..

    그렇다고 했을때....

    저너마가 하는 일은...

    그냥 데이터베이스 생김새만 정해주면... 쫘악~ 관련 기능이 한방에 나오도록 만들어 놓은것으로 보면된다.

    말이 필요없다. 해보자..


    $ ruby script/generate scaffold Movie title:string description:text one_sheet_url:string

    위 명령대로 치면, Movie라는 app가 생기고 그 밑에 title, desc... 등을 column으로 가지고 이를 핸들링 할 수 있는 페이지가 쭉 뜬다.

    만일.. 아래처럼 뒤에 암껏도 안써준 경우에는 어떻할까?
    $ ruby script/generate scaffold Movie

    에러는 없으나 어떤 것들을 입력받아야 할지 모르므로 입력할 수 있는 공간이 없다.
    이왕이면 위위가 더 편하지 아니한가.. 물론 이렇게 시작해서 db/migrate/xxxxx.db 파일 수정해가면서 일일이 할수도 있다. 맨땅에 헤딩하겠다는데 말릴수야 없지..

    어쨌든..

    아래 링크는 꼭 한번 읽어보길. 선배들이 고생한 기록은 헛된것이 아니더라능...
    http://winchild.egloos.com/6778585

    @링크 거는것도 일일이 허락 받아야 하는건 아니겠지..


    추가...

    근데 db의 내용을 바꾸면 어떻게 되나???

    % ruby script/generate migration addprice

    하고 난 다음에 db/migrate/xxxx_addprice.rb 파일을 수정하고...

    %rake db:migration 을 하면...

    데이터베이스내에 반영은 된다..

    문제는 scaffold에서 자동으로 제공한 코드들이 동작안한다.

    왜냐? db는 업뎃되었으나 scaffold 관련 코드는 업뎃 안되었으니까?

    그래서 방법은?

    아직 없다. 찾고 있다. 현재로서는 아직 손댄게 없으므로 아래처럼 삭 날렸다(전혀 해결책 아님)

    %ruby script/destroy scaffold Movie

    웹질을 해보니 딴 넘들도 많이 고생하고 있다...
    루비....이거 잘 되면 편한거긴 한데..
    과대포장된 감이 없지않다..


    아직 안정화가 안된 모양이다.



    루비 관련 읽어보면 분명 도움되는 사이트들

    애자일 어쩌구 하는 루비책 보는 사람은 꼭 방문할것.
    http://winchild.egloos.com/6778585

    VLC UDP 스트리밍

    UDP로 수신한 데이터를 VLC를 통해 Play되게 하기..

    1. VLC 의 미디어->네트워크 스트림열기->UDP 선택
    주소는 VLC 플레이어가 설치된 PC의 주소임(스트리밍 서버의 주소가 아님)
    포트는 UDP 데이터를 수신하고자 하는 포트를 기재

    시작~ 하고 기다림.


    2. 스트리밍 서버가 될 녀석이 아래와 같은 코드로 전송토록 함.

    #include
    #include
    #include

    #include
    #include
    #include

    main()
    {
    char ch[1025];
    FILE *fp;
    int len;
    int sockfd;
    int ret;

    struct sockaddr_in servaddr;

    fp=fopen("media.avi","r");
    if(!fp) exit(0);

    memset(&servaddr, 0, sizeof(servaddr));
    servaddr.sin_family=AF_INET;
    servaddr.sin_port=htons(1234);
    inet_pton(AF_INET, "아이피 ㅋㅋ", &servaddr.sin_addr);

    sockfd=socket(AF_INET, SOCK_DGRAM, 0);

    while(!feof(fp))
    {
    len=fread(ch, 1, 1024, fp);
    ret=sendto(sockfd, ch, len, 0, &servaddr, sizeof(servaddr));
    printf("%d:sending %d byte\n", ret, len);
    usleep(1000*10);
    }
    fclose(fp);

    }


    3. 결과

    - 화면에서 플레이가 이뤄지나, UDP 로 데이터가 전달되고 있는 동안은 말소리 엄청 빠름.
    - 화면도 정지영상에 가까움.
    - 로그를 띄워보니 'header damaged' 라고 나옴.
    - 너무 빨라서 그러나 싶어 usleep값을 조절했으나 동일.

    4. 그래서..

    - MPEG 잘하는 후배녀석(서미)에게 급 도움 요청
    - 일반 MPEG파일은 안되고 TS 포맷으로 변환해서 전달해 줘야 한다고 함.

    5. 그래서리..

    - 다음팟 플레이어로 스트리밍용으로 변환(WMV 변환이라고 해놓고 파일은 AVI로 나옴)
    - 암튼, 변환해서리 재시도

    6. 그랬더니..

    - 안됨. 아예 화면 뜨지도 않음.
    - 로그를 보니, "avi demux error: avi module discarded (invalied file)" 이라고 함.

    7. 그래가지구서리..

    - 파일 변환이 잘못된듯 싶어 파일 변환 다른 툴로 다시 시도..하려다가...
    - 그냥 DVD의 VOB 파일을 냅다 열어서 시도..

    8. 그랬더니..

    - 플레이 되고 음성도 잘 나옴...
    - 다만, 패킷을 받는 도중에는 화면 딕딕딕 멈추고 점프하고 음성이 쪼오끔 빨리 진행되는 경향이 아직 있음.
    - 정리하면, 플레이는 가능하나 서비스했다간 욕얻어먹기 십상...

    9. 결론

    - 좀더 알아보자.

    10. 그래도 한번더....

    - 한번에 보내는 UDP의 크기를 10배(10240)로 올렸더니... 일단 패킷은 잘 간다...
    - 근데, 화면이 훅 날라간다. 즉, 네트워크 전송속도에 맞춰 플레이된다는 말..
    - 아마 VLC의 버퍼링(캐싱) 설정에 따라서 그런것인듯...

    2010년 4월 15일 목요일

    Hello Ruby !!

    아무 디렉토리에서

    % rails -d demo

    라고 하면.. 현재 디렉토리에 demo라는 디렉토리가 생김. 그 안엔 여러 샘플이나 기본 템플릿들이들어 있음.

    % ruby script/server
    라고 하면 웹서버가 뜸.

    그리고 웹브라우저로 http://localhost:3000 하면 해당 페이지에 들어가긴 하는데 뭔가를 누르면 에러가 뜰꺼임.

    db 설정 문제임. (http://ethanjoh.tistory.com/763)

    % rails -d mysql demo
    라고 해줌 됨. 자세한 이유는 위 링크 참조.


    아... 헬로우 찍어보기로 했지..

    % ruby script/generate controller say

    하면 기본 템플릿들이 주루룩 생김. 의미는 say라는 controller를 맹글어라~는 뜻임.

    app/controller/say_controller.rb 파일 생김. 요거 에디팅
    그 안에
    def hello
    end
    넣어줌.. 요 hello가 나중에 view를 위한 rhtml의 이름이 되야함..(아래 참조)

    app/view/hello.rhtml 파일 만들어서 에디팅..(UI 만드는 거임)

    그 다음은 책 참조..


    @@@ rails는 그냥 하라는대로 따라오면 된다는 말에서 만든 말이라고 함.

    2010년 4월 14일 수요일

    Ruby & Ruby on Rails 설치

    여기저기 기웃대다가 루비가 꽤 괜찮다는 얘기를 들어 며칠 시간내어서 공부해 봄.
    아직 우리나라에서는 그닥 유명하지 않음.
    외국(미국, 일본)에서 좀 유명한듯 하고... 루비 온 레일즈의 경우 꽤 유용할 듯 해 보임.

    단, 맥에 설치하려는데.... 참 설치하기 어렵네... 이틀을 닭샷을 날려서야 겨우 설치함.
    내 맥북이 쓰레기가 된 듯 함. 설치 코드들이 엮이고 섞여서리..

    암튼, 설치에 관련되어서는 아래의 링크대로 하는게 제일 편함.
    특히 mysql 설치할때... 꼭 소스코드 받아서 컴팔해 쓸것.. DMG 는 절대 안됨.

    http://hivelogic.com/articles/ruby-rails-leopard
    http://www.icoretech.org/2009/08/install-mysql-and-mysql-ruby-gem-on-snow-leopard-64-bit/
    http://ethanjoh.tistory.com/763



    루비온 레일즈 공식 사이트 : http://rubyonrails.org/download