'Architecture for Software'에 해당되는 글 71건

  1. 2010/03/05 리눅스 커널(Linux Kernel)로 여행을 떠나시는 분에게 (2)
  2. 2010/02/26 스마트폰(Smartphone) 운영체제에 대한 정리 및 전망 (4)
  3. 2010/02/17 Clojure 개발 환경 구축하기
  4. 2010/01/12 Lisp의 객체지향은 그 무엇보다 강력했다.
  5. 2010/01/08 ANSI Common Lisp 책을 읽고 있습니다. (5)
  6. 2009/11/11 Eclipse 3.4 (CDT)와 Cygwin으로 C/C++ 개발환경 설정하기 (2)
  7. 2009/11/09 최대 공약수 구하기
  8. 2009/11/09 RLE(Run-Length Encoding) 알고리즘
  9. 2009/10/03 Windows XP에 Java SDK 설정 방법에 대하여 (2)
  10. 2009/09/23 첫 오프라인 Lisp 스터디 모임을 시작하였습니다. :-)

리눅스 커널(Linux Kernel)로 여행을 떠나시는 분에게

|
리눅스 커널에 대하여 궁금할때~ 그 광대한 커널의 세계를~ 쉽게 파악하기가 쉽지 않습니다.
저 역시 예전에~ Long Long Time Ago~ Linux Kernel이란 미지의 세계로 여행을 떠나 보려다가 너무 험난한 경로인지라 포기하고 말았습니다.

특히 어디로 어떻게 가야할지 정말 막막하더라구요~

다행히 리눅스 커널(Linux Kernel)로 여행을 떠날 수 있는 좋은 지도가 있습니다.

출처: http://makelinux.com/kernel_map

자~ 지도한장 들고~ 떠나 보시죠~ ;-)
저작자 표시 비영리
Trackback 0 And Comment 2

Trackback http://blog.java2game.com/trackback/388 관련글 쓰기

  1. 쿠크다스 2010/03/05 16:29 address edit & del reply

    나침반은 머가 좋을까요?

    • 장선진 jangsunjin 2010/03/07 18:22 address edit & del

      안녕하세요~ 쿠크다스님 :-)
      아마도 좋은 책이 아닐까 싶습니다. 여러가지 Linux Kernel에 관한 책이 있으므로 한번 찾아보셔서 자신에 맞는 나침반을 찾는것이 좋을 듯 합니다.
      한번 Linux 커널에 대하여 이해하고 싶은 것인지~ 아니면 Linux Kernel에 대하여 이해하고 장치를 제어하고 시스템 관련 프로그래밍을 할 것인지에 관하여 여러가지 나침반이 있을 것 같네요~
      저도 사실 본지가 오래되서~ 나침반이 녹슬어 있습니다. ^^;;

스마트폰(Smartphone) 운영체제에 대한 정리 및 전망

|
다양한 스마트폰(Smartphone) 운영체제(OS)에 대한 정리 및 전망에 관한 자료를 정리하였습니다.
휴~ 자료를 정리하고 나니~ 정말 많은 스마트폰 관련 OS가 존재하는군요~

관심있으신 분들께서는 참고하시기 바랍니다. 감사합니다. :-)



1. 스마트폰(Smartphone)에 대한 정의

스마트폰(Smartphone)이란 개인용 컴퓨터에서 제공하는 진보된 기능을 제공하는 모바일 기기(핸드폰 등)를 의미합니다.
아직 업계에서는 스마트 폰에 대한 정확한 정의를 내리고 있지 않지만, 갈수록 똑똑(Smart)해지는 모바일 기기를 총칭하는 의미하며, 필자의 생각으로 스마트폰이란 다양한 응용 어플리케이션을 개인용 컴퓨터와 같이 설치하여 사용할 수 있도록 구성된 모든 모바일 장치와 에코시스템(Eco System)을 구성하는 환경을 의미한다고 생각합니다.

일부에서는 스마트폰이란 전화(이야기)를 할 수 있는 컴퓨터라는 정의를 내리고 있으며, 키보드와 같은 입력장치를 가진 모바일 기기라고 정의하고 있습니다. 하지만 스마트폰은 각각 모양과 입력장치가 다르므로 스마트폰을 이런식으로 일반화하여 정의하기 어렵습니다.

특히 스마트폰을 이야기할때 빠질 수 없는 것이 스마트폰을 중심으로 만들어지는 에코시스템(Eco System)이라고 생각합니다. 즉 기존에도 Windows Mobile이나 Windows CE와 같은 스마트폰 운영체제(OS)가 있었지만, 최근 정의하는 스마트폰과 거리가 있는 이유가 바로 스마트폰을 중심으로 만들어지는 에코 시스템이 없기 때문이라고 생각합니다.

스마트폰의 에코시스템에 대한 내용는 나중에 한번 정리해서 올리겠습니다.

참고로 영문으로 스마트 폰을 표기할때 Smart Phone과 Smartphone 모두 사용하지만, 최근에는 Smartphone으로 통일되어가고 있습니다.


2. 스마트폰(Smartphone)의 현황
스마트폰의 현재 현황을 보면 다음과 같습니다.

출처: http://en.wikipedia.org/wiki/Smartphone

재미있는 점은 실제로 최대 시장 점유율을 가지고 있는 스마트폰 운영체제는 심비안(Symbian)이란 점입니다.
참고로 그동안 많이 알려져있던 Windows Mobile에 시장 점유율 역시 그리 크지 않다는 점입니다. 국내 옴니아부터 여러가지 스마트폰에 채용된 운영체제가 바로 Windows Mobile이었는데, 글로벌 마켓 점유율 역시 크지 않군요~

그리고 세계 최초의 스마트폰은 1992년 COMDEX에서 IBM이 발표한 Simon이라는군요~

각 스마트폰 운영체제에 대하여 간략하게 살펴보면 다음과 같은 특징을 가지고 있습니다.

2-1 심비안(Symbian)
심비안은 1980년에 탄생한 첫번째 상업용 스마트 폰 운영체제로서 모바일 기기와 스마트 폰을 위한 오픈 소스 기반의 운영체제입니다. 다만 심비안이 처음부터 오픈 소스를 추구한 것은 아니며 Nokia에 인수된 뒤 최근(2010년 2월)에 시장의 위협에 따라 오픈 소스화를 추구하였다고 합니다. 정말 오랜기간 장수하였네요~ ^^

