기록일지
-
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
-
귀가 중 한탄 글 - 클라우드플래어 워커스 결제
내가 잘못 생각했다.메인 서비스에서 미들웨어를 쓸라고 nextjs를 선택했고 랜딩 페이지를 빠르게 구현하기 위해서 react를 선택했다.반대가 되어야 했다.아무리 랜딩 페이지이어도 SEO가 필요했다. 그래도 랜딩페이지는 프로젝트에서 비중이 크지 않아서 마이그레이션 하거나 냅둬도 된다. 하지만 비중이 큰 메인 서비스는 그렇지 않다. 오늘 서버 cpu 활성 시간 확보하기 위해서 Cloudflare workers를 결제했다. React라면 cpu 시간 때문에 결제하지 않아도 됐을 텐데 내 지식 한계로 추가 비용이 생겼다.월 $5달러다.스타벅스에서 한 잔 마셨다고 생각할 수 있다. 언제까지 마셔야 할지 모르는 게 흠이다. 문제를 안 만들려면 문제를 알고 있으면 된다. 어떻게 모든 문제를 미리 알 수 있을까.. ..
2026.09.14 21:20 -
PG 결제, History가 50개 이상 쌓였을 때 발생한 문제
모바일에서 결제 완료 후 뒤로가기 시 이노페이 PG 창 재진입 문제에서 PG 결제 이후 뒤로가기를 했을 때 이노페이 PG 창으로 다시 진입하는 문제를 해결했다.당시에는 PG 진입 전 history.length를 저장하고, 결제 후 현재 History와의 차이를 계산해 PG 진입 전 페이지로 돌아가도록 처리했다.그런데 제품 출시를 앞두고 다시 테스트하면서 이 로직에도 한계가 있다는 걸 발견했다.이미 수정했고 출시했지만, 까먹기 전에 수정된 내용을 기록해야했다. PG 결제 후 결제 페이지로 정상적으로 복귀시키기PG 과정에서 History Entry가 추가될 수 있기 때문에, PG 진입 전과 결제 후의 history.length 차이를 이용해 실제로 몇 번 뒤로 이동해야 하는지 계산하는 방식이었다./paym..
2026.09.13 23:30 -
리사이즈했는데도 왜 모바일에서 버벅였을까?
올라온 하나의 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
우아한테크코스 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 생어, 「퍼펙트 웨폰」 - '중립'은 결코 비정치적인 것이 아니라는 사실과 어떤 사람들은 증오 발언이라고 생각하는 것을 다른 많은 사람들은 일상적인 정치 주장이라고 여긴다는 사실이었다. 에드 콘웨이, 「물질의 세계」 - 충분한 노력과 자원이 있으면 한 국가의 산업을 활성화하는 일은 얼마든지 가능하다. 그러나 제품 생산에 필요한 원료는 만들어 낼 수 없다.- 흥분과 논쟁에 휩싸인 ..
-
[도서] 플라톤과 낭만주의
" 이상주의가 훌륭한 것이고 현실주의가 나쁜 것이라는 생각이 낭만주의가 낳은 결과물이다. "플라톤, 「크리톤」 "전문 지식을 갖지 못한 다수의 판단을 존중한다면, 그는 몸을 망치게 된다.""정의롭지 못한 법적 명령에 복종하는 것은 결국 정의롭지 못한 짓을 하는 셈이 되니 말이다." 플라톤, 「고르기아스」 "자연과 법, 이것들은 대부분 서로 대립하는 것입니다. 그래서 누구라도 부끄럼을 느껴 자신이 생각하는 것을 말할 엄두를 못 내면 자기모순적인 말을 하도록 강요받게 되지요." 플라톤, 「국가론」 "절제의 미덕을 발휘해 작은 것에도 만족할 줄 안다면 늙음이 그리 괴롭지 않습니다.""안전하게 부정을 행할 수 있는 한 인간은 누구나 악행을 저지릅니다. 만일 그렇지 않은 사람이 있다면 그는 단지 남들의 이목이 두..