반응형

분류 전체보기

    dynamoDbEnhancedClient에서 QueryConditional에서 sort key range 조회하기

    아래와 같이 데이터가 존재하는 상황을 가정해보자. import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBean; import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbPartitionKey; import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbSortKey; @Getter @Setter ..

    mysql 컬럼별 상위 N건 조회하는 방법

    mysql을 사용하고 있는 상황에서 타입별 보유하고 있는 score별 순위 2개까지의 값을 가져오는 쿼리가 필요했다. 예를 들면 강아지 페스티벌에 참여한 강아지들의 스코어 별 상위 3위까지의 강아지를 찾는 쿼리가 필요했다. 그럼 값을 한번 추출해보자. 우선 전제가 되는 테이블은 아래와 같다. # database 생성 create database test character set utf8mb4 collate utf8mb4_general_ci; use test; # 테이블 생성 create table dog_festival ( id int primary key not null auto_increment, dog_type varchar(30), score int ) # 값 추가 insert into dog_f..

    문자열 연결 시 실행되는 내부 로직

    문자열 생성 String 문자열을 연결할 때 아래와 같이 객체로써 선언해서 사용할 경우 불필요한 객체가 만들어진다는걸 우리는 알고있다. String temp = new String("wedul"); 그래서 String을 아래와 같이 선언해서 String constants Pool에 저장해서 불변객체를 생성해서 동일한 문자열에 대해서 새로 생성하지 않고 가져다 사용할 수 있도록 할수있다. (effective java. 불필요한 객체를 만들지 마라.) String temp = "wedul" 문자열 연결 문자열 생성 시 우리는 + 로 문자열을 연결할 경우 새로운 문자열 객체가 계속 생성되기 때문에 이를 해결하기 위해서 StringBuilder를 통해서 모든 append가 끝나고 build를 통해 문자열 객체를..

    Java 이모티콘 찾기, 제거 등등

    이번 프로젝트를 진행하면서 이모티콘을 제거하거나 개수를 세거나 이모티콘을 포함한 전체 텍스트 문자를 세거나하는 작업이 있었다. 처음에는 단순하게 EmojiParser를 사용해서 이모티콘을 판단하여 개수도 찾고 이모티콘을 문장에서 제거하려고 했다. 하지만 테스트에서 사용했던 일부 이모지에서는 큰 문제가 없었으나 새롭게 생성되는 이모지를 걸러내지 못하는 이슈가 있었다. 확인해보니 해당 라이브러리에 마지막 릴리즈 날짜는 19년도였다. 이모티콘은 매년 많게는 수천개가 생성되는것에 비해 해당 라이브러리의 마지막 릴리즈 노트 날짜는 너무 처량했다. 해당 라이브러리를 사용하지 못하게 되었고 다른 방법이 없는지 고민하다가 regex를 사용하는 방법 등 여러가지를 사용했었다. 1. 화이트리스트 regex 사용하여 이모티..

    Dynamodb enhanced client

    dynamodb enhanced client 기존에 dynamodb를 조작하기 위해서 aws에서 제공되던 sdk를 사용할 때 DynamodbDBMapper를 사용해서 객체-테이블 매핑하여 질의해서 사용하였는데 생각보다 사용하기 번거로웠던 기억이 있었다. (마지막으로 프로젝트에서 사용한지 벌써 2년이 지나서 자세한 불편내용은 기억이 나진 않지만 사용에 편리하지 않았던 기억은 명확하게 남아있다.) 그래서 이번에 dynamodb를 프로젝트에서 사용하게 되었을 때 조금 더 편하게 사용할 수 있는 방법이 없을까 찾아봤고 dynamodb sdk for Java version 2에서 제공되는 DynamoDb Enhanced를 사용해보기로 했다. 사용법 gradle import plugins { id 'org.spri..

    lombok에서 @builder annotation 사용 후 static 접근 시 cannot find symbol 에러 문제

    문제상황 개발하면서 특정 정보를 필터링할 Predicate를 동적으로 생성하고 싶은 마음에 다음과 같이 개발을 진행했었다. WedulFilterPredicate - 필터로 사용할 조건을 보관하고 Predicate를 반환하는 클래스 package com.wedul.springtest; import lombok.Builder; import lombok.Getter; import java.util.function.Predicate; @Getter public class WedulFilterPredicate { private Boolean hasName; private Boolean hasPicture; private String teamNo; @Builder public WedulFilterPredicate(..

    개발 7년차, 매니저 1일차

    http://www.yes24.com/Product/Goods/87336637 개발 7년차, 매니저 1일차 - YES24 『개발 7년차, 매니저 1일차』는 사수, 멘토, 팀장, CTO까지 직책별 관리를 기술한 대백과이다. 개발자도 꼭 알아야 하는 소프트 스킬, 사람 및 조직 관리 노하우 수록하였으며 개발 팀을 성공으로 www.yes24.com 어느덧 개발을 시작한지 횟수로 8년이 되었다. 개발하는걸 그렇게 좋아하지는 않았지만 문제를 해결해 나가는 걸 즐겨왔었고 좋은 사람들과 함께 일하는걸 좋아했다. 그래서 함께 개발하고 함께 오래동안 같이 일하는 문화가 되는것을 주니어때부터 계속해서 생각해왔던 것 같다. 현재 직장에서 일을 하면서 감사하게도 기회가 되어 팀내 작은 테크리드를 하고 있다. 8년간 일을하면서..

    Gradle build 시 node js 버전을 지정하여 빌드하기

    어드민 프로젝트를 만들 때 spring project 내부에 static 위치에 front 관련 코드를 위치시켜서 화면과 api를 하나의 프로젝트에서 진행하는 경우가 있다. 이 경우 gradle를 통해서 npm build를 진행하게되는데 같이 개발을 진행하는 개발자들 로컬 node.js 버전과 서버 node.js 버전에 따라서 프론트에서 사용하는 일부 라이브러리등이 build시 지원되지 않는 경우가 있다. 나같은 경우에는 서버는 node js버전이 12이었고 node-sass 버전을 4.x를 쓰고 있었다. 그러나 회사에서 제공하는 서버의 node 버전이 16으로 업그레이드 되면서 nodes-sass 6.x 이상으로 올려야했다. 근데 node-sass를 올릴 경우 사용되고 있는 script-ext-html..

    S3Mock을 사용한 S3 테스트 방법

    s3를 로컬에서 테스트 진행하기 위해서는 별도의 mock 서버가 필요하다. 이를 대신해서 AWS s3에서 사용하는 api 구현체를 제공해주는 s3Mock이라는 라이브러리가 있어 사용해봤는데 괜찮아서 정리해본다. Gradle Import https://github.com/findify/s3mock GitHub - findify/s3mock: Embedded S3 server for easy mocking Embedded S3 server for easy mocking. Contribute to findify/s3mock development by creating an account on GitHub. github.com dependencies{ api 'org.springframework.cloud:spr..

    만들면서 배우는 아키텍처 그리고 매핑 프레임워크 MapStruct를 사용한 매핑

    만들면서 배우는 아키텍처 (Get Your Hands Dirty on Clean Architecture) 요새 읽던 책중에 'Get Your Hands Dirty on Clean Architecture' 책이 인상 깊었다. 원서로 팀원들과 스터디 하고 나서 인상깊어서 '만들면서 배우는 아키텍처'라는 번역으로 다시 한번 봤다. 원서는 구어체로 되어있어 내용은 좋았지만 친절하지 못한 느낌이었다면 번역본은 깔끔하게 정리되어있어서 너무 맘에 들었다. 인상깊었던 몇 부분을 정리하면 첫번째로 육각형 아키텍처에서 포트-어댑터 패턴을 사용하여 호출 당하는쪽은 호출하는쪽을 몰라도 되고 port interface로 통신하는 부분이 인상 깊었고 interface가 만드는쪽에서만 명세(설계도)를 알 수 있다는 장점만을 생각했..

반응형