반응형 분류 전체보기16 서블릿(Servlet)? 노드 생태계에서는 이런 게 뭐가 있어? 스프링 MVC를 공부하고 있는 도중 서블릿이라는 개념이 튀어나왔다. 노드 진영에서만 경력을 쌓고 있던 나에게는 생소한 단어다. 서블릿(Servlet)은 자바 언어를 기반으로 하는 웹 애플리케이션 개발을 위한 기술입니다. 서블릿은 동적인 웹 페이지를 생성하고, 클라이언트와 서버 간의 통신을 처리하는 데 사용됩니다. 서블릿은 자바 언어로 작성되며, 웹 서버에서 실행되어 웹 애플리케이션 서비스를 제공합니다. 서블릿(Servlet) 서블릿은 주로 HTTP 프로토콜을 기반으로 하며 웹 브라우저에서 요청이 들어올 때마다 서블릿이 동적으로 응답을 생성하여 반환한다고 한다. 코드 예시는 다음과 같다. @WebServlet(name = "helloServlet", urlPatterns = "/hello") public .. 2024. 1. 18. MongoDB의 컬렉션에서 복합적인 필드를 검색 및 정렬할 때 싱글 인덱스가사용되나? 코드 리뷰를 하면서 다음과 같은 코드를 봤다. @index({ a: -1 }) @index({ b: 1 }) @index({ c: 1 }) @modelOptions({ schemaOptions: { collection: "tests", versionKey: false } }) class Test { ... 위의 예시는 typegoose로 몽고디비의 컬렉션을 정의하기 위한 모델을 작성하는 코드다. 코드를 보면 @index 라는 데코레이터를 사용해서 스키마에 인덱스를 부여한다. mongoose로 치자면 다음과 같다. schema.index({ a: -1 }) schema.index({ b: 1 }) schema.index({ c: 1 }) 즉 a라는 필드는 내림차순의 인덱스가 생성, b와 c는 오름차순의 인.. 2024. 1. 3. 리팩터링 2판 도서 메모 | 기본적인 리팩터링 함수 추출하기 function printOwing(invoice) { printBanner (); let outstanding = calculateOutstanding(); // 세부 사항 출력 console.log('고객명: stinvoice.customery'); console.log('채무액: $foutstanding)'); } ↓ function printOwing(invoice) { printBanner (); let outstanding = calculateOutstanding(); fuction printDataDetails(outstanding) { console.log('고객명: stinvoice.customery'); console.log('채무액: $foutstanding)'); } .. 2023. 12. 4. 리팩터링 2판 도서 메모 | 테스트 구축하기 리팩터링을 제대로 하려면 불가피하게 저지르는 실수를 잡아주는 견고한 테스트 스위트(test suite)가 뒷받침되어야 한다. 자가 테스트 코드의 가치 모든 테스트를 완전히 자동화하고 그 결과까지 스스로 검사하게 만들자! 자가 테스트 코드 자체뿐 아니라 테스트를 자주 수행하는 습관도 버그를 찾는 강력한 도구가 된다. 테스트 스위트는 강력한 버그 검출 도구로, 버그를 찾는 데 걸리는 시간을 대폭 줄여준다. 테스트를 작성하기 가장 좋은 시점은 프로그래밍을 시작하기 전이다. 기능을 추가해야 할 때 테스트부터 작성한다. 테스트를 작성하다 보면 원하는 기능을 추가하기 위해 무엇이 필요한지 고민하게 된다. 구현보다 인터페이스에 집중하게 된다는 장점도 있다. 코딩이 완료되는 시점을 정확하게 판단할 수 있다. 테스트를 .. 2023. 12. 4. 리팩터링 2판 도서 메모 | 코드에서 나는 악취 기이한 이름 코드를 명료하게 표현하는 데 가장 중요한 요소 하나는 바로 이름이다. 굳이 이름 수정 등이 그럴 가치가 없다는 생각을 하는 사람도 많은데, 이름만 잘 지어도 나중에 문맥을 파악하느라 헤매는 시간을 크게 절약할 수 있다. 이름바꾸기는 단순히 이름을 다르게 표현하는 연습이 아니다. 마땅한 이름이 떠오르지 않는다면 설계에 더 근본적인 문제가 숨어 있을 가능성이 높다. 중복 코드 코드가 중복되면 각각을 볼 때마다 서로 차이점은 없는지 주의 깊게 살펴봐야 하는 부담이 생긴다. 긴 함수 함수 이름을 잘 지어두면 본문 코드를 볼 이유가 사라진다. 그러기 위해서는 훨씬 적극적으로 함수를 쪼개야 한다. 함수 이름은 동작 방삭이 아닌 의도가 드러나게 짓는다. 여기서 핵심은 함수의 길이가 아닌, 함수의 목적과 .. 2023. 12. 4. 리팩터링 2판 도서 메모 | 리팩터링 원칙 리팩터링 정의 리팩터링: 소프트웨어의 겉보기 동작은 그대로 유지한 채, 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경하는 기법 리팩터링(하다): 소프트웨어의 겉보기 동작은 그대로 유지한 채, 여러가지 리팩터링 기법을 적용해서 소프트웨어를 재구성하다. 리팩터링은 결국 동작은 보존하는 작은 단계들을 거쳐 코드를 수정하고, 이러한 단계들을 순차적으로 연결하여 큰 변화를 만들어내는 일 따라서 리팩터링하는 동안에는 코드가 항상 정상 작동하기 때문에 전체 작업이 끝나지 않았더라도 언제든 멈출 수 있다. 누군가 "리팩터링하다가 코드가 깨져서 며칠이나 고생했다"라고 한다면, 십중팔구 리팩터링한 것이 아니다. 한 번에 바꿀 수 있는 작업을 수많은 단계로 잘게 나눠서 작업하는 것이 비효율적일 것 같지만, 이렇게 잘게 .. 2023. 12. 4. 이전 1 2 3 다음 반응형