분류 전체보기

    MariaDB + SQLAlchemy + Flask에서  database 연결 끊김 현상

    MariaDB + SQLAlchemy + Flask에서 database 연결 끊김 현상

    이슈 mariadb.InterfaceError: Lost connection to MySQL server during query MariaDB와 SQLalchemy를 사용하는 중에 요청 할 때마다 간헐적으로 계속 끊기는 현상이 발생한 오류입니다. 문제해결 알려지기로는 다음과 같은데요 “해당 오류는 Mysql과 MariaDB에서 발생하는 에러로 장기간 비활성시 발생하는 에러이다.” 저는 당최 예측할 수 없었습니다. 왜냐..... 저의 경우 이게 계속 끊기면 아! 이거다 하고 논리적으로 풀어나가 보겠는데, 어느 순간에는 DB 요청 할 때마다 계속 끊겼다가 어느 순간에는 한번만 끊겼다가 어느 순간에는 끊기지 않는 전혀 예상하지 못하겠는 참 이상한 현상이었습니다 한 가지 찝찝한 것은 저의 경우 방화벽 활성화 하..

    Docker + UFW 적용 문제와 해결 방법

    Docker + UFW 적용 문제와 해결 방법

    인트로----추가사항입니다. 들어가기에 앞서 https://d-life93.tistory.com/466 이 글을 먼저 보시는 것을 추천드립니다. Docker + UFW+ IPTABLES 방화벽 적용Docker + UFW+ IPTABLES 방화벽 적용 인트로 https://d-life93.tistory.com/431?category=1013222 Docker + UFW 적용 문제와 해결 방법 인트로 요즘은 보통 쿠버네티스를 이용해서 서버 구축을 하니 이 글이 필요..d-life93.tistory.com----요즘은 보통 쿠버네티스를 이용해서 서버 구축을 하니 이 글이 필요 없을 수도 있습니다.다만 저와 같이 순수한 도커 만을 이용할 경우 발생하는 문제와 해결 방법에 대해 경험을 공유하고자 합니다.주의 도커..

    Backend 에서 Tensorflow, Keras 로 머신러닝, 딥러닝 작업 시 GPU 메모리 반환하지 않는 문제 해결 방법

    Backend 에서 Tensorflow, Keras 로 머신러닝, 딥러닝 작업 시 GPU 메모리 반환하지 않는 문제 해결 방법

    Backend 에서 Tensorflow, Keras 로 머신러닝, 딥러닝 작업 시 GPU 메모리 반환하지 않는 문제 해결 방법+ 저는 Pytorch 도 테스트 해보니 GPU 메모리 반환이 잘 이뤄졌습니다.How to clear GPU memory when using tensorflow or pytorch?인트로해당 문제는 프로젝트의 특이성으로 인해 “지정된 GPU를 사용해야 하는” 그리고 “백엔드에서 추론(inference)을 위해 GPU를 사용하는 것”과 “다른 특정한 프로그램에서도 같은 GPU를 사용”함으로써 “GPU를 공유해서 사용”해야 하는 경우 하나의 프로세스가 GPU 메모리를 반환하지 않고 잡고 있어 문제가 된 상황입니다.GPU를 사용하면 nvidia-smi 상에서 GPU 메모리가 꽉 차있는 ..

    Spring Request 데이터를 List 형태로 받으면 @Valid 체크가 안되는 현상 해결 방법

    Spring Request 데이터를 List 형태로 받으면 @Valid 체크가 안되는 현상 해결 방법

    Spring does not check valid when list data is databinding다음과 같은 예시가 있습니다.스프링에서 Controller 로 데이터가 넘어올 때 [java.util.List] 형태의 데이터만 넘어와서해당 List에 맞게 DTO를 만들어서 List로 데이터를 받는데,List 안의 데이터에 대해서 분명히 조건 체크를 하게 했는데 Null로 데이터가 넘어온 데이터로 작업하게 되어 에러가 발생한다 ?????위 문제로 인해 저도 여러 해결 방법을 찾아봤는데요특히, "Custom Validator를 만들어서 체크하면 된다" 하는 글이 대부분이었습니다.위 Custom Validator가 아닌 방법으로 좀 더 손쉽게 해결 가능하도록 해봅시다.우선 이유부터 알아봅시다.왜 ? 도대체..

    협업을 위한 snake_case -> camelCase 변환 방법 @JsonNaming, @JsonProperty

    협업을 위한 snake_case -> camelCase 변환 방법 @JsonNaming, @JsonProperty

    협업 도중 발생한 문제로 시도한 JsonNaming과 JsonProperty문제가 발생한 이유는 다음과 같다.Front-End에서는 이미 많은 부분을 snake_case를 사용하고 있었기에 변경소요가 너무 커서 계속해서 snake_case를 사용하기 원했다. Back-End 개발자인 나는 Java 작성 규칙에 따라 camelCase로 작성하길 원했다.그렇기 때문에 Front-End에서는 snake_case로 데이터를 보냈고, snake_case로 데이터를 받았다.두 가지의 요구사항을 만족하기 위해 어떻게 해결할까? 생각을 하며 여러가지 방법을 시도해 보았는데, 결과물은 같지만 불필요한 코드가 많이 발생하게 되는 과정이 많이 생겼다.이러한 문제해결 도중 @JsonNaming과 @JsonProperty를 알..

    객체 지향, 오브젝트와 의존 관계의 이해

    Connection을 통한 오브젝트와 의존관계의 이해 public class UserDao { public void add(User user) throws ClassNotFoundException, SQLException { Class.forName("com.mysql.cj.jdbc.Driver"); Connection c = DriverManager.getConnection( "jdbc:mysql://localhost/springbook","spring","book"); PreparedStatement ps = c.prepareStatement( "insert into users(id, name, password) values(?, ?, ?)"); ps.setString(1, user.getId());..

    API 명세서 뜯어보기 - StringTokenizer Class

    Package java.lang.Object java.util.StringTokenizer What is StringTokenizer The string tokenizer class allows an application to break a string into tokens. The tokenization method is much simpler than the one used by the StreamTokenizer class. The StringTokenizer methods do not distinguish among identifiers, numbers, and quoted strings, nor do they recognize and skip comments. 문자열 토크나이저 클래스를 사용하면..

    Mock && Mockito : 가짜 객체

    Mock 객체란? 실제 객체를 만들기 위해서는 비용과 시간이 많이 들기 때문에, 비용이 적게 들도록 가짜 객체를 생성하여 사용하는데 이것이 Mock 객체이다. 일반적으로 테스트 더블은 상태(State)를 기반으로 테스트 케이스를 작성하는데 Mock 객체는 행위(behavior)를 기반으로 테스트 케이스를 작성한다 테스트 더블이란? 실제 객체를 사용하지 않고 이를 대신해줄 가짜 객체를 만들어 테스트 수행을 하는 방법 상태기반 특정한 메소드를 거친 후 객체의 상태에 대해 예상값을 비교 가장 보통의 예 : setName("test") → assertThat( "test", is(getName() ); 행위기반 메소드 리턴값이 없는 void 이거나, 예상된 동작을 보장할 수 없을때 시나리오를 기반으로 A가 입력..