Project/TIL, WIL
TIL(27) 21-10-25 : Brute Force, DP, Greedy
Facts ✅ 완전탐색 2문제 ✅ DP 1문제 ✅ Greedy 1문제 Findings Fibonacci 공식을 Recursive와 Dynamic Programming으로 구현시 차이점 Recursive f(n) = f(n-1) + f(n-2) f(1) = 1 f(2) = 1 def fibonacci(N): if N == 1 or N == 2: return 1 return fibonacci(N-2) * fibonacci(N-1) Dynamic Programming f(n) = f(n-1) + f(n-2) f(1) = 1 f(2) = 1 계산이 중복되므로, 계산 값을 자료구조에 저장하여, 두번 이상 벌어지는 로직에 대해 그 값을 쓰게 한다. def factorial(N): dp = [0 for i in ra..
TIL(26) 21-10-22 : 탐색(힙, 그래프, DFS, BFS)
Facts ✅ 힙 2문제 ✅ DFS/BFS 3문제 Findings BST의 평균의 시간이 걸리는 케이스와 최악의 시간이 걸리는 케이스 ✔️ Binary Search Tree 아래의 조건들을 다 만족하는 트리를 말한다. 이진각 노드가 2개 이하의 자식 노드를 갖는 트리 노드가 왼쪽 자식 노드를 가진다면 그 노드가 가지는 값은 그 부모 노드가 가지는 값보다 작다. 노드의 오른쪽 자식 노드를 가진다면 그 노드가 가지는 값은 그 부모 노드가 가지는 값보다 크다. 평균의 시간 복잡도는 O(logN) 최악의 시간 복잡도는 O(N)이다. 그 이유는 Binary Search Tree의 시간복잡도는 O(height)이기 때문이다. 평균의 시간 복잡도는 O(logN)이지만, 이는 트리가 균형잡혀있을 때의 평균 시간복잡이다..
TIL(25) 21-10-21 : 자료구조 (스택, 큐, 해쉬)
Facts ✅ 스택 3문제 ✅ 큐 1문제 ✅ 해쉬 3문제 Findings 1️⃣ 스택 스택은 넣은 순서를 쌓아두고 있기 때문에 순서가 필요한 경우에 사용한다. 스택은 파이썬의 list 를 이용해서 스택으로 사용한다. stack = [] # 빈 스택 초기화 stack.append(4) # 스택 push(4) stack.append(3) # 스택 push(3) top = stack.pop() # 스택 pop print(top) # 3! 2️⃣ 큐 큐는 순서대로 처리되어야 하는 경우에 사용한다. Ex) 주문이 들어왔을 때 먼저 들어온 순서대로 처리해야 할 때, 혹은 먼저 해야 하는 일들을 저장하고 싶을 때 큐를 사용한다. 3️⃣ 해쉬 테이블 ✔️ What? F(key) → HashCode → Index → V..
TIL(24) 21-10-20 : 구현, Linked List, 이진 탐색, 재귀
Facts ✅ 구현 11문제 ✅ Linked List 2문제 ✅ 이진 탐색 3문제 ✅ 재귀 1문제 Findings 배열과 링크드 리스트의 장단점 배열 배열은 크기가 정해진 데이터 공간이다. 인덱스를 통해, O(1)내에 접근할 수 있다. 배열은 원소를 중간에 삽입/삭제하려면 모든 원소를 다 옮겨야 한다. 최악의 경우, 배열의 길이 N만큼을 옮겨야 하므로, O(N)의 시간복잡도를 가진다. 링크드리스트 링크드리스트는 크기가 정해지지 않는 데이터 공간이다. 포인터로 이어주기만 하면, 자유자재로 늘어날 수 있다. 링크드리스트는 특정 원소에 접근하려면 포인터를 따라 탐색해야 한다. 최악의 경우에는 모든 화물 원소를 탐색해야 하므로 O(N)의 시간 복잡도를 가진다. 링크드리스트는 원소를 중간에 삽입/삭제 하기 위해서..
TIL(23) 21-10-19 : 2차 프로젝트 완료🚀, 팀원들과 함께 되돌아보며
💫 2차 프로젝트 때, 새롭게 구현한 기능 회원가입 CRUD, JWT 인증 방식으로 로그인 구현 Notification TIL 글 좋아요 UP 기능 Comment (본인 댓글만 삭제할 수 있게, 댓글 달 수 있게) My Profile Update 💫 기술적으로 새롭게 배운 것 ✅ JWT 인증 방식으로 로그인 구현 일반적인 데이터를 다음 페이지로 넘겨주는 것을 넘어 사용자의 id와 password를 이용해 검증된 사용자에게 발급되는 token을 이용하였고, 보안적인 이슈에 대한 고민의 순서를 뒤로 늦추기 위해 로컬, 세션에 저장하지 않고 일단 쿠키에 넣었다. token을 쿠키나 storage에 저장하지 않는다면 문제가 생긴다. 왜냐하면, 페이지가 여러 개면 변수가 share 하지 않기 때문이다. 우리는 t..
TIL(22) 21-10-18 : 배포 그리고 보안의 중요성
Facts ✅ Server에 MongoDB Auth 설정 ✅ Server에 configuration value 설정 Feelings 우리 프로젝트에 보안 이슈가 생겼다. 😂 현업 때 겪지 않음에 감사하며, 미리 보안 이슈에 철저히 대응해야겠다고 명심하게 되었다. 우리의 서버 Database는 랜섬웨어로 다 날라갔다. 그래서 서버부터 다시 구축하게 되었다. 다같이 날밤새며 🥱 보안 이슈를 해결하고, 서버에 배포하는 것까지 완료했다. 보안 이슈를 해결하기 위해, 우선적으로 Configuration Value 처리가 안 되어 있는 부분이 있는지 체크해 주었다. 보안을 강화하기 위해, 방화벽, SSL 인증서 등 여러 요소들을 적용하는 것도 함께 생각해보기로 했다.
TIL(21) 21-10-15 : PR 코드 리뷰, S3로 이미지 업로드
FACTS ✅ my_page front 수정 ✅ my_page와 JWT Token 연결 ✅ PR 코드 리뷰 후, Merge 되면 pull 해오기 ✅ mypage 이미지 S3로 업로드 하기 FEELINGS / FINDINGS 코드 리뷰 PR을 통한 코드 리뷰 7일차다. 코드리뷰하면서, 코드에 대한 이해가 높아졌고, 이해하기 쉬운 설명을 쓸려고 노력하게 되었다. 그리고 내 코드를 다시 한번 더 돌아보게 되었다. 서비스 전체의 로직에 대해 더 잘 알게 된 경험이 되었고 계속 이어가봐야겠다. 계속해서 어떤 식으로 리뷰를 하는게 더 좋을지 고민해보자. S3로 Image Upload S3는 AWS에서 제공해주는 파일을 저장하는 서비스이다. 또한, S3는 정적 호스팅 기능을 이용할 수 있다. S3 의 정적 호스팅 기..
TIL(20) 21-10-14 : My Page 구현
FACTS ✅ My_page : front-end의 데모버전 완료 ✅ My_page : 프로필 upload ✅ My_page : user 연결 완료
TIL(19) 21-10-13 : 중복 제거
Facts ✅ REST API 중복되는 부분 삭제 ✅ Notification 의논 ✅ js 구분 기준 정하기 Feelings / Findings Notification의 알림기준과 방식을 오후 2시에 정했다. 1) 로그인 후, main page 화면이 뜨면, til_board에 오늘 til_day 기준으로 userid로 되어있는 til이 있으면 플래그가 걸기 2) today til에 있는지 없는지 체크하기 (작성년도 시간일만 뽑아서 데이터 유저값에 넣어서 오늘은 작성 되었는지 안 되었는지 체크하자.) 3) 이를 신호등으로 Notification 하자. "먼저는, 전체 기능을 간단하게 구현하고, 아이디어를 확장해나가면, 더 멋진 아이디어를 구현할 수 있겠다"는 것을 배웠다. 💡
TIL(18) 21-10-12 : Communication
Facts ✅ CRUD API idx 기준으로 변경 ✅ REST API URI Convention 맞춤 ✅ 전체 REST API URI 수정사항 notion 2차 API Design 문서에도 다 정리해서 반영 ✅ REST API 중복 제거 ✅ My_til 불필요한 Modal 제거 하나의 Modal로도 update 가능 ✅ 현재, home.html, mytil_page.html, til_board.html, 다 변경된 CRUD API와 다 연동