분류 전체보기 20

스타트업 투자 유치를 위한 Traction, 어떻게 만들어야 할까?

Traction이란 미래의 강력한 수요 잠재력을 보여주는 핵심 지표다. 우리 같은 early stage에서는 고객의 페인포인트가 있고, 이를 해결할 수 있는 팀이라는 걸 입증하는 객관적인 증거이기도 하다.불과 2년 전만 해도 유동성이 넘쳐나서 괜찮은 학벌과 아이디어만 있으면 시드 투자를 받을 수 있었지만, 지금은 다르다. Traction 없이는 투자받기 힘든 시대가 왔다. 특히, 우리나라 VC들은 특유의 보수성과 신중함으로 리스크를 헷지하려는 성향이 문화적으로 깊이 배어 있어, 최근 들어 Traction을 더욱 중요하게 보고 있다는 게 내 판단이다.따라서 우리도 투자를 받으려면 Traction이 필요하다. 다만 우리 단계에서는 이를 인위적으로 만들어낼 수 있는 몇 가지 묘수가 있다.첫째, 무료로 배포하고..

KB 2024.12.05

2024-11-28 개선사항

모국어 타이핑 AI 번역 한국어 피드백 -> 클로드 번역 기능 개선첫 번째 문제: 메시지 중복 표시문제: 전체 메시지와 분할된 메시지가 동시에 표시됨원인: addMessage(chatData.message)와 분할된 메시지 각각에 대한 addMessage(segment) 호출이 중복해결: 분할된 메시지만 표시하도록 수정하고, 원본 메시지는 dataset으로 저장두 번째 문제: 번역 버튼 중복문제: 모든 분할된 메시지에 번역 버튼이 표시됨원인: addMessage 함수에서 모든 AI 메시지에 번역 버튼을 추가해결: isLastSegment 파라미터를 추가하여 마지막 세그먼트에만 번역 버튼 표시세 번째 문제: 응답 속도 저하문제: AI 응답과 음성 생성이 너무 느림원인: 음성 생성 요청이 순차적으로 처리됨해..

Min 2024.11.28

서비스 코드 분석 (JS 불필요한 함수/변수 최적화)

ChatApp 함수 종합 분석(✂️ = 제거 권장 함수/변수)1. 초기화 및 설정 그룹init()setupEventListeners() checkLoginStatus()setupAudioRecording()setupVolumeMonitoring()initializeExamples()관계 및 실행 순서:init(): 애플리케이션 시작점DOM 요소 존재 확인채팅 입력창 자동완성 설정setupEventListeners(): 모든 이벤트 리스너 등록checkLoginStatus(): 로그인 상태 확인setupAudioRecording(): 오디오 시스템 초기화setupVolumeMonitoring(): 오디오 볼륨 모니터링 설정initializeExamples(): 예제 데이터 초기화제거 대상 변수:✂️ rec..

Min 2024.11.22

메타인지: Chat GPT o1도 하는데 나도 해야제?

메타인지는 자신의 생각을 다시 한번 돌아보는 것이다. 나의 첫 메타인지 경험은 재수 시절이었는데, 가사를 듣냐 혹은 음악을 듣냐를 두고 논쟁하면서 처음으로 가사에 집중하는 사람이 있다는 걸 깨달았다. 이후 가사에 집중하려고 했지만, 매번 다른 생각에 빠지는 나를 발견하곤 했다. 인간의 인지능력은 감정이라는 코끼리 위에 있는 기수와 같다. 통제하려고 해도 코끼리가 마음만 먹는다면 기수가 생각지도 못한 곳으로 데려갈 수 있다. 그래서 내가 어떤 생각을 할 때 코끼리가 결정한 것인지, 기수가 결정한 것인지 곰곰히 생각해보려고 노력한다. 바람직한 의사결정을 할 수 있다고 생각하기 때문이다. 이번 여름은 유난히 매미가 많은 것 같이 느껴졌다. 지구온난화 등 기후 이슈가 먼저 떠올랐지만, 1년 전 여름에는 매미가 ..

KB 2024.11.22

이퀄라이저 기능 추가 회고