2-2 RIM 블랙베리(Blackberry)
캐나다 기업인 RIM(Research In Motion)에서 2002년 스마트 폰을 대상으로 출시한 블랙베리는 오바마 미국 대통령이 많이 사용하여 오바마 폰으로도 불리고 있습니다. 블랙베리는 RIM에서 만든 멀티태스킹이 가능한 운영체제로서 Java MIDP 2.0을 지원하고 있습니다. Novell GroupWise나 Lotus Notes와 같은 기업용 시스템과 쉽게 연동할 수 있는 장점이 있습니다.

2-3 애플 아이폰(Apple iPhone)
전 세계에서 가장 선호되는 아이폰은 애플에서 아이팟(iPod) 터치의 장점을 극대화한 스마트 폰으로 각광받고 있습니다. 정말 간지 작렬입니다. ^^~
iPhone 의 운영체재는 OS X iPhone이라고 알려져 있으며 2007년 1월에 출시된 후 앱스토어(AppStore)를 바탕으로 모바일 소프트웨어 유통 패러다임의 변화를 이끌어 내었습니다. 이를 통하여 새로운 에코시스템이 탄생하게 되었으며, 특히 개발자가 직접 수익을 얻을 수 있는 구조가 만들어졌습니다. 많은 분들이 생각하시든 애플 아이폰의 절대적인 경쟁력은 바로 애플 앱스토어에서 나오는것 같습니다.

2-4 윈도우스 모바일(Windows Mobile)
윈도우스 모바일은 마이크로소프트웨어 의하여 출시한 스마트폰 운영체제로서 아이폰이나 안드로이드가 나오기 전까지 널리 사용된 스마트폰 운영체제였습니다. 최근까지 널리 사용한 윈도우스 모바일 6.5는 Windows CE 5.2 커널을 기반으로 윈도우의 API를 사용할 수 있는 구성을 갖추고 있었습니다. 원도우스 모바일은 사용자들에게 만족할만한 속도나 에코시스템을 갖추지 못하였으며, 다양한 제조사들의 지원도 원활하지 못하였습니다.
최근 원도우스 폰(Windows phone)이란 운영체제를 출시하였으며, 새로운 사용자 경험(UX; User Experience)를 제공하여 예전의 아성을 찾으려고 노력하고 있지만 아이폰이나 안드로이드의 급속한 시장 확대로 인하여 쉽지 않을 것 같습니다. 하지만 마이크로소프트가 앞으로 어떤 전략으로 사용자들에게 다가올지 한번 살펴볼 필요가 있을것 같습니다.

2-5 구글 안드로이드(Google Android)
안드로이드는 실제 OHA(Open Handset Alliance)에서 관리되고 있이며, 구글이 OHA 설립을 주도하였습니다. 사실 안드로이드는 구글이 처음 만든것이 아니라 2005년에 안드로이드라는 회사를 인수하였으며, 이를 바탕으로 제공한 스마트폰 운영체제입니다.
안드로이드는 하부에 리눅스(Linux)를 이용하면서 Java 언어를 사용할 수 있는 달빅(Dalvik) VM을 가지고 있습니다. 따라서 기존의 Java 개발자들이 쉽게 안드로이드 관련 어플리케이션을 개발할 수 있는 환경을 제공하고 있습니다.
개인적으로 안드로이드의 API 수준은 좋지 않다고 생각합니다. 여러모로 개선될 점이 많은것 같습니다. 참 우아하지 못한 API들을 필요한 곳에 덕지 덕지 바른 느낌이랄까요~ 제가 처음 Java를 접한것이 1.1이었는데.. 마치 그때 Java API를 보는듯한 느낌이 많이 듭니다.
구글답게 안드로이드는 개방성을 바탕으로 시장을 확대하고 있으며, 아이폰의 앱 스토어와 같은 안드로이드 마켓을 통하여 다양한 모바일 소프트웨어를 유통할 수 있는 에코시스템을 갖추었습니다. 많은 개발자 및 사용자에게 기대를 받고 있으며 다양한 단말기 제조사(HTC, Motorola, 삼성, LG 등)에서 앞다투어 안드로이드 기반의 스마트폰 기기를 본격적으로 출시하고 있습니다.


이 외에도 팜(Palm)이나 삼성에서 만든 바다(Bada)와 같은 스마트폰 운영체제가 있습니다. 참고로 삼성 바다(Bada)의 경우 운영체제가 아니라 미들웨어라는 이야기가 있습니다. 아직 개발툴 등을 공개하지 않고 있어 정확한 것은 더 지켜봐야 알 수 있을것 같습니다.



3. 스마트폰(Smartphone)의 전망
스마트폰 시장은 앞으로 계속 확대될 예정입니다. 가장 큰 이유는 소비자들이 스마트폰을 선호하고 있기 때문입니다. 여러분들 역시 아이폰과 같은 스마트폰을 사용하고 싶지 않으십니까 ^^~

출처: http://www.changewaveresearch.com/articles/2010/01/smart_phone_20100104.html


재미있는 점은 스마트폰의 선호도가 모바일 기기 제조사의 시장점유율에도 많은 영향을 미치고 있다는 점입니다. HTC와 Motorola의 경우 점유일이 짧은 기간동안 올라가고 있습니다. 모두 안드로이드를 탑재한 스마트폰을 출시하였기 때문이라고 보입니다.
출처: http://www.changewaveresearch.com/articles/2010/01/smart_phone_20100104.html


아울러 스마트폰 관련 운영체제의 선호 비율이 바뀌고 있습니다. 안드로이드의 선호비율이 상당히 올라가있습니다. 개인적으로 안드로이드에 대한 기대가 높다는 반증으로 보입니다. 다만 제 생각에는 안드로이드가 갈 길이 멀은것 같습니다. 시장에 아직 본격적으로 출시되지 않았기 때문에 기대보다 실망이 클 수 있습니다만, 장래성은 충분해보입니다. 눈여겨 보실점은 블랙베리 역시 선호도가 높아졌다는 점입니다. 1%가 높여졌지만 블랙베리 역시 소비자에게 좋은 스마트폰 운영체제로 자리매김하고 있다는 점입니다. 따라서 블랙베리도 눈여겨 볼 필요가 있다고 생각합니다.
출처: http://www.changewaveresearch.com/articles/2010/01/smart_phone_20100104.html


