분류 전체보기

    Cell 타입과 RefCell 타입 - Rust 프로그래밍

    목차 Cell 타입과 RefCell 타입 Cell 타입 사용하기 RefCell 타입 사용하기 Cell 타입과 RefCell 타입 이전에 작성했던 Rc 타입과 Weak 타입 - Rust 프로그래밍에서는 어떤 값에 대해 여러 소유자를 가질 수 있게 해주는 스마트 포인터 Rc에 대해 살펴봤습니다. 이번 글에서는 불변 변수를 가변 변수처럼 사용할 수 있게 해주는 Cell과 RefCell 타입에 대해 살펴보겠습니다. Rust의 참조 규칙에 따르면, 어떤 객체에 대한 불변 참조자는 여러 개 가질 수 있고, 가변 참조자는 하나만 가질 수 있습니다. 또한, 이 두 가지 규칙은 동시에 적용할 수 없습니다. 이런 규칙을 깰 필요가 있는 상황에서 Cell과 RefCell 스마트 포인터 타입을 사용할 수 있습니다. Cell과..

    Rc 타입과 Weak 타입 - Rust 프로그래밍

    목차 Rc 타입과 Weak 타입 Rc 타입 사용하기 Weak 타입 사용하기 순환 참조의 문제 Rc 타입과 Weak 타입 소유권 규칙에 따라 Rust에서 어떤 값은 여러 소유자를 가질 수 없습니다. Reference Counted를 의미하는 Rc는 힙 메모리에 할당된 타입 T 값의 소유권을 공유할 수 있게 해주는 타입입니다. 즉, 스마트 포인터 Rc를 사용하면 타입 T의 값에 대한 여러 개의 소유자를 만들 수 있습니다. 기본적으로, Rc 타입은 Clone Trait을 구현하고 있고 clone을 호출해서 T 값에 대한 새로운 포인터를 생성하며, 모든 Rc 포인터가 해제되면 메모리에 할당된 T 값이 drop되는 구조입니다. Rust에서 공유된 참조자는 수정할 수 없는데, Rc 타입 또한 예외가 아니며 일반적인..

    [Solana - Native vs Anchor] #3. Account 생성하기

    목차 Account 생성하기 프로그램 구조 Native 프로그래밍 Anchor 프로그래밍 Account 생성하기 이전 포스팅인 [Solana - Native vs Anchor] Account 생성하기에서 Account 하나를 생성하기 위해 Client에서 System Program으로 곧바로 생성을 요청했습니다. 이번 글 "Account 생성하기"에서는 Client가 Server Program으로 Account 생성을 요청하고, Server Program에서 System Program의 create_account Instruction을 호출해 Account를 생성하는 과정을 살펴보겠습니다. 이런 방법은 Solana에서 CPI(Cross-Program Invocation)라고 불립니다. CPI는 하나의 P..

    [Solana - Native vs Anchor] #2. Account 확인하기

    목차 Account 확인하기 프로그램 구조 Native 프로그래밍 Anchor 프로그래밍 Account 확인하기 Account 확인하기 에서는 우리의 Program이 소유하는 Account를 하나 생성하고, Account가 생성됐는지 확인해보겠습니다. Account가 생성된 것인지 아닌지에 대해 확인하기 위해, Client에서 생성할 Account와 이미 생성한 Account 두 개의 키쌍을 Instruction으로 보낼 것입니다. 이 "생성한" Account 하나는 Client에서 미리 SystemProgram에 생성을 요청하고, 다른 하나의 Account는 생성을 요청하지 않는 키쌍입니다. Server Program은 이 두 개의 Account에 대해 몇 가지 확인하는 작업을 갖고 있습니다. 두 Ac..

    [Solana - Native vs Anchor] #1. Hello Solana

    목차 Hello Solana 프로그램 구조 Native 프로그래밍 Anchor 프로그래밍 Hello Solana [Solana - Native vs Anchor] 시리즈에서는 솔라나 프로그래밍을 하는 두 가지 방법에 대해 알아봅니다. 하나는 솔라나에서 지원하는 Rust Crate인 solana-program을 이용한 Native 프로그래밍 방식이고, 다른 하나는 솔라나 프로그래밍을 좀 더 편하게 해주는 Anchor 프레임워크를 이용한 방식입니다. 이 글은 Hello Solana 예제를 다루는 [Solana - Native vs Anchor] 시리즈의 첫 번째 글입니다. 향후 포스팅되는 다른 글들에서는 다양한 예제를 코드와 로직에 집중해 살펴보겠지만, 이 글에서는 프로그램을 빌드하고 솔라나 로컬넷에 배포하..

    [Solana 이해하기] Program

    Program Solana blockchain에 Program들을 작성하고 배포할 수 있습니다. Program(다른 프로토콜들에서 smart contract로 알려진)들은 DeFi, NFTs부터 소셜 미디어와 게임까지 모든 것을 실행하는 on-chain 활동을 위한 기반 역할을 수행합니다. Program은 사용자나 다른 Program으로 부터 받은 instructions을 처리합니다. 모든 Program들은 상태를 보존하지 않습니다. 즉, Program들이 사용하는 모든 데이터는 instructions을 거쳐 분리된 accounts로 보내집니다. Program 그 자체는 executable 체크된 Account에 저장됩니다. 모든 Program은 BPF Loader에 의해 소유되고 Solana Runti..

    [Solana 이해하기] Account

    Account Solana에서 Account는 상태를 저장하기 위해 사용되며, block을 만드는 필수적인 요소입니다. Account는 데이터를 저장하기 위해 사용됩니다. 각 Account는 유일한 address를 갖고 있습니다. Account는 10MB의 최대 크기를 가집니다. PDA Account는 10KB의 최대 크기를 가집니다. PDA Account는 program을 대표하여 서명하기 위해 사용될 수 있습니다. Account 크기는 생성 시점에 고정된다. 하지만 realloc을 사용해서 조정될 수 있습니다. Account 데이터 저장은 rent라는 비용이 발생합니다. 기본적으로 Account 의 소유자(Owner)는 시스템 프로그램입니다. Account Model 3가지 종류의 Account Da..

    [RustPython] fcntl.ioctl 수정하기

    Merged PR PR Comment update ioctl first arg by tgsong827 · Pull Request #4140 · RustPython/RustPython #4070 add test_ioctl.py. update fn ioctl can take others having fileno method not only Integer. github.com 개요 CPython에서 ioctl 함수의 첫 번째 인자로 File Descriptor를 받는다. File Descriptor는 fileno()를 통해 구한 Integer 타입 fileno()를 갖고 있는 IOBase의 객체여야한다. RustPython은 ioctl 함수의 첫 번째 인자로 Integer 타입만 받도록 되어있었고, filen..

    소유권(Ownership)과 원시 타입 - Rust 프로그래밍

    목차 Ownership, Lifetime, Borrow Checker 소유권과 원시 타입 Ownership, Lifetime, Borrow Checker 소유권(Ownership)과 수명(Lifetime), 빌림 검사기(Borrow Checker)는 Rust 언어가 다른 언어들과 개념적으로 차이가 많이 나는 부분이다. 이 세 가지 개념은 모두 서로 연관되어 있다. 기본적으로 소유권을 가진 소유자는 하나다. 다만 소유권을 가지지 않았다고 해서 해당 변수에 접근하지 못한다는 것을 의미하진 않는다. 소유권은 빌림 검사기가 수명을 체크하기 위해 함께 사용되는 개념이다. 아래 코드는 컴파일되지 않는다. #[derive(Debug)] struct Number { num: i32 } fn show_number(num..

    2022 인프콘 후기

    2022 인프콘 후기 인프런에서 첫 번쨰 오프라인 컨퍼런스를 열었다. 일시 : 2022년 8월 26일, 13:00 ~ 19:15 장소 : 강남구 삼성동 코엑스 그랜드볼룸 참가 신청 참가비는 무료였고, 아래 기간동안 참가 신청을 받아 랜덤 추첨을 통해 참가자가 선정되었다. 일시 : 7월 25일(월) 13:00 ~ 7월 28일(목) 18:00 컨퍼런스 당일 컨퍼런스 당일 참가 안내 문자를 받았다. 문자에는 참가자 확인을 위한 QR코드와 안내 메시지가 있었다. 코엑스 그랜드볼룸 입장을 위한 QR 확인 절차를 거치면 인프런 굿즈를 받을 수 있었다. 참가자 목걸이를 차고 처음 그랜드볼룸으로 들어갔을 때, 수 많은 인파에 놀랐다. 개발자 처럼 보이는 사람들이 긴 줄을 서 있었는데.. 알고 보니 기업 부스를 향한 줄..