본문 바로가기

[Docker] mac os x - image 위치 변경하기 처음에는 심볼릭 링크로 설정하면 될 것 같아서 /var/lib 위치를 하드디스크 용량이 풍부한 다른 곳으로 지정을 했다.하지만 생각대로 동작하지 않았다. 알고보니 Disk 메뉴에 Disk image location 이라는 항목이 있었다. Reveal in Finder 버튼을 눌러보니 (namo 는 user id)/Users/namo/Library/Containers/com.docker.docker/Data 였다. 변경을 하고 나니 Docker.raw 파일이 덩그러니 하나 딱 있다.용량은 64GB.
[JVM] currentTimeMillis vs nanoTime Why회의 시간에 Ummm님이 currentTimeMillis 보다는 성능상 nanoTime을 쓰는 것이 좋다고 하셔서 찾아보게 되었다.예전에 이상민님의 자바 성능 개발자가 반드시 알아야 할 자바 성능 튜닝 이야기에 비슷한 내용이 있었던 것 같은데 너무 오래 전에 읽어서 기억이 나지 않는다. 선 검색검색해보면 Baeldung.com 에는 Measure Elapsed Time in Java 라는 제목으로 글이 있다.currentTimeMillis의 경우는 wall-clock time이라서 시스템의 시간을 바꾼다거나 외부적인 요인에 의해 시간 점프가 발생할 수 있다고 한다.nanoTime의 경우 system or wall-clock time에 대한 언급이 따로 없다고 한다. 용어Wall clock: 현실 세..
[KakaoTalk] mac 용 카카오톡 버전 공지사항Mac 카카오톡 예전 버전에 대한 지원중단 공지가 있었다.공지사항은 자연스럽게 버전 기준과 중단 예정일이 적혀있다. 버전번호그렇다면 사용자들은 어떻게 버전번호를 확인할 수 있을까? Mac 애플리케이션의 공통 메뉴인 정보 메뉴에서 나오는 팝업으로 확인이 가능할 것이다. 하지만 카카오톡 만든 사람은 알고 있었다.어디서나 쉽게 버전 번호를 확인해야 한다는 것을,... 메뉴에서 보면 우측상단에 버전이 띡하니 쓰여있다. 예전 데스크탑 애플리케이션을 만들거나, 산업 디자인된 제품을 만들 때, 이런 경험을 했다.현재 버전을 표시를 하기 위해 레이블을 추가하거나 QR코드를 스티커로 붙여놓았다. 문제는 그것이 보기 싫다고, - 회장님이 이런 것에 민감하다고 - 떼라고 한 팀장이 있었다. 결국은 나중에 필요에 의해..
[Spring Boot] spring-boot-devtools spring-boot-devtools 는 개발용 기능을 가지고 있다.live 혹은 production 환경에서 구동을 안하는 것을 권장하고 있다. Maven의 경우 optional을 true로 하면 된다. 하지만 Gradle은 optional이 없다.이전에 설정을 보니 아래와 같이 되어 있었다.runtime "org.springframework.boot:spring-boot-devtools" 하지만 제대로 동작을 하지 않는 것 같았고,찾아보니 해당 이슈에 대한 Github에 이슈가 있었다.Devtools documentation incorrectly uses compileOnly Gradle scope #14451 현재는 레퍼런스 문서도 수정되어 있다.https://docs.spring.io/spring..
[Java] break label 문 이번에 자바 기초를 다시 랩업 하는 차원에서 20년만에 자바책을 하나를 끝냈다.제목은 카이호스트만의 "Core Java SE 9 for the Impatient"라는 책이다. 한국에는 "가장 빨리 만나는 코어 자바 9"라는 제목으로 번역이 되었다. 저자는 자바 마스터라는 칭호답게 자바의 기초를 포함하여 자바 프레임워크에 대해 은연 중에 설명을 한다.(아참 책에 대한 리뷰를 쓰려던 것이 아니지..) 각설하고, Java 를 한지 20년이 되었는데 처음으로 break 레이블 형태를 알게되었다. 처음 봤을 때는 C언어의 GOTO 문이 생각났다.반복문이 여러 레벨로 중첩이 되어 있어야 하는데 이럴 때 탈출을 쉽게 도와주는 방식이다. 자바 프레임워크에서도 실제 사용한 케이스가 있어서 글을 쓰게 되어싿. 아마 자바를..
[Spring Framework] Java와 Groovy 문법 삽질기 오늘의 삽질1. Java: 익명 서브클래스의 문법 주의사항2. Spock: Groovy의 프로퍼티 접근자 주의사항 아래와 같은 코드가 있다.public abstract class RestTemplateBase { @Autowired PoolingHttpClientConnectionManager connectionManager; protected RestTemplate getRestTemplate(int timeout) { 레거시코드인데 상속을 받는 구조로 되어 있었다. 상속을 받은 클래스에서 커스텀 RestTemplate를 반환하는 메서드를 사용하고 있었다.(나중에 생성자 주입으로 바꿀 예정이지만) 테스트 코드가 없어서 다음과 같은 테스트 코드를 만들었다. (테스트 코드가 구현이 완료된 것이 아니므로 주..
[Amazon] Two-Step Verification - salt 아마존의 두 단계 인증을 보면서 특이하다고 느꼈다.보통 2단계 인증 번호가 오면 별도의 폼에 입력을 한다. 하지만 아마존은 기존의 암호 폼에 추가해서 입력하라고 가이드하고 있다. 암호 처리 기법중에 솔트(salt)라는 것이 있다. 원문에 가미하여 암호문을 다른 값으로 만드는 것인데, 이것과 유사하다고 생각했다.
[sonarqube] @Nonnull의 오탐? 다음과 같은 코드가 있다.@Nonnull private Charset getContentTypeCharset(@Nullable MediaType mediaType) { if (mediaType != null && mediaType.getCharset() != null) { return mediaType.getCharset(); } else { return StandardCharsets.UTF_8; } }MediaType에 따라서 캐릭터 셋을 가져오는 코드이다. 획득을 못했을 경우는 기본값으로 UTF-8을 사용하도록 방어가 되어 있다. 그런데, 이상하게 SonarQube에서 NullPointerException이 발생할 수 있다고 경고를 한다. mediaType인지 null 체크를 하고 있고, getCha..