Pangyoalto

Pangyoalto

[K8s & Github Action] self-hosted-runner를 k8s로 구성해보자
k8s

[K8s & Github Action] self-hosted-runner를 k8s로 구성해보자

[요약] k8s 클러스터 구성 1. k8s 클러스터 구성시 공식 문서에 나와있는 kubeadm 쓰지 말자. 훨씬 편리한 프로젝트들 많이 있다(k0s, k3s). Github Action 1. Github Action은 runner로 자신의 서버를 쓸 수 있는 self-hosted runner를 지원한다. 2. ARC를 사용하면 k8s에 self-hosted runner를 비교적 쉽게 구성할 수 있다. 3. 그러나 ARC는 self-hosted
13 min read
[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
[도서 리뷰] 인피니트 게임
Book

[도서 리뷰] 인피니트 게임

[요약] 이번 요약은 이 책에서 기억하고 싶은 구절들로 대체하겠다. * 비즈니스라는 무한게임에서 대의명분은 제품이나 서비스보다 더 중요하다. * 제품을 그 무엇보다도 중요하게 여기는 현상은 IT 기업에서 흔히 일어난다. 그렇게 되면 엔지니어나 제품 개발자가 아닌 직원들은 상대적 박탈감을 느끼며 실제로 차별받기도 하는 문제가 발생한다. * 유한게임식 리더는 "좋은 일을 하려면 돈을 벌어야 한다"라고
21 min read
[오픈소스 contribution 도전기] IBC Query
Blockchain

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

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

[Ethereum] 상하이 업그레이드에서 무엇이 바뀔까?

[요약] 0. 상하이 업그레이드는 23년 3월 예정되어 있다 1. 머지 이전 업그레이드와 다르게 Execution 클라이언트와 Consensus 클라이언트 업그레이드가 동시에 이루어진다 2. 상하이 업그레이드에서 중요한 변경 두 가지는 EVM Object Format(EOF)과 비콘 체인 출금이다. 3. EOF는 EVM에 대한 변경으로 새로운 스마트 컨트랙트 포맷을 정의한다. 4. 비콘 체인 출금은 execution
13 min read
[Go] pprof를 사용해 profiling을 해보자(부제: 당신은 서버 이상 원인을 어떻게 찾으시나요?)
Go

[Go] pprof를 사용해 profiling을 해보자(부제: 당신은 서버 이상 원인을 어떻게 찾으시나요?)

[요약] 1. pprof는 go 어플리케이션을 profiling 해주는 도구이다. 2. go는 go tool에서 pprof를 기본적으로 지원해주기 때문에 쉽게 pprof를 이용할 수 있다. 3. graphviz를 통해 분석을 시각화해서 볼 수 있다. 4. cpu, 메모리, trace 등을 원하는 타겟, 기간에 설정해서 볼 수 있어 이상 원인 파악에 용이하다. pprof란? GitHub - google/pprof:
9 min read
[MEV-Boost] Censorship... wat do?
Blockchain

[MEV-Boost] Censorship... wat do?

이 글은 Jon Charbonneau의 Censorship... wat do? 를 요약 및 저의 생각 및 설명을 일부 추가한 글입니다. [요약] 1. MEV-Boost는 밸리데이터의 탈중앙화를 위해 플래시 봇이 만들었다. 2. 그러나 MEV-Boost는 릴레이어/빌더의 중앙화 문제를 낳았고, 이는 검열 저항성을 해치게 되었다. 3. MEV-Boost에서 검열은 약한 검열이기 때문에 시간이 지나면 검열 대상 트랜잭션도
20 min read
[SSL/TLS] 인증서가 보장해주는 신뢰는 어디까지인가
Web

[SSL/TLS] 인증서가 보장해주는 신뢰는 어디까지인가

[요약] 1. 인증서를 발급받은 서버는 Chain of trust를 통해 Root CA의 신뢰를 상속받을 수 있다. 그러나 인증서 종류에 따라 해당 서버를 신뢰할 수 있는 범위는 제한이 된다. 2. Self signed certificate는 자신이 CA가 되는 것이기 때문에 상속 받을 신뢰가 없다는 문제점이 있다. Self signed certificate는 클라이언트와 서버가 서로 알고 있을
10 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
[Linux] Slab 메모리 줄이기
Linux

[Linux] Slab 메모리 줄이기

[요약] 1. Slab은 커널 캐시이다. 2. Slab은 SReclaimable과 SUnreclaim으로 나뉜다. 현재 사용하냐, 안하냐 차이다. 3. drop cache를 하면 SReclaimable이 줄어든다. 4. shrink slab을 할 경우 SUnreclaim이 줄어든다. 단, docs에서 shrink slab은 실행 중인 어플리케이션에 영향을 미칠 수 있다고 나와있다. 5. 하지만 SUnreclaim은 커널이 kmalloc 후 release가 안된 것이라 프로세스를 죽인다고
8 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