글자 크기

latebloomerhost

시간이 제대로 표시된 건강 기록

시간을 바로 세우는 일

— 건강 기록 앱에서 “언제”의 의미를 다시 묻다 오늘 하루를 돌아보면, 코드보다 더 많이 만진 건 시간이었다. 정확히 말하면, 숫자로 찍히는 시간이 아니라 의미를 가진 시간. 문제는 사소해 보였다 처음 시작은 단순했다. 모바일에서 회원가입이 안 된다 회색 레이어가 화면을 덮고 클릭이 안 된다 기록 시간이 현재 시간이 아니다 수정했다는데 여전히 반영이 안 된다 흔한 버그처럼 계속 읽기 →

시간을 바로 세우는 일 더 읽기"

4주차 빌드 로그: 검색이 풀리지 않게 만들었다

4주차의 목표는 단순했다. 사람들이 글(포스트)을 더 잘 찾게 만들기. 근데 개발은 늘 그렇다. 검색 기능 추가는 쉬운데, 검색이 풀리지 않게 만드는 건 어렵다. 검색어를 넣고, 필터를 고르고, 정렬까지 선택해놓고 2페이지를 눌렀더니… 전부 초기화. 이건 사용자가 아니라, 개발자가 사람을 배신한 UX다. 그래서 이번 주는 기능보다 더 중요한 것— 문맥(context)을 지키는 검색 경험을 만드는 데 집중했다. 1) 계속 읽기 →

4주차 빌드 로그: 검색이 풀리지 않게 만들었다 더 읽기"

시간이 제대로 표시된 건강 기록

시간이 어긋난 앱은 몸을 맡길 수 없다

시간이 어긋난 앱은 몸을 맡길 수 없다 오늘 하루를 한 문장으로 요약하면 이거다. 시간이 틀린 건강 앱은 신뢰를 잃는다. 💡 시간이 틀리면,기록은 그냥 메모가 된다. 문제의 시작: 기록했는데, 지금이 아니다 건강 기록을 남겼다. 오한이 와서 타이레놀을 먹었고, 몇 시간 뒤 한 알을 더 먹고 괜찮아졌다. 그날의 몸 상태를 있는 그대로 남겼다. 그런데 기록 화면에 찍힌 계속 읽기 →

시간이 어긋난 앱은 몸을 맡길 수 없다 더 읽기"

염증과의 동거 — 커큐민이라는 작은 동반자

만성질환자에게 염증은 늘 곁에 있는 불청객이다. 없애고 싶지만 없앨 수 없고, 그래서 관리하는 수밖에 없다. 나는 그 관리의 일환으로 커큐민을 먹기 시작했다. 커큐민이란 강황에서 추출한 노란 성분. 인도에서는 수천 년 동안 약으로 써왔다. 항염, 항산화. 요즘 말로 하면 “염증 잡는 천연 성분”이다. NF-kB라는 염증 유발 분자의 활성을 억제한다고 한다. 어려운 말이지만, 결론은 단순하다. 염증을 줄여준다. 계속 읽기 →

염증과의 동거 — 커큐민이라는 작은 동반자 더 읽기"

바퀴 네 개 위에서 — 중년의 스케이트보드

스케이트보드. 10대들의 전유물이라고 생각했다. 공원에서 멋진 기술을 보여주는 젊은이들. 나와는 상관없는 세계라고 여겼다. 그런데 어느 날 문득 생각했다. 왜 안 되지? 💡 중년에 새로운 걸 시작한다는 건용기가 필요한 일이다. 그래도 해본다. 나이는 숫자일 뿐 그 말이 진부하게 느껴질 때가 있다. 하지만 스케이트보드 앞에서는 진지해진다. 중년에 새로운 걸 시작한다는 건 용기가 필요한 일이다. 넘어지면 아프고, 회복도 계속 읽기 →

바퀴 네 개 위에서 — 중년의 스케이트보드 더 읽기"

벌이 만든 방패 — 프로폴리스 이야기

