일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 카톡
- Vue
- crud
- Props
- git
- 튜플
- docker
- NeXT
- 중급파이썬
- flask
- wetube
- react
- lambda
- AWS
- EC2
- RDS
- S3
- MongoDB
- Class
- pandas
- TypeScript
- socket io
- node
- dict
- 채팅
- merge
- SSA
- 파이썬
- async
- SAA
- Today
- Total
목록전체 글 (422)
초보 개발자
바이너리 컴퓨터는 0과 1로 이루어진 이진수만 이해할 수 있다. 바이너리라는 단어의 뜻은 이진수라는 의미이다. 즉 컴퓨터는 바이너리만을 이해할 수 있다. 따라서 컴퓨터에서 ㄱㄴㄷ, abcd등의 문자를 표시하려면 각각의 문자를 숫자로 지정해줄 필요가 있다. 즉, a는 10진수로 97이다. z는 10진수로 122이다. 그 값을 이진수로 변환해주면 컴퓨터가 이를 보고 문자를 식별할 수 있게 된 것이다. 'a' -> 10진수 97 -> 2진수 01100001 우리에게는 a라는 글자가 컴퓨터에게는 01100001인 것이다. ASCII 초창기 컴퓨터의 제조사마다 각자 지정방식이 다르니까 컴퓨터끼리 데이터 교환을 할 때 어려움을 겪었다. 어떤 컴퓨터에서는 abc로 인식이되는 데이터를 다른 컴퓨터에서 열면 !#F 이런..

먼저 내가 담당한 파트는 로그인 담당이었다. 기본적으로 로그인, 회원가입 기능을 만들었다. 먼저 회원가입 기능은 아래와 같이 구현하였다. 아이디, 이름, 닉네임, 비밀번호, 비밀번호 확인으로 이루어져있다. 아이디 조건, 비밀번호 조건이 일치하지 않으면 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 는 이미지 출력 및 사용에 문제 없다. 하지만 해제된 이후..
jsonify는 JSON 데이터를 내보내도록 제공하는 flask의 함수이며 기본 헤더가 'content-type': 'application/json'로 되어 있는 flask.Response() 객체를 리턴한다. jsonify : 딕셔너리 , 리스트를 매개변수로 받을 수 있다. json.dumps : jsonify 보다 더 다양한 type을 받을 수 있다고 나와있다. from bson.json_util import dumps 콘텐츠 타입은 아래와 같다. jsonify : application/json json.dumps : text/html; charset=utf-8 return 값을 jsonify나 dumps를 안쓰고 그냥 dictionary로 했을 경우에도 : application/json 따라서 그냥..

로그인을 한번 해보자. 로그인 버튼을 누르면 api/login으로 data를가지고 POST요청을 보낸다. ID와 PW를 가져온 뒤 pw는 다시 해쉬화를 시킨 후 db속에 일치하는 데이터가 존재하면 result로 담아온다. 만약 존재하지 않는다면 else문으로 빠져 '아이디/비밀번호가 일치하지 않습니다.'라는 메시지를 보낸다. 이제 JWT토큰을 만들어 웹 페이지에게 보내는 작업을 시작한다. payload 부분에는 토큰에 담을 정보가 들어있다. 여기에 담는 정보의 한 ‘조각’ 을 클레임(claim) 이라고 부르고, 이는 name / value 의 한 쌍으로 이뤄져있다. 토큰에는 여러개의 클레임 들을 넣을 수 있다. 그 중에 exp(만료시간)와 같은 특정기능을 수행하는 클레임 같은경우는 꼭 이름을 지켜주어야 ..

먼저 redirect함수는 서버에서 프론트엔드로 ~~ url로 이동시키는 것이다. @app.route('/where') def where(): return redirect('http://naver.com') localhost:5000/where로 접근하였을 때 redirect로 네이버 주소를 적어주었으니 저 url로 이동을 시킨다. @app.route('/where') def where(): return redirect('/here') @app.route('/here') def here(): return 'hi' 마찬가지로 /where에 접근했을 때 redirect를 사용해 /here로 토스 시키면 웹브라우저에 hi를 출력시킬 것이다. 그런데 만약 여기서 /where로 접근했을 떼 /here이라는 url..

@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..