-
[Design Patterns] 옵저버 패턴이란?General/🟢 General 2022. 2. 18. 00:01
키워드 : 옵저버, 구독, 이벤트, 알림, 폴링 옵저버는 Subscriber, Listener 등으로도 불립니다. 옵저버는 이벤트가 발생하면 수행할 동작을 정의해놓고 옵저버블을 감시, 구독합니다. 옵저버블은 자신을 구독하려는 옵저버를 등록하고 (register) , 이벤트가 발생했을때 등록된 옵저버들에게 알려줍니다.(notify) 위와 같은 방식으로 옵저버는 이벤트에 바로 반응할 수 있습니다. 폴링이라는 개념과 비교하여 이해해볼까요? 폴링은 옵저버블이 옵저버에게 알려주는 대신, 옵저버가 직접 이벤트가 발생하는지 주기적으로 감시하는 방법을 사용합니다. ( for , while 등을 떠올리면 됨 ) 하지만 주기가 아닐때 발생한 이벤트를 알지 못하고, 발생하지 않을 때도 자원을 점유하고 있기 때문에 오버헤드가..
-
[SOLID] 의존관계 역전 원칙이란?General/🟢 General 2022. 2. 17. 23:46
Dependency inversion principle 고수준의 모듈이 저수준의 모듈에 직접 의존하지 않고, 인터페이스에 의존한다. 저수준의 모듈도 이 인터페이스를 의존한다. 저수준의 입장에서 의존 받는 입장에서 의존 하는 입장으로 관계가 역전된다. 처음보면 이해가 잘 가지 않습니다. 아래 설명을 한번 볼까요? High Level Module 과 Low Level Module 보통 더 많은 정보를 가지고 있으면 하이레벨 ( 동물원 ) 상대적으로 적은 정보를 가지고 있으면 로우레벨이라고 설명합니다. (동물들) 정리하자면 동물원은 펭귄, 사자, 코끼리에 의존하고 있습니다. 이것이 보통은 자연스러운 관계입니다. 하지만 ... 프로그래밍 세계에서는... 양이나 소, 토끼 등 동물들이 계속 추가되면 동물원은 더 ..
-
[Git] Rebase 사용하기General/🟢 General 2022. 2. 13. 14:57
안녕하세요🐶 이번 시간에는 개념은 알았지만 실제 적용은 많이 해보지 않았던 rebase 에 대해 정리해보았습니다. 이제부터라도 깃이 제공하는 다양한 기능들을 제대로 사용해보려구요. 리베이스는 어려운 개념이 아닙니다. 그럼 시작할게요! 무엇을 하는 명령인가? 베이스 커밋을 갈아치기 한다. base 를 다시(re) 정한다. 목적 불필요한 병합 커밋을 줄여서 그래프를 깔끔하게 보이게 할 수 있다. 활용할 수 있는 상황 upstream 의 main 브랜치로 풀 리퀘스트를 보내려고 하는데, merge conflict 가 발생한다. 보통과 같은 상황이면 자신의 작업 브랜치로 main 을 머지해서 충돌을 해결한후, 다시 pr 을 보내면 된다. ( fast-forward merge 가 될 것 이다 ) 이렇게 하면 원래..
-
문자열 인코딩이란?General/🟢 General 2022. 2. 12. 10:55
위와 같이 웹 페이지가 알 수 없는 문자로 보이신 경험 있으신가요? 문자열 인코딩과 관련이 있는 문제입니다. 문자열 인코딩 문자열 인코딩이란, 사용자가 입력한 문자를 컴퓨터가 해석할 수 있는 신호로 변환하는 것입니다. 이 때, 신호로 변환하는 규칙이나 기준이 있어야할 것 입니다. 어제는 'a' 라는 문자를 0010 으로 저장하기로 했다가, 오늘은 0011 로 저장한다면 어제 저장해 놓은 글자는 오늘 알아볼 수 없게 될 것입니다. 이렇게 신호로 변환하는 규칙을 문자 집합 이라고 부릅니다. 가령 'a' 는 비트열 16진수 61로 저장하기로 정한다!!! 라는 규칙과 같은 것입니다. 저장된 문서의 인코딩 규칙을 알고 있고, 해당 규칙을 이해하고 있는 컴퓨터는 16진수 61을 만나면 'a' 라는 문자를 화면에 잘..
-
[책샀어요] 실용주의 프로그래머 절판과 자본주의의 쓴맛일상/💰 내돈내산 2022. 2. 7. 22:45
최근 조엘 온 소프트웨어를 다 읽고, 새로 읽을 책을 고르던 중 눈에 자주 밟힌 책이 있었습니다. 실용주의 프로그래머 라는 책인데요. 많은 유튜버와 블로그에서 추천해주는 책이어서 이번 기회에 읽어보려고 합니다. 문제는 2021년 12월 31일 절판되었다는 것인데요. 알라딘, yes24, 교보문고 눈을 씻고 찾아봐도 새상품을 파는 곳은 없었습니다. 판권 종료로 더이상 생산할 계획이 없다는 메시지도 붙여놓았더라구요... 그래서 중고를 구입하려고하니 가격이 당근에도 중고나라에도 없었답니다 :) 동네 도서관이나 대학 도서관에서 빌릴 수도 있겠지만, 코시국이기도하고 남의 책을 읽는 것을 썩 좋아하지 않아서 어쩔 수 없이 알라딘 중고매장에서 그나마 저렴한 가격으로 구입했습니다. 아직 학생이었다면 절대 못샀을 것 같..
-
[1%의 네트워크 원리] 프로토콜 스택의 내부 구성General/🕸 Network 2022. 2. 6. 22:34
안녕하세요🐶 이번 주말에 저는 선물 받은 조엘 온 소프트웨어 라는 책을 읽었습니다. 책 내용 중 '허술한 추상화의 법칙' 이라는 주제에 대해 보게 되었는데, 작가가 추상화의 예로 TCP 와 IP 를 들었습니다. 안정적인 통신을 보장하는 TCP 는 사실 불안정한 IP 를 기반으로 이루어지며, 이것이 바로 추상화의 마법 🧙♀️ 이라고 설명합니다. ( 실제 내용은 추상화를 옹호하려는 취지의 글은 아닙니다. ) 흥미로운 부분이기도 했고, 오랜만에 네트워크 개념도 복습할 겸 리마인드 하는 마음으로 당분간 해당 부분을 다시 정리해볼까 합니다 :) 구성 요소를 중심으로 관심 있는 부분 살펴보기 애플리케이션 영역에는 네트워크 애플리케이션과 소켓 라이브러리가 있다. 윗 부분이 아랫부분의 기능을 사용하여 목적을 달성하는..