본문 바로가기

전체 글

(430)
점심 메뉴 추천 챗봇(Google Dialogflow 엔진) 2020.05, 혼자 개요 프로젝트와 관련되어 간략한 챗봇 개념 및 기술을 소개하는 자리가 있었다. 소개하며 겸사겸사 여러 엔진의 챗봇을 사용해보며 국내 여러 기술사의 레퍼런스를 많이 봤다. 구글 엔진이 당연히 제일 인기 많을 줄 알았는데 오히려 제일 말이 많았다... 왜 그럴까 하는 생각도 있었고 재밌을 것 같아서 Dialogflow 엔진을 활용해서 챗봇을 만들어봤다. 결론부터 말하자면, Entity가 인식이 잘 안됐다... (ㄴㄴ 같은 걸 자꾸 못알아들어서 힘들었다) 학습을 할 때 밥 > 밤 이런 부분들도 밥을 밤으로 오타친 걸로 인식하고... 그래도 다양한 옵션과 커스터마이징이 가능했고 무엇보다도 특정 Entity를 요구하는 시나리오를 설계하면 되물어서 특정 Entity를 알아내오도록 하는 부분은 ..
교내 스터디룸 예약 시스템 2019.12~2020.04, with 팀원 1명 개요 모교 단과대학 건물에는 스터디룸이 있다. 학생회에서 스터디룸을 관리하고 있는데, 이를 스터디룸 앞에 종이를 통해 예약을 받고 관리가 이루어진다. 그래서 여러가지 문제점이 있었다. 매주 예약을 받는 종이를 갈아줘야함. 자기가 예약한 시간을 확인하기 어려움. 실제로 예약한 시간만큼 사용하지 않아 남는 시간에 다른 사용자가 이용을 못함(추후 추가됨) 그래서 이를 전산화해서 웹으로 관리할 수 있도록 구축하고자 했다. 구축 요구사항 명세 크게 3가지의 기능이 필요했다. 정리하면 다음과 같다. 1. 회원가입 및 로그인 학교 웹메일 인증을 통해 회원가입 로그인은 학번/비밀번호 통해 입력 2. 예약 예약가능 스터디룸은 1층 2개, 3층 1개 예약 시 예약 가능한 ..
로그 추적 시스템(연구과제) 2020.06 ~ 2020.12 개요 로그 추적시스템과 관련된 연구 내용이었다. 연구내용이다보니 많은 것들을 공개할 수 없어서, 내가 작성했던 문서 위주로 간략하게만 소개할 수 있을 듯하다. 로그 분석은 시스템 문제 해결의 중요한 방법이다. 그러나 최근 분산 컴퓨팅, 시스템 고도화 등의 여러 환경 속에서 시스템의 구조가 복합적으로 변해가고 있다. 그 결과, 하나의 시스템 내부에서도 수많은 로그 파일들을 생성하고 작성한다. 이러한 복합적인 시스템 구조 속에서 문제 발생 시 연쇄적으로 영향을 미치므로 여러 로그들 중에서 단순 하나의 프로그램에 대한 로그 분석만으로 문제 해결은 쉽지 않은 실정이다. 이에 따라 로그 추적 시스템을 통해 여러 로그들 중에서 시스템 문제 해결에 필요한 로그를 추려내 제공하고자 한다..
학교 웹 동아리 홈페이지 2019.01~2019.02, with 팀원 2명 개요 학교에 멋쟁이 사자처럼 웹 프로그래밍 동아리를 홍보해야 했다. 웹 프로그래밍 동아리답게 웹 페이지는 있어야 한다고 다들 생각했고, 조금 잘 만들어보자는 의미에서 많이 고민하고 시간 투자도 많이 했었던 것 같다. 기능이랄건 크게 없었는데 다음의 기능은 꼭 필요했다. 질문/답글 형태의 게시글 사진과 함께 여러 소식을 전할 게시글 웹 동아리답게 예쁜 디자인 구축 기술 스택 백엔드(Python Django 프레임워크) : 윤신O, 이산O 프론트엔드(html, css, javascript) : 김민O 데이터베이스(SQLite, PostgreSQL) 그 외 pillow(django 이미지 처리), ckeditor(WYSIWYG 에디터), Heroku(배포) 나..
어린이집 안전 종합 플랫폼 2018.09~2018.11, with 팀원 5명 개요 2018 공개 SW 개발자 대회 및 네이버 D2 해커톤 대회에 출품했던 프로젝트이다. 공공데이터 API를 활용해서 보다 안전한 어린이집이 될 수 있게 다양한 정보를 제공하는 플랫폼을 개발하고자 했다. 포함한 기능은 크게 2 가지이다. 어린이 집 주변 시설현황(유흥주점 수, 흡연구역 등) 스쿨버스 승하차 태그 확인 이를 웹, 카카오톡 챗봇 두 가지 형태로 서비스를 제공하도록 하였다. 구현 해당 프로젝트는 생각보다 규모가 꽤 컸다. 그래서 역할을 나누고 진행하였다. 백엔드(Ruby On Rails, JavaScript) : 유재O, 윤신O, 이산O 프론트엔드(HTML, CSS, JavaScript) : 김지O, 홍연O, 김민O RFID리더기(라즈베리파이..
해외 한인 커뮤니티 웹 사이트 2018.06~2018.07, with 팀원 3명 개요 2018 멋쟁이 사자처럼 해커톤에 나가면서 출품했던 프로젝트이다. 주제는 해외 한인들의 커뮤니티 사이트를 만드는 것이었다. 기본적인 커뮤니티로써의 기능들을 담고자 했다. 포함한 기능은 크게 2 가지이다. 회원 기능 : 기본적인 회원관리, 프로필, 쪽지 주고 받기, 알람 기능 등 게시글 기능 : 카테고리별 게시글, 이미지 업로드, WYSIWYG 에디터, 실시간 인기게시글, 게시글 검색, 실시간 검색어, 댓글과 대댓글, 좋아요와 싫어요 등 구현 백엔드(Ruby On Rails, AWS 서비스) : 윤신O, 이시O 프론트엔드(HTML, CSS, JavaScript) : 김정O, 홍연O 나는 기본적인 백엔드 기능의 전반을 팀원과 같이 맡았다. 카테고리별 게..
우선순위 큐(Priority Queue) / 힙(Heap) 우선순위 큐(Priority Queue) 우선순위 큐는 말 그대로 Queue 중에서도 특별한 Queue이다. 우선순위를 가지는 큐로써, 가장 우선순위가 높은 자료가 가장 먼저 출력되는 구조를 지닌다. 아래처럼, 완전히 정렬된 형태는 아니지만 출력은 언제나 우선순위가 가장 높은 자료형이 반환된다. 따라서, 출력될 때 우선순위가 가장 높은 자료가 나올 수 있도록 삽입, 삭제가 이루어져야 한다. 삽입과 삭제의 연산에서 많은 연산들이 소모되어서 비효율적으로 보일 수 있지만 언제나 우선순위가 높은 자료형을 O(1)로 꺼낼 수 있기에 이러한 자료형이 필요시 될 때도 있다. 구현 방법에는 다양한 방법이 있지만 Heap을 통해서 우선순위 큐를 구현하는 것이 가장 이상적이다. 아래의 두가지를 만족하는 자료형을 Heap이..
스택(Stack)과 큐(Queue), 순환 큐(Circular Queue) 스택(Stack) 스택(Stack)은 LIFO(Last In First Out)을 표현하는 대표적인 선형 자료구조 이다. 나중에 입력한 값이 먼저 출력되는 구조이다. 그래서 일반적인 스택은 top이라는 하나의 공간을 통해 입출력이 일어난다. 배열을 통해서 많이 표현하는데 아래와 같이 표현할 수 있다. 위와 같이 top이라는 하나의 공간을 통해 값을 입력, 출력한다. 삽입은 top이 가르키는 공간의 다음 공간으로 이동하여 삽입한다. 삭제는 top이 가르키는 공간의 자료를 꺼낸뒤 top은 이전 공간으로 이동한다. top이 -1일 경우 STACK은 비어있는 상태이다. top이 배열의 마지막 공간을 가르키고 있을 경우 STACK은 가득찬 상태이다. 스택(Stack) 구현 #include #define MAX_S..