Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[홍서하] sprint 9 #696

Conversation

hongseoha
Copy link
Collaborator

@hongseoha hongseoha commented Jun 14, 2024

요구사항

기본

  • 자유 게시판 페이지 주소는 “/boards” 입니다.
  • 전체 게시글에서 드롭 다운으로 “최신 순” 또는 “좋아요 순”을 선택해서 정렬을 할 수 있습니다.
  • 게시글 목록 조회 api를 사용하여 베스트 게시글, 게시글을 구현합니다.
  • 게시글 title에 검색어가 일부 포함되면 검색이 됩니다.

심화

  • [x]
  • []

주요 변경사항

스크린샷

image

멘토에게

image
image
사이즈를 줄였더니 미디어쿼리대로 되는 게 아니라 비율 맞춰서 작아져버립니다. 어떤 부분이 문제일까요..?ㅜㅜ


@hongseoha hongseoha requested a review from kiJu2 June 14, 2024 14:06
@kiJu2
Copy link
Collaborator

kiJu2 commented Jun 17, 2024

수고 하셨습니다 ! 스프리트 미션 하시느라 정말 수고 많으셨어요.
학습에 도움 되실 수 있게 꼼꼼히 리뷰 하도록 해보겠습니다.

@kiJu2
Copy link
Collaborator

kiJu2 commented Jun 17, 2024

commit 단위를 더욱 자주, 작게 해보시는건 어떠실까요?

git을 다룰 때 commit은 "언제 해야 하는가"를 생각해보신 적 있으신가요?
흔히 하는 말이 있습니다:

커밋은 합칠 수 있지만 나눌 수 없습니다.

그럼 커밋을 언제 해야 할까요?

저는 다음과 같은 룰을 지키며 커밋을 하는걸 권장 드립니다:

  1. 커밋을 하는 단위는 커밋 메시지 한 줄로 설명할 수 있는 행동
  2. 하나의 목표 혹은 액션이 달성될 때

관련하여 읽으시면 좋은 아티클을 추천드릴게요:

tl;dr

관련 변경 사항 커밋
커밋은 관련 변경 사항에 대한 래퍼여야 합니다. 예를 들어 두 개의 다른 버그를 수정하면 두 개의 별도 커밋이 생성되어야 합니다. 작은 커밋을 통해 다른 개발자가 변경 사항을 더 쉽게 이해하고 문제가 발생한 경우 롤백할 수 있습니다. 준비 영역과 같은 도구와 파일의 일부만 준비하는 기능을 통해 Git을 사용하면 매우 세부적인 커밋을 쉽게 만들 수 있습니다.

자주 커밋
커밋은 커밋을 작게 유지하고 관련 변경 사항만 커밋하는 데 도움이 되는 경우가 많습니다. 또한 이를 통해 코드를 다른 사람들과 더 자주 공유할 수 있습니다. 이렇게 하면 모든 사람이 정기적으로 변경 사항을 통합하고 병합 충돌을 방지하는 것이 더 쉬워집니다. 대조적으로, 대규모 커밋을 갖고 이를 드물게 공유하면 충돌을 해결하기가 어렵습니다.

미완성 작업을 커밋하지 마십시오
논리적 구성 요소가 완료된 경우에만 코드를 커밋해야 합니다. 자주 커밋할 수 있도록 기능 구현을 빠르게 완료할 수 있는 논리적 청크로 분할합니다. 깨끗한 작업 복사본이 필요하기 때문에(브랜치 확인, 변경 사항 가져오기 등) 커밋하고 싶은 유혹이 든다면 Git의 «Stash» 기능을 대신 사용하는 것이 좋습니다.

커밋하기 전에 코드를 테스트하세요
완료되었다고 생각하는 일을 저지르고 싶은 유혹에 저항하세요. 철저하게 테스트하여 실제로 완료되었는지, 부작용이 없는지(알 수 있는 한) 확인하세요. 로컬 저장소에 설익은 것을 커밋하려면 자신만 용서하면 되지만, 코드를 다른 사람과 푸시/공유하는 경우에는 코드를 테스트하는 것이 훨씬 더 중요합니다.

원문 보기

또한 깃 커밋 메시지 컨벤션도 함께 읽어보세요:

tl;dr:

커밋 메시지 형식

type: Subject

body

footer

기본적으로 3가지 영역(제목, 본문, 꼬리말)으로 나누어졌다.

메시지 type은 아래와 같이 분류된다. 아래와 같이 소문자로 작성한다.

feat : 새로운 기능 추가
fix : 버그 수정
docs : 문서 내용 변경
style : 포맷팅, 세미콜론 누락, 코드 변경이 없는 경우 등
refactor : 코드 리팩토링
test : 테스트 코드 작성
chore : 빌드 수정, 패키지 매니저 설정, 운영 코드 변경이 없는 경우 등

원문보기

@kiJu2
Copy link
Collaborator

kiJu2 commented Jun 17, 2024

사이즈를 줄였더니 미디어쿼리대로 되는 게 아니라 비율 맞춰서 작아져버립니다. 어떤 부분이 문제일까요..?ㅜㅜ

