TigerCow.Door

안녕하세요. 문범우입니다.


최근 장고를 활용하면서 재밌는 아이디어 없을까 하다가..

졸업과 취업을 앞두고 있는 제가 생각나면서

학교 졸업 가능 여부를 일일이 확인하던 모습이 보였습니다.


이에 따라서 교내 행정정보시스템에서 성적표를 .xls파일로 다운 받고, 단순히 그 파일과 영어성적 입력으로 졸업가능 여부를 확인해주는 사이트를 개발하였습니다.


먼저 사이트 주소는 아래와 같습니다.


www.uos-info.com


해당 사이트는 django(2.0 version)를 이용하여 개발되었습니다.


aws ec2와, 도메인 설정을 위해 aws route53을 이용하였습니다.



일단은 제가 속해있는 전자전기컴퓨터공학부에 한해서 서비스가 제공되고 있지만

혹여나 다른 과나 학부에 의한 요청도 들어오면 추가해보도록 하겠습니다.


학교에서 필요로하는 졸업요건은 쉽게 확인이 가능하지만, 각 학과나 학부별로 다른 졸업요건을 제가 일일이 확인할 수가 없어서 서비스에 대한 필요를 말씀해주시는 학과 및 학부에 대해 서비스를 추가할 예정입니다.


해당 서비스에서는 단순하게 여러개의 rule-based를 기반으로 졸업 여부를 확인해줍니다.

시립대 전자전기컴퓨터학부의 경우에는 특정 세부 분야로 지정된 교양을 듣거나, 전공과목을 들어야 하는 조건이 있는데 이에 대해서는 서울시립대학교에서 open API로 제공하는 서비스로 요청을 보내서, 성적표에 있는 수업의 세부분야를 확인하거나 몇학년 몇학기 수업인지 확인하여 졸업요건에 해당하는지를 체크하는 식으로 구성되어 있습니다.


해당 사이트에 대해 추가적인 문의사항이나 건의사항이 있으신 분들은 언제든지 자유롭게 댓글 및 이메일을 통해서 연락주시면 감사하겠습니다.


블로그 이미지

Tigercow.Door

Data-Analysis / AI / back-end / Algorithm / DeepLearning / etc


안녕하세요. 문범우입니다.


최근 멋쟁이 사자처럼 6기 운영진으로 활동하며, 지난 8월말에 해커톤을 진행하였습니다.

저는 방학간 파이썬, 장고 스터디를 진행하며 함께 공부한 친구들과 장고를 활용한 공유일기장 플랫폼 웹사이트를 개발하였습니다.


aws ec2 프리티어을 이용하여 배포까지 완료하였으나, 실제로 서비스 론칭등의 계획은 없습니다.

장고를 직접 활용해보고 6기 인원들에게는 배포까지 해보는 경험으로써의 토이 프로젝트였습니다.


활용된 스택은 다음과 같습니다.


python: 3.6.5


django: 2.0


postgresql: 10.4



해당 프로젝트에서 저는, 프로젝트 전체 기획 및 진행을 담당하며 세부적으로는 데이터베이스 설계 및 구축, 교환일기장 기능 개발을 담당하였습니다.



- 서비스 소개


카카오톡 소셜 로그인



장고를 활용한 공유일기장 플랫폼에서는 카카오톡 소셜로그인을 통해 누구나 쉽게 서비스를 이용할 수 있도록 개발하였습니다.



메인화면 달력 및 작성한 일기 확인하기


사용자는 메인화면에서 달력을 확인할 수 있고, 그 전에 작성한 일기들은 해당 요일에 제목이 표시됩니다. 제목을 누르면 해당 일기로 이동할 수 있습니다.



일기 작성하기


사용자는 일기 쓰기 탭을 눌러서 일기를 작성할 수 있습니다.

제목, 작성할 교환일기장, 감정, 날씨, 사진, 내용을 입력합니다.

하나라도 작성되지 않을시에는 저장되지 않고 빈칸을 알려줍니다.



교환일기장


