2013년 5월 25일 토요일

엘더스크롤5 스카이림

출시된지는 오래 되었지만, 그 동안 말로만 듣던 엘더스크롤5 스카이림을 요즘 플레이 중이다. 얼마전에 툼레이더 리붓 구경 할때 느낀 감탄을 플레이를 하는 내내 느끼고 있다. 진짜 요즘 게임 기술 발달이 대단하다는...

<비오는 화이트런>

모드 맞추느라 게임을 열 댓번 재시작 한 거 같은데, 이렇게 들인 노력이 아깝지 않을 정도로 흥미로운 게임이다. 게임 자체로도 재미있는데, 돌아다니면서 게임 그래픽 구경하는 것도 나름 재미 있다.

<화이트런 나오는 입구>
게임을 돌리는 환경이 작년에 구입한 싸구려 노트북인데, 노트북에서 캡쳐 한 것과 같은 그래픽 퀄리티를 뽑아내는거 보면, 개발자들 정말 존경 스러울 정도이다.

<리버우드 재재소 옆>
가장 처음 시작하는 마을이 리버우드 인데, 안개 낀 느낌을 저렇게 잘 표현하다니 정말 우와 한마디 밖에 나오지 않는다는...적극 추천인 게임이다.

조금 진행 해 보니 느긋하게 플레이 하면 무진장 많은 시간이 드는 게임으로 보여지지만, 3-4달 잡고 엔딩을 보려고 노력중이다.

2013년 5월 24일 금요일

xcode 에서 c++ 컴파일

출처: http://hanjw8410.egloos.com/5081069

작년 초반까지 별 다른 변경 없이, obj-c, c++, c 가 오류 없이 컴파일이 되었는데, xcode 가 업데이트 되고 어느 순간 부터 아무런 오류 없던 c++ 이 오류가 발생하는 경우가 발생 했었다.

이것 때문에 여러번 구글링 했는데, 앞으로 생각 날때 마다 찾아다니지 않기 위해서 적어 두자.


c++ 컴파일 관련해서 기본이 파일명을 기준으로 해서 하도록 되어 있는데, 이것 관련해서 문서 찾아 보기도 귀찮고 하니, "Compile Source As" 부분을 "According to File Type" 에서 "Objective-C++" 로 바꾸면 예전과 마찬가지로 사용해도 아무런 에러가 발생하지 않는다.

참고 하도록 하자.

2013년 5월 22일 수요일

phpmyadmin 설치

mysql 은 브라우저로 데이터베이스 관리 할 수 있는 phpmyadmin 이라는 툴이 존재한다. 물론 터미널로 붙어서 관리 하는 것도 좋은 방법이지만, 요즘들어 타이핑 치기 싫은 귀차니즘으로 phpmyadmin 을 많이 사용하고 있다.

설치 하는 방법은 다음과 같다.

1. phpmyadmin 다운로드
phpmyadmin 사이트 에서 무료로 다운로드 가능하다. 현재 최신 버전이 4.0.1 이어서  phpMyAdmin-4.0.1-all-languages.zip 파일을 다운로드 받았다.


2. 압축 해제
다운로드 파일을 압축 해제 후, 사용하기 편하도록 디렉토리 명을 적당한 이름(phpmyadmin) 으로 변경 한다.


3. mac book 의 httpd 디렉토리로 이동
압축 해제한 phpmyadmin 디렉토리를 mac book 의 Site 디렉토리로 이동.


4. phpmyadmin 페이지 접속
웹 브라우저에서 http://localhost/~dhkim/phpMyAdmin/ 으로 접근 하면 phpmyadmin 최초 페이지를 확인 가능하다.



5. 로그인
root 암호와 패스워드를 넣고 접속 하면 일단 기본적인 접속 끝. 참고로 root 패스워드 없이 접근이 불가능하다.(mysql 의 root 패스워드가 설정 안되었다면 패스워드 부터 설정 해야 한다.)


root 로 접속하면 위의 화면 같이 나온다.

