전체 글 (720) 썸네일형 리스트형 [Java] Record 패턴 불변 DTO의 성격인 Record와 DTO간의 매핑을 코드를 자동생성해주는 라이브러리 Mapstruct에 대한 정리를 해보자 1. RecordRecord는 불변성을 보장하는 타입이다. 따라서 신뢰성이 높아그래서 주로 Request,Response,Configuration에 대한 정보를 담아서 사용한다. 아래와 같은 레코드의 소스가 있다고 가정하자public record MemberRequest( @Schema(description = "닉네임", example = "스미스") String nickname, @Schema(description = "프로필 이미지 링크", example = "이미지 주소") String imgUrl, @Schema(description = "이름", example = .. [Docker] 리눅스 용량 확보 및 도커 저장공간 최적화 EC2를 사용하다가 용량 초과로 인해 서버가 움직이질않는다.도커가 동작할떄 기본적으로 로그를 작성하는데, 이 로그가 꽉차서 작성할수없자, 무한 대기 + 재시작 상태가 되는것이다. 아래와 같은 방법으로 조치 및 최적화를 진행해보자 1. 용량 확인 1-1.어디에서 많은용량을 사용하고있는지를 알아내자 df 로 간단하게 현재 용량이 100%라는 것을 확인 한다. 1-2. 어디 경로에서 많은 비중을 차지할까?df -h해당 어떤 디렉토리에서 사용 차지하는지 알수 있다. 나는 overlay2 하위 도커 디렉토리에서 거의 다썼다. 1-3. 어떤 파일 때매 그럴까?해당 경로로 우선 이동하고 현재 디렉토리에서 가장 많은 비중을 차지하는 상위 5개의 리스트만 보기du -hs * | sort -rh | head -5 이도.. [Flutter + Socket] Flutter + NestJs + Socket 서비스 개발하기 채팅 관련 웹 서비스를 개발했다. 다뤄보지 않은 프레임워크를 선택해서 극단으로 몰았던게 조금 후회되지만 무튼 관련 개발 내용을 정리해서 포스팅한다. 우선 개발한 서비스의 아키텍처는 아래와 같다. 그림은 귀찮으니 대충 1. Flutter web : 사용자가 사용하는 화면이다. 2. nestJs 포트 두개 (3000,8080) 을 기반으로 채팅과 기초정보를 제공하는 백엔드 프레임워크이다. 3. mongo : 비정형디비로 RDB를 쓰려다가 채팅에 특화된 디비를 쓰기로 했다. 4. mongo express : mongo디비를 볼수있는 콘솔이다. 5. fcm : 사용자가 백그라운드, 포그라운드 일때 메시지 알림을 웹푸시로 주거나 미수신 메시지를 카운트를 증가시킨다. 아래의 로직으로 간단하게 구현했다. 더 심도있는.. [Aws] Https 인증서 세팅하기 알람을 보내야하는 기능이 있는데, http로는 사용자 요청을 얻을 수 없다. 따라서, Https 세팅한다. 1. certbot 설치 sudo snap install certbot --classic 2. 인증서 발급 sudo certbot --nginx -d {도메인} 발급이 끝나면 아래와 같은 문구로 인증서 위치를 알려준다. Certificate is saved at: /etc/letsencrypt/live/rabbithole.gotdns.ch/fullchain.pem Key is saved at: /etc/letsencrypt/live/rabbithole.gotdns.ch/privkey.pem This certificate expires on 2024-07-04. These files will be u.. [AWS] RDS too many Connection 오류 MySQL said: Too many connections 갑자기 잘 사용하던 RDS가 연결이 안됬다. 커넥션 풀에서 관리되는 커넥션에 대한 부족일 수도있고, 이미 닫힌 커넥션에 대한 유지로 인해 연결이 실패할 수도있고 미사용 커넥션이 너무 오래 살아있는 경우 일 수도 있다. 무튼 커넥션에 대한 max connection 수와 wait-timeout 에 대한 조정이 필요해 보인다. 1) 파라미터 그룹 생성 max_connections는 최소로 잡혀있지만, 이값을 300으로 변경한다. wait_timeout 도 180초로 변경한다. 이는 3분 정도이고, 이 기간동안 커넥션을 얻기 위해 대기한다. 이후 디비의 파라미터 그룹을 변경해서 재부팅해준다. 신규로 생성한 파라미터 그룹으로, 디비가 적용되고 재부팅 되.. [AWS] EC2 메모리 이슈분석 및 Swap memory 설정 1) 배경 EC2가 자꾸 죽었다. 프리티어를 문제없이 사용하다가, 특정 Docker 컨테이너 2개를 띄운 EC2가 자꾸 죽는것을 볼수있었다. 귀찮아서 미루다가 분석을 해보기로했다. 2) 분석 aws의 ec2프리티어였다. 사실 서버 인프라를 확장하면 된다. 그래서 운영이나 회사에서는 발생하지않았던, 새로운 경험이다. 적은 서버 스펙의 서버가 자꾸 죽을때 사용하면 좋을 기술 같다는 생각이 들은겸 리눅스 공부할겸 분석을 해보기로했다. 3) 문제 찾기 3-1) 시스템 로그 보기 별다른게 없었다. 시스템 로그는 부팅 중이나, 부팅후의 로그를 볼수있다. 부팅과정에서 제대로 안된다면 확인할때 유용하다. 3-2) 인스턴스 스크린샷 확인 서버가 기동중에 이유없이 다운되는 거기 때문에 인스턴스 스크린샷을 확인한다. 메모리.. [Flutter] textformfield 클릭시 화면이 리스트를 가리는 현상 흔히 말하는 키보드영역때문에 화면이 가리는 것이다. 가려진 화면만큼 이동하는게 아니라 키보드가 고정처럼 붙어버려서 입력창을 클릭하면 화면이 가려져서 아래와 같이 해결했다. 우선 입력하는 위젯을 크게 scrollview로 감싸줬다. SingleChildScrollView( child: NewMessages2( roomId: widget.chatResponse.id.toString(), userId: userProvider.userInfo.id.toString(), userName: userProvider.userInfo.name, ), ) 사실 이렇게 해도 되지만 해당 위젯의 build 최상위에 아래와 같은 부분도 추가해줬다. 해당 부분을 추가해야지 키보드가 올라왔을때 화면을 밀어준다. @override .. [Flutter] StreamBuilder State redraw 이슈 최근에 채팅 관련 모듈을 개발하면서, StreamBuilder를 사용했다. 해당 사용할때 이슈가있었는데 해당 부분에 대해서는 아래와 같다. * 채팅 입력 * 채팅 내용 위와 같이 두개의 State를 가지는 위젯들이 있었다. 해당 채팅 내용을 입력할때, 키보드가 위로 올라가면서 화면을 가리는 이슈때문에, 해당 키보드 때문에 화면이 밀리면 다시 그려주게끔 개발을 해놨다. 해당 부분 때문에 StreamBuilder에서 계속 값을 재 connection을 시키려고했다. 해당 이슈로 인해, 조금만 클릭해서 progressbar가 돌았고, 나도 돌았다. 해결 방법은 생각보다 간단하다. 아래와 같이 stream으로 받아오는 변수를 밖으로 빼면 된다. 소스코드는 아래와 같다. import 'package:flutter.. 이전 1 2 3 4 5 6 ··· 90 다음 목록 더보기