전체 글

이왕 하는거 우왕 나오게
Retrospective

[개발자회고] #8. 2021 하반기 회고 ( feat. 문샷싱킹, 언주니어 )

벌써 2022년, 다사다난했던 2021년을 기록해두고, 2022년으로 나아가야겠다. 목차 드디어 리뉴얼이 끝났다. 🎉 수정 딜레마 문샷 디벨롭 상처 주는 리더 남은 과제 회사는 순항중 🏆 운빨 개발자 세 번째 이사 연차 36일 개발을 잘하고 싶다 🔥 언주니어 포트폴리오 기술 블로그 공부하기 드디어 아이가 태어났다 👶 늦잠 0회 게임 0회 우리의 소원은 건강 맺으며 목표 가장 감사한 사람 1. 드디어 리뉴얼이 끝났다. 🎉 올해 2월부터 시작한 리뉴얼 프로젝트가 7개월 만에 드디어 끝이 났다. 이 챕터는 리뉴얼 회고라고 봐도 무방할 것 같다. 1-1. 수정 딜레마 모두가 꿈꾸는 수정 하나 없는 속전속결 프로젝트는 환상의 동물에 가깝다고 본다. 리뉴얼의 처음 방향은 톤 앤 매너를 갖춘 리디자인 정도였다. 그러..

Deep Dive Series/Good Condition

[좋은 조건문 작성하기 2] Switch/Case 톺아보기

※ 대부분에 언어에 해당될 수 있는 내용이지만, javascipt 언어에 가장 적합한 글입니다. 0. 방법이 바뀐다고 조건문의 성능 차이가 있을까? 조건문에는 문도 있지만 문도 있다. 개인적으로 이 둘의 '가독성' 차이는 별로 없다고 생각한다. 취향 차이가 있을 뿐이지 두 조건문 방법 모두 충분히 좋은 조건문이라 보인다. 위 주장이 맞기 위해서는 조건문 방법이 달라진다고 '성능' 차이는 크게 발생하지 않는다라는 전제가 있어야 한다. 하지만 문 성능이 우수하다는 의견이 많았고 정말 그러하다면 '좋은 조건문'에 대하여 다시 한번 생각해볼 문제라고 생각했다. 그래서 특별히 문의 성능을 들여다보게 되었다. 1. 문은 무엇이 특별한가? 한 블로거께서 다음과 같이 표현해주셨다. if-else문은 원하는 조건이 나올..

Deep Dive Series/Good Condition

[좋은 조건문 작성하기 1] Early Return은 깊이가 얕아서 좋다!

※ 대부분에 언어에 해당될 수 있는 내용이지만, javascipt 언어에 가장 적합한 글입니다. 0. 깊이가 얕은 Early Return 방법 말 그대로 일찍이 RETURN 하여 함수를 빠져나오는 것이다. 바로 코드를 보자. const isNumber = v => /^(\s|\d)+$/.test(v); // function getBoardByRegisterId(registerId) { if (registerId.length >= 4) { if (isNumber(registerId)) { const data = []; // 20 Line ... return data; } else { alert('아이디는 숫자만 유효합니다.'); } } else { alert('아이디는 4자 이상 필요합니다.'); } } ..

Deep Dive Series/Good Condition

[좋은 조건문 작성하기 0] 왜 좋은 조건문을 작성해야 할까?

Q. 코딩에서 조건문은 어떠한 역할을 할까? 조건문은 모든 프로그래밍 언어를 막론하고 절대 빼놓을 수 없는 간단하지만 매우 중요한 뼈.대.요소라고 생각한다. 단순히 A의 조건에는 B의 로직이 수행되고, A가 아닌 조건에는 C의 로직이 수행된다는 개념을 떠나 새로운 조건이 계속 계속 생겨나면 그 조건 전체가 서비스의 복잡도를 결정할 만큼 중요한 요소라고 생각한다. 좋은 조건문은 이러한 요소를 좋게 만든다는 것을 말한다. if (A) { B(); } else { C(); } Q. 그렇다면 좋은 조건문은 어떤 조건문을 말할까? 우리 팀의 유지보수를 위한 가.독.성이 높은 조건문을 말한다. 여기서 단순히 가독성 높음에 집중하면 보기에만 좋은 떡?이 될 가능성이 높다. 유지보수하기 좋게 가독성 높은 조건문을 작성..

Small Talk

개발자 코드리뷰가 필요한 이유 (이상적인게 아니고 기본인 것)

