가입형 블로그 개발

방학 중 알바를 하기 위해 알바천국 등에 구직 글을 올렸습니다.
대학생이고 PHP, MySQL을 다룬다고 하니까 여러 군데에서 연락이 왔습니다.
그러나 대개는 제가 원하는 웹 프로그래밍 단기 아르바이트를 구하는 게 아니라 수련직으로 채용하는 방식이었습니다.
나중에 알고 보니 수련 기간에는 원래 주기로 한 돈보다 적은 급여를 줘도 되기 때문에 기업들이 선호하는 채용방식이라고 합니다.
그런 연락들을 거절하던 중 제가 원하는 단기 아르바이트 방식을 원한다는 연락이 있어서 계약을 맺었습니다.
일주일에 한두 번씩 수업 끝난 뒤에 찾아가서 피드백, 회의하고 돌아와서 작업하였습니다.

계약상 자세한 내용은 밝힐 수 없지만 기본적으로는 블로그와 SNS를 결합한 방식의 웹사이트였습니다.
아이디어로부터 시작해 기획과 코딩이 함께 진행되었기 때문에 최종 결과물에 비해서 프로그래밍의 기간은 긴 편이었습니다.
PHP, MySQL 환경에서 작업하였습니다.
처음에는 가입, 게시물 관리 등의 기능을 사용하기 위해 그누보드4를 주로 사용할 게획이었으나, 의뢰인이 원하는 기능 중에 그누보드4의 기본 기능을 뛰어넘는 부분이 많이 있었기 때문에 그누보드는 포스팅을 작성하고 수정하는 데에만 제한적으로 사용하였습니다.
핵심적인 몇 가지 기능을 구현하기 위해서 고생을 했는데 계약상 그 내용은 자세히 적을 수 없습니다.

문제점 #1. 언어 문제

국제적으로 서비스하기 위해 만든 웹사이트이고, 모든 서비스를 영어로 제공하기로 기획되었습니다. 그러나 그누보드4를 기반으로 제작하였기 때문에 가입, 검색, 안내문 등의 모든 언어가 기본적으로 한국어였습니다. 따라서 영어로 서비스하기 위해서는 번역을 위한 추가적인 작업이 필요했습니다.

이를 해결하기 위해서는 그누보드의 스킨을 사용했습니다. 그누보드는 게시판 뿐 아니라, 최근글, 검색, 회원가입, 외부로그인 등에 관한 스킨을 제공합니다. 따라서 많은 경우에는 스킨을 수정하여 한국어를 영어로 바꿀 수 있습니다. 그렇지만 비밀번호 찾기 메일, 각종 에러 발생 시의 안내문 등은 스킨으로 처리할 수 없는 부분이었기 때문에 직접 그누보드의 소스를 수정해야 했습니다. 이는 유지관리를 어렵게 하는 원인이 되었습니다.

이 과정에서 얻은 결론은, 외국어/다국어로 서비스해야 하는 웹사이트의 경우에는 처음부터 그누보드 이외의 프레임워크를 사용해야 한다는 것이었습니다.

문제점 #2. 날씨 입력 문제

블로그의 포스팅에 날씨를 자동으로 입력하기로 기획하였습니다. 이를 위해서는 접속자의 위치를 알아야 하고, 그 위치에서의 현재 날씨를 알아야 합니다.

이를 해결하기 위해서는 두 종류의 open api를 사용했습니다.
즉, ip 주소를 통해서 국가와 도시 이름을 알려주는 api와, 국가와 도시 이름으로부터 현재 날씨를 알려주는 api를 찾아서 이용했습니다.

문제점 #3. 회원별 고유주소 할당 문제

페이스북, 트위터, 싸이월드와 같이 회원별로 고유주소를 할당하기로 기획되었습니다.
즉, http://www.nam.or.kr/member_id 로 접속하면 member_id라는 회원의 개인 페이지로 연결되어야 하는 것입니다.
대개의 MVC 패턴의 PHP 프레임워크의 경우에는 이와 같은 기능을 기본적으로 제공합니다. 그러나 그누보드4는 기본적으로 이러한 기능을 제공하지 않습니다.

이를 해결하기 위해서는 서버의 public_html 디렉토리에 .htaccess 파일을 작성하였습니다.
접속한 url이 루트의 폴더가 아닌 경경우에는 특정 페이지로 리다이렉트하도록 하였습니다.
예를 들면 다음과 같습니다.

RewriteEngine on
RewriteCond %{REQUEST_URI} !^(/$|/index\.php|/adm|/bbs|/lib|/skin)
RewriteRule ^(.*)$ http://www.nam.or.kr/profile.php?user=$1 [L]

관련 포스트

답글 남기기

이메일 주소는 공개되지 않습니다.