본격적으로 모바일 기기 제조사에서 안드로이드를 탑재한 스마트폰을 출시하고 있는 관계로 안드로이드 운영체제의 점유율이 급상승할 것으로 예상됩니다.
출처: http://www.changewaveresearch.com/articles/2010/01/smart_phone_20100104.html


스마트폰 운영체제의 만족도를 살펴보면 안드로이드가 아이폰과 비슷한 만족도를 보이고 있습니다. 이점이 사실 대단한것이.. 출시한 기간이나 아이폰과 같이 단일한 기업에서 완성도를 보장하지 않고 있음에도 불구하고 안드로이드의 만족도가 이렇게 높게 나왔다는 점은 상당히 고무적으로 볼 수 있습니다.
출처: http://www.changewaveresearch.com/articles/2010/01/smart_phone_20100104.html


4. 스마트폰(Smartphone)에 대한 나름의 결론
결론적으로 제 생각을 정리하면 다음과 같습니다.

스마트폰 시장은 스마트폰 운영체제의 완성도와 에코시스템을 얼마나 잘 갖추고 있느냐에 따라 시장 점유율이 틀려질 것으로 생각됩니다. 예전에 PDA 시장에서 가장 많이 활용되었던 팜(Palm)과 같은 운영체제는 사용자와 개발자(ISP)를 위한 에코시스템을 갖추지 못하였기 때문에 점점 자신의 영역을 읽어가고 있습니다.

하나의 스마트폰 운영체제가 독점하는 시장이 아닌 여러 스마트폰 운영체제가 과점하는 양상을 보일 것 같습니다. 아이폰을 선호하는 사용자의 경우 나름 이유가 있으며, 안드로이드를 선호하는 사용자나 블랙베리를 선호하는 사용자 모두 자신의 필요성 등에 따라 운영체제 및 스마트폰 기기를 선택할 것 같습니다. 따라서 하나의 운영체제가 모든 스마트폰 시장을 독점하지 않고 사용자들에 따라 과점할 것으로 보입니다.

이러한 과점 체제의 스마트폰 시장에서 가장 중요한 요소는 얼마나 사용자들을 만족시킬 수 있는 풍부한 서비스(어플리케이션)를 제공할 수 있을 것인가입니다. 나름 예상해보건데, 스마트폰에서 실행되는 어플리케이션의 가격은 점점 낮아지지만 지금보다 훨씬 다양하고 많은 어플리케이션들을 사용자들이 사용할 것 같습니다. 즉, ISP(개발자)입장에서는 더 낮은 가격으로 판매해도 많은 사용자들이 있기 때문에 수익은 더 늘어날 것 같으며, 아이폰의 앱 스토어나 구글의 안드로이드 마켓의 중개 수수료도 더 낮아지거나, 전문 어플리케이션 판매를 위한 마켓플레이스(Market Place)도 생겨날 것 같습니다.

결국 ISP(개발자)에게 더 많은 기회가 생길 것이며, 스마트폰 사용자에게도 더 질 높은 어플리케이션이 제공될 것이며, 이러한 환경을 구축한 스마트폰 운영체제 제공사와 스마트폰 기기 제조사에게도 더 많은 수익이 발생될 것입니다.



이상 제 나름의 전망이었습니다. 읽어주신 여러분들에게 감사드리며, 부족한 점이나 궁금한점이 있다면 댓글 부탁드립니다. :-)
저작자 표시 비영리
Trackback 1 And Comment 4

Trackback http://blog.java2game.com/trackback/382 관련글 쓰기

  1. Subject 허니몬의 알림

    Tracked from sunfuture's me2DAY 2010/03/02 13:10 delete

    스마트폰 (Smartphone) 운영체제에 대한 정리 및 전망, [장선진] 삶을 위한 소프트웨어 // 우리가 알고 있는 것이 다가 아니다. // 스마트폰에서 중요한 것은 에코시스템(운영체제, 앱, 비즈니스 시스템, 모바일 환경 등)이다.

  1. 김나연 2010/03/04 16:30 address edit & del reply

    안녕하세요.
    저희는 시장조사 전문기관인 코리아리서치(www.kr.co.kr)입니다.
    이번에 저희 회사에서는 신상품 수용도 파악을 위한 조사를 좌담회 방식으로 진행할 예정입니다.
    좌담회란, 공통 주제에 대하여 10명이 모여서 서로 이야기를 나누는 형식의 모임입니다.
    많은 참여 부탁드립니다.

    **대상 조건

    1그룹 - 25~34세의 남자
    1년차 직장인으로 연봉 2천8백이상인자
    스마트폰 보유자

    2그룹 - 25~34세 여자
    1~3년차 직장인으로 연봉 2천8백이상인자
    스마트폰 보유자 또는 향후 구매 의향자

    3그룹 - 25~34세 여자
    1~3년차 직장인으로 연봉 2천8백이상인자
    스마트폰 보유자 또는 향후 구매 의향자
    향후 6개월내 결혼 예정자

    **참석비 - 1그룹 10만원

    2그룹 스마트폰 보유자 8만원 / 구매의향자 7만원

    3그룹 10만원

    **일정 - 3월 10일(수) ~ 3월 12일(금) 오후 7시 30분 양재역 부근

    **담당자 - 김나연(02-3415-5175 / joajoany@naver.com / joajoany@kric.com)


    ** 프로필은 아래와 같이 작성해 주세요.


    이름/나이/연락처/직장명(입사년도)/스마트폰 보유여부(보유면 모델명 기입)/해당그룹


    메일로 프로필 양식을 보내주시면 저희가 따로 연락을 드립니다.

    궁금한 사항 있으시면 연락주세요.

    • 장선진 jangsunjin 2010/03/05 09:33 address edit & del

      ^^ 흠~ 이건 거의 광고이신데요~
      우선 관심있는 분도 계실것 같아서~ 남겨둡니다~

  2. 임관수 2010/03/11 12:33 address edit & del reply

    정리가 잘되어 있기에 나중에 잊어먹을까봐 출처 밝히고 퍼갑니다...

    • 장선진 jangsunjin 2010/03/12 06:53 address edit & del

      안녕하세요~ 임관수님
      편하게 가져가시면 됩니다~ :-)

