본문 바로가기

분류 전체보기

(887)
Java에서 Elvis operator 흉내내기 Java에는 C언어와 마찬가지로 삼항(ternary)연산자가 있다. 자바언어명세상에는 조건 연산자(Conditional Operator)라는 이름으로 되어 있다. 아래와 같은 형태이다. boolean b; c = b ? c1 : c2; 불리언 타입의 조건에 따라 c1 (condition 1)값 혹은 c2가 선택되는 형태이다. null 과 조건 연산자 토니 호어(Tony Hoare)가 널 포인터를 10억 달러짜리 실수였다고 고백했다. (널 포인터는) 내 10억 달러짜리 실수였다. 1965년 당시, 나는 ALGOL W라는 객체 지향 언어에 쓰기 위해 포괄적인 타입 시스템을 설계하고 있었다. 내 원래 목표는 어떤 데이터를 읽든 항상 안전하도록 컴파일러가 자동으로 확인해 주는 것이었다. 그러나 나는 널 포인터를..
Affinity Photo : 배치 처리하기 여러 이미지를 동일한 작업을 할 경우가 있다. 이미지 크기를 조정(resize)을 한다거나 이미지를 특정 영역으로 자르기(crop)을 할 수도 있다. 이미지를 회전(rotate)를 해야 할 수도 있고 이런 경우는 비일비재하다. 이미지가 10개 이하라면 그냥 손으로 하는 것이 빠를 수 있다. 하지만 어느 패턴이 있다면 기계에게 맡기는 것이 빠르다. 동작 지정하기 Studio > Macro 왼쪽에 macro 창이 뜬다. 이미지를 불러와서 반복해서 할 작업을 레코딩하는 것이 가능하다. 만약에 10장 이하라면 반복할 작업을 Macro로 레코딩을 해서 실행을 하는 것도 효과적일 수 있다. 아래는 래스터 이미지를 자르는 작업을 기록한 것이다. play 버튼을 누르면 다른 이미지에 대해서 바로 동일하게 작업을 시킬 ..
다크 모드는 아이폰에서 먼저나와서 나중에 MacOS에 적용되었다?! 나이트 시프트 모드와 수면 개선 공유 채널에서 iPhone의 나이트 시프트 모드가 수면 개선에 도움을 주지 못했다는 기사를 공유받았다. BYU 연구 결과: iPhone 나이트 시프트 모드, 수면 개선에 도움 주지 못해 - BYU 연구원들은 애플의 나이트 시프트 모드 같은 저조도 기능이 사용자의 수면 습관에 미치는 영향에 대해 조사했는데 나이트 시프트 모드는 전혀 사용자 수면을 개선하지 못하는 것으로 나타나... https://www.macrumors.com/2021/05/05/night-shift-mode-phones-do-not-help-sleep/ 그렇다면 다크 모드는? 나는 나이트 시프트 전에 유행했던 다크 모드가 사람에게 영향을 미치는 연구도 있으면 재미있겠다고 생각했다. 그래서 해당 Post에 ..
Garmin 시계가 알려주는 nullable Java 언어는 null 이라는 것 때문에 오랫동안 고통을 받아왔다. 그 고통은 보통 NullPointerException 라는 예외로 나타난다. (이름에서도 포인터라고 적혀있지만 C언어의 포*터가 자연스럽게 생각난다.) 그래서 방어코드를 추가하거나, @Nonnull 이나 @Nullable 같은 annotaion을 넣거나 Bean Validation 등으로 값을 검증하는 추가적인 절차가 필요하다. 자전거로 출근을 하는데 현재 사용하는 fenix 5x에 이런 차이를 명확하게 보여주고 있어서 재미있어서 글을 적어보았다. 1. 온도센서 연결 (케이던스 센서는 아직 탐색중) 2. 케이던스 센서 탐색중 3. 케이던스 센서 연결 4. 케이던스 센서 연결 후 5. 주행 후 정지 시 2번과 4번이 왜 변화가 없었는지까..
spring-boot 신규 프로젝트 BY spring initializr 회사에서 신규 프로젝트를 진행하게 되었다. 새 술은 새부대에 부으라는 말 처럼 spring initializr를 이용해서 새 프로젝트를 만들었다. 전에 N사에 면접을 봤을 때 어떤 조직장이 코틀린을 써봤냐고 물어본 적이 있었다. 당시 코틀린을 실제 업무 프로젝트에서의 경험이 없어서 사실대로 이야기 했는데 개인적으로 아쉬움이 남았다. 그래서 이번에는 신규 프로젝트 니 Java 대신 Kotlin 으로 해보았으면 바람을 반영했다. 그런데 Language를 Kotlin으로 선택을 하고 Gradle Project로 생성을 했더니 build.gradle이 아닌 build.gradle.kts 파일이 생성되었다. 넌 뭐냐 build.gradle.kts 검색을 해보니 이 형태가 Kotlin DSL 이라는 것을 찾을 수 ..
[스프링] MVC - @RequestBody 객체의 Setter가 필요한가? 주의: 이 글은 jackson-databind 2.8.11.11 기준으로 작성되어 있습니다! 버전에 따라 실제 구현 내용은 바뀔 수 있으니 참고용으로 읽기를 바랍니다. 3줄요약 1. Immutable 객체는 좋은 습관이다. 하지만 절대적인 최선이란 없고 최선의 실천방법(Best Practice)는 상대적이다. 2. Request 객체에 Setter가 없어도 값은 필드 주입이 된다. 3. 필드 주입의 경우 리플렉션에 의한 처리가 되어 Setter가 있는 경우보다 오버헤드가 있을 수 있다. 코드리뷰 코드리뷰를 하다가 getter만 존재하는 @RequestBody 객체를 보았다. (HTTP POST 요청) 불변에 대한 장점들이 많이 알려져 있기에 VO나 DTO 같은 객체는 불변으로 만드는 편이다. @Sette..
System.out 의 성능? 마이그레이션을 위한 임시 코드로 로깅을 위해 System.out.println 을 사용했다. Q. 예외상황이긴 하지만, 최대 size가 1000개일텐데, System.out.println 괜찮을까요? 여기에 세 고개가 더 붙여졌다. Q2. 왜 "System.out.println 안 괜찮을까요?" Q3. 성능? Q4.어떤 성능이요? 지금은 절판된 자바 성능을 결정짓는 코딩 습관과 튜닝 이야기에도 11번 "로그는 반드시 필요한 내용만 찍자" 부분에서 System.out.print 사용에 관련된 내용이 있어서 내용의 요지는 이해했으나 상기 차원에서 검색을 해서 기록해 두었다. 출처: Java - System.out effect on performance 관점1. println 은 synchronized 로 동..
[JPA] Use @Param for query method parameters Spring JPA에서 Named Parameters 를 사용할 때 아래와 같은 메시지의 예외가 발생하였다. For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters. 위의 Spring Data Reference에 보아도 Named Parameters를 사용할 때 @Param를 사용하라고 적혀있다는 것이다. (6.3.6) 이상한 것은 전에는 @Param 없이도 잘 동작했는데 왜 그럴까? 일딴 그 예외를 발생시키는 주체는 ParameterBinder ..