Posted
Filed under 프로그래밍
게임에서 사용하는 파일을들 CDN을 통해서 제공하다가 CDN사용료가 너무 많이 나오는 바람에
CDN처럼 사용할께 뭐가 있을까 하다가 찾아봤다.
어차피 nginx는 이미 사용하고 있던거고 해서..

참고로 이 방식은 Windows VISTA이후의 버전에서는 작동하지 않는다.
http://nginx.org/en/docs/windows.html#known_issues


http://wiki.nginx.org/ReverseProxyCachingExample

http {
    proxy_cache_path  /data/nginx/cache  levels=1:2    keys_zone=STATIC:10m
                                         inactive=24h  max_size=500m;
    server {
        location / {
            proxy_pass             http://1.2.3.4;
            proxy_set_header       Host $host;
            proxy_cache            STATIC;
            proxy_cache_valid      200  1d;
            proxy_cache_use_stale  error timeout invalid_header updating
                                   http_500 http_502 http_503 http_504;
        }
    }
}



keys_zone = 키를 저장할 공유 메모리 용량
inactive = 요청이 없을때 삭제할 시간
max_size = 캐시로 사용할 최대 디스크 용량


/data/nginx/cache 디렉토리를 메모리 디스크로 사용하고 싶다면

vi /etc/fstab 에서 아래 추가
tmpfs  /data/nginx/cache tmpfs size=500M    0       0

mount -a 하면 재부팅 하지 않아도 자동으로  마운트해준다.

제대로 작동한다면 아래와 같은 프로세스가 추가된다.

 root     18999  0.0  0.0  45536  1300 ?        Ss   Dec06   0:00 nginx: master process /usr/sbin/nginx www-data 19000  0.0  0.0  50088  7080 ?        S    Dec06   0:33  \_ nginx: worker process www-data 19001  0.0  0.0  50144  7080 ?        S    Dec06   0:33  \_ nginx: worker process www-data 19002  0.0  0.0  50112  7084 ?        S    Dec06   0:33  \_ nginx: worker process www-data 19003  0.0  0.0  50080  7080 ?        S    Dec06   0:34  \_ nginx: worker process www-data 19004  0.0  0.0  45732  1628 ?        S    Dec06   0:02  \_ nginx: cache manager process



http://kwonnam.pe.kr/wiki/nginx/proxy_cache
http://kilim.tistory.com/10
http://edendev.egloos.com/viewer/3257937
http://kray.jp/blog/nginx/
2013/12/06 14:27 2013/12/06 14:27
Posted
Filed under 프로그래밍
Ubuntu 기준 설명

http://munin-monitoring.org/


https://github.com/jnstq/munin-nginx-ubuntu


[Server]
apt-get install munin munin-node

* /etc/munin.conf

# a simple host tree
[web1.domain.com]
    address 127.0.0.1
    use_node_name yes
[web2.domain.com]
    address 1.2.3.5
    use_node_name yes

* NGINX 설정

server {
        listen 8000;
        server_name localhost:8000;
        location / {
                root /var/cache/munin/www;
        }
}


# Nginx status
server {
  listen 80;
  server_name localhost;
  location /nginx_status {
    stub_status on;
    access_log off;
    allow 127.0.0.1;
    deny all;
  }   
}

[Node - web2.domain.com]
apt-get install munin-node

* /etc/munin-node.conf
# Set this if the client doesn't report the correct hostname when
# telnetting to localhost, port 4949
#
host_name web2.domain.com

서버IP가 1.2.3.4 일때
allow ^1\.2\.3\.4$


[서버 임의 실행]
mumin을 설치하면 5분마다 돌도록 cron이 설정되어있음

su - munin --shell=/bin/bash
/usr/bin/munin-cron


[Plugin]
ln -s /usr/share/munin/plugins/nginx_request /etc/munin/plugins/
ln -s /usr/share/munin/plugins/nginx_status /etc/munin/plugins/