Clojure 개발 환경 구축하기

|
Eclipse를 이용하여 Clojure의 개발 환경을 구축하는 방법을 알아보고자 합니다. 매우 간단하고 쉽습니다. 
Step by Step으로 진행하여 그 유명한 HelloWorld를 한번 실행해 보겠습니다.

우선 이클립스 3.4 이상이 설치되어 있다고 가정하겠습니다. 아울러 JDK 5(1.5)나 6를 설치하였다고 가정하겠습니다.

1. counterclockwise 이클립스 플러그인 설치
자 이렇게 설치가 되었다면, counterclockwise라는 이클립스 플러그인을 설치해야 합니다. 참고로 counterclockwise는 이클립스 하에서 Clojure를 개발할 수 있는 플러그인으로 REPL을 지원하며 신택스 강조(Syntax higlighting)이나 코드 완성(Code completion) 등을 지원합니다. 다양한 기능에 대한 내용은 counterclockwise 사이트를 참고하시기 바랍니다.

자, Help > Install New Software... 를 선택합니다.

그러면 다음과 같은 창이 나타납니다. 오른쪽 위에 있는 Add... 버튼을 클릭하고 이클립스 플러그인 업데이트 사이트의 주소를 Location에 입력해주세요~ 주소는 http://updatesite.counterclockwise.googlecode.com/hg/ 입니다. Name은 간략하게 Counterclockwise라고 넣겠습니다.

Next 버튼을 클릭하면 다음과 같은 화면이 나타납니다. 아래와 같이 선택하시고 Next 버튼을 클릭하세요. 그 다음에 License 부분도 Accept 하시고 Next 버튼을 클릭하고 난 후 이클립스를 재시작하여야 합니다.


2. Hello World 작성하기
Counterclockwise 플러그인을 잘 설치하셨다면, 본격적으로 Hello World를 찍어보러 가겠습니다. CTRL + N이나 File > New > Other를 누르시면 다음과 같이 Clojure Project를 선택하실 수 있습니다. 선택하고 Next를 클릭합니다.



다음으로 Project name을 입력합니다. 저의 경우 HelloClojure로 하였습니다. 원하시는 프로젝트 명을 넣으시면 됩니다. 그리고 Finish를 클릭하시면 Clojure 프로젝트가 생성됩니다.


처음 프로젝트가 생성되면 다음과 같습니다. 참고로 clojure.jarclojure-src.jar 그리고 clojure-contrib.jarclojure-contrib-src.jar가 자동으로 포함됩니다. 따라서 Clojure에 관련된 JAR를 별도로 받으실 필요가 없습니다.


Clojure REPL을 실행하시려면 다음과 같이 프로젝트를 선택하시고 오른쪽 버튼을 클릭하시고 Run As > Clojure REPL을 선택하시면 Clojure REPL이 나타납니다.

Lisp 다운 Hello World를 해보면 아래 화면과 같습니다. ;-)


너무 간단하죠 ^^~ Clojure 파일을 만들어서 한번 Hello World를 작성해보겠습니다. Clojure 파일은 확장자가 clj 입니다. 다음과 같이 src 디렉토리에서 New > Clojure File을 선택합니다.


새로 만들 Clojure File의 File name을 입력합니다. 저의 경우 HelloWorld를 입력하였습니다.


매우 간단하게 HelloWorld를 작성해보았습니다. 소스는 아래 화면을 참조해주세요~
HelloWorld.clj를 선택하고 Run As > Clojure REPL을 선택하시면 아래의 Console view에서 Clojure REPL이 실행되며, (hello)를 입력하면 우리가 원하던 Hello World가 출력됩니다.


상당히 간단하죠~ 알고보면 Lisp도 쉽다고 생각합니다~ 물론 아직도 이해안되는 부분이 많습니당~ ^^;

앞으로 Clojure를 바탕으로 Lisp 프로그래밍에 대한 내용을 종종 올리겠습니다.
감사합니당~
저작자 표시 비영리
Trackback 0 And Comment 0

Trackback http://blog.java2game.com/trackback/380 관련글 쓰기

Lisp의 객체지향은 그 무엇보다 강력했다.

|
Lisp의 깊은 바다를 헤매이다가 Lisp의 객체 지향(Object-Oriented)에 대하여 이번에 알게 되었습니다.
나름 객체지향에 대한 일정 수준의 이해가 있다고 생각했던 저에게 Lisp의 객체지향은 그야말로 하나의 충격이었습니다.

Lisp은 우아하게 그리고 너무도 자연스럽게 객체 지향을 매우 깊이 있게 지원하고 있었습니다.

이 괄호로 둘러싸여 이상하게 보이는 언어는 AOP(Aspect Oriented Programming)를 이미 포용하고 있었으며 독특하면서도 특별한 객체 지향의 모습을 멋지게 보여주었습니다.

너무도 멋진 이 Lisp의 객체 지향 관련된 기능은 Common Lisp에서는 CLOS(Common Lisp Object System)이라고 부릅니다.
여러분중에 객체에 대하여 난 좀 알고 있다고 생각하시는 분들이라면 아래의 동영상을 한번 깊이있게 들어보시기 바랍니다.

아래 동용상은 "Lisp을 좋아하는 사람들의 그룹(한국 리스퍼)" 에서 지난 주(2010년 1월 9일)에 진행한 2010년 첫 스터디에서 김영태님이 발표한 내용입니다. 현재 "Lisp을 좋아하는 사람들의 그룹(한국 리스퍼)" 에서는 Practical Common Lisp(http://www.gigamonkeys.com/book/) 이란 책을 가지고 Lisp을 공부중에 있습니다. 그 중 16장과 17장에 관한 내용입니다.

여러분이 생각하는 것보다 더욱 멋지고 우아하고 강력하게.. 그래서 폴(Paul Graham)아저씨가 말했듯이 Lisp은 모든 프로그래밍 언어 중에 언어라는 것을 알려줍니다.


자~ 새로운 객체 지향 Lisp의 세계로 여러분을 초대합니다.

1부


2부



참고로 유투브에서도 확인하실 수 있습니다. 주소는 http://www.youtube.com/watch?v=Sdq9NN98s3A&feature=player_embedded 입니다.

다른 어떤 언어보다도 Lisp을 공부하고 있는 제가 좋습니다. 이렇게 말하면 Lispy한 것일까요~ ㅎㅎㅎ

"Lisp을 좋아하는 사람들의 그룹(한국 리스퍼)"에서는 매주 토요일 Lisp 오프라인 스터디를 진행하고 있습니다.
관심있는 분들의 많은 참여 부탁드립니다. 저희 그룹은 Lisp을 공부하지만 Lispy하지 않아요~ :-)

