본문 바로가기

전체 글37

구조체 메서드 func (r *rect) area() int { return r.width * r.height } func (r rect) perim() int { return 2*r.width + 2*r.height } type rect struct {width, height int} rect 구조체에 메서드를 위와 같이 개발할 수 있다. 리시버 변수를 일반 구조체와 포인터를 받을 수 있다. 또한, 리시버 변수를 사용하지 않으면 생략하여 사용할 수 있다.func (_ rect) print() { fmt.Println("rect print") } https://gobyexample.com/methods 2016. 12. 19.
로그 관리를 위한 logrotate.d logrotate is designed to ease administration of systems that generate large numbers of log files. It allows automatic rotation, compression, removal, and mailing of log files. Each log file may be handled daily, weekly, monthly, or when it grows too large. 로그파일이 너무 많아져서 30% 정도의 디스크 용량을 사용하고 있었다. 일정한 주기로 불필요한 많은 양의 로그 파일을 관리에 logrotate command가 있어 활용하였다.-v Turn on verbose mode. -d Turns on debug .. 2016. 12. 16.
Node.js (간단하게 정리)Node.js Node.js®는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임. Node.js는 이벤트 기반, 논 블로킹 I/O 모델을 사용해 가볍고 효율적. Node.js의 패키지 생태계인 npm은 세계에서 가장 큰 오픈 소스 라이브러리 생태계 I/O 는 너무 고비용..이라는 이론으로 시작된게 node.js -메인 이벤트 루프는 싱글 스레드. 그러나 node.js 에 i/o api들은 비동기/논블럭킹으로 디자인 됐기 때문에 분리된 스레드를 사용.아파치경우는 멀티스레드인데, 하나의 request마다 또는 프로세스마다 스레드가 생겨남. 메모리 잡아먹고 커넥션 늘어나고 난리남.프로세스나 스레드가 메모리비용이 엄청나기 때문에 nginx랑 node.js 는 멀티.. 2016. 8. 29.
ELK(Elastic + Lostash + Kibana) Elastic Stack - Elasticsearch점점 많아지는 문제를 해결하는 분산형 RESTful 검색 및 분석 엔진 - Logstash : 데이터 집계, 변환 및 Stash오픈 소스 서버측 데이터 처리 파이프라인으로 다양한 소스에서 동시에 데이터를 수집하여 변환한 후 자주 사용하는 보관소로 보냄 - KibanaElasticsearch 데이터를 시각화하고 Elastic Stack 탐색 지원 위 세개의 제품 외에 Beats라는 경량화된 데이터 수집기를 사용하여 Logstash 또는 ElasticSearch로 전송한다. 위 오픈 소스들을 통틀어 Elastic Stack이라고 부른다. 현재 회사 서비스가 늘어나면서 관리하는 WAS 개수도 증가함에 따라 에러 로그를 검색 또는 오류 추이를 분석하여 확인하기가 어려웠다. 물론 Sco.. 2016. 6. 25.
대용랑 데이터 조회 처리 iBatis에서 6만건을 조회해서 ArrayList 로 메모리에 담아 엑셀로 다운로드 작업하는데 1분 20초가 걸렸다. 운영 DB에는 100만건이 있는데, 중간에 뻗어버린다. 구글링해본 결과, - fetchSize 부분범위처리라고 해서 ArraySize를 조정해서 Fetch Call을 감소해서 대량으로 데이터를 내려받는 것. 블록 I/O도 감소. 로컬환경에서는 6만건 처리가 확연히 빨라졌지만, 개발 서버 WAS에서 실행했을 때 OOM 발생.뭔가 잘못설정하긴 한 것 같다. (fetchSize 100과 600 차이는 나지 않았다)- rowHandlerhttps://ibatis.apache.org/docs/java/user/com/ibatis/sqlmap/client/event/RowHandler.htmlib.. 2016. 4. 28.
GO tour 41 package mainimport ("code.google.com/p/go-tour/wc" "strings" "fmt")func WordCount(s string) map[string]int {    fields := strings.Fields(s)    fmt.Println(fields)    m := make(map[string]int)    for _, value := range fields {     m[value] = 1     }return m}func main() {    wc.Test(WordCount)} 2016. 4. 26.