AI 자동매매 시스템 만들기 #2 - 채널 모니터링과 5단계 매칭 시스템
·
일상다반사/개발
지난 글에서는 프로젝트 구조와 설계에 대해 이야기했는데요, 오늘은 가장 재미있었던 부분인 텔레그램 채널 모니터링 기능 구현에 대해 이야기해보려고 합니다. 왜 텔레그램 채널을 모니터링하나? 주식 투자를 하다 보면 여러 텔레그램 채널을 구독하게 됩니다. 증권사 리포트 채널, 뉴스 속보 채널, 개별 종목 분석 채널 등등... 문제는 이 채널들에서 쏟아지는 정보를 실시간으로 다 확인하기 어렵다는 거죠."내가 관심 있는 종목에 대한 소식만 골라서 알림을 받을 수 있다면?"이런 생각에서 시작했습니다. AI가 채널 메시지를 읽고, 내가 감시 중인 종목과 관련이 있는지 판단해서 알려주면 좋겠다는 거죠. TDLib - 텔레그램의 공식 라이브러리텔레그램 봇 API를 쓸까 하다가, 더 강력한 방법을 찾았습니다. 바로 TDL..
AI 자동매매 시스템 만들기 #1 - 프로젝트의 시작과 설계
·
일상다반사/개발
오늘부터 제가 만들고 있는 AI 자동매매 시스템 프로젝트 개발기를 연재하려고 합니다. 첫 번째 글에서는 프로젝트가 어떻게 시작되었고, 어떤 기술 스택을 선택했는지 이야기해볼게요. 왜 만들게 되었나?1. 요즘 핫한 AI. 어떻게든 활용 능력을 키워보고 싶었습니다. (그래도 내가 백엔드 개발자인데...)2. 과거 키움 증권의 Open API를 이용해서 구현을 시도하다가 32bit 프로그램을 포함한 다양한 디펜던시와 메인 PC에 깔아야 하는 보안 프로그램(매번 로그인도 번거로웠던).. 치를 떨고 줄행랑 쳤습니다. 그런데.... REST API가 나왔었더라구요!! "AI가 객관적으로 판단해서 자동으로 매매하면 어떨까?"물론 시중에 자동매매 프로그램들이 많이 있지만, 개발자로서 직접 만들어보고 싶었어요. 내가..
2026 macOS 유틸
·
Tips
작성자의 주관이 포함된 게시글이며, 얼마든 대체제가 존재합니다.인권 유틸Homebrew설명: 맥을 설치하면 반드시 맥주 한 잔!공식 웹사이트: https://brew.sh/라이선스: 무료 (BSD-2-Clause)Keka설명: Windows는 반디집. macOS는 케카공식 웹사이트: https://www.keka.io/라이선스: 무료f.lux설명: 소중한 눈을 지킵시다. mac의 기본 내장 기능(Night Shift)은 쓰레기입니다.공식 웹사이트: https://justgetflux.com/라이선스: 무료문서 유틸CotEditor설명: Windows의 Notepad++ 대체 앱공식 웹사이트: https://coteditor.com/라이선스: 무료 (Apache-2.0)draw.io설명: 무료 중에선 원 ..
Spring boot RestClient H2C 설정
·
Framework & Runtime/SpringBoot
@Configurationpublic class RestClientConfig { @Value("${...}") private String baseUrl; @Bean public RestClient restClient() { return RestClient.builder() .requestFactory(new JdkClientHttpRequestFactory( HttpClient.newBuilder() .version(HttpClient.Version.HTTP_2) .build() ..
와우 클래식 도적 자물쇠 숙련 100-150 정확한 위치
·
Games/그외
사진의 초록색 상자를 참고해주십시오. 붉은마루 산맥 - 영원의 호수 (100 ~ 125) 저습지 (125 ~ 150)
내가 윈도우 11 를 설치하고 설치하는 것들
·
Tips/Windows
Everything유명하죠, 윈도우 기본 인덱싱에 비해 훨씬 빠르고 다양하고 강력한 기능을 지원합니다. Offical install: https://www.voidtools.com/ko-kr/downloads/Powertoys이것도 이젠 삼성의 굿락과 같은 필수품으로 자리잡고 있는 유명한 툴. Offical install: https://learn.microsoft.com/ko-kr/windows/powertoys/install Everything for Powertoys Run위와 같이 Search: 로 시작하는 친구들이 생긴다. 해당 확장 프로그램으로 인하여 나오는 것. Offical install: https://github.com/lin-ycv/EverythingPowerToys Win11Debl..
PageNotFound, No mapping for ... 로그 해결하기
·
Framework & Runtime/SpringBoot
서비스를 운영하다보면 뭔지 모를 요청을 마구잡이로 요청하는 놈들이 매일 매일 수천건씩 생긴다. 서비스가 AWS 위에서 올라가다보니 로그가 CloudWatch에 적재가 되는데 이 모든것은 비용이 발생한다. 해당 에러메시지를 없애보기로 하였다. 로깅 레벨 변경resources/application.ymllogging.level.org.springframework.web.servlet.PageNotFound: ERROR 위 코드를 properties에 위 처럼 추가하면 WARN 단계인 사진의 에러메시지는 앞으로 찍히지 않게 된다. 그리고관련된 방법을 찾다가 이러한 요청을 하는 Client의 IP 주소를 출력했으면 좋겠다는 질의가 StackOverflow에 올라온 적이 있다. 이 글을 참고하면 관련한 솔루션을 ..
언제부턴가 매우 비싸진 VPC 요금
·
DevOps/AWS
전혀 나오지 않던 Virtual Private Cloud의 요금이 매우 커졌다. 나는 이 사실을 뒤늦게 알았고 비용 최적화에 들어갔다.  나는 AWS 관련 전문가가 아니라는 점, 상기드린다. 내가 해결을 위해 수행한 방법만 나열한다. 1. 알아보기 관련 AWS 공식 게시글은 다음과 같다.https://aws.amazon.com/ko/blogs/korea/new-aws-public-ipv4-address-charge-public-ip-insights/ 공지 – AWS Public IPv4 주소 요금 변경 및 Public IP Insights 기능 출시 | Amazon Web ServicesAWS에서 퍼블릭(Public) IPv4 주소에 대한 새로운 요금이 도입됩니다. 2024년 2월 1일부터 서비스 연결 ..
IP주소 32비트 정수 변환 및 되돌리기 AI 코드 및 성능 비교
·
Language/Kotlin
IP 주소를 32비트 정수로 변환하고 32비트 정수로 변환된 IP 주소를 다시 문자열로 되돌리는 코드가 필요해 간단히 Copilot과 ChatGPT4에게 물어봤다. fun ipToNumber(ipAddress: String): Long { return ipAddress.split(".").fold(0L) { total, next -> total * 256 + next.toInt() } } 아이피 주소를 32비트 정수로 변환하는 로직은 두 AI는 동일한 코드를 내놓았다. 그럼 되돌릴땐 어떨까? Copilot: fun numberToIp(number: Long): String { return (0..3).map { number shr (8 * it) and 0xFF }.reversed().joinToStri..
[DGS] GraphQLSchema: Factory method 'schema' threw exception; nested exception is java.lang.NoSuchMethodError 에러 해결
·
Framework & Runtime/SpringBoot
Kotlin + Spring boot + Webflux + Netflix DGS + Groovy 스택에서 개발 환경을 구현하던 중 발생한 여러 에러 중 하나 에러 로그 2023-05-01 23:13:35.236 WARN 5227 --- [ restartedMain] onfigReactiveWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'webHandler' defined in class path re..