은행이자보다 더 벌어보자는 생각으로 비트코인 자동매매 프로그램을 만들었다.매매 전략을 제외한 나머지 부분들을 모두 공유한 상태이다. 혹시 자동매매 프로그램을 만들고 싶은 분들에게 도움이 될까해서 공유했으니 참고하길 바란다. 프로젝트 시작https://m.blog.naver.com/1986hz/223708545741 개발 환경 구성하기https://m.blog.naver.com/1986hz/223708551909 해야 할 일https://m.blog.naver.com/1986hz/223708563030 업비트 API로 보유 자산 얻기https://m.blog.naver.com/1986hz/223708752902 업비트 API로 지정가 매수하기https://m.blog.naver.com/1986hz/223..
라즈베리파이에서 pandas를 설치하고 실행하니 다음과 같은 에러가 발생했다.%Run main.pyTraceback (most recent call last): File "main.py", line 7, in from util import get_candles_dataframe, get_ma File "util.py", line 2, in import pandas as pd File "/lib/python3.9/site-packages/pandas/__init__.py", line 19, in raise ImportError(ImportError: Unable to import required dependencies:numpy: Error importing numpy: you ..
파이썬으로 슬랙 메시지를 보내는 방법을 알아보자. 슬랙에 메시지를 보내는 방법은 2가지가 있다. WebClinet(Slack Web API) 사용Incoming Webhooks 사용WebClient는 모든 슬랙 API 기능을 사용하는 것이 특징이고, Incoming Webhooks는 메시지만 전송하는 기능만 사용할 수 있다. # 슬랙 설정하기나는 먼저 간단하게 메시지를 전송하는 Incoming Webhooks를 사용하려고 한다. 자세한 설정법은 다음 사이트를 참고하였다. [python] 슬랙 메시지 보내기파이썬으로 슬랙(Slack) 메시지 보내기 저는 주로 자동 프로그램을 작동시키거나 모니터링할 때, 설정해둔 특정 상황이나 오류가 발생하면 슬랙 메신저로 알림을 받아봅니다. 파이썬으로 슬랙 메dev-n..
2차원 배열을 함수의 매개변수로 전달하는 예제는 여러 가지 방법으로 구현할 수 있다. 여기서는 일반적인 2차원 배열을 함수로 전달하는 몇 가지 방법을 알아보자. 1. 열 크기를 명시하여 전달2차원 배열을 함수로 전달할 때, 함수 매개변수에서 배열의 열 크기를 명시해야 한다. 예를 들어, 3x4 배열을 전달하는 경우는 다음과 같이 작성할 수 있다.#include // 함수 정의: 열의 크기를 명시void printArray(int rows, int cols, int arr[rows][cols]) { for (int i = 0; i 위 예제에서는 printArray 함수가 arr 배열의 크기를 알기 위해 rows와 cols를 매개변수로 받는다. 2. 배열 포인터 사용배열 포인터를 사용하여 2차..
2차원 배열을 포인터를 사용하는 방법은 다음과 같다.배열 포인터 사용이중 포인터 사용 # 배열 포인터 사용2차원 배열을 가리키는 포인터는 배열 포인터로 사용할 수 있다.int arr[3][4];int (*p)[4] = arr; 위의 예제에서 p는 배열 포인터가 된다. 배열 포인터를 정의 시 열의 크기(여기서는 4)를 명시해야 한다. 이렇게 만든 배열 포인터는 기존 방식으로 요소에 접근할 수 있다.p[1][2] = 10;int a = p[1][2]; 2차원 배열 포인터를 만든다면 다음과 같이 이중 포인터를 사용해야 한다고 생각할 수 있다. 하지만 arr은 int (*)[4]이기 때문에 int **에 대입할 수 없다.int **p = arr; // 에러 # 이중 포인터 사용이중 포인터를 이용하여 2..
C언어에서 포인터를 상수로 만드는 방법은 3가지가 있다. 그리고 각 상수들은 서로 기능이 조금씩 다르다.포인터 상수 : 포인터가 가리키는 값을 변경할 수 없고, 포인터가 가리키는 주소를 변경할 수 있다.상수 포인터 : 포인터가 가리키는 주소를 변경할 수 없고, 포인터가 가리키는 값을 변경할 수 있다.상수 포인터 상수 : 포인터가 가리키는 주소와 값을 변경할 수 없다. 포인터 상수 (Pointer to Const)const int *p;int const *p; // 이렇게도 가능하지만, 잘 사용하지 않는다. 포인터 상수가 가리키는 주소를 변경이 가능하다.// 포인터 상수가 가리키는 주소를 변경할 수 있다.p = &a;p = &b; 하지만 포인터 상수가 가리키는 값을 변경할 수 없다.*p = 0; /..
단위 테스트에서 웹 서비스나 데이터베이스에서 데이터를 가져오는 클래스에 의존할 때가 있습니다. 이는 다음과 같은 이유로 불편할 수 있습니다:실제 서비스나 데이터베이스를 호출하면 테스트 실행 속도가 느려집니다.테스트가 통과하더라도, 웹 서비스나 데이터베이스가 예상치 못한 결과를 반환하면 테스트가 실패할 수 있습니다. 이를 '불안정한 테스트(flaky test)'라고 합니다.실제 서비스나 데이터베이스를 사용하면 모든 성공 및 실패 시나리오를 테스트하기 어렵습니다.따라서 실제 웹 서비스나 데이터베이스에 의존하는 대신, 이러한 의존성을 "모킹(mock)"할 수 있습니다. 모킹은 실제 웹 서비스나 데이터베이스를 흉내 내어 상황에 따라 특정 결과를 반환할 수 있게 합니다. 일반적으로 클래스를 대체할 다른 클래스를 ..
앱에 더 많은 기능을 추가하거나 기존 기능을 변경할 때 어떻게 앱이 계속 정상적으로 작동하는지 확인할 수 있을까요? 바로 테스트를 작성함으로써 가능합니다. 단위 테스트는 단일 함수, 메서드 또는 클래스의 동작을 확인하는 데 유용합니다. test 패키지는 단위 테스트 작성을 위한 핵심 프레임워크를 제공하고, flutter_test 패키지는 위젯 테스트를 위한 추가 도구를 제공합니다. 이 레시피에서는 test 패키지에서 제공하는 주요 기능을 다음 단계들을 통해 시연합니다:test 또는 flutter_test 의존성 추가테스트 파일 생성테스트할 클래스 생성클래스에 대한 테스트 작성여러 테스트를 그룹으로 결합테스트 실행1. test 의존성 추가test 패키지는 Dart에서 테스트를 작성하는 기본 기능을 제공합니..