2015년 11월 4일 수요일

데이터베이스(Postgresql)의 3가지 함수 형태 요약

Postgresql에서 정의할 수 있는 3가지 함수 형태이다.


  • IMMUTABLE (불변의)
    • 같은 입력값에 대해서는 항상 같은 결과값이 출력된다.
    • anyway,anytime 같은 값을 보장하며 산술 연산들이 여기에 해당된다.
    • 옵티마이저가 미리 계산해도 무방하다.
  • STABLE (정적인)
    • 같은 트랜잭션 내에서는 같은 입력값에 대해서 같은 결과를 출력한다.
    • current_timestamp와 같이 같은 트랜잭션 내에서 결과가 동일한 경우를 포함한다.
    • 옵티마이저 입장에서는 여러번의 콜을 한번으로 줄일 수 있다.
  • VOLATILE (휘발성의)
    • 매번 함수를 호출한다.
    • random(), curval() 함수처럼 미리 확신할 수 없다.
    • 대량의 row에 매번 적용되지 않도록 고민해야 한다.


트랜잭션이라는 논리적인 구성을 가지는 DB에서는 성능이나 편의성을 위해 최소한으로 필요한 요소들로 보인다.

2015년 11월 3일 화요일

검색 엔진 기능 구현 시 유용한 용어 정리

검색 엔진에서 문장 조합을 학습(인덱싱)하다 보면, 원할한 의사 소통을 위해 적절한 용어 사용이 필요하다.

예제) 가 나 다
N 값을 2로 가정할 때, 다음과 같다.
  • 순열
    • 가나, 나가, 나다, 다나, 가다, 다가
  • 조합
    • 가나, 나다, 가다
  • N-Gram
    • 가나, 나다
  • Edged N-Gram
    • 가나(압), 다나(뒤)

2015년 10월 17일 토요일

스팸 필터링 구현하기

항상 가까운 곳에서 함께하던 스팸(SPAM)을 필터링 하기 위한, 정통적인 방식과 기계학습을 응용한 최근 방식을 소개한다.

참고 논문 :
Classifying Unsolicited Bulk Email (UBE) using Python Machine Learning Techniques

논문에서 다루는 전통적인 방식과 기계학습 응용 방식의 필터링에 자연어 처리 (NLP) 기법을 추가했다.

계념도는 다음과 같다.
1. 단어 필터
 - 전통적인 방식의 필터링이다.
 - 스팸의 근거가 되는 단어/패턴/속성 사전에 대한 관리가 필요하다.
2. 형태소 필터
 - 자연어 처리 (NLP)의 형태소 문법 패턴을 이용했다.
 - 스팸의 근거가 되는 문법 패턴을 통해 걸러 낸다.
3. 의미 필터
 - 기계학습을 이용한 방식이다.
 - 스팸 자료를 학습 데이터로 모델을 만들어 분류한다.

* 팁
 - 필터 단어나 문법 패턴은 실제 스팸 자료를 가공해서 상위 빈도를 참고한다.
 - 한글이 영어와 달라 학습 자료가 적을 경우는 정확도가 낮음으로, NLP를 통해 의미를 가지는 형태소 위주로 전 처리 후 사용한다.
 - 학습 모델 생성 시, STOPWORD와 TF-IDF는 정확도를 높여주는 좋은 친구다.

본문관련 파이톤 코드는 다음을 참고하자.
https://bitbucket.org/snippets/juhoon26/LLRgj

2015년 9월 11일 금요일

구글 어낼리틱스(google analytics) 리포트 분류표

구글 어낼리틱스(Google Analytics)의 리포트(Report) 분류표 입니다.


대분류
소분류
설명
대시보드
개요
내가 원하는 보고서들만 한눈에 보기
지능형 이벤트
개요
사이트/앱의 일/주/월별 이벤트 설정
실시간
개요
실시간 활동 추적
위치
위치 정보
트래픽 소스
매체 소스
콘텐츠
페이지 정보
이벤트
이벤트 카테고리, 액션
전환
목표 달성 정보
잠재고객
개요
방문하는 고객들은 어떤 사람인가?
인구통계
연령 및 성별
관심분야
카테고리별
지역
언어 및 국가별
방문형태
신규방문, 재방문, 방문빈도 및 참여도,User-ID 게재 비율
기술환경
브라우저, 운영체제, 네트워크 통신사
모바일
모바일 종류
벤치마킹
벤치마킹과 대비해서 채널, 위치, 기기 동향 비교
사용자 흐름
사용자 속성별 페이지 흐름
획득
개요
어떤 채널과 캠페인을 통해 고객들이 방문하는가?
전체
채널,소스,매체 구분
애드워즈
광고 연동 시에 정보
소셜
소셜 트레픽 유입 경로 및 흐름
캠페인
캠페인 유입 경로 및 키워드
방문형태
개요
방문자들은 사이트 내에서 어떻게 행동할까?
행동흐름
방문 페이지 이동 경로
사이트 콘텐츠
방문, 이탈 페이지
사이트 속도
페이지 로딩 속도
사이트 검색
사이트 검색어
이벤트
이벤트 페이지, 종류
게시자
에드센스 참조 정보
실험
A/B 테스트
인페이지 애널리틱스
페이지와의 상호작용 분석
전환(구매 전환)
개요
전환은 어떻게 일어나고 있을까?
목표
목표 경로 추적
전자상거래
제품 구매 추적
다채널 유입경로
채널 유입 경로 추적
기여
목표 달성 기여도 확인

