닥치고 코딩 84

php에서 java로 전환하기(작성중)

10년 가까이 된 php코드를 java로 전환하면서 겪은 문제점, 개선점들을 정리하는중 1. table enum컬럼에 속지않기 table ddl을 봤을때 컬럼이 not null, enum이어서 엔티티에 enum타입의 객체로 선언했다. 그리고 db에서 A,B 등 의미없는 값을 사용하고 있었고 description조차 없어서 매번 컬럼과 상태값을 정리된 쪽지를 보고 매핑해서 찾고있었다. 이런 불편을 해소하고자 코드단에서는 명확한 의미를 가진 변수를 사용하여 두번 찾아보는 일이 없게 하기 위해 converter에서 객체를 매핑해주도록 개발했다. 하지만 문제는 enum타입이라고 너무 믿었던 나머지 실제 db값에 null, ""(null string)등 다른 값이 있었음. converter에서 convertToE..

분석설계고민 2024.01.29

트랜잭션에 대한 고민

상황 업무를 맡고있는 서비스가 msa구조로 가려고 했던것 같음. '했던것 같다'는 이유는 내가 알고있는 얕은 지식으로는 서비스(api)하나 당 db가 1~2개 붙어 있어야 함.(하나의 서비스 트랜잭션을 하나의 api가 담당하기 위해서이지 꼭 1~2개라는 뜻은 아님) 하지만 api를 아주 세부적인 함수단위로 나눠놓고 여러 api가 여러 db를 조회하는 신기한 구조. 문서 하나를 작성하기위해 db는 3개를 갱신하고(table은 더 있음), api도 4개를 요청해서 2개의 디비를 갱신해주어야 함(2개는 조회). -> 예로 문서의 unique id를 구하고 별도로 관리하는 테이블 및 api가 존재, 해당 문서의 서명 정합성 검증 api, 문서저장 api, 발급api, ems요청 api 등등 문서를 작성하는 하나..

분석설계고민 2023.12.29

H2 테스트DB에 mysql 함수 인식불가 에러

회사라 짧게 글씀 상황: 컬럼값이 암호화 되어 들어가는데 like검색해야함 querydsl 사용하여 날쿼리로 작성하지 못하고있는데 AES_DECRYPT(UNHEX(d.number), 'secretKEY') 이런식으로 검색이 돼야했음 그래서 잘~ 작성하고 테스트 돌렷는데 Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Function "AES_DECRYPT" not found; 이렇게 에러가 발생 h2테스트 디비에 해당 함수가 없어서 발생, 자바코드로 연결해주는 방법이 있다. 다른건 못찾아봄 시원~하게 전체코드 간다 package coma.aaa.bbb.global.common; import javax.crypto.Cipher; import javax.crypt..

Java & Spring 2023.11.07

java maven을 gradle로 변환

Gradle 소개 Gradle은 다양한 프로그래밍 언어를 지원하는 빌드 자동화 도구. 빌드는 소스코드로 작성된 파일을 컴퓨터나 휴대폰 등 에서 실행가능한 소프트웨어 가공물로 변환하는 과정을 말한다, 자바를 예로 들면 아래의 과정을 거친다. 소스 코드 작성 자바 컴파일러가 소스코드.java를 -> 바이트코드.class로 컴파일 테스트 소스 컴파일 테스트 실행(유닛테스트, 통합테스트 등) jar 혹은 war 파일로 패키징 헬스체크 후 빌드 결과 출력 Apache Ant 및 Apache Maven의 컨셉을 기반으로 하지만, XML로 설정파일을 작성하는 Maven과는 대조적으로 훨씬 간단한 Groovy 언어를 사용. 또한 Gradle은 Apache License 2.0 기반의 오픈소스 이며 JVM(자바 가상 머..

Java & Spring 2023.09.24

AJAX란?

AJAX (Asynchronous Javascript And XML) 정의 Asynchronous Javascript And Xml(비동기식 자바스크립트와 xml)의 약자 자바스크립트를 이용해 서버와 브라우저가 비동기 방식으로 데이터를 교환할 수 있는 통신 기능 브라우저가 가지고있는 XMLHttpRequest 객체를 이용해서 전체 페이지를 새로 고치지 않고도 페이지의 일부만을 위한 데이터를 로드하는 기법 즉, 쉽게 말하자면 자바스크립트를 통해서 서버에 데이터를 비동기 방식으로 요청하는 것이다. 브라우저에서 http통신을 사용함. XMLHttpRequest(XHR) XMLHttpRequest(XHR) 객체는 서버와 상호작용하기 위하여 사용. 전체 페이지의 새로고침없이도 URL 로부터 데이터를 받아올 수 있..

네트워크 2022.04.04

ip란?

0.선행 Network 두 대 이상의 컴퓨터가 논리적 또는 물리적으로 연결되어 통신이 가능한 상태. 일방적으로 규모에 따른 네트워크 종류는 아래와 같다. PAN ( Personal Area Network ) : 가장 작은 규모의 네트워크 LAN ( Local Area Network ) : 근거리 영역 네트워크 근거리 통신 망을 의미하며 지역적 좁은 범위 내에서 고속 통신이 가능한 통신망. Man ( Metropolitan Area Network ) : 대도시 영역 네트워크 Wan ( Wide Area Network ) : 광대역 네트워크 1. IP란? 네트워킹이 가능한 장비를 식별하는 주소. 네트워크 상에서 통신을 하기 위해서는 몇 가지 통신규약(protocol)을 따라야 하는데, 네트워킹을 하는 장비들..

네트워크 2021.12.27

HTTP란?

HTTP란? HTTP는 OSI 7 계층과 TCP/IP를 기준으로는 애플리케이션 레이어 속하는 프로토콜이다. 애플리케이션 레이어는 데이터의 형식과 절차에 관련된 프로토콜이 속하는 계층. 쉽게 생각해서, 웹을 기준으로 수많은 클라이언트와 서버가 서로 통신을 하면서 데이터를 주고받게 되는데, 이때 이 데이터를 어떤 형태로 요청하고 보낼지를 결정하는 규약이라고 생각하면 된다. 현대의 웹은 거의 모든 영역이 HTTP 프로토콜을 기반으로 작동하고 있다. 대표적으로는 다음과 같은 특징을 갖고 있습니다 Request(요청) & Response(응답)의 형태 TCP 위에서 동작 stateless: 상태를 기록하지 않음. http는 평문을 전달합니다. 즉 어떤 특이한 형태가 아닌 형식이 정해진 문자열을 주고받는다고 생각하..

네트워크 2021.12.24

[알고리즘] 최소비용 신장 트리 (MST)

신장트리 신장 트리(spanning tree)란 그래프내의 모든 정점을 포함하는 트리다. 신장 트리는 트리의 특수한 형태이므로 모든 정점들이 연결되어 있어야 한다. 그래프에 있는 n개의 정점을 정확히 (n-1)개의 간선으로 연결하게 된다. 하나의 그래프에는 많은 신장 트리가 존재 가능하다. 싸이클이 없는 무방향 그래프 최소 비용 신장 트리 최소 비용 신장 트리는 신장 트리 중에서 사용된 간선들의 가중치 합이 최소인 신장 트리를 말한다. 최소 비용 신장 트리를 구하는 방법으로는 Kruskal과 Prim이 제안한 알고리즘이 대표적으로 사용되고 있으며, 이 알고리즘들은 최소 비용 신장 트리가 간선의 가중치의 합이 최소이어야 하고, 반드시 (n-1)개의 간선만 사용해야 하며, 사이클이 포함되어서는 안 된다는 조..

알고리즘 2021.09.22