Programming

A collection of 8 posts
[LLVM & Clang] LLVM 최적화, 어디까지 아시나요?(LTO, PGO, BOLT)
Compiler

[LLVM & Clang] LLVM 최적화, 어디까지 아시나요?(LTO, PGO, BOLT)

[요약] 1. Clang은 LLVM 기반 C/C++/Objective C 오픈소스 컴파일러다. Clang을 사용하면 LLVM의 최적화 기법을 적용하여 프로그램 성능 향상을 이끌어낼 수 있다. 2. C/C++ 외 다른 언어도 맞는 프론트엔드를 사용하면 LLVM을 사용할 수 있다. 3. LTO는 컴파일시 link 단계에서 적용되는 최적화이다. 함수를 사용하는 파일들이 나눠지거나 언어가 달라도 최적화를
27 min read
[RTK Query] useQuery 리렌더링 문제 해결기 - useLazyQuery 사용
Frontend

[RTK Query] useQuery 리렌더링 문제 해결기 - useLazyQuery 사용

[요약] 1. RTK Query의 useQuery는 호출이 되는 시점에 데이터를 fetch한다. 그리고 그 과정에서 컴포넌트의 렌더링이 여러 번 발생할 수 있다. 2. 이로 인해 개발자가 예상하지 못한 시점에 컴포넌트가 렌더링되며 사이드 이펙트가 생길 수 있다. 3. RTK Query의 useLazyQuery를 사용하면 데이터 fetch 시점을 조절할 수 있어 사이드 이펙트를 줄일 수 있다.
8 min read
[오픈소스 contribution 도전기] IBC Query
Blockchain

[오픈소스 contribution 도전기] IBC Query

[요약] 디사이퍼, a41에서 팀을 꾸려 오픈 소스 컨트리뷰션을 진행했고, 머지가 되는 성과를 얻었다(22.06 ~ 22.12) 1. 코스모스 IBC는 현재 체인 간 쿼리하는 기능이 없다. 2. 디사이퍼에서 이를 구현하여 contribution을 하려는 팀이 구성되었다. 3. 아키텍처를 설계하였고, 체인 모듈과 릴레이어를 구현하는 소규모 팀으로 다시 나누어졌다. 4. 체인 모듈은 구현 완료하였으나
11 min read
[Cosmwasm] Cosmwasm은 처음이지?(2) -  배포 및 실행하기
Blockchain

[Cosmwasm] Cosmwasm은 처음이지?(2) - 배포 및 실행하기

Cosmwasm은 처음이지?(1) - 구성요소 알아보기 와 이어지는 글입니다. [요약] * juno 테스트 네트워크 사용을 위해 juno 클라이언트 설치 및 Public RPC 설정을 진행한다. * rust optimzer를 통해 컴파일된 wasm 바이트 코드의 용량을 줄인다. * 컴파일된 바이트 코드를 배포해보고 init 트랜잭션을 보내본다. [목차] 1. juno 테스트 네트워크 사용 준비 2. cw20 배포 Juno
10 min read
[Cosmwasm] Cosmwasm은 처음이지?(1) -  구성요소 알아보기
Blockchain

[Cosmwasm] Cosmwasm은 처음이지?(1) - 구성요소 알아보기

개발 경험이 있으나 Rust에 익숙하지 않은 사람들을 대상으로 작성된 글입니다. [요약] * 보통 Cosmwasm 스마트 컨트랙트는 contract 모듈, msg 모듈, state 모듈로 이루어져 있다. * contract 모듈이 스마트 컨트랙트의 핵심 로직을 담당하며 나머지 두 모듈은 contract 모듈을 보조하는 역할이다. * contract 모듈은 무조건 instantiate(), execute(), query() 함수를 정의해야 하며 이 세 함수는 entry_
11 min read
[Go] kv 파일 스토리지를 골라보자! (부제: LSM Tree와 B Tree)
Go

[Go] kv 파일 스토리지를 골라보자! (부제: LSM Tree와 B Tree)

[요약] 1. kv storage는 LSM tree로 구현된 것과 B tree로 구현된 것으로 나뉜다 2. LSM tree는 쓰기가 빠르고 B tree는 읽기가 빠르다 3. Go의 KV 파일 스토리지 구현체는 badger, pebble, bbolt가 있다 4. badger와 pebble은 동일 db에 read 프로세스와 write 프로세스가 접근하면 에러가 발생한다. bbolt는 행이 걸린다 이 글에서는 Key-Value
8 min read
[Go] Map 사용시 Read도 RLock을 해야하는 이유
Go

[Go] Map 사용시 Read도 RLock을 해야하는 이유

[요약] * Map에 여러 프로세스가 접근할 때 다른 key에 대해 write을 하더라도 리밸런스로 서로 영향을 미칠 수 있다. * Read시 다른 Key에 write을 하는 프로세스에 영향을 받을 수 있으니 key별로 lock을 걸지 말고 전체 Map에 대해 RLock, WLock을 걸어야 한다. 멀티 프로세스 혹은 여러 고루틴을 이용해 병렬 프로그래밍을 할 때 가장 골치가
5 min read