# product

1. 프로젝트 세팅 및 개발 계획
먼저 깃허브 레파지토리부터 생성한다. 물론 비공개다. 다음으로 Xcode 프로젝트를 생성하고 .gitignore과 .gitattributes 파일까지 추가한다. 여러 명이서 작업하다가 한 번 터진 적이 있는데, 그 후로 개인 작업이더라도 꼬박꼬박 .gitattribute 파일은 추가해 준다. 내용은 다음과 같다. 해당 파일을 추가하는 이유는 가까운 시일 내에 덧붙이도록 하겠다. .gitignore 파일은 gitignore.io에서 복사하여 생
0. Interval Timer 앱 고안
몇 주 전에 운동을 시작했는데 운동을 하다 보니 반복 동작 운동(e.g. 스쿼트, 런지)을 할 때 일정한 간격으로 동작할 수 있다면 좋겠다는 생각이 들었다. 앱 스토어에서 관련 앱을 찾아 봤는데 대부분 시간에 기반한 타이머고 내가 원하는 기능은 없었다. 그래서 만들어 보기로 했다. MVP(버전 1.0.0)에 들어갈 기능은 다음과 같다. > prepare > round(s) > cool down 의 구조, round는 work + rest 운동 시작 전 3, 2, 1 카운트 다운 음성 포함 1회 동작할 때마다 sound effect + count 음성 사용자는 루틴(round의 구성 / prepare 및 cool down 길이)을 커스터마이징해서 저장할 수 있다. (Core Data - 임시) 고도화 시 추가될 기능은 다음과 같다. > Core Data를 Firebase로 대체 캘린더를 추가하여 매일 운동 기록 저장(Firebase) 애플 워치 앱 개발 -

권도균의 스타트업 경영 수업
Content 스타트업이란? 해결할 가치가 있는 문제를 찾아 문제 해결을 통해 새로운 가치를 만든다. 불확실한 비즈니스 모델을 반복적이고 지루하게 검증하는 ‘과정’이다. 빠르고 작은 한 개의 가설의 실패를 반복하여 성장한다. 많은 사용자가 조금씩 좋아하는 것 혹은 소수의 사용자가 열렬히 사랑하는 것을 만든다. 없는 것을 만들어내고, 수단과 방법을 가리지 않고 안 되는 것을 되게 한다. 창업 전략 바로 창업에 뛰어들지 않는다. 회사는 창업 학교이며, 돈을 받으며 창업 교육을 받을 수 있는 곳이다. 사업의 핵심 요소를 자신 혹은 팀의 힘으로 구현할 수 있을 때 창업을 시도한다. MVP를 통해 점진적으로 발전시킨다. 문제는 기술 자체가 아니라 사람이 (기술을 활용해서) 해결하는 것이다. 큰 매출을 위해 가장 중요한 것은 첫 고객의 첫 매출 1달러를 만드는 것이다. 고객의 문제를 더 이상 나눌 수 없는 단위로

