본문 바로가기

Programing

Redis 대량 insert Redis의 문서에서 대량의 inser방식을 찾아서 정리 참고 : http://redis.io/topics/mass-insert Protocol의 사용 Redis로 대량 insert를 하기에는 여러가지 문제점이 있다. 매번 클라이언드토 요청하는 것은 RTT(Round trip time)때문에 아주 느릴것이다. 파이프라이닝(pipelining)을 사용할 수도 있겠지만 대량의 insert를 위해서는 수행한 후 그 결과들을 읽으면서 새로운 command들을 write하는 것이 필요하다. 소수의 client만이 non-blocking I/O를 지원하며 또 모든 client가 최대의 처리량을 달성할 수 있도록 결과들을 효과적으로 파싱하지 못한다. 이런 이유들 때문에 Redis는 row format으로 Redis .. 더보기
redis cluster 구성하기 Redis clustering 튜토리얼페이지 요약참고 : http://redis.io/topics/cluster-tutorial 이 페이지에서는 Redis cluster의 구성방법을 다룬다.더 자세한 정보는 아래를 참고하자. Redis Cluster specification Redis cluster tutorialRedis Cluster 101Redis cluster는 데이터가 자동으로 sharding되어 다수의 Redis 노드로 분산되어 들어가도록 해준다. 여러가지 Key에 대한 command는 cluster에서 다루지 않는데 이유는 이런 방식을 노드간의 data이동을 필요로하고 부하가 많은 경우에 Redis cluster의 redis 본연의 성능을 보장해 주지 못하게 하기 때문이다. Redis Cus.. 더보기
redis transaction Redis의 transaction에 대해서 설명. 참고 : http://redis.io/topics/transactions MULTI, EXEC, DISCARD와 WATCH가 기본적인 redis transaction의 기본 명령어이다. 더보기
redis pipeline Redis에서 Pipeline을 사용해야하는 이유 참고 : http://redis.io/topics/pipelining redis는 TCP 서버로 Request/Response protocol 이라고 불리우는 클라이언트-서버 모델을 사용한다. 즉, 이말은 request가 아래와 같은 단계를 거쳐서 처리된다는 것을 의미한다. 클라이언트는 query를 서버로 보내고 소켓을 통해 서버로 부터 결과(response)를 받는다. 주로 blocking 모델을 따른다. 서버는 명령(command)를 수행하고 결과(response)를 클라이언트로 다시 보낸다. 결국 4개의 커맨드를 날린다면 redis에서 아래와 같은 순서로 처리된다. Client: INCR XServer: 1Client: INCR XServer: 2C.. 더보기
redis redis를 사용해보려고 조사중이다. redis의 command 정보 http://redis.io/commands redis의 client 정보 http://redis.io/clients redis의 웹 trial 도구 http://try.redis.io/ redis의 모니터링 및 failover 솔루션 http://redis.io/topics/sentinel관련 블로그 설명http://charsyam.wordpress.com/2012/07/24/%EC%9E%85-%EA%B0%9C%EB%B0%9C-redis-automatic-failover-solution-redis-sentinel-%EC%86%8C%EA%B0%9C/ 나는 java client를 사용할 예정인데, client를 찾아보니 아래와 같이 je.. 더보기
logback logback이라는 logging framework를 사용하기 위해서 공부한 내용 추가. logback home : http://logback.qos.ch/manual/index.html logback 적용을 위해서는 slf4j-api.jar와 logback-cor.jar, logback-classic.jar가 필요. 이 세가지를 class path에 추가하면 된다. 간단 사용 예제 Example 1.1: Basic template for logging (logback-examples/src/main/java/chapters/introduction/HelloWorld1.java)package chapters.introduction; import org.slf4j.Logger; import org.slf4.. 더보기
javascript code beautify (pretty print) HTML에서 코드를 이쁘게 표현하기 위한 javascript 라이브러리를 찾아봤다. 내가 하고 싶은 것은 아래 세가지 였고 다했다. 1. 내가 화면에 보여줄 code (xml)의 HTML escaping INPUT : "" OUTPUT : "" 해결 : 간단한 html escaping 함수 function escapeHtml(unsafe) { return unsafe .replace(/&/g, "&") .replace(//g, ">") .replace(/"/g, """) .replace(/'/g, "'"); } 2. 한줄로 되어 있는 xml string의 auto indentation INPUT bbb ]]> OUTPUT bbb ]]> 해결 : vkBeauti.. 더보기
Java HTML Parser 자바 html parser중에 css selector를 지원하는 opensource프로젝트를 찾았더니 jsoup이라는 것이 있어서 소개 Site : http://jsoup.org/ WHATWG HTML5 명세를 구현했으며 아래와 같은 기능을 제공한다. scrape and parse HTML from a URL, file, or stringfind and extract data, using DOM traversal or CSS selectorsmanipulate the HTML elements, attributes, and textclean user-submitted content against a safe white-list, to prevent XSS attacksoutput tidy HTML URL,.. 더보기
javascript class 상속 javaacript class를 만들고 상속하는 방법을 책에서 찾았는데 내가 이해한데로 정리한다. 먼저 javascript의 Object 클래스를 살펴본다. 자바스크립트에서는 객체를 만들면 객체들은 항상 하나의 prototype을 참조하고 있다. 이해가 안되도 같이 보쟈. 자바스크립트 콘솔에서 아래와 같이 Object.prototype이라고 치면 Object의 prototype객체를 return한다. 그러니까 class가 정의된 순간부터 prototype이라는 변수(property)에 이미 객체를 생성해서 가지고 있는 것이다. 진짜인지 아닌지 보자. property가 상속되는 것을 보기 위해 sum이라는 함수를 하나 추가했다. class를 선언하기만 했는데 MyObj클래스의 내부에는 이미 prototyp.. 더보기
javascript this javascript의 this에 대해서 궁금했는데 잘 설명해 놓은 글이 있어서 링크해놓는다. http://www.quirksmode.org/js/this.html Owner 아래에서 this는 어떤 것을 가리키고 있을까? function doSomething() { this.style.color = '#cc0000';} 자바스크립트에서 this는 항상 "owner"를 가리킨다. owner란 function을 실행시킨 객체를 가리키며 다른말로, function을 소유하고 있는 object라고 이해하면 되겠다. 위에서 this는 window object를 가리킨다. ------------ window --------------------------------------| / \ | | | | | this |.. 더보기