저작자 표시 비영리
Trackback 0 And Comment 0

Trackback http://blog.java2game.com/trackback/371 관련글 쓰기

ANSI Common Lisp 책을 읽고 있습니다.

|
카네기 멜론에서 나온 Common Lisp: A Gentle Introduction to Symbolic Computation 책을 "Lisp을 좋아하는 사람들의 그룹"에서 공부한 후 현재는 ANSI Common Lisp 책을 읽고 있습니다.

Common Lisp은 Lisp을 처음 접하시는 분들에게 상당히 훌륭한 책이라고 생각합니다. 저 역시 이 책을 Lisp을 좋아하는 사람들의 그룹에서 진행한 오프라인 스터디를 통하여 공부하였는데, 많은 도움이 되었습니다.

혹시 Common Lisp 책을 공부하시는 분들 중에 참고자료를 찾으시는 분들이라면 저희 그룹에서 진행한 오프라인 스터디 동영상을 한번 참고하시기 바랍니다. 저희 위키 사이트인 http://lisp-korea.wikispaces.com/Common+Lisp 에 동영상 강의를 잘 모아서 올려 놨습니다.

현재 Lisp을 좋아하는 사람들의 그룹 에서는 Practical Common Lisp 책을 바탕으로 함께 오프라인 스터디를 진행하고 있습니다.
음.. Practical Common Lisp 책에 대한 개인적인 의견은 책의 명성만큼 잘 정리된 책은 아닌듯합니다.

사실 그렇게 느끼는 이유중에는 제가 아직 Lisp의 많은 부분을 모르기 때문이기도 합니다.



해서 최근 Paul Graham 아저씨가 쓰신 ANSI Common Lisp을 읽고 있습니다. 저희 김영태님께서 소개해주셨는데, 정말 궨찮은 책인것 같습니다.
제 부족한 Lisp 실력에 따악 맞는 책인것 같습니다. :-)

국내에서는 해커와 화가로 유명하신 Paul 아저씨의 글을 읽으면서 따악 Lispy한 느낌을 받습니다.

뭔가 간결하면서도 따악 할말만 하시는 Paul 아저씨~ Lisp을 공부하시는 분이라면 한번 참고하시면 좋겠습니다. :-)
저작자 표시 비영리
Trackback 0 And Comment 5

Trackback http://blog.java2game.com/trackback/369 관련글 쓰기

  1. 박제권 2010/01/08 21:16 address edit & del reply

    덕분에, 시야에 안들어와있던, ANSI Common Lisp 구해서 보고있습니다. 감사합니다~^^

    • 장선진 jangsunjin 2010/01/09 19:25 address edit & del

      ^^ 그러시군요~
      Lispy 한게 느낌이 좋지 않나요~ ㅎㅎㅎ

      들어보니~ 뒤로갈수록 어렵다고 하더라구요~ 한번 같이 도전해 보아요~ ;-)

  2. lisper 2010/01/30 19:47 address edit & del reply

    Practical Common Lisp
    OOP in Common Lisp
    On Lisp
    Paradigms of AI Programming
    Art of MetaObject Protocol

    제 경우 Common Lisp 프로그래밍을 배우는 것은 위의 순으로 읽어볼 것을 권합니다. 책 제목이 다 맞는지 모르겠네요. 아뭏든 무슨 책이 되었든 열심히 하시기 바랍니다.

  3. lisper 2010/01/30 19:51 address edit & del reply

    참, HyperSpec을 꼭 설치해서 프로그래밍 도중에 참고하실 것을 권합니다. (그리고 위의 책 목록은 제 생각으로는 가장 짧고 지금까지 존재하는 경우의 방법중 가장 완벽하게 CL을 마스터하는 방법이라고 말씀드리고 싶네요)

    • 장선진 jangsunjin 2010/01/30 21:36 address edit & del

      아 좋은 책 추천해 주셔서 감사합니다.

      특히 On Lisp 꼭 한번 읽고 싶습니다.

      ANSI Common LIsp 책 완독한 후에 꼭 읽어보겠습니다.
      특히 HyperSpec 말씀은 정말 맞습니다. 이맥스에서 잘 연결해서 사용하고 있습니다. :-)

Eclipse 3.4 (CDT)와 Cygwin으로 C/C++ 개발환경 설정하기

|
최근 정말 재미있는 책을 하나 읽고 있습니다. 바로 Short Coding이란 책입니다. 천천히 읽고 있는 관계로 독서평은 나중에 올리구요~
Short Coding을 하기 위한 환경을 Eclipse 3.4 CDT와 Cygwin으로 설정하였습니다.

아시다시피 Eclipse는 C/C++에도 막강한 기능을 발휘하는 툴이라고 생각합니다. 특히 gcc 컴파일러가 여러모로 추천되더군요~ 제가 특정한 플랫폼을 타켓으로한 C/C++ 어플리케이션을 개발하려는 것이 아니고 Short Coding 에 나오는 예제들을 중심으로 확인하려는 것이 가장 큰 목적이므로 별다른 고민없이 구축하였습니다.

특히 GCC를 사용할 수 있다는 큰 장점이 있습니다.

Step by Step으로 확인해 보겠습니다.


