
협업툴
Telegram
사용 기업

직방

SK텔레콤

SSG.COM
SK텔레콤
OpenAI API 를 활용해 최신 AI 논문 정보를 알려주는 Telegram bot 만들기
Huggingface 에 보면 daily paper 라는 코너가 있습니다.이런식으로 된 코너인데, 매일매일 아카이브나 유명 학회에 제출된 논문들을 추려서 올려줍니다.특히 자연어 처리 분야나 멀티모달, 비전 쪽의 논문이 주를 이루는데, 요즘에는 로보틱스 논문도 간간히 올라옵니다.얼마전에는 SKT 멀티모달 팀에서 아카이브에 올린 논문이 3위에 랭크되기도 했었습니다.굉장히 좋은 포스팅이기는 한데 개인적으로는 세 가지 문제가 있었습니다.첫 번째로는 새로운게 올라올 때마다 바로바로 확인이 안된다는 것 (구독하면 되긴 합니다 ㅎㅎ 메일이라 그렇지...)두 번째로는 원하는 카테고리만 바로 보기 어렵다는 것마지막으로 abstract 이 바로 보이지 않고 클릭해서 읽어야 하는데다가 영어라 바로바로 읽히지는 않는다는 것그래서 원하는 카테고리 논문이 올라오면 바로 알려주는 텔레그램 봇을 한 번 만들어 보기로 했습니다.목표는 아래와 같습니다.• None Daily paper 페이지를 주기적으로 parsing 해서 새로운 논문이 올라오면 DB 에 업데이트• None Abstract 를 이용해 LLM, Multimodal, Computer vision, Reinforcement learning, Robotics 다섯가지 카테고리로 paper 를 분류• None Abstract 를 2~3 문장으로 요약 -> 한글로 번역• None 논문 업데이트마다 사용자가 원하는 카테고리의 논문 요약을, 원하는 언어로 알려주는 텔레그램 봇Telegram bot 을 만들기 위해서는 Telegram 앱의 Botfather 를 이용해야 합니다.출처의 내용을 참고해서 daily_paper_bot 이라는 봇을 만들어보도록 하겠습니다.자 이제 t.me/daily_paper_bot 이라는 링크를 통해 봇에 접속할 수 있습니다.그리고 빨간색으로 가려놓은 부분이 daily_paper_bot 의 bot-token 입니다.이걸 저장해두고 다음 스텝으로 넘어갑니다. (노출되지 않도록 주의!!)일단 원대한 포부(?)는 저만 사용하는 봇이 아니라 누구나 사용할 수 있는 봇이기 때문에, 유저 정보를 받는 코드를 만들도록 하겠습니다.• None 각 유저가 원하는 paper 카테고리,를 가지고 있어야 합니다. 무료로 사용 가능한 sqlite3 를 사용해 DB 를 만들고 유저 정보를 저장해보도록 하겠습니다.우선 DB 에 이라는 이름의 table 을 만들어줍니다. 은 환경변수로 설정합니다.Field 로는 위에서 말한 3가지를 사용하겠습니다.카테고리의 경우 daily paper 에 자주 올라오는 5개 카테고리만 우선 선정하겠습니다.다음은 telegram 에서 유저가 봇과 채팅을 시작했을 때 DB 에 chatID 가 저장되는 코드와유저의 추가적인 명령어를 통해 필드를 업데이트 할 수 있는 코드를 만들겠습니다.위의 두 코드를 하나로 합쳐서 실행시킨 후 한 번 봇에게 메시지를 보내보겠습니다.이제 메인 파트인 Daily paper 전송 코드를 만들어 보겠습니다. 전송 코드는 3가지 파트로 이루어집니다.• None dail
telegram
SK텔레콤
Tmap OpenAPI 와 텔레그램 봇을 활용한 주변 맛집 검색 기능 간단 구현!
Tmap OpenAPI 와 텔레그램 봇을 활용한 주변 맛집 검색 기능 구현에 대해서 공부및 정리후 나만의 노하우와 지식을 공유한다.1. Tmap OpenAPI 에 대해서 알아본다.2. Tmap OpenAPI 와 텔레그램 봇을 활용한 주변 맛집 검색 기능을 간단하게 구현해 본다.요즘에 제가 Tmap OpenAPI 에 대한 관심이 생겨서 해당 OpenAPI를 공부해서 어떤 기능을 개인적으로 구현해 볼까? (고민하던 중 ....)역시나 관심있게 보던 텔레그램 봇을 활용해서 내가 검색하고자 하는 위치의 맛집과 음식점들을 텔레그램 봇 메시지로 전송해보면 어떨까?해서 바로 Tmap OpenAPI를 공부한 지식을 토대로 기능을 구현해봤는데 그부분을 데보션에 정리해볼까합니다.해당 블로그를 보시려면 사전지식으로 Tmap OpenAPI 에 대해서 공부를 하기위해서 우선 SK openAPI 사이트에 접속합니다.아래와 같이 SK open api 는 TMAP 관련해서 OpenAPI 를 지원하고 있습니다.TMAP API 버튼을 클릭해서 들어가보면 아래와 같은데요.TMAP 은 여러가지를 지원하는 것으로 보이고요.저는 제가 기능 구현에 활용할 TMAP Openapi 가 존재하는지 확인합니다.정성스럽게 찾아보던 중 아래 Openapi를 발견합니다. (와! 내가 찾던 TMAP OpenAPI 구나!)그리고, 좀 더 정성스럽게 자세히 읽어보니, 제가 찾던 TMAP Openapi 를 지원하고 있었습니다. (감사하게도요..!)그리고, 해당페이지에서는 TMAP Openapi 를 잘 활용하라고 정성스럽게 쓰인 아래와 같이 예시도 있으니 참고합니다.그리고 친절하게도 다양한 언어로 구현할 수 있도록 예시코드도 제공하고 실행도 가능합니다.저는 이번 블로그에서 설명하고 개인적으로 개발할 언어인 Golang 를 선택해봅니다.아래는 바로 GoLang 예시코드입니다.실행해보니 아래와 같이 결과가 나오네요."애월에서는 이름만 걸고 영업했는데 이전하고는 얼굴까지 걸고 영업 개시했습니다. 오시는 손님마다 제주은갈치조림과 통갈치구이 등 갈치요리 찐맛집이라고 엄지척! 하는 대한민국 최고의 갈치전문식당을 지향하는 갈치맛집입니다. 엄청난 홍보비용으로 호객 행위를 하는 관광객을 1회성 소비자로 보는 몇몇 유명 관광식당들과는 달리 오시는 한 분 한 분 평생 고객으로 생각하고 만족한 식사를 하고 가실 수 있도록 최고의 맛을 낼 수 있도록 노력하고 있으며, 실제로 재방문율이 아주 높습니다. 2021년 9월 25일 이전 첫날, 네이버플레이스를 제외한 온라인-일반네비게이션 주소 변경이 되지 않은 상황에서도 수십 팀이 소개 받고, 재방문으로..전화로 물어 물어 찾아올 정도네요.애월 하귀에서 2019년 10월 14평 작은 규모로 오픈, 개업한지 얼마되지 않은 2020년 초 코로나사태가 발생했으나 개업 초기부터 맛집으로 입소문을 타 코로나 정국속에서도 많은 분들이 찾아주셔서 좁은 가게로는 더 이상 감당이 안 돼, 보다 쾌적하고 편안하게 식사하고 가실 수 있도록 개업 2년이 안 되어 100여평 넓은 가게를 얻어 확장 이전
go
telegram
당근
확장성 있는 TCP 통신 시스템 구축하기
들어가며안녕하세요, 당근페이 머니서비스팀에서 백엔드 엔지니어로 근무 중인 윌리엄(William)이에요. 머니서비스팀에서는 사용자들에게 가치 있는 금융 서비스를 제공하기 위해 다양한 은행 및 카드사와 제휴를 맺어 금융 프로덕트를 만들고 있어요. 최근 출시한 당근머니 체크카드가 대표적인 사례예요.이번 글에서는 제휴업체 연동 과정 중 TCP 통신을 사용하게 된 배경과 당근페이에서 TCP 연동을 안정적으로 수행할 수 있었던 과정을 소개해 드리려고 해요. TCP 통신에 대해 궁금하거나 연동을 준비하고 계신 분들에게 제 글이 조금이라도 도움이 되었으면 좋겠어요.제휴업체 연동당근페이 머니서비스팀은 은행, 카드사, VAN사 등 다양한 대외기관과 통신해요. 지금까지는 HTTP와 JSON 포맷으로 통신해 왔기 때문에 큰 어려움 없이 외부와의 연동 작업을 진행했어요.하지만 제휴를 맺는 과정에서 HTTP가 아닌 TCP 프로토콜로 통신해야 하는 제휴업체들이 생겨났어요.TCP 방식의 통신은 이제껏 사용해 오던 HTTP 방식과 통신 인터페이스가 많이 다르기 때문에 별도의 개발이 필요했어요. 구체적으로 어떤 부분이 다른지 살펴볼게요.TCP 통신 방식TCP 통신은 주로 전용선에서 전문을 주고받는 방식으로 이루어져요.전문의 개념과 형태전문이란 서버와 클라이언트가 주고받을 데이터의 포맷을 정해두고 고정된 길이의 데이터 패킷을 송수신하는 것을 의미해요. 전문은 보통 ‘공통부’와 ‘개별부’로 나누어져 있는데요. 하나의 대외기관에서는 동일한 공통부를 사용하면서 전문의 목적에 맞게 개별부를 나누어 사용해요.이해를 돕기 위해 간단한 전문 명세서를 작성해 봤어요.계좌 잔액조회 전문 (전문코드: 2000, 전문길이: 50, 인코딩 방식: ASCII)위 같은 전문 명세서에는 각각의 필드들이 고정된 크기와 순서로 정의되어 있어요.공통부의 크기는 항상 고정되어 있기 때문에 정해진 크기만큼의 공통부를 먼저 읽어 해석해요. 공통부의 ‘전문구분코드’를 통해 어떤 개별부를 사용했는지 판단하는 거죠. ‘전문구분코드’에 맞는 개별부를 찾았다면, 개별부의 전문 크기만큼 나머지 바이트 배열을 읽으면서 전체 전문을 해석할 수 있어요.공통부 전문 예시를 보면서 전문을 읽고 해석하는 방식에 대해 알아볼게요. 공통부 예시 : 0x32303030303030303031 바이트 배열을 하나씩 해석해 보면, 아래와 같은 정보를 도출해 낼 수 있어요.나머지 개별부에 대해서도 위와 같은 방식으로 해석이 가능해요.전문 통신 방식이제 전용선에서 전문을 송수신하는 방식을 살펴볼게요. TCP 통신은 대외기관에 따라 “동기방식”과 “비동기방식”을 나누어서 사용해요.동기방식: HTTP 통신방식과 비슷하게 클라이언트에서 요청을 보낼 때 세션을 생성하고, 서버는 요청받은 세션에 응답을 내려주는 방식이에요. 클라이언트가 응답을 받으면 사용한 세션은 종료돼요.비동기방식: 서버와 클라이언트가 약속된 개수의 세션을 미리 생성하고 연결을 계속 유지시켜 두는 방식이에요. 클라이언트는 맺어진 세션 중 하나의 세션에 요청을 보내고, 응답받을 서버
java
netty
redis
telegram
당근
Netty를 활용한 대외기관 TCP 통신 연동기
확장성 있는 TCP 통신 시스템 구축하기들어가며안녕하세요, 당근페이 머니서비스팀에서 백엔드 엔지니어로 근무 중인 윌리엄(William)이에요. 머니서비스팀에서는 사용자들에게 가치 있는 금융 서비스를 제공하기 위해 다양한 은행 및 카드사와 제휴를 맺어 금융 프로덕트를 만들고 있어요. 최근 출시한 당근머니 체크카드가 대표적인 사례예요.이번 글에서는 제휴업체 연동 과정 중 TCP 통신을 사용하게 된 배경과 당근페이에서 TCP 연동을 안정적으로 수행할 수 있었던 과정을 소개해 드리려고 해요. TCP 통신에 대해 궁금하거나 연동을 준비하고 계신 분들에게 제 글이 조금이라도 도움이 되었으면 좋겠어요.제휴업체 연동당근페이 머니서비스팀은 은행, 카드사, VAN사 등 다양한 대외기관과 통신해요. 지금까지는 HTTP와 JSON 포맷으로 통신해 왔기 때문에 큰 어려움 없이 외부와의 연동 작업을 진행했어요.하지만 제휴를 맺는 과정에서 HTTP가 아닌 TCP 프로토콜로 통신해야 하는 제휴업체들이 생겨났어요.TCP 방식의 통신은 이제껏 사용해 오던 HTTP 방식과 통신 인터페이스가 많이 다르기 때문에 별도의 개발이 필요했어요. 구체적으로 어떤 부분이 다른지 살펴볼게요.TCP 통신 방식TCP 통신은 주로 전용선에서 전문을 주고받는 방식으로 이루어져요.전문의 개념과 형태전문이란 서버와 클라이언트가 주고받을 데이터의 포맷을 정해두고 고정된 길이의 데이터 패킷을 송수신하는 것을 의미해요. 전문은 보통 ‘공통부’와 ‘개별부’로 나누어져 있는데요. 하나의 대외기관에서는 동일한 공통부를 사용하면서 전문의 목적에 맞게 개별부를 나누어 사용해요.이해를 돕기 위해 간단한 전문 명세서를 작성해 봤어요.계좌 잔액조회 전문 (전문코드: 2000, 전문길이: 50, 인코딩 방식: ASCII)위 같은 전문 명세서에는 각각의 필드들이 고정된 크기와 순서로 정의되어 있어요.공통부의 크기는 항상 고정되어 있기 때문에 정해진 크기만큼의 공통부를 먼저 읽어 해석해요. 공통부의 ‘전문구분코드’를 통해 어떤 개별부를 사용했는지 판단하는 거죠. ‘전문구분코드’에 맞는 개별부를 찾았다면, 개별부의 전문 크기만큼 나머지 바이트 배열을 읽으면서 전체 전문을 해석할 수 있어요.공통부 전문 예시를 보면서 전문을 읽고 해석하는 방식에 대해 알아볼게요. 공통부 예시 : 0x32303030303030303031 바이트 배열을 하나씩 해석해 보면, 아래와 같은 정보를 도출해 낼 수 있어요.나머지 개별부에 대해서도 위와 같은 방식으로 해석이 가능해요.전문 통신 방식이제 전용선에서 전문을 송수신하는 방식을 살펴볼게요. TCP 통신은 대외기관에 따라 “동기방식”과 “비동기방식”을 나누어서 사용해요.동기방식: HTTP 통신방식과 비슷하게 클라이언트에서 요청을 보낼 때 세션을 생성하고, 서버는 요청받은 세션에 응답을 내려주는 방식이에요. 클라이언트가 응답을 받으면 사용한 세션은 종료돼요.비동기방식: 서버와 클라이언트가 약속된 개수의 세션을 미리 생성하고 연결을 계속 유지시켜 두는 방식이에요. 클라이언트는 맺어진 세션 중 하나의
java
netty
redis
telegram