오늘의 기록
[AWS] EBS 볼륨 크기 조정 후 Linux 파일 시스템 확장
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html 볼륨 크기 조정 후 Linux 파일 시스템 확장 - Amazon Elastic Compute Cloud 볼륨 크기 조정 후 Linux 파일 시스템 확장 EBS 볼륨 크기를 늘리고 난 후에는 파일 시스템 관련 명령을 사용하여 파일 시스템의 크기를 늘려야 합니다. 볼륨이 optimizing 상태가 되자마자 파일 시스 docs.aws.amazon.com AWS EBS 볼륨 크기를 늘렸는데, 여전히 Linux 상에서 용량이 부족할 때가 있다. 이런 경우는 보통 파티션 크기와 관련되 이슈이다. Linux에서 파일 시스템을 확장하는 프로세스는 다음..
[Spring] FCM 서버 구축하기 (특정 시간대에 알림 보내기)
애플리케이션에 푸시 알림을 특정 시간대에(9시, 13시, 19시) 보내야할 일이 있어서 파이어베이스 자체에서 푸시 알림을 예약해서 사용하고 있었는데, 이게 파이어베이스 자체 문제인지 제대로 알림이 가지 않았다. 그래서 아얘 백엔드에서 FCM 서버를 만들어 특정 시간대에 파이어베이스에 푸시알림을 직접 요청하기로 했다. 본 포스팅에서는 Spring으로 FCM PushNotification(푸시알림) 서버를 구축해보겠다. +) FCM은 사용자 개개인의 토큰을 사용하는 방법과 사용자 그룹인 토픽을 사용하는 방법이 있는데 본 포스팅에서는 토픽을 사용하는 방법을 택했다. Firebase 비공개 키 생성 백엔드에서 푸시 알림을 파이어베이스에 요청하기 위해서는 파이어베이스의 비공개 키 파일이 필요하다. 각자 파이어베이..
[Java] OpenCsv를 사용해 CSV 파일 읽기
OpenCSV http://opencsv.sourceforge.net OpenCSV는 자바에서 CSV 파일 읽기, 쓰기를 편하게 해주는 API들을 제공하는 라이브러리이다. 여기서는 OpenCsv의 파일 읽기에 대해서 알아보겠다. import 다음 라이브러리를 추가한다. (Gradle 기준) implementation 'com.opencsv:opencsv:5.5' String 배열로 읽기 CSV 파일을 String[] 형식으로 읽어들이는 것이 가능하다. public static void main(String[] args) throws CsvValidationException, IOException { CSVReader csvReader = new CSVReader(new FileReader("input.c..
[Java] valueOf, parserseInt 차이점
String str = "1234"; Integer integer = Integer.valueOf(str); int i = Integer.parseInt(str); valueOf는 Integer(wrapper 클래스) return parserInt는 int(primitive 타입) return 다른 타입에서도 동일하다. (Double, Long, ...)
[Clean Code] 9. 단위 테스트
TDD 법칙 세 가지 첫째 법칙: 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 둘째 법칙: 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. 셋째 법칙: 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. 이렇게 하면 실제 코드를 전부 테스트하는 테스트 케이스가 나온다. 하지만 실제 코드와 맞먹을 정도로 방대한 테스트 코드는 심각한 관리 문제를 유발하기도 한다. 깨끗한 테스트 코드 유지하기 만약 테스트 코드가 더럽다면, 실제 코드를 변경해 기존 테스트 케이스가 실패했을 때, 지저분한 코드로 인해 변경하기 어려워진다. 테스트 코드는 실제 코드 못지 않게 중요하다. 테스트 케이스가 있으면 변경이 두렵지 않다. 테스트 케이스가 없다면 모든 변경이 잠..
[Java] 람다식
https://github.com/whiteship/live-study whiteship/live-study 온라인 스터디. Contribute to whiteship/live-study development by creating an account on GitHub. github.com 백기선님 자바 기초 스터디 15주차 목표 자바의 람다식에 대해 학습하세요. 학습할 것 (필수) 람다식 사용법 함수형 인터페이스 Variable Capture 메소드, 생성자 레퍼런스 람다식 사용법 람다식이란? 람다식(Lambda expression)은 메서드를 하나의 '식(expression)'으로 표현한 것이다. 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지므로, 람다식을 '익명 함수(anonymous ..
[Java] Mockito
https://www.inflearn.com/course/the-java-application-test 더 자바, 애플리케이션을 테스트하는 다양한 방법 - 인프런 | 강의 자바 프로그래밍 언어를 사용하고 있거나 공부하고 있는 학생 또는 개발자라면 반드시 알아야 하는 애플리케이션을 테스트하는 다양한 방법을 학습합니다., 그냥 개발자를 넘어 '더 나은 개발 www.inflearn.com 강의 내용 정리 Mockito 소개 Mock: 진짜 객체와 비슷하게 동작하지만 프로그래머가 직접 그 객체의 행동을 관리하는 객체.Mockito: Mock 객체를 쉽게 만들고 관리하고 검증할 수 있는 방법을 제공한다. Mock 프레임워크 중 가장 많이 사용된다. 단순한 로직의 단위 테스트는 간단하게 할 수 있지만, 만약 애플리..
[Clean Code] 8. 경계
외부 코드 사용하기 인터페이스 제공자는 더 많은 환경에서 돌아가야 더 많은 고객이 구매하니까 적용성을 최대한 넓히려 애쓴다. 반면, 인터페이스 사용자는 자신의 요구에 집중하는 인터페이스를 바란다. 이런 긴장으로 인해 시스템 경계에서 문제가 생길 소지가 많다. 한 예로, java.util.Map을 살펴보자. Map이 제공하는 기능성과 유연성은 확실히 유용하지만 그만큼 위험도 크다. 예를 들어, 프로그램에서 Map을 만들어 여기저기 넘긴다고 가정하자. 넘기는 쪽에서는 아무도 Map 내용을 삭제하지 않으리라 믿겠지만, Map에는 clear() 메서드가 있고, 누구나 Map 내용을 지울 권한이 있다는 말이다. 또 다른 예로, 설계 시 Map에 특정 객체 유형만 저장하기로 결정했다고 하자. 그렇지만 Map은 객체..