크래프톤정글 51

크래프톤정글 3주차; TIL 4 - 파이썬 type error, BFS, topological sort, 문자열 검색 알고리즘

개인적으로 공부하면서 지속적으로 정보를 추가, 수정, 삭제합니다. 정확하지 않은 부분은 피드백 주시면 감사합니다. 2022-11-14 파이썬 TypeError: unhashable type 참고: https://daewonyoon.tistory.com/363 무엇? list1 = [1, 2, 3] set1 = set([1, 2, 3]) d = {} d[list1] = "리스트를 딕셔너리 키로 지정 불가능" d[set1] = "집합을 딕셔너리 키로 지정 불가능" >>> TypeError: unhashable type 파이썬에서 딕셔너리의 키를 지정할 때 리스트 자료형을 지정할 때 발생하는 에러 왜? unhashable이란 해쉬화를 할 수 없다는 뜻으로, 해쉬화란 value에 고유한 라벨을 붙여 주는 것과 ..

크래프톤정글 에세이2; 알고리즘 한 달을 마치고

소회 정글에 들어오기 전엔 일을 하고 있었으니, 하루에 6-7시간 정도 일을 하고 남는 시간에 하고 싶은 공부를 했었다. 돌이켜보면 나름 안정적이고 안락한? 생활이었다. 너무 comfort zone에 머무르고 있다는 생각과 함께 더 늦기 전에 진지하게 진로를 틀고 공부를 하고 싶어서 여기까지 오게 되었다. 정글에 들어오고 나서는 (물론 이럴 줄은 알았고 이러려고 들어왔는데) 원없이 공부만 하고 있다. 원하는 공부를 자유롭게 내 의지대로 할 수 있다는 건 감사하고 행복한 일이다🥹💛 정글에 입소한지는 한달밖에 지나지 않았지만 지금까지 여기서 얻은 모든 것은 내가 다 잘해서 그런 거라기 보단, 눈에 보이지 않는 엄청난 행운과(조상님…🙏) 내가 잘 되길 바라고 나를 서포트해주는 많은 사람들의 도움이 없었다면 불..

크래프톤정글 0주차 6; 로그아웃 기능 구현, nav바 유저 로그인 상태 동적 반영