프로폴리스. 벌이 나무 수액과 자신의 분비물을 섞어 만든 물질이다. 벌집을 보호하고, 외부 침입자를 막는 역할을 한다. 벌의 방패인 셈이다. 그 방패를 인간이 빌려 쓴다. 💡 벌이 만든 방패.자연이 주는 작은 보험이다. 300가지 성분 프로폴리스에는 300개 이상의 자연 성분이 들어있다. 플라보노이드, 아미노산, 비타민, 미네랄. 이름만 들어도 몸에 좋을 것 같다. 실제로 그렇다. 면역력 프로폴리스의 가장 큰 계속 읽기 →

벌이 만든 방패 — 프로폴리스 이야기 더 읽기"

할아버지 같은 아빠의 마음으로

가끔 아이 친구들이 나를 보고 “할아버지”라고 부른다. 처음엔 웃어넘겼다. 그런데 생각해보면 틀린 말도 아니다. 아이와 나 사이엔 48년이라는 시간이 놓여 있으니까. 💡 48년의 간격.그래도 함께 걷는다. 나는 늦깎이다. 늦게 결혼했고, 늦게 아빠가 됐다. 그래서 요즘 내 삶은 조금 특별한 방식으로 조용히 뜨겁다. 몸은 예전 같지 않다. 하지만 마음은 오히려 더 또렷하다. 아이에게 이 세상이 즐거운 계속 읽기 →

할아버지 같은 아빠의 마음으로 더 읽기"

Lightsail 인스턴스 업그레이드 삽질기 — 512MB에서 2GB로, 생각보다 험난했던 여정

— 512MB에서 2GB로, 생각보다 험난했던 여정 시작은 단순했다 choviet.chat은 베트남 커뮤니티를 위한 서비스다. 당근마켓처럼 중고거래, 질문답변, 자유게시판이 있다. 그런데 서버가 512MB RAM이었다. MVP라서 작게 시작했지만, 아무리 MVP라도 512MB는 너무 작았다. 이미지 업로드, 검색, 실시간 알림까지 생각하면 최소 1~2GB는 필요했다. “업그레이드하자.” 단순한 결정이었다. 그런데 Lightsail은 단순하지 않았다. Lightsail의 불편한 진실 AWS Lightsail에서는 인스턴스를 직접 업그레이드할 수 계속 읽기 →

Lightsail 인스턴스 업그레이드 삽질기 — 512MB에서 2GB로, 생각보다 험난했던 여정 더 읽기"

시간이 제대로 표시된 건강 기록

모바일에서만 회원가입이 안 됐던 이유 — 422 에러의 진짜 원인은 SSL이었다

— 422 에러의 진짜 원인은 SSL이었다 증상은 단순했다 PC에서는 회원가입이 잘 됐다. 그런데 모바일에서 가입 버튼을 누르면 이런 메시지가 떴다. 422 Unprocessable Entity “The change you wanted was rejected.” 같은 서버, 같은 코드, 같은 폼. 왜 모바일에서만? 처음엔 흔한 용의자들을 의심했다 Rails에서 422 에러가 나면 보통 이런 것들을 먼저 본다. CSRF 토큰 문제? Turbo가 뭔가 계속 읽기 →

모바일에서만 회원가입이 안 됐던 이유 — 422 에러의 진짜 원인은 SSL이었다 더 읽기"

CI는 고쳐야 할 문제가 아니라, 말을 걸어오는 방식이다

배포가 성공했다는 건, 사실 끝이 아니라 시작이다. 특히 혼자 만들고, 혼자 배포하고, 혼자 책임지는 프로젝트라면 더 그렇다. healthnote는 며칠 전 무사히 프로덕션에 올라갔다. 도메인도 붙었고, 모바일에서도 접속된다. 겉으로 보면 “이제 되는 것처럼” 보인다. 하지만 진짜 일은 그다음부터 시작됐다. CI가 말을 걸어오기 시작했기 때문이다. “로컬에서는 되는데요?” CI 에러의 시작은 늘 이 문장이다. 로컬에서는 되는데요? 이번에도 그랬다. 계속 읽기 →

CI는 고쳐야 할 문제가 아니라, 말을 걸어오는 방식이다 더 읽기"