본문 바로가기

분류 전체보기

Observer Pattern 앞으로 알려진 패턴들은 한번씩 다 찍먹해볼 예정이다.이미 학부생 때 공부해본 패턴들도 있어서 포스팅 날먹하겠다는 뜻. 옵저버 패턴은 한 객체의 상태 변화가 있을 때, 그 객체에 의존하는 다른 객체들(옵저버) 에게 자동으로 알림을 전달하는 행동(Behavioral) 디자인 패턴이다. 흔히 Publish-Subscribe 패턴이라고도 부른다. 모든 패턴들이 그렇 듯, 개발을 어떻게 하냐에 따라 바리에이션이 다양해지지만 주제(Subject)가 변화를 통지하면, 옵저버(Observer)들이 자동으로 반응한다는 개념 자체는 동일하다. 키워드먼저 키워드 먼저 보고 가시겠다.역할설명Subject상태를 관리하고 옵저버들을 등록/제거/통지하는 객체ObserverSubject의 상태변화에 반응하는 객체Concrete.. 더보기
Event Driven Development (EDD) Event Driven Development 는 특정 이벤트(Event)가 발생했을 때 동작이 수행되는 개발 방식이다.주로 비동기 프로세스가 필요한 시스템이나 실시간 데이터 처리가 중점인 시스템에서 적합하다. Kafka 같은 Message Queue를 통해 어렵지 않게 구현할 수 있지만,  여기서는 단순히 Spring + Java + ApplicationEventPublisher 로만 간단하게 구현하였다.(일단 개념만 이해하는 게 목표긴 함ㅋ)위 그림에서 Producer2 없이 Producer1이 Consumer 1,2,3에게 모든 이벤트를 발생시키게 만들 것이다.  1. ApplicationEventPublisher  ApplicationContext의 기능 중 하나이다.Configure 작업을 통해 .. 더보기
프로그래머스 : 프렌즈4블록 https://school.programmers.co.kr/learn/courses/30/lessons/17679 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr2018년도에 카카오 블라인드 채용에 나왔던 문제란다. (본인 군대도 가기 전) 알고리즘 이런거 없이 그냥 하드하게 빡구현 문제 정답까지 정확하게 한시간 걸렸다 주어지는 배열의 길이 자체도 길지 않고 (30개) 배열에서 요소 제거 후 빈 공간으로 이동이 핵심이다. import java.util.*; class Solution { public int solution(int m, int n, String[.. 더보기
프로그래머스 : 덧칠하기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나중에 안 사실인데, 파라미터로 주어지는 n은 전혀 쓸모가 없다. 범위가 만단위가 넘어가면, 그건 완전탐색으로 풀면 안되는 문제다. 아직 나온지 얼마 안된 문제라 그런가 사람들 해가 정말 다양하다. 나같은 경우는 이문제는 반드시 해가 있는 문제이기에, 과감하게 while문을 사용 했다. section을 list로 만들어서 0번 인덱스의 값을 얻고, 거기부터 m까지의 수를 section에서 제거하는 방식으로 했다. import java.util.ArrayList; import java.util.List; cla.. 더보기
프로그래머스 : 달리기 경주 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 달리는 순서를 뒤바꾸는 것은 구현난이도가 낮다. 하지만 여기서 주의해야 할 점은 바로, 제한사항 player의 길이가 5만에 callings의 길이가 100만이다. 5만명이 동시에 뛰는거 보니, 어디 러시아나 미국쯤에서 하는 듯 하다 즉 List나 배열로 접근해서는 안된다. 아마 calling에서 나온 이름을 찾을 때 리스트는 indexOf() 메소드, 배열은 for문을 돌려 찾을탠데, 그렇게 된다면 최악의 상황에는 list를 49999번 탐색해야 찾을 수 있다. 이짓을 100만번을 한다고 생각해보자. 자 그.. 더보기
프로그래머스 : 공원산책 https://school.programmers.co.kr/learn/courses/30/lessons/172928 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 게임프로그래머를 희망하는 친구들에게 추천한다. 이것 역시 유형만 안다면 어렵지는 않다. 첫 위치(S)만 따주고 그 좌표를 바탕으로 이동하면 된다. 여기서 난이도를 결정한 조건이 나오는데, 벽을 만나거나, 장애물을 만나면 이동 전 위치로 돌아가는 것이다. 해당위치에 정지하는 것이였으면 대략 2레벨쯤 됬을 것 같다. class Solution { public int[] solution(String[.. 더보기
앨범단가계산기 때는 바야흐로 내가 3학년을 끝내고 겨울방학 중,중소기업중앙회(KBIZ) 소속 모 조합 에서 2022년 1월 경 의뢰를 받았다. 기존에는 엑셀 함수로 앨범의 제작 단가를 뽑아 금액을 청구하였는데,이것을 애플리케이션으로 제작해 달라는 요구였다.당시 Xcode를 이용하여 앱을 제작하는 공부를 하고 있던 나는, 라는 표정으로 기대에 들떠 있었다.하지만 요구받은 것은 only 안드로이드 그래도 안드로이드라도 배운것을 이용하여 돈을 벌 수 있다는 것이 어디인가!하며 기존에 사용하던 엑셀을 받았는데, 이런 젠장, 뭔소린지 하나도 알아먹지를 못하겠는 거다. 그래도 어영부영이런 셀들의 내용을 뒤져가며 만들긴 했었다.디자인도 주어진 템플릿 없이, 내가 꼴리는대로 만들어도 된다 했기에,, 그냥 기본 UI들로.. 더보기
Lombok을 알아보자 나 같은 경우는, 광화문에서 인턴할 때 처음 들었었다. 그곳에서는 @Getter, @Setter밖에 쓰지 않아 그냥 딱 저정도만 해주는 알았는데, 알고보니 뭐를 되게 많이 해준다. org.projectlombok lombok 버전명 provided Maven 프로젝트에는 해당 의존성을 추가하면 된다. dependencies{ ..... implementation 'org.projectlombok:lombok' } Gradle에서는 위와 같이 의존성을 추가하면 된다. 까는법은 알았으니, 뭐하는놈인지 거두절미하고 바로 알아보자 렛츠고 1. Getter, Setter 처음 스프링을 배우고 DTO 클래스를 만들 때, 그냥 getter setter는 몽땅 때려박았다. public class UserVO { pri.. 더보기