MS가 OOXML 명세를 표준안으로 제안한 뒤로 많은 논란이 있었습니다. 정치적, 기술적 이유를 들어서 찬반이 갈려있지만, 직업이 직업인지라 기술적인 이유가 먼저 눈에 들어옵니다.

 MS만이 구현 가능한 표준이기에 우리는 OOXML을 거부해야한다는 아주 간단한 말이외에 어떤 말이 필요할지 모르겠습니다.
 이번에 IBM의 DeveloperWorks에 올라온 글 중에서 OOXML에 대한 글이 있어서 소개하려합니다.

원문 : OOXML: 뭐가 그리 대단한가? (한글)

OOXML 명세를 놓고 상당한 비평과 찬사가 동시에 쏟아졌습니다. 덕택에 많은 사람이 무슨 영문인지 의아해 하고 있습니다. 이 기사는 (정치적인 입장이 아니라) 기술적인 측면에서 OOXML을 표준으로 취급해서 안 되는 이유를 밝힙니다.


 그리고 OOXML안의 철저한 검증을 요구하는 서명 운동을 하고 있습니다. 한번 가셔서 글도 읽어보시고, 동의하시면 서명 운동에도 참가해주세요.
서명하러가기

Office Open XML(OOXML)의 ISO 최종 투표에 즈음하여

한국 대표단에게 보내는 글

본 서명은 Microsoft가 제안하여 ECMA 376 표준이 된 Office Open XML(OOXML)ISO JTC-1 최종 투표를 앞두고 한국 대표단이 OOXML의 보완 사항을 신중히 검토하여 투표해 줄 것을 촉구 합니다.

앞서 2007년 9월 ISO JTC-1 위원회 1차 투표 시 아래와 같은 이유로 한국 대표단에게 1,000여명의 서명을 받아 OOXML 표준안에 대해 반대 투표를 해 줄 것을 촉구한 바 있습니다.

  • OOXML안은 대체할만한 다른 표준안이 존재 한다.
  • OOXML안은 불완전 하며 플랫폼 종속적이다.
  • OOXML안은 모호한 특허 문제 때문에 제 3자 구현이 제한된다.
  • OOXML안은 국내 다양한 S/W 개발 환경을 제한할 것이다.

이에 한국 대표단은 1차 투표에 반대표를 행사하면서 총 23가지의 수정 요청 사항을 제출 하였으며, 이제 마지막 투표를 앞두고 있습니다. 이에 아래 서명을 한 한국 소프트웨어 개발자 일동은 아래의 사항에 동의 합니다.

1. 한국 대표단이 제기한 수정 요청 사항에 동의 한다.

한국 대표단의 수정 요구 사항을 요약 하면 크게 아래 4가지 사항과 같습니다.

  1. OOXML 표준안이 기존 ODF와 플러그인이 아니라 표준 스펙 그 자체로 호환성을 유지하도록 수정해야 한다.
  2. OOXML 표준안의 IE 기반 기술 규격이 리눅스나 Firefox, Safari, Opera 등의 브라우저도 지원 해야 한다.
  3. OOXML 표준안 중 12개의 MS Office 레거시 스펙을 좀 더 자세하게 설명해야 한다.
  4. OOXML 표준안 중 VML 및 DrawingML 등 기존 표준이 있는 부분을 삭제해야 한다.

2. 한국 대표단의 신중한 기술적 검토를 요청 한다.

한국 대표단이 1차 투표 이후 수정 보완된 OOXML 표준안이 당시 요청한 수정 요청 사항과 부합 하는 지 정확하게 검토해 주실 것을 요청 드립니다.

  1. OOXML 표준안에 대한 기술적 검토가 충분히 이루어 지길 기대한다.
  2. OOXML 표준안에 대한 수정 요청 사항이 충분히 받아들여졌는지 검토해주길 기대한다.
  3. OOXML 표준안에 대한 수정 요청 사항이 100% 받아들여지지 않았을 경우 최종 투표에서도 반대 투표를 해주길 촉구한다.

 유닉스/리눅스를 사용하다보면 다양한 작업을 시간대 별로 실행 시켜야 할 때가 있습니다. 사용자들이 적은 시간대에 해야할 작업, 특정 시각에 해야 할 작업, 특정 작업이 종료된 다음에 할 작업... 등등 작업은 아주 많습니다.
