Motto

Roll with the punches.

전체 글 24

개발자 첫 회고

䷿ 들어가기에 앞서Node.js 백엔드 개발자로 입사한 지 10개월이 지났습니다. 인턴 회고를 먼저 쓰고 싶었지만 개인 블로그 세팅이 늦어져 이제야 첫 회고를 남깁니다.아직은 많이 부족하지만, 지난 10개월을 돌아보며 잘한 점, 아쉬운 점, 그리고 앞으로의 방향을 정리해보려고 합니다.💼 Keep (잘한 점)1. 기록하는 습관가장 잘했다고 생각하는 점은 기록하는 습관입니다.회사에서 배운 내용이나 해결했던 문제 대부분을 옵시디언에 정리해왔고, 그 덕분에 언제든지 다시 찾아볼 수 있는 저만의 지식 저장소가 만들어졌습니다.입사 전부터 옵시디언을 개인 기록 용도로 사용해왔는데, 운 좋게도 회사에서 열린 개발자 컨퍼런스에서 옵시디언을 주제로 발표할 기회도 있었습니다. 예전보다 나아진 발표 실력을 체감할 수 있어 ..

개발/회고 2025.12.16

Big O 표기법

🌟 실행 시간 측정코드의 성능을 분석하기 위해 실행 시간을 직접 측정하는 것은 비효율적인 일입니다.기기마다 성능도 다르고 시간을 측정하는 방법도 다 다르기 때문입니다. 무엇보다 2시간 동안 실행하는 코드를 직접 실행해서 측정하는 건 매우 귀찮은 일이죠.🌟 Big O 표기법이런 문제를 해결하기 위해 Big O 표기법을 사용합니다. Big O 표기법은 알고리즘의 효율성을 표기 해주는 표기법으로, 다음과 같은 특징을 가집니다.연산의 개수를 측정하는 것보다 Input에 따라 코드가 몇 번 실행됐는지가 더 중요하다.전체적인 추세에만 관심이 있으므로 최고차항만 신경쓰면 된다.삽입 정렬 코드를 한 번 보겠습니다. 이중 반복문 구조이기 때문에 외부 루프는 n-1번, 내부 루프는 최악의 경우 i번씩 돌아서 총 n*(..

CommonJS vs ES Modules

🌟 모듈한 파일에 모든 기능을 다 때려 박는다면 가독성도 좋지 않고 유지 보수도 힘들 것입니다. 그래서 보통 기능 별로 파일을 나누어 사용하는 데, 이를 모듈이라고 합니다. 특정 기능을 하는 JavaScript 파일이 하나의 모듈인 것이죠.🌟 모듈 시스템모듈 시스템은 모듈을 가져오고, 내보내고, 사용하는 등의 기능을 제공해 코드를 구조화하고 관리하는 시스템입니다. 대표적인 모듈 시스템에는 CommonJS와 ES Modules 등이 있습니다.CommonJSCommonJS는 전통적인 모듈 시스템인데 require, exports 명령어로 모듈을 가져오고 내보내는 방식입니다.ES ModulesES Modules는 ES6(ECMAScript 2015)에서 도입된 모듈 시스템으로 import, export를 ..

개발/Web 2025.12.16

JWT에 대한 궁금증

🌟 문제 직면개인 블로그 서비스에서 JWT(Json Web Token)를 활용해 인증 기능을 구현했습니다.인증 기능을 구현하면서 겪었던 궁금증은 크게 3가지입니다.Session ID 방식보다 JWT 방식이 선호되는 이유DB나 Redis에 Refresh Token을 저장하는 이유서버에서 클라이언트로 토큰을 전달하는 방법🌟 문제 해결1. JWT가 선호되는 이유세션 방식과 JWT의 가장 큰 차이점은 클라이언트의 상태를 관리하는 방식에 있습니다.아래 그림과 같이 세션 방식은 서버가 클라이언트의 인증 정보를 보유하고 있기 때문에 Stateful(상태 유지) 특징을 가집니다. 반면 JWT는 토큰 자체에 클라이언트의 인증 정보가 모두 포함되어 있기 때문에 서버가 클라이언트의 상태를 저장할 필요가 없습니다. 서버..

Part2. Pop!_OS 세팅

🌟 자주 사용하는 단축키간단한 단축키SUPER key는 Window key입니다. 더 자세한 키보드 단축키ShortcutActionSUPER검색SUPER + T터미널 열기SUPER + FFiles 열기SUPER + Q창 닫기 화면, 워크스페이스ShortcutActionSUPER + Y타일링 켜기/끄기SUPER + Direction keys창 초점 이동SUPER + Ctrl + 위/아래워크스페이스 간 이동SUPER + Shift + 위/아래워크스페이스 간 활성 창 이동SUPER + Enter => 왼/오 후 Enter창 조정 모드 => 창 교체🌟 터치 패드 설정Pop!_OS에서 터치 패드 스크롤 방향이 기존과 다르므로 설정에서 변경해 줬습니다.🌟 한글 입력 설정사진을 따라 진행하시면 됩니다. 한국어 ..

개발/리눅스 2025.12.16

Part1. Pop!_OS 설치

🌟 Pop!_OS?Pop!_OS는 Ubuntu를 기반으로 한 운영체제입니다. Ubuntu는 데비안을 기반으로 하는 배포판이므로 데비안 명령어를 사용하면 됩니다.🌟 Pop!_OS 장점현재까지 Pop!_OS를 사용하면서 느낀 장점은 아래와 같습니다. 간편한 UIPop!_OS는 Ubuntu와 달리 필요한 앱들만 설치되어 있어 미니멀한 느낌을 줍니다. UI도 깔끔해서 만족도 있게 사용하고 있습니다.Ubuntu 기반Ubuntu 기반이기 때문에 프로그램을 설치하거나 오류가 났을 때 찾아볼 수 있는 자료가 많습니다.자동 타일링제일 큰 장점이라고 생각합니다. 저는 개발 공부를 하고 있어 이것저것 실행할 프로그램이 많습니다. 자동 타일링을 사용하면 듀얼 모니터가 부럽지 않을 정도입니다. 단축키가 매우 잘 되어 있기 ..

개발/리눅스 2025.12.16

Part0. 리눅스 입문

🌟 리눅스를 사용하는 이유저는 현재 Pop!_OS를 사용하고 있습니다. 운영체제는 자신의 상황에 맞게 선택해서 사용하면 되지만, 리눅스 배포판을 사용하고 나서부터 개발의 질이 달라졌습니다. 그래서 다시 Window로 돌아가지 못할 것 같습니다. 😅 (MacOS는 아직 경험이 없습니다.)제가 리눅스 배포판을 사용하면서 느낀 장점은 아래와 같습니다.CLI(Command-Line Interface)를 사용해서 간편하게 작업할 수 있다.무료다.원하는 대로 커스터마이징 할 수 있다.이외에도 여러 가지 장점들이 존재하지만, 거두절미하고 저는 1번 때문에 리눅스를 사용하고 있습니다. 마우스를 움직이지 않고도 명령어 한 줄이면 프로그램을 빠르게 설치하고 실행할 수 있습니다.CLI에 적응하는 시간이 필요하지만, 적응..

개발/리눅스 2025.12.16

Yarn Berry 환경에서 Prisma 사용하기

🌟 문제 직면Yarn Berry 패키지 매니저를 사용하는 환경에서 Prisma Client가 생성되지 않는 오류를 만났습니다. 오류 직면 과정yarn prisma migrate dev 명령어를 통해 schema.prisma 파일 내용을 기반으로 DB 업데이트yarn prisma generate 명령어를 통해 schema.prisma 파일 내용을 기반으로 Prisma Client 생성Error: Could not resolve @prisma/client despite the installation that we just tried.2번 과정에서 @prisma/client를 확인할 수 없다는 에러를 맞닥뜨렸습니다.🌟 문제 해결1. @yarnpkg/pnpify 패키지 설치yarn berry의 PnP(Plu..

WSL(Window Subsystem for Linux) npm 속도 문제

🌟 문제 직면WSL(Window Subsystem for Linux)에서 프로젝트를 실행하는데 걸리는 시간이 비정상적으로 길었습니다. 다른 환경에서는 잘 작동했기 때문에 제 WSL 환경 문제라는 것을 알게 됐습니다.🌟 문제 해결/mnt/c 디렉토리에서 프로젝트를 개발했는데 이곳은 window의 C드라이브입니다. WSL은 Window 드라이브에 액세스하는 것이 매우 느리다고 합니다. (리눅스에 대해 잘 몰랐던 시절이었습니다.)프로젝트 폴더를 ~/src로 옮겨서 속도 문제를 해결할 수 있었습니다!!🌟 참고 링크WSL 속도 문제 이슈WSL 파일 저장소 설정

리눅스 패키지 의존성(Linux Package Dependencies)

🌟 리눅스 패키지먼저 의존성을 이해하기 위해서는 리눅스 패키지(Linux Package)에 대한 이해가 필요합니다.리눅스 패키지는 소프트웨어의 실행에 필요한 모든 파일과 설치 정보를 담은 압축된 아카이브 파일(Archive file)입니다. 윈도우의 EXE 파일과 비슷한 개념이라고 보면 될 것 같습니다. 1. 패키지 형태소프트웨어를 배포할 때 2가지 형태로 구분할 수 있습니다. 소스 코드 형태로 배포되는 소스 패키지 방식, 이미 컴파일된 파일이 들어있는 바이너리 패키지 방식. 1.1 소스 패키지소스 패키지는 소프트웨어를 이루고 있는 소스 코드만을 포함하는 단순한 패키지(tar.gz) 입니다. 따라서 사용자가 직접 컴파일하고 설치해야하는 불편함이 있습니다.TAR 아카이브(tar): 여러 파일과 폴더를 모..

개발/리눅스 2025.12.16