전체 글 26

NodeJs는 싱글 스레드라는 말은 절반만 맞았다

포트폴리오 글을 정리하다가 문득 깨달았습니다.그동안 제가 쓴 글엔 JavaScript 자체를 정면으로 다룬 글이 없다는걸 알게됐습니당그래서 이번 글은Node.js를 처음 배울 때 가장 헷갈렸던 질문을 기준으로 정리해보려고 합니다."Node.js는 싱글 스레드인데, 왜 동시에 여러 일을 처리할까?""싱글 스레드면 느린 거 아닌가요?"처음 Node.js를 배울 때 제일 헷갈렸던 문장이 있습니다."JavaScript는 싱글 스레드다."그러면 자연스럽게 이런 생각이 따라옵니다.한 번에 한 작업만 할 수 있다?요청이 많아지면 바로 막히는 거 아닌가?그런데 왜 Node는 대규모 트래픽 처리 사례가 많지?저도 여기서 한동안 꼬였습니다.결론부터 말하면,문장이 틀린 게 아니라 해석이 반쪽짜리였던 것입니다.JS 실행은 싱..

개발 2026.02.26

좀 많이 늦은 2025년 회고록

안녕하십니까 요새 무슨 경우인지 모르겠지만 나태해져서 글도 쉬엄쉬엄 쓰다가 너무 많은 시간이 흘렀네요이번 주제는 개발이 아닌 저의 25년을 돌아보는 글입니다.1분기( 1월 ~ 6월)이때가 참 좋기도 하면서 많은 일들이 있었는데요 바로 첫 20살을 즐기기 위해 1월 1일에 밤새서 술을 마신 기억이 나네요 ㅎㅎ 오랜만에 친구들도 만나 술도 먹고노래방도 가고 잘 놀았습니다 (1월의 기억은 이게 다네요 집 -회사 - 술) ㅋㅋ 그러다보니 2월이 왔어요 이때가 저에겐 재미없을 시기였는데요 아무래도 회사를 가다보니 친구들과 자주 만나지는 못하고 집 - 회사 만 반복해서 간 기억이 있네요또 하나 친구네 집에서 술마시다 재회까지 됐던 시기네요.. 그리고 대망의 3월이 왔었죠 이때는 제가 무슨 생각인지 모르겠는데 재회를..

일상 2026.02.09

[rn-expo] Link와 useRouter는 결국 같은 구현체였다

Expo Router를 쓰다 보면 자연스럽게 Link 컴포넌트와 useRouter() 훅을 자주 보게 된다.겉보기엔 완전히 다른 방식처럼 보이지만, 실제 내부 구현을 따라가 보면 둘이 결국 같은 로직을 공유하고 있다는 사실을 확인할 수 있다.이 글에서는 그 흐름을 코드 레벨에서 직접 따라가 보면서 정리해보려고 한다.1. Link 컴포넌트의 내부로 들어가보자먼저 출발점은 Link 컴포넌트.👉 코드 위치expo-router/link/Link.tsx — 80번째 줄https://github.com/expo/router/blob/main/packages/expo-router/src/link/Link.tsx#L80여기서 중요한 부분은 useLinkToPathProps라는 훅을 호출한다는 점이다: 그럼 자연스럽게..

개발 2025.12.09

[nextJs]ssr 환경에서 params 사용하기

