728x90

서두

일단 시작하기전에 Slack API 를 연동할 방법을 곰곰히 생각해보았다. 킹치만 우리에게는 구글신이라는 것이 있기에 굳이 삽질을 할 필요가 없다.

 

1. Slack Api 에 들어간 다음 Sign in 을 한다 

 - 여기서 당연히 Account 가 없으면 가입을 해야되는 부분이고, 나는 일단 프로젝트를 위해서 그냥 만들어줬다.

 

2. Create App 을 한다

타입이 2가지가 있는데, (제 배에는 구멍이 2개죠..)  Slack 에서 만들어놓은 Basic UI 방식이 있고, 그 이외에 매니페스트 방식이 있다. 기본적으로 구글신에서 안내하는것은 Basic UI 를 따르니까 보고 쓱싹 생성하자.

manifest  쓰면 앱에 관한 설정의 대부분을 관리할 수 있따는 겁니다. 근데 YAML 이랑 JSON 을 때려잡아야 하죠

 

 

다 만들어서 아랫쪽으로 내려보면 이렇게 설명이 있다.

Part2

여기서 Slack 을 일종의 Bot 용도로 써서 알리미 용도로 쓸거니까 추가 Method 기능에서 Bot을 얌채같이 클릭해준다.

 

 

 

여기서 Install App 을 해서 상호작용을 하려면, 기본적으로 Permission 이 있어야 한다. (리눅스 기반에서는 다 그렇잖아? 서버도 그렇구)

 

 

이렇게 OAuth & Permission 탭에서 하단부로 들어가면 Bot 에 대한 Permission Scope 를 정할 수 있는 곳이 보인다.

이게 100% 맞는지는 모르겠지만, 니가 Bot 을 무슨 용도로 쓰고, Bot에 어떤 권한을 줄꺼니로 느낌이 든다

"Add an OAuth Scope" 를 클릭하면 콤보박스가 하나 뜨는데, 거기서 필요한 Permission 을 골라주면 되겠다.

내 경우는 채널에 대한 메세지를 알람처럼 보낼 것이기 때문에 chat:write 을 부여했다.

 

그러면 위와 같이 Bot 이랑 Permission 에 설정했다고 체크박스와 함께 화려한 불빛이 나를 감싼다.

하단부의 Install your app 에서 workspace 에 설치를 진행했다.

 

이제 Slack API 에서 내가 만든 App 에 메세지를 보낼 수 있다. (물론 메세지 이외에 다른 짓도 하고싶다면, API 의 사용 용도에 따라서 삽질을 진행하면 되겟다.)

 

 

Part3

Incomming Webhooks 활성화 하기

 

일반적으로 Bot 토큰이나 등등에 대해서 안뜬다면 그냥 Incomming Webhook 에 들어와서 저기 위에 있는 Off를 On으로 바꿔주면 나같이 위에서 삽질을 했다면 퍼미션 변경한다고 뜬다. 진행해보자

 

 

그리고 번외의 채널 리스트 불러오기도 구현해보자

이 부분에는 Scope 에서 channels:read 퍼미션이 필요하다.

728x90

Admin 페이지에서 작동하는 부분중에, Comment 에 대한 부분에서 Reporting 된 처리를 하는 것은 정상적으로 작동했지만, Posting 에 대해서는 정상적으로 작동하지 않는 사태가 벌어졌다.

 

Log 를 살펴본 결과, SQL statement Error 로 보고 있는데, Update 구문에서 Entity 를 정상적으로 인식하지 못하고 있다.

 

예를 들어보면

UPDATE report_posting rp SET rp.report_status = 2 Where rp.relation.posting.id = xxxxxx

인 부분에서 앞에 표시한 부분을 정상적으로 인식하지 못하고 있다.

 

일단 이 부분에서 Error Code 기반으로 추적해보자면, 예약어나 SQL 문을 잘못 썼거나 하는 등의 상황에서 발생한다고 하는데, 아무리 봐도 구문상 틀린건 잘 보이지 않는다.

 

그래서 이걸 Native Query 로 바꿔볼까 하다가, 그러면 JPA 의 맛을 잃어버리니까 또 고민중이다.