화면 아래쪽에 분홍색도 보이고, 설치 어쩌고 저쩌고...하는 왠지 제대로 되지 않았다는 느낌이 팍팍 풍기는 안내 문구 들이 보인다. 내용이 무시 해도 될 것 같기도 하지만, 메시지가 보기 싫어서 해 달라는데로 해 주기로 한다.


6. phpMyAdmin 용 database, table 생성
phpMyAdmin 디렉토리에 보면 examples 라는 디렉토리가 보인다. 들어가 보면, create_tables.sql 이 존재한다. 이것으로 phpMyAdmin 용 테이블을 생성한다.

터미널로 mysql 접속하여 다음과 같이 하면 테이블 생성된다.

mysql> mysql -u 사용자계정 -p DB이름 < /path/examples/create_tables.sql

path 에는 phpMyAdmin 이 설치 되어 있는 경로이다.

아니면 create_tables.sql 파일 내용이 얼마 안되기 때문에, 명령어 복사하여 그대로 실행 해도 된다.


7. phpmyadmin 에서 사용하는 mysql account 생성
테이블이 생성 되었으니 phpMyAdmin 에서 사용하는 mysql account 를 생성한다. 터미널로 해도 되지만, 이미 phpMyAdmin 을 사용 할 수 있기 때문에, 이것을 이용하여 생성한다.

상단 메뉴 탭에서 "사용자" 를 선택해서 들어간 후, 기본 정보를 넣고 account 를 생성한다.
(일단 권한은 건드리지 말자...하나씩 차근 차근)


"사용자 추가" 까지 완료하면 사용자는 추가 되었는데, 6번 단계에서 만든 phpMyAdmin 용 database 를 사용할 권한은 아직까지 없다. 이젠 권한을 추가 하도록 하자.

다시 "사용자" 메뉴로 들어가면 추가한 account 가 보인다. "권한 설정" 을 선택하여 권한 설정 메뉴로 이동 한 후, "데이터 베이스에 관한 권한" 에서 phpmyadmin 을 선택하여 실행 버튼을 누른다.


드디어 phpmyadmin 데이터 베이스 에 대한 생성한 계정의 권한 설정으로 들어 왔다.
테이블 별로 권한을 줄 필요가 없기 때문에 다음과 같이 관리 권한만 빼고 모든 권한을 설정한다.(관리 권한은 필요 없겠지 아마도...)


이제 실행을 눌러서 권한 설정을 완료 한다.


8. phpMyAdmin 의 config 파일 추가/수정
phpMyAdmin 디렉토리를 보면 config.sample.inc.php 라는 파일이 존재한다. 이 파일을 config.inc.php 이름으로 복사하여 phpMyAdmin 디렉토리에 둔다.

아래 내용이 주석으로 막혀 있는 코드들을 모두 풀어 준다.

/* User used to manipulate with storage */
// $cfg['Servers'][$i]['controlhost'] = '';
// $cfg['Servers'][$i]['controluser'] = 'pma';
// $cfg['Servers'][$i]['controlpass'] = 'pmapass';

/* Storage database and tables */
// $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
// $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
// $cfg['Servers'][$i]['relation'] = 'pma__relation';
// $cfg['Servers'][$i]['table_info'] = 'pma__table_info';
// $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
// $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
// $cfg['Servers'][$i]['column_info'] = 'pma__column_info';
// $cfg['Servers'][$i]['history'] = 'pma__history';
// $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
// $cfg['Servers'][$i]['tracking'] = 'pma__tracking';
// $cfg['Servers'][$i]['designer_coords'] = 'pma__designer_coords';
// $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
// $cfg['Servers'][$i]['recent'] = 'pma__recent';

그리고, 'controlhost', 'controluser', 'controlpass' 에 mysql account 생성에서 사용한 값으로 변경 한다. 변경 후 다음과 같이 될 것이다.

/* User used to manipulate with storage */
$cfg['Servers'][$i]['controlhost'] = 'localhost';
$cfg['Servers'][$i]['controluser'] = 'pma_user';
$cfg['Servers'][$i]['controlpass'] = 'passpass';

