다가오는 토끼의 해! 달토끼에게 소원을 빌어보자🐰
간절히 바라는 소원을 빌고, 서로의 소원을 응원하고, 오늘의 띠별 운세를 확인해보는 사이트
2023년 1월 16일 ~ 2023년 1월 17일

_id 값을 어떻게 가져오고, 가져온 _id 값을 어떻게 사용해서 DB 데이터 값을 찾을 수 있을까?GET 요청 으로 _id 값 가져오기 : 서버에서 데이터를 보낼 때 dumps() 함수로 보내고, 클라이언트에서는 받은 response를 JSON.parse() 로 받는다.@app.route('/wish/look', methods=["GET"])
def wish_get():
wish_list = list(db.wishes.find({}))
return jsonify({'wish_list': dumps(wish_list)})function show_wishes() {
$('#wishlist').empty()
$.ajax({
type: "GET",
url: "/wish/look",
data: {},
success: function (response) {
let rows = JSON.parse(response['wish_list'])
// ...
}
}
});
}POST 요청 으로 보낸 _id 값으로 DB 데이터 찾기 : 클라이언트에서 request로 보낸 id 값을 str() 으로 바꾼 후, find_one으로 찾을 때 ObjectId 를 이용해 찾는다.@app.route('/wish/like', methods=['POST'])
def like_save():
id_recieve = str(request.form['id_give'])
like_count = db.wishes.find_one({'_id': ObjectId(id_recieve)})['likeCount']bg-transparent 를 붙인다.<ul class="list-group list-group-flush" id="wishlist">
<li class="list-group-item bg-transparent">...</li>
</ul>moving.html)를 만들고, 등록 버튼을 누르면 window.location.replace() 를 이용해 moving.html로 이동하고, setTimeout 함수를 이용하여 3초 뒤 소원보기 페이지로 이동하도록 한다.// main.js
$.ajax({
type: "POST",
url: "/wish/regist",
data: {nickname_give: nickname, wish_give: comment},
success: function (response) {
if(response["status"] == '200') { // 소원이 정상적으로 등록되면
alert("소원 빌기 완료!") // 메시지를 보내고
window.location.replace('/wish-moving-page') // gif 영상이 나오는 html 페이지로 이동한다.
} else if (response["status"] == '400') {
alert("닉네임 또는 소원을 꼭 입력해주세요!")
window.location.reload()
}
}
});# app.py
# 소원 등록 모션 페이지
@app.route('/wish-moving-page')
def wishMovingPage():
return render_template('moving.html')// moving.js
setTimeout(function () {
window.location.replace('/wish-look-page')
}, 3000);git으로 협업하기
로컬, 원격에 모두 develop 브랜치를 만든다. (로컬 develop 브랜치에서 push 하면 원격에 자동으로 만들어지긴 한다.)
각자 feature/기능명 으로 브랜치를 만들어 기능을 구현한다.(기능명에 이슈번호를 붙여 만들면 구분하기 편하다)
기능을 구현하면 본인이 만든 feature/기능명 브랜치에서 똑같은 이름의 원격 브랜치로 푸쉬한다.
pull request를 보낼 때는 feature/기능명 → develop 브랜치로 보낸다.
코드리뷰 후 develop 브랜치로 merge한다.
팀원들은 원격 develop → 로컬 develop 브랜치로 pull을 받는다.
7-1. 작업중인 브랜치가 있다면, 작업중인 브랜치에서 develop 브랜치를 병합한다. (작업중인 브랜치 ← develop 브랜치)
7-2. 작업중인 브랜치가 없다면, develop 브랜치에서 새 feature 브랜치를 만들어 작업을 시작한다.
1 ~ 7을 반복한다.
개발이 모두 완료되었으면 develop → main 으로 pull request & merge 한다.
1. 구현 기능은 범위를 너무 넓게 잡지 않되, 명확하게 잡는다.
2. 와이어프레임, API 문서, 작업목록 등 문서 정리를 확실하게 하고 코딩을 시작한다.
3. commit과 pull을 자주 한다. merge를 두려워하지 않는다.
오전9시 ~ 다음날 오전6시까지 풀스택 미니 프로젝트를 위한 해커톤이 진행되었다.
대학생 때 코딩 과제하며 밤을 지새우던 기억도 나고… 아침에 핫식스를 사오면서 밤샐 준비를 했다.
주제 선정부터 구현 기능, 와이어프레임, API 문서 작성 등 문서 작업에 이어 구현까지 하루 안에 할 수 있을지 걱정도 되었다.
이번 조에는 프로젝트를 처음 해보시는 분들도 있었고, 하루 안에 만들어야 하기 때문에 작업 스코프를 잘 잡는 것이 중요했다.
주요 기능 하나를 중심으로 추가적인 기능들을 생각하면서 기획을 진행했다.
페이지별 코드 파일들을 잘 나누고 해야할 작업 목록들을 정리하고 목록마다 담당자를 정하여 진행하니, 수월하게 진행되었고 git에서 merge 할 때도 거의 충돌이 없었다.
기능별 작업 단위를 잘 나누고 담당자 배분을 잘한 덕분인 것 같다.
정말 밤을 꼬박 새우고 마지막까지 조금 더 깔끔한 화면을 구현하기 위해 노력했다.
거의 20시간 가까이 집중하여 작업 목록들을 모두 마치고 기능들을 모두 구현했다.
목표한 프로젝트를 완성할 수 있어 뿌듯했고 좋은 경험이었다.
이번 프로젝트로 git을 사용할 때 어려움이 많이 해소되었다. 협업할 때 git을 어떻게 이용하는지 확실히 알게 되었다.
스스로 아쉬웠던 부분은 백엔드 부분은 어느 정도 알고 기능 구현하는데 큰 무리가 없는데, 프론트엔드를 잘 몰라서 html로 잡은 구조를 원하는대로 화면에 배치시키는 것이 마음대로 되지 않았다.
영역을 배치할 수 있는 기본적인 CSS 문법은 공부를 해야겠다고 느꼈다.