Kafka vs RabbitMQ & MSA환경에 kafka를 적용한다면? (with 예제코드)
·
DevOps/devops
대규모 시스템이란방대한 양의 데이터를 처리하고 수 많은 사용자의 요청을 동시에 처리할 수 있는 시스템이러한 시스템 설계는 확장성, 유지보수성, 성능, 안정성 등을 고려MSA 는 대규모 시스템 설계 아키텍쳐 패턴RabbitMQ,Kafka 같은 메시징 시스템을 활용하여 각 서비스 간의 효율적인 데이터 통신과 확장성을 보장메세징 시스템?Queue 형태로 메세지를 저장. 송신자 (Producer)가 메세지를 큐에 넣으면, 수신자(Consumer)는 자신의 속도에 맞춰 Queue에서 메세지를 처리.Message Broker를 사이에 두고, 송신자(Producer)와 수신자(Consumer)가 간접적으로 데이터를 주고 받음MSA 환경에 적용한다면송신자 (Producer): MSA에서 메세지를 발행하는 곳 (e.g...
Leethub v2 수정해서 NOTES.md 도 업로드 하기
·
devlog/etc
new UI가 적용되면서 기존에 동작하던 Leethub 앱이 동작하지 않게 되었다.이에 따라서 여러 개발자들이 v2, v3 등등 개선한 버전을 공유하고있다! 대부분의 케이스에서는 잘 동작하는 것 같다. 👍이렇게 동작하지 않는 이유로 검색하다가, algorithms 풀이를 한 repo에서 관리할수있게, 그리고 이걸 difficulty 기준으로 폴더 정리해서 나눌수있게! 해주는 블로그 글을 발견했다. 이렇게 정리하면 기존에 알고리즘 문제 풀이 하는 repo도 싹 정리가능해서 적용했다! 잘됨!잘 쓰다가, 문득 notes도 같이 업로드 되었으면 좋겠다! 는 생각에 기존 코드를 좀 뜯어 보기 시작했다.나는 지금 V2버전을 수정해서 사용하고있는데, 이 코드 기반으로는 notes가 업로드 되는 부분이 생략되어있다...
모바일, PC 화면 Nginx로 분기 처리하는 방법
·
DevOps/nginx
위의 네이버 화면 처럼, 접속하는 디바이스에 따라 모바일, PC 화면으로 분기 처리를 해야함! Proxy로 사용되는 Nginx로 해보자! 어떻게? error page named location header에 있는 user-agent 를 기반으로 분기 처리 error page 란? 에러가 발생한 요청을 지정한 uri로 redirect 하는 nginx module 400대 에러나 500대 에러의 redirect 설정을 하기 위해 보통 사용! → 하지만! 이미 사용하고있는 에러코드를 덮어쓸수는 없으니, error code 418을 사용해서 PC,mobile 분기 처리를 하도록 하겠다! 418 에러코드가 뭐지?? client error 응답 코드로 서버가 커피 내리기를 거부한다는 의미를 가진다 - 왜냐면 서버는..
[LeetCode] 347. Top K Frequent Elements
·
BE/algorithm
문제 링크 https://leetcode.com/problems/top-k-frequent-elements/description/ Intuition 주어진 array에서 가장 중복이 많은 k개의 element를 결과값으로 반환 그렇다면 정렬하고, 중복을 찾기 위해선 hash를 써야겠군 Approach hash를 쓰기 위해서는 python의 dictionary를 사용 가장 많이 중복되는 element 별로 저장된 dictionary를 그 후에 정렬! 정렬된 중복_숫자_맵 에서 k개의 key값을 반환 dict에서 get()함수는 parameter가 2개! 두번째 param은 optional로 조회하는 key 값이 없는 경우에 반환할 값을 설정 numMap[num] = numMap.get(num,0) → nu..
[LeetCode] 49. Group Anagrams
·
BE/algorithm
문제 링크 https://leetcode.com/problems/group-anagrams/description/ Intuition 동일한 길이를 가지고 동일한 문자열 구성을 가져야 하는 anagram! 그럼 저번에 문제 풀이 했을 때 처럼 set을 사용해서 풀어볼까? 그런데 이 전 문제와 다르게 grouping 해야하는 문제니까 hash 를 써야할듯 Approach 단어가 3글자라고 주어진 input에서 3개 묶음의 단어가 다 있으리라고는 보장 X 있는 element를 기준으로 hash에 저장해서 확인해야함 python에서 hash는? → dictionary! dict의 key 값은 정렬한 값으로 저장 → 모든 element가 정렬된 값을 기준으로 hasKey() operation을 해야하므로 valu..
[LeetCode] 1. Two Sum
·
BE/algorithm
문제 링크 https://leetcode.com/problems/two-sum/description/ Intuition 주어진 array의 element 중에 target 값으로 합의 수가 맞는 조합을 찾아야 하면..모든 element를 합해서 확인해 보자 first + second index element의 합을 확인하고 넘어가야 한다 Approach 당장 생각나는건...outer loop에서는 index 0 부터 좌항에 들어가는 인자를 iterate하고 inner loop에서는 우항에 들어가는 인자를 iterate 해서 둘의 합을 확인하는 방법 Complexity Time complexity: O(N^2) Space complexity: Code class Solution: def twoSum(sel..
[LeetCode] 242. Valid Anagram
·
BE/algorithm
Intuition Anagram은 주어진 문자열의 character를 재배치 했을 때에도 다 같은 구성의 character를 가지는 단어 혹은 문구를 뜻한다고 한다. 그러니 길이가 같아야지? 같은 구성의 character를 가져야하겠네? Approach 같은 구성의 문자를 가진것을 어떻게 비교하면 좋지? 정렬한 후에 같은지 확인하면 효율적이지 않을까 길이가 다른 경우는 먼저 False를 반환 하는게 좋을 것 같다 Complexity Time complexity: O(nlogn) 평균 / W.C (= worst case) 이유는 python의 sorted() 함수는 Timesort라는 정렬 알고리즘을 사용 Timesort 알고리즘이란? insertion sort 와 merge sort의 장점만을 합쳐서 만..
[LeetCode] 217. Contains Duplicate
·
BE/algorithm
Intuition python 으로 문제 풀이를 하기로 했으니 counter 함수를 사용해서 풀이하면 될것같다! Approach counter 함수로 첫번째 풀이를 했는데, time limit exceeded 가 떴음 두번째 제출에서는 set 자료구조를 사용해서 풀이 set은 중복을 허용 X 주어진 data set을 set에 넣으면 중복이 사라져서 전체 사이즈가 달라짐 set의 사이즈와 nums의 사이즈를 비교! Complexity Time complexity: first attempt: O(N^2) list.count() 함수는 내부적으로 모든 PyObject를 iterate 하고, 주어진 입력값과 compare 하기 때문에 O(N) complexity를 가진다 참고: https://stackoverf..