1. SiteMesh의 정의 SiteMesh(http://www.sitemesh.org/)는 웹 페이지의 레이아웃을 효율적으로 처리할 수 있도록 도와주는 프레임워크입니다. 쉽게 말해서 웹사이트의 동일한 상단, 하단, 메뉴 부분을 한곳에서 관리하고 각각의 페이지는 실제 내용만을 관리할 수 있도록 해줍니다. 즉, 상단/하단/메뉴와 같이 반복되는 부분이 각 페이지마다 들어가 있으면 추후 유지보수가 어렵기 때문에 SiteMesh와 같은 프레임워크를 사용하는 것이죠. 웹사이트를 제작하던 초기에는 iframe으로 나누어서 처리하기도 했었구요. SiteMesh 이전에는 include를 활용해서 이런 형태를 구현하기도 했었습니다. 그러나 iframe은 확장이 어렵고 지원하지 않는 브라우저도 많이 있었네요. 또한 inc..
주석이 왜 필요한가? 프로그래밍을 배울 때 변수, 제어문 등에 앞서 주석을 지정하는 방법에 대해서 가장 먼저 설명하는 것을 볼 수 있습니다. 특히 예전에는 주석을 잘 활용하는 것이 중요하다는 이야기를 많이 했었는데요. 요즘에는 프레임워크가 발달하면서 상대적으로 주석이 필요 없다는 의견도 많은 것 같습니다. 실제 프로그래밍을 하다보면 6개월에서 1년 정도 지난 후 자신의 소스를 봐도 생소하게 느껴질 것입니다. 이럴 때 초기에 주석을 달아놨더라면.. 하는 생각을 한번쯤은 해 봤을 겁니다. 즉, 주석은 다른 사람이 소스를 봤을 때 빨리 이해할 수 있도록 적는 것이 중요합니다. 가끔 프로그램 소스보다 주석이 많은 경우가 있는데 이는 오히려 가독성을 떨어뜨리는 결과를 가져오기도 합니다. 그래서 꼭 필요한 부분에 ..
아이폰에 비해 안드로이드는 개발에 제한이 많이 없습니다. 아이폰은 Sandbox와 같은 형태로 Application 간의 영역 공유가 제한되어 있지만, 안드로이드에서는 Intent를 통해서 자유롭게 영역을 넘어들 수 있게 됩니다. 그렇다면 음성 처리와 관련되어 안드로이드에서는 어디까지 가능할까요? 관련된 API들을 한번 정리해 봤습니다. 안드로이드에서 음성을 처리하는 가장 기본적인 SDK는 바로 MediaPlayer입니다. 만약 통화 중 녹음과 같은 기능을 구현하고 싶다면 MediaRecorder와 같은 클래스를 활용하면 됩니다. MediaRecorder의 AudioSource를 활용해서 해당 기능들을 구현할 수 있을 겁니다. MediaRecorder의 state diagram은 다음 그림과 같네요. 만..
요즘 글로벌 홈페이지들을 살펴보면 Korean / English와 같이 언어별로 구분되어 선택할 수 있도록 되어 있습니다. 오늘은 이와 같이 접속자에 따른 홈페이지의 언어별 분류를 어떻게 하는지 정리해 보도록 하겠습니다. 가장 확실한 방법은 역시 쿠키를 활용하는 것입니다. 사용자가 선택한 언어를 쿠키에 저장해 두고 홈페이지가 열릴 때마다 보여주는 방법이죠.. 한번 설정한 언어 정보를 기반으로 계속 보여주기 때문에 지속적으로 방문하는 사용자를 위해 일반적으로 많이 사용되는 방법입니다. 그러나 사용자가 선택하기전에 어떤 언어를 먼저 보여줘야 할지를 결정하는 부분이 이슈가 됩니다. 이때 사용하는 것이 접속자의 IP를 기반으로 국가를 파악하고 언어를 설정하는 방식을 사용합니다. 그렇다면 IP를 기반으로 국가 정..
HTML4와 CSS2에서는 다양한 미디어 타입에 따라 처리할 수 있는 스타일시트를 지원하고 있습니다. 스마트폰, 태블릿, 스마트TV 등 다양한 화면의 크기를 가진 기기들이 배포됨에 따라 관심을 받게 된 것 같습니다. 먼저 미디어 쿼리를 적용한 사이트(http://mediaqueri.es/)를 모아둔 곳을 한번 살펴보시죠. One-Source Multi-Use 측면이나 모바일 웹 개발이 증가하면서 미디어 쿼리를 적절하게 활용하는 것이 필요할 것 같습니다. 미디어쿼리에 대한 W3C의 문서는 현재 Candidate Recommendation 상태로 거의 현재 상태로 표준이 될 것 같네요. 미디어쿼리는 CSS에 설정을 통해서 화면 크기 등에 따라 다른 형태로 보여줄 수 있도록 구현하는 것입니다. 이를 위해 me..
아파치 로그를 분석하는 awstats에 대해서는 지난번에 블로깅을 한 적이 있습니다. 2011/08/20 - [프로그래밍/리눅스] - 웹로그 분석 프로그램 AWStats 활용 그런데 최근 로그 파일을 분석하려고 해보니 2달 정도 쌓이 로그가 6G 정도 되더라구요. (월별로 쌓도록 구성했어야 했는데.. 설정을 변경해야 겠네요. ㅠㅠ) awstats가 분석하다가 결국 out of memory라는 말을 남기고 그대로 종료해 버렸습니다. 그래서 로그 파일을 분할하는 프로그램을 찾아봤는데요. cronolog(http://cronolog.org/)라고 하는 프로그램이 있더군요. 원래는 아파치 로그가 쌓일때 월별, 날짜별로 저장하도록 필터를 쉽게 설정할 수 있는 프로그램이라고 합니다. 그런데 여기 실행파일을 보면 c..
포털 사이트를 비롯한 모바일 웹을 살펴보면 좌우로 스와이프 하는 기능들이 많이 포함되어 있습니다. 협소한 공간에 여러 컨텐츠를 배치하기 위한 방법으로 활용되고 있는데요. 이러한 스와이프를 구현하기 위해서는 꽤 많은 자바스크립트와 코드가 들어가야 합니다. 오늘 소개할 SwipeView는 이러한 기능을 처리해 주는 스크립트를 제공하는 거네요.. http://cubiq.org/swipeview cubig.org 사이트를 보면 이외에도 상당히 괜찮은 모바일 웹 기반의 소스들을 제공하고 있습니다. 먼저 스와이프가 적용된 동영상과 데모 페이지들을 살펴보시죠. 이미지 갤러리에 대한 데모 페이지는 다음과 같습니다. http://cubiq.org/dropbox/SwipeView/demo/gallery/ 이미지 이외의 컨..
90년대 후반부터 HTML을 시작한 분들은 CSS 보다는 태그와 태그를 활용해서 HTML을 작업하는데 익숙해 있기는 합니다. 그래서인지 CSS에 대해서 명확하게 이해하지 못하고 있는 부분들이 있는 것 같습니다. 특히 Margin과 Padding과 같은 부분에 대해서 가끔 헤깔려 하는 것 같아서 정리해 보려고 합니다. 위 그림을 보면 Margin, Border, Padding에 대해서 잘 나와 있습니다. Border는 경계선으로 실제 콘텐츠를 감싸고 있는 선으로 스타일, 색, 두께를 지정할 수 있습니다. 콘텐츠 부분과 다르게 보이도록 하기 위해서 페이지의 배경색과 다른 색을 사용하기도 합니다. Padding은 Border 안쪽에 위치하는 여백으로 콘텐츠에 대한 공간을 지정하는 것입니다. Padding 공간..
지도 좌표계를 보면 참 복잡한 것 같습니다. Bessel, TM, UTM, WGS84 등등 다양한 이야기들이 나옵니다. 스마트폰이 대중화되면서 GIS에도 관심은 많아졌지만 대부분 지도 API 만을 사용할 뿐 해당 개념에 대해서는 파악하기가 어려운 면이 있는 것 같네요. 그래서 한번 내용을 정리해 보도록 하겠습니다. 실제 지구를 덮고 있는 지형의 모양을 지표면이라고 하는데요. 지표면은 당연히 울퉁불퉁한 형태로 구성되어 있습니다. 그래서 평균 해수면을 토대로 다시 지구를 그려 본 것을 지오이드라고 합니다. 이것도 지표면보다는 조금 낫지만 역시 복잡한 모양으로 이루어집니다. 그래서 지구의 모양에 잘 맞게 수학적인 타원체로 그려서 사용하게 됩니다. 하지만 이런 타원체가 나라마다 조금씩 다르게 구성되어 있습니다...