Provides a dashboard-like visualization of your GitHub activity.
yarn install
yarn dev
GITHUB_ACCESS_TOKEN=
OPENAI_API_KEY=
github activity summary visualization service
Home Page: https://github-dev-stats.vercel.app/
현재 깃헙 API는 클라이언트 단에서 호출되고 있고, 그렇게 하기 위해서 깃헙 액세스 토큰을 public 환경 변수로 사용하고 있습니다(NEXT_PUBLIC_GITHUB_ACCESS_TOKEN). 그런데 이렇게 하면 이 토큰 값이 외부에 노출이 됩니다. 아래 스크린샷을 참조해주세요.
그래서 보통 이런 경우 윤수 님이 별도의 서버를 두어서 클라이언트에서는 이 서버로 요청을 보내고, 이 서버에서 깃헙 서버로 요청을 보내는 방식으로 처리합니다. Vercel에 Serverless function이 있고 이 기능을 이용하시면 편리합니다.
formatCount
유틸 함수에서 count가 정확히 1000일 때는 1k로 표시돼야 하는데, 1000으로 표시될 것 같습니다. 그래서 이런 코드들은 직접 짜는 것보다 라이브러리를 이용하는 편이 낫습니다.
UserList.tsx
59번째 라인에 오타가 있습니다. 그리고 여기서는 cva
나 cn
같은 유틸 함수를 쓸 필요 없이 그냥 "sm:text-[15px] lg:text-[16px]"라고 적어주시면 됩니다.
test
Currently around 900ms to 1200ms
useSearchUser
는 우선 훅 이름과 그 훅이 하는 일이 잘 매치되지 않습니다. 훅 이름만 보면 username을 넘겨 받으면, 그 username으로 user를 검색하는 훅처럼 보이는데, 실제로는 아무 파라미터도 넘겨 받지 않습니다. 이 부분은 어제 말씀드린대로 훅을 없애고 이 훅을 사용하던 해당 컴포넌트에서 직접 처리해주세요.useSearchUserQuery
도 어제 말씀드린 대로 리팩토링 해주시는데 한 가지 덧붙일 것은, debounce
도 useSearchUserQuery
에서 호출할 것이 아니라 호출하는 쪽에서 처리하는게 맞습니다. 왜냐하면 debounce가 useSearchUserQuery
의 본질적인 내용이 아니기 때문입니다. useSearchUserQuery
는 유저를 검색하는 것이 그 함수의 본질적인 역할이고 그 함수의 호출 빈도를 조절하는 것은 유저 검색과는 별도의 동작이기 때문에 useSearchUserQuery
안에서 debounce를 호출하는 것은 맞지 않습니다.MainPageClient.tsx
에서 처리하시는게 좋을 것 같아요. 여기서 showSearchPanel
이라는 상태값을 하나 두시고 이 값이 true일 때만 SearchPanel
을 렌더링 하시는 겁니다. SearchPanel
안에서는 별도의 debounce 기능 없이 바로 네트워크 요청을 보내고요. 그리고 SearchBar
의 onChange
을 이용해서 마지막으로 onChange
가 호출되고 300ms 이상 지나면 showSearchPanel
를 true
로 설정하시면 될 것 같습니다.Fallback.tsx
에서는 타이핑을 아래와 같이 변경하는게 좋겠습니다.type FallbackType = Exclude<AsyncState, "SUCCESS">;
type FallbackProps = {
aysncState: FallbackType;
};
export const Fallback = ({ aysncState }: FallbackProps) => {
const FALLBACK: {
[key in FallbackType]: JSX.Element | string;
} = {
LOADING: <LoadingSpinner />,
NO_RESULT: <p>No results found</p>,
ERROR: <p>An error occurred</p>,
};
return ...
};
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.