/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['designer_coords'] = 'pma__designer_coords';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';

파일 저장 후, 웹 브라우저에서 phpMyAdmin 페이지를 다시 로그인 하면, 화면 하단의 안내 메시지들이 사라져 있다.(translation 관련 메시지는 보이는데, 이건 그냥 무시!)


9. 기타
이런 훌륭한 application 을 무료로 배포하는 것에 감사하며 phpMyAdmin 에 $1 라도 Donate !

2013년 5월 21일 화요일

mac os(mountain lion) 에서 mysql 설치

예전에 mac 에서 mysql 쓸수 있는지 확인하기 위해서 이미 설치를 했었다.
일단 삭제 하고 다시 설치 하자. (삭제하는 방법 구글링 한 것 아까워서 삭제 부터 시작함!)


1. 기존 인스톨된 mysql 삭제
sudo rm /usr/local/mysql
sudo rm -rf /usr/local/mysql*
sudo rm -rf /Library/StartupItems/MySQLCOM
sudo rm -rf /Library/PreferencePanes/My*
rm -rf ~/Library/PreferencePanes/My*
sudo rm -rf /Library/Receipts/mysql*
sudo rm -rf /Library/Receipts/MySQL*
sudo rm -rf /var/db/receipts/com.mysql.*
vim /etc/hostconfig # and remove the line MYSQLCOM=-YES-
출처: Removing MySQL From OSX Lion

lion 버전에서 삭제 라는데, 그냥 무시하고 그대로 따라 했다.
재부팅 하니....별 문제 없는듯.....


2. mysql 다운로드
Mysql 사이트 에서 다운로드 받으면 된다. 사이트 방문하면 여러가지 메뉴가 많은데, 대충 "Download" 들어가서 "MySQL Community Edition (GPL)" 받으면 된다.

참고로 mysql 사이트에 가입 후 로그인 해야 하니, 가입 안 했다면 돈 안드니 가입 하면 된다.

최종 다운로드 메뉴로 들어가면 자기가 알아서 Mac OS X 용 패키지를 보여 주니, 골라서 다운 받으면 된다.

서버도 아니고 로컬에서 설치로 골치 아프기 싫어서 그냥 dmg 로 묶여 있는 것을 받았다. 요거 ~ Mac OS X ver. 10.7 (x86, 64-bit), DMG Archive (mysql-5.6.11-osx10.7-x86_64.dmg)


3. 설치
다운 받은 dmg 파일을 열면 다음과 같이 나온다.

mysql-5.6.11-osx10.7-x86_64.pkg 를 클릭하여 실행한다. 윈도우 프로그램 설치 할때 처럼 아무 생각 없이 Ok 버튼만 눌러서 마지막 까지 설치 진행 한다.

"시스템 환경설정" 에서 mysql 메뉴를 보기 위해서 MySQL.prefPane 을 실행 한다.
preference pane 에 mysql icon 이 추가 되며, 앞으로 이것을 통해서 mysql stop, start 할 수 있다.


Mysql 아이콘을 클릭 하면 다음과 같이 Start, Stop 할 수 있는게 나온다.


Start MySQL Server 를 클릭 하니...오~ 별 문제 없이 잘 돌아 간다. 서버에 오라클 설치 할때 생각 하면 진짜....너무 편하다는....


4. 점검
진짜로 설치 제대로 되었는지 터미널(나의 가장 친한 친구 터미널~)로 mysql 에 한번 붙어 본다.

$ cd /usr/local/mysql
$ cd bin
$ ./mysql
$ sudo ./mysql

mysql 은 /usr/local/mysql 에 설치 되어 있다.

기본으로 password 가 없기 때문에, 그냥 ./mysql 이나 sudo ./mysql 로 접속하면 바로 접속 되어 진다.

sudo ./mysql 로 붙으면 root 로 붙는 것이기 때문에 이렇게 붙어서 기본 설정 하면 된다.


