기록일지
-
7월, 막상 할 게 없어지는 주말
"왜 살고 있는지 의문이다"평일이면 주말을 기다리지만 막상 주말이 되면 무엇 때문에 주말을 기다렸는지 모르겠다. 매번 똑같은 패턴이어서 그런 가. 운동, PC방, 집, 글쓰기가 내 주말 루틴이다.새로운 장소를 가보거나 무언 가를 해보려 할 때 거리와 금액이 날 멈춰 세운다. 여름이라 날씨도 한몫한다. 에어컨이 있어서 실내는 괜찮지만 야외에서 걸어 다닐 때 찝찝함을 견디는 내 모습이 예상된다. 물질적 접근성은 낮지만 심리적 접근성 때문인 가 행동으로 옮기기 꺼려워진다.그렇다고 집에 있다고 해서 생산적인 행동을 하는 건 아니다. 오히려 손쉽게 접근할 수 있는 도파민 창구인 인터넷으로 가게 된다. 온라인은 양날의 검이다. 잘 이용하면 득이 되지만 중독되기 쉽다.침대에 누워서 폰을 만지작 거리고 엄지로 스크롤만..
2026.07.25 17:00 -
6월, 따블이 된 출퇴근 시간
"출퇴근 1주 차"출퇴근 시간이 2배가 되었다. 이전 사무실이었던 광화문으로 가는 것과 송파로 가는 건 똑같이 환승은 한 번만 하면 된다. 다만 길게 가야 했다. 이제 도착할 때가 됐나 하면 아직 멀었다. 이사한 지 일주일이 되었는데 퇴근할 때마다 현자 타임이다. 열차를 탈 때부터 시작해서 "언제 도착하지", 역에 도착해서 "이걸 매일 반복해야 한다고?" 하루하루 허무를 느끼고 있다.08시에 도착하면 미라클 모닝에 기분이 좋지만 19시 넘어서 퇴근하면 미라클이고 나발이고 내가 뭘 위해 살고 있는지 생각하게 된다. 출퇴근 시간이 길어져서 좋은 건 도서 시간이 반 강제적으로 갖게 된다. 이건 좋지만 헬스장을 가는 시간이 퇴근 시간에 따라 결정되는 것이 단점이다. 난 독서보다 운동을 하고 싶다. 저녁을 먹고..
2026.06.27 17:00 -
5월, 직장인 현실 자각 타임
"퇴근하고 공부를 해야 할까"입사한 지 4개월 차다. 요즘 쉬는 날마다 이렇게 살아도 되는 건지 의문이다. 취업 전에는, 쉬는 날에 공부를 했지만 지금은 하루 종일 침대 안이다. 마음속으로는 개발 공부를 해야 한다는 생각이 있지만 안 하게 된다. 어차피 회사에서 하게 될 텐데 굳이 해야 하나라는 마음이 든다. 공부하는 게 좋다는 건 알지만 주말 정도는 아무것도 안 해도 괜찮지 않을까. 주말에도 개발을 하면 일의 연장선 같다. "직장인이 쉬는 방식"쉴 때 집에만 있으면 감흥이 없다. 나보다 먼저 취업한 친구가 있었는데 휴일을 알차게 보내고 싶다고 계획을 세우는 모습이 문득 떠올랐다. J도 아닌 P가 말이다. 그때는 이해되지 않았지만 이제는 공감된다.침대 위에서 영상 보거나 피시방에서 게임을 해왔는데 더 이..
2026.05.30 14:55
Frontend
-
6개월 차 신입 개발자가 악성 코드 공격에 당한 썰
요약먼저 결론부터 말하면, 현재 사이트는 정상화된 상태다.- 사이트의 악성 코드는 완전히 제거- 공격자가 접근할 수 있었던 침입 경로도 모두 폐쇄- 악성 코드가 사이트에 노출된 시간은 2026년 8월 6일 새벽부터 저녁까지, 약 17시간 정도처음에는 단순한 Cloudflare 인증 화면인 줄 알았다.알고 보니 사이트 자체가 공격당한 상태였고, 방문자에게 악성 프로그램을 설치하도록 유도하고 있었다.이번 글에서는 어떻게 이런 일이 발생했고, 어떤 과정을 거쳐 대응했는지 기록해보려고 한다. 1. 처음에는 Cloudflare 인증인 줄 알았다8월 6일 점심 이후, 콘텐츠 업로드를 위해 사이트에 접속했을 때였다. 직원으로부터 평소와 다른 화면이 나타났다는 이야기를 전달받았다. 화면에는 Cloudflare의 캡차 ..
2026.08.08 14:30 -
결제 페이지 바텀시트, 뒤로가기로 닫히지 않는 문제
배경결제 페이지에서 결제하기 버튼을 누르면 확인용 바텀시트가 등장한다. 안드로이드 기기에서 뒤로가기 버튼을 누르면 바텀시트가 닫히도록 useBackClose 커스텀 훅을 구현했다.useBackClose 커스텀 훅은 바텀시트가 열릴 때 히스토리를 pushState로 하나 추가하고, 브라우저의 popState 이벤트가 발생하면 바텀시트를 닫는 방식이다.다른 페이지의 바텀시트는 정상적으로 닫혔지만, 결제 페이지에서만 브라우저 뒤로가기로 닫히지 않는 문제가 있었다. 증상정상 페이지1. 바텀시트 열기 2. history.pushState() 실행 3. 브라우저 뒤로가기 4. popState 이벤트 발생 5. 바텀시트 닫힘 결제 페이지1. 바텀시트 열기 2. history.pushState() 실행 3. 브라우저 ..
2026.07.12 16:45 -
Nextjs form files API 전송 500 에러
1. 배경첨부파일을 보낼 때 사용자가 request(JSON), files(이미지/PDF)를 multipart FormData로 백엔드에 전송했다. 데스크톱은 정상 동작했지만 iOS Safari, Android Chrome에서 500 오류 발생했다. 2. 문제모바일 브라우저의 Blob Content-Type 누락// 문제 코드fd.append('request', new Blob([JSON.stringify(data)], { type: 'application/json' }));백엔드(Spring)가 `request` 필드를 JSON으로 파싱 하지 못해 500 반환했다. filename을 추가해 모바일도 Content-Type을 올바르게 전송하도록 설정했다.Server Action의 FormData 직렬화파..
2026.06.28 15:45 -
모바일에서 결제 완료 후 뒤로가기 시 이노페이 PG 창 재진입 문제
1. 문제결제 완료 후 청구서 페이지로 리다이렉트 된 상태에서 모바일 뒤로가기를 누르면 이노페이 PG 창으로 재진입되어 결제를 다시 시도할 수 있는 상태가 되었다.PC에서는 PG창이 모달로 뜨기 때문에 해당 문제가 발생하지 않았다. 2. 원인innopay.goPay()가 동일 탭에서 PG 페이지로 내비게이션 하기 때문에 PG 페이지가 브라우저 히스토리 스택에 남았다.결제 완료 후 히스토리 스택: [..., 청구서 페이지, PG 페이지, 갱신된 청구서 페이지]여기서 뒤로가기를 하면 PG 페이지로 이동 가능해 재결재를 시도해야 하는 착각을 줄 수 있었다.실제로 재결제를 하면 이미 결제된 청구서로 예외 처리되었다.PG 페이지와 갱신된 청구서 페이지 사이에 /confirm 페이지가 등장하지만 갱신된 청구서 페이..
2026.06.27 15:05 -
Cloudflare Workers Hostname Routing 충돌 트러블슈팅 - 사이트 접속 연쇄 먹통
증상⨯ [TypeError: fetch failed] { [cause]: Error: getaddrinfo ENOTFOUND staging..com code: 'ENOTFOUND', syscall: 'getaddrinfo', hostname: 'staging..com'}POST /api/auth/login 500 in 99ms 배경기존 환경 URL을 변경한 다음부터 배포할 때마다 간헐적 먹통이 발생했다.몇 분 동안 스테이징, 프로덕션 사이트에 접속되지 않았다.staging-view..com→ staging.dashboard..com 추론 원인이전 구조는 hostname이 서로 완전히 독립적이었으나, 현재 구조는 staging.dashboard.edubilling.com / dashb..
2026.05.31 14:40
우아한테크코스 8기
-
[자문자답] 우테코 8기 최종 테스트 결과
1. 무엇을 하면서 2주(01.10.~01.23.)를 기다렸는지?2주 동안 코드를 보지도, 작성하지도 않았다. 2년 동안 개발 공부하면서 이렇게 긴 시간 동안 아예 개발하지 않은 적은 처음이었다. 한 주는 블로그 글 작성, 기묘한 이야기 정주행, 방탈출, 취업박람회를 갔고 다른 한 주는 마켓컬리 일용직, 도서관, PC방에 가면서 시간을 보냈다. 2. 최종 테스트 결과는 어떻게 되었는지?예제 테스트 결과 "예기치 않은 오류"처럼 탈락했다. PC방에서 롤 랭크전을 끝내고 메일을 확인했는데 다들 웃고 있는 곳에서 나만 울고 있으니 처량했다. 3. 심정이 어떤 지?결과를 본 지 하루가 지나서 마음이 조금 진정된 상태다. 전날은 슬픔, 분노, 자책이 가득 차 있었다. 스무 살이 지나서 이렇게 많이 울고 자책한 적..
2026.01.24 13:30 -
우테코 8기 최종 테스트 후기 "예기치 못한 오류로 인하여 실행에 실패하였습니다."
2026.01.10.(일) FE 테스트 본 날, 귀갓길에 작성 불친절한 미션 리드미"예기치 않은 오류"를 마지막으로 최종 테스트가 종료됐다. 미션 제출 전에 어떻게 PR을 하면 되는지 미션 내용에 적혀 있지 않아서 다른 사람들의 PR을 보고 따라 했다. 브랜치 이름도 아이디로 해야 할 거 같아서 17시 되기 직전에 급히 main에서 깃허브 아이디로 브랜치 생성해서 PR 보냈다. PR 생성 시간이 17시까지인 줄 착각했다. 도움 되지 않았던 준비해 간 소감문 제출이 17시부터였고 17시 이후로는 추가 push가 불가능했다. 16:57 쯤에 PR을 생성했고 17시부터 소감문을 작성했다. 혹시 모를 상황에 소감문을 "."으로 작성해서 임시방편으로 일단 제출했다. 소감문 작성이 중요하다고 생각해서 예제 테스트 ..
2026.01.12 14:25 -
우테코 8기 최종 테스트 선발 발표 30분 전, 한 달 되돌아보기 (+결과)
오픈미션이 끝난지 한 달이 지났다. 오픈 미션을 할 때처럼 최종 테스트 결과를 기다리는 것도 지친다. 길어질수록 마음이 붕 떴지만 결과 발표일이 다가올수록 긴장됐다.우테코가 끝나고 어떻게 지냈는지 공유하고 싶어서 글을 쓰게 됐다.지금 시간으로 발표(15:00)까지 30분 정도 남았다. 미션 끝나고 한 것들- 평일평일 오전에는 알고리즘을 알기 위한 자료구조를 공부했다. 커리큘럼을 따로 세운 건 아니지만 유데미 알고리즘 강의가 대부분 자료구조-알고리즘 순서로 되어 있어서 자료구조를 먼저 공부했다.1. Master the Coding Interview: Data Structures + Algorithms2. [한글자막] JavaScript 알고리즘 & 자료구조 마스터클래스이 두 강의를 들었다.유데미는 할인을 ..
2025.12.29 14:30
도서정리
-
[도서] 나라 운영에 관한
"경제활동이 순조롭게 진전되기 위해서는 평화 유지가 전제이며, 정치적 혼란은 경제에 심한 타격을 준다."앤드류 크레피네비치 · 베리 와츠, 「제국의 전략가」 - NATO 회원국들이 가장 높은 군사적 효율을 위해 합리적으로 행동할 거라고 가정했다. 즉, 관료적이고 조직적인 힘이 결과에 매우 큰 영향을 미친다는 것이다. 데이비드 E 생어, 「퍼펙트 웨폰」 - '중립'은 결코 비정치적인 것이 아니라는 사실과 어떤 사람들은 증오 발언이라고 생각하는 것을 다른 많은 사람들은 일상적인 정치 주장이라고 여긴다는 사실이었다. 에드 콘웨이, 「물질의 세계」 - 충분한 노력과 자원이 있으면 한 국가의 산업을 활성화하는 일은 얼마든지 가능하다. 그러나 제품 생산에 필요한 원료는 만들어 낼 수 없다.- 흥분과 논쟁에 휩싸인 ..
-
[도서] 플라톤과 낭만주의
" 이상주의가 훌륭한 것이고 현실주의가 나쁜 것이라는 생각이 낭만주의가 낳은 결과물이다. "플라톤, 「크리톤」 "전문 지식을 갖지 못한 다수의 판단을 존중한다면, 그는 몸을 망치게 된다.""정의롭지 못한 법적 명령에 복종하는 것은 결국 정의롭지 못한 짓을 하는 셈이 되니 말이다." 플라톤, 「고르기아스」 "자연과 법, 이것들은 대부분 서로 대립하는 것입니다. 그래서 누구라도 부끄럼을 느껴 자신이 생각하는 것을 말할 엄두를 못 내면 자기모순적인 말을 하도록 강요받게 되지요." 플라톤, 「국가론」 "절제의 미덕을 발휘해 작은 것에도 만족할 줄 안다면 늙음이 그리 괴롭지 않습니다.""안전하게 부정을 행할 수 있는 한 인간은 누구나 악행을 저지릅니다. 만일 그렇지 않은 사람이 있다면 그는 단지 남들의 이목이 두..
-
[도서] 능력주의
"정보는 이미 학생들에게 차고 넘친다. 그보다 더 필요한 것은 정보를 이해하는 능력이고, 중요한 것과 중요하지 않은 것의 차이를 식별하는 능력이다."비카스 샤, 「생각을 바꾸는 생각들」 - 부가 최상위층에 과도하게 집중되는 불평등은 거의 예외 없이 부패를 낳습니다.- 문제를 해결하려면 감추는 것이 아니라 오히려 밖으로 드러내야 한다.- 나이가 젊다고 해서 능력이나 통찰력이 미숙하다는 의미는 아닙니다. 나이를 먹으면 경험이 조금 쌓일 뿐이에요.- 민주주의는 다른 모든 정부체제에 비하면 가장 덜 나쁜 체제다. 유발 하라리, 「21세기를 위한 21세기 제언」 - 국민투표와 선거는 언제나 인간의 느낌에 관한 것이지 이성적 판단에 관한 것이 아니다.- 이슬람교는 무슬림이 만들어내는 것이다.- 21세기에 가장 성공..
-
[도서] 과거부터 현재에 이른 인류 사회
"과거의 검열은 정보의 흐름을 차단하는 방식으로 작동했다. 그런데 21세기 검열은 사람들에게 관계없는 정보들을 쏟아붓는 방식으로 작동한다."(2) 애덤 알터, 「만들어진 생각, 만들어진 행동」 - 어쩌면 우리 주위의 세계에서 가장 광범위한 단서는 우리가 바깥에서 시간을 보낼 때마다 매 순간을 규정하는 날씨일지 모른다.- 편견이 생기는 이유는 사람들이 낯선 것과 다른 것을 선천적으로 싫어하기 때문인데, 이 둘은 모두 매슬로가 말한 안전의 욕구를 위협하는 것이다.- 임의로 갖다 붙인 명칭을 통해서도 평소 똑똑하던 사람이 무기력한 사람으로 바뀔 수도 있다는 사실을 잘 보여준다. 유발 하라리, 「호모 데우스 미래의 역사」 - 그들은 적을 도발해 과잉반응을 유도한다. 테러리즘의 본질은 쇼다.- 우리가 변화를 두려..