1. Cygwin 설치
첫번째로 Cygwin(http://cygwin.com/)에 접속하여 Cygwin을 다운로드 받아서 설치하여야 합니다. Cygwin(http://cygwin.com/) 사이트의 첫 페이지의 중간에 "Install or update now! (using setup.exe)"를 클릭하면 Windows OS용 설치 파일을 다운로드 받을 수 있습니다.


다운로드 받은 setup.exe 파일을 더블클릭하면 아래와 같은 Cygwin Setup Programe이 나타납니다.


Choose Installation Type을 "Install from Internet"을 선택하면 인터넷에서 필요한 설치 파일을 다운로드 받아 설치하게 됩니다. 당근 "Install from Internet" 를 선택하시면 됩니다.


설치 경로는 기본적으로 C:\cygwin 입니다.


그냥 패키지 디렉토리인데 따라 갑니다.


Connection Type을 선택하면 됩니다. Direct Connection을 선택합니다.


http://ftp.daum.net을 선택합니다. 우리나라에 있는 Server이기 때문에 빠른 속도로 설치할 수 있습니다. 참고로 ftp://ftp.daum.net을 선택하시면 ini 파일이 없다는 에러가 발생합니다.


기본적인 설치 패키지를 다운로드 받습니다.


패키지를 선택하는 화면입니다. 여기서 gcc를 설치하기 위하여 Devel을 클릭합니다.


Devel Category에는 여러가지 개발 관련된 Package들이 존재합니다. 반드시 gcc-g++gdb make 관련된 패키지를 선택하시기 바랍니다. 아울러 추가적으로 관심있는 여러가지 패키지를 선택하셔서 설치하시면 좋습니다. 생각보다 정말 많은 패키지들이 지원됩니다. :-)


이후 다음 버튼을 눌러서 본격적으로 설치하시면 Cygwin의 설치가 완료됩니다.



2. Cygwin 관련 환경변수 설정하기
Cygwin 을 모두 설치하시면 Windows OS의 경우 다음과 같이 환경변수를 설정해주시는것이 좋습니다.

CYGWIN_HOME이라는 변수명을 설정하시고 설치하신 Cygwin의 경로를 넣습니다.

그 후 PATH에 ;%CYGWIN_HOME%\bin;%CYGWIN_HOME%\usr\bin; 와 같은 환경 변수를 더 추가해 주시기 바랍니다. 이렇게 환경 변수를 설정해주셔야 Eclipse CDT에서 별다른 문제 없이 gcc로 개발을 하실 수 있습니다.

이렇게 환경 변수를 잘 설정하셨다면 gcc-3이나 gdb를 cmd 창에서 치시면 다음과 같이 나타납니다.



3. Eclipse CDT 설치하기

Eclipse 사이트(http://www.eclipse.org/)로 가셔서 Eclipse IDE for C/C++ Developers (79 MB)를 클릭합니다.


만약 기존에 사용하고 있는 Eclipse IDE에서 CDT 기능을 활용하시려면, CDT관련 Plugin 설치를 하시면 됩니다. 다만 Eclipse IDE for C/C++ Developers가 C/C++를 개발하기 편하도록 모든 설정이 되어 있으므로 Eclipse IDE for C/C++ Developers를 사용하겠습니다.


당근 Eclipse는 JVM 기반하에서 돌아갑니다. 따라서 JVM을 설치하여야 합니다. 만약 JVM 설치 방법을 알고 싶으시다면 http://blog.java2game.com/345 를 참고하시기 바랍니다. 자 적당한 디렉토리에 eclipse를 압축해제 하시고 eclipse.exe를 더블 클릭하시면 다음과 같이 Eclipse CDT가 나타납니다. 참고로 본 예제는 Eclipse Galileo 3.4 버전입니다.


자 Hello World를 찍어봐야겠죠 ;-) 다음과 같이 C++ 프로젝트를 생성합니다.


Project Name을 HelloWorld로 하겠습니다. 주의하셔야 할 것은 Toolchains에 Cygwin GCC가 나타나지 않는다면 환경변수 설정이 잘못된 것이니 확인하시기 바랍니다. Hello World C++ Project를 선택하시면 쉽게 C++ Project를 구성하실 수 있습니다.


Basic Settings를 설정합니다.


그러면 다음과 같이 기본적인 템플릿을 바탕으로 HelloWorld.cpp 파일이 자동 생성됩니다.


Ctrl + F11이나 다음과 같이 실행하시면 Console View에서 Hello World!!!를 확인하실 수 있습니다. :-)




Eclipse라는 강력한 IDE를 Java 말고 C/C++를 개발하시거나 테스트하시는데도 활용하시면 참 좋을 것 같습니다. gcc의 강력함도 함께 즐길 수 있는 Cygwin과 함께 말이죠 ;-)

더 자세한 내용은 http://www.eclipse.org/callisto/c-dev.php 를 참고하세요~
저작자 표시 비영리
Trackback 0 And Comment 2

Trackback http://blog.java2game.com/trackback/353 관련글 쓰기

  1. 김광섭 2009/11/12 03:46 address edit & del reply

    cywin 간편하니 좋아요.. 콘솔에서도 먹히는것도 좋고..ㅋㅋ
    아는 형들 보니까 펌웨이 코딩할 때 cygwin + eclipse로 작업하든데..

    • 장선진 jangsunjin 2009/11/12 11:15 address edit & del

      ^^ ㅎㅎㅎ 광섭~ 그렇군~
      펌웨어에서도 쓰는군~ 좋은 선택을 한것 같네~

최대 공약수 구하기

|
최대 공약수(GCD, Greatest Common Divisor)를 구하는 알고리즘을 올립니다.
휴~ 모두 간만에 하나 헷갈리는군요~ Java로 최대 공약수 구하는 알고리즘을 찾는 분에게 도움이 되었으면 좋겠습니다.
/**
 * Copyright (C) 2009, http://www.softwareinlife.com
 *
 * This file is part of "Software in Life".
 *
 * "Vision Software in Life" is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see .
 */
package com.softwareinlife.codes;

/**
 * GCD
 * 
 * @author Jang, Sun-Jin (jangsunjin@softwareinlife.com)
 * @date 2009. 11. 9.
 * 
 */
public class GCD {

	public static int count = 0;

	/**
	 * Constructor
	 */
	public GCD() {
		super();
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		GCD gcd = new GCD();
		int res = gcd.solve(15135, 9823);
//		int res = gcd.solve(3000, 2025);
//		int res = gcd.solve(280, 30);
		
		System.out.print("The Greatest Common Divisor: " + res);
		System.out.print("\t");
		System.out.print("(Count: " + count + ")");
	}

	/**
	 * Solve
	 * 
	 * @param j
	 * @param i
	 */
	private int solve(int u, int v) {
		int r = 0;
		int c = 0;

		if (u > v) {
			r = u % v;
			c = v;
		} else {
			r = v % u;
			c = u;
		}

		count ++;
		
		if (r == 0) {
			return c;
		} else {
			return solve(r, c);
		}
	}
}