교환일기장에서는 개인이 작성한 일기 뿐아니라 다른 사람의 일기를 확인할 수 있습니다. 관심사가 같거나, 친구들끼리 함께 일기를 작성하고 싶을때는 교환일기장을 만들거나, 참여하여 함께 일기를 작성할 수 있습니다.



이 외에도 일기를 보관할 수 있는 '뜯어가기' 기능과 댓글기능 등을 구현하였습니다.



배포된 프로젝트의 모든 코드는 아래 깃헙에서 확인하실 수 있습니다.

https://github.com/doorBW/LAN-Diary


이 외에도 추가적인 질문등은 언제든지 댓글 및 이메일, 카카오톡을 이용해주세요 :)

블로그 이미지

Tigercow.Door

Data-Analysis / AI / back-end / Algorithm / DeepLearning / etc

안녕하세요. 문범우입니다.

최근에 방학을 맞이하면서 블로그에 글을 올리는 일이 줄어들었습니다.

방학동안 어떤 공부를 할지 계획도 세우고, 오늘 설명드릴 구글 어시스턴트 어플리케이션 개발을 마무리하느라 블로그 신경을 많이 못썼습니다.



1. 개발 동기


오늘 설명드릴 것은 말 그대로 구글 어시스턴트 어플리케이션 개발에 대한 후기입니다.


아직 구글 어시스턴트에 대해서 많은 분들이 잘 모르고 계시는데, 구글 어시스턴트는 17년 하반기에 한국어 버전이 오픈되었고 아마 안드로이드 버전 6.0이상에서는 따로 설치없이 기본적으로 제공되는 것으로 알고 있습니다.


아직 iOS에서는 한국어 버전이 따로 지원되지 않으나 해외에서는 지원되는 상태고 구글에서도 올해 안에 iOS 한국어 버전 구글 어시스턴트 어플을 출시할 계획이라고 하니 조금만 기다려보면 좋은 소식이 있을 듯 합니다.


최근 많은이들이 챗봇등에 관심을 갖게되면서 사실상 한국인이 제일 많이 사용하는 카카오톡 서비스를 이용하여 많은 챗봇을 개발하고 있습니다.

그리고 많은 중고등학생, 대학생 개발자들이 공부를 하면서 학교 식당 메뉴를 알려주는 챗봇도 함께 개발되고 있습니다.


저 또한 서울시립대학교에 재학중이면서 작년 겨울에 비슷한 아이디어를 가지고 인공지능 챗봇을 개발하였지만 기타 다른 상황의 문제로 인해 실제 서비스를 배포하지는 못했지만, 현재 서울시립대학교 식당 메뉴를 알려주는 기능을 가진 챗봇이 약 2개이상 있는 것으로 알고 있습니다.


저 또한 해당 서비스들을 학기중에 편하게 이용하였습니다.

그러던 와중 제가 아침마다 날씨등을 알기 위해 간편하게 음성인식을 통해 구글 어시스턴트 어플리케이션이라는 이용하면서, 이를 통해 그날의 메뉴를 알 수 있으면 조금 더 편리하지 않을까라는 생각을 하게 되었고, 바로 아는 후배와 함께 개발을 하게 되었습니다.

+ 구글 어시스턴트를 매우 많이 사용하는 동기놈의 압박도 있었습니다..:'( 



2-1. 구글 어시스턴트 사용 방법


아직 구글 어시스턴트에 대해서 잘 모르시는 분들께서는 그 편리함에 대해서 의문을 가질 수 있습니다. (아시는 분께서도 가지실 수 있으나.. 저와 친구는 특정 메신저에 접속하여 손으로 타이핑하는 것보다는 편하다고 생각하였습니다ㅎ..)


위에서 말씀드린대로 안드로이드 버전 6.0 이상에서는 구글 어시스턴트가 기본적으로 제공이 됩니다. 이를 이용하는 방법은 너무나 간단합니다.


초기 설정만 해두면 'Ok Google' 등의 음성으로 간편하게 호출할 수 있고 또는 홈버튼을 길게 눌러줌으로써 호출할 수 있습니다.

초기 설정이 필요하신 분들께서는 음성 호출은 불가하지만, 홈 버튼을 꾹 눌러주시면 구글 어시스턴트를 호출할 수 있습니다.


