목록Programming (31)
남기면 좋잖아
Support for password authentication was removed on August 13, 2021. 에러 https://hyeo-noo.tistory.com/184 블로그에서 에러를 해결해서 기록해둡니다.
팀원이 본인 브랜치에서 프로젝트의 README.md 파일을 의도치않게 삭제했습니다. 저는 git pull을 하고 원치않게 README.md 파일이 삭제된채 merge가 되었습니다. 이 경우 README.md 파일을 충돌로 인식하지 않아서 많이 당황스러웠지만 다른 파일에서 충돌이 발생해 merge 전에 충돌을 해결해야 하는 상황이 발생했습니다. 제 서칭능력이 부족한건지 이때 README.md 파일을 복구할 방법을 찾지 못하다가 git status 명령어에서 힌트를 얻어 기록해보려 합니다. 상황 : git status 에서 README.md 파일의 삭제된 정보가 stage에 올라간 상태 # stage 영역에서 빼오기 git reset HEAD # 파일 복구하기 git restore 당장은 이렇게 해결했지만 ..
django channels 라이브러리는 장고의 소켓통신을 위한 대표적인 라이브러리 입니다. 장고의 기본적인 데이터흐름과 굉장히 비슷해 학습하는데 큰 어려움은 없습니다. 하지만 저처럼 웹소켓을 처음 다뤄보는 초보자의 경우 몇몇 부분은 이해하기 힘든 부분이 있었습니다. 그 중 consumer 부분은 가장 핵심적이면서도 이해하기 힘든 부분중 하나인데, 크게 4가지 메소드를 사용합니다. connect() receive() disconnect() group_send()와 type 메소드 이 4가지 메소드에 통해 자바스크립트와 장고 사이의 소켓통신 데이터 흐름을 다뤄보려 합니다. connect() connect() 메소드는 자바스크립트에서 웹소켓 생성시 django에서 처음으로 응답받는 메소드입니다. const ..
동적 프로그래밍 개념 하나의문제는 단 한 번만 풀도록 하는 알고리즘 즉, 한 번 푼 것을 여러 번 다시 푸는 비효율적인 알고리즘을 개선시키는 방법이기도 함 분할 정복 기법은 동일한 문제를 다시 푼다는 단점이 있다.(정렬 제외) 단순 분할 정복으로 풀게 되면 심각한 비효율성을 낳는 대표적인 예시로 피보나치 수열 DP는 다음의 가정 하에 사용할 수 있다. 큰 문제를 작은 문제로 나눌 수 있다. 작은 문제에서 구한 정답은 그것을 포함하는 큰 문제에서도 동일하다. EX) 메모이제이션 기법 문제 정수 삼각형 출처: 프로그래머스 문제 설명 위와 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼..
1. 너비 우선 탐색 (BFS) 개념 너비를 우선으로 하여 탐색을 수행하는 탐색 알고리즘 큐 자료구조를 사용 큐에서 하나의 노드를 꺼낸다. 해당 노드에 연결된 노드 중 방문하지 않은 노드를 방문하고, 차례대로 큐에 삽입한다. 루트 노드부터 가까운 노드들 탐색이 이루어짐 BFS는 그 자체로는 큰 의미가 없고 다른 알고리즘에 적용한다는 것이 핵심 2. 깊이 우선 탐색 (DFS) 개념 깊이를 우선으로 하여 탐색을 수행하는 탐색 알고리즘 스택 자료구조를 사용 스택의 최상단 노드를 확인 최상단 노드에게 방문하지 않은 인접 노드가 있다면 그 노드를 스택에 넣고 방문처리. 방문하지 않은 노드가 없다면 스택에서 최상단 노드를 뺀다. 재귀 함수 자체가 스택의 원리이기 때문에 짧은 코드로 구현할 수 있음 DFS 또한 그 ..
1. 선택정렬 개념 가장 작은 것을 선택하여 맨 앞으로 보낸다. 구현하기 쉽다. 무조건 큰 경우대로, 무조건 작은 경우대로, 무조건 긴 경우대로, 무조건 짧은 경우대로 등 극단적으로 문제에 접근한다는 점에서 정렬 기법이 함께 사용되는 경우가 많음. 대표적으로 크루스칼 알고리즘으로 모든 간선을 정렬한 이후에 짧은 간선부터 연결하는 최소 비용 신장 트리 알고리즘이 있음. 최적의 해를 보장하지 못하는 경우 다이나믹 프로그래밍 등의 기타 알고리즘 기법을 적용해야 하기도 함. 시간복잡도 선택 정렬은 대략 N * (N+1) /2 번 가량의 연산을 수행하므로 시간 복잡도는 O(N^2) 2. 버블 정렬 개념 바로 가까이에 있는 두 숫자끼리 비교를 해서 당장 더 작은 숫자를 앞으로 보내주는 것을 반복 구현은 쉽지만 가장..
코딩테스트 알고리즘 1. 그리디 개념 기본적으로 당장 눈앞의 최적의 해를 쫓는 알고리즘. 무조건 큰 경우대로, 무조건 작은 경우대로, 무조건 긴 경우대로, 무조건 짧은 경우대로 등 극단적으로 문제에 접근한다는 점에서 정렬 기법이 함께 사용되는 경우가 많음. 대표적으로 크루스칼 알고리즘으로 모든 간선을 정렬한 이후에 짧은 간선부터 연결하는 최소 비용 신장 트리 알고리즘이 있음. 최적의 해를 보장하지 못하는 경우 다이나믹 프로그래밍 등의 기타 알고리즘 기법을 적용해야 하기도 함. 대표문제 거스름돈 구하기 def get_coin_count(change): coin_count = 0 coin_count += int(change / 500) change %= 500 coin_count += int(change /..
DRF-React Study Chapter 9. 리액트 기초 익히기 클래스 컴포넌트, 생명주기 static getDerivedStateFromError(error) 오류정보를 화면에 보여주기 위한 state를 생성할 목적 children 컴포넌트의 생명주기 함수에서 오류가 발생했을때에만 호출 개발서버는 별도 오류화면이 보여지기에 커스텀 화면을 보기위해서는 프로덕션 빌드가 필요 componentDidCatch(error, info) 에러정보를 서버로 전송 생명주기 함수에서 오류가 발생헀을 떄에만 호출 errorinfo 정보가 추가로 전달 axios 라이브러리를 활용한 HTTP 요청 axios 라이브러리 설치 : yarn add axios django 서버로 ajax요청을 할 경우 장고가 서비스되는 호스트명..