전체 글

전체 글

    [Hyperledger Fabric] Error Control

    Intro 졸업 프로젝트로 "블록체인을 이용한 암표 거래 방지 시스템"을 구상하였다. 프론트엔드, 백엔드, 블록체인으로 나눠진 파트 중 블록체인 파트를 맡아 블록체인 네트워크 구성하는 것을 목표로 삼았다. 이더리움과 같은 공개형 플랫폼을 사용하는 것은 해당 프로젝트의 컨셉과 맞지 않다 판단하여 기업형 블록체인의 니즈(needs)를 충족시킬 수 있는 오픈소스 플랫폼, Hyperledger Fabric을 사용하기로 결정했다. 본문에서는 필자가 Hyperledger Fabric의 Sample 중 test-network를 따와 프로젝트에 맞게 재구성하며 생긴 몇몇 에러들에 대해 소개하고 해결한 방법을 소개하고 있다. 사용자마다 다른 환경과 스크립트가 이 글을 보고 도움을 받으려는 사람들과 달라서 그대로 적용했을..

    [22 오픈소스 컨트리뷰션 아카데미] RustPython - 결과 발표

    조금 늦었지만 그래도 글을 써본다. 이번 2022 오픈소스 컨트리뷰션 아카데미 결과가 10월 14일 금요일에 나왔다. 결과는... 대상!! 열심히 노력했다고 생각했는데 다행히도 심사원 분들께서 좋게 봐주신 것 같다. 아직 끝맺지 못한 좀 큰 주제 Pull Request(Python의 Number Protocol 적용을 통한 연산 속도 향상)가 하나 남아있긴 한데 이거 언제 할지 모르겠다 ㅋㅋ 나중에 이력서에 한 줄 추가하고 당당하게 말하려면 끝내긴 해야 하는데 말이다. 요즘 현생을 재밌게 살아보자라는 모토를 핑계삼아 놀고 있는 중이다. 특히나 패션과 그림 그리기 취미에 꽂혀 여느 때보다 알찬 나날을 보내는 것 같아 기분이 좋다. 물론 학업에 손을 놓은 건 당연히 아니고 좀 즐겼다 싶음 다시 공부에 매진해..

    [22 오픈소스 컨트리뷰션 아카데미] RustPython

    개요 커널을 접하고 공부하다 보니 자연스레 오픈소스 기여에 흥미가 갔다. 그래서 처음엔 커널 레포지토리에 기여하는 것을 목표로 커널만을 계속 팠었고 어느 정도 기초는 땔 수 있었다. 하지만 그러다 보니 너무 이론적으로만 파고드는 것 같았고 약간의 허탈함을 느끼고 있을 무렵, Rust라는 언어를 통해 새로운 커널 환경을 만들려는 시도를 하고 있다는 것을 알게 되었다. 그렇게 Rust에 대해 배워볼까라는 생각에 관련 스터디도 찾아서 공부도 해보고 개인 프로젝트도 해보았다. 그렇지만 결국엔 오픈소스에 기여하고 싶었고 그러다 찾은 프로그램이 바로 oss.kr에서 주관하는 오픈소스 컨트리뷰션 아카데미였다. 마침 Rust도 할 줄 알겠다 싶어서 바로 RustPython에 지원했고 멘티로 선정될 수 있었다. 다짐 이..

    22.05.01

    [ 안녕하세요? ] 지금까지 달려왔던 반동인지, 아니면 내 머리의 한계였던 건지 어느 특정 선을 못 넘고 방황하고 있다는 느낌이다. 그래서 이번 연도 3월부터 개인 공부를 잘 진행하지 못하고 있다. 분명 더 많은 지식을 얻고 싶은 마음은 있는데 도중에 스스로에 대한 자아성찰 비슷한 생각을 할 수 있는 시간을 많이 가지게 되면서 평소의 난 어땠지라는 생각을 많이 하게 되었다. 그러다 보니 나 자신을 가꾸는 일 때문에 아무래도 지금은 예전만큼의 열정을 내지는 못하고 있는 것 같다. 그래도 다시 한 발 크게 내딛기 전 무릎을 꿇었다고 생각한다. 어찌 됐든 스스로를 돌아보고 주변과의 관계를 다시 살펴보다 보니 생각보다 얻은 것이 많다. 나 스스로는, 이전엔 못했던 다이어트와 운동을 하면서 자신감이 많이 올랐고 ..

    Shared Memory Consistency Models: A Tutorial

    Intro 「프로그래머가 몰랐던 멀티코어 CPU 이야기」(김민장 저)라는 책을 우연히 접하고 읽던 도중, 컴파일러 최적화 과정에서 발생 가능한 데이터/컨트롤/메모리 의존성에 대한 내용을 접하게 되었다. 의존성 분석을 통해 재배치(instruction reordering) 혹은 명령어 스케줄링(instruction scheduling) 최적화를 적용할 수 있다는 내용이다. 여기서 하나의 예시로 RAW(Read-After-Write; 무조건 순서대로 실행되어야 하는 의존성 관계) 상황에서의 메모리 로드를 들었다. 메모리 로드 이후 RAW 의존성을 갖는 명령어들이 줄줄이 있다면 캐시 미스를 일으킬 수 있는 메모리 로드를 먼저 앞쪽에서 처리하는 것이 효과적일 것이다. 하지만 싱글코어에서는 이 해결방법이 잘 통할..

    [RustShell] thread 'main' panicked at 'there is no reactor running, must be called from the context of a Tokio 1.x runtime'

    What happened? Rust를 이용한 Shell 만들기 프로젝트를 진행하고 있었다. p2p를 사용한 built-in 채팅 명령어를 시험 삼아 만들고 돌리려는데 다음과 같은 에러가 떴다. thread 'main' panicked at 'there is no reactor running, must be called from the context of a Tokio 1.x runtime', /home/karatus/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/context.rs:29:26 tokio 크레이트의 1.x 버전 런타임 컨텍스트로 부르지 않아 생긴 일이다. How to solve? 1) Did you chec..

    [OS 개발] 책 따라서 만들기 끝!

    https://github.com/TwoPair/os-clone GitHub - TwoPair/os-clone: Make a RTOS with a book Make a RTOS with a book. Contribute to TwoPair/os-clone development by creating an account on GitHub. github.com 책 따라서 간단한 RTOS 만들기가 끝이 났다. 사실 다한 지는 이 글을 시점으로부터 좀 되긴 했다. 그리고 여기서 끝날게 아니라 시간이 날 때 책에서는 구현하지 않았던 "Preemptive Scheduler"를 만들 것이다. 그것만 하면 일단은 내가 이 클론 프로젝트를 통해 얻을 수 있는 건 없지 않을까 싶다. 좀 더 미래의 얘기를 하자면 내가 하고 ..

    [v5.17] The kernel radar: folios, multi-generational LRU, and Rust

    혹시나 틀린 번역 혹은 틀린 내용이 있다면 언제든지 말씀해주세요. 또 알고 계신 자세한 내용이나 위 글과 관련된 좋은 정보가 있다면, 공유해주시면 감사하겠습니다! Introduction lwn.net에서 발간하는 기사 중 현재 개발 중인 커널에 관련된 여러 주제들 중 주목되고 있는 주제들에 대해 짤막하게 소개해주는 게 있어서 간단한 번역과 함께 살펴보려 한다. 이번 5.17 버전 개발 주기에서는 무엇이 화두가 되고 있는지 살펴보자. https://lwn.net/Articles/881675/ (2022.01.20 published by Jonathan Corbet) The kernel radar: folios, multi-generational LRU, and Rust [LWN.net] This artic..

    [To-Do List] 2021

    2021.08.22 - [잡담] - [Look-Back] 2021 [Look-Back] 2021 세 줄 요약 1. 입대 후 pwn을 시작해 열심히 노력했지만 부족함을 느낌. 2. 모호했던 미래 직업을 고민하다 kernel과 관련된 일을 하고 싶다고 구체적으로 정함. 2. 모의해킹 전문가를 위한 길을 선택 karatus.tistory.com ◇ For Future ✅ inflean에 있는 「운영체제 공룡책 강의」 수강 완료하기 ❗ fuzzing 사용해보기 - 보안에서 개발로 전환. 하여 더 이상 공부 필요성 못 느낌. ✅ 「디버깅을 통해 배우는 리눅스 커널의 구조와 원리」 1권 다 읽기 ◇ Development ✅ OS clone 다 만들기 2022.02.11 수정

    [LKM] procfs & seq_file

    Kernel version: 5.14.17 procfs이란? procfs는 proc + fs = process file system의 약자다. 모든 것을 파일로 취급하는 유닉스 사상에 따라 이 특별한 파일 시스템은 시스템 내의 정보를 제공하기 위해 존재한다. 실제로 존재하는 하드웨어에 대한 파일 시스템이 아닌 메모리 상에서만 존재하고, 가상 파일 시스템(VFS)의 인터페이스의 형태이며 /proc 경로에 마운트 되어 사용된다. 예전에 정리했던 포스팅에서도 아주 잠깐 다룬 적이 있다. [wikipedia] "ls /proc" 명령어를 사용해보면 뭔가 많이 있는 것을 확인할 수 있다. 숫자로 된 디렉터리들은 현재 올라가 있는 프로세스들의 PID를 나타내고, 나머지들도 각자의 결과를 반환하는 역할을 하는 함수들..