2019. 1. 25. 04:29 일상

Funnel Analysis : basic

Funnel Analysis : basic

타켓 : 번화가의 화장품 매장

target : Cosmetics store in downtown


주제 : 고객 행동 데이터 분석

subject : Analyze customer behavior data


화장품 매장에서 가장 중요한 고객 행동 2가지

Two of the most important behaviors of customers in the store


1. 매장에 들어온다

1.enter the store


2. 물건을 구입한다.

2.Buy the product


중요한 행동을 하는 고객의 수를 세어보자.

Count customers performing a specific action

1. 매장에 들어온 사람의 수(내방객) 500명

2. 상품을 구입한 사람의 수 50명

내방객 기준으로 10%의 구매 전환율


사용자 행동 추적해서 데이터 만들기

How to get Behavior Tracking Data


내방객은 계수기로 센다.

구매고객의 수는 POS의 기록을 결제 건수를 확인.

구매자수 != 결제건수


목표 행동 = 상품 구매


1,2 두 행동 사이에 선후 관계가 존재.

구매고객  ⊆ 내방객

구매 고객  <= 내방객


퍼널 = 갈때기


회원 가입 비율 측정은 가입 전환율

Communication does matter


퍼널의 단계

Funnel Stages


2단계 퍼널

내방객 -> 구매고객


3단계 퍼널

내방객 -> 구매고객 -> 적립고객


3단계 퍼널

유동인구 -> 내방객 -> 구매고객 -> 적립고객


퍼널 분석의 활용

Uses of Funnel Analysis


1. 효율을 비교하기

Measure to compare efficiency


내방객 1명당 구매고객의 비율

구매 전환율 * 구매고객 당 매출(객단가) = 내방객 당 기대 매출


2. 시간에 따른 변화를 측정

Measure changes over time


3. 특정 사건의 임팩트를 측정

Measure the impact of an incident


4. A/B 테스트의 결과를 분석하기

Analyze the result of A/B Test


Reference : https://www.youtube.com/watch?v=kRPU70VG2GY


'일상' 카테고리의 다른 글

DNS 터널링  (0) 2018.04.08
Category Theory  (0) 2018.02.05
Google AutoML  (0) 2018.01.23
데이터 연결_DMP의 중요성  (0) 2018.01.08
빅데이터 가상화  (0) 2018.01.08
Posted by 커다란꼬꼬마

소크라테스 악법도 법이다의 의미

소크라테스는 이런 말을 한 적이 없고 원래의 말의 의미를 알쓸신잡3편의 유시민 작가의 말을 적어 기록해 본다.


폴리스가 우리들이 합의해서 지켜온 절차에 따라서 나에게 사형을 선고했는데 나는 스스로 생각하기에 사형을 받을만한 이유도 없고, 억울하다

이렇게 판달할떄, 이 폴리스의 결정을 회피하는 행동을 하는 것이 옳은가, 옳지 않은가 그 판단을 해야한다. 


폴리스의 결정에 대해서 승복하지 못할 때, 모두가 회피하면 폴리스가 존재할 수 있느냐 라는 질문을 소크라테스가 스스로에게 함.


모든 폴리스의 시민들이 그와 같이 행동한다면 폴리스는 존재할 수 없다. 

따라서 도망가는 것은 올은 일이 아니다.

개인과 사회 간의 갈등

철학적이고 사회적인 호모 사피엔스들에게 늘 따라다닐 수밖에 없는 질문

Posted by 커다란꼬꼬마

스마트폰을 보는 이유라고는 하지만 사실, 스마트폰을 그때가 아닌면 볼수없는 것 같다.

이러한 이유들중 첫번째는 하나는 노동시간과 관련되어있다. 노동시간이 길고 회사에서는 개인의 시간이 없고 출퇴근 시간이 길기떄문에 그때가 아니면 자신만의 시간도 없고 드라마나 쇼핑을 할 시간이 없기떄문이다. 그래서 흔들리고 사람이 북적북적한 그 공간에서 사람들은 뉴스를 보고 카카오톡으로 대화를 하고 동영상을 보는 것 같다.


두번째이유는, 현재에 내가 그렇기도 하지만, 집에와서는 출퇴근의 피로와 회사에서의 피로감으로 인해, 집에서는 탈진상태가 되어 1분이라도 더 잠을 청하고 싶은 것 같다. 집에오면 컴퓨터를 항상 켜고 다른 것을 했던 몇달전의 나와는 다르게, 이제는 씻고 침대에 눕기 바쁘고, 너무 피곤할때는 씻는 과정도 생략하고 누워서 내일 출근할 생각을 하며 알람을 맞추고 기절하기에도 바쁜 것 같다.


세번째이유는, 일본과 라오스를 다녀오면서 느꼈지만, 대한민국의 대중교통에서의 인터넷 인프라가 잘 되어있기 떄문이다. 몇일전 9호선을 탔을 때 보니, 통신사 3사의 장비가 다 있고 그 앞에 화웨이 장비가 증폭을 해주는 것을 보았다. 어디서든 잘 터지고 무료이고 빠르다. 이러한 환경덕분에 나도 지하철을 타고 다닐때 부족한 데이터를 무료 와이파이로 대체하였다.