확실한건 로그 기반으로 추적해서 봣을 때에, Entity 에서 약간의 다른 점이 있다면 

 

report_posting 의 경우는 Enum 기반의 posting_type 필드를 가지고 있다는 것이고

report_comment 의 경우는 posting_type 따위는 개나줘버리긴 했는데 사실 그게 문제가 아니라

 

만약 네이밍이 문제가 될려면 네이밍 부분을 잡아서 찍어줘야 하는데 뭐가 문제인지 고민중이다.

728x90

https://www.youtube.com/watch?v=IiZZAu2Qtp0 

 

해당 Youtube 에서는 기초적인 Elastic Search 의 공사에 대해서 설명하고 있다.

 그러니까 기본적으로 하는 공사들에는 몇 몇가지가 있는데

 

일단 가장 첫 번째로 하는 것은

ELS 를 추상화한 클래스를 상속받아서 ELS에 대하여 Config 를 설정하는 별도의 Class를 만드는 것

(이 부분이 굉장히 중요하다 할 수 있을 것 같다.)

 

만약 데이터베이스를 사용하는 와중에 아래와 같은 가정이 있다고 가정해보면

 

1. AWS Aurora 를 사용하는 상태

2. 더욱 빠른 검색을 위해서 ElasticSearch 를 추가적으로 구현해야 하는 상태라면

 

JPA 에서는 MySQL 에 대한 package 를 별도로 지정해줘야 할 것이고, ELS 를 따르는 package 를 별도로 지정해줘야 할 것이다. 

 

그리고 나서 일반적으로 이루어지는 연계 사항들을 작성하게 되는데

Document Annotation과 함께 Class 내부의 Properties 를 정의하고, indicies 를 정의하여 인덱스화하는 것

 

그리고 나서 Person Class 가 정의되었다면, 그 Class 의 Properties 들을 활용하여 저장하는 Repository 에 대한 정의

그리고 Repository 에서 구현된 Method 를 호출하여 사용하는 Service

그리고 나서 REST 형식을 이용해 Service 에서 정의된 함수들을 호출하여 사용하는 Controller 를 정의한다.

(당연히 REST 니까 여기서는 GET, PUT, Delete Mapping 등이 전부 작용할 수 있다.)

 

728x90

환경설정 (Maven)

1) h2 DateBase 설치 및 시작
2) Maven 프로젝트 생성
3) pom.xml에 라이브러리 추가
4) presistence.xml 생성

1. h2 DB 설치 & 시작


  • 실행
    : h2.sh 파일을 실행하려면 chmod 755 h2.sh 수행해야 함

  • DB 생성 (최초 1회만 해주면 된다)
    : 경로가 ~/test 이니까 홈에 test.mv.db가 생성된다
    (안되면 url뒤에 키값을 확인해보자)

  • DB 들어가기
    : 최초 생성 이후에는 tcp로 파일에 접근

2. Maven 프로젝트 생성

  • Maven 선택 및 Java 버전 선택

3. pom.xml에 라이브러리 추가

4. persistence.xml 생성

  • persistence.xml란 ?
    : JPA를 사용하기 위해 참조되는 파일로 위치가 참조 정해져 있음
    (반드시 main/java/resource/META-INF/persistence.xml)
  • persistence-unit -> EntityManagerFactory 이름
  • hibernate.dialect 에 사용할 DBDialect를 변경할 수 있음
    ex) MySQLDialect 
  • JPA에 대한 옵션을 추가할 수 있음

JPA 구동방식 & 사용


  • EntityManagerFactory를 가져오기
  • EntityManager 꺼내기
  • Transaction을 시작
  • 쿼리 내용을 수행
  • Transaction 종료
  • EntityManager  EntityManagerFactory닫기

JPQL ?

  • Table이 아닌 객체를 중심으로 하는 객체 지향 쿼리
  • 검색을 할 때도 테이블 이 아닌 Entity 객체를 대상으로 검색
  • SQL 문법과 유사
  • SQL을 추상화해서 특정 DB SQL에 의존하지 않음

+ Recent posts