구글 어시스턴트에서 할 수 있는 다양한 기능은 작년 하반기에 한국어 버전이 출시되며 작성된 아래 글을 참고하셔도 좋습니다.


https://www.bloter.net/archives/290622


또한 최근에는 더 많은 기능들이 지속적으로 업데이트 중인 것으로 알고 있으니 사용해보시면서 구글 어시스턴트의 매력을 느껴보시면 좋을 것 같습니다.



2-2. 오늘학식 사용 방법


먼저 2-1 에서 설명드렸던, 구글 어시스턴트를 2가지 방법 중 아무것으로나 호출하면 다음과 같은 화면이 나오게 됩니다.

(초기 설정을 끝낸 상태입니다.)



모바일에서 위와 같은 화면이 뜨면 기본적으로 구글 어시스턴트의 기능을 사용할 수 있으며, 추가적인 구글 어시스턴트 어플을 사용할 수 있는 상태입니다.


이제 해당 화면에서 '오늘 학식'을 사용하기 위해서는 


오늘학식한테 말하기

오늘학식 불러줘

오늘학식에게 말하기


세가지 호출문을 사용하면 됩니다.


위의 호출문을 음성으로 말해도 되고, 좌측에 있는 키보드를 눌러 타이핑 하셔도 됩니다.


그리고 호출문이 입력되면 아래와 같이 '오늘 학식' 어플리케이션이 실행되는 것을 확인할 수 있습니다.



이제 여기서부터는 '오늘 학식' 어플리케이션에서 개발된 로직으로 사용자와 구글 어시스턴트가 대화하게 되는 과정입니다.


현재 '오늘 학식' 어플리케이션에서는 서울시립대학교의 건물별 식당 메뉴를 반환해주는 기능을 하고 있습니다.

보다 구체적으로는, 아래와 같이 식당이 있는 학생회관, 양식당, 대학본부, 생활관, 자연과학관의 엊그제, 어제, 오늘, 내일, 내일모레의 메뉴를 알 수 있습니다.


아직 개발 초기이기 때문에 부족한 점도 많을 수 있지만 지속적으로 개발을 이어나갈 예정이며 먼저 메뉴 반환에 대해 시간별로 나누거나, 메뉴 반환 이외의 다양한, 학생들의 편의를 위한 기능도 업데이트 예정 중에 있습니다.



3. 개발 후기


요새 많은 챗봇들에 대해 관심이 많아지면서 저 또한 작년 부터 관심을 많이 가졌습니다. 작년에 처음 인공지능 챗봇을 개발하면서 자연어 처리등에 대해 많은 어려움을 느꼈고, 아직은 어느정도의 규칙기반 틀에서 벗어날 수 없을 것이라고 생각했지만, 정말 짧은 시간안에 많은 부분들이 극복되며 매우 놀라운 챗봇들이 개발되고 있습니다.


그리고 그 가운데 구글 어시스턴트는 기본적으로 개발자에게 자연어 처리나 음성인식등의 기능을 제공해주고, 개발자는 아이디어를 생각하고 이를 구현하기만 하면 되었기에 생각보다 매우 수월하고 재미있는 경험이 되었습니다.


아직 익숙치 않은 자바스크립트로 개발을 진행해보았는데, 새로운 언어를 접해볼 겸 개발했던 것이 너무나 즐거운 경험이 된 것 같습니다.


현실상 해당 구글 어시스턴트 어플리케이션, 오늘학식을 매일매일 붙잡고 버그를 잡아내고, 업데이트를 할 수는 없겠지만 공부도 할겸, 조금이나마 학생들에게 편리한 서비스를 제공할겸 틈틈이 오류를 잡아내고 새로운 기능들을 업데이트 하려고 합니다.


발견되는 오류가 있거나 업데이트가 되었으면 하는 기능이 있다면 해당 어플 리뷰나 이메일로 의견 보내주시면 최대한 반영하여 빠른 시일내에 좋은 서비스를 제공해드리도록 하겠습니다.


