Repository Pattern이라는 개념을 처음 접하게 되어서 그 개념을 정리해보고 사용해본 것을 기록으로 남기려고 한다. 1. Repository Pattern이란? 프로그램을 개발하면서 비즈니스 로직을 작성하게 되고, 이 비즈니스 로직은 데이터베이스와 웹 서비스의 데이터 저장소에 접근하는 일이 굉장히 많을 것이다. 여기서 여러 문제들( 중복되는 코드, 로직 에러, 오타 등... )이 발생하게 된다. 이러한 문제들을 해결하는 방법으로 1) 비즈니스 로직에서 데이터 레이어를 분리, 2) 한 곳에서 데이터를 처리해주어 일관성 있는 데이터를 전달해주는 것 이다. Repository Pattern은 이 두 가지를 반영하기 위해 나온 디자인 패턴이다. Repository Pattern은 비즈니스 로직과 데이..
비즈니스 로직이라는 말을 자료를 찾아보면서 어느 정도 많이 접하게 되는 단어인데 생소하게 느껴져서 짚어보고 넘어가 보려고 한다. 비즈니스 로직이란 개발자의 입장에서 사용자가 하나의 기능을 사용할때, 개발자가 구현해야 하는 내부 동작들을 말한다. 예를 들어 쇼핌몰 페이지의 상품 리스트를 보여주는 화면의 프로세스를 따라가 보면 비즈니스 로직은 대략 상품 리스트가 있는 데이터베이스 연결 --> 데이터 베이스의 상품 리스트를 데이터화 하여 불러오기 --> 데이터 베이스 연결 끊기 --> View 영역에 불러온 데이터를 전달 --> 데이터를 사용하여 화면 구현 이 될 수 있을 것 같다. 비즈니스 로직은 쉽게 개발자 코딩하는 과정이라고 보면 될 것 같다고 생각했다. 그래서 유저의 행위를 컴퓨터로 잘 전달하기 위해서..
슬라이딩 윈도( Sliding Window) 알고리즘은 배열 또는 리스트의 부분 범위 내의 값에 대한 비교를 수행할 때 좋은 알고리즘이다. 슬라이딩 윈도우를 사용한 문제 Longest Substring Without Repeating Characters - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 위 문제를 슬라이딩 코드 없이 풀었을 때는 다음과 같은 코드를 사용했고, class Solution: def lengthOfLongestSubstring(self..
레이아웃을 정의하거나 요소들을 정렬해야 할 때가 너무나도 많습니다. 저는 레이아웃을 정의할 때는 flex를 사용하고 요소를 정렬할 때는 float을 많이 씁니다. ( 왜 이렇게 두가지로 나눠지게 됐는지는 저도 잘... ) 그런데 최근 코드 리뷰를 받으면서 float사용을 최대한 지양하는 것이 좋다는 피드백을 받았습니다. float 이 나쁜 코드라기보다 더 좋은 flex와 grid가 있기 때문에 이렇게 말씀하신 게 아닐까 싶습니다. ( 참고 문서 : 링크 ) flex와 grid에 대한 사용경험도 별로 없어서 이번 기회에 익숙해지기 위해 두 가지에 대해서 정리해두려고 합니다! flex flex는 1차원을 수직 또는 수평 중 하나의 방향으로 레이아웃을 나눌 수 있는 속성입니다. display: flex 를 통..
스크롤 이벤트를 다루면서 디바운싱과 쓰로틀링에 대한 개념을 새롭게 알게 되어 정리해두려고 한다. 디바운싱 method가 호출된 이후 일정시간이 지나기 전에 호출되지 않도록 하는 것 디바운싱은 키보드 타이핑을 입력하는 input이벤트의 경우 키 입력이 들어올 때마다 method를 호출하기 때문에 불필요한 method 호출을 줄이기 위해 주로 사용한다고 합니다. 이벤트가 발생할 때마다 일정 시간을 설정하고 그 시간 내에 다시 method 호출이 발생하면 기존의 시간을 리셋합니다. 만약 일정 시간이 지나도 method 호출이 없다면 그때 호출된 method에 대해서 연산을 수행하는 방식입니다. 디바운싱 적용 전 ... ... ... 키보드를 입력할 때마다 console.log가 작동하는 것을 확인할 수 있다...
● 문제 링크 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr ● 문제 설명 문제 설명이 길어서 위 문제 링크로 확인 부탁드립니다! ● 문제 해결 방향 초반에는 이중 배열로 되어있어 행과 열을 서로 바꾸어 주는 방법도 생각했지만 이번 문제의 경우 바꾸어 주지 않아도 충분히 해결 가능해 보였습니다. 크레인이 내려가는 열에 대해서 0이 아닌 숫자를 만날 때까지 반복하고 basket 배열의 마지막 값과 비교하여 적절한 연산을 해주었습니다. ● 문제 해결 코드 def solution(board, moves): answer = 0 basket ..
● 문제 링크 Two Sum - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com ● 문제 설명 Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target. You may assume that each input would have exactly one solution, and you may not use th..
vue를 통해 여러 컴포넌트를 만들면서 점점 아무 생각 없이 computed와 methods를 남발하고 있었고, 점점 어떤 경우에 사용해야 할 지 모호해지고 있음을 느꼈다. 그래서 두 가지를 간단하게 정리해보려고 한다. 1. computed computed는 DOM 구조가 생성되기 전에 computed 내부에 있는 function들을 계산하여 캐싱(저장)해두고, 계산에 사용되는 내부 값이 변경 되면 다시 계산한다. Computed는 위에서 언급한 것과 같이 미리 계산을 실행하여 값을 캐싱 해두기 때문에 이후 동일한 값에 대해서 연산을 할 때 저장된 값을 가져오기만 하면 되므로 속도와 중복 처리 측면에서 큰 장점을 가진다. 그리고 template에서 호출시 ()를 생략하여 호출하고, ()에 들어가는 인자들..
● 문제 링크 코딩테스트 연습 - 피로도 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던 programmers.co.kr ● 문제 설명 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던전 탐험을 마쳤을 때 소모되는 "소모 피로도"가 있습니다. "최소 필요 피로도"는 해당 던전을 탐험하기 위해 가지고 있어야 하는 최소한의 피로도를 나타내며, "소모 피로도"는 던전을 탐험한 후 소모되는 피로도를 나타냅니다. 예를 들어 "..
● 문제 링크 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr ● 문제 설명 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다. 예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24]를 만들 수 있습니다. 이 중 가장 큰 숫자는 94입니다. 문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요. 제한 조건 number는 1자리 이상, 1,000,000자리 이하인 숫자입니다. k는 1 이상 number의 자릿수 미만인..
- Total
- Today
- Yesterday
- Vue
- programmers
- 문제풀이
- bundler
- 상호평가
- webpack
- Vue.js
- TypeScript
- SOAP API
- AxiosInterceptor
- React
- redux-thunk
- Vuex
- v-for
- js
- 백준
- SPA
- python
- React.memo
- 파이썬
- Preloading
- clean code
- Repository Pattern
- 프로그래머스
- reactrouter
- Transpiler
- redux
- error
- GraphQL
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |