[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
스프링부트 프로젝트에서의 엑셀 및 압축파일에 대한 스트리밍

Intro 엑셀파일이나 zip 압축파일을 서버에서 생성해 다운로드를 제공할 때, 최초 응답시간에 대한 고려가 필요하다. 물론 미리 준비되어 있는 파일이라면 브라우저에 바로 응답을 보낼 수 있겠지만 DB에서 데이터를 조회하고, 이를 바탕으로 엑셀 파일을 생성하는 경우 사용자에게 여러 개의 파일을 압축된 형태로 제공하는 경우 이러한 상황에서는 파일을 준비하는 데 시간이 상당히 소요될 수 있다. 데이터의 크기에 따라 응답시간이 크게 달라지기 때문에 예상되는 응답 시간을 구체적으로 제공하기도 어려운 상황에서, 화면에 스피너만 딸랑 띄워놓는 것 만으로는 어지간한 사용자들의 인내심을 달래기 쉽지 않다. 서버에서 아무리 바쁘게 준비하고 있다고 뜨거운 열을 뿜어내며 소리쳐도 사용자는 서버가 멈춘 것으로 오해할 수 있다..

Programming/JPA ⁄ Spring 2023.09.14
[Git] 과거 커밋 일괄 이메일 주소 변경

Intro 가끔씩 Git을 사용하다 보면 이메일 주소가 잘못 입력되어 커밋되는 경우가 생길 수 있다. 혹은 회사에서 개인 이메일로 잘못 커밋한 경우도 발생하는데 금방 알아차렸다면 수정하기 쉽지만 커밋을 꾸준히 잘못해왔다면 수정하기가 쉽지 않다. 이 글에서는 Git 저장소에서 특정 이메일 주소로 커밋된 목록을 확인하고, 해당 커밋들의 이메일 주소를 한번에 모두 변경하는 방법에 대해 알아볼 것이다. 단, 주의할 점이 많으니 명령어를 날리기 전에 항상 신중해야한다. 특정 이메일로 커밋한 목록 확인 먼저, 잘못 지정한 이메일 주소로 커밋한 내용이 얼마나 많은지 확인해보자. git log --author="{찾아볼_이메일_주소@example.com}" 지금 상황은 총 1건이 발견되었다. 해당 커밋의 해시값 6b5..

Development/DevOps 2023.08.08
리눅스에서 하드디스크 NTFS 시스템 으로 포맷

Intro 윈도우와 리눅스 두가지 OS에서 모두 사용할 수 있는 파일 시스템으로 하드디스크를 포맷을 해야 할 필요가 있었다. FAT32, exFAT, NTFS 등 선택할 수 있는 몇가지 파일시스템이 있지만 각각의 장단점이 있다. FAT32는 거의 모든 기기와 호환되는 장점이 있지만, 4GB 이상의 큰 파일을 저장할 수 없으며 파티션 크기에도 제한이 있다. 그래서 exFAT과 NTFS 중 하나를 선택해야 하는데 안정성이 중요한 상황이라 NTFS를 선택했다. 파티션 생성 먼저, 연결된 모든 디스크 목록을 확인한다. 디스크 이름을 알아내기 위함이다. sudo fdisk -l 여기 보이는 14.57 TiB짜리 하드디스크 /dev/sda를 NTFS 파일 시스템으로 포맷할 예정이다. 이어 아래의 명령어를 입력한다...

IT ⁄ Computer/Linux 2023.08.07