저작자 표시 비영리

'Architecture for Software > Algorithm' 카테고리의 다른 글

최대 공약수 구하기  (0) 2009/11/09
RLE(Run-Length Encoding) 알고리즘  (0) 2009/11/09
Top Coder에 도전하세요!  (2) 2009/01/01
Algorithm 이란  (0) 2008/11/17
The 3n+1 Problem  (4) 2008/11/11
스택(Stack)  (0) 2008/10/08
Trackback 0 And Comment 0

Trackback http://blog.java2game.com/trackback/350 관련글 쓰기

RLE(Run-Length Encoding) 알고리즘

|
나름 Java로 풀어본 RLE 입니다. O(n)이 되도록 신경썼는데~ 잘 풀어진건지 모르겠네요~
고수님들의 많은 의견 부탁드립니다.

참고로 RLE(Run-Length Encoding)는 연속적인 데이터나 문자열 등을 압축하는 알고리즘에 하나입니다. 대표적인 BMP가 이러한 RLE를 사용하여 압축합니다.


/**
 * Copyright (C) 2009, http://www.softwareinlife.com
 *
 * This file is part of "Software in Life".
 *
 * "Vision Software in Life" is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see .
 */
package com.softwareinlife.codes;

/**
 * RLE
 * 
 * @author Jang, Sun-Jin (jangsunjin@softwareinlife.com)
 * @date 2009. 11. 9.
 * 
 */
public class RLE {

	/**
	 * Constructor
	 */
	public RLE() {
		super();
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		RLE rle = new RLE();
		
		String result = rle.solve("qwwwwwwweeeeerrtyyyyyqqqqwEErTTT");
//		String result = rle.solve("caaab");
		
		System.out.println(result);
	}

	/**
	 * Solve the Problem
	 * 
	 * @param seed
	 * @return
	 */
	private String solve(String seed) {
		StringBuffer rle = new StringBuffer();

		int i = 0;
		int j = 1;
		while (i < seed.length()) {
			char current = seed.charAt(i);
			char after = seed.charAt(j);

			if (current == after) {
				j++;

			} else if (j == (i + 1)) {
				rle.append(current);
				
				i++;
				j = i + 1;
				
			} else {
				rle.append(j - i);
				rle.append(current);

				i = j++;
				j = i + 1;
			}
			
			if (j >= seed.length()) {
				if ((j - i) > 1) {
					rle.append(j - i);					
				}
				rle.append(after);
				
				print(i, j, current, after, rle);				
				break;
			}

			print(i, j, current, after, rle);
		}
		
		return rle.toString();
	}

	/**
	 * Print 
	 * 
	 * @param i
	 * @param j
	 * @param current
	 * @param after
	 * @param rle
	 */
	private void print(int i, int j, char current, char after, StringBuffer rle) {
		System.out.print("i: " + i);
		System.out.print("\t");
		System.out.print("j: " + j);
		System.out.print("\t");
		System.out.print("current: " + current);
		System.out.print("\t");
		System.out.print("after: " + after);
		System.out.print("\t");
		System.out.println("rle: " + rle.toString());
	}
}


저작자 표시 비영리

'Architecture for Software > Algorithm' 카테고리의 다른 글

최대 공약수 구하기  (0) 2009/11/09
RLE(Run-Length Encoding) 알고리즘  (0) 2009/11/09
Top Coder에 도전하세요!  (2) 2009/01/01
Algorithm 이란  (0) 2008/11/17
The 3n+1 Problem  (4) 2008/11/11
스택(Stack)  (0) 2008/10/08
Trackback 0 And Comment 0

Trackback http://blog.java2game.com/trackback/349 관련글 쓰기

Windows XP에 Java SDK 설정 방법에 대하여

|
Windows XP 기준으로 Java SDK를 설정하는 방법을 알려드리겠습니다. 간혹 모르시는 분들이 계셔서 정리차원에서 올려드립니다.

우선 JavaSDK를 다운로드 받아 설치했다고 가정하겠습니다. 만약 아직 Java SDK가 없으신 분은 http://java.sun.com/javase/downloads/index.jsp 에 가셔서 적합한 Java SDK를 다운로드 받으시면 됩니다.

Windows XP에 시스템 등록 정보의 고급 탭에서 환경변수 버튼을 클릭합니다.



시스템 변수 부분에서 새로 만들기 버튼을 클릭합니다.
그리고 변수 이름을 JAVA_HOME 이라고 넣으시고 설치한 JavaSDK의 경로를 넣습니다. 저의 경우 C:\Program Files\Java\jdk1.6.0_14 입니다.


그 후 CLASSPATH를 설정합니다. 마찬가지로 변수 이름은 CLASSPATH 이며 .;%JAVA_HOME%\lib 를 넣으시면 됩니다.


그리고 PATH를 설정하면 됩니다. PATH를 설정하실 때에는 기존 PATH에 %JAVA_HOME%\bin 만 더 넣으시면 됩니다. 참고로 Windows에서 PATH를 설정하실때에는 구분자가 ; 입니다.


정리하면 다음과 같습니다.

JAVA_HOME
C:\Program Files\Java\jdk1.6.0_14

CLASSPATH
.;%JAVA_HOME%\lib

PATH
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%JAVA_HOME%\bin


이렇게 설정을 완료한 후 실행에서 cmd를 입력하여 설정이 제대로 되어 있는지 확인합니다.



다음과 같이 javac -version을 입력하여 설치한 Java SDK의 버전을 확인해 봅니다. 그리고 java -version을 입력하여 JRE의 버전도 확인해볼 수 있습니다.

정리하면 다음과 같습니다.

javac -version

java -version

이렇게 설정하시면 편리하게 Java SDK 하에서 쉽게 개발을 하실 수 있습니다.

참고하세요 ;-)

저작자 표시 비영리
Trackback 0 And Comment 2

Trackback http://blog.java2game.com/trackback/345 관련글 쓰기

  1. 귀차나 2010/03/09 13:06 address edit & del reply

    좋은 글이네요~ 출처를 쓰고 퍼가도록 하겠습니다.

첫 오프라인 Lisp 스터디 모임을 시작하였습니다. :-)

|

http://blog.liverpoolmuseums.org.uk/AuthorView,author,stepheng.aspx


