Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/

이번 여름 방학에 진행했던, Elastic Search와 AWS를 결합한 프로젝트에서 특별상을 수상하게 되었다. 프로젝트 초반에 팀원 분들이 개인 사정으로 모두 나가셨기 때문에, 1인 팀이 되어 버렸지만 오히려 기획, 설계와 구현을 모두 스스로 해볼 수 있었기 때문에 클라우드를 입문하는 경험으로서는 최고였던 것 같다. 다행히 좋은 평가를 받아 이번 12.29일에 AWS 본사에서 진행되는 AWS Rookie Championship 2023에 참여하게 되었다. AWS Rookie Championship 2023은 한 해 동안 대학생들이 진행했던 AWS 프로젝트 중에서 우수한 팀들이 참여해 발표를 하는 대회이다. 이를 위해 남은 기간 동안 AWS 자격증 공부도 하고 서비스가 정말 유저에게 도움이 될 수 있도록..

일단 Window10에서 Ubuntu Desktop과 연결을 해보자. 호스트 전용 네트워크를 만들면 Window10 -> Ubuntu Desktop로는 되지만 반대는 안 된다. Window10은 기본적으로 방화벽이 켜져 있기 때문에, 설정을 살펴보면 들어오는 연결이 막혀 있다. 방화벽을 꺼주면 정상적으로 연결이 된다. Ubuntu server와 win 10도 동일하게 진행이 된다. 이번에는 다른 host only 어댑터끼리 가능 한지 확인해보자. 다른 host only 어댑터는 서브넷이 다르기 때문에 통신이 안 된다. (subnet이 다른 ip를 할당받은 것을 확인할 수 있다.) 호스트 전용 네트워크에서 DHCP가 자동으로 IP를 세팅해 주기 때문에, 통신이 되지 않는다. 이를 위해서 Static IP를..
aws의 ALB(애플리케이션 로드밸런서)를 생성하다보면 스키마(체계)를 선택할 때가 있다. 선택에 따라 internal load balancer 혹은 internet-facing load balancer로 생성이 되고, 생성 후에는 변경할 수 없다. 두 종류는 완전히 다르기 때문에, 원하는 방식에 따라 선택해 주어야 한다. internet-facing internet-facing Load Balancer는 (LB의 컴퓨팅 노드들이) public ip를 가지게 된다. DNS 서버에는 이 IP들이 등록이되어, 외부 인터넷으로 부터 요청을 받을 수 있게 된다.이때의 DNS 서버는 AWS의 자원이 아니여도 가능하게 된다. public ip로 노출된 Load Balancer가 라우팅을 해주기 때문에 대상 그룹의 ..

Elastic Search에서 search를 진행할 때 매칭되는 것이 너무 많으면, 요청한 측에서 처리하기가 곤란할 수 있다. 이를 위해서는 페이징 기술이 필요한데, Elastic search에서는 3가지의 페이징 기능을 제공한다. 각각은 장단점이 있기 때문에 상황에 맞게 선택할 필요가 있다. 3가지의 장단점에 대한 내용은 아래의 블로그 게시글이 잘 정리하고 있으니 참조하자. https://blog.naver.com/occidere/222686762033 [Paging] Elasticsearch 의 페이징 방식 3가지 요약 Elasticsearch 의 페이징 처리 방식 3가지 1. Random access with size & from params - 매번 검색할... blog.naver.com 이번에 ..

채용 공고를 빠르게 검색하는 용도로 Elastic Search를 사용하고 있는데, 채용 공고는 몇달이나 지난 것은 의미가 없기 때문에 날짜가 가까울수록 높은 Score를 낼 수 있도록 만들어야 한다. script_score를 사용하면 부분 텍스트나 숫자로 score를 만들기 때문에, Decay functions을 사용해야 한다. https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html#function-decay Function score query | Elasticsearch Guide [8.11] | Elastic Keep in mind that taking the log() of ..

기존에는 한 폴더 내의 변경 만으로도 모든 폴더가 각각 빌드되는 Workflow를 적용하고 있었다. 아무리 Public Repository는 Github Actions가 무료라도 이런 비효율성을 참을 수가 없으니 바꾸어 보자. https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onpushpull_requestpull_request_targetpathspaths-ignore Workflow syntax for GitHub Actions - GitHub Docs A workflow is a configurable automated process made up of one or more jobs. You m..

Local에 설치하거나 라이브러리를 사용하는 것이 아니라면, Elastic Search로의 endpoint URL로 직접 요청을 보내야 한다. 이를 위해서 HTTP를 사용한다. (HTTP를 편하게 작성하기 위해서 PostMan를 사용해 보자.) https://www.postman.com/downloads/ Download Postman | Get Started for Free Try Postman for free! Join 25 million developers who rely on Postman, the collaboration platform for API development. Create better APIs—faster. www.postman.com 1. 보안 인증 일단 엔드포인트로의 접근을 위..

Lambda를 비동기로 호출해야 할 경우 AWS SDK(python용 sdk는 boto3)를 이용해서 Lambda 함수를 호출할 수 있는데, 이를 그대로 Lambda에서 사용하면 다른 Lambda 함수를 호출할 수 있게 된다. boto3의 경우, 라이브러리 업로드 없이도 import 가능하므로 lambda에서의 사용도 편리하다. 이때 고려해 볼 문제로는 Lambda가 15분의 시간제한이 있다는 것이다. 호출한 후 값의 반환을 기다릴 필요가 없는 함수를 사용한다면, 이를 동기식(응답 대기)으로 호출하는 것은 시간과 비용에서 비효율적이다. 물론 AWS SDK는 이미 Lambda를 비동기식으로 호출하는 api 옵션을 제공한다. Invoke API https://docs.aws.amazon.com/ko_kr/l..

일단 봇은 생성되어 있는 상태로 가정하고 기술하겠다. 1. 1:1 Channel 생성 슬랙에서는 1대 1 대화인 DM도 하나의 채널로 간주된다. 따라서 봇이 유저와 채널을 생성해서 메시지를 post 해야 한다. 이를 위해 conversations_open() 함수를 사용해 주자. app.client.conversations_open("Either channel or users must be provided") https://api.slack.com/methods/conversations.open#markdown conversations.open API method Opens or resumes a direct message or multi-person direct message. api.slack.com..
문제 https://leetcode.com/problems/longest-unequal-adjacent-groups-subsequence-ii/ Longest Unequal Adjacent Groups Subsequence II - LeetCode Can you solve this real interview question? Longest Unequal Adjacent Groups Subsequence II - You are given an integer n, a 0-indexed string array words, and a 0-indexed array groups, both arrays having length n. The hamming distance between two strings of lee..