목록전체 글 (78)
공대생 정리노트
이 글은 https://boom.co/blogs/complex-react-architecture/ 의 일부분을 번역한 글입니다 Reference https://boom.co/blogs/complex-react-architecture/ 일반적인 Modularized React Architecture React의 Modularized 아키텍처는 위와 같은 형태를 띠고 있다. 각 모듈은 자신의 컴포넌트들을 각자 가지고 있고, 다른 모듈에 영향을 받지 않는다. Shared folder에서는 모듈들이 공유해서 사용하는 tool들을 정의한다. The clean architecture 이 글에서 제시하는 아키텍처는 FE 레이어를 3개로 나눈다. Presentation, Application, Infrastructur..
Slab이란? Slab은 커널 데이터 객체 생성/파괴의 오버헤드로 인한 성능 저하를 줄이기 위해서 자주 사용되는 오브젝트들을 미리 만들어 관리한다. Slab에 할당된 객체가 release 되더라도 slab은 재사용을 위해서 캐시된 상태로 유지한다. 이해를 하기 위해 전체적인 메모리 할당 구조를 한번 보자. kmalloc() 함수를 통해 커널 내부에서 메모리를 할당받을 때 어떤 일이 일어날까? 커널은 메모리를 페이지 단위로 관리하고, 커널의 page allocator을 buddy allocator라고 한다. buddy allocator는 external fragmentation을 줄이기 위해 메모리를 관리한다. (Buddy allocator에 대한 자세한 설명은 다른 글들을 참고하면 좋다) 커널은 budd..
Reference http://www.kyobobook.co.kr/product/detailViewEng.laf?mallGb=ENG&ejkGb=ENG&barcode=9781260084504 Database System Concepts - 교보문고 www.kyobobook.co.kr Storage DB에서 스토리지는 3가지로 나눌 수 있다. Volatile storage Non-Volatile storage Stable storage volatile storage volatile storage 안의 정보들은 시스템 크래시가 발생하면 일반적으로 살아남지 못한다. 메인 메모리나 캐시 메모리가 해당된다. volatile storage로의 접근은 굉장히 빠른데, 메모리 접근 자체가 그 자체로 빠를 뿐더러 vola..
https://go.dev/doc/effective_go#defer Effective Go - The Go Programming Language Effective Go Introduction Go is a new language. Although it borrows ideas from existing languages, it has unusual properties that make effective Go programs different in character from programs written in its relatives. A straightforward translation of a C go.dev Effective Go를 보면 defer가 실행하는 함수의 인자에 들어가는 값은 defer가 실..
Reference - 유니스왑 v3 백서 - https://github.com/Uniswap - https://starli.medium.com/uniswap-deep-dive-into-v3s-source-code-b141c1754bae 유니스왑 v3의 라이선스는 오픈소스는 아니다. 스시스왑의 뱀파이어 공격 이후 유사 공격을 막기 위해 비즈니스 라이선스를 도입을 한 상태이다. 유니스왑 v3의 코드는 크게 core와 periphery로 나눌 수 있다. Periphery 부분은 다시 크게 Position management 부분과 swap router management 부분으로 나뉜다. 이번 글에서는 Position management 부분과 core 로직을 집중적으로 살펴 볼 것이다. Concentrate..
레퍼런스 https://dave.cheney.net/2015/12/07/are-go-maps-sensitive-to-data-races https://stackoverflow.com/questions/19148809/how-to-use-rwmutex 문제 상황 상황을 한번 가정해보자. 아무 key-value도 가지지 않는 Map을 가지고 있다고 해보자. 이 Map에 수많은 고루틴들이 랜덤으로 key를 넣어 Read를 시도한다. 만약 value가 있으면 그대로 가져오고, value가 없다면 랜덤으로 만든 value를 key-value 쌍으로 만들어 Map에 넣는다. 즉 각 고루틴은 1. Read를 시도 2. 없으면 Write 을 반복한다. 그렇다면 여기서 Write을 할 때는 Lock을 거는 것이 확실하다..
Reference https://ko.docs.klaytn.com/smart-contract/ide-and-tools/truffle truffle을 클레이튼과 연동하기 위해서 truffle의 truffle-config.js의 provider을 작성해주어야 한다. 자신이 로컬 엔드포인트 노드를 실행해 연동할 수도 있지만 관리하기 쉽지 않으므로 KAS와 연동하였다. KAS를 사용하려면 먼저 AccessKey ID와 Secret AccessKey를 발급받아야 한다. 이 과정은 어렵지 않으므로 패스하겠다. Truffle을 사용해 스마트 컨트랙트를 배포할 것이므로 truffle을 설치한다. $ sudo npm install -g truffle 현재 klaytn docs에서는 v5.0.26까지 지원한다고 하므로 해..
https://docs.mongodb.com/manual/core/wiredtiger/ WiredTiger Storage Engine — MongoDB Manual Docs Home → MongoDB ManualStarting in MongoDB 3.2, the WiredTiger storage engine is the default storage engine. For existing deployments, if you do not specify the --storageEngine or the storage.engine setting, the version 3.2+ mongod instance can automa docs.mongodb.com WiredTiger Storage Engine WiredTig..