[Chrome] 인쇄할때 보이는 print css 브라우저별로 미리보기

Intro 웹 어플리케이션을 사용하면서 웹 브라우저에 보이는 화면을 그대로 프린트 하는 일은 사실 흔하지 않다. 연구데이터에 관련된 도메인으로 몇몇 프로젝트를 진행하다보니, 브라우저에서 보이는 화면 프린트 했을 때의 인쇄 결과물에 대한 요구사항이 종종 들어올 때가 있는데, 화면에 보여지는 것과 최대한 비슷하게 해달라는 고객도 있고 특정 포맷으로 보기좋게 인쇄되기를 원하는 클라이언트도 있었다. 사실 브라우저에서 인쇄물에 대해서도 css를 지원하기 때문에 어느정도의 css에 대한 이해가 있다면 어렵지 않게 해낼 수 있지만, 자주하는 일이 아니기 때문에 매번 할 때마다 다시 기억을 더듬어야 하고, 검색했을때 그렇게 쉽게 나오는 정보도 아니기 때문에 이번 기회에 한번 정리를 해두려고 한다. 특히 브라우저에서 바..

Development/HTML ⁄ CSS 2023.12.02
[Java] Serializable 인터페이스 이해하기

Intro 데이터를 한 시스템에서 다른 시스템이나 네트워크로 전송하거나 데이터를 파일에 저장할 때, 그 데이터를 전송가능한 형태로 변환해야 한다. 객체는 입체 형태지만, 데이터가 이동하는 통로는 0과 1로만 이루어진 일차원의 세상이기 때문이다. 이 과정을 직렬화(serialization)라고 하며, 데이터의 직렬화의 방법은 XML이나 JSON등 우리가 흔히 아는 것 외에도 정말 많은 방법들이 있다. 자바에서는 Serializable 인터페이스를 구현하여 이를 수행할 수 있게 된다. 자바 내에서의 직렬화는 객체의 상태를 바이트 스트림으로 변환하여 파일에 저장하거나 네트워크를 통해 전송할 수 있도록 하는 과정이다. 자바 플랫폼 내에서만 데이터를 주고받는다면 아래의 강점을 지니고 있기 때문에 여전히 많이 사용..

Programming/Java 2023.11.08
Postgres의 배열컬럼을 JPA(Hibernate)에서 사용하는방법

Intro Postgresql 에서는 특이하게도 배열 타입을 사용할 수 있다. 개인적으로는 이걸 선호하지는 않는데, 일반적인 다른 데이터베이스와 다른 형태의 쿼리작성이 필요하고 좀 더 복잡해지기 때문이다. 만약에 DB 마이그레이션이라도 해야 한다면 참 골치아프겠다. 특히 이런경우 ORM과의 호환성이 큰 문제가 될 수 있다. 업무에서 JPA를 주로 사용하고 있는데, 예상했던대로 자체적으로는 Postgres의 배열타입을 지원해주지 않았다. 대신 UserType을 구현하여 새로운 타입을 정의할 수 있긴 했는데 그 방법으로 문제를 해결해보려 한다. 준비 작업 시연을 위해 샘플 프로젝트 및 샘플 데이터베이스를 준비하였으나, 이미 진행중인 프로젝트와 DB가 있다면 건너뛰어 코드 및 엔티티 부분만 참고해서 문제를 해..

Programming/JPA ⁄ Spring 2023.11.02
[MacOS] Karabiner 활용해 특정 텍스트 입력하는 매크로 만들기

Intro Windows 에는 AutoHotkey, Linux 에서는 Autokey 라는 훌륭한 자동화 유틸리티들이 있다. 맥북 사용자 입장에서도 Apple 에서 직접 만든 Automator라는 훌륭한 자동화 프로그램이 있지만, 개인적으로 애플스크립트를 작성해서 해봤을때는 몇가지 단계를 거치다 보니 반응 속도가 너무 느렸다. (키 입력 후 약 300ms 후 텍스트 입력됨) 또한 기본 키보드 설정의 text replacement 기능도 있지만, 특정 키조합을 통해 입력하고 싶은 상황이라 그것도 적합하지 않았다. 참고로 애플스크립트를 이용한다면 아래와 같이 작성한 후에 on run {input, parameters} tell application "System Events" keystroke "입력할 키 스..

IT ⁄ Computer/Mac 2023.10.15
[스프링 부트] 외부 설정값으로 간단하게 복잡한 커스텀 빈 주입 받기

intro 웹 프로젝트를 진행하다보면 외부 설정값을 어플리케이션 내에서 활용할 일이 많다. 하드코딩을 해두면 후에 변경하기 쉽지 않기 때문에 외부에 설정값으로 빼는게 좋은데, 설정값이 한두개 일 때야 크게 어렵지 않지만 설정값이 점점 늘어나고 심지어 계층형 구조를 가진다면 점점 복잡해진다. 스프링에서는 편리하게 여러가지 설정값을 관리하기 위한 방법을 제공하는데 그 중 @ConfigurationProperties는 특히 프로퍼티의 값을 Bean으로 매핑하는 강력하고 직관적인 기능을 제공한다. 본 글에서는 @ConfigurationProperties의 기본 사용법과 주요 특징 및 주의할 점에 대해 다루어보려고 한다. main 프로젝트 생성 스프링부트 3.x 버전으로 먼저 생성하고 추후 2.x 버전으로 낮추며..

Programming/JPA ⁄ Spring 2023.10.05