안녕하세요. 이번 시간에는 플러터(Flutter)로 텐서플로(TensorFlow)를 활용해서 딥러닝 기반의 실시간 객체(이미지) 인식이 가능한 안드로이드 앱을 만들어볼 거예요. 카메라를 통해 비치는 실시간 영상을 분석 후 객체를 인식하고 분류하도록 할게요. 즉 사진을 찍지 않아도 실시간으로 화면에 나타나는 영상을 기반으로 객체 인식이 이루어집니다. 이미지 인식은 선행 학습된 인공지능 딥러닝 모델인 모바일넷(MobileNet v1)을 사용해서 실시간으로 사물 및 사람을 인식하고 분류합니다. 궁금하신 분들을 위해 오늘 만들어 볼 앱의 주요 화면을 먼저 보고 갈게요. TensorFlow 객체 인식 예제 딥러닝 기반의 객체 인식 모델(예: 모바일넷)은 이미지에 있는 다양한 물체를 감지하고 분류할 때 각 물체에 ..
안녕하세요. 오늘은 자바스크립트로 크롤링 하는 법을 알아보려고 해요. 먼저 많은 분들이 궁금해하시는 웹 스크래핑과의 차이를 설명드릴게요. 이 둘은 서로 관련되어 있지만, 각각 다른 목적과 과정을 가지고 있는 개념이라고 이해하시면 되는데요. 크롤링과 웹 스크래핑의 차이 크롤링이란 인터넷상의 웹 페이지들을 방문하고 정보를 수집하는 과정이에요. 크롤러(또는 스파이더)라 불리는 프로그램이 웹 페이지를 방문하고, 그 페이지에 있는 링크들을 따라가며 다른 페이지로 이동하면서 정보를 수집해요. 웹 스크래핑은 그 수집한 정보를 추출하고 원하는 형태로 가공하는 과정까지 포함한 개념입니다. 웹 스크래핑은 웹 크롤링을 기반으로 하지만, 더 많은 데이터 처리 작업이 포함되어 있어요. 간단한 예를 들어볼게요. 웹 크롤링을 통해..
안녕하세요. 이번 시간에는 자바스크립트를 활용하여 현재 보고 있는 웹브라우저 화면에 각각 독립적으로 움직이는 공 애니메이션 효과를 만들 거예요. 공을 그리기 위해 HTML5의 기능 중 하나인 Canvas를 사용할 건데요. Canvas는 동적인 그래픽을 그리기 위해 사용됩니다. 즉 2D 그래픽이나 애니메이션 효과를 웹 페이지에 하나도 안 쉽게 표현할 수 있어요. 웹브라우저에서 굴러다니는 공으로 대략적인 2D 그래픽 성능도 확인해 볼 수 있는데요. 시간이 지남에 따라 공의 개수가 많아지도록 해서 실시간으로 프레임을 측정하고 공이 최대 몇 개까지 안정적인 프레임을 유지하는지 확인해 보는 거죠! canvas는 그래픽카드의 하드웨어 가속을 사용하여 2D 그래픽을 렌더링 하기 때문에 가능한 거예요. 하지만 성능 테..
안녕하세요. 이번 시간에는 사용하고 계신 인터넷 브라우저 콘솔에서 웹스크래핑 할 수 있는 자바스크립트를 만들 거예요. 웹스크래핑 대상은 구글의 검색 결과입니다! 입력받은 키워드로 검색 결과를 가져오도록 할 건데요. 알 수 없는 이상한? 사이트까지 목록에 나오지 않도록 필터링할 도메인(naver, daum 등)을 같이 입력받아서 제목과, URL 정보를 보여주도록 할 거예요. 참고로 웹스크래핑은 웹페이지의 HTML 구조가 변경될 경우, 코드도 함께 수정해 주어야 해요. 어느 날 갑자기 결과를 못 가져온다면? 아마도 HTML의 구조가 변경되었을 거예요. 그럼 그 웹페이지에 가서 다시 코드를 분석하고 기존 코드를 수정해야겠죠! 이번에도 CORS 우회 프록시 서버를 활성화해 주세요. 처음이신 분들은 아래 이전 글..
안녕하세요. 지난 시간에는 네이버 검색 API를 활용하여 블로그 검색 순위를 알아봤는데요. 이번에는 네이버 데이터 랩의 API를 활용해서 검색어 트렌드를 분석해 볼게요. 기간별 검색어 트렌드를 기기, 연령, 성별 등으로 구분해서 세분화된 정보를 가져올 수 있답니다. 한번 발급받은 API는 계속 사용할 수 있으니 네이버 개발자 센터에서 받아보시길 바랍니다. (1분이면 끝!) 검색어 트렌드란? 검색어 트렌드는 검색량이나 인기 검색어 등을 조회하는 게 아니에요. 키워드 간의 상대적인 인기도를 확인할 수 있는 거예요. 즉 키워드의 검색량 비율을 비교해서 어떤 키워드가 더 많은 관심을 받고 있는지 검색 점유율 등을 추정할 수 있는 거죠. 시간에 따른 인기도라든가, 연령이나 성별 검색량을 비교해서 어떤 연령대와 성..
안녕하세요. 이번 시간에는 플러터로 'flutter local notifications' 패키지를 사용해서 로컬 푸시 알림을 보내는 안드로이드 앱을 만들어 볼게요. 로컬 푸시는 앱에서 발생시키는 알림 메시지로 서버와 통신하지 않고 로컬에서 처리되는 것을 말해요. 즉, 서버에서 푸시 메시지를 발송하는 것이 아니라 앱 내부에서 직접 푸시 메시지를 생성하고 전송하는 방식이에요. 그렇기 때문에 인터넷 열결 없이도 알림을 받을 수 있어요. 이번에 사용할 flutter_local_notifications는 다양한 설정을 통해 사용자가 원하는 방식으로 푸시 알림을 구현할 수 있어요. 예를 들어 사용자가 알림을 클릭할 때 실행될 앱의 화면을 지정하거나, 알림 사운드, 진동 패턴, 이미지 또는 앱 아이콘 같은 추가 정보..