Flutter 앱 개발 강의 3주차를 진행중에 있습니다. 여유만 있다면 모든 강의를 다 독파 할 수도 있겠지만 직장인이 그게 어디 쉬울까요. 주말과 야간을 이용해서 짬내서 계속 진행중에 있습니다. 내일배움카드라는 필살기가 있어서 참 좋네요 3주차에는 메모장 앱을 개발해보는 중입니다. 현재까지 학습한 부분을 기록하면서 복습해보는 시간으로 이 포스팅을 진행해봅니다. 메모장 답게 제공하는기능은 다음과 같습니다. 메모 리스트 조회/출력, 메모 쓰기/수정/삭제, 파일로 저장하기/불러오기 등입니다. 개발환경은 MacOS 상에서 안드로이드 스튜디오로 진행했습니다. 비주얼스튜디오코드가 좋다고는 하는데 아직 익숙해지지 않아서 쓰기가 불편합니다만 강사님께서 쓰는 화면을 보고 있노라니 Visual Studio Code 가 ..
개요 메신저봇r을 이용해서 카카오봇을 만들어온게 몇일 안된거 같은데 여러모로 활용할 수 있는 방안을 만든것 같습니다. 이번에는 역시나 핫한 openAI의 chatGPT api를 이용해보려 하는데요. 구글의 bard 가 치고 올라오고 있어서 활용하는 입장에서는 두 ai 엔진을 번갈아 가며 좀 더 결과물이 좋은 쪽을 택하는게 좋지 않나 생각합니다. 바드로 진행할까 하다가 일단은 chatGPT를 이미 제가 개발해둔 카카오봇에서 활용중이라서 이 코드를 활용해 chatGPT를 내장하는 방법을 알려드리겠습니다. 본문 개발중인 카카오봇에 chatGPT를 내장하는 방법은 정말 간단합니다. 사실 내장하는 방식을 아름답게 변경한다고 하면 서버쪽으로 호출해서 응답을 소켓으로 받거나 콜백 url을 남겨서 받거나 하는 비동기 ..
개요 오늘은 메신저봇R을 이용해 socket 서버와 통신을 하는 걸 만들어 보려 합니다. 이미 제가 구축한 카카오봇에서 작동하는 소스를 발췌해 echo 기능을 넣어보는 예제로 쉽게 풀어보았습니다. 동작 방식은 다음과 같습니다. python 으로 작성된 UDP 서버 카카오봇 카카오봇은 들어오는 메시지를 UDP 서버로 전송하고 서버는 전달받은 메시지에 From UDP Server by python 워터마크 텍스트를 추가해서 다시 보내주는 방식으로 구현해보았습니다. socket 통신의 경우 TCP와 UDP 방식이 존재하는데 연결지향 방식인 TCP의 경우 데이터 전송을 보장하지만 속도가 느린 반면에 UDP는 데이터 전송은 보장하지 않지만 속도가 빠른 장점을 가지고 있습니다. 개발 시 둘의 차이에 맞는 방식을 사..
개요 기존 소스코드 분석 위주로 플러터 개발을 진행하다 보니 예제 하나를 실행해보려 해도 깔끔하게 진행되는 법이 없습니다. 개발환경이 제 각각 다르고 안드로이드 스튜디오가 업데이트 되면서 gradle 또한 호환성을 갖는 버전으로 업데이트 해주면서 맞춰주어야 하는데 그러지 못함에서 나타나는 오류와 경고들이 많이 보입니다. 아래 경고 메시지 Warning: Mapping new ns ~ to old ns ~ 의 경우 gradle 버전이 낮아서 나타나는 경고 메시지입니다. 궂이 경고를 없애지 않아도 앱 실행은 정상적으로 되는 것을 확인했는데 깔끔한 처리를 위해 경고 메시지를 없애도록 gradle 버전을 올려보겠습니다. Warning: Mapping new ns http://schemas.android.com/..
개요 퀀트투자 하시는 분들은 주가정보와 기타 지표들을 모두 수집하고, 또 그 데이터를 정제해서 본인만의 데이터를 구축합니다. 그리고 그 데이터를 이용해 전략을 수립하고 백테스팅 툴을 이용해 전략을 시뮬레이션 해보고 실전 매매에 적용해보는 순서를 가지는데요. 저 역시 퀀트투자를 위한 데이터를 데일리로 수집하는 시스템을 구축해서 사용하고 있습니다. 백테스팅은 python 라이브러리 backtrader 를 이용해 구성한 전략을 2000종목 이상 대입해보면서 전략의 가치를 판단해보고 있습니다. 오늘은 이동평균선 매매를 위한 전략을 세울때 그 이동평균선 데이터를 정제하는 방법을 소개해드리려고 합니다. 본문 주가정보 데이터는 키움 api를 통해 받아오고 있습니다. 실시간 데이터 수집과 스케줄러를 통한 데이터 수집을..
개요 주식 관련 정보를 키움증권api를 통해서 받아오는 서버를 운영중에 있는데 flask 로 end point를 제공하고 있습니다. 이번에 시스템 확장을 하면서 한국투자 KIS 에서 제공해주는 기능을 추가하기로 합니다. 그리고 flask를 걷어내고 FastAPI로 대체하기로 했습니다. Flask와 비슷한 구조를 가졌는데 기본적으로 비동기식으로 작성되어 있기에 웹 서버 구동시 빠른 성능을 보여준다고 합니다. 이외에도 빠른 코드 작성, 적은 버그, 직관성, 쉬운 설계, 견고함, 표준을 기반으로 했다는 다양한 장점이 있다고 하는데 대세가 Flask 에서 FastAPI로 넘어간다고 하니 저도 넘어가려는 이유가 큽니다. FastAPI에 대한 상세 설명은 공식 문서 페이지에서 확인하시기 바랍니다. https://f..
개요 플러터앱 개발에 관심이 생겨서 책을 한권 샀습니다. Do it! 플러터 앱 프로그래밍 정가 3만원 짜리 책. 소스까지 제공되기에 이걸로 플러터를 익혀보자해서 샀는데 제공되는 예제코드 실행에 애를 먹었습니다. 현재 진행해보고 있는 예제는 12장. 네이티브 API와 통신하기 부분인데 3가지 오류가 발생하고 있습니다. 다만 플러터 빌드 시 오류에 대한 부분을 해결하는 명시적인 방법을 컴파일러가 알려주고 있어서 해결이 어렵지 않습니다. 본문 첫번째 오류 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Warning ────────────────────────────────────────────────────────..
개요 지난번 메신저봇R을 이용해서 카카오봇을 만들고 echo 기능을 통해 뼈대를 만들었습니다. https://quantrader.tistory.com/104 카카오봇 제작 방법 - 메신저봇R with javascript 요즘 카카오 오픈채팅방에서 개인정보가 다 유출되어서인지 주식 리딩방 추천 문자가 엄청나게 날아오더군요. 심지어 오픈챗방에 사용중인 제 대화명까지 다 붙여서 오는거 보고 깜놀했습니다 quantrader.tistory.com 이번 포스팅은 기존 뼈대에 살을 덧대 기능확장을 해보고자 합니다. 지역별 날씨를 챗봇에게 물어보면 네이버 날씨 검색과 html 파싱을 통해 챗봇이 답을 해주는 방식입니다. 본문 챗봇에게 질의하는 부분은 /날씨 '지역' 의 형태로 입력할 것이며 챗봇은 입력받는 데이타를 파..
요즘 카카오 오픈채팅방에서 개인정보가 다 유출되어서인지 주식 리딩방 추천 문자가 엄청나게 날아오더군요. 심지어 오픈챗방에 사용중인 제 대화명까지 다 붙여서 오는거 보고 깜놀했습니다. 어차피 제 개인정보는 공공재..신경쓰지 않기로 하면서 오픈챗방에 보이는 드리고와 같은 카카오봇을 한번 만들어보고자 합니다. 이 봇들은 어떤 방식으로 동작하는지 상당히 궁금했었는데 메신저봇R 이라는 것을 통해 많이 알게 되었습니다. 메신저봇R 개발자님께서 구현방식 또한 상세히 설명해두셨는데요. 간단히 작동방식을 요약하자면 다음과 같습니다. 1. NotificationListenerService 통해 알림 데이타 파싱 2. Rhino JavaScript Engine 을 통해 javascript 로직 구현 3. WearableEx..
flutter 개발환경을 새로운 pc에 설치하면서 또 삽질을 해대는 통에 작업하면서 나오는 트러블슈팅을 기록으로 남겨볼까 합니다. 오늘은 윈도우10 OS 환경에서 안드로이드 스튜디오 설치 이후 flutter SDK를 설치중인데 flutter doctor 를 통해 확인해보니 아래와 같은 부분이 발견되었습니다. [√] Flutter (Channel stable, 3.7.12, on Microsoft Windows [Version 10.0.19045.2846], locale ko-KR) [X] Windows Version (Unable to confirm if installed Windows version is 10 or greater) [!] Android toolchain - develop for Andr..
파이썬 프로그래밍에 익숙해지고자 acmicpc 문제를 하나씩 풀어보기로 했습니다 1002번 터렛 문제.. 두 점을 잇는 선이 만들어내는 원에 대해 생각해보면 풀수 있는 문제였습니다 11번의 실행시도 끝에 푼 문제 import math def proc(v_input): x1 = int(v_input[0]) y1 = int(v_input[1]) r1 = int(v_input[2]) x2 = int(v_input[3]) y2 = int(v_input[4]) r2 = int(v_input[5]) xv = pow(x1 - x2, 2) yv = pow(y1 - y2, 2) fv = math.sqrt(xv + yv) if x1 == x2 and y1 == y2: if r1 == r2: print(-1) else: p..