발생한 문제:피드백 기능을 추가하는 과정에서 이퀄라이저가 보이지 않는 문제가 발생했다. 문제 해결 과정에서 내 개발 지식의 여러 빈틈을 발견했다.  부족했던 점들:버전 관리 및 소통 미숙git을 제대로 활용하지 못해 코드 변경사항을 제대로 추적하지 못함이전 코드와의 비교가 어려워 문제 해결이 지연됨영향을 준 변경 부분을 특정하지 못해 HTML, CSS, JS 모두를 검토하게 됨.문제 원인 예단CSS 복구했는데 작동하지 않자 JS 쪽 문제라고 섣불리 판단DOM 참조방식 관련 코드를 집중적으로 들여다봄CSS 클래스과 속성 그리고 HTML의 계층 구조에 대해 살펴볼 생각을 못함기본적인 HTML, CSS 구조 확인을 뒤로 미룸웹 기초 개념 부족HTML 요소들의 계층 구조가 CSS 선택자에 미치는 영향을 이해하지..

KB 2024.11.20

피드백 기능 추가 / 설명

서론 : 피드백 기능 자체는 쉽게 만들었으나다른 코드 위에 이식하느라 애를 좀 먹었다.  일단 프론트엔드 부터 바로 가자.1. 프론트엔드피드백 버튼 생성 및 초기 피드백:function addMessage(message, isUser, audioData) { const messageDiv = document.createElement("div"); messageDiv.className = `message ${isUser ? "user-message" : "bot-message"}`; const messageBubble = document.createElement("div"); messageBubble.className = "message-bubble"; messageBubble...

Min 2024.11.15

우리 앱의 피지컬과 뇌를 해부해보자

나는 외국인들이 자연스럽게 한국어를 배울 수 있는 앱을 개발하는 데 미친 자이다(?) 1주간 프론트엔드, 백엔드, 데이터베이스가 어떻게 작동하는지 더욱 이해하고 싶었다. 0과 1로 이루어진 데이터를 통해 실제 대화가 이루어지는 과정을 이해하고 구현하는 것은 흥미로운 도전이다. 앱의 구조는 마치 사람의 신체와 같다. 프론트엔드는 얼굴이며, 백엔드는 뇌, 데이터베이스는 기억을 저장하는 장치라고 볼 수 있다.  1. 음성인식우리 앱은 사용자가 마이크 버튼을 누르면 음성 인식이 시작된다. 목소리의 크기에 따라 입력 여부를 감지하고, 일정 수준 이하로 떨어지면 3.5초간 대기한 후 녹음을 종료한다. 이렇게 수집된 음성은 WAV 형식으로 변환되어 백엔드로 전송된다. 백엔드는 받은 음성 데이터를 OpenAI Whis..

KB 2024.11.15

처음 해보는 네이버 API 연동 이것만 알았어도... : HyperCLOVA 도입 회고

1. 시작은 단순했다: 그냥 패키지 설치하고 API 키만 넣으면 되는 거 아냐?1.1 첫 번째 시행착오: 다른 AI 모델과의 차이처음에 단순하게 생각했다. OpenAI나 Anthropic처럼 pip install 하고 API 키만 넣으면 될 줄 알았으니까.# OpenAI는 이렇게 간단했는데...from openai import OpenAIclient = OpenAI(api_key="my-api-key")response = client.chat.completions.create( messages=[{"role": "user", "content": "안녕"}])# Anthropic도 비슷하게 쉬웠고...from anthropic import Anthropicclient = Anthropic(api_ke..

KB 2024.11.07

Edgar's 마케팅 두번째 글

지난주에 별로 한게 없어서 글을 적지 않았는데 이번주도 마찬가지로 마케팅에 관하여서 실행한것이 없다. 다른거 하느라 급급했다. 마케팅을 우선순위에 두고 일을 해야하는데 당장 급한거 같아서 다른거 먼저하다가 손도 못 댐. Fake Buddies에 관하여 홍보도 못함. 지난 할로윈에 홍보랍시고 여기저기 글을 올리긴 했으나 그 효과 보다는 그냥 이벤트 자체가 흥미로워 보여서 신청을 많이 한 것 같다. 그럼 마케팅 대신 뭘 했느냐?AI 대화 파트너 유저 인터뷰, CS, 멤버 개인적인 일 도와주기, Fake Buddies의 레귤러 세션 게임 만들기. 물론 다 했어야 하는 일이 맞기는 하지만 마케팅을 우선 순위에 두고 일을 했어도 다 했을 것 같다. 인스타그램 1주일간의 성장기록 10월 29일~11월 05일 - 조..

EDGAR 2024.11.07