또한 깊게 공부하며 엄청나게 어려운 것을 개발한 것은 아니지만 구글 어시스턴트 어플을 처음 개발하시는 분들께서 궁금하신점이나 잘 해결되지 않는 점이 있다면 언제든지 함께 고민해보도록 하겠습니다. 이메일이나 댓글로 남겨주시면 감사하겠습니다 :)



블로그 이미지

Tigercow.Door

Data-Analysis / AI / back-end / Algorithm / DeepLearning / etc

카카오톡 플러스친구 로고



안녕하세요. 문범우입니다.

최근 지인분을 통해 사례금을 받고 카카오톡 플러스친구 챗봇 개발을 진행하였습니다.



개발 내용은 다음과 같습니다.


- 사용자가 플러스친구를 등록하고 특정 키워드를 '#키워드'와 같이 메세지를 전송하면 그에 대응되는 텍스트 및 이미지를 전송한다.



해당 개발 내용은 자연어 처리나 기타 복잡한 로직없이, 단순하게 A키워드에 대한 요청이 들어오면 그에 대응되는 응답을 반환하면 되기 때문에 크게 어려움이 없습니다.


이를 통해 개발이 완료된 결과는 다음과 같습니다.



해당 플러스친구의 이름은 혹시나 하여 모자이크 처리하였습니다.

어떤 식으로 작동되는지 보다 궁금하신 분들은 연락주시면, 개인적으로 개설한 테스트 서버를 통해 확인할 수 있도록 알려드리겠습니다.


서버는 aws의 EC2를 프리티어로 하여 구성하였습니다.

해당 서버 내부에 ruby on rails 를 설치하여, 따로 view구성은 하지 않고 단순히 controller를 통해서 request가 왔을때 지정된 response를 반환하도록 하였습니다.


request 및 response에 대한 전체적인 내용은 다음 주소의 카카오톡 플러스친구 api를 참고하시면 좋을 것 같습니다.

https://github.com/plusfriend/auto_reply


추가적으로 카카오톡 플러스친구 챗봇개발에 관해 궁금하거나 잘 해결되지 않는 부분에 대해서는 언제든지 연락주시길 바랍니다.


블로그 이미지

Tigercow.Door

Data-Analysis / AI / back-end / Algorithm / DeepLearning / etc


안녕하세요. 문범우입니다!


어느덧 날씨가 더워지는 5월!

대학생들에게 5월에 빼놓을 수 없는 행사 중 하나는 대학 축제죠?

그래서 우리 서울시립대학교 멋쟁이사자처럼에서는 축제 안내사이트를 제작해보았습니다.


먼저, 완성된 사이트는 아래 주소를 클릭하시면 됩니다.!


http://uos.likelion.org


웹으로 보시는 분들은 이게뭐지..? 할 수도 있어요 :'(

간단하게 정보를 제공받고, 확인하기 위해 모바일에서 보았을 때 이쁘도록 제작되었기 때문에 모바일로 확인하시는 것을 추천드립니다!






해당 사이트를 개발하면서, 저는 전체적인 기획 및 총괄, 백엔드 구성, 행사화면 제작을 담당하였습니다.

초기에 개발에 참여하고자 인원들을 신청받고, 개발 목표와 의도, 범위 등을 설정하였습니다.

이에 대한 전체적인 내용은 아래, 축제 사이트 개발 github 을 통해 확인하실 수 있습니다 :)


https://github.com/doorBW/UOS_festival


처음에는 어떤 구조로, 어떤 디자인으로 할지 너무나 막막했으나, 우리 멋쟁이 사자처럼 6기들과 함께 이야기하고, 아이디어를 주고 받으며 기초적인 구조를 잡았습니다.

이후 초기 프론트 담당인원들이 세부적인 디자인을 기획하고, 백엔드 담당인원들은 각 페이지 구성을 진행하였습니다.

시간이 지나고 보니 백엔드 분야로 처리할 것이 거의 없어서, 백엔드 인원을 모두 프론트로 참여시켜서 개발을 진행하였습니다.

인원당 하나의 페이지를 만들고, 만들어진 페이지를 백엔드 담당인원이 받아서 전체적으로 연결시키는 등의 방식으로 개발이 진행되었습니다.


