TIL
-
20221124 TIL jest에서 모킹을 하는 다양한 방법TIL 2022. 11. 24. 11:18
테스트에는 여러 계층이 있다. 각각의 테스트는 목적이 구분되어 있고, 따라서 그 목적에 맞게 테스트를 작성해주는 게 중요하다. Unit test는 가장 빠르게 자주 돌려볼 수 있는 테스트로, 각각의 Unit이 정상적으로 작동하는지를 중점적으로 확인한다. 이 때 각각이 잘 돌아가는지 확인하는 것이기 때문에 다른 Unit에 의해 영향을 받아서 테스트가 깨지는 경우가 있다면 이는 해당 Unit만 제대로 테스트하고 있다고 보기 어렵다. 따라서 Unit테스트는 여러 외부 요인의 영향을 배제하기 위해 모킹을 이용해서 외부 요인들이 정상적으로 작동하는 것처럼 세팅을 해준다. 즉, Unit테스트는 나머지가 다 정상적일 때 해당 Unit도 의도대로 잘 동작하는지 확인하는 테스트이다. 통합 테스트는 영향을 줄 수 있는 U..
-
20221123 TIL SQL을 배우다TIL 2022. 11. 23. 09:47
DB를 사용해본 적은 있지만 JPA를 썼기 때문에 SQL을 직접적으로 써보지는 않았었다. 그런데 백도어 API에서 직접 jdbc로 디비를 조작하게 되면서 SQL문법을 익힐 필요성이 생겨서 SQL을 익히고 있다. SQL은 CSS처럼 선언형 언어에 해당해서 어떻게 무엇을 할 지 정해주는 것이 아니라 '무엇을 했으면 좋겠다'를 작성해주면 실행된다. 데이터를 조작하는 일이 많기 때문에 데이터 조작에 관한 명령어들을 알아보자. 1. INSERT INTO (, , ...) VALUES (, ,...); 를 이용하면 테이블에 레코드(데이터)를 추가할 수 있다. 만약 모든 컬럼에 대한 데이터를 입력하는 경우(, , ...) 부분을 제외할 수 있는데, 이 때 (, ,...)에 테이블 컬럼과 동일한 순서로 데이터를 넣어야..
-
20221122 TIL 쓰던 기능이 deprecated 되었을 때 어떻게 할 것인가TIL 2022. 11. 22. 12:21
몇 주 전 강의에서 강의를 찍을 때는 돌아가던 기능이었지만, 불과 몇 주 사이에 기능이 deprecated 되어 강의대로 진행할 수 없던 부분이 있었다. 그때는 가이드가 주어졌었지만, 내가 프로젝트를 하다가, 혹은 업무를 하다가 기존 기능이 deprecated 되어 수정을 해야 되거나 다른 기능을 사용해야 되는 상황을 만날 때는 내가 해결을 해야 된다. 마지막 강의에서 아샬 님께서 기능이 deprecated 된 것을 확인하고 해결해나가는 방식을 보면서 가이드가 없는 상황에서 어떤 기능이 deprecated 되었을 때 어떻게 하면 될지 고민을 해보았다. 기존 기능을 타이핑했을 때 deprecated 되었다면 인텔리제이는 아래 사진처럼 취소선이 그어진다. 취소선을 보면, 'cmd 클릭'을 하거나 'cmd 아..
-
20221121 TIL e2e 테스트 도구 장단점 비교하기TIL 2022. 11. 21. 10:28
기존에 Cypress와 Playwright을 사용했던 경험이 있었고, 이번 강의에서는 CodeceptJS를 사용해서 e2e테스트를 작성했기 때문에 각각의 장단점을 비교해보면 좋겠다는 생각이 들었다. 먼저, e2e테스트는 서비스가 사용자 시나리오대로 잘 작동되는지 확인하기 위한 테스트이다. 유닛 테스트는 각각의 부분이 제대로 동작하는지 체크하는 것에 중점을 둔다면, e2e테스트는 그 모든 것이 다 어우러진 실제 서비스가 사용자가 시나리오대로 문제없이 잘 돌아가는지 확인하게 된다. 유닛테스트가 통과한 것만으로 안심하면 아래와 같은 일이 발생할 수 있다. e2e테스트를 작성해두게 되면 매번 수동으로 코드를 수정할 때마다 다시 확인해 볼 필요없이 e2e테스트를 돌려서 수동으로 돌리는 것보다 훨씬 빠르게 확인해볼..
-
20221120 TIL 웹 서비스가 만들어지기까지의 A to Z (+ 애자일스럽게?!)TIL 2022. 11. 20. 22:24
수많은 웹서비스가 만들어져 있고, 지금도 만들어지고 있다. 웹 서비스는 어떤 과정을 거쳐 만들어질까? 전반적인 웹 서비스 개발 과정을 들여다보자. 웹 서비스를 만드려는 목적에 부합하는 요구사항들이 있을텐데 그 요구사항들을 바탕으로 사용자 스토리를 작성한다. 이 때 사용자 스토리는 As-I-So 형식에 따라 어떤 role에게 해당 기능이 어떤 가치를 줄 수 있는지를 중심으로 작성한다. 이 때 가치는 '고객 재방문율을 높일 수 있다' 등의 비즈니스적인 가치일 수도 있다. 전체적인 설계를 한다. 거시적으로 어떻게 구성할지(프론트, 백엔드, 디비 혹은 프론트, BFF, 백엔드, 디비 등 다양한 구조가 있을 수 있다.)를 결정하고, 각 부분에 적용할 기술(예를 들어 프론트는 리액트, 백엔드는 스프링 부트 디비는 ..
-
20221119 TIL 함께하는 것의 힘TIL 2022. 11. 19. 21:51
날씨가 추워지기도 하고 쉬는 날 없이 공부를 하다보니 조금씩 컨디션이 저하되었었다. 그래서 피로감도 꽤 쌓여있었어서 최대한 늦잠을 자고 일어 났는데, 14시간이나 되는 강의를 2일 내에 소화할 수 있을까 걱정도 되고, 진도가 잘 나가지 않고 있었다. 그리고 이번 주는 항상 제공되던 키워드가 제공되지 않고 스스로 강의에서 내가 모르는 부분을 찾아 키워드를 추출해야 하는데, 강의를 듣다가 어제 짝꿍님께서 공유 문서를 만들어서 같이 키워드를 쌓아보면 어떻겠냐는 말씀을 해주셨던 게 생각나서 구글 독스로 문서를 만들어서 공유를 했다! 이때까지는 누군가 만들어준 공유 문서에 작성을 하기만 했었지 스스로 만들어본 것은 처음이라 읽기 권한만 있는 채로 공유를 하는 실수를 했지만, 또 다른 짝꿍님께서 빠르게 편집 권한을..
-
20221118 TIL 직접 겪어봐야 안다TIL 2022. 11. 18. 18:32
몇 주 전에 객체 지향과 디자인 패턴에 관한 책을 읽었었다. 이번 주에 코딩을 하다가 설계적 고민이 생겼었는데, 읽었던 책과 공부한 개념이 있는데도, 어떻게 설계를 해야할지 전혀 감이 잡히지 않았다. 오브젝트 책을 읽기 시작했을 때 홀맨님께서 객체지향은 직접 적용하는 것과 책을 이해하는 것과 또다른 문제라고 하셨던 것이 떠올랐다. 객체 지향은 정말로 코드로 익히지 않으면 아무리 개념을 알고 있어도 속이 빈 강정처럼 적용할 수 없는 것 같다. 이번 주의 가장 큰 고민은 세 가지 상태에 따른 각각의 스케쥴을 반환하는 객체를 어떻게 설계할지였다. 업무 일정, 공유 일정, 휴식 일정이 각각의 duration을 가지고 있다. 이 때 각각의 duration이 바뀔 수 있어서 각각을 Schedule객체로 만들려고 했..
-
20221117 TIL 항상 코드를 더 낫게 만들 방법이 있다TIL 2022. 11. 17. 21:18
오늘은 나름 간단한 코딩 문제를 풀어보았다. 어제 풀었던 문제라 금방 풀었다. 시간이 조금 남아서 리팩토링을 해보려 했는데, 유클리드 호제법을 사용하지 않았을 때보다 코드가 이미 많이 간단해졌기 때문에 더 이상 어떻게 더 낫게 만들 수 있을지 감이 잡히지 않았다. function greatestCommonDivisor(x, y) { if (x === y) { return x; } if (x > y) { if (x % y === 0) { // 1️⃣ return y; } return greatestCommonDivisor(y, x % y); // 2️⃣ } return greatestCommonDivisor(y, x); } 그런데 홀맨님께서 너무나 깔끔한 풀이법을 올려주셨다. function gcd(a, ..