본문 바로가기

[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으로 해당 값은 생성자를 통해 설정이 되는데, 생성자의 시그너처가 바..
[Java] JRE update 업데이트된 라이센스 조항 회사에서 사용하는 맥북프로를 켰더니 JRE 업데이트가 떴다. 업데이트를 할까 말까 망설이다 진행을 했더니 라이센스가 변경되었다가 아래와 같이 나온다. 문제는, 회사 컴퓨터는 상업용 랩톱에 해당된다. 따라서 별도의 라이센스가 필요하기 때문에 업데이트를 진행하지 않기로 하였다. Java is still free? 자바는 여전히 무료는 비상업용 기기에만 해당한다.
[취약성] ReDoS (정규식을 이용한 서비스 거부) DDos라는 용어는 언론에 많이 나와서 익숙하다. ReDos라는 것도 있다는 사실. 어제 SonarQube에서 아래와 같이 정규식이 ReDos에 취약하다고 경고를 보여줘서 재근님이 고민을 하셨다. 위의 정규식은 그리 취약하지 않으나 [ 나 * 나 { 가 2번 이상 나오면 취약하다고 판단해버린다. https://github.com/SonarSource/SonarJS/blob/master/eslint-bridge/src/rules/regular-expr.ts#L90 const specialChars = ["+", "*", "{"]; function hasEnoughNumberOfSpecialChars(value: string) { let numberOfSpecialChars = 0; for (const c ..