본문 바로가기
반응형

분류 전체보기153

어댑터 패턴(Adapter pattern) 간단 정리 내가 이해한 어댑터 패턴 간단 정리 (tl;dr) 사용하고자 하는 모듈과 실제 모듈 간의 호환이 되지 않을 때 사용하는 디자인 패턴 중 하나이다. 어댑터 클래스를 구현해 기존 모듈을 상속, 혹은 주입받아 기존 모듈의 동작 & 호환되어야 하는 동작을 adapt 시킨다. 아래는 내가 다른 정리글들을 보면서 나눈 구분들 상황에 따른 구분 먼저 가정이 필요하다. [사용해야 하는 모듈은 내가 개발하는 곳 이외에도 사용처가 많아 수정이 불가능 하다!!] 기존 모듈 존재 but 모듈 수정 불가 so, 새로운 로직이 필요할 때 기존 모듈 존재 x (아직 미완성) but 모듈 수정 불가 so, 새로운 로직이 필요할 때 *여기서 새로운 로직이란? 확장이 필요 (할 수도) 할 때-> new 함수 생성 기존 모듈의 기능이 전.. 2023. 3. 10.
프록시 패턴(Proxy pattern) 간단 정리 프록시 패턴 (내가 이해한) 실제 클래스를 대체하는 대리자 클래스를 구성 실제 클래스를 변경하지 않고도, 클래스의 동작 수행 이전 혹은 이후에 무언가를 실행 가능 고로 동작은 똑같이 한다는 걸 보장, 허나 동작의 흐름?을 제어 실제 동작 객체가 수행하기전 까진 초기화 x, 동작시 초기화 수행 가능 (ex. 지연된 초기화) 무거운 객체를 항상 초기화 하는게 아니라 가벼운 프록시 객체만 로딩 추후 실제 동작 필요시 그때서야, 무거운 객체를 로딩 실제 동작 객체의 동작전 대리자 객체만의 동작을 추가 수행 (ex. 로그 남기기) 실제 동작 객체는 변경하지 않고, 프록시의 객체 동작전, 후 로그 생성 및 변경 가능 실제 동작 객체의 동작 후, 결과를 보관 및 사용자의 재요청시 보관된 결과를 반환 (ex. 캐시) .. 2023. 3. 9.
전략 패턴(strategy pattern) 간단 정리 유튜브로 출퇴근하면서 간간히 개발 관련 얘기들을 듣고는 하는데 언젠가 봐야지 했던 디자인패턴 강의가 알고리즘에 떠서 (강의하시는 분 말로는 디자인 패턴의 꽃이라 더라…) 코드 한번 쳐보고~ 정리하고자 글을 적습니다. 제목에 써있듯이 간단 정리이기에 자세한 패턴 이야기들은 참고 링크의 글을 읽어주길 바랍니다~ 내가 이해한 전략 패턴 (strategy pattern) 특정 객체의 행위의 변경이 잦을때, 해당 클래스의 행위 함수 구현부를 바꾸는 게 아니라 “행위 클래스”를 구현해서 주입! 어떤 행위인지, 행위 상세 내용에 대해서는 주체 클래스는 알지 못함 (ex. Thread.run(), Sort(New Comparator { … }) ) 행위의 변경이 필요 시 해당 행위 클래스를 찾아가 행위만 수정 행위의 .. 2023. 3. 7.
@ResponseStatus 204 No Content tl;dr SpringBoot controller에서 결과값을 반환하지 않을 때는 @ResponseStatus(value = HttpStatus.NO_CONTENT)를 함수 위에 추가해준다. -> status 204 반환 https://stackoverflow.com/questions/32396884/return-http-204-on-null-with-spring-restcontroller Return HTTP 204 on null with spring @RestController This returns 200 OK with Content-Length: 0 @RestController public class RepoController { @RequestMapping(value = "/document/{i.. 2023. 3. 1.
.has is not a function 오늘의 error log 받아온 json은 js 내 에서 .has() 로 항목 조회 시 에러 발생 .has is not a function… 왜냐면... has는 set 객체 함수이니까!! 없지!! 나는 .hasOwnProperty(항목명) 함수로 해결~ ref) https://stackoverflow.com/questions/20804163/check-if-a-key-exists-inside-a-json-object Check if a key exists inside a JSON object amt: "10.00" email: "sam@gmail.com" merchant_id: "sam" mobileNo: "9874563210" orderID: "123456" passkey: "1234" The abo.. 2023. 2. 27.
매번 찾기 귀찮은 LocalDate 적어놓기 LocalDate 비교 date1.compare(date2) //return type int date1 이 date2 보다 과거면 음수 date1 == date2 이면 0 date1 이 date2 보다 미래면 양수 LocalDate -> String("yyyy-MM-dd" 형식) LocalDate localDate = LocalDate.now();//For reference DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String formattedString = localDate.format(formatter); // 2023-02-24 위 두개를 응용해 날짜(String) 리스트를 만든다면 LocalDate start.. 2023. 2. 24.
binarySearch를 정렬된 리스트에 insert를 위해서만 사용한 나 조금 무례할지도 [leetcode] 알고리즘 문제를 풀다 보면 정렬된 배열에서 특정 숫자가 들어갈 자리 찾는 문제를 자주 만나게 된다. 그런 문제들 만날 때마다 ‘아 또 binary search 쓰라는 말이구나’ 하고 기계적으로 코드를 치는데 오늘 만난 문제는 좀 달랐다. 풀이도 신박했어서 그거에 대해서 써보려고 한다. 그냥 배열 순회하면서 하나씩 비교하면 금방 찾겠네~ 아 껌이네~ 근데 medium?? 특이한 요구사항이 하나가 있다. Your solution must run in O(log n) time and O(1) space. 문제가 단순해 보여서 그런지 머릿속으로는 ‘그냥 순회하면서 하나씩 비교하면 바로 나오지 않나?’ 밖에 생각나지 않았다. 그렇지만 그럼 O(n) 이기 때문에… class Solution: def singleNo.. 2023. 2. 22.
antMatcher? 가 머지 보통 남들이 만들어 놓은 것 중에 자주 쓰이는 것들은 이름부터 잘 지어놔서 함수나 클래스명을 보면 딱 알 수 있는데 그게 아닌 놈을 만났다. antMatcher… 이게 뭔지 궁금해져서 찾아본 결과를 적어놓는다. (대충… 대충…) tl;dr 사용자 요청에 대해 인증, 인가 설정 시 해당 설정에 대한 검사를 수행할 url 경로(regex)를 적는 부분 .antMatchers("/status","/resources/**","/join","/auth/**","/error").permitAll() .antMatchers("/admin**").hasAnyAuthority("ADMIN") ant 인 이유는 Apache Ant project에서 따왔다고 한다. url 매칭 시 Ant Pattern을 이용하기 때문. 아.. 2023. 2. 21.
심심해서 해본 글자 돌리기 저번에 친구랑 얘기하다 나온 요즘 핫한 사건 https://news.mt.co.kr/mtview.php?no=2023021023543967230 죽은 아내가 낳은 불륜남 아기…"출생신고라도" 남편 설득하는 市 - 머니투데이 숨진 아내와 다른 남자 사이에서 태어난 아이를 산부인과에 남겨둔 법적 친부에게 청주시가 "출생신고라도 하라"고 설득하고 있는 것으로 전해졌다. 10... news.mt.co.kr 여기 등장하는 “친생자관계부존재확인”라는 단어가 있다. 중요한 건 단어의 의미가 아니고 마침 열 글자였다는 데 있다. 마침 심심했던 찰나에 이걸보고 쓸데없는 호기심이 발동… 4 글자씩 끊어서 쳐보니 아래와 같이 나온다. 그렇게 친 글자를 세로로 연결해 새로운 글자로 만들면 전혀 다른 글자가 나오고… 그럼 이걸.. 2023. 2. 20.
반응형