Sister Nosilv story

[TIL 10th] 코드카타 까먹은 코드들 / 파이어베이스 쿼리사용법 / 협업시 유의점

by 노실언니

1. SQL 코드카타 | date 형의 출력형식 변경

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/59414
문제 요구: datetype형을 시각(시-분-초)을 제외한 날짜(년-월-일) 만 보여지도록
 1) 시도 : datetype형을 date형으로 형변환 : select date(DATETIME)
  시도결과 : 2014-06-21 12:25:00 -> 2014-06-21 00:00:00 으로 이상하게 나옴
 2) 재시도 : date_format(datetime, '%Y-%m-%d')
  시도결과: 해결

참고자료 :
https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format

 

2. between 형식까먹음 / 그런데, between 보다 성능상 부등호로 구현하는 것이 더 낫다고 함

참고자료 : 
https://velog.io/@minyul/Mysql-Query-Between-%EA%B3%BC-%EC%84%B1%EB%8A%A5-%EC%B0%A8%EC%9D%B4-%EB%B9%84%EA%B5%90-%EB%8D%94%EB%AF%B8%EB%8D%B0%EC%9D%B4%ED%84%B0-50%EB%A7%8C

 

3.  SQL 코드카타 | 특정 필드값의 앞 2자리만 출력

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/131529
문제요구: 상품 카테고리 코드(PRODUCT_CODE 앞 2자리) 별 상품 개수를 출력하는 SQL문
1) 시도 : 앞 2자리 자른 서브쿼리
2) 함수까먹음 https://blog.naver.com/jjys9047/221657325525
3) 해결 : left(PRODUCT_CODE,2)

 

4. SQL 코드카타 | 문자를 숫자로 변경해서 정렬을 원하는 오름차순으로 만들기

해결방법 : CAST('123' AS UNSIGNED);

 

5. SQL 코드카타 | datetype형을 시(24시간제) 1, 2, 3... 으로 가공하기

해결방법 : cast(date_format(DATETIME,"%H") as unsigned)

6. 파이어 베이스 | 날짜추출법 (댓글에 사용하려고)

 

timestamp타입의 데이터를 "2024-12-30" 처럼 출력하려고 함

해결코드:

async function getCommentByUID(uid) {
            // 쿼리설정 : 방명록 중 특정 UID에 해당하는 코멘트만 날짜 내림차순으로
            const q = query(
                collection(db, "comment"),
                where("memberUid", "==", uid), // 팀 전체의 경우 team2code 로 읽으면 됨
                orderBy("date")
            );
            // 쿼리사용해서 DB인출
            console.log("시작");
            const comments = await getDocs(q);
            let tempComment_html; // 코멘트 당 붙일 html
            if (comments.empty) {
                tempComment_html = `<li class="comment">
            <div class="non-comment" style="margin: 0px auto">코멘트가 없습니다</div></li>`;
                $("#comment-list").append(tempComment_html);
            } else {
                comments.forEach((comment) => {
                    // 코멘트 하나씩 row에 할당하고
                    let row = comment.data();
                    let commentId = comment.id;
                    // row의 정보들을 각각 컬럼별로 쪼개서 변수에 할당
                    let content = row["comment"];
                    let lastDate = row["date"].toDate();
                    let year = lastDate.getFullYear();
                    let month = ("0" + (lastDate.getMonth() + 1)).slice(-2);
                    let days = ("0" + lastDate.getDate()).slice(-2);
                    lastDate = year + "-" + month + "-" + days;
                    let commenterId = row["id"];

                    tempComment_html = `<li class="comment">
                        <div class="comment-id">${commenterId}</div>
                        <div class="comment-word">${content}</div>
                        <div class="comment-btn-box">
                            <a class="comment-fix-btn" id="comment-fix-btn" data-id="${commentId}">수정</a>
                            <a class="comment-del-btn" id="comment-del-btn" data-id=${commentId}>삭제</a>
                            </div>
                            <div class="comment-date">${lastDate}</div>
                            </li>`;
                            $("#comment-list").append(tempComment_html);
                });
            }
        }
        getCommentByUID(uid);

 

참고자료 :
https://velog.io/@yundutls/firebase-timestamp%EB%A1%9C-%EB%82%A0%EC%A7%9C-%EC%8B%9C%EA%B0%84-%EC%B6%94%EC%B6%9C%EB%B0%A9%EB%B2%95

 

Firebase Timestamp로 날짜, 시간 추출방법

let doc = { date: new Date()};파이어베이스에서 key값(?) date값을 가지고오려고 new Date() 함수를 사용해서 date값을 가지고와야한다.const row = doc.data();row에다가 doc.data()의 값을 가져와 ro

velog.io

 

7. pull이 abort 되는 상황 | 미추어버리는줄

git pull 한 후의 오류메세지:

error: Your local changes to the following files would be overwritten by merge:
        index.html
Please commit your changes or stash them before you merge.
Aborting

오류의 원인:

해당 파일(index.html) 을 내 컴퓨터(로컬)에서 수정/저장했고 commit은 안 한 상태인데
그 사이에 해당 파일이 원격 저장소에서 (다른 작업에 의해) 바뀌어 있는 경우 발생

 

해결 방법:

1) stash (내 작업 미뤄두기) 명령어를 통해 먼저 변경 사실을 받아옴
2) 내 작업을 commit 하고 pull 받아서 혼합된 변경내역을 수정하면 됨

8. VS익스텐션 prettier의 저장시 자동 정렬기능을 나만 쓰면, 공동작업파일을 다른 팀원이 pull할 때 충돌多

같이 쓰던지 / 다 안 쓰던지 / 사용하되 다른 팀원분의 파일을 아예 건들지 말기

반응형

블로그의 정보

노력하는 실버티어

노실언니

활동하기