원하는 플러그인을 심볼릭 링크 걸어주고
service munin-node restart

2013/11/02 19:35 2013/11/02 19:35
Posted
Filed under 프로그래밍
IT 업종에 종사하다 보면 종종 듣는 용어들이 있습니다.
특히 게임에서 많이 사용하는 용어들을 몇개 골라 보았습니다.

우선 MAU(Monthly Activity User)를 보겠습니다.
MAU는 그 풀이대로 월별 활동 이용자를 뜻하며, 한달에 몇명이나 이 서비스를 이용하는가..아무래도 네트워크로 연계되는 사용자의 키를 기준으로 집계가 되겠습니다. 회원수랑은 좀 다르겠죠?

그리고 DAU(Daily Activity User)가 있습니다.
DAU는 일별 활동 이용자를 나타내는 것으로서 하루에 몇명이나 이 서비스를 이용하는가.. 그리고 이건 동접이랑은 좀 다릅니다. 

동접은 MCU(Maximum Current User)로서 순간 동시 접속자로서 실시간으로 바뀌는 성향이 있습니다. 동접이 높으면 그만큼 MAU랑 DAU가 높다는 뜻이겠죠?

그리고 평균 동시 접속자 수도 있을 텐데요.. 그건 ACU(Average Current User)라고 해서 평균 동시 접속 유저수라고 볼 수 있습니다.
2013/10/21 16:43 2013/10/21 16:43
Posted
Filed under 프로그래밍
SELECT
ERROR_CODE,
DATE_FORMAT( CREATE_DATE, '%m-%d' ),
COUNT(1)
FROM
TBL_NAME
WHERE
ERROR_CODE='E000'
GROUP BY
ERROR_CODE, DATE_FORMAT( CREATE_DATE, '%m-%d' )
2013/10/21 10:23 2013/10/21 10:23
Posted
Filed under 프로그래밍/PHP

* config/database.php 아래 추가

$db['pdo']['hostname'] = 'mysql:host=localhost;dbname=codeigniter';
$db['pdo']['username'] = 'codeigniter';
$db['pdo']['password'] = 'codeigniter';
$db['pdo']['database'] = 'codeigniter';
$db['pdo']['dbdriver'] = 'pdo';


* 사용하는 방법 (CI 그대로 사용)

//load the pdo db config
$this->pdo = $this->load->database('pdo', true);

//using the pdo config
$stmt = $this->pdo->query("SELECT * FROM users"); 
var_dump($stmt->result());

//using the pdo config with active record
$stmt = $this->pdo->get("users"); 
var_dump($stmt->result());


예제: http://codeigniter-kr.org/user_guide_2.1.0/database/examples.html

출처: http://codebyjeff.com/blog/2013/03/codeigniter-with-pdo

2013/10/15 18:36 2013/10/15 18:36
Posted
Filed under 프로그래밍

지금까지 나온 zend eclipse pdt 3.8 (all in one) 은 indigo 버전이다.

한글화를 해주는 babel프로젝트에서 다운받을때도 indigo 버전을 받으면 된다.

http://www.eclipse.org/babel/downloads.php
에서 최신버전을 url을 찾아

install new software 에서 설치하자.
http://download.eclipse.org/technology/babel/update-site/R0.11.0/indigo


사용자 삽입 이미지

2013/10/10 14:52 2013/10/10 14:52
Posted
Filed under 프로그래밍
Zend eclipse PDT를 쓰는경우
Check for Updates 실행해서 Mylyn 최신으로 업데이트

http://download.eclipse.org/mylyn/releases/latest

Mylyn Integrations -> Mylyn Builds Connector: Hudson/Jenkins 설치

Window -> Show view -> other -> Mylyn -> Builds 선택

jenkins 서버 설정해서 사용


사용자 삽입 이미지
2013/10/10 14:21 2013/10/10 14:21