(TIL) 20220518, 데이터 중심 애플리케이션 설계

2022. 5. 19. 00:50TIL(Today I learned)

반응형

🏴󠁩󠁤󠁪󠁷󠁿Facts(한 것)


  • 데이터 중심 애플리케이션 설계 스터디
  • 알고리즘 문제
  • 운동하기

🏴󠁩󠁤󠁪󠁷󠁿Findings(배운 것)


알고리즘 문제를 풀다가 재밌는 파이썬 문법이 있어서 TIL에 남겨 놓으려 한다.

 

집합과 관련한 문법으로, 파이썬의 경우 set 자료구조를 지원하기 때문에

 

set을 통해서 합집합과 차집합, 교집합을 구할 수 있다.

 

잠시 문법을 보자면 

 

#합집합
list1 = [1, 2, 3, 4]
list2 = [3, 4, 5, 6]

union = list(set().union(list1, list2))

# union = list(set(list1) | set(list2))

#교집합

intersection = list(set(list1) & set(list2))

#intersection = list(set().intersection(list1, list2))


#차집합
compl = list(set(list1) - set(list2))
#compl = list(set().difference(list1, list2))

 

간단하다.

 

영어가 편한 사람들은 union, intersection, difference로 외워도 되고

 

논리연산자가 편한 사람들은 논리연산자로 충분히 암기가 가능하다.

 

이렇게 set자료구조를 사용하면 간단하게 집합에 관한 연산을 해결할 수 있는데,

 

 

 

문제는 다중집합인 경우는 해결하지 못한다.

 

예를 들어 배열 1에는 1, 1, 2, 3, 5 가 들어있고

 

배열 2에는 1, 1, 3, 6이 있다면 이 둘의 다중교집합은 어떻게 될까?

 

[1, 1, 3]이 되어야 정상적으로 작동한 것 아니겠는가?

 

 

이를 해결하기 위해서는 collections 라이브러리가 필요하다.

 

 

import collections

list1 = [1, 1, 2, 3, 5]
list2 = [1, 1, 3, 6]

st1 = collections.Counter(list1)
st2 = collections.Counter(list2)

#합집합
print(list((st1+st2).elements()))

#교집합
print(list((st1&st2).elements())) 

#차집합
print(list((st1-st2).elements()))

 

이렇게 사용하면 문제없이 해결할 수 있다.

 


오늘 코드숨에서 <데이터 중심 애플리케이션 설계> 책으로 스터디를 진행했다.

 

첫시간인 만큼 책 서문과 1장을 간단히 읽어보았고,

 

서문을 통해서 이 책은 어떤 책인지, 어떤 것을 배울 수 있는지를 알 수 있었고,

 

1장에서는 데이터 중심 애플리케이션 설계에서 가장 중요한 3개의 요소인 신뢰성, 확장성, 유지보수성에 대해

 

간략히 알아보았다.

 

 

이책을 읽고 난 다음에는 다음과 같은 목적을 달성할 수 있다.

  • 특정 목적에 맞는 기술을 결정하고 도구를 조합할 수 있다.
  • 데이터 시스템을 확장성 있게 만드는 방법을 알 수 있다.
  • 애플리케이션 고가용성으로 만들 수 있다.
  • 시스템 규모가 커지고 요구사항이 바뀌더라도 오랜기간 쉽게 유지보수 할 수 있는 방법을 알 수 있다.

 

특히 좋았던 부분은

 

이런 급격한 기술 변화에도 변하지 않는 원리가 있다. ~~~ 즉, 데이터 시스템의 동작 방식뿐만 아니라 왜 그런 식으로 동작하며 어떤 질문을 해야 하는지를 알아본다.

 

우리가 데이터를 저장하거나 사용하기 위해서 데이터 시스템을 사용하는데, 어떤 데이터 시스템을 사용할지 결정해야하는 순간이 반드시 온다.

 

이때 우리는 요구사항에 맞게 어떤 동작이 필요하며, 그 필요에 대한 이유를 알 때 올바른 도구를 선택할 수 있다.

 

그리고 이 책에는 이러한 변치않는 원리를 제공해준다.

 

🏴󠁩󠁤󠁪󠁷󠁿Affirmation(자기선언)


  • 매일 알고리즘 문제 1문제 이상 풀기 -> 성공
  • 수업 공부한 것은 일주일 내에 포스팅하기 -> 실패
  • 자바 8버전에 익숙해지기 -> 실패

🏴󠁩󠁤󠁪󠁷󠁿여담


 

몇개월 만에 운동하니 힘들다.

반응형

'TIL(Today I learned)' 카테고리의 다른 글

(TIL) 20220521, 정적 메서드/기본 메서드, 디자인 패턴  (0) 2022.05.22
(TIL) 20220520, 나의 강점.  (0) 2022.05.21
(TIL) 20220517  (0) 2022.05.18
(TIL) 20220515  (0) 2022.05.16
(TIL) 20220513  (0) 2022.05.13