window – preference – general – wrkspace – text file encoding 에서 other 선택 후 utf-8.

참 쉽죠?

서버를 utf-8로 설치하고 euc-kr 파일을 올려두니 vi에서 하나도 알아볼 수가 없었습니다. 간단하게 확인하는 방법은 아래와 같습니다.

++enc=euc-kr

일시적으로 확인하는 방법으로는 위 방법을 쓰면 되겠지만 알아서 처리해주는 방법도 있네요. http://kldp.org/node/32987의 내용입니다.

# ~/.vimrc을 열어 아래 한줄을 추가합니다.

fencs=ucs-bom,utf-8,cp949

호스팅 서비스를 이용해보면 호스팅 아이디를 기준으로 생성된 파일들의 uid, gid가 설정된다. 별도의 모드를 설치해줘야 해당 방식대로 아파치를 운영할 수 있는데 apache1.x는 mod_become, apache2.x는 mod_ruid 또는 apache2-mpm-itk를 설치하면 된다. 각 VirtualHost마다 설정해주면 해당 유저 권한으로 생성/제어가 가능하다.

cafe24에서 서버 호스팅을 구입하면 세팅 연락이 오는데 추가 요청 시 아래와 같은 기본적인 사항을 설치해준다. centOS 5.x(x64) 서버 구입시 설치해준 항목이다.

httpd-2.2.20.tar.gz
iozone-3-327.src.rpm
iperf-2.0.5-1.el5.src.rpm
iperf-2.0.5-1.el5.x86_64.rpm
jfsutils-1.1.12-1.x86_64.rpm
mirrordir-0.10.49-1.2.el4.rf.x86_64.rpm
mysql-5.1.45.tar.gz
mysql-5.1.59.tar.gz
openssl-0.9.8d.tar.gz
php-5.2.16.tar.gz
qpopper4.0.13.tar.gz
reiserfs-utils-3.6.19-2.4.1.x86_64.rpm
smartmontools-5.37.tar.gz
ZendOptimizer-3.0.2-linux-glibc23-x86_64.tar.gz
ZendOptimizer-3.3.0a-linux-glibc21-i386.tar.gz
ZendOptimizer-3.3.0a-linux-glibc23-x86_64.tar.gz
ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz

IT업계의 이야기를 재미있게 적어놓은 소설입니다. 좀더 실무에 다가간 이야기나 현실성 가득한 이야기가 있어 단지 소설이라고만 보기엔 많은 생각을 하게 했습니다. 특히 버그가 없는 완벽한 프로그램은 없다지만 그 완벽을 향해 달려가는 사람들의 이야기를 보며 완전함에 대한 방향성을 다시 생각해보게 되었습니다.

개발언어를 공부할 때 가장 좋은 방법은 게임을 만들어보는 것입니다. 게임은 그나마 비지니스 지향의 모델보다는 현실적인 객체지향을 공부할 수 있는 환경을 경험할 수 있다고 합니다. 그래서 올 한해 해온 일을 정리하는 느낌으로 간단한 웹게임을 구현해보고 있습니다.

웹게임에 대해서는 지속적으로 관심이 많았습니다. 웹은 비록 문서로 출발하였으나 플랫폼의 역할로 자리 잡은 지 오래되었습니다. 그럼에도 아직 걸출한 순수 웹기반 게임은 나오지 않았죠. 유료화의 모델이나 소스가 노출되는 경우의 문제점도 많았습니다만 실질적으로는 front-end 개발에 대해 전문가가 없었던 시장 상황이 가장 큰 영향이었던 것 같습니다. 최근 jQuery 등 다양한 javascript framework이 나와 쉽게 ajax와 연동하여 말 그대로 상호작용하는 웹을 구축하는데 이전에 비해 상당히 간편해진 편입니다. 오픈소스로 돌아다니던 수많은 웹게임은 request-response 의 한계를 극복하기 힘들어 내재된 iframe으로 계속 새로고침 한다거나 사용자 스스로가 F5를 연타함으로 실시간의 데이터를 불러오기 위해 고생 아닌 고생을 했었던 것에 비하면 엄청난 UX 증대라고 볼 수 있겠죠. 게다가 long-lived의 connection이 요구되었는데 때마침 node.js와 같은 다양한 도구들이 나타나기 시작했습니다. 지금까지의 웹게임은 대부분 플래시, activeX, 실버라이트와 같은 서드파티의 지원이 없어서는 안될 상황이었지만 이제는 웹 자체만으로도 충분히 가능한 상황이 되었습니다.

특히 그래픽이 화려하고 장시간을 투자한 헤비 유저와 하루에 십 여분 즐기는 라이트 유저 중 후자에게 웹게임은 충분히 메리트가 있었습니다. 게다가 웹게임은 일반 게임들에 비해 고사양을 요구하는 것도 아니며 브라우저만 있으면 장소와 운영체제(모바일까지도) 구분 없이 접속해 즐길 수 있다는게 최근 시장에 반영되어 웹게임 벤더도 많이 늘었고 대형 포털에서도 그에 맞는 웹게임들을 제공하기 시작했습니다. 소셜게임이라는 형태로 SNS와 연계되어 공간과 상관 없이 함께 즐길 수 있어 이와 같은 부분도 흡인요인으로 작용했습니다. facebook이나 싸이월드 등에서 즐기는 게임들이 다 이런 형태죠.

여튼 서문이 길어졌는데 제가 만들고 있는 아주 단순한 수준의 (서문에 비해 보잘것 없는;) 웹게임입니다. zynga에서 facebook을 통해 제공하는 farmvile이란 서비스를 모델로, 농장에 나무를 심는 그런 내용의 게임인데요. 틀을 만들어가다보니 나름 서비스의 방향성을 생각하게 되어 그냥 연습 이상에 뭔가(?)가 만들어질 것 같다는 생각에… 물론 뚜껑은 열어봐야 알겠지만요;