사이트 내에서 엄청나게 대단한 기술이나, 효과는 없지만 처음으로 실질적으로 배포되는 서비스 페이지를 개발하는 멋쟁이 사자처럼 6기 인원들에게는 매우 큰 도움이 되었을 것이라고 생각합니다. :)


물론 저도 오랜만에 오랜시간동안 함께 협업함으로써 서로 이야기하고, 아이디어를 나누며 개발하는 일을 하게 되어서 너무나 신나게 작업하였습니다.


개발에 참여한 멋쟁이 사자처럼 6기 모두 수고하셨습니다 :)


- 추가적으로 사이트 자체 또는 사이트 개발에 대한 모든 문의는 댓글을 달아주시거나 공지사항을 통해 저의 개인 이메일 또는 카카오톡을 통해서 연락주세요!


블로그 이미지

Tigercow.Door

Data-Analysis / AI / back-end / Algorithm / DeepLearning / etc



안녕하세요. 문범우입니다.

지난 2017년 8월에 개발을 시작한

서울시립대학교 인공지능 챗봇, 우울한 코끼리가 곧 Beta service를 시작합니다.


저희 우울한 코끼리는 서울시립대학교 교수학습개발센터에서 진행되는 '2017 UOS 학습공동체' 라는 프로그램의 지원을 받으며 진행되었습니다.


위의 사진은 2017년 UOS 학습공동체의 공고문입니다.


우울한 코끼리팀은 서울시립대학교 컴퓨터과학부 2명, 수학과 1명, 그리고 전자전기컴퓨터공학부인 저를 포함하여 총 4명의 개발자로 이루어져 있습니다.


저희는 서울시립대학교의 학생들이 학생 식당의 메뉴를 알고싶거나 학교 근처 맛집 또는 학교 중앙 동아리 정보등을 보다 쉽게 얻을 수 있도록 인공지능 챗봇 개발을 기획하였습니다.

이에 따라 사람들이 많이 이용하는 카카오톡 플러스친구라는 채팅 앱을 기반으로 Django라는 프레임워크를 이용하였습니다.



여기서 인공지능 챗봇이라 함은, 그 동안의 '심심이'와 같은 일반 챗봇과는 답변 처리 방식에 있어서 다른점을 나타냅니다.

단순히, 'A'라는 텍스트를 받았을 때 'B'를 답변해! 라고 설정되는 것이 아니라, 'A'라는 텍스트의 의도를 분석하여 그에 맞는 답변을 해! 라고 설정되는 것입니다.

이러한 인공지능을 이용하면 다음과 같은 것이 가능합니다.

'오늘 학식 메뉴가 뭐야?', '오늘 학식은?', '오늘 메뉴 알려줘', '오늘 학식 메뉴 알려줘' 와 같은 다양한 말들에 대해서 우울한 코끼리는 동일하게 오늘 학생식당에 대한 메뉴를 답변합니다.

서로 다른 말들이지만 질문의 의도는 오늘의 학생식당의 메뉴를 묻는 것이기에, 인공지능을 이용하면 하나의 질문에 하나의 답변을 처리하는 것이 아니라 질문에 대한 의도를 분석하여 해당 의도에 대한 답변을 처리할 수 있습니다.



(출처: SKTechx 토크ON세미나)


인공지능 챗봇을 개발하는데는 위의 사진과 같이, 생각보다 많은 것들을 공부해야 했습니다.

우울한 코끼리 또한 아직 부족한 점이 많지만 하나씩 해결해 가면서 서비스를 보완하고 있습니다.

현재 가능한 기능 중 하나인 학식 메뉴에 대한 답변은, 먼저 사용자가 질문을 하면 사용자의 질문을 형태소 단위로 분석하여 각각의 의미를 캐치합니다. 그리고 각각의 의미를 통해 사용자의 질문 의도를 분석하고 그것이 학식 메뉴를 궁금해 하는 의도라면 실시간으로 서울시립대학교 홈페이지(uos.ac.kr) 에서 그날의 식당 메뉴를 크롤링하여 응답하도록 설정되었습니다.


