본문 바로가기

분류 전체보기

(886)
[SonarQube] 메이븐(Maven) 프로젝트에서 커버리지 표시하기 Gradle 방식 내가 개발하던 팀은 주로 그레이들(Gradle)을 사용했다. 그래서 org.sonarqube 라는 이름의 플러그인을 사용해서 SonarQube 리포팅을 했기에 특별한 설정은 프로퍼티 정도만 추가로 해주었다. 그래서 build.gradle 에 아래와 같이 플러그인 DSL 만 명시해주면 ./gradlew sonar 라는 태스크를 이용해서 리포팅이 가능했다. plugins { id "org.sonarqube" version "2.7.1" } sonarqube { properties { property "sonar.projectKey", "${artifactName}" property "sonar.projectName", "${artifactName}" property "sonar.source..
SSD는 RAM 속도를 따라 절대 잡을 수 없다? 2019년 7월 18일 맥쓰사 라는 카페에서 밀크곰(roh7979) 님이 "다다익램"이라는 제목으로 글을 올렸다. 글 자체는 램은 많을 수록 좋다는 글이었는데, 글이 딴데로 새서 SSD는 RAM 속도를 따라 잡을 수 있느냐 없느냐의 문제로 발전되었다. 참고로 RAM과 SSD를 구현하는 방법에는 여러 종류가 있으나 DRAM 과 NAND 플래시로 한정한다. 소자의 속도와 제품의 속도는 다르다. 공통점: 스위칭 기능을 MOS Tr를 통해 한다. 다른점: Gate의 개수의 차이 -> 저장기간의 차이 발생 DRAM: 64ms -> 휘발성 메모리 NAND: 1 ~ 10년(Cell관점에서 SLC: 약 5~10년, MLC/TLC: 약 1~2년) -> 비휘발성 메모리 NAND 플래시: Floating Gate -> 집적..
[notion] 책읽기와 데이터 정밀도 notion을 이용해서 책 읽기를 기록하고 있다. 전체 책 쪽과 현재 읽은 쪽을 이용하면 몇 % 읽었는지 알 수 있다. 아래와 같은 수식을 이용했다. ceil을 사용한 이유는 소숫점이 14.550264550265 와 같이 너무 길어져 버리기 때문이다. ceil(prop("읽은쪽") / prop("쪽수") * 100) 이렇게 하다보면 문제가 두 배를 읽었는데 퍼센트는 4배가 커지는 현상이 발견되었다. 2019-07-29 데이터 중심 애플리케이션 설계: p.222 (39%) 2019-07-30 데이터 중심 애플리케이션 설계: p.232 (40%) + p.10 (+1%) 2019-07-31 데이터 중심 애플리케이션 설계: p.252 (44%) + p.20 (+4%) 이유는 ceil (올림) 연산이 민감한 반올..
[macOS] 가상본(alias) Finder에서 가상본을 만들 수 있다. 영어로는 alias(별칭)라고 부른다. macOS는 기본적으로 유닉스이므로 심볼릭링크를 만들 수 있다. 하지만 가상본은 심볼릭링크와는 다르다. 만들기 만드는 방법은 크게 두 가지로 나누어 볼 수 있다. 컨텍스트로 메뉴에서 '가상본 만들기'를 선택하거나 드래그하면서 만들어질 위치를 지정하는 방법이다. 컨텍스트 메뉴에서 만들기 전자의 경우는 오른쪽 버튼(혹은 control 클릭) 후 컨텍스트 메뉴에서 '가상본 만들기'를 누르면 된다. 이렇게 만들면 만들어진 가상본이 같은 디렉토리에 생기는데 옮겨야 되서 두번 일을 해야 한다. (다른 디렉터리에서 빠르게 이동을 위해 만들게 되므로 놓여지는 위치가 다르게 되는 것이 보통이다.) 드래그 및 단축키로 만들기 다른 방법은 파인..
[Web] Playground, HTML,JS,CSS https://repl.it/@UserUnknown1/to-do-in-vanilla-JS
[Spring] RestClientException 예외 정리 RestTemplate 은 Retire되었다. WebClient가 계승할 예정이다. 하지만 아직 많은 곳에 RestTemplate를 쓰고 있어서 정리를 하게 되었다. 계층도 NestedRuntimeException: RuntimeException의 root cause를 다루기 쉽게 래핑한 예외 클래스 내부적으로는 NestedExceptionUtils 라는 유틸리티 클래스를 이용한다. RestClientException: 클라이언트 사이드의 HTTP 에러를 만났을 때 던져지는 기본 예외 클래스 RestClientResponseException: 실제 HTTP 응답 데이터를 포함하고 있는 예외클래스들의 공통 기반 클래스 int rawStatusCode String statusText byte[] respon..
[IntelliJ IDEA] 일반 텍스트로 복사하기 IntelliJ IDEA의 경우 리치 텍스트(서식이 적용된 텍스트) 복사가 가능하다. 그런데 가끔 서식 때문에 일반 텍스트로 복사할 경우가 있어서 처음에는 브라우저의 주소창에 붙여넣기 했다가 다시 복사해서 서식을 지우곤 했다. 그런데 어떤 텍스트는 자동으로 URL로 인식이 되는 경우(예. 점(.) 이 포함 되어 있을 경우) http:// 같은 스킴을 크롬이 자동으로 붙여져서 불편했다. 복사하기에 보면 일반 텍스트로 복사하기가 존재한다. 하지만 단축키가 설정되어 있지 않기에 매번 팝업을 띄우는 것이 번거롭니다. 방법1. 단축키를 지정한다. Copy & Paste라는 용어처럼 Ctrl-C /V 는 익숙하다, macOS의 경우 Command-C/ V 지만.. 다른 단축키를 쓰는 것도 이상해서 기본으로 Plai..
[정규식] 리팩터링 중 찾아바꾸기 정규식은 잘 배워두면 요긴하게 쓰일 경우가 많다. Sublime Text 얼마전에 바이트 데이터를 0x 접두어를 붙여서 바꿔치기를 할 경우가 있었는데 이런 경우에 유용하게 썼다. 예를 들어 아래의 통신 데이터를 테스트 코드에서 사용하기 위해 byte[]로 만드려고 한다. 왠만한 텍스트 편집기라면 정규식 찾아 바꾸기가 지원된다. 이런 경우 두 자리의 숫자를 앞에 0x를 붙이고, 뒤에 콤마를 붙이면 된다. Find: (.)(.) Replace: 0x$1$2, 데모 IntelliJ IDEA 코드 리팩터링을 할 때도 유용하게 쓸 수 있다. 예를 들어 예외 클래스의 시그너처가 아래와 같이 바뀌었다고 하자. int 에서 HttpStatus enum으로 해당 값은 생성자를 통해 설정이 되는데, 생성자의 시그너처가 바..