기본 콘텐츠로 건너뛰기

2017의 게시물 표시

챗봇 시작하기 (Azure bot-service , qna maker)

챗봇은 크게 두가지가 있다. 인공지능을 쓰느냐 인공지능을 안 쓰느냐 인공지능을 쓰면 당연히 좋을텐데, 머신런닝도 할 줄모르는 상황에서는 그림의 떡이다. 그럼 포기해야되나 싶지만, 굳이 그러지 않아도 된다. 사용성 과연 챗봇을 가지고 무얼할지를 조금 더 고민해보자. faq정도 읊어주고, 간단하게 몇가지 동작만 해주는걸로 충분하다면 굳이 인공지능이 필요할까? 비용적인 부분에서도 별로 효율적이지 못하다. 그럼 어떻게? 어떻게 구현을 해야되나 머릿속으로 그려보면, if문 몇개 추가하면 되지 싶다. '이런질문이 들어오게 유도하고' '이런대답을 해주면 된다' 쉽게생각하면 한없이 쉽다. 그런데 구현 마저도 쉽게 할수 있는 서비스들이 너무 많다. QnAMaker, Botservice 연동 여기서는 이 MicroSoft에서 제공하는 두가지 서비스를 활용하는 방법이다. 너무 쉬워서 어의가 없을 수도 있다. 0. 마이크로소프트 계정생성  ms계정이 있어야한다. 뒤늦게 말에서 좀 그렇긴한데, 무료가 아니다. 그렇다고 엄청 비싸지도 않다. 1. 계정을 만들고 portal.azure.com  에 접속 2. BotService 생성  - 새로 만들기 -> Bot Service 선택 -> 만들기  - 대충 봇이름 정도만 입력하면 된다. 3. BotService설정  - 2번에서 만들고 나면 포탈홈에 서비스명이 노출된다. 클릭해서 들어오자  - 봇서비스도 나름 소스코드다 c#, node.js 중에 편한걸로 선택하고, Question and Answer 템플릿을 선택한다. (어기서는  c#선택, 본인은 c#을 한번도 해본적이 없다) 4.  id , password 생성  - next버튼을 클릭하면 요런 화면이 나오는데, 파란색 버튼을 클릭하면 아이디와 암호를 발급받을 수 있다. 암호는 한번밖에 노출안되니 따로 저장해놓도록 한다.  - id와

pwa (Progressive Web App) 기초

작년에 w3c 세미나에 운좋게 참여해다가 세상에 웹이 이렇게나 바뀌고 있었나 싶었던 내용을 이제서야 조금 정리해봤다. PWA(Progressive Web App) Progressive Web App 은 웹의 장점과 앱의 장점을 결합한 환경입니다. 이것은 사용자가브라우저 탭을 맨 처음 방문할 때부터 유용하며, 설치가 필요 없습니다. 시간의 흐름에 따라 사용자가 앱과의 관계를 점진적으로 쌓아갈수록 성능이 더욱 강력해질 것입니다. 이 웹 앱은 느린 네트워크에서도 빠르게 로드되고, 관련된 푸시 알림을 전송하며, 홈 화면에 아이콘이 있고, 최상위의 전체 화면 환경으로 로드됩니다. 모바일웹과 네이티브앱을 비교해보자 웹이 나은점  - ios, android 두벌로 개발할 필요가 없다.  - 앱스토어가 필요 없으며 항상 최신버전을 유지할 수 있다. 앱이 나은점  - 디바이스의 자원을 활용할 수 있다. (카메라, gps 등)  - push  - 인터넷이 끊긴 환경에서도 사용이 가능하다. 웹과 앱의 장단점은 명확하지만, 지금의 단말환경에서는 디바이스 자원을 활용할 수 있는 앱이 유리하다. 단, pwa에서는 지금의 웹이 못하는 앱의 장점을 2가지정도는 해결해줄수 있다. - push, offline 서비스워커(Service-Worker) pwa에서 가장 핵심요소이다. 현재 크롬,파이어폭스에서는 지원이 가능하며, 사파리와 IE는 개발중이다. 즉, 곧 머지않아 모든 브라우저에서 사용이 가능하다는 뜻이다. 왜? 좋으니까. 구글 개발자사이트에 나온 서비스 워커의 정의는 이렇다 서비스 워커는 브라우저가 백그라운드에서 실행하는 스크립트로, 웹페이지와는 별개로 작동하며, 웹페이지 또는 사용자 상호작용이 필요하지 않은 기능에 대해 문호를 개방합니다. 현재  푸시 알림  및  백그라운드 동기화 와 같은 기능은 이미 제공되고 있습니다. 향후 서비스 워커는 주기적 동기화 또는 지오펜싱과 같은 다른 기능을 지원할 것입니다. 하나더 들어

default method 자바8

default method java8부터 인터페이스에서 함수 구현이 가능해졌다. 기존의 인터페이스는 이렇게 생겼다.  public interface Predator { boolean chasePrey ( Prey p ); void eatPrey ( Prey p ); }  - 추상메소드와 상수만 가질수 있다.      (메소드 : public abstract / 변수 : public static final 이 생략)  - 함수 내용은 implements 를 해주는 구현부에서 만들어야 한다.    - 추상클래스와 비슷하다.  추상클래스하고는 머가 다르나 인터페이스는 함수선언부와 구현부를 분리한다는 점에서 추상클래스와 유사하다.  다른점이 있다면  추상클래스는 추상함수뿐 아니라 일반 함수도 가지고 있을수 있고, 추상클래는 extends를 통해, 인터페이스는 implements를 통해 함수를 작성한다는 점이다.  왜쓰나  (왜쓸까?, 왜쓰는지 쉽게 설명해주실 수 있는분 찾습니다. ) 일단 추상클래스와 명확하게 다른부분을 가지고 이유를 찾아보려고 한다.  1. 일반 함수를 가질수 없다.  이부분은 단점이다. 인터페이스 구현부에서 매번 함수를 각각 새로 작성한다는것은 불편한일이다.  굳이 좋아보일만한 점을 꼽는다면 함수선언부만 나열된  비교적 깔끔한 마치 잘 정리된 문서와 맞먹는 소스코드를 볼 수 있다.  2. implements 를 사용한다.  이부분은 java에서 꽤 큰 장점이다. 자바는 다중상속을 지원하지 않는다.  extends 뒤에 복수의 부모 클래스가 올수 없다.  인터페이스는 이를 해결할 수 있다.  일단 이부분이 인터페이스를 사용하는 가장 큰 이유인듯 하다.  인터페이스에서 함수 구현이 가능해지면  머가 좋아질까  추상클래스와 비교해서 단점인 부분이 바로 해소가 된다.