유저인터뷰
용어 PLG Product Led Growth(제품 주도 성장)의 약자로, 제품을 주요 매체로 1) 고객 유치 2)빠른 제품 경험 3) 고객 활성화 4) 충성고객 유지 를 달성하도록하는 전략 PMF Product Market Fit의 약자로, 시장에 알맞는 제품 혹은 제품을 만드는 것을 의미 배경 회사에서 새로운 시장 진출을 위해서 새로운 프로덕트를 찾고자 여러 MVP를 개발중에 있다. 그러다가 를 어떻게 확인할 수 있을지 고민하던중 유저 인터뷰에 대해 알아보게 되었고, 다음 MVP를 위해 준비하고자 한다. 왜 인터뷰를 해야하는가? 유저 인터뷰를 하면 시장의 반응을 바로 확인할 수 있어서 좋다는 얘기는 많이 들어봤을 것이다. 하지만 근복적인 이유는, 유저의 필요과 문제를 깊게 이해하기 위함이고 PMF를 확인할 수 있는 기회이며 제품을 피봇해나가기 위함이다. 유저 인터뷰 없는 피봇은 절대 유의미한 피봇이 될 수 없다. 서베이, 데이터 분석,
프로그래머스 개인정보 수집 유효기간 2가지 풀이
요구사항 그대로 구현하기 term에서 제시하는 기간을 O(1)로 호출할 수 있도록 terms_dict를 만든다. collections 모듈의 defaultdict를 활용한다. 키가 존재하는지 확인할 필요 없이 바로 추가할 수 있게 해주는 함수이다. privacies를 순회하며 날짜 계산을 실시한다. 달에 해당하는 date[1]에 term으로 호출한 기간을 더해주고, 12를 초과할 경우 연도에 해당하는 date[0]에 더해준다. (date[1] - 1) // 12 : 13일 경우 date[0]에 1이 더해져야 하지만 12일 경우 그대로여야 한다. 12인데 연도를 더하고 월에 12를 빼버린다면, 위의 테스트 케이스에서 잘못된 답이 나올 것이다. 마찬가지로 연도를 올렸다면, 계산한 만큼에 12를 곱한 값을 빼서 계산한다. 연월일을 합치고, 오늘 날짜와 비교하여 만일 날짜가 오늘보다 같거나 작으면, 즉, 오늘

ChatGPT를 보고 느낀 엔지니어링의 순서
ChatGPT 사용하다보면 이런 안내가 나오고 대화가 안 될 때가 있다. 문득 쿠팡 개발 팀장, AWS 인터뷰를 보면서 겪었던 대용량 트래픽에 알맞는 시스템을 설계해보라는 인터뷰가 생각이 났다. 다 필요없다! 확실한 서비스 하나만 있다면 언제든 구현 가능한 기술들이다. 요즘은 클라우드가 너무 잘 돼 있고, 여기저기 이런 설계 레퍼런스는 차고 넘친다. > 그래서 엔지니어링 또는 프러덕트의 순서는 다음과 같다. 세상에 없는 서비스 개발 안정적인 운영에 대한 고민 따라서, 크게 성공하고 싶은 젊은 개발자나 PM이 집중해야할 곳은 누구나 따라하면 구현할 수 있는 기술들이 아니라, 창의적이고 혁명적인 서비스 발굴이다. 물론 나이드신 분들도 마찬가지이지만 그래도 경험이 부족한 젊은 사람들이

[Book] Data-Driven UX:데이터 드리븐 유엑스(1)
오랜만에 교보문고에 방문했는데 나에게 안성맞춤 책을 찾았다. 바로 이 책이다. 사실 표지가 예뻐서 맘에 들었다.블랙에 레드라니,,심지어 블랙에 후가공되어있음 실물 대존예 뷰저블 회사에서 출간한 책인데 도서 상세페이지를 보고싶다면 여기로 보시면 된다. 이 책을 고르게 된 이유 나는 프로덕트 디자이너를 준비하고 있다. 시각디자인과를 재학중인데도 이 쪽 분야에선 전문가라고 말할 수 없었다. 워낙 새로 공부해야 할 양이 많았고, 요즘 추세의 프로덕트 디자이너는 단순 UX/UI 뿐만아니라 마케팅, 데이터, 하다못해 React까지 공부하는 사람이 더러 있기 때문이다. 매일같이 글을 읽어도 모르는 내용은 늘 업데이트 된다. 특히 데이터활용이 너무나 어려웠다. > #### 저는 디자이넌데 데이터가 왜 필요한가요? 화면만 잘 "그려내는" 건 더이상 의미가 없어졌다. 이유가 반드시 있어야한다. 논리를 갖추기 위해 그
[python] itertools 라이브러리
효율적인 루핑을 위한 이터레이터를 만드는 함수 1. permutations() - 순열 permutations(iterable, r=None) 입력 iterable에서 요소의 연속된 길이 r 순열(모든 가능한 순서, 반복되는 요소 없음)을 반환 r이 지정되지 않거나 None이면, r의 기본값은 iterable의 길이 2. combinations() - 조합 combinations(iterable, r) 입력 iterable에서 요소의 길이 r 서브 시퀀스들을 반환(정렬된 순서, 반복되는 요소 없음) 조합(combination) 튜플은 입력 iterable의 순서에 따라 사전식 순서로 방출 3. product() - 곱셈 product(*iterables, repeat=1) 입력 이터러블들(iterables)의 데카르트 곱(제너레이터 표현식에서의 중첩된 for-루프와 동등) 이터러블의 자신과의 곱을 계산하려면, 선택적 repeat 키워드 인자를 사용하여 반복 횟
Product_schema.prisma
** 들어가기 Product schema.prisma model ** 1. schema.prisma ~ 항상 schema.prisma를 수정하면, pscale connect apple-market, npx prisma db push