위의 이야기들 중 현재 나에게 가장 크게 다가오는 것은 노동시간과 관련된 이유이다. 문화도 문화지만, 삶의 여유가 생기게 되면 꼭 그 자리가 아니라도 다른 곳에서 할 수도 있을 것 같다.

'글쓰기' 카테고리의 다른 글

소크라테스 악법도 법이다  (0) 2018.09.30
Posted by 커다란꼬꼬마

2018. 5. 31. 21:40 개발

spring 시큐리티

CREATE TABLE users(

userid varchar2(255) not null,

passwd varchar2(255) not null,

name varchar2(255) not null,

enabled number(1) default 1,

authority varchar2(20) default 'ROLE_USER',

primary key(userid)

);

'개발' 카테고리의 다른 글

코드로 spring  (0) 2018.05.27
admin table  (0) 2018.05.25
여러값을 배열로 받아서 처리  (0) 2018.05.24
MemberDTO  (0) 2018.05.21
spring 파일 업로드  (0) 2018.05.21
Posted by 커다란꼬꼬마

2018. 5. 27. 00:06 개발

코드로 spring

create table tbl_member (

userid varchar(50) not null,

userpw varchar(50) not null,

username varchar(50) not null,

email varchar(100),

regdate timestamp default now(),

updatedate timestamp default now(),

primary key(userid)

);



create table tbl_board (

bno INT NOT NULL AUTO_INCREMENT,

title VARCHAR(200) NOT NULL,

content TEXT NULL,

writer VARCHAR(50) NOT NULL,

regdate TIMESTAMP NOT NULL DEFAULT now(),

viewcnt INT DEFAULT 0,

PRIMARY KEY(bno));


XML파일의


CDATA 

XML 코드 중 XML parser에 의해 해석하지 말고 그대로 브라우저에 출력하라는 뜻..

"&",">","<" 과 같은 특수문자를 쓰고 싶은데

XML parser가 태그로 인식하는 것을 방지하기 위해서,

이 것(위의 ... 부분)은 태그가 아니고 그냥 String이다! 


create table tbl_reply (

rno int NOT NULL AUTO_INCREMENT,

bno int not null default 0,

replytext varchar(1000) not null,

replyer varchar(50) not null,

regdate TIMESTAMP NOT NULL default now(),

updatedate TIMESTAMP NOT NULL default now(),

primary key(rno)

);

alter table tbl_reply add constraint fk_board

foreign key (bno) references tbl_board (bno);


create table tbl_user(

uid varchar(50) not null,

upw varchar(50) not null,

uname varchar(100) not null,

upoint int not null default 0,

primary key(uid)

);


create table tbl_message (

mid int not null auto_increment,

    targetid varchar(50) not null,

    sender varchar(50) not null,

    message text not null,

    opendate timestamp,

    senddate timestamp not null default now(),

    primary key(mid)

);


alter table tbl_message add constraint fk_usertarget

foreign key (targetid) references tbl_user (uid);


alter table tbl_message add constraint fk_usersender

foreign key (targetid) references tbl_user (uid);


insert into tbl_user(uid, upw, uname) values ('user00', 'user00', 'IRON MAN');

insert into tbl_user(uid, upw, uname) values ('user01', 'user01', 'CAPTAIN');

insert into tbl_user(uid, upw, uname) values ('user02', 'user02', 'HULK');

insert into tbl_user(uid, upw, uname) values ('user03', 'user03', 'THOR');

insert into tbl_user(uid, upw, uname) values ('user10', 'user10', 'QUICK SILVER');

'개발' 카테고리의 다른 글

spring 시큐리티  (0) 2018.05.31
admin table  (0) 2018.05.25
여러값을 배열로 받아서 처리  (0) 2018.05.24
MemberDTO  (0) 2018.05.21
spring 파일 업로드  (0) 2018.05.21
Posted by 커다란꼬꼬마

2018. 5. 25. 06:40 개발

admin table

-- 보안상의 이유로 관리자 table 따로 생성

create table admin (

userid varchar2(50) not null,

paawd varchar2(50) not null,

name varchar2(50) not null,

email varchar2(100),

join_date date default sysdate,

primary key(userid)

);

'개발' 카테고리의 다른 글

spring 시큐리티  (0) 2018.05.31
코드로 spring  (0) 2018.05.27
여러값을 배열로 받아서 처리  (0) 2018.05.24
MemberDTO  (0) 2018.05.21
spring 파일 업로드  (0) 2018.05.21
Posted by 커다란꼬꼬마

@RequestMapping("update.do")