유닉스/리눅스에서는 cron이라는 프로그램을 이용해서 배치작업을 처리하죠. 이번에는 cron과 at을 이용한 작업 일정 관리에 관한 문서를 소개하려 합니다.

원문 : 리눅스 팁: cron과 at를 사용한 작업 일정 관리 (한글)


아래는 서문을 발췌한 것입니다.

2008 년 3 월 25 일

시스템 사용량이 적어진 한밤중에 작업을 실행할 필요가 있거나 일일이나 주간 단위로 작업을 수행할 필요가 있지만, 잠도 자야겠고 다른 활동도 하면서 삶을 즐기고 싶습니다. 작업 일정 관리가 필요한 또 다른 좋은 이유는 반복적인 과업을 자동으로 수행하도록 만들거나 매번 동일한 방식으로 과업을 수행하도록 만들고 싶기 때문입니다. 여기서 소개하는 팁은 주기적으로나 일회성으로 미래 작업 일정을 관리하는 cronat 기능을 활용하도록 도와줍니다.

리눅스(Linux®)와 유닉스(UNIX®) 시스템은 일회성이거나 반복적인 미래 작업 일정을 관리하도록 만들어준다. LPI exam 102 prep: Administrative tasks에서 발췌한 이번 기사에서는 주기적으로 작업 일정을 관리하는 방법과 미래에 작업을 수행하는 방법을 보여준다.

많 은 시스템 관리 작업은 리눅스 시스템에서 종종 주기적으로 수행해야만 한다. 이런 작업에는 로그 파일을 회전시켜서 파일 시스템이 가득 차지 않도록 만들기, 자료 백업하기, 시스템 시각을 동기화하기 위한 서버 연결과 같은 작업을 포함한다. 이런 관리 작업에 대한 세부 사항은 위에서 언급한 튜토리얼을 참조하기 바란다. 이번 팁에서는 리눅스에서 사용 가능한 작업 일정 관리 패키지인 cron, crontab, anacron, at 명령을 다룬다. 시스템이 잠들거나 꺼져 있더라도, anancron은 다음 번에 깨어날 때 작업을 따라잡도록 도와준다.




 이번엔 지난번에 소개했던 이클립스 유로파로 웹 개발하기 시리즈의 세번째, 루비 개발 도구와 RadRails입니다. 개발자에게 재미난 유희로 혹은 실제 업무에 사용할 유용한 개발 도구로서 루비는 그 영역을 넓혀가고 있습니다. 이클립스가 루비 개발 환경을 지원하는 것은 어찌보면 당연한 결과라고 생각합니다. Aptana studio라는 루비 IDE도 나와있는 상태죠. 이번에 소개할 문서는 이클립스 유로파에 루비 개발 도구를 설치해서 사용하는 법을 알려줍니다. 저도 따라서 해보고 있는데 재미있네요. ^^ 실제 업무에 써 볼 일이 생길지는 모르겠지만요.

 원문 : 이클립스 유로파로 웹 개발하기, Part 3: 루비 개발 도구와 RadRails (한글)

아래는 문서의 서론 부분입니다.

Java™, PHP, 루비로 웹 개발을 할 때 이클립스(Eclipse)를 사용하는 방법에 관한 3부로 이루어진 "이클립스 유로파로 웹 개발하기" 의 Part 1에서는 이클립스 최신 버전인 유로파를 이용해 어떻게 자바 웹 애플리케이션을 신속하게 개발할 수 있는지에 대해, Part 2에서는 PHP 애플리케이션을 PDT(PHP Development Toolkit) 플러그인을 이용하여 얼마나 쉽게 개발할 수 있는지를 다루었습니다. 이번 Part 3에서는 RDT와 RadRails 이클립스 플러그인들에 대해 다룰 것이며 이 플러그인들을 설치하는 방법과 사용하는 방법에 대해 살펴보겠습니다. 앞으로 많은 루비 온 레일스(Ruby on Rails) 개발 작업들을 RadRails를 통해 하는 방법을 배울 것입니다.

이 튜토리얼 내에서

