시험 포스팅

Blogo 란 앱을 사용한 포스팅입니다. 다음은 소스 코드 입니다. object Test { def main(as:Array[String]) = println(“Hello, world”) } C로… void main(void) { printf(“Hello, world\n”); return; }

Add a Post Title

간만의 업데이트 Blogger에는 아주 많은 장점들의 합을 넘어선 단점이 있으니 소스 코드의 syntax highlight 를 지원해주지 않는다는 것입니다. DeskPM이란 OSX의 앱을 사용하고 있는데 이번에 2.0으로 업데이트하면서 이를 지원하게 되었습니다. 따라서 시험삼아 올려보겠습니다. [code language="scala"] val msg = "Hello, world" println(msg) [/code] Markdown 형식의 메시지 두번째 메시지 그만하지 딴건 지원이 되는데 소스코드 하이라이트는 자체적으로 지원하는 기능이 아닌가 봅니다. 아니면 조만간 지원이 되려나요? -.-

Ruby-processing 설치

요즘 웬만한 일은 scala로 처리하려고 하지만 사용자로 코드를 받아 eval 한다거나 하는 기능은 무리일것 같아 한동안 손놓았던 ruby를 건드려 볼까 생각중이다. 설치및 데모 실행 brew install rbenv : rbenv 설치 brew install ruby-build rbenv install -l : 설치 가능한 ruby 버전들 보기 rbenv install jruby-1.7.11 : ruby-build 설치 가능한 것 중 최신 버전 설치 rbenv global jruby-1.7.11 : jruby를 기본 ruby로 설정 (이건 안하는게 나을수도 있겠다) ruby -v : 1.7.11이 실행되는 것 확인 gem install ruby-processing : ruby processing gem 설치 brew install wget : 아래의 install_jruby_complete 실행에 필요함 rbenv exec install_jruby_complete rbenv which rp5 : rp5 명령이 위치한 디렉토리 확인 ~/.rp5rc 파일에 PROCESSING_ROOT: "/Applications/Processing.app/Contents/Java" 저장 ruby-processing의 샘플 디렉토리로 이동 - 위와 같이 설치한 경우 .rbenv/versions/jruby-1.7.11/lib/ruby/gems/shared/gems/ruby-processing-2.4.4/samples rbenv exec rake 실행하고 깜짝 놀라기 ;) 이리저리 살펴보다 nodebox 란 것을 알게 되었다. Python 유저들이 processing과 비슷하게 만든것 같은데 Nodebox3은 튜토리얼 대충 눈대중만 보아도 상당히 재밌을 것 같다. Ruby나 scala로 비슷하게 만들어 보는 것도 좋을 듯.

Canvas element에서 key이벤트 받기

HTML5의 canvas 엘리먼트는 그래픽을 표시하기에 좋으며 마우스 관련 이벤트는 onmouse… 이벤트 핸들러를 사용하면 바로 이용할 수 있지만 키보드 관련 이벤트는 onkeydown , onkeyup 이벤트 핸들러를 등록해도 호출되지 않는다. Stackoverflow 에 따르면 canvas 엘리먼트는 기본적으로 키보드 이벤트를 받지 않도록 설계되었기 때문이며 canvas에 tabindex를 지정해 주면 이후 키보드 이벤트를 사용할 수 있게 된다. tabindex = "1000" > scala.js에서 dom 사용하는 경우에는 다음과 같이 canvas . tabIndex = 1000

implicit 형 변환 함수로 각도 변환

implicit 변환 Scala는 형을 가지고 있는 static type의 언어이지만 implicit 함수를 통해 여러 형들을 손쉽게 변환해 준다. 다음은 degree와 radian를 새로운 형으로 정의하고 degree에서 radian으로 implicit 함수를 정의해서 사용하는 예이다. implicit로 변환함수만 한번 정의해 놓고 나면 다음부터 필요한 경우 컴파일러가 자동으로 형변환을 찾아서 삽입해준다. type Degree = Int // 필요에 따라 Double형으로 정의 type Radian = Double implicit def deg2rad ( d : Degree ): Radian = d * math . Pi / 180 val r : Radian = 45 : Degree // 0.785

최후의 생존자

최후의 생존자 알고리듬 책에 나온 문제이다. 1번 부터 n번까지 n명의 사람이 있을 때 한명은 살고 그 다음 사람은 죽는 방법으로 생존자를 결정할 때 최후까지 남는 사람은 누구인가를 알아낸다. 예를 들어 5명이 있다면 1번은 살고 2번이 죽고 3번은 살고 4번이 죽고 5번은 살고 1번이 죽고 3번은 살고 5번이 죽고 나면 3번이 최후의 생존자가 된다. 1, 2, 3, 4, 5 1, 3, 4, 5 1, 3, 5 3, 5 3 기본 프로그램은 C로 짜 보았다. #include #include #include // 인자 크기 n의 정수 배열의 s부터 시작해서 0이 아닌 첫번째 항목을 찾는다 int searchSurvivor ( int * ms , int s , int n ) { if ( s >= n ) s = 0 ; while (*( ms + s ) == 0 ) { s ++; if ( s == n ) s = 0 ; } return s ; } // 인자 n 크기의 members 정수 배열을 할당받은 후 1로 초기화 하고 // searchSurvivor 함수로 배열에서 생존자를 찾고 한번 더 함수로 // 사망자를 찾는 방식으로 구현했다. int last ( int n ) { int i = 0 , sur , * members ; members = ( int *) malloc ( sizeof ( int )* n ); for ( i = 0 ; i n ; i ++) *( members + i ) = 1 ; sur = n ; i = 0 ; while ( sur != i ) { // 마지막은 생존자와 사망자가 같은 경우, 즉 유일한 생존자 sur = searchSurvivor ( members , i , n ); // printf("생존자 %d를 찾...