[Kotlin] foreach 와 map 알고 쓰자
Kotlin 2022. 1. 12. 22:48

Kotlin으로 구현하다보면 foreach와 map은 실제로 같은 기능을 하는 것 같지만 깊게 이해하고 사용하면 상황에 따라 유용하여 사용할 수 있다. 이글에서는 두 문법에 관하여 정리해 보려고 한다. ◆foreach 이 문법은 단순히 모든 Collection 원소에 대하여 한번 순회하면서 처리하는 문법이다. 중간에 중단도 가능하고 결과 값을 만들어 내기도 하고 아닐 수도 있다. 즉 모든 처리가 가능 하다. val list = listOf( Data("John", "Ali"), Data("Naidu", "Tan"), Data("Evgenii", "Dmitry")) list.foreach{ if(it.firstName=="Naidu"){ println("This is Naidu") break } } ◆ma..

[Spring] 코드에서 Active Profile 가져오기
Spring boot 2022. 1. 9. 12:15

실행프로파일 별로 다르게 실행해야할 업무 로직을 구현이 필요할 경우 아래와 같이 진행하면 쉽게 구현 할 수 있다. ◆Enviroment 빈 설정 Spring 환경 변수는 Enviroment class로부터 가져 올 수 있다. 아래 코드로 bean을 주입한다. @Autowired private final Environment environment; ◆사용 if(Arrays.stream(environment.getActiveProfiles()).anyMatch( env -> (env.equalsIgnoreCase("dev") ))){ //비즈니스 로직 구현 }

[DynamoDB] AWS Lambda을 이용하여 DynamoDB Table간 실시간 동기화하기
DataBase 2022. 1. 8. 22:15

보통 제품의 여러 환경으로 나누어 배포된다. 검증된 데이터를 프로덕션 환경으로 옮기거나 다른 리젠의 DynamoDB 테이블로 옮기위 위해서는 오늘 소개하는 방법을 사용 할 수 있다. ◆ 실시간 동기화 흐름 DynamoDB Stream 은 DynamoDB에서 일어나는 일련의 행동들을 캡쳐하고 24시간동안 로그에 저장한다. 또한 이 기능은 DynamoDB을 RCU 비용만 발생한다. 또한 트리거 기능을 제공하여 삽입, 업데이트, 삭제 발생시 target 테이블을 업데이트 가능하다. 이를 이용하여 AWS Lambda을 사용하여 다른 테이블들을 업데이트 할 수 있다. ◆ Lambda 권한 추가 { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor3",..

[DataBase] Order by에서 null 값 처리
DataBase 2022. 1. 6. 22:41

비즈니스 로직을 구현함에 있어 null 값의 조회되는 순서를 정하고 싶을때가 있다. 예를 들어 order by로 가져온 데이터에서 null 값이 아닌 데이터를 처리하고 null값을 최후의 선택지로 차선을 선택을 하는 경우이다. 이번 글에서는 각 DBMS에서 null값을 order by 구문으로 조회 시 삽입되는 위치에 대해 알아보자. DBMS 별 기본 설정 값 DBMS 마다 Null에 대한 sorting하는 방식을 기본으로 정해진 룰대로 진행한다. 아래 각각에 대한 설명이다. PostgreSQL, Oracle 여기서는 Null값을 모든 유효한 값뒤에 위치 하게 된다. SQLite, MySQL,MSSQL Null은 모든 값보다 작은 값으로 처리된다. 기본 Order과 다르게 처리 위에서 나열한 방식과 다르..

[Spring] Cache
Spring boot 2022. 1. 3. 23:39

Spring framework에서는 기본적으로 Hash map 기반의 cache 기능을 지원한다. 이번 글에서는 Spring의 cache기능에 대하여 전반적으로 알아보고 간단하게 사용해 보려고 한다. JAVA에서의 Cache JAVA에서는 CachingProvider, CachManager, Cashe, Entry, Expity등 5개의 Interface을 제공한다. CachingProvider: CacheManager를 정의 및 구성, 관리를 해주는 interface 정의 CacheManager: 하나의 Cache에 대한 관리 interface 정의 , 하나의 CacheManager는 하나의 CachingProvider만 소유할 수 있다. Cache: Key-value Mapping 관계를 가진 자료구..

[Spring] Maven Wrapper
Spring boot 2022. 1. 3. 20:23

Maven Wrapper 란 Maven 환경에서 개발 시 Apache maven 프로젝트를 관리하는 주는 툴이다. 이것을 사용하면 매번 복잡한 개발환경을 구성할 필요 없이 어디서든 쉽게 개발할 수 있다. Maven Wrapper 생성 Maven프로젝트 폴더 아래에서 아래 명령을 사용하면 쉽게 Maven Wrapper를 생성 할 수 있다. mvn -N io.takari:maven:0.7.7:wrapper 명령어 #특정 프로파일로 실행 ./mvnw -P[profile명] #Test ./mvnw test # Test skip ./mvnw -Dmaven.test.skip=true #clean ./mvnw clean #package, jar 파일 만듬 ./mvnw package #Install, 현재 폴더에 설치..

[Linux] pigz를 이용하여 tar 파일 parallel 하게 실행
이모저모 2021. 12. 27. 21:47

오늘은 개발하면서 자주 사용하는 linux의 기본 compress과 decompress에 대해 적어 보려고 한다. 정확히 말하면 tar는 파일을 묶는 행동이고 gz이 묶은 파일을 압축하는 과정이다. 본 글은 gz을 기본으로 설명하고 parallel 하게 compress 및 decompress 방법을 서술 한다. tar.gz 압축 tar -zcvf 파일명.tar 폴더명 # -c tar 아카이브 생성 # -v 처리되는 과정을 자세히 보여줌 # -f 대상 아카이브 생성 tar.gz 압축 풀기 tar -zxvf 파일명.tar # -x 아카이브에서 파일 추출 Pigz 검색하면 여러가지 병력 압축 및 해제하는 라이브러리들이 존재하는 것을 알 수 있다. 그 중에서 제일 많이 사용되는 pigz를 사용하여 압축 및 해제..

[EC2] S3 압축 파일 처리기
AWS/EC2 2021. 12. 25. 18:30

S3에 업로드된 zip파일 같은 경우 S3에서 압축을 풀지 못한다. 다운받고 압축을 풀고 다시 하나하나 업로드 해야 한다. 이것보다 더 쉬운 방법은 S3를 EC2에 마운트 시키면 S3를 파일 시스템 다루듯이 다룰 수 있다는 것이다. 본 글에서는 s3fs-fuse 을 이용하여 S3을 마운트 시키는 법을 다룰 예정이다. 의존 패키지 설치 sudo yum install automake fuse fuse-devel gcc-c++ git libcurl-devel libxml2-devel make openssl-devel 패키지 설치에 필요한 라이브러리를 설치 한다. s3fs-fuse 다운 및 설치 #코드 다운로드 git clone https://github.com/s3fs-fuse/s3fs-fuse.git #설치..