안녕하세요. 강의 잘 듣고 있습니다. 강의 수강하면서 질문이 하나 있는데요. 지금 제 상황은 1차적으로 출처를 각주에 적지 않음 그냥 본문뒤에 (출처:)를 적는 식으로 통일함 예시) 한글 공부가 너무 어렵네요 (출처: 내 머릿속) 이제 최종적으로 "(출처:" 로 시작해서 ")"로 끝나는 모든 문장을 각주로 넣고 싶음 입니다. 그러면 생각나는 아이디어로는 "(출처:" 로 시작해서 ")"로 끝나는 문장마다 해당 지점에서 각주를 추가하고 복사 후 원래 문장은 지우는 방식으로 반복을 해야 할 것 같은데요. 그런데 혼자 씨름해봐도 쉽지가 않네요. 혹시 어떤 함수를 사용해야할지 도움 주시면 감사하겠습니다. 완벽한 코드가 아니더라도, 어떻게 사용할지 아이디어라도 주시면 제가 해결하겠습니다! 제가 필요한 부분만 수강중인지라, 제목에서 저와 상관없다고 하는 기능은 안 들어서 혹시 설명해주신 강의가 있다면 제목 말씀해주시면 수강하겠습니다.
toggleTodo = useCallback( ( id : number) => { <-- 여기 이 지점에 todos 라는 state 값이 필요한 상황 ( 체크 로직 등등.. ) setTodos( (todos) => todos.map( (todo) => todo.id === id ? { ...todo, completed: !todo.completed } : todo ); }, []); 위 부분에 todos 의 state 값이 필요하게 되면 의존성 배열에 todos 를 넣어줘야 될꺼 같은데요. 이렇게 되면 React.memo 에 의해 전달될 toggleTodo props 도 변경되게 될것으로 예측 되고 결국 자식 컴포넌트들이 리렌더링이 계속 발생되지 않을까 싶은데요. 위 부분에 todos 의 state 값이 필요하게 될 경우에는 어떻게 처리를 해줘야 될까요?
PS D:\programming\react-Lee\projects\section12> vercel login vercel : 'vercel' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름 이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오. 위치 줄:1 문자:1 + vercel login + ~~~~~~ + CategoryInfo : ObjectNotFound: (vercel:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException PS D:\programming\react-Lee\projects\section12> --- vercel login이란 명령어를 입력하니 위와 같은 에러가 뜨는데요. vscode에 아무것도 안깔고 회원가입만 했다고 vercel이란 명령어를 쓸 수 있는건가요??
안녕하세요 강의 정말 잘 듣고있습니다. 현재 강의를 무한 중첩 댓글 구현하기까지 수강했습니다! 테스트를 위해 여러가지 사항들을 직접 체크하고있는데 Github로 로그인한 사용자의 정보들(avatar_url, name)들은 기본적으로 사용하지 않고 랜덤한 닉네임과 기본 아바타 이미지가 나오는게 정상 동작일까요? 제가 이해한 흐름은 다음과 같습니다. 1. Github(OAuth) 로그인 2. Supabase Authentication > Users에 사용자 생성 (profile 테이블에는 아직 생성 되지 않음) 3. SessionProvider에서 useProfileData 호출 export default function SessionProvider({ children }: { children: ReactNode }) { const session = useSession(); const setSession = useSetSession(); const isSessionLoaded = useIsSessionLoaded(); const { data: profile, isLoading: isProfileLoading } = useProfileData( session?.user.id, ); useEffect(() => { supabase.auth.onAuthStateChange((event, session) => { setSession(session); }); }, []); if (!isSessionLoaded) return <GlobalLoader />; if (isProfileLoading) return <GlobalLoader />; return children; } 4. fetchProfile(userId) 실행 export async function fetchProfile(userId: string) { const { data, error } = await supabase .from("profile") .select("*") .eq("id", userId) .single(); if (error) throw error; return data; } Supabase Table Editor > profile 에는 아무런 결과가 저장되어 있지 않기 때문에 PostgrestError: PGRST116 에러 발생 useProfileData catch 블록 실행 → createProfile 호출 랜덤한 닉네임 + avatar_url이 기본으로 저장 만약 제가 이해한 흐름이 맞다면 어떤 방법을 써야할까요? 제일 먼저 드는 생각은 createProfile에 session을 매개변수로 받아서 session.user.user_metadata.full_name 과 avatar_url 을 insert에 넣는걸 생각했습니다. createProfile export async function createProfile(userId: string, session?: Session) { const { data, error } = await supabase .from("profile") .insert({ id: userId, // ↓ 여기 수정 했어용 nickname: session?.user.user_metadata?.full_name || getRandomNickname(), avatar_url: session?.user.user_metadata?.avatar_url || null, }) .select() .single(); if (error) throw error; return data; } use-profile-data.ts export function useProfileData(userId?: string) { const session = useSession(); const isMine = userId === session?.user.id; return useQuery({ queryKey: QUERY_KEYS.profile.byId(userId!), queryFn: async () => { try { const profile = await fetchProfile(userId!); return profile; } catch (error) { if (isMine && (error as PostgrestError).code === "PGRST116") { return await createProfile(userId!, session!); // 여기 session 추가 했어용 } throw error; } }, enabled: !!userId, }); } 이렇게 코드를 수정하고 profile table을 삭제한 후 다시 Github로 로그인 하면 사용자의 프로필 이미지와 이름이 받아와졌습니다. 더 효율적이거나 더 좋은 방법이 있을까요? 혹은 제가 잘못 알고 있는게 있을까요?
큰돌님 안녕하세요. 알고리즘강의부터 유튜브까지 잘 시청하고있습니다. 프론트엔드를 목표로 준비를 하고있는데 대부분 포트폴리오 페이지를 하나씩 구축을 하고 이력서와 같이 첨부하더라구요.. 과거에 리액트 + GSAP로 인터렉션 위주로 만들어놓은게 있지만 손볼것도 많고 요즘은 NextJS가 추세라하여 새로 만들어야할것같은데 이부분이 프론트 지원시 거이 필수적인지 궁금합니다.
React-Router 설정 강의 다름이 아니고요 강의 내용을 보면 생성위치가 PS: C\r2025\front\ch2 폴더 (당연히 ch2 겠지만요...^^) 로 되어있는데요 ch1 프로젝트에서 계속 진행하면 안되나요? 아니면 ch2 로 다시 만들어서 진행해야 할까요? 그리고 ch2 만들때 특이 사항이 없는지.. 갑자기.. frontend/ch2 폴더에서 진행을 하셔서요... (ch2 프로젝트 하나 생성해서 따라하면 땡이지만...ㅋㅋㅋ) 살짝 궁금해서 질문 드립니다.
안녕하세요! 제가 vercel에 배포를하려고 시도하고 있습니다. 현재까지 진행 상황과 문제를 정리하면 아래와 같습니다. 프로젝트 배포는 정상적으로 완료됨 그러나 브라우저에 접속 시 파비콘이 표시되지 않음 <link rel="icon" type="image/svg+xml" href="/favicon.ico" /> public 폴더 내 favicon.ico 파일 존재 로컬 개발 서버(npm run dev)에서는 정상적으로 표시됨 배포 후 URL 접속 시 브라우저 캐시를 지워도 여전히 표시되지 않음 혹시 Vercel 환경에서 파비콘이 정상적으로 나오도록 하기 위해 추가로 확인해야 할 부분이나, 권장 설정이 있을지 조언 부탁드립니다.
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 마크다운, 단축키를 이용해서 편리하게 글을 작성할 수 있어요. 먼저 유사한 질문이 있었는지 검색해보세요. 서로 예의를 지키며 존중하는 문화를 만들어가요. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 올초에 블로그에서 글을 보고 이후 강의 완료후 지금 까지 실천하고 있는 개발자 입니다. 중간중간 문제가 많이 있었는데 관련 문제 및 조언 요청 드립니다. 1. 현재 개발한 앱은 18개 정도 입니다. 광고 비용 최적화를 진행 하였으나 광고 비용보다 수익이 넘어선거는 최근 1개월 정도 입니다. 앱의 갯수가 더많아질경우 광고를 전체 앱에 진행하기 어려울텐데 광고를 계속 진행하는 여부는 어떻게 판단하시는지 굼긍합니다. 2. 계정을 여러개 사용하신 것으로 알고 있는데 저는 운좋게 이전에 만들어 놓은 계정이 한개 있어서 이계정의 경우 사전 심사 없이 앱을 여러개 출시 할수 있습니다. 하지만 앱이 많아지면서 관리 문제나 애드몹 제재 문제로 인하여 계정을 여러개 필요로 하는 상황이 점점 많아지는데 현상황에서 이를 해결할 방법이 있을까요? 3. 근원적인 문제인데 애드몹의 제재를 올해를 보내면서 광고 제재 6회이상 광고중단 2회 정도 받으면서 사실 굉장히 힘들었습니다. 중간에 유니티나 기타 다른 플랫폼으로 옮겼지만 광고 수익이 미미하였고 이문제 때문에 애드몹 계정을 앱별로 나누어 사용해도 될지 궁금합니다. 애드몹 계정을 여러개 사용하면 계정 삭제 또는 큰 처벌을 받을수 있다는 이야기만 있어서 이에 대한 조언 부탁드립니다. 4. 현재 20여개의 앱중에 3~4개만이 유의미한 수익이 나오고 있습니다. 현재 일평균 앱4~5개누적 수익이 겨우 1.8 ~2달러 정도 입니다. 특정 기간에는 3~4달러 정도 나오지만 아무래도 앱의 특성상 광고를 통한 신규 유저들을 통한 수익이어서 오가닉 유입은 약한 것으로 보입니다. 혹시 이정도의 수익인 앱이지만 꾸준히 가져 가는게 맞는 것인지 초반에는 앱을 유지 하는 기준을 수익의 어느 정도 또는 기간동안 어느 정도의 유저 반응을 보고 판단하는지 궁금합니다. .. 중복질문이 되었네요 주말 잘보내시고 조언 및 답변 부탁드립니다. 감사합니다.