Programming

Protobuf, Protocol Buffers 란? 현재 업무를 담당하고 있는 게임 서버는 Client와 통신을 위해 Google에서 개발한 Protobuf를 사용하고 있어요. Protobuf가 어떤 것인지, 어떻게 사용하는지 간단하게 알아봐요~! Protobuf는 Google에서 개발하고 오픈소스로 공개한 데이터 직렬화 구조예요. 대표적인 데이터 직렬화 방식은 우리가 잘 알고 있는 JSON과 XML이 있어요. Protobuf는 gRPC를 구현하기 위해 사용돼요. ※직렬화는 데이터 표현은 Byte 단위로 변환하는 작업을 의미해요. Protobuf의 좋은 점 Protobuf는 이진 포맷이라서 JSON, XML보다 더 작은 데이터 용량을 차지하고, 속도도 빠르고 효율적이에요. 구조화된 데이터는 직렬화, 역..
Python에서 Map 2개를 동일한 값이 들었는지 확인하려면 map == map1 비교를 하면 True, False 값이 리턴된다. 하지만 자바에서는 다른 방법을 사용해야한다. Map에 특정 원소들이 모두 있는지 containsAll 메서드로 확인해보자. entrySet, keySet등 사용하면 된다. HashMap mapA = new HashMap(); HashMap mapB = new HashMap(); mapA.put("apple", 1); mapA.put("banana", 3); mapA.put("pork", 4); mapB.put("apple", 1); mapB.put("banana", 3); mapB.put("pork", 4); System.out.println(mapA.entrySet()...
Spring Scheduler cronTab 표현식 매년 1월 1일 스케쥴러를 통해 데이터 변경을 하는 기능 개발을 위해 적용했다. @Scheduled(cron = "0 0/30 8-22 * * ?") // 매일 아침 08:00 ~ 22:00 까지 30분마다 한번씩 실행. @Scheduled(cron = "0 */3 * * * ?") // 3분 마다 실행 @Scheduled(cron = "0 20 14 9 12 ?") // 12월9일 14:20 분 실행 @Scheduled(cron = "0 0/10 9-18 * * ?") // 9~18시 10분마다 실행 @Scheduled(cron="0 0 0 1 1 ?") // 1월1일 1년에 한번 실행 0 0 6 6 9 ? | | | | | | | | | | | | ..
요구사항 사내 시스템에서 유저가 어떠한 서비스 예약을 하면 예약 시간 5분 전에 슬랙 메세지로 리마인드 하는 기능을 구현 요청 바로 메세지 발송하는 건 찾아보면 많은데 예약은 잘못 찾겠어서 참고용으로 남기려한당 pom.xml 에 Slack 라이브러리 추가 com.slack.api slack-api-client 1.6.2 슬랙 메세지 텍스트 세팅~, properties에 입력된 slack token 조회 슬렉 메세지에 이모지를 넣고 싶으면 :pray: 처럼 넣으면 된당 public final static int BEFORE_MINUTE = 5; public final static String SCHEDULE_TEXT = "예약시간 " + BEFORE_MINUTE + "분 전입니다.\n" + "늦지 않게 방..
요구사항 AWS S3 다른 버킷으로 업로드, 다운로드, 삭제 기능 구현 그냥 두개을 버킷을 사용하려면 두개의 빈을 생성하면 된다~~! 코드는 A 버킷, B 버킷으로 작성했다 Bean 등록 A, B 버킷 두가지를 빈으로 등록하는 과정 properties에 입력된 값을 읽어온다. import com.amazonaws.auth.AWSStaticCredentialsProvider; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import lombok.extern.slf4j.Slf4j; import ..
접두사 -D java -jar -DmyProp="Hello World" myProgram.jar 이처럼 옵션을 줄 때 -D 접두사를 붙여서 주는 이유가 무었일까?? java -jar -myProp="Hello World" myProgram.jar 접두사를 빼는 것이 훨씬 간단해보이는데.. 접두사를 붙이지 않는다면 JVM에 설정된 옵션인 표준 JVM 옵션과 구별되는 시스템 속성으로 판단할 수 없기 때문에 붙여서 구별하는 것이다. 아래는 표준 옵션을 정의한 것이다. 이것은 실행할 때 에러를 발생시킨다. java -jar -client="davidxxx" myProgram.jar -- 표준 옵션 client 인식할 수 없는 옵션: -client=davidxxx 접두사를 사용 하면 표준 JVM 옵션과 구별되는 ..
https://www.techgeeknext.com/cloud/aws/amazon-s3-springboot-list-all-files-in-s3-bucket TechGeekNext - Next Generation Tech, Reviews and Tips Adblocker detected! Please consider whitelist or disable this site. We've detected that you are using AdBlock Plus or some other adblocking software which is preventing the page from fully loading. To keep the site operating, we need funding, and practical..
각각 세팅은 금방 하지만 세가지 동시 세팅에 시간을 많이 사용해서 정리하려고 글을 씁니당 이렇게 세팅해두면 컴파일 시 QueryDsl Q class, MapStruct Impl 파일들이 생성되기 때문에 변수 변동 사항이 바로 적용돼요. dependency에 lombok-mapstruct-binding 를 추가했는데 이 부분은 필요 없는 것 같아요. lombok 1.16인가 이상 버전에서 MapStruct 같이 사용 시 써야한다는데 그냥 되네용? 두 팀이 협업을 했다는 말도 있네요. lombok이랑 Mapstruct 같이 사용할 때는 Annotation processor 순서도 중요합니다. 참고 핵심은 plug in 태그에 Annotation processor 태그임니당. 설명 컴파일 시점에 Annotat..
JPA가 세팅되어 있는 프로젝트에 Mybatis를 같이 사용하기 위해 세팅하는 과정입니다. 복잡성 있는 쿼리를 Read용으로 사용하기 위해 세팅했으며, Transaction 처리는 추가로 필요합니다. JPA가 세팅되어 있는 상태 기준으로 작성했습니다. pom.xml org.mybatis.spring.boot mybatis-spring-boot-starter 2.1.3 MybatisConfig.java JPA와 같이 사용할 것이라서 따로 Config 파일을 생성하였습니다. @Configuration @MapperScan(basePackages = {"kr.demo.test.mapper"}, sqlSessionFactoryRef = "sqlSessionFactory", sqlSessionTemplateRef..
· Programming
https://regexper.com/ Regexper regexper.com https://regexr.com/ RegExr: Learn, Build, & Test RegEx RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp). regexr.com 휴대폰 번호 정규식 ^01([0|1|6|7|8|9])([0-9]{3,4})([0-9]{4})$ @Pattern(regexp = "^01([0|1|6|7|8|9])-?([0-9]{3,4})-?([0-9]{4})$")
woodadada
'Programming' 카테고리의 글 목록