일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 함수형 인터페이스
- 바운디드 타입
- throwable
- 제네릭 와일드 카드
- junit 5
- 람다식
- 제네릭 타입
- 항해99
- System.err
- annotation processor
- System.in
- System.out
- Study Halle
- 로컬 클래스
- yield
- 프리미티브 타입
- 자바할래
- 정렬
- 상속
- 접근지시자
- docker
- 브릿지 메소드
- 익명 클래스
- 합병 정렬
- Switch Expressions
- 자바스터디
- raw 타입
- 스파르타코딩클럽
- auto.create.topics.enable
- github api
Archives
- Today
- Total
코딩하는 털보
21.09.13 TIL 본문
항해99 DAY 1
드디어 오늘부터 항해99가 시작되었다.
자 요이땅! 하자마자 바로 프로젝트를 진행한다. 괜히 스파르타가 아닌듯하다.
미니 프로젝트는 사전 준비 과정에서 배운 기술들을 토대로 새로운 웹어플리케이션을 만들어보는 것.
팀원들과는 처음에는 어색했지만 하루 종일 같이 앉아서 고민하고 소통하니까 자연스럽게 친해진 것 같다. 뭔가 웃을일도 많았음.
되도록 매일 그날 배우고 진행한 내역을 기록하려고 한다.
우리의 프로젝트는 재판하는 존경장님.
나는 python으로 백엔드 개발을 맡아했다.
from flask import Flask, render_template, jsonify, request
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.honorablejudge
app = Flask(__name__)
@app.route('/')
def main():
return 'this is main'
# return render_template('index.html')
@app.route('/login', methods=['POST'])
def login():
# todo login
return
@app.route('/logout', methods=['POST'])
def logout():
# todo logout
return
@app.route('/user_info', methods=['GET'])
def get_user_info():
# todo userinfo
return
@app.route('/register', methods=['POST'])
def register_user():
id_receive = request.form['id']
pw_receive = request.form['pw']
doc = {
'id': id_receive,
'password': pw_receive
}
user_id_exist_check(id_receive)
db.users.insert_one(doc)
return jsonify({'msg': '계정이 성공적으로 등록되었습니다.'})
@app.route('/post', methods=['POST'])
def add_post():
id_receive = request.form['id']
writing_id_receive = request.form['writing_id']
title_receive = request.form['title']
content_receive = request.form['content']
image_receive = request.form['image']
doc = {
'id': id_receive,
'writing_id': writing_id_receive,
'title': title_receive,
'content': content_receive,
'image': image_receive,
'like': 0,
'unlike': 0
}
writing_id_exist_check(writing_id_receive)
db.post.insert_one(doc)
return jsonify({'msg': '고민이 성공적으로 작성되었습니다.'})
@app.route('/comment', methods=['POST'])
def add_comment():
writing_id_receive = request.form['writing_id']
id_receive = request.form['id']
comment_receive = request.form['com']
writing_id_valid_check(writing_id_receive)
db.post.update_one({'writing_id': writing_id_receive}, {'$push': {'comments':{'comment':comment_receive, 'id':id_receive}}})
return jsonify({'msg': '댓글이 작성되었습니다.'})
@app.route('/like', methods=['POST'])
def like_post():
writing_id_receive = request.form['writing_id']
writing_id_valid_check(writing_id_receive)
db.post.update_one({'writing_id': writing_id_receive}, {'$inc': {'like':1}})
return jsonify({'msg': '추천.'})
@app.route('/unlike', methods=['POST'])
def unlike_post():
writing_id_receive = request.form['writing_id']
writing_id_valid_check(writing_id_receive)
db.post.update_one({'writing_id': writing_id_receive}, {'$inc': {'unlike':1}})
return jsonify({'msg': '비추천.'})
@app.route('/posts', methods=['GET'])
def get_post_list():
posts = list(db.post.find({}, {'_id': False}))
return jsonify({'posts': posts})
@app.route('/post', methods=['GET'])
def get_post():
writing_id_receive = request.form['writing_id']
writing_id_valid_check(writing_id_receive)
post = db.post.find_one({'writing_id':writing_id_receive},{'_id':False})
return jsonify({'post': post})
@app.route('/post', methods=['DELETE'])
def delete_post():
writing_id_receive = request.form['writing_id']
writing_id_valid_check(writing_id_receive)
db.post.delete_one({'writing_id': writing_id_receive})
return jsonify({'msg': '고민이 삭제되었습니다.'})
@app.route('/post', methods=['PUT'])
def update_post():
writing_id_receive = request.form['writing_id']
title_receive = request.form['title']
content_receive = request.form['content']
image_receive = request.form['image']
writing_id_valid_check(writing_id_receive)
db.post.update_one({'writing_id': writing_id_receive},{'$set': {'title': title_receive,'content': content_receive,'image': image_receive}})
return jsonify({'msg': '고민이 수정되었습니다.'})
def writing_id_valid_check(writing_id):
# todo try catch
if db.post.find_one({'writing_id': writing_id}) is None:
raise Exception('존재하지 않는 글 ID 입니다.')
def writing_id_exist_check(writing_id):
# todo try catch
if db.post.find_one({'writing_id': writing_id}) is not None:
raise Exception('이미 존재하는 글 ID 입니다.')
def user_id_exist_check(id):
# todo try catch
if db.users.find_one({'id': id}) is not None:
raise Exception('이미 존재하는 사용자 ID 입니다.')
if __name__ == '__main__':
app.run('0.0.0.0',port=5000,debug=True)
내일은 JWT 강의를 보고 로그인과 로그아웃, 회원가입을 제대로 구현할 예정이다.
클라이언트 사이드 렌더링 CSR
클라이언트에서 다 하는 거, 서버로부터 받는 Javascript에 어플리케이션에서 필요한 로직뿐만 아니라 실행하기 위한 프레임워크, 라이브러리까지 포함하고 있다. SPA에 특화되어있다.
TTV와 TTI 사이에 공백이 없다.
그러나 첫번째 페이지 로딩이 느리고 SEO가 좋지 않다.
서버 사이드 렌더링 SSR
CSR에 비해 첫번째 페이지 로딩이 빠르다.
SEO가 좋다.
static site에서와 같이 Blinking issue가 존재한다. (매번 웹사이트 받아오기)
서버 사이드 오버헤드가 있다.
TTV와 TTI 사이에 공백이 있기 때문에 대기상태가 존재한다.
Comments