본문 바로가기

Computer Science

[ELK] 사내 로그 모니터링 시스템 구축 ElasticSearch + Logstash + Kibana통합 로그 모니터링 구축하기 서비스 특성상 Client - Proxy, Rest Server 등 많은 Message Flow가 존재한다. 그래서 일을 하다보면 다른 개발자들과 디버깅하느라 많은 시간을 허비하게 된다. 예를 들면, Frontend 개발자 왈 : ' XXX 사용자가 메시지A를 보냈는데 응답이 B가 왔어' Proxy Server 왈 : ' 난 A 잘 보냈는데?'Rest Server 왈 : '나도 A 잘 보냈는데?Proxy Server 왈 : '아냐 난 B를 받았어' Rest Server 왈 : '아니 A를 보냈다니깐?' . . . . 이렇게 하나의 비즈니스 로직 flow에 대해서도 문제가 발생할 경우 어느 지점에서 문제가 발생했는지 파.. 더보기
Spring annotation Spring Annotationupdated 2016.12.19 @component클래스에 사용한다.해당 클래스를 빈(객체)로 만든다. default scope는 singleton @required @autowired다른 의존 객체를 사용할 때 타입을 기반으로 빈을 찾아서 주입시켜준다. 동일한 타입의 빈이 2개 이상 존재하면 예외 발생 -> qualifier로 특정 빈으로 한정시킬 수 있다. @service @requestmapping @requestparam @requestbodyannotation이 적용된 파라미터에 HTTP Request Body의 내용이 전달된다. @responsebodyannotation을 사용 후 string값을 반환하면, 해당 값은 http response body에 쓰여진다.. 더보기
Linux Install NodeJS https://github.com/nodesource/distributions 더보기
[ngrinder] cookie 추가하기 ngrinder로 script작성 시, 참고할 reference가 없었다. 사용되는 Class들의 spec은 http://grinder.sourceforge.net/g3/script-javadoc/HTTPClient/Cookie.html 에서 확인. import static net.grinder.script.Grinder.grinderimport static org.junit.Assert.*import static org.hamcrest.Matchers.*import net.grinder.plugin.http.HTTPRequestimport net.grinder.plugin.http.HTTPPluginControlimport net.grinder.script.GTestimport net.grinder.s.. 더보기
Centos7 haproxy cannot bind socket 80 port가 아닌 port로 bind시에 'cannot bind 0.0.0.0:xxxx' 이런 에러가 발생하였다. 온갖 구글링 끝에 해결법 찾음. setsebool -P haproxy_connect_any=1 이거 한줄이면 해결. 더보기
Virtualbox Centos7 Static IP Virtualbox Centos7 Static IP 온갖 블로그를 다 돌아다녀도 딱 필요한 자료가 없더군요.. -_- 삽질 끝에 해결하게 되어, 자료 공유합니다. 현재 너무 귀찮아서 블로그에 따로 정리는 못하고, 만들어둔 ppt로 공유합니다. 자산화를 목적으로 만든 자료라, 안꾸미고 내용만 담았습니다.양해 부탁드립니다-! 더보기
Passport + Express session 사용하기 Passport + Express session 사용하기 Passport의 인증 기능 중에 세션을 저장하는 부분이 있다.Express 4.x 버전으로 오면서 session middleware가 별도 모듈로 분리되었기에 그에 따라 Passport와 express-session을 함께 사용하는 방법을 알아보겠다. 1) passport, express-session 설치 npm install --save passportnpm install --save express-session 2) passport ~ express-session 연결 const passport=require('passport');const session=require('express-session');const LocalStrategy=r.. 더보기
Mongoose regex 사용하기 Mongoose regex 사용하기 - MongoDB에서 like 기능 구현하기 RDBMS의 like query와 같은 기능을 구현하기 위해서 정규식을 사용해야 합니다. 우선 Number collection에 name : 1name : 11name : 111 name : 2 name : 222 라는 데이터가 있다고 가정합니다. 여기에서 1이 들어있는 document를 찾기 위해서는 기본적으로 Number.find({name : /1/ }, function(err, nums){// logic}) 과 같이 생각할 수 있습니다. 정규식을 고정적으로 사용할 경우 문제가 없지만, parameter를 통해서 요청에 따라 동적으로 만들어 질 경우에는 다음과 같이 진행하겠죠. Bad) const query = '/'+.. 더보기
[React Router] redirect [React Router] redirect 웹 어플리케이션 개발을 하다보면 응답에 따라 페이지를 전환해야 하는 경우가 빈번하다. React Router를 사용할 경우 다음과 같이 해결한다. React Router 2.x.x 를 사용하고 있다. 1. 사용하는 history를 불러온다. import { browserHistory } from 'react-router'; 2. 원하는 url을 삽입한다. browserHistory.push(url); (주의) url변경에 따른 화면 전환만 일어날 뿐, rendering을 새로 하지는 않습니다. 더보기
사이드 프로젝트를 시작하면서 이 프로젝트의 시작은 약 3개월전에 시작되었다. 그 당시 다니던 첫 회사에서 이런 저런 아쉬움이 많았다. 반년가까이 교육 및 연수로 인해 트렌드에 뒤쳐졌고(앞서가진 못하지만 뒤쳐지긴싫다..), 제대로된 개발을 할 수 없어서 퇴보된 느낌이었다. 그래서 개인적으로 공부하기 위해서 시작하려고 했던 프로젝트이다. 처음엔 회사 다니면서 공부를 하려고 했으나, 업무 익히면서 사이드로 새로운것을 배우기는 쉽지 않았다. (좋은 핑계거리다)퇴사 후에는 남은 상반기를 준비하느라 어영부영 하게 되었다. 그 과정에서 React를 써보려고 React Github을 몇 번 기웃기웃 하였으나, 단시간에 습득하기 쉽지 않았다. 그러다 보니 벌써 6월 중순이 되었고, 그 동안 세 네번 깔짝깔짝 대던 프로젝트를 제대로 완성하고자 한다... 더보기