![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/LnKcc/btruGZlfVs1/IVnh4X3uYLLo24tW6vyJjk/img.jpg)
최근 Thread 를 이용해서 비동기로 처리해야하는 작업이 생기면서 비동기시 사용하는 메서드의 객체들을 어떻게 다룰 수 있을까에 대해서 고민해야 되는 상황이 생겼습니다. 그동안 추상적으로만 알고 있던 immutable object 불변객체에 대해서 정리해 보았습니다. 1. 불변객체란 객체 지향 프로그래밍에 있어서 불변객체(immutable object)는 생성 후 그 상태를 바꿀 수 없는 객체를 말한다. 반대 개념으로는 가변(mutable) 객체로 생성 후에도 상태를 변경할 수 있다. 객체 전체가 불변인 것도 있고, C++에서 const 데이터 멤버를 사용하는 경우와 같이 일부 속성만 불변인 것도 있다. 또, 경우에 따라서는 내부에서 사용하는 속성이 변화해도 외부에서 그 객체의 상태가 변하지 않은 것 처..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/3aUfV/btruqFsj7HH/LgpxgDkeggtcDyrn2SvSu1/img.png)
0. out / build 폴더의 차이 IntelliJ 에서 Gradle 기반의 프로젝트를 개발하면, 아래 그림과 같이 build 와 out 이 나누어져 있는 걸 볼 수 있습니다. 열어보면 둘다 빌드한 클래스 파일들을 가지고 있는데 무슨 차이인가 의하할 수 있습니다. 결론부터 말하자면, gradle build 시에는 build 폴더에, IntelliJ 에서 빌드시에는 out 폴더에 build 파일이 생성되게 됩니다. IntelliJ 의 Project Setting 에 보면, Project > Project compiler output 에 out 폴더가 지정되어 있는 것을 볼 수 있습니다. 그래서 Gradle clean 을 하게 되면, out폴더는 삭제되지 않고 build 폴더만 삭제됩니다. intelli..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dSUUFt/btrtmgg1NHS/v2mxedWRr6ET38TcmGdIKK/img.png)
최근 어플리케이션의 사용자가 많아지면서 대충 만들었던 notification 에 대한 안정성을 평가하고, 코드 리팩토링을 진행하게 되었습니다. expo sdk 를 이용하여 하이브리드 어플리케이션을 제작하고 spring boot 를 이용하여 api server를 만드는 경우 사용하게 되는 expo-server-sdk-java 의 사용법에 대해서 알아보려고 합니다. 0. expo push notification expo-notifications 을 이용하면 어플리케이션에서 ExponentPushToken[...] 형식의 expo push token 을 받아 올 수 있습니다. 어플리케이션에서 전달받은 expo push token 을 database 에 저장하고 백엔드 언어에 맞는 expo-server-sdk-..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bKBGC4/btrtraAnfQ9/oWsWSzL81BSz6YFKtqVKV1/img.jpg)
최근 spring boot 프로젝트에서 공무원 월급일자를 계산해야하는 일이 생겼습니다. 공무원의 경우 월급날이 공휴일이거나, 주말인 경우 월급을 앞당겨서 지급받기 때문에 특정년도의 공휴일을 계산해주는 계산기가 필요했습니다. 0. 라이브러리 추가 gradle project 에 음력달력을 사용하기 위한 라이브러리를 추가해줍니다. dependencies { // https://mvnrepository.com/artifact/com.ibm.icu/icu4j implementation group: 'com.ibm.icu', name: 'icu4j', version: '4.0.1' } 1. 공휴일 처리 클래스 Lunar2Solar 메서드를 이용하여 음력기준의 공휴일을 양력날자로 변환해준뒤, 대체 공휴일이 적용되는 ..