웹게임을 개발하면서 이것저것 검색도 해보니 게임코디라는 대형 커뮤니티도 있고(물론 웹게임에 관한 이야기는 거의 전무하죠..) 게임프로그래밍은 독자적인 영역으로서 인정받고 굳건하게 존재한다는 사실도 알게 되었습니다. 그리고 웹게임이 실제로 서비스가 된다면 그에 따라 게임물등급위원회의 심사도 받아야 하는데 이게 또 악명(?)이 높은가 봅니다.

일단 개발 자체에 대해서 몇자 적어보자면

  • 개발은 php(codeigniter), mysql
  • 모바일에서도 쉽게 즐길 수 있도록 가볍게 제작
  • ux를 높이기 위한 js(jQuery) 사용
  • 실 서비스를 염두함
  • 앱으로 컨버팅 고려 (최소한 웹뷰 고려)
  • 데이터는 json으로
  • 기존의 소셜게임과는 조금 다른 접근으로
실제로는 어떻게 나올지는 모르겠습니다만 기대해도 좋습니다. 뭐라도 나올겁니다!

facebook에서 링크를 공유하거나 담벼락에 게시한 경우 해당 사이트의 정보가 페이스북에 캐싱되어 있습니다. 그래서 페이지 내용이 수정되면 캐시를 초기화 해줘야 하는데요. 아래의 주소로 들어가 해당 주소를 넣어주시면 갱신이 됩니다.

http://developers.facebook.com/tools/debug

php 싱글톤(singleton) 패턴인데 클래스 외부에서 function을 선언함으로 해당 클래스 자체에서 사용 가능하게 되는 형태였네요. CI가 이런 형태로 구현되어 있습니다.

<?php

function &#038; get_instance()
{
 return controller::get_instance();
}

class controller {
 private static $instance;

 function __construct(){
  self::$instance = &#038; $this;
  $this->load = new loader();
 }


 public static function &get_instance(){
  return self::$instance;
 }
}

class loader{
 function model($model_name){
  $controller = & get_instance();
  $controller->$model_name = new $model_name;
 }
}

class say{
 function hello(){
  echo "hello";
 }
}

class main extends controller {
   function __construct(){
      parent::__construct();
      $this->load->model("say");
   }

   function index(){
    $this->say->hello();
   }
}

$c = new main();
$c->index();

2014년 4월 추가 : 에디터 적용을 위해 이 글을 보고 있다면 Summernote를 확인하자. http://hackerwins.github.io/summernote/


에디터 문제로 늘 골머리를 썩히고 있는데 naver smart editor를 적용하자니 jindo라는 프레임워크를 하나 더 올리는게 부담스러워서 사용하지 않았었습니다. 한동안 열심히 에디터를 찾아봤지만 적당한 대안이 없어 …그냥 도입하기로 했습니다.

적용하려고보니 약간 문제가 있었습니다. jindo 에서 jQuery랑 동일하게 $를 사용하고 있는 문제로 jquery에 네임스페이스(namespace)를 지정해서 사용해야 했는데 jindo를 에디터에만 사용하기 때문에 스마트 에디터를 수정해서 jindo의 네임스페이스를 사용하는 편이 낫다는 판단을 했습니다. 앗, 절대 jindo가 별로라거나 나쁘다는 의미가 아닙니다…ㅎㅎ 사내에서 이미 jQuery를 많이 사용하고 있어서 교차로 사용하기엔 교육 문제도 있으니까요.

  1. 먼저 nforge에서 smart editor, jindo(namespace)를 내려받습니다.
  2. jindo를 js 폴더에 넣고 js 폴더에 있는 js 파일들을 열어 아래의 정규식으로 치환해줍니다.
> (\$\$\(|\$\$\.|\$A\(|\$A\.|\$Agent\(|\$Agent\.|\$Ajax\(|\$Ajax\.|\$Class\(|\$Class\.|\$Cookie\(|\$Cookie\.|\$Date\(|\$Date\.|\$Document\(|\$Document\.|\$Element\(|\$Element\.|\$ElementList\(|\$ElementList\.|\$Event\(|\$Event\.|\$Fn\(|\$Fn\.|\$Form\(|\$Form\.|\$H\(|\$H\.|\$Jindo|\$Json\(|\$Json\.|\$S\(|\$S\.|\$Template\(|\$Template\.|\$Window\(|\$Window\.)
> jindo.\1

내용은 jindo 레퍼런스에서 긁어와서 무식하게 만들었습니다; 저는 에디터 플러스에서 했습니다. 정규표현식으로 치환이 가능한 도구를 사용하시면 되겠습니다.

차기 네이버 스마트 에디터에서는 네임스페이스 버전을 제공한다고 개발자센터에 써져 있는 것 보면 얼른 업데이트 되길 기대해봅니다. 근데 최종이 2009년 9월이네요.

이번에 mysql 최신 버전을 써보겠다는 일념으로 mysql 5.5.x 소스를 받아 컴파일해서 서버에 올렸습니다. 이상하게 한글이 깨져 보니 기본 캐릭터셋이 latin1로 되어 있어서 변경해보고자 검색을 해봤지만 적용하니 mysql이 시동조차 되지 않는 상황; 다행히 mysql 커뮤니티를 계속 뒤진 결과 답을 찾을 수 있었습니다.

/etc/my.cnf 파일을 수정해서 [mysqld] 아래에 추가합니다.

[mysqld]
collation_server=utf8_unicode_ci
character_set_server=utf8

웹사이트 설정

웹페이지 색상을 선택하세요

Darkreader 플러그인으로 선택한 색상이 제대로 표시되지 않을 수 있습니다.