전체 글

개발, 일상 등 나에 대한 모든 것을 기록합니다.
Language/Python

파이썬 정규표현식

''' Regular Expression . : 문자 1개 ^ : 문자열이 시작 $ : 문자열의 마지막 [] : 문자 집합 | : or () : 괄호안의 정규식 그룹 * : 0 or more + : 1 or more ? : 0 or 1 {n} : n번 반복 {n,m} n번부터 m번 {n, } n번부터 무한대 ''' """ 문자열 표기법 (re모듈 확장 문법) \w : [a-zA-Z0-9_] -> a~Z,0~9,*포함하는 모든 문자 \W : [^a-zA-z0-9*]-> 위의 문자 제외한 나머지 문자 \D : [0-9] -> 0-9까지 모든 숫자 \s : [\t\n\r\f\v] -> 공백 문자 \S : [^\t\n\r\f\v] -> 공백을 제외한 모든 문자 \b : 단어의 시작과 끝의 빈 공백 \B : 단어..

프로그래밍/객체지향 설계

[오브젝트] 10장. 상속과 코드 재사용

1. 상속과 코드 중복 중복 코드는 두 코드가 중복이긴 한지 비교하는것부터 시간을 낭비하게 만들고 동료들을 의심하게 만든다. 그 외에도 중복 코드를 제거해야 할 결정적인 이유는 따로 있다. DRY 원칙 중복 코드가 가지는 가장 큰 문제는 코드를 수정하는 데 필요한 노력을 몇 배로 증가시킨다는 것이다. 중복 여부를 판단하는 기준은 변경이다. 요구사향이 변경됐을 때 두 코드를 한번에 수정해야 한다면 이 코드는 중복이다. 중복 여부를 결정하는 기준은 코드의 모양이 아닌, 코드가 변경에 반응하는 방식이다. DRY는 '반복하지 마라'라는 뜻의 Don't Repeat Yourself의 첫 글자를 모아 만든 용어로 간단히 말해 동일한 지식을 중복하지 말라는 것이다. DRY 원칙 : 모든 지식은 시스템 내에서 단일하고..

프로그래밍/객체지향 설계

[오브젝트] 5장. 책임 할당하기

1. 책임 주도 설계를 향해 데이터 중심의 설계에서 책임 중심의 설계로 전환하기 위해서는 다음의 두 가지 원칙을 따라야 한다. 데이터보다 행동을 먼저 결정하라 협력이라는 문맥 안에서 책임을 결정하라 데이터보다 행동을 먼저 결정하라 책임 중심의 설계에서는 객체의 행동, 즉 책임을 먼저 결정한 후에 객체의 상태를 결정한다. 협력이라는 문맥 안에서 책임을 결정하라 협력에 적합한 책임을 수확하기 위해서는 객체를 결정한 후에 메시지를 선택하는 것이 아니라 메시지를 결정한 후에 메시지 스스로 객체를 선택해야 한다. 협력이라는 문맥 안에서 메시지에 집중하는 책입 중심의 설계는 캡슐화의 원리를 지키기가 훨씬 쉬워진다. 책임 주도 설계 다음은 3장에서 설명한 책임 주도 설계의 흐름을 다시 나열한 것이다. 시스템이 사용자..

프로그래밍/객체지향 설계

[오브젝트] 3장. 역할, 책임, 협력

객체지향 패러다임의 관점에서 핵심은 협력, 책임, 역할이다. 역할, 책입, 협력이 제자리를 찾지 못한 상태라면 응집도 높은 클래스와 중복 없는 상속 계층을 구현한다고 하더라도 우리가 만든 애플리케이션이 침몰하는 것을 구원하지 못할 것이다. 그 이유를 살펴보자. 1. 협력 영화 예매 시스템 돌아보기 객체지향 원칙을 따르는 애플리케이션의 제어 흐름은 어떤 하나의 객체에 의해 통제되지 않고 다양한 객체들 사이에 균형 있게 분배되는 것이 일반적이다. 여기서 중요한 것은 다양한 객체들이 영화 예매라는 기능을 구현하기 위해 메시지를 주고받으면서 상호작용한다는 점이다. 이처럼 객체들이 애플리케이션의 기능을 구현하기 위해 수행하는 상호작용을 협력이라고한다. 객체가 협력에 참여하기 위해 수행하는 로직은 책임이라고 한다...

Language/TIL

gitignore가 동작하지 않는 경우

gitignore에 등록해놨는데도 ignore가 안 될 경우 아래 명령어를 시도해본다. git rm -rf --cached . git add . 드디어 찾아서 행복ㅠㅠ

Language/TIL

[React] 아임포트(iamport) API 결제 기능 추가

국비지원 파이널 프로젝트로 결제기능을 구현하게 되었다. 아임포트api를 사용하기로 했고 문서부터 정독했다. (참고) https://github.com/iamport/iamport-react-example/blob/master/manuals/PAYMENT.md 1. 세팅하기 (Payment.js) - 라이브러리 호출 React와 useEffect를 import 해준다. useEffect를 사용하는 이유는 브라우저가 이 파일을 처음 호출했을 때 useEffect의 내부코드가 변하는 것이 없다면 컴포넌트가 호출되는 첫 시점에 한번만 호출된다. 그리고 컴포넌트가 소멸하기 직전에 useEffect의 리턴을 호출한다. react에서 아래와 같이 jquery와 iamport 를 호출할 수 있다. import Reac..

프로그래밍/기타

Spring과 React 통신 시에 CORS 에러 해결

학원 프로젝트중에 Spring과 React를 같이 쓸려고 하는데 CORS에러가 발생했다. 구글링 해 본 결과, SpringBoot와 React를 연결하여 Spring Security로 CORS를 해결하는게 대다수였다. 특히 나처럼 국비지원을 하는사람들은 SpringBoot를 안(못?)쓰는 경우가 많을텐데 해결방법을 공유하려한다 방법을 작성하기전에 한가지 말하고 싶은게 있다면 굳이 Spring Security를 쓰려고 시도하지 않아도 된다! 에러를 해결하는 방법은 간단할수록 좋은게 아닐까? 다른 사람들이 Security로 해결한다고 해서 나까지 똑같이 따라할 필요는 없다. 이런 당연한 사실을 간과하고 나는 이틀 내내 Security를 사용하려고 발버둥쳤다.... 여튼 이제 코드를 써보겠다. Filter를 ..

알고리즘

[Java] 다리를 지나는 트럭 - level 1

https://programmers.co.kr/learn/courses/30/lessons/42583 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 programmers.co.kr import java.util.LinkedList; import java.util.Queue; class Solution { public int solution(int bridge_length, int weight, int[] truck_weights) { int answer = 0; // 넘어가야 할 트럭의 갯수 Queue start..

알고리즘

[Java] 기능개발 - level 2

https://programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr import java.util.*; class Solution { public int[] solution(int[] progresses, int[] speeds) { List answer_list = new ArrayList(); Queue days= new LinkedList(); double day = 0; for (int i=0; i 값을 올림(ce..

알고리즘

[Java] 프린터 - level 2

https://programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr import java.util.Collections; import java.util.PriorityQueue; import java.util.*; class Solution { public int solution(int[] priorities, int location) { int answer = 0; PriorityQueue pq = new PriorityQueue..

알고리즘

[Javascript] 큰 수 만들기 - level 2

https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr function solution(number, k) { var answer = ""; let tmp_n = 0; let tmp_idx = 0; k = number.length - k; for (let idx=0; idx tmp_n) { tmp_n = number[idx]; tmp_idx = idx; } // 숫자가 0일 때 if (number[idx] == 0 || idx == number.length-k-1) { number.splice(idx,1); tmp_n = 0; idx = tmp_idx; k--; idx = -1; } } ret..

알고리즘

[Python] 순위 검색 - level 2 (효율성 통과 못함)

https://programmers.co.kr/learn/courses/30/lessons/72412

Giwonnnnnnn
기록하는 곳