
1. 슬랙봇 DM 및 채널 메시지 연동하여 운영 자동화하기[ 필요한 권한 세팅 ]OAuth & Permissions에서 다음의 최소 OAuth Scope가 필요하다. 아래는 DM 연동을 위해 필요한 scopes이며, 필요에 맞게 추가해주도록 하자. 봇에게 보낸 메시지를 이벤트 형태로 받기 위해 Event Subscriptions에서 다음의 최소 권한이 필요하다.채널에서 봇이 멘션되었을 경우에도 이벤트를 구독하려면 app_mention, private 채널에서 얘기된 메시지를 받으려면 message.groups, public 채널에서 얘기된 메시지를 받으려면 message.channels를 설정해주면 된다. 필요한 상황에 맞게 이벤트 구독 권한을 신청해주도록 하자.RequestURL에는 봇에게 보낸 D..
1. 소프트웨어 엔지니어링이란?구글에서는 이따금 “소프트웨어 엔지니어링은 흐르는 시간 위에서 순간순간의 프로그래밍을 모두 합산한 것이다”라고 말하곤 합니다. 소프트웨어 엔지니어링에서 프로그래밍이 큰 비중을 차지하는 건 틀림없지만 프로그래밍은 결국 새로운 소프트웨어를 제작하는 수단입니다. 여러분이 이 차이를 받아들인다면 자연스럽게 프로그래밍 작업(개발, development)과 소프트웨어 엔지니어링 작업(개발, development + 수정, modification + 유지보수, maintenance)의 차이도 궁금할 것입니다. 시간이라는 요소가 더해지면서 프로그래밍에는 중요한 차원이 하나 늘어서 더 입체적으로 바뀝니다. 정육면체는 정사각형이 아니고 거리는 속도가 아니듯, 소프트웨어 엔지니어링은 프로그래밍..

1. 유용한 MacOS 앱 정리[ Raycast ]Raycast는 macOS용 생산성 앱으로, 빠르게 앱을 실행하거나 다양한 작업을 수행할 수 있도록 도와준다. 사용자는 키보드 단축키로 Raycast를 호출해, 앱 실행, 파일 검색, 시스템 설정 변경, 계산기 사용, 웹 검색 등 다양한 작업을 할 수 있다. Raycast는 Option + Space 키로 실행을 트리거할 수 있다.예를 들어 캘린더 라는 단어를 입력했을 때, 나의 캘린더 페이지로 이동시키고 싶다면 다음과 같이 quick link를 생성할 수 있다. 그러면 다음과 같이 Option + Space로 트리거한 후에 캘린더를 입력하면 원하는 곳으로 빠르게 접속할 수 있다. 만약 url에 쿼리 파라미터를 추가하고 싶다면 {query}로 넣어줄 수..
1. 단위 테스트의 목표단위 테스트를 배우는 것은 테스트 프레임워크나 목 라이브러리 등과 같은 기술적인 부분을 익히는 것에 그치지 않는다. 단위 테스트는 단순히 테스트를 작성하는 것보다 더 큰 범주다. 단위 테스트에 시간을 투자할 때는 항상 최대한 이득을 얻도록 노력해야 하며, 테스트에 드는 노력을 가능한 한 줄이고 그에 따르는 이득을 최대화해야 한다. 두 가지를 모두 달성하기란 쉬운 일이 아니다. [ 1.2 단위 테스트의 목표 ]그럼 단위 테스트의 목표는 무엇인가? 소프트웨어 프로젝트의 지속 가능한 성장을 가능하게 하는 것이다.테스트는 안전망 역할을 하며, 대부분의 회귀에 대한 보험을 제공하는 도구라 할 수 있다.지속성과 확장성이 핵심이며, 이를 통해 장기적으로 개발 속도를 유지할 수 있다. 1.2..

1. 헥사고날 아키텍처에 대하여[ 헥사고날 아키텍처의 도메인 엔티티(Domain Entity) ]우리는 소프트웨어를 개발할 때 어떠한 의미를 갖는 이론적 토대를 바탕으로 개발을 하게 된다. 예를 들어 우리가 헥사고날 아키텍처라는 아키텍처 패턴으로 시스템을 개발한다고 하자.헥사고날 아키텍처(Hexagonal Architecture)는 소프트웨어 설계 패턴 중 하나로, 포트와 어댑터 아키텍처(Ports and Adapters Architecture)라고도 불린다. 이 아키텍처의 주요 목표는 애플리케이션의 비즈니스 로직(핵심 도메인 로직)을 외부 의존성으로부터 분리하여 애플리케이션의 유지보수성, 테스트 용이성, 유연성을 높이는 것이다. 해당 포스팅은 헥사고날 아키텍처를 다루는 것이 아니기에, 단순히 “도메인을..