목록전체 글 (269)
Coding Planet
아이템2 : 생성자에 매개변수가 많다면 빌더를 고려하라 정적 팩토리와 생성자에는 똑같은 제약이 하나 있다. 선택적 매개변수가 많을 경우 적절히 대응하기가 어렵다는 것이다. 기존에 매개변수가 많을 경우 고려할 수 있는 방안은 다음과 같다. 대안1. 점층적 생성자 패턴 점층적 생성자 패턴(telescoping constructor pattern)이란 객체 생성 시 필요한 조합에 따라 다양한 생성자를 제공하는 것을 의미한다. 필수 매개변수를 받는생성자를 먼저 생성하고 매개변수 1개를 추가로 받는 생성자, 선택 매개 변수 2개를 추가로 받는 생성자 등의 형태로 매개변수 개수만큼 생성자를 늘려가는 방식이다. 이 패턴의 주요한 문제는 선택적 매개변수의 수가 많아질수록 생성자의 수가 기하급수적으로 늘어나게 되며, 클..
아이템1 : 생성자 대신 정적 팩토리 메서드를 고려하라 생성자 대신 반드시 정적 메서드를 사용하라는 의미는 아니다. 때에 따라 정적 팩토리 메서드가 더욱 유용한 경우 사용을 고려하라는 뜻이다. 1. 정적 메서드의 장점 이름을 가질 수 있다. 정적 팩토리의 이름을 통해 반환될 객체의 특성을 쉽게 묘사할 수 있다. 이름을 통해 명시적 선언이 가능해 지는 것이다. 생성자의 시그니처가 중복되는 경우 유용하다. 호출 될 때마다 인스턴스를 새로 생성하지 않아도 된다. 불변 클래스인 경우나 매번 새로운 객체를 만들 필요가 없는 경우에 미리 만들어둔 인스턴스 또는 캐시해둔 인스턴스를 변경할 수 있다. 반환 타입의 하위 타입 객체를 반환할 수 있다. 정적 팩토리 메서드는 생성자와 달리, 호출될 때 반환 타입이 고정되지 ..
[ 정적 컨텐츠 ] 스프링(Spring)에서 정적 컨텐츠(static content)란, 동적으로 생성되지 않고 고정된 파일로서 서버에서 그대로 클라이언트에게 전달되는 웹 리소스를 말합니다. 이러한 정적 컨텐츠는 보통 HTML, CSS, JavaScript, 이미지 파일 등이 있습니다. 정적 컨텐츠는 서버 측에서 따로 처리가 필요하지 않으므로 웹 서버(예: Apache, Nginx)를 통해 직접 제공될 수 있습니다. 스프링 애플리케이션에서 정적 컨텐츠를 사용하는 경우, 스프링은 내장 웹 서버(예: Tomcat, Jetty)를 통해 정적 리소스를 제공할 수도 있습니다. 스프링에서 정적 컨텐츠를 사용하려면, 웹 애플리케이션의 정적 리소스 디렉토리에 해당 파일들을 저장하면 됩니다. 스프링 부트(Spring B..
책 이름 작가/번역가 장르 메모 인생의 역사 신형철 시 주석집 저자가 사랑한 시를 모아 해석을 붙였다. 시를 안 읽은지 오래되어 시 읽는 법을 까먹었다. 상상력에만 기대어 시를 느끼기가 어렵다. 자두 이주혜 소설 친절한 말투에 냉정한 표현력. 술술 읽히는 책이라과 추천 받았다. 우리가 명함이 없지 일을 안했냐 경향신문 에세이 "나쁜 일이 파도처럼 밀려왔지만 도망가지 않았다" 명함만 없ㄱ던 여자들의 진짜 '일' 이야기. 경험에 기대고 싶다. 코스모스 칼 세이건 매번 실패. 이번 해에는 완독하고야 만다.
1. 문제 요구사항 현수는 영희에게 알파벳 대문자로 구성된 비밀편지를 매일 컴퓨터를 이용해 보냅니다. 비밀편지는 현수와 영희가 서로 약속한 암호로 구성되어 있습니다. 비밀편지는 알파벳 한 문자마다 # 또는 *이 일곱 개로 구성되어 있습니다. 만약 현수가 “#*****#”으로 구성된 문자를 보냈다면 영희는 현수와 약속한 규칙대로 다음과 같이 해석합니다. 1. “#*****#”를 일곱자리의 이진수로 바꿉니다. #은 이진수의 1로, *이진수의 0으로 변환합니다. 결과는 “1000001”로 변환됩니다. 2. 바뀐 2진수를 10진수화 합니다. “1000001”을 10진수화 하면 65가 됩니다. 3. 아스키 번호가 65문자로 변환합니다. 즉 아스크번호 65는 대문자 'A'입니다. 참고로 대문자들의 아스키 번호는 '..
1. 구현 코드 이 코드는 페이지네이션을 설정하는 `setupPagination` 함수와 관련 기능을 구현한 코드입니다. 다음은 각 부분의 설명입니다: 1. `setupPagination` 함수: - `rowsPerPage`: 한 페이지에 보여줄 항목 수를 나타내는 변수입니다. - `rows`: 페이지네이션을 적용할 항목들의 배열입니다. - `rowsCount`: 항목의 총 개수를 나타내는 변수입니다. - `pageCount`: 전체 페이지 수를 나타내는 변수입니다. - `numbers`: 페이지 번호를 표시하는 요소(예: 숫자 목록)를 나타내는 변수입니다. - `prevPageBtn`, `nextPageBtn`: 이전 페이지 및 다음 페이지로 이동하는 버튼을 나타내는 변수입니다. - `pageActiv..
쇼핑몰 프로젝트에서 장바구니를 만들 때 JSP를 사용하고 있다. 서버로부터 cartList를가져와서 테이블로 구현하고 있다. 이 때, 배송비는 주문 1번당 부과되므로 배송비 영역이 병합(merge)되도록 하려한다. 1. 테이블 코드 상품정보 수량 주문금액 배송비 ${cart.productName} Option : ${cart.cartOption} ${cart.productPrice}원 - + ${cart.productPrice}원 3,000원 장바구니에 상품이 존재하지 않습니다. JSTL 문을 통해 태그가 반복되며 서버로부터 받아온 정보가 출력된다. 이 때 은 서버에 저장된 정보로 그 수가 동적으로 정해지므로 rowspan을 사용해서 컬럼을 병합할 때 varStatus="status"가 필요하다. row..
최근 상품을 저장하는데는 크게 두 가지 방법이 있다. 서버에 저장하는 방법과 클라이언트, 즉 크롬 등 사용자 환경에 저장하는 방법이다. 서버에 저장하는 방법은 두 가지 의미에서 그 한계가 명확하다. 첫째, 사용자가 페이지를 클릭하는 것을 분석할 만한 마케팅적 가치가 떨어진다. 물론 넓게 보면 사용자가 흥미 있는 상품을 클릭한다는 점에서 의미가 있겠지만 '관심 상품 목록'이라는 더 명확한 마케팅적 가치가 있는 기능보다는 그 효용이 떨어진다. 둘째, 쇼핑몰의 모든 회원이 들어간 모든 페이지의 상품을 서버에 저장하기에는 그 용량이 너무 커서 서버비용이 기하급수적으로 늘어난다. 종합적으로 말하자면 마케팅적 효용이 현저히 적은 '최근 상품 저장하기'를 그 많은 서버비용을 들여가면서 서버에 저장할 필요가 없다는 것..
쇼핑몰은 동일한 템플릿을 반복적으로 사용하는 경우가 많다. 특히 상품을 상품의 색, 가격, 카테고리 등등 여러 조건에 의해 필터링할 때는 출력되는 상품은 다르더라도 그 형식은 대부분 동일하다. 상품의 상세페이지도 세부 정보만 다를 뿐 그 형식은 동일하다. 따라서, 형식을 유지하면서 세부내용을 다르게 하기 위해서는 특정 정보가 필요한데 이러한 정보를 url을 통해 넘겨주는 것이 쿼리 스트링이다. 1. 쿼리스트링이란? 쿼리 스트링(Query String)은 URL의 일부로써 웹 페이지로 전달되는 매개변수를 나타내는 문자열이다. 쿼리 스트링은 `?` 문자로 URL의 경로와 구분되며, `key=value` 형식으로 매개변수를 표현한다. 여러 개의 매개변수는 `&` 문자로 구분된다. 위의 URL에서 `?` 이후의..
[ 도커 이미지 명령어 ] 1. 도커 이미지 검색하기 : docker search tomcat 2. dockert pull -> docker hub에서 다운받기 3. docker images : 다운받은 이미지 보기 4. docker image inspect : id로 세부 정보 보기 id값을 전체 입력하지 않아도 된다. 5. docker rmi mytom : 이미지 삭제하기 6. docker 이미지를 파일로저장하기 : docker save -o d:\\tomcat_image tomcat:9.0 `docker save`: Docker 이미지를 저장하는 명령어입니다. `-o d:\\tomcat_image`: 저장할 파일의 경로와 이름을 지정하는 옵션 `-o`는 출력 파일을 지정하는 옵션(output) 주의..