서버에서 토큰이 유효한지 검증하기 왜? 로그인한 회원만 서비스하는 페이지를 볼 수 있게 하기 위함 로그인하지 않은 경우 로그인/회원가입 페이지만 볼 수 있고, 나머지 페이지를 볼 수 없어야 함 어떻게 로그인한 회원에게만 토큰을 주고, 페이지마다 방문자가 만료되지 않은 토큰, 유효한 토큰을 가지고 있는지 검증 서버에서 토큰 검증 함수 정의 토큰이 주어지면 토큰을 디코드함(jwt.decode()) 이 부분 자세히 이해 필요 토큰이 만료된 경우, 유효하지 않은 경우(자체 jwt가 제공하는 함수 이용jwt.ExpiredSignatureError, jwt.InvalidTokenError) 에러메시지 토큰이 만료되지도 않고 유효한 경우 토큰을 디코드한 값을 돌려줌(유저 아이디와 만료기간이 담겨 있음) 메인 페이지(..

크래프톤정글 0주차 5; bulma, Jinja2 템플릿 적용, 회원가입+로그인 기능 완성

bulma 사용하기 출처: https://bulma.io/documentation/overview/start/ https://medium.com/@im_37456/bulma-vs-tailwind-79da998c1d7a 왜? 장점: Bulma는 Mobile-First 기준으로 Responsive 구조를 짜기 좋게 나왔다고 함 확실히 Bootstrap보다는 편리한 클래스 활용 부트 스트랩보다는 클래스명이 좀 더 Human Readable했다. Bulma는 마치 부트스트랩 6.0 과 같은 느낌으로 멋진 테마를 쓰기 쉽게 제공 부트스트랩과 달리 자바스크립트를 사용 안하기에 더 속도가 좋다고 함(요것은 기존 우리가 사용한 CSS 프레임워크에 대한 것) 단점: Bulma는 Hover, Focus등 Pseudo Se..

크래프톤정글 0주차 4; 쿠키의 개념과 제이쿼리로 쿠키 사용하기

쿠키란? 출처: https://policies.google.com/technologies/cookies?hl=ko 무엇? 왜? 어떻게? 제이쿼리 쿠키 사용법 출처: https://nowonbun.tistory.com/634#:~:text=쿠키 설정은 브라우저와,값을 등록하게 됩니다. 무엇? 왜? 어떻게? 제이쿼리에서 쿠키는 평범한 플러그인이 아니므로 cdn을 추가해주어야 사용 가능! 로그인 성공 후 '/login'이라는, 로그인 페이지와는 다른 api로 이동해야 하는데, 이때 method를 설정해주지 않으므로 그냥 접근할 수 있음. method가 있는 API를 연결하면 method 관련 에러가 남.

크래프톤정글 0주차 3; JWT 로그인 구현 코드 이해

JWT 로그인 구현하기 (Flask, JavaScript) 출처: https://firstboos.tistory.com/entry/Python-JWT-토큰-생성-및-검증 출처: https://velog.io/@ex0831/JWT로-회원가입-로그인-기능-구현하기-JavaScript https://llshl.tistory.com/28 출처: https://velog.io/@jybin96/TIL-JWT-인증-방식으로-로그인-구현하기-Flask 무엇? (출처 자료) 이 그림이 아주 자세함. 가입할 때도 비번을 해쉬로 저장해야 함! 왜? 어떻게?

크래프톤정글 0주차 2; JWT 방식 로그인과 세션 방식 로그인 이해

JWT의 개념 및 세션 로그인과 비교 출처: https://llshl.tistory.com/26 무엇? JWT (Jason Web Token) json 객체를 사용해 정보를 전달하는 인증 방식 서버에 토큰(내가 나임을 보여줄 수 있는 증표같은 것)을 저장하지 않고, 클라이언트의 쿠키(내 컴퓨터)에 저장하는 것 왜? JWT는 가벼우면서 안정적 세션 방식과 달리 모든 세션을 서버에 저장할 필요 없음 어떻게? 세션 로그인 클라이언트 → 서버로 로그인 요청 서버는 로그인 정보 확인 후 세션 생성 & 세션아이디를 보내줌 → 클라이언트의 쿠키, 서버 두 곳에 동시에 세션 아이디 저장 이후 클라이언트는 세션 아이디를 쿠키에 담아서 함께 요청 클라이언트가 3에서 보낸 쿠키 속 세션 아이디를 확인하여 서버가 로그인한 사..

크래프톤정글 0주차 1; jinja2 서버사이드 렌더링

jinja2 서버사이드 렌더링 출처: https://woonys.tistory.com/entry/정글사관학교-1일차-TIL-Jinja2-서버-사이드-렌더링SSR-Git-branch-로그인-쿠키세션 https://velog.io/@hyemco/TIL-jinja2-렌더링-하기SSR https://velog.io/@kyunghwan1207/Flask-JWT를-이용한-인증기능-구현 무엇? 파이썬 Flask 패키지에 내장된 패키지 중 하나로 Flask에서는 렌더링을 위해 jinja2라는 템플릿 엔진을 사용 용어 설명 템플릿 동적 파트(변수)를 포함하고 있는 파일 렌더링 템플릿의 동적 파트(변수)를 입력 값으로 바꿔 최종 응답값을 return하는 과정 왜? Jinja2는 HTML을 파이썬 코드로 제어한다는 점에서 ..

크래프톤정글 3주차; TIL 3 - 최소 신장 트리 문제, DFS와 BFS, 연결 요소의 개수 문제

2022-11-13 백준 파이썬 1197번 최소 스패닝 트리 출처: 무엇? 최소 신장 트리 (minimum spanning tree)를 구현하는 문제 왜? 일반 리스트를 사용해서 여러번 도전해봤는데 시간 초과. 처음에 엣지들이 양방향이라는 조건도 놓치기 쉬웠다. 어떻게? ▽ 솔루션을 참고하여 주석을 달아 본 정답 코드 import sys import heapq V, E = map(int, sys.stdin.readline().split()) # 노드 개수, 엣지 개수 covered = [0] * (V+1) # 방문한 노드들 리스트 edges = [[] for _ in range(V+1)] # 엣지를 담을 리스트 sum_min_w = 0 # 최소 가중치의 합 for e in range(E): src, ds..

크래프톤정글 3주차; TIL 2 - 파이썬 BST, 최소 신장 트리

2022-11-12 백준 5639번 파이썬 이진 검색 트리 출처: https://velog.io/@yujng/백준-5639번이진-검색-트리-파이썬Python 무엇? 이진 검색 트리의 전위 순회 한 값을 후위 순회로 출력하는 문제. 왜? 입력부터 어떻게 받아야 할 지 난감했던 문제… (지금까지의 문제는 몇 번 입력 받겠다는 조건이 있었는데…😮) 비슷한 로직으로 for + append를 열심히 해보다가 이렇게 복잡하게 안 해도 될거 같은데… 싶어서 솔루션 참고. 재귀의 신기한 점은 이렇게만 해가지고 이게 된다고? 싶은데 진짜 된다는 점. (오히려 거기서 더 복잡하게 들어가서 내가 뭔갈 해보려고 하면 에러 나는 거 같다.) 어떻게? 코치님이 이진 검색 트리를 재귀로 해결할 수 있다고 했는데, 이게 그 케이스 ..