5. 터미널로 mysql 붙은 김에 할일
터미널로 mysql command 로 들어온 김에 root 패스워드를 설정 한다.

$ cd /usr/local/mysql/bin
$ sudo ./mysql
mysql> use mysql;
mysql> update user set password=password('사용하고 싶은 패스워드') where user='root';
mysql> flush privileges;
mysql> quit

mysql root 의 패스워드를 설정 했기 때문에 이후 부터는 sudo ./mysql 이나 ./mysql 로 바로 붙을 수 없다. root 로 한번 붙어 보자.

$ cd /usr/local/mysql/bin
$ ./mysql -u root -p

로 커맨드를 치면, 패스워드 넣어라고 한다. 그러면 위에서 설정한 패스워드를 입력하면 접속 완료!

<2013년12월15일 추가>
[mysql 을 UTF-8 환경으로 설정]
http://www.nextstep.co.kr/250 참조

phpMyAdmin 을 사용한다면 별 상관 없을듯 한데, RazorSQL 사용할때 괜히 텍스트 꼬이지 않게 하기 위해서 mysql 을 UTF-8 로 설정 한다.

$ cd /usr/local/mysql
$ sudo vi my.cnf

my.cnf 파일을 다음과 같이 수정 하면 된다(내용 추가)

[mysqld]
init_connect="SET collation_connection=utf8_general_ci"
init_connect="SET NAMES utf8"
character-set-server=utf8
collation-server=utf8_general_ci
skip-character-set-client-handshake

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

파일 수정후, mysql stop/start 한다. 다시 mysql 에 접속해서 명령어로 utf-8 설정 확인 한다.

$ cd /usr/local/mysql/bin
$ ./mysql -u root -p
mysql> show variables like 'c%';
+--------------------------+--------------------------------------------------------+
| Variable_name            | Value                                                  |
+--------------------------+--------------------------------------------------------+
| character_set_client     | utf8                                                   |
| character_set_connection | utf8                                                   |
| character_set_database   | utf8                                                   |
| character_set_filesystem | binary                                                 |
| character_set_results    | utf8                                                   |
| character_set_server     | utf8                                                   |
| character_set_system     | utf8                                                   |
| character_sets_dir       | /usr/local/mysql-5.6.15-osx10.7-x86_64/share/charsets/ |
| collation_connection     | utf8_general_ci                                        |
| collation_database       | utf8_general_ci                                        |
| collation_server         | utf8_general_ci                                        |
| completion_type          | NO_CHAIN                                               |
| concurrent_insert        | AUTO                                                   |
| connect_timeout          | 10                                                     |
| core_file                | OFF                                                    |
+--------------------------+--------------------------------------------------------+
15 rows in set (0.00 sec)




2013년 5월 16일 목요일

gamma board 구성 요소

이번 프로젝트에서 XE 를 사용 하고 있다. 그런데, 문제가 서비스 플랫폼을 가져와서 사용하면 그 서비스 플랫폼에서 제공하는 기본적인 서비스 구조를 지켜 줘야 하는데, 이건 뭐~

대부분 바꾸어서 솔직히 XE 의 DB 구조를 제외하고는 XE 를 왜 사용하고 있는지 모를 정도 이다. 그냥 처음 부터 개발을 하고 말지, 맘에 들지도 않고 복잡하기만 XE 를 왜 사용하고 있는지...차라리 워드프레스를 사용했으면 워드프레스 공부해서 남기나 하지...제길슨

아무튼 앞으로 이런식으로 흘러 갈거 같아서 미리 틈틈이 기본적인 기능(회원 관리, 게시판 관리, 사이트 편집)을 지원하는 서비스 플랫폼을 만들려고 하고 있다.(가칭 감마보드....창의성 없는...) 현재 CI 보고 있는 이유도 이것 때문이다. 뭣~ 같은 XE 의 템플릿 문법을 안 보니 살거 같다.