Part 2에 서는 PHP를 개발함에 있어 IDE를 이용하여 얻을 수 있는 이점에 대해 이야기해 보았다. 대부분의 것들은 루비에도 똑같이 적용되며 루비 개발 툴킷(RDT)을 이용할 때 얻게 될 것이다. RDT는 구문 강조(syntax highlighting), 컬러링(coloring), 문법 검사, 코드 자동 완성, 포맷화(formatting) 그리고 프로젝트 구성 등 IDE의 기본적인 모든 기능을 제공한다. 또한 큰 프로젝트에 필수적인 루비 디버거(debugger)를 제공하고 있다. 그 외에도 정규표현식(regex) 편집기/테스터 같은 기능과 Test::Unit와 통합을 통한 단위 테스트 환경도 있다.

이번 튜토리얼에서는 RDT와 RadRails 플러그인을 소개할 것이다. 그리고 이것들을 설치하는 방법과 사용하는 방법에 대해 보여줄 것이다. 루비 온 레일스 개발 작업들을 RadRails를 통해 어떻게 하는지를 배우게 될 것이며 RadRails를 통해 레일스 애플리케이션 테스트와 디버그를 더 쉽게 하는 방법을 알게 될 것이다.


선수조건

이번 튜토리얼은 루비를 통한 웹 개발이다. 루비 온 레일스로 웹 개발을 한다는 말이나 다름 없다. 그래서 루비 온 레일스에 대해 약간의 경험이 있다고 가정한다. 이클립스에 익숙하다면 도움이 되겠지만 필수적이진 않다. 이번 튜토리얼은 처음 두 튜토리얼에서 자바와 PHP로 개발된 애플리케이션 위에서 개발된다. 자바와 루비 프로그래밍의 배경지식은 필수다. 이클립스 IDE에 익숙하다면 도움이 되겠지만 필수적이진 않다.

자~ 루비, 한번 해볼까요?
2월 첫번째 IBM DW Bloger 활동이 되겠네요. 지난번에 이어서 Eclipse를 이용한 웹 개발에 관련된 문서를 소개하려고 합니다. 지난번엔 J2EE 개발에 이용하는 법이었고, 이번엔 PHP 개발에 사용하는 방법을 소개하고 있습니다.


원문 : 이클립스 유로파로 웹 개발하기, Part 2: PHP 개발 도구 (한글)

웹 개발자가 어떤 기술을 결합하여 사용하는지에 상관없이 이클립스는 생산성을 높일 수 있는 최고의 통합 개발 환경(IDE)입니다. 3회 연재인 "이클립스 유로파로 웹 개발하기" Part 1에서 최신 이클립스 유로파로 자바 웹 애플리케이션을 신속하게 개발할 수 있는 방법을 다뤘습니다. Part 2에서는 PDT(PHP Development Toolkit)라 알려진 이클립스 플러그인의 다른 세트를 사용하여 얼마나 쉽게 PHP 애플리케이션을 개발할 수 있는지를 살펴보겠습니다.

시작하기에 앞서

여 러분은 PHP 개발자인가? 그렇다면 개발 환경에 무엇을 사용하는가? vi 대 emacs 토론에 끼어들기 좋아하는 최소주의자(minimalist)일지도 모른다. 또는 IDE를 선호하나 상용 도구엔 관심이 없을 수도 있다. 어쨌든 이클립스용 PDT에 대한 관심은 높을 것이다. 그렇다. 이클립스다. 이는 더 이상 자바 개발자에만 국한된 얘기가 아니다. PHP 프로그래밍에 대한 기본 지식을 가지고 있어야 본 튜토리얼을 이해할 수 있다. 이클립스 IDE에 익숙하면 도움이 되지만 꼭 필요한 것은 아니다. 이클립스에 대한 배경 정보를 더 원한다면 참고자료를 보기 바란다.

본 연재에 대해

본 "이클립스 유로파로 웹 개발하기" 연재를 통해 어떤 언어를 선택하든 웹 개발에 이클립스가 최적의 플랫폼이라는 것을 알 수 있을 것이다. 이클립스의 유연한 플러그인 시스템은 자바 기술, PHP, 루비(Ruby)로 웹 개발을 하는 데 있어 맞춤화된 이클립스 버전을 쉽게 만들 수 있도록 해 준다. 각기 다른 플러그인을 통해 이클립스가 각 언어에 독특한 능력을 갖게 한다는 것을 알 수 있고 모든 웹 개발자가 활용할 수 있는 공통 기능에 대해 살펴볼 수 있다. 본 연재를 통해 야구 선수의 경기 데이터에 접속하고 샘플로 그 선수들의 경기 통계를 계산할 수 있는 야구 웹 애플리케이션을 만들 것이다.




