분류 전체보기
-
라즈베리 파이 홈서버 구축하기개발/개발 지식 공유 2025. 11. 30. 18:08
친한 개발자 동생이 요즘 홈서버를 만들까 고민 중이라고 합니다.저는 이미 홈서버를 운영하고 있기 때문에 이런저런 팁을 전달해 주기로 했습니다. 제가 홈서버를 구성하면서 나중에 헷갈리지 않으려고 노션 문서로 정리해 둔 것이 있습니다.그런데 이 문서는 혼자 보려고 만든 것이라 누굴 보여주기에는 상당히 불친절합니다.그래서 따로 노션 페이지로 정리해서 전달할까 했는데, 그럴 바에는 블로그 포스팅을 작성해서 더 많은 사람들이 참고하면 좋을 것 같아서 블로그에 써 보려 합니다. 개발자로서 이것저것 사이드 프로젝트를 하다보면 배포할 일이 생깁니다.보통은 간편하고 안정적인 AWS, GCP, Azure 등 클라우드 서비스를 활용하게 됩니다.하지만 비싸요.. 서비스에 따라 한달에 최소 몇천원에서 수십만원까지 청구될 수 ..
-
Android Jetpack Glance: 위젯에 최신 데이터 전달하기개발/개발 지식 공유 2025. 10. 8. 20:29
Jetpack Glance Widget을 사용하여 할 일 목록(Todo List) 위젯을 홈 화면에 만들었습니다. 저는 앱에서 데이터를 수정했을 때 자동으로 최신 데이터가 위젯에도 반영되기를 원했습니다.하지만 제대로 된 방식으로 데이터를 제공하지 않는다면 위젯이 업뎃되지 않는 문제가 발생할 수 있습니다. 성공적으로 위젯을 업데이트 하는 방법을 공유하려고 합니다. 위젯에 State 데이터 제공하기일단 위젯에 데이터를 제공하는 가장 좋은 방법은 Flow.collectAsState() 메서드를 사용하는 것입니다.class TodoWidget : GlanceAppWidget() { override suspend fun provideGlance(context: Context, id: GlanceId) {..
-
Raspberry Pi 5 에서 Docker 사용하기개발/개발 지식 공유 2025. 10. 7. 15:32
Docker 공식 가이드에서 소개하고 있는 Docker를 사용하는 가장 쉬운 방법은 Docker Desktop을 설치하는 것입니다.하지만 Raspberry Pi 5 는 arm64(aarch64) CPU 아키텍쳐를 사용하고 있기 때문에, Docker 공식 홈페이지의 설치 가이드를 따라하더라도 Docker Desktop을 제대로 설치할 수 없습니다.해당 가이드에서는 사용자의 CPU가 amd64 기반의 x86_64 아키텍쳐라고 상정하고 있기 때문입니다.어찌저찌 커뮤니티를 돌며 arm64 설치 방법을 찾아서 설치하더라도, 제대로 동작하지 않았습니다. (Docker Desktop을 설치하기 위해서는 KVM을 활성화해야 하는데, 제가 삽질을 해본 결과 무슨무슨 모듈을 설치해야 하고... 또 arm64 아키텍쳐에서는..
-
프론트엔드 코리아 2024 후기 : 성공한 개발자들의 비책..?일상다반사/행사 후기 2024. 8. 12. 00:22
성공한 개발자들의 비책이라니?! 지금 다니는 회사(이벤터스)에서 행사 큐레이션을 담당하고 계신 마케터 이OO님이 어느날 저에게 행사 하나를 던져 주시며 이렇게 말씀하셨습니다.성공한 개발자 되자~~!! 어떻게 하면 성공한 개발자가 될 수 있는 걸까요?그 전에, 어떤 개발자를 성공한 개발자라고 정의내릴 수 있을까요?여러 궁금증을 가지고 참여해본 행사, 프론트엔드 코리아 2024 (Frontend Korea 2024) 후기입니다.https://event-us.kr/frontendkorea/event/87668 프론트엔드 코리아 2024 (Frontend Korea 2024) - 이벤터스성공한 프론트엔드 개발자들의 비책event-us.kr 시작에 앞서: 성공한 개발자 정의하기우리는 어떤 사람을 성공한 개발자..
-
비동기 api 요청이 동기적으로 작동할 때 (ASP.NET SessionState 접근 문제)개발/이슈 처리 2024. 3. 13. 18:53
세 줄 요약: 1. 브라우저 자바스크립트에서 비동기 api 요청을 했는데 동기적으로 응답이 도착했다. 2. 왜 그런가 봤더니 ASP.NET 서버는 기본적으로 세션 동시 접근을 막기 위해 SessionID가 동일한 요청들에 lock을 걸어 직렬화(serialized)하고 있었던 것. 3. 동일한 세션에서 발생하는 동시다발적 요청의 비동기 처리가 필요하다면 해당 컨트롤러에 `[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]`를 걸어주자. 저희 DB에는 사이트 이용자의 여정을 기록한 로그 테이블이 있습니다. 그 로그를 가져와서 보여주는 기능을 구현하고 있었는데요. 많은 데이터를 가져오다 보니 api 호출의 응답이 1~2초 정도 걸리는 ..
-
Safari Invalid Date 문제 (new Date()에 공백 파싱 이슈)개발/이슈 처리 2024. 1. 2. 15:07
광고 세부 내역 페이지의 날짜 부분에 NaN (not a number) 오류가 있다는 이슈가 올라왔습니다. 뭘까 싶어서 해당 페이지에 접속해 봤는데 잘 나옵니다. 사파리에서 접속하면 그렇게 된다길래 들어가 봤더니, 과연 일수가 표기되어야 할 곳에 NaN이 나오네요. 뜯어보니 `new Date`에 들어가는 문자열 양식이 문제였습니다. '`2024-01-02 `' 이런 식으로 끝에 공백 하나가 들어가 있었어요. 이게 크롬이나 다른 브라우저에서는 파싱이 잘 되는데, Safari에서는 파싱을 못하고 `Invalid Date`를 띄웁니다. 그러니 해당 문자열로 숫자 계산을 하려고 하면 JS는 `NaN`을 내뱉겠죠. 크롬은 알아서 trim해서 파싱을 해주는 것 같은데, 사파리는 엄격한 기준을 갖고 있는 것 같네..
-
디스크 컨트롤러 - 왜 그렇게 풀리는가? 개념 알아보기 [프로그래머스]개발/알고리즘 문제풀이 2023. 11. 11. 16:30
문제를 풀고 나서 인터넷에 풀이들을 찾아 봤습니다. '이 방식을 쓰면 된다'는 풀이들은 많았으나, 왜 그렇게 풀면 풀리는지에 대해 이유를 설명한 글을 찾아보기가 어려워서 이렇게 글을 포스팅하게 되었습니다. 본문에는 풀이법과 정답 코드가 포함되어 있으니, 열람을 원치 않는 분들께서는 주의하여 주시기 바랍니다. 문제 보러 가기 > 개념 풀이 문제의 조건에 따르면, 작업의 요청부터 종료까지 걸린 시간의 평균을 가장 줄이는 방법을 찾아야 합니다. 한 번에 한 작업씩만 들어온다면 우선 순위가 필요 없겠지만, 현재 작업을 진행하는 도중에 여러 작업 요청이 있을 수 있습니다. 따라서 우선 순위에 따라 처리해야 하는데요. 우선 순위를 처리하는 정답부터 말씀드리자면, 현재 작업이 진행되는 동안 요청된 작업들 중에 가장 ..
-
총알 피하기 게임 - 소감 그리고 총정리 [항해 플러스 코육대]개발/사이드 프로젝트 2023. 10. 3. 22:51
게임 해보기 (링크) 이전 글 보러가기 (링크) GitHub Repository (링크) 항해 플러스: 제1회 코육대 홈페이지 (링크) 드디어! 게임을 완성했다. 생각했던 것보다 프로젝트 볼륨이 컸다. 하지만 정말 재밌게 개발했다. 덕분에 추석 연휴 기간동안 심심하지 않게 지낼 수 있었다 ㅋㅋㅋ 게임 개발은 예전부터 해보고 싶다고 생각했었는데, 제대로 개발하려면 언리얼 엔진이나 유니티를 써야 하지 않을까..? 하는 막연한 생각에 진입장벽이 생겨서 도전도 못 해보고 있었다. 이번 코육대를 계기로 간단한 웹 게임을 만들어보니, 생각보다 어렵지 않구나! 하는 기분이 들어서 뿌듯하다. 느낀 점 느낀 점을 몇 가지로 정리해 보면 이 정도이다. 자바스크립트는 정말 대단한 언어다. 안 되는게 없다. 정말로. 개발 과..