An Agile Approach
불확실성과 화해하는 프로젝트 추정과 계획, "3장: 애자일 접근법"을 정리해본다. > 지금 열정적으로 수행하는 '좋은' 계획이 다음 주에 실행할 '완벽한' 계획보다 낫다. - 패튼 장군 2001/2월에 시작한 애자일 운동의 선언문에는 다음과 같은 것들에 무게를 두고 있다. Agile Manifesto 프로세스/도구 보다는 개인과 그들 간의 상호작용을 중시하고 포괄적인 문서를 만드는 것보다는 제대로 돌아가는 소프트웨어를 만드는 것을 중요하게 생각하며 계약 협상보다는 고객과의 협력을 더 우선시하고 계획을 주어진대로 따르기 보다는 변화에 대응하는 쪽을 택한다. 프로젝트에 대한 애자일 접근법 위의 네가지 가치를 전부 내재화한 애자일 팀은 어떻게 일을 하고 있을까? 하나의 팀으로 일한다. 짧은 이터레이션 단위로 일한다. 이터레이션이 끝날 때마다 무엇인가를 내놓는다. 비즈니스 측면에서의 우선순위에 초점을 맞춘다. 점검하고 적응한다.

[python] itertools - 곱, 순열, 조합, 중복조합
python itertools 파이썬 표준 라이브러리 중 하나로, 반복해서 작성해야하는 코드를 구현할 수 있는 라이브러리이다. 데카르트 곱(product), 순열(permutations), 조합(combinations), 중복조합(combinationswithreplacement)을 구현하기에 편리하다. product '데카르트 곱' 또는 'cartesian product'를 표현할 때 사용하는 메소드이다. 'product(A, B)'은 '((x,y) for x in A for y in B)'과 표현하는 메소드이다. product 정의 내용 product(A, repeat=4)은 product(A, A, A, A)와 같다. product 사용 예시 permutations 
Python 순열, 조합, 곱집합, 중복 순열, 중복 조합 튜토리얼
파이썬으로 코딩테스트를 준비하다보면 가장 큰 장점이 표준 라이브러리입니다. 굳이 구현할 필요 없이 파이썬에서 만들어져있는 라이브러리를 사용하여 쉽게 알고리즘을 짤 수 있습니다. 이번에는 그 대표적인 예로 itertools를 사용하여 순열, 조합, product를 구현해보았습니다. > > 사용 전에 주의사항 : combinations, permutations, product 세 메소드 모두 generator이기 때문에 list()로 캐스팅하여 다른 곳에 저장 해두지 않으면 한 번의 루핑 이후 사라지게 됩니다. > > 파이썬 레퍼런스 : https://docs.python.org/ko/3/library/itertools.html 📌 Itertools 파이썬에 내장된 itertools 패키지의 combinations 모듈과 permutations 모듈을 통해 쉽게 순열과 조합을 구할 수 있습니다. 이 떄 만들어진 순열과 조합은 튜플의 형태로 리스트에