다양한 웹 개발 기술이 소개되고, 다양한 개발 툴이 소개되고 있습니다. 그중에서도 이클립스는 JAVA, C/C++, PHP, Ruby 등의 다양한 언어를 지원하는 IDE죠. 그리고 이젠 단순한 IDE를 넘어서 개발 프레임웍으로서 발전하고있습니다.
최근에 IBM에서 발표한 심포니라는 오피스 프로그램이나 제가 예전에 소개한 Arzureus라는 프로그램도 이클립스 프레임워크를 바탕으로 개발된 프로그램입니다. 점점 더 사용처가 늘어나고 있는 추세입니다. 아직은 좀 무겁지만 점점 기대됩니다.

 이번에 소개하는 문서에서는 이클립스 최신 버전인 이클립스 유로파를 웹 개발에 이용하는 법을 설명하고 있습니다. Eclipse europa, Apache Tomcat, MySQL, JPA에 관한 설정방법 및 간단한 개발 샘플을 보여줍니다.

원문 : 이클립스 유로파로 웹 개발하기, Part 1: 이클립스를 위한 Java EE (한글) (부제 : 자바 기술, PHP, 루비를 사용하여 웹 개발을 할 때 이클립스 유로파를 사용하는 방법)


본 Part 1에서는 자바 웹 개발에 이클립스 Java EE를 사용하는 방법을 다룰 것이다. 먼저 이클립스를 사용하여 데이터베이스에 연결하고 테이블을 만들고 데이터베이스에 테스트 데이터를 만드는 방법을 다룰 것이다. 웹 서버를 사용하도록 이클립스를 설정하고 이클립스 마법사를 사용하여 웹 애플리케이션, 웹 페이지, 데이터 접근 코드를 만드는 방법을 다룰 것이다. 마지막으로 이클립스를 사용하여 웹 서버를 제어하고 애플리케이션을 발행하고 서버에서 애플리케이션을 실행하면서 이를 디버그하는 방법도 다룰 것이다.



 Tomcat clustering 관련 문서에 이어서 Eclipse에서 변화관리를 위해 Subversion을 사용하는 법에 관련된 문서를 소개하려합니다.

 변화 관리라 하면 CVS라는 이름이 널리 알려져있었습니다. Eclipse[각주:1]에서도 CVS관련 기능이 있죠. 이 문서에서는 Subversion이라는 새로운 변화관리 시스템을 Eclipse에서 사용하는 방법을 설명하고 있습니다. Apache software foundation에서 진행중인 많은 프로젝트들이 Subversion을 이용하고 있죠. 이런 프로젝트에 Eclipse를 이용하는 방법을 알려줍니다.

원문 : Eclipse에서 Subversion을 사용하는 방법 (한글) (부제 : 쉬워진 통합)
이 문서는 IBM DeveloperWorks의 오픈소스 관련 문서들 중에서 하나입니다.


변화 관리(change-management) 기능에 액세스 하기 위해서, Eclipse는 처음부터 Concurrent Versions System (CVS)과 완벽한 통합을 도모했습니다. 이제, Apache Software Foundation에서 운영하는 많은 프로젝트들은 Subversion이라고 하는 변화 관리 시스템을 사용하고 있습니다. Subversion 저장소를 사용하는 프로젝트에 Eclipse를 사용하는 방법을 배워봅시다.


Eclipse는 대중적인 오픈 소스 변화 관리 시스템인 CVS에 대한 지원을 통합해 왔습니다. CVS의 기능과 그 한계는 잘 알려져 있지만, 많은 그룹들은 더 나은 확장성, 변화 합병 및 버전 브랜칭(branching) 지원, 바이너리 파일 포맷 지원을 제공할 수 있는 다른 버전 관리 시스템을 연구하고 있습니다.

Subversion (SVN)은 CVS를 대체하는 것으로서, 향상된 성능(지능형 로컬 캐싱과 데이터베이스 백엔드 중심), 쉽고 빠른 브랜칭(branching), CVS 사용에 따른 단점 향상을 제공하고 있습니다.

Eclipse에 Subversion 지원을 추가하는 방법과 IDE에서 기본적인 버전 관리를 수행하는 방법을 배워봅시다.