추가적으로 저희는 학교 주변의 맛집을 추천할 수 있는 기능을 생각하고 있습니다.

학식 메뉴를 물어볼때 답변의 하단에 학교 주변 맛집 하나를 랜덤하게 선정하여 추천해주고, 사용자가 학교 주변 맛집에 대해 궁금해하는 질문을 추가적으로 한다면 정문이 편한지, 후문이 편한지 또는 어떤 음식종류를 선호하는지 등에 대한 질문을 통해 학교 주변 식당을 추천합니다. 해당 기능은 학교 주변 식당을 우울한 코끼리의 데이터베이스에 저장하며 다양한 해시태그(#)를 함께 저장하고, 사용자가 선호하는 것에 대해 많은 해시태그가 포함되는 식당을 랜덤하게 추천하도록 구현될 예정입니다.


또한 학교 중앙동아리에 대한 소개 서비스를 구현할 예정입니다.

사용자가 취미를 추천받고 싶어하거나 직접적으로 학교의 동아리에 대한 궁금증을 가진 질문을 하였을때 우울한 코끼리의 데이터 베이스에 입력된 동아리들을 바탕으로 학교 주변 맛집 추천과 비슷한 과정을 통해 동아리를 소개할 예정입니다.


그리고 사진인식을 통한 추가적인 서비스도 고려하고 있습니다.

예를 들어 특정 건물의 사진을 찍어서 우울한 코끼리에게 전송하였을 때, 이미지 인식 기능을 통해 어떤 건물인지 인식하고 해당 건물에 대한 정보를 응답하는 기능입니다. 현재 우울한 코끼리에게 사진을 전송하였을 때, 아직 사진을 인식하는 기능이 없다고 답변이 되고 있습니다. 카카오톡 플러스친구 API를 통해 사용자가 보낸 메세지가 사진인지, 텍스트인지는 쉽게 구별할 수 있었습니다. 추가적으로 현재 학습중인 딥러닝 기반 이미지 인식에 대한 구현이 성공되면 위에서 말씀드린 건물에 대한 인식등을 비롯하여 이미지 인식 기능을 통해 더 많은 서비스가 제공될 예정입니다.


마지막으로, 현재 우울한 코끼리에서 진행되는 대화는 자체 데이터베이스상에 모두 기록됩니다.

즉, 누가 어떤말을 언제 하였는지 데이터베이스에 기록됩니다. 이렇게 설정한 이유는 차후에 이러한 데이터들을 통해서 더 많은 서비스를 제공할 수 있을 것이기 때문입니다. 예를 들어, 기록된 시간들을 바탕으로 현재 사용자가 연속된 대화를 진행중인 건지, 아니면 어느정도 시간이 지난 뒤에 대화를 새롭게 시작하는 건지 등의 판별이 가능해집니다.



우리 우울한 코끼리는 위와 같은 내용을 바탕으로, 현재 카카오톡 플러스친구에 검색하여 친구를 등록하면 서울시립대 학식 질문에 대한 답변이 가능합니다.

하지만 초기 개발시에 테스트를 위해 Cloud9 서비스를 이용하여 평상시에는 서버가 off 되어있고 수동적으로 서버를 켜줘야지 정상적인 답변이 가능해집니다.

24시간 동안 사용자들이 이용할 수 있도록 현재 네이버 클라우드 플랫폼을 이용한 서버이전을 진행중에 있습니다.


이러한 내용을 통해 우울한 코끼리는 2017 UOS 학습공동체팀 중에서 최우수팀에 선정되었고 1월 24일 총장님에게 상장을 수여받게 되었습니다.


마지막으로 우울한 코끼리 시연영상을 보여드리고 마치겠습니다.



- 우울한 코끼리 시연영상(1)




- 우울한 코끼리 시연영상(1)




이상 모든 사항에 대해 추가적으로 궁금한 점은 언제든지 댓글 및 개인 이메일(doorbw@outlook.com)을 이용해주시면 빠른 답변 드릴 수 있도록 하겠습니다.

블로그 이미지

Tigercow.Door

Data-Analysis / AI / back-end / Algorithm / DeepLearning / etc