public String update(@RequestParam int[] amount,

  @RequestParam int[] product_id, HttpSession session) {

  String userid = (String)session.getAttribute("userid");

  if(userid != null) {

    for(int i=0; i < product_id.length; i++) {

      CartDTO dto = new CartDTO();

      dto.setUserid(userid);

      dto.setProduct_id(product_id[i]);

      dto.setAmount(amount[i]);

      cartService.modifyCart(dto);

    }

  }

  return "redirect:/shop/cart/list.do";

}



스프링 디버깅

1개의 프로젝트만 open

clean

- Project - clean : 소스 코드 강제 컴파일


Servers

- clean 서버 클리어

- clean Tomcat work di~ 톰캣 작업 디렉토리


maven - update project



'개발' 카테고리의 다른 글

코드로 spring  (0) 2018.05.27
admin table  (0) 2018.05.25
MemberDTO  (0) 2018.05.21
spring 파일 업로드  (0) 2018.05.21
Spring 흐름  (0) 2018.05.21
Posted by 커다란꼬꼬마

2018. 5. 24. 13:06 카테고리 없음

spring@

@RequestParam : request.getParameter()

@ModelAttribute : 폼데이터 전체를 dto로 저장


@Controller : controller bean 으로 등록

@Service : Service bean 으로 등록

@Repository : dao bean 으로 등록


@PathVariable : restful api, url에 포함된 변수

@ResponseBody : Controller의 method의 리턴값을 json으로 변환


@Inject : 의존관계 주입

Posted by 커다란꼬꼬마

2018. 5. 21. 23:40 개발

MemberDTO

public class MemberDTO {

private String userid;

private String passwd;

private String name;

private String email;

private Date join_date;

}


public interface MemberDAO {

public boolean loginCheck(MemberDTO dto);

public MemberDTO viewMember(String userid);

}


public interface MemberService {

public boolean loginCheck(MemberDTO dto, HttpSession session);

public void logout(HttpSession session);

public MemberDTO viewMember(String userid); 

}




create table cart (

cart_id number not null primary key,

userid varchar2(50) not null,

product_id number not null,

amount number default 0

);


alter table cart add constraint cart_userid_fk

foreign key(userid) references member(userid);


alter table cart add constraint cart_productid_fk

foreign key(product_id) references product(product_id);



public class CartDTO {

private int cart_id;

private String userid;

private String name;

private int product_id;

private String product_name;

private int price;

private int money;

private int amount;

}


public interface CartDAO {

public List<CartDTO> cartMoney();

public void insert(CartDTO dto);

public List<CartDTO> listCart(String userid);

public void delete(int cart_id);

public void deleteAll(String userid);

public void update(int cart_id);

public int sumMoney(String userid);

// 장바구니에 이미 상품이 담겼는지 확인

public int countCart(String userid, int product_id);

// 장바구니 수량 변경

public void updateCart(CartDTO dto);

public void modifyCart(CartDTO dto);

}


select cart_id, m.userid, m.name, p.product_id, product_name, amount, price*amount money

from member m, cart c, product product_id

where m.userid=c.userid and p.product_id=c.product_id

and m.userid = #{userid}

'개발' 카테고리의 다른 글

admin table  (0) 2018.05.25
여러값을 배열로 받아서 처리  (0) 2018.05.24
spring 파일 업로드  (0) 2018.05.21
Spring 흐름  (0) 2018.05.21
부모 추상 인터페이스  (0) 2018.04.03
Posted by 커다란꼬꼬마

2018. 5. 21. 16:02 개발

spring 파일 업로드

<!-- 파일 업로드 관련 라이브러리 -->

<dependency>

<groupId>commons-fileupload</groupId>

<artifactId>commons-fileupload</artifactId>

<version>1.3.3</version>

</dependency>

<!-- 이미지 썸네일을 만들어주는 라이브러리 -->

<dependency>

<groupId>org.imgscalr</groupId>

<artifactId>imgscalr-lib</artifactId>

<version>4.2</version>

</dependency>



상품

public class ProductDTO {

private int productId;

private String productName;

private int price;

private String description;

private String pictureUrl;

private MultipartFile file1; // 첨부 파일

}


public interface ProductDAO {

List<ProductDTO> listProduct();

ProductDTO detailProduct(int productId);

void updateProduct(ProductDTO dto);

void deleteProduct(int productId);

void insertProduct(ProductDTO dto);

String fileInfo(int productId);

}


<td><fmt:formatNumber value="${row.price}" pattern="#,###" /></td>


<select name="amount">

<c:forEach begin="1" end="10" var="i">

<option value="${i}">${i}</option>

</c:forEach>

</select>

'개발' 카테고리의 다른 글

여러값을 배열로 받아서 처리  (0) 2018.05.24
MemberDTO  (0) 2018.05.21
Spring 흐름  (0) 2018.05.21
부모 추상 인터페이스  (0) 2018.04.03
Garbage Collector  (0) 2018.03.27
Posted by 커다란꼬꼬마
이전버튼 1 2 3 4 5 이전버튼

블로그 이미지
커다란꼬꼬마

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

최근에 올라온 글

최근에 달린 댓글

글 보관함