시작하기 전에

Eclipse를 다운로드 하여 설치해야 한다. 자신의 플랫폼에 맞춰 Eclipse SDK를 다운로드 하면 기본 Eclipse IDE(Eclipse Platform)과 Java™ Development Kit이 생긴다. C/C++로 작업하려면, C Development Tooling (CDT) 웹 사이트를 방문하여, 업데이트 매니저를 사용하여 CDT를 설치하라. (업데이트 매니저 사용 방법은 다음 섹션에서 설명한다.)

또한, Subversion 저장소에 액세스 해야 한다. 한 가지만 설정해야 한다면 Subversion 웹 사이트에서 제공하는 문서를 참조하라. 데모용으로 Subclipse 프로젝트를 검사하고, 필자의 LAN의 저장소에서 프로젝트로 작업하는 방법을 보여 줄 것이다.





  1. Eclipse에 대한  정보는 [Eclpse 개발자를 위한 프로젝트 정보]를 참조하세요
    Eclipse project homepage : http://www.eclipse.org [본문으로]
이번에도 [Open DeveloperWorks][각주:1]에서 톰캣 클러스터링에 관련된 글을 소개합니다.
지난번에 소개한 내용에 이어서 톰캣 세션 클러스터링 관련 글입니다.

원문 : [Open DeveloperWorks] 테라코타를 이용한 톰캣 세션 클러스터링


자주 바뀌는 GUI일수록 단위 테스트가 필요하다

지난 “아파치와 톰캣을 활용한 대용량 웹서비스 운영” 기사가 나간 이후로 많은 독자들의 문의를 받았다. 사실 아파치와 톰캣을 연동한다는 것은 이미 많은 자료와 웹 사이트에 소개된 바 있고 점점 더 손쉽게 이를 적용할 수 있도록 톰캣이 발전하고 있다. 하지만 대용량 서비스를 위해서는 단순한 연동뿐만 아니라 로드밸런싱, 클러스터링 및 서비스에 대한 자원 사이징 그리고 모니터링 등 다양한 방식의 접근이 필요하다. 이번 기사에서는 이 중에서 클러스터링에 대하여 좀더 고민해 보겠다.


  1. IBM DeveloperWorks에서 전문가의 글을 단순히 보는 단계에서 벗어나 스스로가 필자가 될 수 있습니다. 오픈 디벨로퍼웍스에 관심을 가져보세요. 채택되신 분들께는 소정의 원고료도 지급된다고 합니다. 저는 아직 능력이 안되서리...
    필자 지원하기
    [본문으로]
새해들어서 처음으로 소개하는 DW Blogger review입니다. ^^
복 많이들 받으셨나요?

 이번에는 [Open developerWorks]의 문서를 소개하려고 합니다. JAVA 개발 자들에게 친숙한 아파치 톰캣에 관한 내용인데요. 톰캣을 이용해서 대용량 웹서비스를 운영하려는 사람에게 필요할것은 문서입니다.

흔히들 자바웹서비스 개발을 시작할떄 책에서 많이 접하는 톰캣은 실제로 대용량 서비스에는 잘 사용하지 않습니다. 웹로직, 웹스피어, 제우스 같은 WAS를 많이 사용하죠. 그런데웹서비스에 사용할 서버의 숫자가 수십에서 수배개 정도가 된다면 구매 및 유지보수 비용이라는 거인을 만나게 됩니다. 수천에서 억단위로까지 넘어가는 견적서를 보게되면... 눈물이 앞을 가리죠.
 그래서 아래의 문서를 소개하려합니다. 실전에서 바로 사용할 수 있을지는 잘 모르겠지만, 길을 제시해주고 있네요.

원문 : [Open developerWorks] 아파치와 톰캣을 활용한 대용량 웹서비스 운영


