기록일지
-
8월, 해킹-매칭-사별-권고사직
"연차 전 날 해킹"많은 일이 있었다. ClickFix 공격에 당해서 맥을 포맷해야 하지 않나, 사이트 악성 코드 삭제 작업을 하지 않나. 연차 전 날에 깔끔하게 기능 배포 마무리하고 여유로운 저녁을 보내려 했지만 내 저녁은 회사에서 이뤄졌다.금방 끝날 일이었지만 공격당한 노트북에서 악성 코드 제거 작업을 하는 건 리스크가 컸다. 포맷하고 비밀번호를 바꾸는 데 오랜 시간이 걸렸다. 이런 경험이 처음이기도 해서 어떤 작업을 우선순위로 가져가야 할지 방향을 잡는 것이 병목이었다. 동일한 보안 사고가 일어나면 이것보다 더 빠르게 대처할 수 있을 것이다. 맥에서 로그인되었던 비밀번호 수정과 포맷을 동시에 했으면 새벽 1시 전에 집 도착했을 텐데 아쉽다.솔직히 포맷을 해야하나 긴가민가 했다. "굳이 포맷을?" 안..
2026.08.29 20:10 -
7월, 막상 할 게 없어지는 주말
"왜 살고 있는지 의문이다"평일이면 주말을 기다리지만 막상 주말이 되면 무엇 때문에 주말을 기다렸는지 모르겠다. 매번 똑같은 패턴이어서 그런 가. 운동, PC방, 집, 글쓰기가 내 주말 루틴이다.새로운 장소를 가보거나 무언 가를 해보려 할 때 거리와 금액이 날 멈춰 세운다. 여름이라 날씨도 한몫한다. 에어컨이 있어서 실내는 괜찮지만 야외에서 걸어 다닐 때 찝찝함을 견디는 내 모습이 예상된다. 물질적 접근성은 낮지만 심리적 접근성 때문인 가 행동으로 옮기기 꺼려워진다.그렇다고 집에 있다고 해서 생산적인 행동을 하는 건 아니다. 오히려 손쉽게 접근할 수 있는 도파민 창구인 인터넷으로 가게 된다. 온라인은 양날의 검이다. 잘 이용하면 득이 되지만 중독되기 쉽다.침대에 누워서 폰을 만지작 거리고 엄지로 스크롤만..
2026.07.25 17:00 -
6월, 따블이 된 출퇴근 시간
"출퇴근 1주 차"출퇴근 시간이 2배가 되었다. 이전 사무실이었던 광화문으로 가는 것과 송파로 가는 건 똑같이 환승은 한 번만 하면 된다. 다만 길게 가야 했다. 이제 도착할 때가 됐나 하면 아직 멀었다. 이사한 지 일주일이 되었는데 퇴근할 때마다 현자 타임이다. 열차를 탈 때부터 시작해서 "언제 도착하지", 역에 도착해서 "이걸 매일 반복해야 한다고?" 하루하루 허무를 느끼고 있다.08시에 도착하면 미라클 모닝에 기분이 좋지만 19시 넘어서 퇴근하면 미라클이고 나발이고 내가 뭘 위해 살고 있는지 생각하게 된다. 출퇴근 시간이 길어져서 좋은 건 도서 시간이 반 강제적으로 갖게 된다. 이건 좋지만 헬스장을 가는 시간이 퇴근 시간에 따라 결정되는 것이 단점이다. 난 독서보다 운동을 하고 싶다. 저녁을 먹고..
2026.06.27 17:00
Frontend
-
리사이즈했는데도 왜 모바일에서 버벅였을까?
올라온 하나의 QA 이슈이커머스 웹 프로젝트에서 리뷰 기능을 개발하던 중 QA에서 웹 로딩이 느리고 모달 애니메이션이 버벅거린다는 이슈가 올라왔다. 어떤 문제였을까개발 서버와 PC에서는 특별한 문제 없었지만, 실제 모바일 기기에서 확인해 보니 리뷰 삭제 모달이 하단에서 올라오는 애니메이션에서 프레임 드랍이 발생하고 있었다.처음에는 서버에서 데이터를 가져오는 시간이 오래 걸리거나, 데이터를 가져온 이후 파싱하는 과정에서 문제가 발생한다고 생각했다.하지만 네트워크 탭을 확인해 보니 예상하지 못한 곳에서 문제가 발생하고 있었다.바로 이미지였다.리뷰에 포함된 이미지의 용향이 컸고, 모바일 브라우저에서 이미지를 디코딩하고 렌더링 하는 과정에서 상당한 리소스가 사용되고 있었다. 이 과정과 모달 애니메이션이 동시에 ..
2026.09.06 12:50 -
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
우아한테크코스 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세기에 가장 성공..