1. 북클럽 시간 Startup Business Models and Pricing
- 위 100대 YC 기업의 대부분을 차지하는 마켓플레이스가 적용된 서비스를 한 가지 선택해주세요. 그리고 해당 서비스에 적용된 네트워크 효과를 만든 요소가 어떤 것이 있고 우리 아이템에 어떻게 적용해볼수 있을까요?
: 소비자가 많아질수록 리테일러와 배달원이 많아지고, 반대로 리테일러와 배달원이 많아질수록 소비자도 더 많이 유입되는 순환 효과가 발생합니다. 많은 데이터를 확보하고 있습니다.
인스타카트는 많은 사용자를 확보하면서 배달 비용을 낮출 수 있고, 리테일러와의 협업을 통해 상품 가격을 경쟁력 있게 조정할 수 있습니다.
많은 데이터를 바탕으로 자신의 반려동물과 잘 맞는 짝을 찾고 이것이 그룹으로 확장되면서 자연스레 홍보가 되는 효과
- 자사 제품의 적정 가격을 결정할 때 비용이 아닌 가치에 따라 결정되어야한다고합니다. 소비자 입장에서 제품을 구매하거나, 서비스 이용료 등을 지불할 때 ‘비싸거나, 저렴하거나, 합리적이거나’ 라고 생각했던 경험이 있다면, 각각 어떤 이유가 있었나요?
: 이 돈의 값어치를 할만큼의 가치가 있냐라는 것이 처음 가격을 보고 드는 생각인 것 같습니다. 매일 들어가거나, 지금 꼭 필요한 경우, 대게 가격이 합리적이라는 생각이 우세한 것 같습니다.
2. Flutter 이론 학습
함수형 프로그래밍 (Functional Programming)
고차 함수
- reduce_ reduce ((매개 변수1 , 매개 변수2) { return[동작] });
: Collection 타입의 데이터에 있는 요소들을 하나의 값으로 결합
매개변수 1에는 이전 실행에서 반환된 값(첫번째 값) 실행에서는 이전 실행이 없기 때문에 Collection타입의 데이터에 있는 첫번째 값이 할당되고, 매개변수 2에는 Collectuon타입의 데이터에 있는 다음 값이 할당됩니다.
Collection 타입의 데이터와 같은 타입으로만 반환가능하다
Collection 타입의 데이터에 있는 요소가 없는 경우에는 오류가 발생한다.
- fold_fold (초기 값, (매개 변수1, 매개변수 2){ return[동작] });
:Collection 타입의 데이터에 있는 요소들을 하나의 값으로 결합.
매개변수 1에는 이전 실행에서 반환된 값 (초기 값)
매개 변수 2에는 Collection 타입의 데이터에 있는 다음값이 할당
Collection 타입의 데이터와 다른 타입으로도 변환 가능
Collection 타입의 데이터에 요소가 없어도 오류 발생 x
void main() {
List<int> numbers = [1, 2, 3, 4, 5];
var result = numbers.fold('', (previous, next) {
print('previous: $previous');
print('next: $next');
String temp = '$previous' + '$next';
print('previous + next : $temp');
print('-----------');
return temp;
});
print(result);
}
출력
previous:
next: 1
previous + next : 1
-----------
previous: 1
next: 2
previous + next : 12
-----------
previous: 12
next: 3
previous + next : 123
-----------
previous: 123
next: 4
previous + next : 1234
-----------
previous: 1234
next: 5
previous + next : 12345
-----------
12345
## fold 와 reduce 의 경우 비슷한 형식이지만 확연한 차이가 있다
fold의 경우 빈 Collection 이 사용 가능하고 Collection의 요소 타입과 달라도 된다.
하지만 reduce의 경우 그렇지 않다.
- any() _any((매개변수) { return 조건식 }); / any(( 매개변수) => 조건식 );
: Collection 타입의 데이터에 있는 요소 중 하나라도 주어진 조건을 만족하면 true반환
- every()_ every((매개변수) { return 조건식 }); //every(( 매개변수) => 조건식 );
:Collection 타입의 데이터에 있는 모든 요소가 주어진 조건을 만족하면 true를 반환
- takeWhile() _ takeWhile(( 매개변수) { return 조건식 }); //takeWhile(( 매개변수) => 조건식 );
:Collection 타입의 데이터에 있는 요소들을 주어진 조건에 넣었을 때 참이 되는 동안은 해당 효소 반환, 조건이 처음으로 거짓이 되는 순간부터의 요소들은 모두 무시.
- skipWhile() _ skipWhile(( 매개변수) {return 조건식 }); //skipWhile(( 매개변수) => 조건식 );
:Collection 타입의 데이터에 있는 요소들을 주어진 조건에 넣었을 때 참이 되는 동안은 해당 요소들을 건너뛰고, 조건이 처음으로 거짓이 되는 순간부터의 요소들을 모두 반환합니다.
+ List 에 있는 숫자들 각각에 2를 곱한 후 5보다 큰 값들을 반환
void main() {
List<int> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var result = numbers
.map((number) => number * 2)
.where((number) => number > 5);
print(result);
/*List<int> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var doubleNumbers = numbers.map((number) => number * 2);
var result = doubleNumbers.where((number) => number > 5);
print(result); */
}
+ List에 있는 숫자들 중 짝수만 골라낸 후 각각을 제곱한 값들의 합을 반환
(where은 필터링 하는 기능)
void main() {
List<int> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var result = numbers
.where((number) => number.isEven)
.map((number) => number * number)
.reduce((a, b) => a + b);
print(result);
}
//220