_document.tsx 혹은 layout.tsx에서 head 태그 내에 <meta name="viewport" content="width=device-width, initial-scale=1.0">를 추가해보시겠어요?

<div key={post.id} className={styles.BestContainer}>
<div className={styles.InnerContainer}>
<Image src="/Img/badge.svg" width={102} height={30} alt="badge" />
<Image src="/Img/badge.svg" width={102} height={30} alt="" />
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

굳굳 ~! 😊

장식용 이미지를 잘 스킵하셨군요 👍

Comment on lines +18 to +25
.nav{
text-decoration: none;
font-size: 18px;
font-weight: 900;
padding: 24px 23px;
}
}
.profile{
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

프리티어를 사용해보시는거 어떨까요 ?

Suggested change
.nav{
text-decoration: none;
font-size: 18px;
font-weight: 900;
padding: 24px 23px;
}
}
.profile{
.nav{
text-decoration: none;
font-size: 18px;
font-weight: 900;
padding: 24px 23px;
}
}
.profile{

사소한 줄바꿈, 띄어쓰기 등 코드를 작성하시다보면 자연스럽게 불규칙해지는 경우가 많아요.
이를 돕기 위해서 개발 커뮤니티에서는 개발 경험 향상을 위한 여러가지 도구들이 있는데요.

보편적으로 많이 사용되는 툴은 prettier입니다 !

Prettier: https://prettier.io/

prettier는 vscode plugin에서 install하고 실행할 수 있습니다 ! 🤗

macos 경우 option + shift + f
windows의 경우 alt + shift + f

@@ -1,7 +1,7 @@
import axios from 'axios';

const baseURL = axios.create({
const instance = axios.create({
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

굳굳 의미가 더욱 뚜렷해졌군요 !

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

혹시 추 후 인가 처리하실 때에 도움이 되실 것 같아서요 !

아래는 axios의 메써드인 interceptors를 통하여 미들웨어로 인가를 처리하는 예제예요 ! 한 번 확인해보시고 적용하시는 것도 고려해보세요 😊😊😊

instance.interceptors.request.use(
  (config) => {
    const accessToken = localStorage.getItem('accessToken')?.replace(/"/gi, '');

    if (!accessToken) return config;
    config.headers.Authorization = accessToken;
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

instance.interceptors.response.use(
  (response) => {
    return response;
  },
  (error) => {
    alert(`ERROR: ${error.response.data.message} `);
    return Promise.reject(error);
  }
);

Comment on lines +17 to +19
const sortedArticles = posts
? [...posts].sort((a, b) => b.likeCount - a.likeCount)
: [];
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

posts의 양이 매우 많아질 수 있다면 메모이제이션을 해볼 수 있어요:

Suggested change
const sortedArticles = posts
? [...posts].sort((a, b) => b.likeCount - a.likeCount)
: [];
const sortedArticles = useMemo(() => posts
? [...posts].sort((a, b) => b.likeCount - a.likeCount)
: [], posts)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

그리고 서하님께 도움이 될 것 같아서 첨부드려요 !

리액트 메모이제이션에 대한 아티클입니다:

tl;dr

특히 비용은 useCallback동료 useMemo를 위해 코드를 더 복잡하게 만들고 종속성 배열에서 실수를 할 수 있으며 내장 후크를 호출하고 종속성과 메모된 값을 방지하여 잠재적으로 성능을 저하시킬 수 있다는 것입니다. 가비지 수집으로부터 보호됩니다. 필요한 성능 이점을 얻는 경우 이는 모두 괜찮은 비용이지만 먼저 측정하는 것이 가장 좋습니다.

관련 자료:

원본 보기

import {Post} from "@/type/type";
import styles from './index.module.css';
import { Post } from '@/type/type';
import instance from '../../lib/axios';
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

상대 경로를 사용하지 말고 별칭 경로를 사용해보는게 어떨까요?

.tsconfig에서 다음과 같이 별칭으로 경로를 설정해볼 수 있어요:

{
  "compilerOptions": {
    "baseUrl": ".", // 모든 절대 경로의 기준점
    "paths": {
      "@/*": ["src/*"] // '@'를 사용하여 src 디렉토리를 가리키는 별칭 설정
    },

그러면 다음과 같이 사용할 수 있어요 !

import { SomeComponent } from '@/components/SomeComponenet';

@kiJu2
Copy link
Collaborator

kiJu2 commented Jun 17, 2024

서하님 ~! 스프린트 미션 수행하시느라 수고 많으셨어요 ㅎㅎㅎ
저희가 멘토링 시작하고 처음부터 지금까지 약속을 지키고 꾸준히 미션을 제출해주셔서 고맙습니다 !
스프린트 미션을 수행하신 것은 분명히 서하님께 도움이 될거라고 확신합니다 !

리뷰 중 궁금하신거 있으시면 사전 질의를 통해서 남겨주시거나 멘토링 미팅 때 질문주세요 ㅎㅎㅎ

@kiJu2 kiJu2 merged commit 9bae794 into codeit-bootcamp-frontend:Next.js-홍서하 Jun 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants