괴발개발 성장기
반응형

사이드 프로젝트 28

[golang] 주민등록번호 유효성 모듈 Update - 태어나지 않은 사람은 통과되지 않는다.

# 배경 1993년생이 실수로 7번째자리 수를 3으로 했다. 그리고 나머지 수를 아무거나하니까 통과했다. # 문제가 되는 등록번호 930905-3111111 # 원인 3,4인 경우 생년월이 20년 10월보다는 커야하고 현재 년,월보다는 작아야한다. nowDate := time.Now().Format("0601") nowYear := time.Now().Format("2006") seventhDigit := regNum[6:7] == "3" || regNum[6:7] == "4" if regNum[0:4] >= "2010" && regNum[0:4]

[golang] 주민등록번호 유효성 모듈Update - 한글은 통과되지 않게 하기

# 배경 주민등록번호를 작성하는 사람이 실수로 한글을 넣어서 유효성 검사에 통과하는 경우가 있었다. 그래서 정규식을 도입시켰다. # 통과됐던 예시 9008013sksksk # 정규식 - 앞에 2자리는 0-9까지 사용 가능하다 - 3번째 자리는 0 아니면 1 => 01월~12월까지니까 - 4,6번째 자리는 0-9 - 5번째 자리는 0-3 => 제일 큰 수 31일이니까 - 7번째 자리는 1-9 - 나머지는 0-9 r, _ := regexp.Compile("[0-9]{2}[0-1][0-9][0-3][0-9][1-9][0-9]{6}") 숫자로만 설정을 했다. # 참조 https://github.com/YooGenie/validate-registration-number/issues/7 한글이 통과돼서 정규식을 설..

[마무리] 비동기 프로그래밍 구조

회사는 로그를 따로 SNS를 통하여 DB로 저장한다. 그래서 그부분을 따로 추가 하지 않았다. 그리고 알림톡을 계속 시도하다가 실패하면 DB로 저장한다 (500번대에러) 저장된 DB를 5분 단위로 불러와서 있으면 다시 메시지를 보낸다. 이때 고루틴을 사용한다. go sqsConsumer.Consume(megCh) go service.LoopGetError(xormDb, errCh) 메시지는 메시지대로 돌고 DB는 DB대로 도는 구조로 만들었다. 현재 회사에서는 알림톡 서비스를 마무리했다. 내 깃에서는 전체적으로 구조를 잡았다. 비즈니스 모델에 따라 변경해서 만들면 될 것 같다. 끝!

[Amazon SQS] MissingRegion: could not find region configuration 에러 메시지

# 에러 로컬에서는 발생하지 않았다. aws에 올리고 나서 아래와 같은 에러 메시지가 발생했다. MissingRegion: could not find region configuration 지역을 설정하지 않았다고 한다. # 해결 과정 처음에 sess := session.Must(session.NewSessionWithOptions( session.Options{ SharedConfigState: session.SharedConfigEnable, })) 이 부분에 설정해야 한다는 것을 파악했다. 그래서 session.Options{} 이 부분을 속으로 들어가봤다. aws configure에 지역을 쳤던 기억이 있어서 session.Options{}안에 있는 Config aws.Config 안으로 들어가봤다..

[slack] 슬랙(slack)으로 에러 메시지를 받기 위해서 slack에서 설정하기

1) https://api.slack.com/ 접속하기 Slack은 생산성 플랫폼입니다 Slack은 팀과 커뮤니케이션할 수 있는 새로운 방법입니다. 이메일보다 빠르고, 더 조직적이며, 훨씬 안전합니다. slack.com 2) 오른쪽 상단에 "Your apps" 클릭한다 3) "Create an App" 버튼을 클릭한다 4) "From scratch" 클릭한다 5) App Name : 앱 이름을 정해서 쓴다. Pick a workspace to develop your app in 에는 알림받고 싶은 workspace를 등록한다 (예시는 회사 채널) 그리고 "Create App" 버튼 클릭을 한다. 6) Basic Information 이 페이지에서 밑으로 내리면 Display information에서 설정..