어제(2009년 9월 22일) 오후 7시 30분 토즈 강남점에서 드디어 첫 오프라인 Lisp 스터디 모임을 시작하였습니다.

마치 작은 배가 첫 출항을 하듯이 조심스럽게 준비해온 이번 첫 오프라인 스터디 모임에 제 생각보다 많은 분들이 참여해주셨습니다.
토즈에 예약을 잡을때는 7인실로 예약을 했었습니다. 최소 5명정도는 오실 것 같아서 나름 여유있게 예약을 했었습니다. 제가 처음 도착한 후 얼마 있다가 별파란(박성민)님이 오셨습니다.

별파란은 Lisp을 좋아하는 사람들의 그룹(한국 리스퍼)의 운영자로도 활동하고 계셔서 서로 오늘 몇분이나 오실지 궁금해하면서 기다리고 있었습니다. 그렇게 7시 30분이 지난 후 김영태님이 오시고, 조금 있다가 이은지님과 권순범님이 오시고 조성식님과 민정상님이 오셨습니다. 어느새 7인실이 꽉 차있는데 엄익훈님과 이원찬님이 오셨습니다.

제가 예상했던것 보다 정말 많은 분들이 참여해주셨습니다. :-)

사실 이 오프라인 스터디는 아주 오랜 사연을 가진 스터디 모임입니다. 멀리 충남에서 오신 이은지님이 예전에 제 블로그를 보고 저에게 Lisp에 대한 공부를 하고 싶다는 메일을 보내신적이 있습니다. 이은지 님의 경우 프로그래밍에 대한 경험이 없으시기 때문에 많은 걱정을 하시고 계셨습니다.

사실 그때 저 역시 Lisp에 대하여 관심을 가지고 이런 저런 자료를 모으고 보고 있을 때 였습니다.

아시다시피 우리나라에는 Lisp에 대한 자료가 많지 않습니다. 그래서 이은지님과 같이 Lisp에 관심을 가지고 계시지만, 너무도 관련 자료가 없기 때문에 시작하지 못하시는 분들이 많습니다. 저 역시도 그러한 부분들을 많이 느끼고 있었던 차라 많은 동감을 하고 있었습니다.

그래서 Lisp을 좋아하는 사람들의 그룹(한국 리스퍼) 을 구글 그룹스에 만들고, Lisp을 좋아하시는 분들과 함께 스터디를 할 수 있도록 여러차례 회원님들과 의견을 나누고 있었습니다. 올 초에도 오프라인 스터디를 하려고 시도하다가 어제 드디어 첫 오프라인 스터디 모임을 시작하게 된 것입니다.

이러한 사연을 가지고 있는 오프라인 스터디 모임이기에 저는 이 스터디 모임이 매우 소중한 스터디 모임이라고 생각합니다.

특히 어제 오신분들은 프로그래밍이나 IT에 직접적인 관련이 없으신분들이 많습니다. 다른 프로그래밍 언어의 경우 IT 분야에 종사하시는 분들이 많지만, 어제 오신분들의 경우 인지공학이나 어학 및 작곡등을 하시는 분들이 오셨습니다.

Lisp이 많은 분야에서 다양하게 적용되고 있고, 많은 분들이 충분히 관심을 가질만한 언어라는 점이 모이신 분들만 보셔도 알 수 있을 것이라고 생각됩니다. 저 역시 Lisp에 이러한 다양한 매력이 좋습니다. 각자 Lisp에 어떻게 관심을 가지게 되었는가에 대한 이야기를 들어보면 이러한 사실을 확인하실 수 있습니다.

본격적인 스터디에 앞서 Lisp 스터디를 잘 하기 위한 여러가지 것들에 대하여 이야기를 나누었습니다. 역시 어떤 책을 중심으로 스터디를 하겠는가에 대한 이야기를 많이 나누었습니다.

이미 Lisp에 대하여 많이 아시는 분들도 계셔서 좋은 조언을 통하여 Common Lisp이란 책을 선정하였습니다. 이 책을 선정한 배경에는 처음 Lisp을 접하시는 분들도 계시며, 처음부터 Lisp의 기초를 빠르게 다함께 살펴보기에 매우 좋은 책이기 때문입니다. 사실 저는 아직 이 책을 보지 못하였지만, 온라인 상에 PDF가 공개되어 회원님들과 함께 살펴보면서 처음 Lisp을 접하시는 분들에게 참 좋은 책이라는 생각하게 되었습니다.

이 책을 통하여 저 역시 Lisp의 기초를 다져보려고 합니다. 사실 저도 아직 Lisp에 관하여 많이 안다고 할 수 없기에, 이 책이 저와 회원님들에게 Lisp에 대한 기초를 튼튼히 다져줄 것이라고 생각합니다. :-)

스터디 방식은 챕터를 맡아서 챕터에 대한 설명을 드리는 방식으로 정했습니다. 각자 챕터를 읽어오는 것을 기본으로 하되 각 챕터를 맡으신 분이 핵심적인 부분을 설명하고, 자연스럽게 Q&A를 하여 궁금한 점들을 서로 풀어가면, Lisp에 이해를 충분히 높일 것 이라고 생각합니다.

스터디 일정을 다음과 같이 하기로 하였습니다.
 일정  Chapter  맡으신 분
 09월 26일 오전 10시 1, 2, 3  조성식 님
 10월 10일 오전 10시  4, 5  장선진 님
 10월 17일 오전 10시  6, 7
 김영태 님
 10월 24일 오전 10시  8, 9  박성민 님
 10월 31일 오전 10시  10, 11
 민정상 님(10장), 이봉근 님(11장)
 11월 7일 오전 10시  12, 13
 이원찬 님
 11월 14일 오전 10시
 14  엄익훈 님

모임은 토즈 강남점에서 하기로 하였습니다. 그리고 이은지 님이 총무님을 맡아주시기로 하였습니다.

이번 주 토요일 10시부터 본격적인 스터디에 들어갑니다. 재미있고 유익한 오프라인 스터디가 될 수 있도록 노력하겠습니다. ;-)
저작자 표시 비영리
Trackback 0 And Comment 0

Trackback http://blog.java2game.com/trackback/335 관련글 쓰기

prev | 1 | 2 | 3 | 4 | 5 ... | 8 | next