728x90 반응형 분류 전체보기362 반대 뒤에 붙어야 하는 것 스타트업은 항상 불확실성 속에서 살아간다.불확실성은 '언제나 옳은 정답' 이 존재하지 않음을 의미한다. 상대방의 주장이 맞을 수도, 틀릴 수도 있다.내 주장이 맞을 수도, 틀릴 수도 있다. 그렇기 때문에, 상대방과 반대 의견을 낼 때는, 항상 그 대안을 얘기해야 한다.그 대안이 완벽할 필요는 없다. 아이디어 수준에 그쳐도 괜찮다. 중요한 것은 → 반대로 인해 논의가 종료되는 것이 아니라, 문제를 해결하기 위한 새로운 시각의 시발점을 제시하는 것! 2024. 12. 4. 24.11.25~24.12.02 업무 공유비밀번호 찾기 기능 개발스테이징 테스트 후 프로덕션 배포까지 완료! SDK 로그 미수집 기능 개발SDK로 가이드 실행 시 로그가 수집되고, 해당 로그에 대한 통계를 제공하고 있다.그런데 이로 인해 고객사 내부 테스트를 프로덕션에서 진행하지 못하는 문제가 발생했다.(로그가 섞이기 때문) 일반적인 방법은 통계 수집 시, 제외한 IP를 설정할 수 있게 하는 것이지만그렇게 우선순위가 높지는 않음 + 설정한 IP 이외 테스트용 접속을 필터링하지 못함 의 문제가 있었고,따라서 SDK 가이드 실행 함수 옵션에서 로그 미수집 기능을 제공해, 고객사에서 직접 로그 수집 여부를 코드로 제어할 수 있게 만들었다. 멤버 초대 기능 개발이전까지는 담당자에게 개별적으로 멤버 초대 기능을 알려 팀원들이 가입하게끔 안내한 .. 2024. 12. 2. 24.11.18~24.11.25 업무 공유비밀번호 찾기 기능 개발자체 회원가입 기능 개발이 이뤄지면서, 이와 연관된 비밀번호 찾기 기능을 구현했다.기능 자체는 별다른 예외 상황이 없는 일반적인 기능이라 별다른 어려움이 없었다.비밀번호를 찾을 수 있는 메일을 BE에서 전송했는데, 메일을 전송할 때마다 스팸 메일로 분류되는 문제가 있었다.원인을 찾는 과정에서 SPF(Sender Policy Framework), DKIM(DomainKeys Identified Mail) 등을 통한 이메일 발송 인증에 대해 학습할 수 있었다! 추가적으로, 이전에 회원가입/로그인을 개발하면서 각 기능들을 개별 feature로 분류했는데,이렇게 설계하다 보니 동일 요소(이메일, 비밀번호 등)에 대한 유효성/에러 문구 로직을 처리하기가 까다로웠다.(회원가입, 로그.. 2024. 11. 25. 싱글톤 패턴 단위 테스트를 작성하는 3가지 방법 Backgrounds싱글톤 패턴(Singleton Pattern)이란?싱글톤 패턴은 애플리케이션 내에서 특정 클래스의 인스턴스가 단 하나만 생성되도록 보장하는 디자인 패턴입니다. 데이터베이스 연결, 설정값 관리, 공통 서비스 제공 등 애플리케이션 전역에서 공유되어야 하는 리소스를 관리할 때 자주 사용됩니다.class Singleton { private static instance: Singleton | null = null; private constructor() {} static getInstance(): Singleton { if (!this.instance) { this.instance = new Singleton(); } return this.instance; }}.. 2024. 11. 19. 24.11.10~24.11.18 업무 공유타겟 요소 조회 알고리즘 개선현 서비스의 핵심 로직 중 하나인, 타겟 요소 조회 알고리즘을 개선했다. 타겟 요소 조회 알고리즘은 사용자가 선택한 요소를 가이드 실행 시 얼마나 정확하게 찾아가는지 를 의미하는데,서비스 극 초창기 때 작성한 로직을 지금까지 사용하고 있었다. 당시만 하더라도, 서비스의 정확한 컨셉이나 사용 기업이 확정되지 않은 상태로우연찮게 POC가 이뤄진 B사의 요구사항을 구현하는데 급급했다. Azure, GCP 등 외부 서비스에서 사용자가 선택한 요소를 식별해야 했기 때문에일반적인 식별자(대표적인 예시가 id)를 사용할 수 없었고이로 인해 최대한 많은 예외 케이스를 고려해야만 했다. 하지만 점차 POC 기업이 늘어나면서기존 알고리즘이 고려했던 예외 케이스로 인해, 오히려 조회 결.. 2024. 11. 18. server action으로 cookie 설정 시, server component reload 버그 Backgrounds회원가입 후, 백엔드에서 반환한 access, refresh 토큰을 cookie에 저장해야 했습니다.// SignUpFormconst SignUpForm = () => { const handleSubmit = async () => { try { // 회원가입 성공 시 AT, RT 반환 const { accessToken, refreshToken } = await signUpApi(form); setAuthCookies(accessToken, refreshToken) router.replace("/") } catch (e) { setErrors(e); } }; return (...)} 위 코드에서처럼.. 2024. 11. 15. 24.10.27~24.11.10 업무 공유체크리스트 기능 프로덕션 업데이트약 1주일 만에 체크리스트 관리 기능 개발을 완료했고, QA 후 수정사항을 반영한 뒤 프로덕션 업데이트를 진행했다.미팅 이후 이탈했던 기업들에게 추가적으로 안내 + 신규 기업들에게도 함께 해당 기능을 안내하는 중! 가이드 문서 제작이전에는 서비스 사용 방법을 미팅 과정에서 안내하고, 관리자 페이지에 가이드 탭을 추가해 알려줬었다.하지만 기능들이 하나 둘 추가되면서, 단순한 페이지 하나에 모든 내용을 담기는 불가능해진 상황! gitbook을 활용해 공식적인 가이드 문서를 제공해야 했고,이 중 개발자 가이드 파트를 전담해 SDK 설치 및 함수 사용 방법과 예제를 담은 가이드 문서를 작성했다. 자체 회원가입 기능 개발무료 체험 기간이 종료되는 12월 전까지, 팀의 목표.. 2024. 11. 10. You Might Not Need a Dispatch<SetStateAction> Type. BackgroundsFE 개발자 단톡방에 이런 질문이 올라왔습니다.결론부터 말하자면...You Might Not Need a Dispatch Type.해당 타입 사용을 선호하지 않는다기 보다, 사용할 필요가 없다 란 답이 가장 적절하다고 생각했습니다. 그 이유가 무엇일까요?언제 사용되는가?Dispatch은 React에서 useState 훅을 사용할 때 반환되는 상태 업데이트 함수의 타입입니다. 상태 값을 업데이트할 때 사용하는 setState 함수의 타입을 정의하며, React 상태 관리에서 매우 일반적으로 사용되죠. 그렇다면, 해당 타입 정의가 왜 필요할까요? 가장 대표적인 예시는 자식 컴포넌트에 Props로 전달할 때입니다. 부모 컴포넌트에서 useState로 상태를 관리한 뒤, 자식 컴포넌트에서 상.. 2024. 10. 29. 24.10.20~24.10.27 업무 공유체크리스트 관리 기능 개발여러 채널들로 유입된 기업과 미팅을 진행한 결과, 현재 제품이 제공하는 가치인 '온보딩'이 크게 두 가지로 나뉨을 확인할 수 있었다.→ 1) 고객이 가치를 느낄 수 있는 아하 모먼트까지 안내 2) 필수 세팅 과정 안내 및 지원 이 두 가지 케이스 중 1)에 해당하는 기업들은 활발하게 미팅이 이뤄지고, 실제 도입으로 이어졌다.하지만 2)의 니즈에 해당하는 기업은, 얼마 지나지 않아 이탈하는 경우가 많았다. (사실은 전부 이탈했다) 이를 해결하기 위해 사용자가 해야만 하는 일을 시각적으로 제시할 수 있는, 제크리스트를 구현하기로 결정! 실제 체크리스트를 고객사 화면에 띄울 SDK와, 체크리스트 내부 요소를 GUI로 편집할 수 있는 관리자 페이지 기능 개발이 필요했고,그중 관.. 2024. 10. 28. 이전 1 2 3 4 ··· 41 다음 728x90 반응형