웹뷰로 시작되는 nestJS로 똑똑하게 서류 스크래핑하기
·
개발/Server
AS ISService Webview Scraping Webview메시지를 통해 요청을 통해 주고 받는 구조문제점 : 어떤 메시지를 주고 받을지 사전에 커뮤니케이션이 필요(커뮤니케이션 비용 증가) + 메시지가 화면에 종속되어 있어 테스트가 어려움 + 디버깅과 테스트가 어려움요구사항 : 병렬처리 가능 + 이슈 발생 시 디버깅 용이 + 서비스의 시작과 끝이 명확해지도록 + 모두의 생산성이 올라가는 방향Message vs API메시지 스펙 정의를 위한 사전 협의 필요 vs 표준화된 스펙으로 통신 때문에 협의 불필요서비스 개발에 필요한 비용이 큼 vs 서비스 개발에 필요한 비용이 적음유지 보수가 난해하고 어려움 vs 서비스 유지 보수가 상대적으로 쉬움**나의 생각 : 결국 메시지를 도입하는 것은 비동기적 처리..
지속 가능한 소프트웨어
·
개발
비즈니스 로직- 'Business logic'은 service에 구현한다. (일반적인 대답) 그렇다면 business logic은 뭔데?!- 구현 로직과 비즈니스 로직은 다르다.- 비즈니스 로직은 흐름을 자연스럽게 이해할 수 있는 수준의 로직(상세한 구현 로직은 없어야함) 또한 비즈니스 로직을 위한 협력 도구들을 연계해주는 역할레이어- presentation(노출에 대한 책임)/business(비즈니스 로직  처리)/implement(비즈니스 로직을 처리하기 위한 도구, 구현 로직)/data access layer(cache, db, file system,...)- 레이어의 참조방향은  왼쪽부터 오른쪽! 또한 역류 참조 금지!- 레이어의 참조는 건너 뛰기 금지!- 동일 레이어가 참조는 불가능... 예외적..
0. HTTP란?
·
개발
0. HTTP? Hypertext Transfer Protocol(HTTP)는 어플리케이션 레이어(응용계층)가 HTML과 같은 하이퍼 미디어 문서들을 전달하는데 사용되는 프로토콜이다. HTTP는 client-server model을 채택하여 client가 연결을 요청하고 이에대한 응답을 받을 때까지 기다리는 방식을 사용한다. 그러므로 HTTP는 stateless protocol이어서 서버는 두 요청 사이에서 state를 유지하지 않는다.1. Identifying resources on the webHTTP request의 타깃은 resource라고 부른다. Resource는 문서, 사진 그리고 다른 모든 것들이 될 수 있다. 이러한 Resources는 URI(Uniform Resource Identifi..
[대규모 시스템 설계 기초2] 1장 근접성 서비스 (2)
·
개발/Server
지도 주변 검색 방법 방안 1: 2차원 검색주어진 반경으로 그린 원 안에 놓인 사업장을 검색하는 방법이다. 가장 직관적이지만 지나치게 단순하다는 문제가 있다. 특히나 이를 SQL문으로 옮기게 되면 테이블 전부를 읽어야하므로 비효율적이다. index를 만드는 만들어 개선해보아도 데이터가 2차원적이므로(위도, 경도) 칼ㄹ럼별로 가져온 결과도 여전히 엄청나게 많다. 때문에 index를 추가하는건 한 차원의 검색 속도만 개선할 수 있다.  지리적 정보에 색인을 만드는 방법은 두종류가 있다. 첫번째는 해시 기반 방안으로 균등격자(even grid), 지오해시(geohash), 카르테시안 계층(cartesian tiers)등이 있다. 두번째로는 트리 기반 방안으로 쿼드트리(quadtree), 구글 S2, R 트리 ..
[대규모 시스템 설계 기초2] 1장 근접성 서비스 (1)
·
개발/Server
들어가며: [가상 면접 사례로 배우는 대규모 시스템 설계 기초1] 책을 우연히 읽고 배우게된 내용이 많아 [가상 면접 사례로 배우는 대규모 시스템 설계 기초2]도 바로 구매하여 읽게 되었다. 어떤 서브스에 대하여 시스템이 어떤 구조로 설계되어 있고 그런 구조로 설계된 근거들에 대해서 단계 단계 설명한다. 특히나, 새로운 feature에 대하여 개발할 때 참고하여 적용할만한 내용을 많이 담고 있어 읽으면서 이미 구현해본 내용에 대한 아쉬움과 앞으로 적용해볼만 사항들을 정리해볼 수 있을 것 같다.  1장 근접성 서비스(proximity service) 근접성 서비스는 음식점, 호텔, 극장, 박물관 등 현재 위치에서 가까운 시설을 찾는데 이용된다.   1단계: 문제 이해 및 설계 범위 확정 서비스를 구현하기 ..
Typescript Custom Decorator
·
개발
데코레이터란 (Decorator)? class, method, accessor, property, parameter에 사용할 수 있는 선언의 한 종류이다. `@Decorator` 형식으로 사용을 할 수 있다. 이는 런타임에 호출되는 함수이다. 데코레이터 합성 데코레이터를 사용하다보면 호출 순서에 대해 혼란스러운 순간이 있다. 데코레이터는 내부 요소부터 외부 요소로 향하는 순서로 적용된다. 예를 들어 메서드의 매개변수에 대한 데코레이터가 적용된 후 메서드 자체 그리고 마지막에 클래스 전체에 대한 데코레이터가 적용된다. 같은 종류의 데코레이터의 경우도 유사하다. 수학의 합성함수와 동일하게 작동한다. @f @g x 다음과 같이 데코레이터가 선언되어 있다면 f(g(x))와 동일하게 실행된다. Typescript..
Generic Programming and Type Parameter
·
개발
What is Generic Programming? - Generic programming is a style of computer programming in which algorithms are written in terms of types to-be-specified-later that are then instantiated when needed for specific types provides as parameter. Type parameter? - Type parameter like 'T' in TypeScript, are a fundamental aspect of generic programming, a programming style where algorithms are written in t..
Typescript Type narrowing
·
개발
Typescript's type narrowing - TypeScript has a feature called "type narrowing" which allows the type system to refine the type of variable based on certain checks. For example, if you check whether a variable is not null, TypeScript understands in the subsequent code that this variable is indeed not null. Mutaillity of Obejcts - In JavaScript , obejcts are mutable. THis means that their properti..