일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- Spring
- docker
- apache storm
- 일본 백패킹
- Hbase
- nginx
- hadoop
- Angular2
- Linux
- Spring Batch
- 엘라스틱서치
- Gradle
- Java
- elasticsearch
- SBT
- design pattern
- 도메인주도설계
- hdfs
- Spring XD
- 제주
- Clean Code
- Spring Boot
- DDD
- 구마모토 백패킹
- scala
- 스프링 배치
- Storm
- elastic search
- intellij
- 인텔리J
- Today
- Total
목록전체 글 (449)
욱'S 노트
이름에서 암시하듯이 SiftingAppender는 런타임시에 주어진 어트리뷰터에 따라 로깅을 분리하거나 걸러낼 수 있다. 예를 들어 SiftingAppender는 유저 세션에 따라 로깅 이벤트를 분리할 수 있다. 이러한 방법을 이용하면 각 유저별로 하나씩의 로그 파일을 생성할 수 있다. 각 프로퍼티들은 다음과 같다. timeout- 타입은 Duration이다. - 내포된 appender가 작동하지 않는다고 간주될때 타임아웃 시간. 오류 appender는 닫아지고 SiftingAppender에 의한 참조가 끊어진다. maxAppederCount- 타입은 integer이다.- SiftingAppender가 생성하고 유지할 수 있는 내포된 appender의 최대 갯수. 기본값은 Integer.MAX_VALUE..
많은 경우 우리는 브라우져를 통해 Nginx에서 502 Bad gateway 오류가 발생했다는 메시지를 볼 수 있다. 웹서버 로그를 확인하면 왜 이러한 메시지가 발생했는지를 확인할 수 있다. 그리고 여기서는 어떻게 그 상황을 해결할 수 있는지에 대해서 설명한다. 502 bad gateway 오류가 발생 했을 때 아래 상황인지를 확인해 보자. Nginx running as proxy for Apache web server.Nginx running with PHP-FPM daemon.Nginx running with other services as gateway.Bad buffering/timeout configuration 모든 옵션들에 대해 깊게 들어가기 전에 에러 메시지가 의미하는 것이 무엇인지를 이해..
이번 섹션은 웹어플리케이션 및 아파치 톰캣의 구동 속도를 빠르게 하기 위한 몇가지 추천사항을 제공한다. General 팁과 트릭을 진행하기 전에 하나 하고 싶은 조언은 만약 톰캣이 행이나 응답이 없다면 먼저 진단을 수행해보야 한다. 스레드 덤프를 획득한다면 톰캣이 실제 무엇을 하고 있는지를 알 수 있다. 트러블슈팅과 진단 페이지를 자세히 살펴보아라. JAR scanning 서블릿 3.0 스펙에서는 몇가지 plugablility features에 대한 지원을 소개하고 있다. 이것은 웹어플리케이션 구조를 단순하게 하고 추가적인 프레임워크 플러깅을 단순하게 하는 것이다. 불행하게도 이 기능은 JAR와 클래스 파일의 스캐닝을 요구한다. 이 경우 꽤 많은 시간을 소요하게 된다. 스펙에서는 기본적으로 스캐닝을 수행..
Command–query separation (CQS)는 컴퓨터 프로그래밍에서 반드시 지켜야 할 원칙이다. 이것은 Bertrand Meyerd의 Eiffel 프로그래밍 언어에서 고안되었다. 모든 메소드는 한번의 액션에서 상태를 변경하는 커맨드든 데이터를 반환하는 쿼리든 한가지 액션만 취해야 한다는 것이다. 다시 말하자면 질문을 할때 대답을 변경하지 말라는 것이다. 더 정확하게는 메소드는 값을 반환할 때 referentially transparent(시스템의 상태를 변경하지 않을 때 함수를 referentially transparent하다고 함)해야 하며 사이드 이펙트를 유발하지 말아야 한다. 여기 CQS 원칙을 위반한 단순한 예제이다. 그러나 멀티 스레드 소프트웨어에서 유용한 예이기도 하다. 살태를 변경..
외부 코드 살펴보기 인터페이스 제공자와 인터페이스 사용자 사이에는 특유의 긴장이 존재한다. 패키지 제공자나 프레임워크 제공자는 적용성을 최대한 넓히려 애쓴다. 반면 사용자는 자신의 요구에 집중하는 인터페이스를 바란다. Map과 같은 예를 볼 때 Map은 매우 다양한 기능을 제공하고 이로 인해 시스템에 다양한 영향을 끼칠 수 있다. 경계 인터페이스를 사용할 떄는 이를 이용하는 클래스나 클래스 계열 밖으로 노출되지 않도록 주의한다. Map 인스턴스를 인자로 사용하거나 반환값으로 이용하지 말아야 한다. 학습 테스트 외부 코드를 익히기는 어렵다. 외부 코드를 통합하기도 어렵다. 곧바로 우리쪽 코드를 작성해 외부 코드를 호출하는 대신 간단한 테스트 코드를 작성하여 외부 코드를 익히자. 학습테스테에 드는 비용은 없..