카카오 톡 API에는 여러가지 한계가 있었다. 무엇보다도 자신에게 보내는 메시지는 알림이 오지 않았다. 그건 팀원으로 추가한 타인에게 보낼때도 마찬가지였다. 친구 목록을 얻기 위해서는 검수를 받아야 한다고 하는데 그 과정이 잘 보이지 않았다. 우리나라 최고에 가까운 IT 업계의 문서화 수준이 이 정도라는건 매우 아쉬운 일이다. 너무 많은 활용예를 고려해서인지 사용법이 simple하지가 않았다. 시간만 많이 소모하다 결국 slack API를 활용하기로 결정했다. 훨씬 쉽고 간단하게 구현할 수 있었다. 카카오 API에서 필요한 복잡한 로그인 과정 따윈 필요 없었다. 먼저 slack-sdk를 설치한다. pip install slack-sdk 이어서 hubot token을 준비하고 보내려는 channel id는..

생각보다 번거로웠다. 나에게 메시지 성공하기까지 한 몇 시간 걸렸네... 1. 내 애플리케이션에서 앱을 만든다. https://developers.kakao.com/console/app 2. 카카오 로그인을 활성화한다. 그리고 Redirect URI도 적당히 입력한다. 나는 다음과 같이 설정했다. 3. 카카오 로그인 -> 동의 항목에서 "카카오톡 메시지 전송"을 설정한다. 4. 브라우저에서 다음 링크로 연결한다. https://kauth.kakao.com/oauth/authorize?client_id={REST API 키}&response_type=code&redirect_uri=http://localhost:8080/kakakoredirect 여기서 REST API 키는 앱 설정 -> 앱 키에서 확인 ..
한글 입력이 바로 노션에 입력되지 않고 한글자씩 입력이 되는 답답한 상황이 재현되곤 한다. 나의 경우는 노션 에디터가 활성화된 상태에서 windows 키를 두 번 누르니까 해결되었다.
CompletableFuture 클래스는 Java 8에서 추가된 비동기 프로그래밍에 유용한 클래스입니다. CompletableFuture는 Future 인터페이스의 확장으로, 비동기식 계산을 지원하며, 결과를 반환하기 전에 블록하지 않는 것이 가능합니다. 또한 CompletableFuture는 비동기 작업을 체이닝하여 연결할 수 있으므로 매우 유용합니다. CompletableFuture를 사용하여 비동기식으로 실행하려는 작업을 선언합니다. 그런 다음 CompletableFuture의 thenApply() 또는 thenAccept() 메서드를 사용하여 작업이 완료되면 결과를 처리합니다. 또한 thenCompose() 메서드를 사용하여 두 개의 CompletableFuture를 체인으로 연결하고 결과를 결합..
After Effects에서 스크립트를 작성하는 것은 비주얼 이펙트, 모션 그래픽 및 애니메이션을 자동화하고 향상시키는 데 매우 유용합니다. 이를 통해 작업 프로세스를 자동화하고 시간을 절약할 수 있습니다. After Effects 스크립트란? After Effects 스크립트는 Adobe ExtendScript 프로그래밍 언어를 사용하여 작성된 자바스크립트 파일입니다. 이를 사용하면 After Effects 프로그램 내에서 다양한 작업을 자동화 할 수 있습니다. 스크립트를 사용하면 특정 작업을 자동화하거나 일괄 처리 할 수 있습니다. ExtendScript 언어 이해하기 After Effects에서 사용되는 스크립트는 Adobe ExtendScript 언어로 작성됩니다. ExtendScript는 ECM..
Elasticsearch에서 "group by" 작업은 데이터 집계 작업의 일부입니다. 이를 위해 Elasticsearch는 Aggregation(집계) 기능을 제공합니다. Aggregation은 데이터를 그룹화하고 분석할 수 있도록 허용합니다. 다음은 Elasticsearch에서 "group by" 작업을 수행하는 방법입니다. 필드 기준으로 데이터 그룹화하기 Elasticsearch에서는 특정 필드를 기준으로 데이터를 그룹화 할 수 있습니다. 예를 들어, 다음과 같이 사용할 수 있습니다. GET /sales/_search { "size": 0, "aggs": { "group_by_region": { "terms": { "field": "region.keyword" }, "aggs": { "average..