JAVA로 API 개발할 때 DTO파일 읽어서 필요하거나 필요 없는 필드 확인하기
2021. 8. 3. 20:55
프로그래밍 노트/Spring, Java, Kotlin
몇달 전 모빌리티 회사로 이직하게 되었고 내가 처음 맡은 분야는 혜택(포인트, 쿠폰) 쪽이였다. 이러한 테스트 소스를 구현하게 된 계기 인계받은 기존 소스를 양산형으로 구현해서 (공장에서 찍어낸듯한..) 말그래도 돌아가게만 만들어 놓은 상태였다. 우리는 일반적인 JAVA로 개발된 API가 그렇듯 DTO로 필드로 받아서 내부 로직을 처리하도록 설계되어있었는데 DTO에 거의 모든 (데이터 컬럼에 맞는) 필드를 생성해놓고 그 중 일부만 request 받는 그런 식이였다. 이게 한두개면 별일이 아니였을텐데 대략 50개 정도(그것도 포인트 관련 소스만)가 이런 상태였고 다음과 같은 원칙일 경우에만 DTO를 중복으로 사용해야했다. (DTO생성을 최소화 하기 위함) 1. DTO파일 명칭이 업무적인 의미상 생뚱맞지 않..
mysql select결과 csv파일로 내보내기
2020. 11. 23. 13:02
프로그래밍 노트/MySQL
mysql 또는 mariadb를 다루다보면 select 결과를 엑셀로 출력해야 하는 경우가 생긴다 그럴 때 짧은 내용이야 select 결과를 그냥 복사해서 붙여넣으면 되지만 데이터 크기가 커지면 상황은 달라진다 ** 모든 변수는 ${내용} 으로 명시함 그렇기 때문에 다음과 같이 쿼리를 짤 경우가 생긴다. # 줄바꿈은 보기 편함을 위함이니 쿼리 작성 시 줄바꿈 없이 작성하거나 역슬래시를 사용한다 # 역슬래시가 두개 있는 것은 역슬래시 하나를 지우고 사용하시면 됩니다(구글에서 사이트 감지 오류가 있어 수정함) SELECT ${생성하고싶은 컬럼} INTO OUTFILE '${생성될 파일의 경로}' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMI..
java AES 인코딩, 디코딩 예제
2020. 11. 6. 16:12
프로그래밍 노트/Spring, Java, Kotlin
import java.io.IOException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.util.Scanner; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import javax.crypto.spec.SecretKeySpec; import sun.misc.BASE64Decoder; public class decPw { pub..
Java 파일 복사 프로세스 (eml파일 헤더 변조하여 복사)
2020. 11. 3. 11:39
프로그래밍 노트/Spring, Java, Kotlin
eml 파일의 헤더부분 subject, messgeid를 변경하여 원하는 숫자만큼 복사하는 프로세스 마임이 없을 경우 라이브러리를 참조하도록 구성해야한다 package com.crinity.webapps.mail.web; import java.io.IOException; import java.io.InputStream; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Properties; import org.springframework.stereotype.Controller; import org.springframew..
Imap Command(명령어) 정리 이메일 수신 동기화 프로세스
2020. 11. 3. 09:16
프로그래밍 노트/메일 프로그래밍
IMAP COMMAND 정리 1. 접속 telnet XXX.XXX.XXX.XXX 143 ( SSL = 993이지만 ssl의 경우 commandline에서 질의 불가능) 2. 로그인 확인할 사용자 확인 a LOGIN [사용자] 0000 (a 필수 입력) 3. 박스 선택하기 a SELECT INBOX 4. 리스트 보기 a FETCH 0:[최대UID|*] (UID RFC822.SIZE FLAGS BODY[HEADER.FIELDS (FROM TO SUBJECT DATE MESSAGE-ID)]) 5. 메시지 가져오기 a UID FETCH [해당 UID] BODY.PEEK[] 유용한 COMMAND 1. 전체 메시지의 X-MMS-MESSAGE-ID 출력 a fetch 0:* (BODY[HEADER.FIELDS (X-..