대파양파애비
ilikezzi

Backend dev?

Nope, 말하는 감자입니다만.
Database/MySQL

[Mysql] max_connection_errors 해결

오늘은 협업 업체에서 사내 DB에 연결 시에 max_connect_errors 관련 에러가 뜬다고 해서, 관련내용을 포스팅해보려고 한다. 참고로 나는 블랭 아니고 블랑이다... 맥주 블랑을 좋아해서 입사할 때 영어이름을 Blanc으로 정했는데 그 뒤로 블랑 쳐다도안본다...^^ 아무튼 이처럼 DB접속이 불가능 하고, max_connection_errors 수치 변경을 요청하셨다. 아마도 이런 에러가 나왔을 것이다. ERROR 1129(00000): Host '*' is blocked because of many connection errors. Unblock with 'mysqladmin flush-hosts 이제 max_connection_errors 가 뭔지 알아보자. max_connection_..

Programming/협업

[Typescript] Eslint로 저장 시 사용하지 않는 import 제거

바쁘게 개발을 하다보니 코드상에 사용하지 않는 import들이 너무나 쌓여버렸다... 사진 속 코드처럼 사용하지 않는 import들이 있다. 일일히 지우기엔 너무 양이 많고 앞으로도 쌓일 가능성이 있어서 Eslint로 저장 시에 지워지게 할 것이다. eslint 설치부터해서 적용법까지 해보자. npm i eslint --save-dev 해당 명령어로 eslint를 설치한다. npm install eslint-plugin-unused-imports --save-dev 그리고 import제거하는 플러그인을 설치한다. { "plugins": ["unused-imports"] } { "rules": { "@typescript-eslint/no-unused-vars": "off", "unused-imports/n..

Web/NestJS

[Nest.JS] TypeOrm에서 페이지네이션 구현 (last_id, size)

오늘은 백엔드 개발에 있어서 필수적이라 생각하는 페이지네이션에 대해서 포스팅을 해보려고 한다. 우선 페이지네이션에 대해서 간략하게 설명하자면, 흔히 페이지수(쪽수)를 매기로 정렬할 떄 쓰이는 개념으로써 웹에서 자주 다루게 된다. 나도 마찬가지도 이번 프로젝트 개발을 하면서 페이지네이션을 상당히 많이 사용하였다. 댓글 목록 투표 목록 팔로잉 목록 차단 목록 북마크 목록 선물함 목록 포인트 내역 목록 이벤트 목록 내가 본 뉴스 목록 알림 목록 등등.. 이 처럼 거의 대부분에 목록(@GET) 에서는 페이지네이션을 사용하였다. 우선 알림쪽을 사진으로 간략하게 보자. 해당 사진은 알림 목록 쪽 사진인데, 아래로 스크롤하면서 10개씩 끊어서 로딩해서 보여주게끔 해준다. 즉, 한번에 많은 양을 로딩해서 보여주는것이 ..

Database/MySQL

[Mysql] 여러행의 데이터를 한 행의 데이터로 합치기 "GROUP_CONCAT"

오늘은 Mysql에서 여러행의 데이터를 한 행의 데이터로 합치는 쿼리에 대해서 알아보자. 우선 각각의 테이블에 대해서 대략적으로 살펴보자. 위 두 테이블은 간단하게 설명하자면, blanc_story_log 테이블은 뉴스의 정보가 담긴다고 보면 되고, ( "action" 컬럼에 "view" or "create" 존재) blanc_keyword_news 테이블은 해당뉴스의 키워드가 담긴다. (같은 뉴스에 키워드 최대 5개) 이런구조에서 두 테이블을 조인해서 뉴스가 생성 되었을때, 뉴스의 키워드 정보를 한 개의 uuid로우에 여러 키워드를 담고 싶었다. 우선 정답을 보고 쿼리를 하나씩 파헤쳐 보자. SELECT t1.uuid AS id_post, t1.user_uuid AS id_usr, t1.news_uui..

Web/NestJS

[Nest.JS] DTO vs Interface

벌써 일주일이나 포스팅을 하지 못했다. 개발중인 서비스 런칭일이 한달도 남지않아서 UnitTest랑 QA랑 협업업체 대응 하느라 정신이없다... 한달전에 내가 개발한 코드를 보면 왜 이렇게 짰나 어질어질하다. 그만큼 가파르게 성장하고 있다는 반증인 것 같아서 내심 뿌듯하기도 하다 ^__^ 본론으로 돌아와서 프로젝트를 하면서 자주 사용하지만 그 차이점을 제대로 모르고 사용했던게 있다. 바로 DTO 와 Interface 이다. 두개가 비슷하다고 생각해서 이 케이스에서는 둘중에 뭘 쓰는게 맞는거지? 하고 고민했던적이 많았다. 오늘 두개의 비슷한 점과 명확히 다른점에 대해 알아보고 제대로 이해를 해 볼 것이다. DTO란? 말그대로 Data Transfer Object, 계층간 데이터 교환을 위해 사용하는 객체..

Web/NestJS

[Nest.JS] Axios, Http 비동기 통신 라이브러리

요새 외부업체들과 협업이 잦아지면서 API를 연동 시키기 위해 Axios를 많이 사용하고 있다. 그래서 이 참에 Axios에 대해서 제대로 알고 사용할 겸 포스팅을 해보려고 한다. 우선, Axios란 ? Http클라이언트 라이브러리로서, 웹 애플리케이션에서 웹 API와 통신하는 데 사용되며, 웹 브라우저와 Node.js 환경 모두에서 사용할 수 있다. 1. Promise 기반 Axios는 Promise 기반으로 작성되어 있어서, 콜백 대신 .then()과 .catch() 또는 async/await를 사용하여 비동기 작업을 처리할 수 있다 . 이를 통해 비동기 작업을 처리 시, 코드의 가독성과 유지 관리성이 향상된다. 2. HTTP 메서드 지원 Axios는 다양한 HTTP 메서드 (GET, POST, PU..

Programming Language/Javascript

[Javascript] null 병합연산자 "??"

오늘은 병합연산자 "??" 에 대해서 포스팅 해보려고 한다. ?? 예시를 보면 바로 이해가 갈 것이다. A ?? B A가 null 또는 undefined이면 B 그게 아니라면 A 이게 전부다. 이걸 언제쓰면 유용한지 알아보자. dto.last_id가 null이거나 undefined일때 0으로 변환해서 이후 0과 대소 비교를 하는 코드다. 이처럼 숫자 0을 구분 지어 다뤄야 할때 아주 유용하다. 또 이런 dto.parent_uuid에 대한 이런 구구절절 말도안되는 코드도 dto.parent_sort_depth = dto.parent_uuid ?? 0 이렇게 한줄로 끝내버릴수 있다. 이처럼 0 외에도 기본값을 할당하는 좋은 용도로 사용할 수 있다.

Web/NestJS

[Nest.JS] DTO 객체의 키 이름 변경 @Transform

오늘은 DTO 객체의 키 이름을 @Transform 데코레이터를 사용하여 바꾸는 방법에 대해 포스팅을 할 것이다. 음,, 이렇게만 얘기해서는 무슨소린지 헷갈리니 바로 예제 코드로 보자. findBookmark=[ { target_uuid: 123, name: Blanc, ... }, { target_uuid: 234, name: Jack, ... }, { target_uuid: 345, name: Scott, ... } ] ///////////////////////////// BookmarkReadDto={ @Expose() @ApiProperty() uuid: string; @Expose() @ApiProperty( name: string; ... } 변수 findBookmark : [] 와 Bookm..

Programming/AWS

[AWS] AWS 사용량 예산 초과 시 이메일로 알림 받기

오늘은 AWS 예산 초과 시 이메일로 알림받는 법에 대해 포스팅을 할 것이다. AWS 클라우드 서비스를 사용하다보면 예상치 못한 사용량 급증이나, 혹시 모를 엑세스키 해킹을 통한 요금 폭탄을 맞을 수 있으므로 필수적으로 해주는게 좋다. 우선 루트 계정 외에 IAM 관리자계정으로 하려면, 루트계정에서 권한을 변경을 해줘야한다. 루트계정으로 로그인해서 My account에서 내려보면 결제 정보에 대한 IAM 사용자 및 역할 액세스가 있을 것이다. 이부분에서 IAM 액세스 활성화 버튼을 눌러서 업데이트를 해주면, 관리자인 IAM 사용자가 청구데이터에 접근할수 있게 된다. 이제 권한을 설정을 변경하였으니 관리자인 IAM사용자나, ROOT계정 모두 진행할 수 있다. 이제 Budgets으로 이동해보자. 예산 생성으..

Programming Language/Javascript

[Javascript] split() 지정 구분기호로 문자열을 배열로 분할

오늘은 문자열을 원하는 지정구분 기호로 배열로 분할하는 법에 대해서 알아보자. 케이스는 이러하다. 관련 DB에 sort_depth라는 컬럼이 존재하는데 해당 값들은 string으로 이루어져 있다. 나는 사진에 아랫쪽에 있는 "118,121,122,123" 의 크기(길이?)를 구해 4라는 값을 얻고 싶었다. 그럼 우선 배열로 변환한 다음, length()를 사용하여 크기를 구할 계획이다. 여기서 배열로 변환할때 " , " 이 콤마 단위로 구분을 해서 넣어 줘야되는데 이때 split()를 사용하면 간단하다. split()이란? 지정된 구분 기호에 따라 문자열을 하위 문자열 배열로 분할할 수 있는 내장 JavaScript 문자열 메서드이다. 사용법은 간단하다. const str = "118,121,122,12..