전체 글

전체 글

    [미니터] 타임라인

    [미니터] 타임라인

    # 타임라인 불러오기 @app.route('/timeline/', methods=['GET']) # 1 def timeline(user_id): # 2 if user_id not in app.users : return '사용자가 존재하지 않습니다', 400 follow_list = app.users[user_id].get('follow', set()) # 3 follow_list.add(user_id) # 4 timeline = [tweet for tweet in app.tweets if tweet['user_id'] in follow_list] # 5 return jsonify({ # 6 'user_id' : user_id, 'timeline' : timeline }) # 1 : 엔드포인트 주소에 해당..

    [미니터] 팔로우와 언팔로우

    [미니터] 팔로우와 언팔로우

    # 팔로우 @app.route('/follow', methods = ["GET","POST"]) def follow() : payload = request.json # 1 user_id = int(payload['id']) user_id_to_follow = int(payload['follow']) # 2 if user_id not in app.users or user_id_to_follow not in app.users : # 3 return "사용자가 존재하지 않습니다.", 400 user = app.users[user_id] user.setdefault('follow', set()).add(user_id_to_follow) # 4 return jsonify(user) # 언팔로우 @app.route..

    [미니터] 트윗올리기

    [미니터] 트윗올리기

    1. 300자 제한이 있는 트윗을 올리는 엔드포인트 구현 app.users = {} #사용자 정보 저장 app.tweets = [] #사용자들의 트윗을 저장하는 곳. key=사용자아이디, value=사용자의 트윗을 담은 리스트 @app.route('/tweet', methods = ["GET","POST"]) def tweet() : payload = request.json # 1 user_id = int(payload['id']) # 2 tweet = payload['tweet'] # 3 if user_id not in app.users : # 4 return '사용자가 존재하지 않습니다', 400 if len(tweet) > 300 :# 5 return '300자를 초과했습니다', 400 user_i..

    200 OK

    작년에 인공지는 부트캠프를 수강하면서 백엔드에 관심이 생겼다. (머신러닝도 재밌었지만 좀 더 이후 목표로!) 그래서 수료하기도 전에 flask를 더 공부하고 싶어서 관련 강의도 구매해서 공부했다. 오늘 app객체 만들고 엔드포인트 2개 만들고 http요청 날리고 여기까지 였는데 지금까지 공부했던게 정리되고 있는 너낌 아마 프로젝트를 하면서 왜!왜!왜!를 외치지 않았다면 아마 오늘이 처음이였겠지.. 오늘따라 전에 없던 에러가 계속 발생해서 재부팅->가상환경 재설치 -> 코드 다시 타이핑 (무슨 데자뷰도 아니고) 했지만 나의 아쥬쟈근 서버는 200을 보내주지 않았다. vscode에서 파일을 실행하고 엔드포인트로 접근 했을때는 페이지가 떴는데 vscode 터미널에서 직접 http를 날리니깐 계~속 너무 많이 ..

    [미니터] 회원가입 엔드포인트

    [미니터] 회원가입 엔드포인트

    project/back_flask/app.py from flask import Flask, request, jsonify #1 app = Flask(__name__) app.id_count = 1 app.users = {} #key = 사용자 아이디, value = 딕셔너리에 저장된 사용자 정보 @app.route('/ping', methods=['GET']) def ping() : return "pong" @app.route("/sign-up", methods=["POST"]) def sign_up(): new_user = request.json #2 new_user["id"] = app.id_count #3 app.users[app.id_count] = new_user #4 app.id_count =..

    [미니터] 객체 생성, 엔드포인트 등록

    [미니터] 객체 생성, 엔드포인트 등록

    project/back_flask/app.py from flask import Flask app = Flask(__name__) # 객체 app 변수로 지정 @app.route("/ping", methods=["GET"]) # route 데코레이터로 엔드포인트 등록 def ping(): # ping 함수 생성 return "pong" if __name__ == "__main__": app.run(host="0.0.0.0", port="8080") 1. 플라스크 app 실행 vscode에서 run 버튼 누르면 다음과 같은 메시지가 뜸 브라우저에서 http://172.30.1.5:8080/ping 접속하면 pong 이라는 글자가 뜸 # WARNING : 운영모드로 되어있으니 개발자 모드로 바꾸라는 경고 1...

    [Python] 프그래머스 강의 (파이썬을 파이썬답게)

    1. 정수를 담은 이차원 리스트에서 각 원소의 길이를 담은 리스트 리턴 내가 쓴 답 def solution(mylist): answer = [] for i in mylist : answer.append(len(i)) return answer 소름돋게 강의에서 파이썬스럽지 않은 코드로 보여준것과 똑같음 C언어나 자바스럽다고 함.. 그럼 강의에서 말하는 파이썬 코드는 이건데 왜일까..? def solution(mylist): return list(map(len, mylist) 2. 숫자 a,b가 있을 때 a를 b로 나눈 몫과 나머지를 공백으로 구분해 출력 내가 쓴 답 a, b = map(int, input().strip().split(' ')) print(a//b,a%b) 강의 코드 a = 7 b = 5 p..

    [MySQL] ORDER BY, DISTINCT, LIMIT

    1. ORDER BY 결과가 출력되는 순서를 정해준다. 기본값은 오름차순(ASC), 생략가능 내림차순으로 정렬하고 싶을 때 컬럼명 뒤에 DESC 넣어주면 된다. SELECT * FROM city ORDER BY Population DESC 1-1) 혼용 사용가능 SELECT * FROM city ORDER BY CountryCode ASC, Population DESC 이 경우 CountryCode를 오름차순으로 정렬 하면서 값이 같은 경우 Population 값을 내림차순으로 정렬. 2. DISTINCT 중복 된 값일 경우 한 개만 보여준다. SELECT DISTINCT CountryCode FROM city; 3. LIMIT 출력 개수를 제한해준다. 상위 N개만 출력해줌 서버의 전반적인 성능을 안좋게..