전체 글
Deque를 직접 구현해보기
큐는 삽입과 삭제가 리스트의 한쪽 방향에서만 이루어지지만 deque는 리스트의 양쪽 끝 모두에서 이루어질 수 있다. 따라서 양쪽 방향 모두 삽입과 삭제가 이루어질 수 있으므로 기존의 큐나 스택으로 사용할 수 있어 유연하게 사용할 수 있다. 사진출처 : https://dh00023.github.io/algorithm/ds/2018/04/25/algorithm-10/ 이런 Deque를 직접 구현해 보자. 우선 Deque의 기능을 정리한 인터페이스이다.1234567891011121314151617181920212223package practice3; public interface Deque { public void addFirst(T item); public void addLast(T item); public..
규칙 63 - 어떤 오류인지를 드러내는 정보를 상세한 메시지에 담으라.
개발을 진행하다보면 예기치 못한 상황에서 에러가 자주 발생한다. 에러가 발생하는 것을 다 알고 차단할수있다면 정말 바람직한 프로그램이라고 할 수있을 것이다.하지만 그럴수가 없기때문에 에러를 관리하고 효율적으로 에러정보를 전달하는것이 중요하다. 정확한 에러정보를 전달하는것이 빠르게 문제를 해결하는 실마리가 될것이다.그래서 에러가 발생되었을 때 오류의 상세 메시지에 예외에 관련된 모든 인자와 필드값을 포함시켜야 한다. 예를 들어, IndexOutOfBounds Exception의 경우 해당 범위를 벗어난 인자값과 하한과 상한값도 포함되어있어야 한다. 그러면 정확히 어떻게 오류가 발생된 것인지 알기가 쉬워진다. 하지만 관련된 데이터를 담는 것이 중요하지만 잘못사용하면 별로 도움이 되지 않을 수 있다.그리고 이..
규칙 62 - 메서드에서 던져지는 모든 예외에 대해 문서를 남겨라.
메서드를 올바르게 사용하려면 메서드에서 던져지는 예외에 대한 설명이 문서에 있어야 한다. 그리고 메서드가 던질수있는 모든 무점검 예외까지 선언할 필요는 없지만 점검지점 예외들과 마찬가지로주의해서 문서로 남겨놓으면 좋다. 특히 Javadoc @throws 태그를 사용해서 메서드에서 발생 가능한 모든 무점검 예외에 대한 문서를 남겨야 한다. 하지만 메서드 선언부의 throws 뒤에 무점검 예외를 나열하지는 말아야 한다. 요약하자면 메서드가 던질 가능성이 있는 모든 예외를 문서로 남겨라. 점검지점 예외, 무점검 예외도 남겨라. 이를 지키지 않으면 해당 API를 사용하는 다른사람들이 효과적으로 사용하는게 어려워진다. 출처 : 조슈아 블로크, 『 Effective Java 2/E』, 이병준 옮김, 인사이트(201..
규칙 61 - 추상화 수준에 맞는 예외를 던져라
메서드가 하는 일과 관련성이 없는 예외가 메서드에서 발생하면 디버깅하기 어렵거나 관리하기 어려울 수 있다. 이는 추상화 수준이 낮은 곳에서 발생한 예외를 그대로 밖으로 전달하면 이런일이 발생한다. 이런 문제를 해결하기 위해서 상위계층에서는 하위계층에서 발생하는 예외를 반드시 받아서 상위 계층 추상화 수준에 맞는 예외로 바꿔서 던져야한다. 이를 예외 변환(exception translation)이라고 한다. 예를 들어 몇가지 사례를 살펴보자. 우선 AbstractSequentialList 클래스를 살펴보자. 이 클래스의 get 메서드의 명세를 보면 예외가 발생되었을 때 예외 변환을 해서 보내달라는 것을 확인할 수 있다. 12345678910111213141516 /** * Returns the elemen..
무라카미 하루키의 기사단장 죽이기1 구독 후기
기사단장 죽이기 1국내도서저자 : 무라카미 하루키(Haruki Murakami) / 홍은주역출판 : 문학동네 2017.07.12상세보기 1Q84 그리고 상실의 시대(노르웨이숲) 책을 만든 무라카미 하루키의 신작 기사단장 죽이기를 같이 회사 기숙사에서 살고 있는 친구의 추천으로 읽게되었다. 무라카미 하루키의 책 답게 책 구성이 재미있어서 구독한지 3주정도에 다 읽고 이번에는 내가 2권을 구매하였다. [줄거리] 주인공은 초상화를 그리는 화가이다. 평범하게 초상화를 그려주면서 돈을 벌던 주인공에게 어느날 갑작스럽게 아내에게 이혼통보를 받았다. 충격을 받아서 무작정 차를 가지고 여행을 떠났다. 어느날 술집에서 어느 한 여인을 만나 밤을 같이 보냈다. 그 때 여인과 같이 있던 술집에서 한 남자가 있었는데 그 남자..
Maven 다운로드 및 환경변수(Path) 등록방법
Spring boot cli에서 maven관련 명령어를 사용을 위해서는 Maven이 환경변수 되어있어야 한다. Maven을 윈도우에서 환경변수로 설정하는 방법을 알아보자. 1. 다운로드 경로 : https://www.apache.org/dyn/closer.cgi 아파치 메이븐의 다운로드 페이지가 변경되어서 조금 헷갈린다. 잘모르겠으면 여기서 받으면 된다. http://mirror.navercorp.com/apache/maven/maven-3/3.5.3/ 2. 환경변수 등록 1) 먼저 시스템 변수에서 MAVEN_HOME을 설정해준다. (이미지 참고) 2) Path에서 편집을 눌러 다음과 같이 설정한다. %MAVEN_HOME%\bin 만약 이렇게 설정하여도 정상동작 하지 않으면 다음과정을 확인한다. 1) S..
2018 챌린지 레이스 마라톤 참가 후기
작년 스파르탄 레이스를 이어서 친구와 함께 마라톤에 참여하기 위해 챌린지 마라톤을 접수하였었다. 아쉽게도 친구는 다른 일정이 생겨서 오지 못해서 여자친구와 함께 마라톤 대회가 열리는 월드컵 경기장으로 이동하였다. 월드컵 경기장이 집에서 너무 멀어서 7시 50분에 출발하였는데도 9시 반쯤 도착했다. 잘못하면 늦을 뻔 했다. MC 두 명이 마라톤 진행을 하고 있었고, 그 둘은 개그맨 오나미와 황현희였다. 오자마자 몸 풀 시간도 없이 출발선 앞에 서게 되었는데, 엄청나게 긴장되었다. 풀 코스, 32km, 하프 순으로 먼저 출발하였고, 10KM도 제일 마지막에 출발하였다. 10KM가 사람이 제일 많았다. 출발선 앞에서 장문복, 유승옥, 정가은, 한영 등등의 연예인들이 응원을 해주었다. 응원을 받아서 드디어..
리복 스파르탄 레이스 소개 및 참가 후기
2017년 여름에 킥복싱 운동 배운 것을 한번 효과를 보고 싶어서 체육관에서 단체로 참가하였다. 힘든 대회라고 소문이 나서 참가가 두려웠지만 20명 정도 다같이 참여하니 군중심리(?)로 조금 안심하고 참여했던 것 같다. [대회 장소 및 일정, 가격] 대회 장소는 인천공항의 파라디이스 호텔 앞에서 진행되었고, 참가 가격은 75000원 정도였다. 해외 결제이기 때문에 외국 결제가 가능한 카드가 있어야 한다. 난이도에 따라 가격이 다른데 나의 경우에는 스프린터여서 75000원 이였지만 [등록] 인터넷을 통해 사전 등록을 진행 한 후 당일날 방문하여 신분증을 보여주면 번호표와 손목 기록표를 준다. 당일날 가면 주최측인 리복 제품을 싸게 살 수 있는 부스가 있기 때문에 여웃돈을 가지고 가는 것도 좋은 것 같다. ..
홍대 떡볶이 맛집 또보겠지 후기
날이 좋아서 떡볶이가 생각나서 홍대로 왔다. 분기당 한번씩 오는것 같다. 달짝지근한 떡볶이와 버터맛이 풍부한 감자가 조합이 좋은것 같다 주말은 아니지만 연휴라서 사람이 엄청 많아서 5섯팀을 기다렸다. 20분정도는 기다린거 같다 이게 다른 옵션 없는 떡볶이 이인분이다 ㅋㅋ 양이 많다 그리고 항상 같이 시키는 버터 갈릭 감자!! 마요네즈가 범벅이라 느끼할거같지만 고소하다
디지털 피아노 야마하 PSR-E263 개봉기
올해 직장 생활을 시작한 지 3 년 차가 되면서 마음도 돈도 어느 정도 여유가 생겨서 예전부터 하고 싶었던 취미를 시작하려고 마음먹었다. 그 첫 번째 취미가 피아노 연주다. 작은 집으로 이사를 오게 되면서 집에 있던 피아노를 버렸었다. 그래서 큰 맘먹고 YAMAHA 디지털 피아노 PSR-F50을 주문하였다. 그런데 워낙 보급형 모델이기 때문인지, 단종 되었다는 연락을 받았다. 그래서 추가 금액을 지불하여 한 단계 상위 버전인 PSR-E263으로 주문을 변경하였다. 이 모델은 피아노 페달을 추가로 장착할 수 있는 모델이라고 한다. (미래를 위해서는 더욱 현명한 선택이었을지도?..) 배송 받은 박스는 생각보다 컸다. 구성품은 피아노, 어댑터, 악보 받침대 총 3개였다. (3개만 들어있는데 박스가 이렇게 ..