기본 framework 은 CI 를 사용할 예정이고, DB 는 mysql 만 지원하면 된다.(돈이 없어서 mysql 외에는 쓰지 않을 것으로 보고 있다. 물론 mysql 이 훌륭한 이유도 있다)

일단 기본적인 모듈 구성은 다음과 같이 할 것이다.

1. 환경
 - php 5.4 (php 업그레이드 좀 하자고! 5.2 가 뭐냐...)
 - CI
 - mysql
 - jquery
 - knockout
 - nodejs

2. php 개발 모듈
 - member 관리
 - admin
 - 서비스 메뉴 관리
 - member point 관리
 - 기본 3개 이후에 추가 예정.

후..밤에 짬짬히 개발 하려니 속도가 안난다...일단 github 에서 하고 있다.
https://github.com/redsea/gboard

iOS mountain lion 에서 web sharing(apache httpd 실행)

iOS 가 lion 버전에서 mountain lion 버전으로 업그레이드 되면서 시스템 환경 설정의 공유란에 존재하던 인터넷 공유가 사라졌었다.(마운틴 라이언 출시되고 바로 구입한것이 되어서 현재는 모르겠뜸...아마도 추가 되었을지도....;;;)

뭐 시스템 환경 설정에 항목이 없더라도 터미널 띄어서 커맨드로 apache httpd 실행 시키면 되기는 하지만 귀찮아서, 해결책이 없는지 찾던중 어느 감사한 분이 클릭으로 할 수 있도록 시스템 환경 설정에 항목 추가 할 수 있도록 한 것을 찾았다.

요기 (아마도 이것일듯 설치한지 한참 되어서 기억이 가물 가물...)

다운로드 후 설치하면 "시스템 환경 설정" 에 "Web Sharing" 항목으로 apache httpd 껏따 켰다 할 수 있다. virtual host 리스트는 제대로 안 되는듯 보이는데, 이건 그냥 터미널로 처리하면 되니 패스~




macbook 에서 httpd virtual host 설정

apache httpd 의 설정파일은 /etc/apache2 하단에 존재한다.

기본적으로 설정파일 들의 템플릿들이 존재하고 주석으로 막혀 있는 상태이기 때문에 변경 사항이 많지 않다.

1. virtual host 설정 파일 변경
virtual host 설정 파일(/etc/apache2/extra/httpd-vhosts.conf) 편집 한다.

NameVirtualHost *:80

이 부분은 그대로 놔 두고, 나머지는 모두 필요 없으므로 주석 처리 하고, 내가 필요한 설정을 추가 한다.

ServerAdmin dhkim94@gmail.com
DocumentRoot "/Users/dhkim/Sites/gboard"
ServerName dhkim.gboard.org
ErrorLog "|/usr/sbin/rotatelogs  /Users/dhkim/Sites/log/gboard/error.%Y%m%d 86400"
CustomLog "|/usr/sbin/rotatelogs /Users/dhkim/Sites/log/gboard/access.%Y%m%d 86400" combined

사용하는 도메인은 외부로 열지 않을 것이기 때문에 그냥 /etc/hosts 에 원하는데로 등록하여 사용 했다.


2. apache 메인 설정 파일 변경
virtual host 설정을 반영 하는 것이 기본적으로 주석 처리 되어 있기 때문에 주석만 풀어 주면 된다. /etc/apache2/httpd.conf 파일을 열어서 vhost 로 검색 하면

# Virtual hosts
#Include /private/etc/apache2/extra/httpd-vhosts.conf

으로 주석이 막혀 있는데 Include 주석을 풀어, virtual host 설정을 포함 시킨다.
그리고 apache 재 실행하면 된다.


3. 추가
Rewrite 모듈을 사용 할 것이기 때문에 virtual host 설정 파일을 수정 하는 김에, Rewrite 부분도 추가한다. /etc/apache2/extra/httpd-vhosts.conf 파일에 아래 내용을 추가 한다.

<Directory "/Users/dhkim/Sites">
    AllowOverride All
    Options FollowSymLinks
    Order deny,allow
    Allow from all
