대파양파애비
ilikezzi

Backend dev?

Nope, 말하는 감자입니다만.
Programming/AWS

[AWS] 국내 1호 AWS 굿즈 개봉기! (+ 개발진스)

오늘은 처음으로 개발 내용 외에 포스팅을 해보려한다. 얼마전에 SAA-C03 합격후기, 합격요약 포스팅을 올렸었는데, 혹시나 필요한 사람이 있지않을까 해서 카카오톡에 AWS Study하는 오픈채팅방이 있어서 포스팅 내용을 공유했었다. 예상외로 반응이 핫해서 고맙다는 피드백을 많이 받고 블로그 유입도 500명이 넘었다! 그러고 몇일이 지나서 아래 사진처럼 나를 찾았다. ......! 따로 갠톡을 해보니 AWS 직원분이셨고 AWS 관련 자격증 준비하는 대학생들에게 공유를 해도 될지 여쭤보셨다. 한명이라도 누군가한테 도움이 되고 싶었는데 이렇게 까지 해주시니 너무 감사한 마음뿐이였다. 보내 주신다는 굿즈도 아직 국내에 제공된 적 없는 첫 굿즈였다!! 시간이 지나 사무실로 굿즈가 도착했다!!! 구성이 너무 알차..

Web/NestJS

[Nest.JS] Slack에 다양한 통계데이터 알림 자동화

회사에서 협업툴로 Slack을 사용하고 있는데, 각종 통계자료 몇 로그데이터를 매일 알림으로 보내주면 좋을 것 같았다. 그래서 무슨데이터를 전송해주면 좋을지 고민하다가 1.전체 유저수 / 2.가입자수 / 3.기사 조회수 / 4.언론사별 기사 발행수 / 5.댓글수 / 6.DAU / 7.WAU 해당 7가지 데이터를 보여주기로 결정했다. Slack bot을 통한 axios와 schedule를 사용해서 자동화를 시켜줄 것이다. 우선 Slack bot을 만들자. https://api.slack.com/apps/ 해당 URL에 접속하여 슬랙봇을 생성을 하고, https://api.slack.com/methods 다음 URL에서 슬랙봇의 chat.postMessage 권한을 추가해 주도록 하자. 그 후 Install..

Programming/AWS

[AWS] SAA-C03 합격후기, 핵심요약 정리 (AWS Certified Solutions Architect - Associate)

무려 한 달 만에 포스팅이다... 때는 3달전 AWS에 수많은 서비스 중에서 EC2, S3, Lambda 같은 기본적인 서비스 밖에 다룰 줄 몰랐었다. 하지만 점점 개발경력이 쌓여가면서 설계 쪽도 조금씩 맡아서 하게 되고, 점차 보안 쪽도 고민을 하게 되었다. 그래서 막연히 AWS공부를 하기보다, 이참에 자격증취득을 목표로 삼고 스터디를 하면 좋을 것 같았다. 자격증 종류에 대해 알아보다가 AWS Certified Solutions Architect - Associate SAA-C03로 정했다! https://www.udemy.com/course/best-aws-certified-solutions-architect-associate/ SAA강의 중에서 꽤나 유명한 Udemy강의로 선택했다. 할인받아서 1..

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 외에도 기본값을 할당하는 좋은 용도로 사용할 수 있다.