Aug 12, 2021, TIL (Today I Learned) - Build Setting
What is a build setting? > A build setting provides information necessary for building the product of a target. For each task performed during the build process—such as compiling Swift code—build settings control how that task is performed. target 타겟은 빌드하기 위한 프로덕트를 뜻합니다. > A target specifies a product to build, such as an iOS, watchOS, or macOS app. When you creat
내장모듈 - itertools(순열, 조합, 프로덕트, 중복순열)
itertools에서 계산하는 값들은 list를 씌워야 핸들링하기 쉽다 프로덕트(product) product(string1, string2) 이렇게 주어지면 => len(string1) * len(string2) 만큼의 조합 갯수가 나옴 동일한 예로 product(list1, list2) 이렇게 주어지면 => len(list1) * len(list2) 만큼의 조합 갯수가 나옴 product(list, repeat=n) 이렇게 주어지면 => len(list1)^n 만큼의 조합 갯수가 나옴 repeat=3은 각 element를 최대 몇개까지 쓸 수 있는지를 알려준다고 생각하자. [0,1] 이면 => (0,0,0), (1,1,1)이 뽑힐 수 있다는 뜻 순열과 조합 순열 : 순서가 바뀌면 다른 조합이다. (1,2,3) => 2개로 뽑아서 순열만들면 => (1,2), (2,1), (1,3), (3,1) 조합 : 순서

최소한으로 검증하자
『인스파이어드』 라는 책에는 이런 문구가 나옵니다. > "우리는 아이디어 대부분이 소용없을 것이라는 마음가짐을 가지고 제품 발견에 접근해야 한다." 인스파이어드 p190 > "당신이 위대한 제품을 발견하기 원한다면 실제 사용자와 고객을 대상으로 더 일찍 더 자주 당신의 아이디어를 보여주는 것이 중요하다." 인스파이어드 p186-187 뇌피셜을 멈추고 테스트로 검증한다 우리는 제품을 기획하고 만드는 동안 수 많은 의견과 아이디어를 제시합니다. 유저들이 겪는 문제점을 해결하기 위해 "이 제품이 필요할거야~ 저 기능이 효과가 좋을거야~" 라는 식의 가정을 세우기도 하죠. 하지만 제품/기능을 선보였을 때 실제 결과는 우리의 생각과는 전혀 다른 양상을 보일 때가 많습니다. 그러므로 우리는 서로의 의견이 맞네 틀리네 하는 '뇌피셜 전쟁' 을 길게 할 필요가 없습니다. 가설을 세우고 실제 테스트를 통해 결과를 검증 해보면 되는 것이죠.

Python itertools
곱집합(Cartesian product) 구하기 - product 보통 사람들은 for 문을 이용해 두 iterable의 원소를 하나씩 곱해갑니다. 파이썬에서는 itertools.product를 이용하면, for 문을 사용하지 않고도 곱집합을 구할 수 있습니다. 2차원 리스트를 1차원 리스트로 만들기 - from_iterable 파이썬에서는 파이썬의 다양한 기능을 사용하면, for 문을 사용하지 않고도 리스트를 이어 붙일 수 있습니다. my_list = [[1, 2], [3, 4], [5, 6]] 방법 1 - sum 함수 방법 2 - itertools.chain 방법 3 - itertools와 unpacking 방법 4 - list comprehension 이용 방법 5 - reduce 함수 이용 1 방법 6 - reduce 함수 이용 2 제한적으로 사용 가능한 방법 아래의 방법은 각 원

Product team competencies 글을 읽고
평소처럼 커리어리를 훅훅 넘기면서 보다 카카오 플랫폼 기획 이준님이 Neil Cabage의 글을 공유하며 이렇게 소개하셨습니다. > 이 매트릭스는 '제품 관리'라는 모호하고 광범위한 영역을 한눈에 볼 수 있게 만들어 줍니다. 링크를 누르고 이 이미지만이라도 한 번 보고 가야 할 가치가 있습니다. 제가 7개의 회사에서 다양한 역할을 경험하면서 가장 많이 고민했던 것은 '내가 이 매트릭스의 어디쯤을 커버해야 하는가'였던 것 같습니다. 현업에서 제품 관리자, 프로덕트 오너, PM, 기획자... 뭐라고 부르든 이들의 역할에 대해 명료한 그림을 제시하는 일은 드뭅니다. 현재 조직에서 job-crafting을 해야 하거나 커리어의 방향을 세우려는 분들께 이 매트릭스는 큰 도움이 될 것 같습니다. 저도 개발자로서, 때로는 기획도 겸하면서, 이런 수많은 제품과 관련된 영역에 어떤 것