웹 개발자에게 있어 톰캣은 JSP를 배우거나 간단한 테스트를 하는 정도의 웹 컨테이너로 생각하는 경우가 많다. 하지만 근래 들어 기업 및 대형 포탈에서 상용 서비스를 위한 웹 컨테이너로서 톰캣을 선택해, 성공적으로 적용한 사례들이 늘고 있다. 톰캣에서 안정적인 웹 서비스를 제공하기 위해서 지원하는 기능은 5가지가 있다. 아파치 웹서버와 연동, 로드밸런싱, 세션 클러스터링, 데이터베이스 처리, 모니터링 및 관리 등이 그것이다.
이 문서에서는 로드밸런싱과 세션 클러스터링 위주로 설명을 할 것이며, 다음에 기회가 된다면 다른 부분에 대해서도 자세히 알아보도록 하겠다.
 이번에도 IBM DW의 기술 문서중에서 Ajax관련 글을 소개하려합니다. 정말 Ajax가 대세...
Ajax와 XML을 이용해서 YouTube같은 멀티미디어 서비스를 제공하는 사이트에 적용된 기술을 설명하고 있습니다. PHP에 Ajax 기술을 적용해서 예를 들고 있죠.
한번쯤 읽어두면 도움이 될 거라 생각합니다. ^^

원문 : Ajax와 XML: 미디어용 Ajax (한글)(부제 : Ajax 기술을 사용하여 영화와 슬라이드 쇼 보여주기)

2007 년 12 월 18 일

광대역, 미디어, 영화, 이미지, 사운드 드라이브는 Web 2.0에 일대 혁신을 가져왔습니다. 미디어에 PHP와 Asynchronous JavaScript™ + XML (Ajax) 기술을 결합하는 방법을 배워봅시다.

웹 애플리케이션의 새로운 조류를 가장 잘 드러내는 사이트가 무엇이냐고 묻는다면, 대부분 YouTube라고 대답할 것이다. 이 사이트는 뚜렷한 방식으로 신 기술을 채택했을 뿐만 아니라, 우리가 미디어를 보는 방식과 미디어와의 관계를 변화시킨 사이트라고 할 수 있다. 주요 이야기들이 기존의 전통적인 미디어에 나타나기 전에 YouTube에서 발생하고, 그렇지 않을 때에는, YouTube는 하나의 큰 TiVo처럼 작동한다.


필자는 Jack D. Herrington이라는 20년 경력의 소프트웨어 엔지니어입니다.
 Code Generation in Action, Podcasting Hacks, PHP Hacks등의 책을쓴 사람이네요.
요즘 Ajax 얘기를 빼면 웹 어플리케이션에 대한 얘기가 진행이 안될 정도로 Ajax는 대중화가 된것 같습니다. 저도 Ajax 관련 글을 소개한 적이 있죠.
 이번에는 "Rich Ajax Platform, Part 1"(부제 : Eclipse 방식의 Web 2.0)이라는 글을 IBM DeveloperWorks의 오픈소스 관련 글에서 찾아서 소개합니다.  이 글에서는 RAP의 개념과 RAP를 설정하는 방법과 데모를 설명합니다. 모쪼록 많은 분들에게 도움이 되길바랍니다.

 원문: Rich Ajax Platform, Part 1 (Eclipse 방식의 Web 2.0)

2007 년 12 월 11 일
 Asynchronous JavaScript + XML (Ajax)과 Web 2.0의 개념은 웹 기반 애플리케이션에 활력을 더해주는 방식으로서 개발 커뮤니티를 통해 퍼져나가고 있습니다. Rich Ajax Platform (RAP)은 Eclipse 개발 모델을 사용함으로써 Ajax 실행 웹 애플리케이션을 구현하는 방식입니다. 이 글에서는, RAP의 개념과 RAP 개발 환경을 설정하는 방법과 데모를 설명합니다. 쉽게 이해할 수 있는 예제도 제공합니다.

 RAP 프로젝트는 Eclipse 개발 모델을 사용함으로써 Rich Internet Application을 구현하는 것이다. 그렇다면 "Eclipse 개발 모델"이란 것은 정확히 무엇인가? RAP는 자바™ 라이브러리와 Eclipse API를 사용하여 브라우저 기반의 Ajax 애플리케이션을 구현할 수 있도록 한다. SWT, JFace, Eclipse 워크벤치의 웹 실행 구현을 제공함으로써 이를 수행한다. 이 글에서는 몇 가지 간단한 예제로 RAP를 소개하고자 한다.

본문에 나온 이미지 중 하나를 올립니다. 이 문서에 나온대로 개발을 하면 이런 모양의 웹 어플리케이션을 만들 수 있다고 합니다.

사용자 삽입 이미지

RAP 컨트롤 데모


+ Recent posts