1. 개인정보의 처리 목적 (‘https://play.google.com/store/apps/details?id=com.indf.sadagu&hl=ko’이하 ‘싸다구’) 은(는) 다음의 목적을 위하여 개인정보를 처리하고 있으며, 다음의 목적 이외의 용도로는 이용하지 않습니다. - 고객 가입의사 확인, 고객에 대한 서비스 제공에 따른 본인 식별.인증, 회원자격 유지.관리, 물품 또는 서비스 공급에 따른 금액 결제, 물품 또는 서비스의 공급.배송 등 2. 개인정보처리 위탁 ① ('싸다구')은(는) 원활한 개인정보 업무처리를 위하여 다음과 같이 개인정보 처리업무를 위탁하고 있습니다.② ('https://play.google.com/store/apps/details?id=com.indf.sadagu&hl=ko'..
1. 들어가기전 3부 1편에 다뤘던내용에서 오타교정 편에 대해서 추가 견해를 남기고 싶어졌다.왜냐고 묻는다면, 작성한지 4달이나 지났고, 추가적으로 sada9라는 특가모음서비스를 운영하다보니 몇마디 더 하고 싶었다고 해야할까? 설명의 이해를 돕기위해 잠깐, 우리 부모님 이야기를 하겠다. 우리 부모님은 부르는 호칭이 다양하다. 1) 시골에서 친구들이 부르던 별명 2) 호적상 존재하는 이름 3) 주민등록에 있는 이름 물론, 금융거래나 대부분의 업무는 주민등록상있는 이름을 사용한다. (=당연하지만)즉, 아무리 별칭(alias)가 많더라도 대표되는 하나가 존재하기 마련이다. 텍스트 데이터 분석에서, 이렇게 다양한 "별칭"을 대표되는 하나의 단어로 통일해야 품질이 높아진다.이런 데이터 정제 입장에서 본다면 오타교..
1. 이전이야기 2회 열린세미나에서 발표했을때, UC에 대한 이야기를 한적이 있다. (Unique Count 집계하기)해당글을 안본사람을 위해 잠깐 설명하자면, 중복이 제거된 카운팅(=UC)을 구할때, Set 자료구조를 이용해서 카운팅한다고 했다. (=물론 그때 핵심내용은 서버에 분산 저장 가능한게 핵심이었지만...)이때, 매우 많은 아이템의 경우 HashSet은 아이템 갯수가 많아지면 커버가 안되고 BitSet을 쓰면 최대값이 큰 경우 문제가 된다고 했다. 그래서 두 장단점을 흡수하기위해 Map과 BitSet을 섞어서 구현한 SmartBitSet을 구현해서 처리했다고 했다. 아이디어는 비슷하지만 좀더 효율적으로 개선된 HyperSet이라는 Set구현체를 만들어 공개해 봤다.기본 아이디어와 소스는 git..
지인들과 발표를 했었던 열린세미나 100'C에서 발표했던 자료를 공유합니다. 참고로 열린세미나 100'C는 저와 NRISE의 CTO인 문수형님을 주축으로 하는 IT관련 작은 세미나입니다.지인위주로 참여하고 있지만, 외부에도 열려있습니다. ^^우선 제가 발표했던 자료를 이곳 블로그에도 링크 걸어봅니다. 1. 하둡, 좋은 약지만 만병통치약은 아니다 -정민철- 제가 처음 발표했던 발표 자료입니다.제가 말하고 싶었던 내용은 빅데이터라는 용어가 나오면서 하둡이라는 제품이 너무 만능으로 생각하고 있는 사람이 너무 많은것 같은 느낌이었습니다. 아마, 하둡을 언급할때 단점이나 용도보다는 장점을 부각하다보니 나오는 문제가 아닐까 생각되네요. 아무튼, 제가 실무로 하둡을 사용하면서 느꼈던 내용을 전달하고 싶어서 만들었던 ..
두 번째 앱 개발 프로젝트였는데.. 참 힘들긴 했지만 정말 재미있게 개발을 진행한 것 같습니다.(회사 일과는 다른 무언가가 날 계속 끌어당기고 있었음..) 힘들었던 점은 회사 일과 병행해야 하기에 리소스가 무진장 부족했단 점..유부남이기에 주말에 개발할 여력이 안된다는 점..내가 아이폰을 못따라가고 있다는 점.. 등등 대부분의 앱들은 안드로이드가 먼저 프로토를 제시하고 그 뒤를 아이폰이 개발하는 식이었는데, 우리는 그와 정반대로 진행되었다는게 특별하다면 특별하달까..그 이유는 물론 제가 초급 안드로이드 개발자이기도 했거니와 아이폰 개발자분(속칭 안군)이 워낙 능력자 분이셔서 ㅋ 일단 싸다9 안드로이드는 기존 안드로이드와 어떤 점이 다른지 위주로 설명을 해볼 생각입니다. ActionBar 사실 Action..
Sada9에는 사실 API 서버가 두개가 있습니다. 클라이언트와 통신하는 “Main API 서버”와 Main API 서버에서 상품의 카테고리 분류를 위해서 호출하는 “카테고리분류 API서버”이 글에서는 Sada9앱에서 어떻게 상품들의 카테고리를 분류 하는지와 카테고리 분류API 서버의 시스템 구성에 대해서 간략하게 설명드리려고 합니다. 1. 서버 사양카 테고리 분류 API서버는 물리적으로 Main API 서버와 다른 Host(AWS - m1.small)상에서 동작하고 있습니다. 시스템 설계상의 이유로 분리한 건 아니고 단순히 AWS 를 한 번 써보고 싶다는 생각에서 사비를 털어서 운영중에 있습니다.(최근에 가격은 내렸다지만 여전히 비싸요) 2. 카테고리 분류 방식1차 버전에서는 상품의 카테고리를 파악하기..
기술적인 애기는 별로 없다. 코드는 솔직히 그냥 그렇다. 그래도 이건 첫 시작이니만큼 경험에 대한 이야기. 첫 세팅에 대한 이야기. 첫 경험에 대한 이야기를 하고자 한다. 프로토타입으로 시작되었지만. 어 떻게 시작되었는지는 가물가물 한것 같다. 그냥 늘 그렇듯 몇개의 프로토타입중 하나겠거니 하는 식으로 만들었었고, 실제로 정대리와 나는 일년에 큰 프로토타입 몇개를 만들었다 부수었다를 반복하는것 같다. 그 시점에는 앱을 출시하고 차기 버전을 위한 아이디어를 정리하고 있을거라고 생각하진 않았다. (어떻게 보면 지금의 것도 별거 아니다.) 의견이 맞았던것 같다. 나 역시 자주 이마트에서 생수나 세제 같은것들을 사먹으면서 기획 상품이나 오반장(이마튼의 1일특가같은.)을 보면서 구매하곤 했으니까. 그리고 이마트 ..
청명한 가을날씨인것 같아요.드디어 아이폰 버전이 승인되었습니다.사실은 안드로이드와 같은날 업로드 했는데 ㅠㅠ 특가만 모아모아 싸게 살수 있는 싸다구 !!! https://itunes.apple.com/kr/app/ssadagu-imateu-hompeulleoseu/id903061010?mt=8 안드로이드버전과 다르게 1단구성으로 되어있습니다.2차 개선할때는 ios와 안드로이드의 다른 UI를 편의성을 비교해서 통일할 예정이랍니다. 참고로 안드로이드를 쓰시는분은 [여기]
내가 담당했던 업무는 데이터 수집과 클라이언트에 데이터를 전달하는 RESTful 형태의 API개발이다.데이터를 공급해주는 공급책(?) 역할이라고 생각하면 쉽다. 이제부터 다룰내용은 개발에 관심있는 사람이 아니라면 외계어로 들릴수 있을테니 관심있는분만 읽어주면 된다. 내가 사용한 언어, 주요 라이브러리는 아래와 같다. python 2.7.x flask (마이크로 웹프레임워크)flask-cache (flask에 캐쉬붙이는용도)Beautifulsoup4 (html파서)pymongo (mongodb 컨넥터) mongodb 1. Python을 개발언어로 선택한 이유 ? 내가 주로쓰는 언어는 사실 java이다. jsp를 안썼던 이유는 배포를 할때 빌드와 패키징하는게 상당히 귀찮았기 때문이다. 하지만 그것보다 더 큰..
근 1년만에 다시 약속했던(?) 글을 이어가려고 한다.원래는 싸다구 서버쪽 개발스택에 대한 이야기를 쓰려고 접속한건데... 왜 이걸 쓰고 있는지는 잘 모르겠다. ㄱ-) 1. 들어가기전 잡담 재현률과 정확도를 간단히 설명하자면 재현률은 얼마나 검색결과가 많이 나오게 하느냐이고, 정확도는 얼마나 정확하게 나오느냐고 할수 있다. 정확하다는건 다르게 말해 검색결과가 적게 나오므로 재현률은 떨어진다고 말할수 있다.복잡하게 생각하지말고 검색결과에 영향을 주는 개념이라고 생각하고 일단 넘어가자. 재현률과 정확도는 상반되는 개념이지만, 또 전혀 상관없다고 보기도 뭐한 모호한 개념이다. 뭔 알수없는 소리냐고 할텐데, 이해를 돕고자 비유하자면 "섹시하면서 귀여운여자"와 같은 느낌이다. (??!!) 사족으로 '귀여우면서도 ..
짜잔 !!!어제 '싸다구' 개발맨들이모여서 최종 릴리즈를 했습니다. !!!현재 아이폰은 아직 심사중인데요. 반가운 소식은 현재 안드로이드play스토어에서는 찾아볼수 있습니다. 아직 기능적으로 아쉬운 부분도많이 보일텐데요.기능 추가요청은 리뷰글에 남겨주시거나, 블로그에 직접 댓글로 남겨주시면 저희 개발진들이 적극적으로 반영하도록 하겠습니다. 이제 특가를 놓치지 말고 모아서 보세요. * 설치하기:https://play.google.com/store/apps/details?id=com.indf.sadagu 저희 싸다구는 특가정보만 모아보여주다보니 (각 쇼핑몰에 있는 특가메뉴)모든 상품이 있는게 아니라 필요한게 보이지 않을수 있어요. 지금 저희 indf개발연구소에서는 모든 사람이 싸게 사는걸 목표로 하고 있기 ..
2014년 7월 25일 사용법도 쉽고 특가상품만 모아볼 수 있는 '싸다9' 가 출시됩니다. 싸다9는 저렴하게 사기위해 흩어진 특가정보를 모아서 편하게 볼수 있는 컨셉의 앱입니다. 지식쇼핑같은 최저가를 찾아주는것이 아니라 특가정보를 모아주는것이 특징입니다. 저희서비스의 목표는 다음과 같습니다. 쉽고, 편하게, 싸게 1. 소개 화면구성을 잠깐 보여드리면 아래와 같습니다 현재 시간에는 아직 앱스토어에 올라가지 않았기 때문에 다운을 받지는 못하겠네요. 이번주 금요일 1차버전을 공개할 예정입니다 ^O^ 왼쪽이 아이폰, 오른쪽이 안드로이드 버전인데요 UI가 다르죠? 화면이 작은 아이폰은 1단구성, 화면이 큰편인 안드로이드는 2단구성으로 되어있습니다. 2. 이름 스토리 '싸다구 프로젝트'는 4월쯤 특가만 모아서 보여..
1. 형태소 분석이 왜 필요한데? 지금까지 우리가 아는 기법인 like 검색이나 N-gram을 사용한다고 가정하자. 지금 안군은 배가 너무 고프기도 하고, 오랫만에 친구들을 만나는것에 너무 들떠있다.역시 남자라면 "고기" 아니겠어? 하고 검색을 했다.그런데 검색 결과는 아래와 같았다. (연두색 칠한 단어 참고) "..." "참외를 먹으면 참 외롭고, 태연은 벌에 쏘여도 태연함" 이런 말장난 같은 검색결과가 실제라면 문제가 있다.하지만, 우리가 알고있는 색인기법에는 실제로 저런 결과가 나올수 있는 한계점을 가졌다. 그럼 어떻하지?? 2. 형태소 분석 2.1 형태소분석은 뭐임? 형태소란? "뜻은 가진 가장 작은 말의 단위" 말한다. 이제 약간의 국문학 지식이 필요한 시점이다 ㅠ형태소라고 하는것도 사실 여러가..
TistoryTalk 개발에 대한 이야기를 해보도록 하겠다. v0.3 Plain버전을 개발해왔는데 어느정도 마무리가 되었다. Plain 버전이라고 이름을 붙인 이유는 DaumDevDay 2013 에서의 TistoryTalk 에서 정말 필요한 기능만을 빼고 순수하게 글쓰기에 필요한 기능들만 다시 만들자는 목적에서 시작하였다. v0.3 Plain - 무엇보다고 가장 달라진 점은 글쓰기 부분이 강화되었다는 점인데, 크게 3가지가 추가되었다. 하나는 태그입력, 다른 하나는 카테고리 선택 그리고 마지막으로 멀티 포스팅의 저장이다. 태그입력 부분은 말 그대로 포스팅 하기 직전에 사용자가 원하는 태그를 입력하면 되는 것이고 카테고리는 이전에는 카테고리 없음으로 저장을 했다면 이제는 사용자가 직접 본인 블로그의 카테고..
1. 시작하며 용어의 혼란을 줄이기 위해서 먼저 정리하겠다.단어로 구성된 짧은 문자열을 "단문" 혹은 "문자열"이라고 할 것이고, 여러단어로 구성된 긴문자열은 "텍스트"라고 하겠다. 텍스트를 색인하는 기술은 더 더양한 기술이 필요하다.사실 단문 검색을 위한 색인은 정규화와 인덱스를 통해 DB로도 처리가능한 수준이다.하지만, 텍스트의 경우는 검색엔진이 아니면 처리할 수 없는 속도와 품질의 격차가 생긴다. 그 이유는 쿼리로 만든다면 아래와 같은데, 좌절단 검색이기 때문에 인덱스를 쓸수가 없다. *2부 1편 3. 인덱스를 사용하지 못하는 문제(full scan)에서 이미 언급한 이야기* select * from 테이블 where body like '%맛집%' and body like '%종로%'; 2. 문장을..
제 13회 Daum DevDay 글을 통해서 밝힌적이 있지만 생각보다 티스토리 Open API는 잘 구성되어 있는 편이 아니며 스펙대로 동작 하지 않는 경우도 있었다. (그럼에도 티스토리를 사용한 이유는 국내 블로그중 유일한 글 올리기 API가 있기 때문이다.) 티 스토리 API의 대부분은 oAuth 인증을 받은 상태에서 진행 되도록 되어 있다. 때문에 티스토리를 이용한 무엇인가를 만든다면, 혹은 API를 사용한다면 OAuth는 반드시 지나가야 하는 관문이다. 특히 이 글에서는 TistoryTalk 앱에서 어떻게 OAuth 인증을 하였는가에 대해서 잘 설명해 보도록 하겠다. 1. 티스토리 앱 등록하기 - OAuth 인증을 위해서는 일단 티스토리에 가입이 되어 있어야 한다. 그리고 나서 티스토리 오픈 AP..
1. 서론 색인의 효과와 원리에 대해서는 이제 말했고 본격적인 검색엔진의 차이점을 이야기 하고자 한다. 참고로 오픈소스 검색엔진 (예: solr, 엘라스틱서치)의 경험은 미비하고, 이전 회사에서 사용하던 독크루저라는 상용검색엔진을 토대로 이야기 할것이다. 글을 들어가기에 앞서서 숫자(날짜)의 검색, full scan의 검색에 대해서는 다루지 않음을 밝혀둔다. 그 이유는 너무 일반적이고 이미 알고 있는 내용이기 때문이다. 그래서 DB와 검색엔진에서 큰 차이를 보이는 문자열(텍스트)의 검색과 색인에 대한 이야기를 다루고자 한다. 2. 인덱스 다시한번 기억하기 기억력이 가물가물거리는 독자를 위해 한번 간단히 정리해보겠다. 색인을 한다는건... 색인어와 페이지번호를 추출해서 빠르게 찾게 하는작업이라고 할 수 있..
1. 들어가기전... 들어가기에 일단 사용하는 용어부터 혼동을 위해 미리 말해둘것이 있다. 참고로 네이버 사전을 이용해 index를 검색해 보면 아래와 같이 번역되어 있는데 "인덱스"를 번역한게 "색인"이다 그런데, "인덱스"와 "색인"을 둘 다 섞어서 사용한다. 앙드레김 선생님도 아닌데 왜 영어랑 해석된 단어랑 섞어쓰는거지? 라고 할지 모르겠는데 편의상 아래와 같이 구분해서 쓰도록 하겠다. "색인" (=indexing) 1. 인덱스를 만드는 과정이나 행위를 의미함. "인덱스" (=index) 1. 색인하여 만들어진 결과물. 2. 색인과 인덱스 "오늘은 5월 20 이죠? 바로 '세계인의 날' 입니다" 주말근무를 하던 선배는 라디오를 듣다가 깜짝놀라며 말했다. "뭐 오늘이 색인이 날이라고?" 색인이 뭔데 ..
Daum DevDay에서 개발했던 티스토리 톡(TistoryTalk)를 살려내려고 마음을 먹었다. 약간 늦은 감도 있긴 하지만 그래도 버리기 아깝다는 생각도 들었고, 여전히 티스토리는 모바일에서 블로깅을 하기가 어렵기 때문에 목표 자체를 아래와 같이 모바일 기기에서 티스토리 블로깅을 쉽게 할수 있도록 한다. 로 설정하였다. 깃허브(https://github.com/AhnSeongHyun/TistoryTalk) 에 저장소를 마련하였고 일주일에 조금씩이라고 업데이트를 할 예정이다. 여러가지 가야할 길이 멀고 다양한 기능이 많겠지만 우선적으로는 Daum DevDay2013 에 국한되어 있었던 기능을 지우고, 플레인(Plain) 티스토리 톡으로 만드는 것을 우선적으로 할 예정이다. 해당 작업들을 위해서 마일스톤..