[TIL] 22/05/03

진이진이·2022년 5월 3일
0

TIL

목록 보기
8/74
post-custom-banner

회원가입 기능 구현

  • 해시함수란?
    알고리즘의 한 종류로서 임의의 데이터를 입력 받아 항상 고정된 길이의 임의의 값으로 변환해주는 함수
    -동일한 값은 동일한 값, 입력값이 달라지면 결과값이 달라지기 때문에 역으로 추정이 불가능
    회원가입 시, 입력 정보는 DB에 저장 비밀번호는 암호화하여 저장

로그인 기능

  • JWT ( JSON Web Token )란?
    JSON 객체를 사용해 정보를 안정성 있게 전달하는 웹표준으로 예를 들어 놀이동산 티켓과 같은 느낌이다. 자신의 고유 식별띠(키)를 이용해 신분을 확인하게 할 수 있다.

메인 페이지 기능 만들기 - 포스팅

  • 포스팅함수
function post() {
    let comment = $("#textarea-post").val()
    let today = new Date().toISOString()
    $.ajax({
        type: "POST",
        url: "/posting",
        data: {
            comment_give: comment,
            date_give: today
        },
        success: function (response) {
            $("#modal-post").removeClass("is-active")
						window.location.reload()
        }
    })
}
  • 문자열로 변환하기
posts = list(db.posts.find({}).sort("date", -1).limit(20))
for post in posts:
    post["_id"] = str(post["_id"])
  • 포스팅 시간 나타내기
function time2str(date) {
    let today = new Date()
    let time = (today - date) / 1000 / 60  // 분

    if (time < 60) {
        return parseInt(time) + "분 전"
    }
    time = time / 60  // 시간
    if (time < 24) {
        return parseInt(time) + "시간 전"
    }
    time = time / 24
    if (time < 7) {
        return parseInt(time) + "일 전"
    }
    return `${date.getFullYear()}${date.getMonth() + 1}${date.getDate()}`
}
  • 좋아요 숫자 표시하기
for post in posts:
    post["_id"] = str(post["_id"])
    post["count_heart"] = db.likes.count_documents({"post_id": post["_id"], "type": "heart"})
    post["heart_by_me"] = bool(db.likes.find_one({"post_id": post["_id"], "type": "heart", "username": payload['id']}))
  • 찬 하트( fa-heart )를 보여줄 것인지, 빈 하트( fa-heart-o )를 보여줄 것인지 결정
let class_heart = ""
if (post["heart_by_me"]) {
    class_heart = "fa-heart"
} else {
    class_heart = "fa-heart-o"
}
  • 위의 과정을 조건부 삼항 연산자(ternary operator)로 한줄표현 가능
    변수 = 조건 ? 참일 때 값 : 거짓일 때 값
let class_heart = post['heart_by_me'] ? "fa-heart": "fa-heart-o"
  • 좋아요 숫자 형싱 바꿔주기
function num2str(count) {
    if (count > 10000) {
        return parseInt(count / 1000) + "k"
    }
    if (count > 500) {
        return parseInt(count / 100) / 10 + "k"
    }
    if (count == 0) {
        return ""
    }
    return count
}

🥚 느낀점
오늘로써 웹 프로그래밍 4주차까지 끝냈다
오늘은 강의를 따라하면서 에러는 발생하지 않았지만 코딩이 길어서 헷갈렸던게 많았던 것 같다. 내일은 지금까지 했던 프로젝트들을 복습하는 시간이 있기 때문에 금요일부터 시작하는 프로젝트를 시작하기 전에 다 뜯어봐야겠다.

profile
개발 어린이
post-custom-banner

0개의 댓글