개발자 코드리뷰가 좋거나 안 좋거나 아니면 애매하다는 이유로 잘 정착하지 못하는 개발조직이 많은 것 같다. 잘 정착하기위해서는 코드리뷰 참여자들 모두가 마음에서 우러나는 긍정적인 신호가 필요하다. 그 긍정적인 신호를 만들기 위해 코드리뷰가 필요한지에 대하여 누군가를 설득한다고 가정하고 글을 써보려고 한다. 1. 코드리뷰의 장점 개발 컨벤션 준수, 이슈 발견을 대표적으로 꼽는다. 1-1. 코딩 컨벤션 준수 = 생산성 향상 내가 개발한 기능을 꼭 내가 유지보수하는 것은 아니다. 그리고 내가 개발한 기능을 꼭 내가 기능 고도화하는 것도 아니다. 새롭게 팀을 옮겨 새로운 환경의 코드를 만나게 될 수도 있다. 그렇기에 개발을 하면서 수없이 다른 사람의 개발 코드를 만나야하며 이해해야한다. 이때, 생산성을 높이기 ..

Googling/postgresql

[RDBMS] PostgreSQL vs MySQL 차이 (fear. 버전을 막론하고)

둘 다 사용경험은 있는데, 사용 경험상으로는 큰 차이가 있다고 보기는 어려웠다. 구글링을 통해 차이를 찾아보면 좋지않을까 하여 이곳 저곳 뒤져보았고, 같은 관계형 데이터베이스(RDBMS)로서 어떤 차이가 있는 것인지 정리해보려 한다! 👨‍💻 0. 소프트웨어는 버전이 몇 인지가 중요하다. 항상 느끼지만 소프트웨어는 계속 발전하고, 부족한 부분들이 보완 업그레이드되는 방향으로 흘러간다. 그래서 이전에는 단점이었던 부분들이 업그레이드를 통해서 좋아지는 경우가 많다. MySQL의 경우에는 2020년 8.0 버전업을 하면서 이전에는 단점이라 꼽던 많은 부분들이 개선이 되었다. (그만큼 하위 호환이 안 되는게 많다고 한다.) 그 부분들은 고려해서 차이를 찾아볼 필요가 있다. 다른 블로그들의 비교 글들이 이 부분을 ..

Deep Dive Series/Paging

[페이징 톺아보기 3] 두번째 페이징이 잦을때, IN절 페이징

2페이징 스크롤이 잦은 기능의 경우, 써보면 좋을 법한 아이디어가 있어 공유해보려 한다. 보통 스크롤 페이징을 구현해놓더라도 1페이징에 머무는 기능이 대부분이다. 예를 들어, 채팅 메시지 목록을 1페이징으로 조회한다고 했을 때, 메시지를 스크롤로 올려 이전 메시지를 확인하는 경우보다 1페이징에서 머물다 바로 메시지를 보내는 경우가 많다. (아니라고 하더라도 가정해보자) 하지만, 페이스북의 뉴스피드 타임라인의 경우 첫 페이징에 머물기보다는 2페이징, 3페이징 스크롤하여 나아갈 가능성이 많다. 이러한 경우 물론, OFFSET 페이징보다 커서 페이징이 이점이겠지만, 때에 따라 커서 페이징이 불가능한 경우가 있을 수도 있고, 커서가 2개 이상 존재하여 OFFSET 보다 속도가 나지 않는 경우가 있다. 이럴 때,..

Deep Dive Series/Paging

[페이징 톺아보기 2] 두 테이블의 유니온 페이징 (정석이 아니라 선택)

특수한 경우에 페이징을 구현함에 있어 괜찮은 속도 개선을 만들어낸 경험이 있어 정리해보려 한다. 0. 테이블 2개의 페이징 보통 페이징을 시도하는 테이블은 1개가 정석인데, 2개로 요청이 들어왔다면 어떻게 쿼리를 짜야할까? 게시물과 댓글 각각 테이블로 데이터를 관리하고 있는 상태에서 게시물, 댓글 모두 등록시간순으로 정렬해 한꺼번에 리스팅 해주면 좋겠다는 요건이 나왔다. 일단, 강력하게 게시물, 댓글을 탭을 나눠 따로 조회했으면 좋겠다고 주장했으나 먹히지 않았다. 1. UNION 페이징 --UNION PAGING SELECT data, register_time FROM board --게시물 UNION SELECT data, register_time FROM comment --댓글 ORDER BY regi..

날개단
날개단 기술 블로그