일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- NeXT
- SSA
- node
- dict
- EC2
- merge
- lambda
- 파이썬
- 카톡
- socket io
- Vue
- MongoDB
- async
- 중급파이썬
- docker
- SAA
- Class
- 채팅
- crud
- TypeScript
- wetube
- react
- flask
- 튜플
- git
- S3
- pandas
- Props
- RDS
- AWS
- Today
- Total
목록AI 웹개발 트랙 - 내배캠/3주차 (6)
초보 개발자
먼저 내가 담당한 파트는 로그인 담당이었다. 기본적으로 로그인, 회원가입 기능을 만들었다. 먼저 회원가입 기능은 아래와 같이 구현하였다. 아이디, 이름, 닉네임, 비밀번호, 비밀번호 확인으로 이루어져있다. 아이디 조건, 비밀번호 조건이 일치하지 않으면 js로 사전에 ajax를 막아버리는 기능을 만들었다. 이 때 조건을 설정할 때 정규식을 사용하였는데 정규식을 사용하는 것이 제일 깔끔하고 직관적이다. 중복확인 기능은 ajax로 서버에게 mongodb 안에 일치하는 정보가 있는지 물어보고 있으면 있다고, 없으면 없다고 다시 브라우저로 보낸다. 아무런 이상이 없다면 ajax로 POST요청을 보내 데이터를 mongoDB에 기록한다. 그리고 js가 success응답을 받으면 /login페이지로 돌려보내준다. 여기..
URL.createObjectURL 먼저 이미지 파일을 선택하면 화면에 보이도록 해주는 방법에 대해서 알아보겠다. #image-uploader는 태그이다. 여기에 이벤트 리스너를 주어서 상태가 변했을 때 (파일을 선택했을 때 , 'change' 이벤트) 실제 서버에 존재 하지는 않고, 해당 브라우저에서만 사용가능한 URL. 즉, 브라우저 내에서 해당 파일(객체)를 임시로 사용하기 위한 URL을 만들어 준다. 그리고 그 URL을 preview(img 태그)의 src에 넣어주면 화면에 잘 출력이 된다. 그리고 url을 사용하면 revoke를 통해서 해제 시켜주어야 메모리에 누수가 생기지 않는다. 위 처럼 읽어드린 후 바로 URL을 해제해도 image 는 이미지 출력 및 사용에 문제 없다. 하지만 해제된 이후..
로그인을 한번 해보자. 로그인 버튼을 누르면 api/login으로 data를가지고 POST요청을 보낸다. ID와 PW를 가져온 뒤 pw는 다시 해쉬화를 시킨 후 db속에 일치하는 데이터가 존재하면 result로 담아온다. 만약 존재하지 않는다면 else문으로 빠져 '아이디/비밀번호가 일치하지 않습니다.'라는 메시지를 보낸다. 이제 JWT토큰을 만들어 웹 페이지에게 보내는 작업을 시작한다. payload 부분에는 토큰에 담을 정보가 들어있다. 여기에 담는 정보의 한 ‘조각’ 을 클레임(claim) 이라고 부르고, 이는 name / value 의 한 쌍으로 이뤄져있다. 토큰에는 여러개의 클레임 들을 넣을 수 있다. 그 중에 exp(만료시간)와 같은 특정기능을 수행하는 클레임 같은경우는 꼭 이름을 지켜주어야 ..
@app.route('/') def home(): # 현재 이용자의 컴퓨터에 저장된 cookie 에서 mytoken 을 가져옵니다. token_receive = request.cookies.get('mytoken') print(token_receive) try: # 암호화되어있는 token의 값을 우리가 사용할 수 있도록 디코딩(암호화 풀기)해줍니다! payload = jwt.decode(token_receive, SECRET_KEY, algorithms=['HS256']) user_info = db.user.find_one({"id": payload['id']}) return render_template('index.html', nickname=user_info["nick"]) # 만약 해당 token..
머지병합.. 근데 머지가 병합아닌가? 족발 같은건가??ㅋㅋ 머지병합은 [1,2,5,6] [3,4,7,8] 이런식으로 정렬이 되어 있는 두 개의 리스트를 정렬된 하나의 리스트로 합치는 것을 말한다. [1,2,3,4,5,6,7,8] 이렇게 ~! array_a = [1, 2, 3, 5] array_b = [4, 6, 7, 8] def merge(array1, array2): a_idx = 0 b_idx = 0 array3 = [] while True: if array1[a_idx] > array2[b_idx]: array3.append(array2[b_idx]) b_idx += 1 else: array3.append(array1[a_idx]) a_idx += 1 if not (len(array1) > a_id..
정렬이라고 검색하면 무조건 나오는 이 세가지를 배워보겠다!!! 버블 정렬 버블정렬이란 가장 원초적인 방법이다. 앞 숫자와 뒷 숫자를 비교하면서 앞의 숫자가 크다면 순서를 바꾸고 작다면 pass 이걸 첫 인덱스부터 마지막 인덱스까지 차례로하면 마지막에는 제일 큰 숫자가 있을 것이다. 이런 일련의 반복을 거쳐 정렬하는 방법을 버블 정렬이라고 한다. input = [4, 6, 2, 9, 1] def bubble_sort(array): for i in range(len(array)-1): for j in range(len(array)-i-1): print(j) if array[j] > array[j+1]: array[j], array[j+1] = array[j+1],array[j] return bubble_so..