* 녹색 배경은 추가 태깅(tagging) 작업이 필요한 부분입니다.

커버 표지

2015년 9월 8일 화요일

페이스북 로그인 구현 과정 소개

사이트 별로 관리되는 계정 정보는 효율이 많이 떨어진다. 다수의 사람들이 사용하고 있는 SNS 계정을 통해서 맴버를 관리 한다면, 사용자 입장에서는 간편 가입이 가능하고, 사이트 입장에서는 정보 네트워크를 확대할  수 있는 이점이 있다.

대표적인 SNS인 페이스북 로그인 구현 과정을 소개한다.

개발 페이지에서 My APP 생성하기

URL : https://developers.facebook.com/apps/

Site URL에 로그인을 구현하는 페이지 주소를 입력한다. 응답 값을 받아야하니 정확하게 입력 한다.

예제 스크립트 조금 수정 하기

가이드 URL : https://developers.facebook.com/docs/facebook-login/web

작성하는 시점에서 최신 버전인 Facebook API v2.4 기준으로 예제 코드를 수정한다.
A. fields 변수를 통해 호출할 때, 응답 받을 값의 필드를 명시한다.
    /me?fields=id,name,email .... // 콤마(,)로 필드 구분
B. 결과 수신이 잘 되었는지 확인하기 위해, 응답 값의 키(Key)를 나열하는 코드를 추가한다.
   Object.keys(response).join('<br/> * ')

필자가 수정한 코드는 다음과 같다.
URL : https://bitbucket.org/snippets/juhoon26/r984L

브라우저를 통해서 로그인 절차 소개하기

로그인 버튼을 누르면, 개인정보 제공에 동의를 구한다. 기본적으로 제공되는 정보와, 예제 스크립트에서 scope을 통해서 지정된 정보 요청에 동의를 구하는 과정이다.
동의를 하면 다음과 같이 개인정보를 넘겨 준다.

넘겨 받은 정보를 통해서 가입 폼을 만들거나, 로그인 처리가 가능하다.

2015년 9월 1일 화요일

인구 변화와 부동산 중요 용어 정리

매매와 전세는 언제나 뜨거운 감자이다. 2년 마다 찾아 오는 전세 상승분은 일반적인 월급으로는 메우기 힘들다. 최근에는 전세 물량조차 찾기 힘들다. 매매가에 가까운 전세는 집주인이 되기를 유혹하고, 정부의 저금리 정책과 함께 그 곳으로 간다.

최근에 매매의 유혹을 받으며 조사한 자료를 정리한다.

  1. 국내 총 인구 변화
  2. 부동산 중요 용어

금리와 가계 부체는 엇갈리는 의견이 많고 전문적인 부분이 있어서, 수요와 공급이라는 일반적인 원리로 바라본다. 주택을 공급으로 보고 인구를 수요로 봤을 때,저출산으로 오는 인구의 감소는 매매가에 영향을 줄 것이다. 반면 공급은 지속적으로 발생할 것으로 보이고, 노후 건물의 재건축은 "부동산 중요 용어" 정리에서 의미를 다루어 본다.

국내 총 인구는 5년을 단위로 조사를 하고, 2015년이 조사 년도라 최신 자료는 2010년이다. 이해를 돕기 위해 10년의 변화를 플롯했다.
베이붐 세대가 급격하게 줄어드는 구간으로 진입 중에 있고, 베이비들은 줄었다. 의학의 발달로 수명이 늘기는 하겠지만 한계가 있을 것이다. 이민자 정책과 같은 외부적인 인구 유입도 고려해 볼 수 있으나, 불안한 남북 정세나 현 출산 정책을 볼때 부정적이다. 멀지 않은 시점에 인구는 줄어 들 것으로 보인다.

다음은 부동산 중요 용어를 통해서 부동산 매매 시에 유의할 사항을 알아본다.
  • 연면적 : 건물 전체 층의 바닥 면적의 합
  • 용적률 : 지상층 연면적 / 대지 면적 * 100 (단, 주차장,주민공동시설,피난처 제외)
  • 건폐율 : 건축 면적 / 대지 면적 * 100 

용적률과 건폐율은 괘적한 도시 공간을 위해서 주거 형태나 지역에 따라 법으로 제약이 있다. 또한 건축물은 감가상각되어 결국에는 0에 수렴한다. 철거 비용이 든다면 -(마이너스) 될 수도 있는 것이다. 결국 남는 것은 땅값(지대의 자기 지분)이다. 저층 아파트는 고층으로 재건축 하면서, 용적률을 올려 수익이 발생하지만 이미 고층 아파트라면 신중할 필요가 있다.

참고:
부동산 중요 용어를 그림으로 잘 설명한 블로그.
http://blog.daum.net/rcn845/14803757