</Directory>

접속 관련인데, 로컬로만 돌릴 것이기 때문에 그냥 아무 부담없이 설정 한다.

macbook 에서 apache httpd 로그 분할

apache httpd 의 로그 분할은 예전 부터 cronolog 를 사용해 왔었다. macbook 도 cronolog 를 사용 할 수 있을 거라는 생각에 cronolog 를 다운로드 받아서 configure 를 해 보니...

헉! gcc check 가 no !
설마 하는 생각에 which gcc 를 해 보니....헉! gcc 가 엄서!

서비스 할 것도 아니고 그냥 개인 테스트 용도로 사용할 것이기 때문에, 곧바로 rotatelogs 로 방향 선회.

다행히 rotatelogs 는 /usr/sbin/rotatelogs 에 존재를 하고 있다.

에러 로그와 접속 로그를 다음과 같이 설정하여 로그 분할 완료.


ErrorLog "|/usr/sbin/rotatelogs  /Users/dhkim/Sites/log/gboard/error.%Y%m%d 86400"
CustomLog "|/usr/sbin/rotatelogs /Users/dhkim/Sites/log/gboard/access.%Y%m%d 86400" combined

아파치 재시작 하니 로그 잘 남는다. ㅋㅋ

Codeigniter 설치

생짜 코딩을 해야 하는 강제적인 환경에 한계를 느껴 cakePHP 를 사용하려고 하다, Codeigniter 라는 framework 이 있다는 말에 구글링 해보니, 문서화도 그럭저럭 되어 있고 속도도 괜찮다는 말에 방향을 급선회 하여 Codeigniter 를 사용하기로 결정 했다.(제발 좀 framework 좀 사용하자고! 왜 그렇게 framework 에 대해서 거부감이 있는지...내가 framework 가져와서 개발 환경 강제로 모두 엎어 버리고 만다 기다려라!)

일단 다운로드는 여기서 Codeigniter 홈.

자바 같이 인스톨에 복잡한 과정이 걸리는 것이 아니기 때문에, 무조건 다운로드(2.1.3 버전) 받아서 mac book 에 구겨 넣었다.(다운로드 받은 것을 압축 풀어서 그냥 복사하면 설치 끝. PHP 만쉐이~ Java 쉣더퍽~)

설치 완료 하고 나면 index.php 페이지가 존재한다. index.php 로 붙어 보면 간단한 환영 페이지가 나온다.


별 다른 이상 없이 설치 완료 된듯.......;;;
나머지 자잘한 것은 필요 할때 마다 설정 하도록 한다. 다음은 메뉴얼 정독 하러 고고씽~



참고로 한국 사용자 포럼 을 방문하면 한글로 된 문서를 참고 할 수 있다.


macbook 에서 php 업그레이드

테스트 서버의 php 버전이 너무 낮아서 업그레이드 하려고 했으나, 개인적인 일로 인해 테스트 서버까지 건드리는 것이 배보다 배꼽이 커 질듯 하여, 그냥 mac book 의 php 버전을 업그레이드 하기로 하였다.

다음은 개발용으로 사용하고 있는 mac book 의 정보 이다.


일단 mac book 에는 기본적으로 apache, php 가 이미 설치 되어 있다. php 버전은 5.3.x.
테스트 용도로 php 5.4 이상이 필요하여 구글링 하다 보니 쉽게 설치 할 수 있는 방법 있어 따라 설치 했다.

One Line Installation

php 5.4 를 설치 하기 위해서 터미널 실행 후, 루트로 로그인 하여 다음 라인을 실행 하였다.


curl -s http://php-osx.liip.ch/install.sh | bash -s 5.4


한참 동안 다운로드를 받고 설치를 한다. 완료 되고 난 다음
아파치 죽이고 다시 살리면 PHP Version 5.4.14 로 업그레이드 되어 있다.

나머지 자잘한 설정들은 원본 링크의 "Frequently Asked Questions" 를 참고 하면 된다.