Development(4)
-
인터페이스 구현 검증
코드를 보다 보면var _ SomeInterface = &SomeStruct{}이런 식으로 표현되어 있는 것을 종종 본적이 있을 것이다. Golang의 interface는 덕 타이핑을 사용하여 interface 내에 선언된 method들의 실제 구현 없이 method명만 언급되어도 된다.예를 들어 SomeInterface가 아래와 같은 method명 들을 가지고 있다고 가정하자.type SomeInterface interface { GetHomeDir() string GetApp(string) *types.App GetNumber() (*big.Int, error)}이 때 코드 내에 var _ SomeInterface = &SomeStruct{}로 명시된 상황에서 SomeStruct가 r..
2024.11.14 -
Rust macro 활용
Rust에서 자주 사용되는 Option을 살펴보자.pub fn example_function() -> Result { // Some codes... let a: Option = temp.get(1); Ok(())}이 때 a가 Option 타입일 때, a의 값이 존재하면 unwrap()을 통해 T를 가져오고, 존재하지 않다면 error를 return한다 가정한다. 그렇다면 코드 상에서는 아래와 같이 표현될 수 있을 것이다.pub fn example_function() -> Result { // Some codes... let a: Option = temp.get(1); if a.is_none() { return CustomError::AIsNone{} } ..
2024.11.13 -
프로그램에서 동작 중인 goroutines 확인
Golang으로 개발하다 보면 goroutine을 자주 사용할 수 밖에 없고, 멀티 쓰레드 간 채널을 통해 데이터를 자주 받아야 하는 상황이 잦을것이다. 이 때 송수신 채널들이 데이터를 주고 받지 못하던지, goroutine이 동작하지 않는다던지 하는 다양한 이유로 goroutine의 생사 여부를 확인해야 하는 과정이 필요할 수 있다. 간단하게 확인하는 방법을 공유한다.Golang 디버깅 프로그램 dlv를 설치하고, 제대로 설치되어 있는지 버전을 확인한다.$ go install github.com/go-delve/delve/cmd/dlv@latest$ dlv versionGoroutine 동작을 확인하려 하는 대상인, 내가 구동시키고 있는 프로그램의 PID를 확인한다.$ ps -ef | grep PROG..
2024.11.13 -
Ciphertext-Policy Attribute Based Encryption
※ 원글 작성 : 23년 3월 13일 CP-ABE(Ciphertext-Policy Attribute-Based Encryption)는 말 그대로 속성기반 암호화로써, 사용자의 속성(attribute)을 통해 encrypt/decrypt하는 암호학이다. 대학원 때 다뤄보니 아이디어도 신박하고 분산환경에서도 재미있게 쓰일 곳이 많아보여 차후에 더 쓰일 수 있지 않을까 하는 마음에 내용을 정리하려 한다. 개요 CPABE는 2007년에 Bethencourt 등의 논문에 제시되었다. 사용자의 비밀키(secret key)를 생성할 때 액세스 트리 정보를 사용하는 것이 아니라 데이터 자체를 암호화하기 위해 액세스 트리를 사용한다. 암호화된 데이터를 복호화하기 위해서는 사용자의 속성 집합을 기반으로 생성된 트리에서 생..
2023.06.15