ssr 환경에서 동적라우팅을 하여 params 정보를 받아오고 있었습니다 기존에는 잘 몰라서 'use client'로 useParams() 훅을 사용했는데 ssr 환경에서 사용해보고 싶어졌습니다그런데 당시 밑에 에러를 주기 시작했어요Error: Route "/stock/[stockId]" used params.stockId. params should be awaited before using its properties. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis at StockPage (src/app/stock/[stockId]/page.tsx:8:26) Error: Route "/stock/[stockId]" used `para..

카테고리 없음 2025.11.13

window 환경설정

rn 개발자는 아니지만 어찌저찌 회사에서 rn 개발까지 하게됐다 요구 사항은 녹음 기능 인데 기존엔 native-av 이런걸로 했나보다 근데 현재는 expo-audio 를 활용해 녹음 기능을 권장하는것으로 보인다하지만 audio 도입하고 기존에 잘 돼던 친구들이 갑자기 빌드 실패로 인해 돌아갔다 문제는 환경설정 이었다 바로 window 환경설정을 했다 해당 프로그램을 들어가서 환경 변수(N) 을 눌러주고여기서 수정한다음 터미널을 새로 시작하고 캐시를 지워주면 된다

카테고리 없음 2025.11.11

[네트워크]Ip 주소의 클래스

이번 글은 IP 주소 클래스와 공인/사설 IP 개념을 한 번에 정리해보려고 합니다비전공자 분들도 “아 이게 그런 거였구나” 하실 수 있도록 쉽게 풀어볼게요. 글 중 오류가 있는 부분은 댓글로 말씀 부탁드려요!문제인터넷을 하다 보면 IP 주소라는 말이 많습니다근데 막상 보면 192.168.0.1, 10.0.0.1, 203.252.1.10 이런 숫자들만 덩그러니 있고대체 이게 뭔지, 어디서 쓰는 건지 헷갈리기 마련이에요.저도 처음에는“이 숫자들이 그냥 ip구나 하고 어떻게 생기는지 몰랐습니다…”사실 이 숫자 안에 주소 체계, 구역, 용도가 다 들어 있습니다.IP 주소란?인터넷 세상의 집 주소입니다 🏠IP 주소는 인터넷에 연결된 기기를 구분하기 위한 고유한 주소예요.예를 들어 192.168.0.1은 “192..

카테고리 없음 2025.10.28

바이낸스 api 호출하여 시가총액 50 차트 보여주기

이전 포스팅은 하나의 차트를 보여주는 역할이었는데 홈으로 들어왔을때 차트를 시가총액 순위로 코인을 나열해준다사용자가 사이트를 들어왔을때 처음 마주하는 화면인데 문제가 있었다그것은 바로 코인 데이터가 일정하지 않고 실시간이 아닌 1분 단위로 데이터를 받아오는 coingecko 를 사용하기 때문인데 이러면홈과 차트에서의 데이터가 달라 ux적 경험을 망친다고 생각이 들어 binaceApi로 api를 바꾸기로 결심했다 허나 해당 홈을 보면 데이터는 실시간으로 변동하지만 이미지를 불러오지 못해 깜빡거림 현상이 발생한다해당 호출을 막기 위해이렇게 임의로 써봤지만 그래도 404로 도배가 되었다왜 이런가 궁금해서 원인을 찾아본 결과 coin.image가 존재하지 않아서 undefined거나 잘못된 URL이라면,..

nextJs 2025.10.16

nextJs로 투자 차트 불러오기

토스 증권 같은 ui를 만들어서 사용자가 편하게 쓸 수 있도록 전시간에 만들어보았다. 하지만 차트가 이상하게 나오는 이슈가 있었고해결을 하려다 원인 인지를 못하고 공식문서를 찾던 중 https://www.tradingview.com/widget-docs/widgets/charts/advanced-chart/ Advanced Chart: Widget Code & Settings — TradingViewAdvanced Real-Time Chart Here's a free and powerful chart for you to easily embed in any website. Make it yours with a ton of different customization options.www.tradingview..

nextJs 2025.09.22

바이낸스 api로 차트 만들기

전 블로그에 바이낸스 api로 트레이딩뷰에서 제공하는lightweight-charts를 활용해 차트를 만들어보겠다 우선 활용을 위한 돔을 만들어준다.const chartContainerRef = useRef(null);const chartInstance = useRef(null);const seriesInstance = useRef | null>(null);그 후 fetch를 사용중이기 때문에 useEffect를 호출해 데이터 가공 및 차트를 만들어준다.그리고 이제 렌더링 된 화면을 보자그런데 차트가 뭔가 이상하다 다음시간에 디버깅을 해보자...

nextJs 2025.09.22

nextJs의 ErrorHandling

https://nextjs-ko.org/docs/app/building-your-application/routing/error-handling Error Handling – Nextjs 한글 문서Learn how to display expected errors and handle uncaught exceptions.nextjs-ko.org nextJs 프로젝트를 시작 하기 전 해당 글을 읽으며 이해가 안된 부분이 있었다. 'use client' // Error boundaries must be Client Components export default function GlobalError({ error, reset,}: { error: Error & { digest?: string } reset:..

nextJs 2025.09.16