반응형

개발/개발관련 84

[개발관련] Spring Boot max-request-size (413 Request Entity Too Large)

multipart/form-data 로 이미지를 수신하는 API 를 개발하고 타 업체와 연동 테스트를 하던 중 413에러가 발생하였다. 413 Request Entity Too Large로 request 메시지의 용량이 스프링의 기본 request-max-size인 2MB보다 커서 해당 에러코드가 발생한 것으로 확인하였다. application.yml에 아래와 같은 세팅을 해준다. tomcat: max-http-form-post-size: 15MB ... servlet: multipart: max-file-size: 15MB max-request-size: 15MB inteliJ 에서 yml 파일에서 max 등, 타이핑을 하면 자동완성이 된다.

개발/개발관련 2024.03.27

[개발관련] wireshark, multipart/form-data http message 캡쳐

sensor업체의 데이터를 수신하기 위하여 스프링 부트로 간단하게 api를 만들었다. api는 multipart/form-data 로 json(필수param)과 이미지(선택param)를 request body로 받는다. 업체와 테스트 중, 요청 데이터 포맷 때문에 연동 테스트에 어려움을 조금 겪었다. 과정 요약) -json 및 이미지를 2개의 api 에서 각각 받으려고 하였으나 1개의 api로 합칠 것 지시 받아 수정. -mac에서 postman으로 요청 시 되는데 windows 에서 postman으로 요청 시 415가 발생하는 현상 -> boundary세팅 차이 때문으로 추정 중... -업체 테스트를 위하여 curl 샘플을 첨부하였으나 c# 유니티 (UnityHttpRequest) 를 사용하는 업체 환..

개발/개발관련 2024.03.27

[개발관련] 정말 중요한 메모리

벌써 개발자로 전직을 한 지 만으로 14개월이 되었다. 그중 현 회사에서는 6개월 간 정말 다양한 경험을 할 수가 있었고 최근에는 유독 메모리와 싸움을 벌이고 있다. 처음 메모리에 관심을 가지게 된 것은 소중한 데이터 수집 프로세스가 killed 된 것을 알게 되었을 때였다. 도대체 누가 왜 나의 프로세스를 죽였을까. 이 프로세스가 무엇을 그리 잘못했을까 궁금하여 메모리 사용량을 유심히 관찰하였으나 엄청나게 메모리를 많이 사용하지 않는데도 불구하고 주기적으로 프로세스가 killed 되는 것을 알게 되었다. killed의 주기가 정확하게 10분이라는 것이 의아하여 crontab을 확인해 보니 10분마다 프로세스를 종료시키는 스케줄링이 등록되어 있었다. 소스와 나뿐, 히스토리를 묻기 어려운 상황에 '아 뭔가..

개발/개발관련 2024.02.07

[개발관련] JVM 메모리 확인 관련 명령어

목적 설명 명령어 JVM heap 상태 확인 heap상태 확인 가능 jdk 버전에 따라 불가할수 있음 jmap -heap {PID} JVM heap 상태 확인 heap의 히스토그램 출력 jmap -histo:live {PID} JVM heap 덤프 저장 현재 디렉터리에 heapdump파일 생성 eclipse 또는 inteliJ로 dump 파일 확인 가능 jmap -dump: format=b,file=heapdump.hprof {PID} JVM native memory 트래킹 *java 실행 시 JVM 옵션 설정 필요 -XX:NativeMemoryTracking=summary jcmd {PID} VM.native_memory {summary | detail} JVM heap GC 통계 확인 jstat -g..

개발/개발관련 2024.02.07

[개발관련] 솔트 없이 일방향 해시 함수 사용 조치

솔트 없이 일방향 해시 함수를 사용하여 비밀번호를 저장한 사항에 대해 조치해야 할 일이 생겼다.다음은 솔트 없이 SHA-256 해시 알고리즘을 사용하는 비밀번호(pwd) 변환 java 소스이다. MessageDigest digest = MessageDigest.getInstance("SHA-256"); byte[] hash = digest.digest(pwd.getBytes("UTF-8")); StringBuffer hexString = new StringBuffer(); for (int i = 0; i MessageDigest라는 클래스를 사용하는데 여기서 Digest란 단어가 등장한다. 다이제스트는 해시알고리즘으로 변환한 ..

개발/개발관련 2023.12.21

[개발관련]Oracle11g Dbeaver 연결 시 ORA-12514 해결 방법

Oracle 11g Windows 버전을 설치한 후 Dbeaver 에서 커넥션 시 다음과 같은 에러가 발생하였다.Listener refused the connection with the following error:ORA-12514, TNS:listener does not currently know of service requested in connect descriptor DBeaver 커넥션 설정 시 Oracle은 Mysql과는 다르게 Database입력란의 오른쪽에 Service Name 또는 SID 를 선택할 수 있는 셀렉트 박스가 생긴다. Mysql과는 구조가 약간 다른데 이에 대해서는 추가적인 공부가 필요하다. 여기서는 해당 에러가 발생할 경우 Database 입력란에 어떤 정보를 입력해야 커..

개발/개발관련 2023.12.19

[개발관련] Oracle Database 11g Download 방법

1. 오라클 소프트웨어 딜리버리 클라우드에 접속한다. Oracle Software Delivery CloudSee a quick, introductory tour of the download processedelivery.oracle.com 2. 로그인 한다 3. 다운로드 받을 소프트웨어를 검색한다. database 라고 검색하고 Oracle Database 11g 을 다운 받기로 한다.  4. 클릭하였을 때 나타난 문구를 제대로 보지 못해 다시 한 번 눌렀을 때 아래와 같은 문구가 나타났다. 이미 다운로더 큐에 추가되었다고 한다. 5. 오른쪽 상단의 View Item 에서 장바구니에 담기듯 담긴 SW 를 확인할 수 있다. Continue를 클릭한다. 6. 다운로드 받을 SW를 확인하고 Continue ..

개발/개발관련 2023.12.19

[개발관련] inteliJ 정규표현식 일괄 수정 방법_ 마이바티스 인젝션 조치 중

내용1) InteliJ 프로젝트 내 일괄 바꾸기 :  Ctrl + Shift + R내용2) 정규표현식 활성화 아이콘 클릭 :  .*내용3) 바꿀 문자열을 찾는 정규표현식에서 사용하는 소괄호 ( () )  는 $1, $2 등으로 바꾼 후 문자열에서 변수로 사용 가능----------------------------------------------------------------------------마이바티스 인젝션 조치를  해야 하는 상황이 생겼다.기존 소스에서 마이바티스 파라미터 세팅시 보안에 취약한 '$'를 사용하여 보안체커에 걸리게 되었는데그 건수가 약 70건에 달했다.'$' 를 '#'으로 변경하는 경우 간단하게 InteliJ에서 Ctrl + Shift + R 로 일괄 바꾸기를 하면 되지만 기존에 '..

개발/개발관련 2023.12.19

[개발관련] TCP ESTABLISHED, 3WHS, netstat

LISTEN 중인 서버의TCP 포트에 전송하는 클라이언트의 SYN 패킷을 시작으로 3WHS를 수행하고 ESTABLISHED 상태가 되면 본격적으로 Application 데이터를 주고받을 수 있도록 연결이 확립된다. TCP상태를 리눅스 상에서 직접 확인해보니 재미있다. 80포트를 사용하는 레드마인에 외부에서 접속하여 TCP연결이 확립된 것을 확인할 수 있다.

개발/개발관련 2023.12.17
반응형