개발자의 노트
Varnish 캐쉬 비우기 (재시작없이 설정파일 적용)

설정파일은 기본적으로 /etc/varnish/default.vcl 에 위치한다. varnish의 캐쉬를 지우는 명령어는 ban이며, 1. 로컬 서버에서만 curl 호출하여 캐쉬를 삭제할 수 있게 설정하는 법 (빨간색) 2. 웹브라우저에서 Shift + reload를 통해 캐쉬를 삭제할 수 있게 설정하는 법 (파란색) 우선 아래 설정파일을 참고하여 수정을 한다. backend assets { .host = "127.0.0.1"; .port = "80"; } # ban # curl -X BAN http:/// # curl -X BAN http:///static/images.png acl ClearCache { "localhost"; "127.0.0.1"; } sub vcl_recv { if (req.requ..

로그 파일을 날짜별로 rotate 생성하기 (& 구동 시간 변경 포함)

REDIS 같은 경우 로그 파일이 하나의 파일로 계속 쌓인다. logrotate를 통해 log를 날짜별로 rotation 해보자. logrotate의 기본 설정 값을 /etc/logrotate.conf 에 있다. # vi /etc/logrotate.conf 그리고 각각의 logrotate 설정은 /etc/logrotate.d 폴더 아래에 구성한다. 대략 아래와 같은 구조 # ll /etc/logrotate.d/ total 24 -rw-r--r-- 1 root root 103 Dec 10 22:28 dracut -rw-r--r-- 1 root root 329 Jan 15 2011 psacct -rw-r--r-- 1 root root 210 Sep 9 23:46 syslog -rw-r--r-- 1 root ..

[Spring] Cross Origin Resource Sharing (CORS) 해결

참고: https://gist.github.com/kdonald/2232095 스프링에서 CORS 문제를 해결하기 위해 해당 Class를 하나 작성한다. package com.xxxx.core.filter; import java.io.IOException; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.filter.OncePerRequestFilter; public class CorsFilter exte..

[Node.js] express.bodyParser()
소프트웨어개발/Node.js 2014. 2. 28. 11:59

http://expressjs.com/api.html#bodyParser express api 문서를 보면 app.use(express.bodyParser()); // is equivalent to: app.use(express.json()); app.use(express.urlencoded()); app.use(express.multipart()); 즉, express.bodyParser()는 express.json() / express.urlencoded() / express.multipart() 를 함께 선언한것과 동일하다. 따라서 파일업로드를 위한 기능을 제한하는 (사용하지 않는 경우) bodyParser()를 선언하기 보다는 json() 과 urlencoded() 만 별도로 선언하는 것이 좋겠다..

Nginx gzip 압축 적용
소프트웨어개발/Nginx 2014. 2. 27. 20:03

nginx.conf 에 gzip 설정 추가 http { ...... # Gzip Settings gzip on; #gzip_static on; gzip_disable "MSIE [1-6]\.(?!.*SV1)"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_min_length 512; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/css text/javascript text/xml text/plain text/x-component application/javascript application/x-javascript application/json application/xml application..

Tomcat 7 compression 사용하기
소프트웨어개발/Tomcat 2014. 2. 27. 19:58

Tomcat 7 부터는 압축을 자체 지원한다. server.xml에 아래처럼 설정하면 mime-type을 지정할 수 있다. (톰캣 재시작) 응답헤더를 보면 gzip으로 넘어오는 걸 확인할 수 있다. Content-Encoding:gzipContent-Language:ko-KRContent-Type:text/html;charset=UTF-8Date:Thu, 27 Feb 2014 10:53:45 GMTServer:Apache-Coyote/1.1Transfer-Encoding:chunkedVary:Accept-Encoding ** Ehcache의 Gzip compression 를 사용하려면 다음 링크를 참조 http://misoin.tistory.com/46

[Tomcat] Ehcache의 Gzip compression 그리고 Tomcat 7의 compression
소프트웨어개발/Tomcat 2014. 2. 27. 19:56

pom.xml에 ehcache-web 추가 net.sf.ehcache ehcache-web 2.0.4 web.xml에 filter 추가 gzipFilter net.sf.ehcache.constructs.web.filter.GzipFilter gzipFilter *.html gzipFilter *.htm gzipFilter *.jsp gzipFilter *.js gzipFilter *.css 아쉬운 점은 filter를 mime-type으로 설정하는 게 없는 듯... (못찾겠다...) mime-type으로 설정할 수 있으면 좋겠는데... /* 이것 또한 안되고... ================================================================================..

[Node.js] Socket.io에 세션을 이용하기 (session.socket.io)
소프트웨어개발/Node.js 2014. 2. 27. 18:17

socket.io에 세션을 처리하기 위해서 session.socket.io 모듈을 사용하면 된다. 서버 로직은 간단히 아래와 같은 형식이다. 클라이언트(javascript)는 socket.io를 사용할때와 동일하다. var SessionSockets = require('session.socket.io'), sessionSockets = new SessionSockets(io, sessionStore, cookieParser,'key'); sessionSockets.on('connection', function (err, socket, session) { logger.info('socket is connection: ' + session.id + ' - ', session); if(err) { logger..