본문으로 건너뛰기

Onnx web runtime 구축하기 with Vite

소개

Vission AI를 사용자 로컬 환경에서 실행하기 위해 WebGPU, WebGL, WASM을 통해 Web환경에서 AI Model을 실행한 방법들과 Model을 캐싱하며 버전관리를 하는 방법에 대해 작성하였다.

왜 eslint-plugin-tailwindcss 를 버리고 eslint-plugin-better-tailwindcss 를 새로 개발하였을까?

소개

Tailwind CSS v3 까지 활발하게 사용되던 eslint-plugin-tailwindcss 패키지는 2024년 3월 [Feature request] Support Tailwind 4을 기점으로 Tailwind CSS 최신 버전에 대응하는 업데이트를 하지 않고있다. 이전까지 활발하게 사용되던 이 패키지가 왜 업데이트를 중단하였는지, 개발자들이 왜 새롭게 코드를 다시 작성할 수 밖에 없었는지 알아보자.

Web Service Worker로 파일 업로드 분리하기

소개

신규 통합 웹 시스템을 구축하며 물류센터 현장에서 네트워크 사용량에 제한이 있어 파일 업로드가 원할하지 않은 경우가 발생하였다. 이를 위해 화면에서 네트워크 요청 로직을 분리하여 파일을 화면 로직과 별도로 업로드해줄 수 있는 방법이 필요하였다. Service Worker를 통해 어떻게 화면에서 네트워크 요청 로직을 분리하였는지, Service Worker가 무엇이길래? 가능하였는지 알아보자.

2025년 첫 프로젝트 회고

소개

매번 프로젝트를 진행하다보면 아쉬운점이 항상 남는다. 앞으로는 매 프로젝트가 종료될 때마다 아쉬웠던 점들을 정리하고 어떻게 개선할 수 있었을지 생각해보며 같은 일을 반복하지 않으려 한다.

따라서 앞으로는 매 프로젝트가 진행될 때마다 회고를 남길려고 하는데, 우선 올해 첫 프로젝트였던 척추뼈 인식 및 각도 계산 서비스 프로젝트를 진행하며 겪었던 일들과 아쉬웠던 점, 좋았던 점들을 작성하려 한다.

이번 프로젝트는 미국의 의료기기 스타트업의 의뢰로 수술실에서 스마트폰을 통해 간단한 각도 측정 및 계산을 제공하는 시스템 개발이었다. 수술실이라는 특별한 환경, 온디바이스 AI, Canvas 조작 등 흥미로운 제한사항들이 엮여있어 다양한 시도를 해볼 수 있는 기회가 되었다.

목차
  1. 개발준비

    1-1. 인원 분배 1-2. iOS 환경에 대한 이해

  2. 개발진행

    2-2 편의성과 활용성

플러터 CI/CD with Shorebird

소개

Flutter에서 State를 생성할 때, 방법으로 Bloc에서 추천하는 Equatable을 사용해왔다. 하지만 개발 편의성과 copy, toString override, json 변환 등 여러 기본 기능을 활용하여 개발 속도를 단축하고자 Freezed를 도입하게 되었다. 이번 내용은 Flutter freezed의 기본 활용법을 정리한 내용이다.

Flutter 상태관리 with freezed

소개

Flutter에서 State를 생성할 때, 방법으로 Bloc에서 추천하는 Equatable을 사용해왔다. 하지만 개발 편의성과 copy, toString override, json 변환 등 여러 기본 기능을 활용하여 개발 속도를 단축하고자 Freezed를 도입하게 되었다. 이번 내용은 Flutter freezed의 기본 활용법을 정리한 내용이다.

AWS Amplify-Cognito를 통한 Flutter 애플리케이션 인증 로직

소개

현재 진행하고 있는 B2B 서비스들에서 여러 사용자가 동시에 같은 아이디로 접속하거나 구독 시스템을 통해 기존에 이용중이던 특정 계정들을 강제로 로그아웃 시켜줘야할 상황들이 필요했다. 따라서 JWT 토큰만으로는 처리하기 어려워 세션을 통한 사용자 관리 도입이 필요하였고, 이 과정에서 좀 더 쉽게 관리 가능하고 빠르게 적용할 수 있는 방법을 찾다가 백엔드 동료분이 AWS Cognito를 통한 사용자 관리 방법을 공유해주었다. 처음 시도했던 24년 중순~말까지만 하더라도 Cognito와 앱을 직접 연결하기 위해서는 Swift, Kotlin 플러그인 작성이 필수적(원하는 기능을 모두 사용하기 위해서)이었는데, 이후 수정된[1] Amplify Docs Gen2 문서를 보니 Amplify 백엔드 구성 없이도 Cognito 설정이 가능하도록 되어있어 기존의 방식(Swift, Kotlin 플러그인 작성)을 폐기하고 이 방법으로 도입하기로 하였다.

아래 내용은 기존에 사용하려 했던 Swift, Kotlin 플러그인 생성 방식과 Amplify Backend를 구성해서 인증 로직을 처리해주는 방식, 그리고 최종적으로 사용하는 별도의 백엔드 구성 없이 Cognito에 직접 연결하여 사용하는 방식을 정리한 내용이다.

모노레포를 위한 준비

소개

최근 Next.js, Flutter 등 많은 프레임워크에서 모노레포를 통한 코드 관리를 사용하고 많은 회사들에서도 모노레포를 이미 도입하거나 도입하기 위한 준비를 진행하고 있다. 최근 우리 회사에서도 중복 작업을 줄이고 코드를 더 잘 관리하기 위해 모노레포, 멀티 패키지 도입을 준비하고 있는데 이 과정에서 찾아본 내용과 왜 회사 코드관리에 도입하도록 결정하게 되었는지 정리한 내용이다.

개발자가 개발반 잘하면 회사는 망한다 - 우아한테크코스의 소프트 스킬 교육

소개

우아한형제들에서 소프트 스킬 교육을 담당하고 있는 발표자분들이 하드 스킬에 에 국한되지 않고 협업과 소통을 위한 소프트 스킬을 발전시켜왔는지 우아한테크코스를 통해 이끌어나간 내용들을 정리해서 발표해주었다. 개발자가 기술에만 집중한다면 오히려 회사가 망할 수 있다는 경고를 통해, 팀워크와 열린 마음가짐의 중요성을 강조하고 여러 연구 결과를 통해 실제 협업의 질이 성과에 미치는 영향을 설명하였다. 또한 소프트 스킬을 발전시키는 방법에 대해 공유하며 어떻게 소프트 스킬을 개선해나갈 수 있었는지 설명하는 시간이었다.