[Amazon SQS] 메시지를 채널에 넣어서 메시지 보내기 구조를 잡았다

# 메인 func main() { megCh := make(chan dto.ReceivedEventMessage) go sqsConsumer.Consume(megCh) for { select { case message := = 500 && code < 600 { // 500번대 에러 } }else{ //메시지 삭제 } } 이 함수에 메시지를 가져온다. code, err = MessageService{}.ProcessMessage(message) ProcessMessage 함수에서는 EventType에 맞게 content를 만들어서 메시지 보내는 함수로 보낸다. code, err = message.SendDonationRegisteredMessage(content) 이메일를 보내는 코드, 문자를 보내는 코..

[Amazon SQS] 서비스를 죽지 않게 for 문을 돌려보자

메시지를 한번 받으면 서비스가 죽는 구조였다. 그래서 for문을 통해서 계속 서비스가 돌아가게 만들어 보자! for { time.Sleep(time.Second * 5) msgResult, _ := service.GetMessages(sess, &queueURL, &timeout) if len(msgResult.Messages) != 0 { for i, _ := range msgResult.Messages { fmt.Println(i, "번째 메시지 바디내용", *msgResult.Messages[i].Body) messageHandle := *msgResult.Messages[i].ReceiptHandle if messageHandle == "" { log.Println("You must supply ..

[Amazon SQS] SQS에서 메시지 삭제하는 과정에서 에러

메시지 하나 보내고 하나 삭제 하는 코드에서는 삭제가 잘되었다. receive-message-service가 죽지 않도록 for문을 돌리는 과정에서 메시지 삭제할 때 에러 메시지가 발생했다. # 에러 메시지 InvalidParameterValue: Value {값}= for parameter ReceiptHandle is invalid. Reason: The receipt handle has expired. status code: 400, request id: 값 메시지를 가져오는 코드에서 VisibilityTimeout 값을 5초로 했다. 그래서 제한 시간이 끝나면서 오류가 발생했다. 대기열에서 수신한 메시지가 다른 메시지 소비자에게 보이지 않게 되는 시간을 설정하는 것이다. 문제는 for문안에 시간을..

[Amazon SQS] SQS로 메시지 보내기

SQS에 메시지 넣었다. 간단히 넣는 방법은 이전 글을 참고하면 된다. 2022.11.15 - [사이드 프로젝트/Amazon SQS] - [Amazon SQS] SNS를 통해 FIFO방식으로 SQS에 메시지 보내기 [Amazon SQS] SNS를 통해 FIFO방식으로 SQS에 메시지 보내기 # 배경 이메일 아니라 큐에 메시지를 보내야 했다. 1) FIFO 방식이 아닌 표준방식 SNS만들고 SQS 연결했다. 이 때 메시지가 잘 보내졌다. 2) SNS에서 FIFO방식으로 만들고 FIFO방식의 SQS도 만들어서 연결 pink1016.tistory.com 원하는 방식대로 메시지를 보낼 수 있다. 알림톡 종류가 여러개여서 구분하기 위해서 eventType를 넣었다. # mian sess := session.Mus..

[Amazon SQS] SNS을 사용하는 것이 맞나?

2023.06.15 - [사이드 프로젝트/Amazon SQS] - [Amazon SNS] SNS와 SQS 연결하는 방법 [Amazon SNS] SNS와 SQS 연결하는 방법 1. SNS를 생성한다. 1) 검색창에 "SNS"를 치면 "Simple Notification Service" 클릭하면 된다. 2) 왼쪽 상단 버튼을 클릭하면 아래와 같은 화면이 나온다. 주제를 클릭한다. 3) 주제 생성 버튼을 누른다 4) 세부 pink1016.tistory.com 1개의 SNS에 여러개의 큐와 서비스 연결하기 1) fifo로 SNS를 만들었다 2) 서로 다른 큐 2개를 구독했다. 3) sns에 메시지를 보냈다 4) 각 큐에 내용이 들어간다. 5) 2개의 receive 서비스를 돌리면 같은 내용이 나온다. 굳이 SN..

반응형