파이썬으로 슬랙 메시지를 보내는 방법을 알아보자. 슬랙에 메시지를 보내는 방법은 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에서 테스트를 작성하는 기본 기능을 제공합니..
앱에 기능이 많아질수록 수동으로 테스트하기 어려워집니다. 자동화된 테스트는 기능과 버그 수정 속도를 유지하면서 앱이 배포되기 전에 올바르게 작동하는지 확인하는 데 도움을 줍니다. 자동화된 테스트는 몇 가지 범주로 나뉩니다:단위 테스트(unit test): 단일 함수, 메서드 또는 클래스를 테스트합니다.위젯 테스트(widget test): 단일 위젯을 테스트합니다. (다른 UI 프레임워크에서는 컴포넌트 테스트라고도 합니다.)통합 테스트(integration test): 전체 앱 또는 앱의 큰 부분을 테스트합니다. 일반적으로 잘 테스트된 앱은 코드 커버리지를 통해 많은 단위 테스트와 위젯 테스트를 추적하며, 중요한 사용 사례를 모두 다룰 수 있는 충분한 통합 테스트를 포함합니다. 이는 아래에서 볼 수 있는 ..
DropdownButtonFormField를 사용하던 중, 다음과 같은 에러가 발생했다.There should be exactly one item with [DropdownButton]'s value: Instance of 'LogCategory'. Either zero or 2 or more [DropdownMenuItem]s were detected with the same value'package:flutter/src/material/dropdown.dart':Failed assertion: line 1604 pos 15: 'items == null || items.isEmpty || value == null || items.where((DropdownMenuItem item..