목록개발 및 공부 (189)
NeuroWhAI의 잡블로그
첫번째 버전 : https://blog.naver.com/neurowhai/221715701528 입체음향 방향 시각화 세로는 위가 오른쪽, 아래가 왼쪽이며 가로는 시간축입니다.각 시간대에 주파수별로 방향(세로 위치)을 계... blog.naver.com 이번엔 재생하면서 실시간으로 시각화 하도록 해봤습니다. 이전 글에서도 말했지만 방향 계산식이 정확한 게 아니라서 그냥 눈요깃거리가 되어버렸습니다... 테스트 음성 시각화 음악 시각화 (출처 : https://youtu.be/wVJNLD8zL00) 이것도 Rust로 짰습니다. 이전엔 piston을 써서 이미지로 만들었는데 이번엔 ggez를 사용했습니다. ggez 쵝오...

네트워크 분야는 오래 전 윤성우의 TCP/IP로 처음 접했는데 그걸 보고 멀티플레이 게임은 만들 수 있었지만 네트워크에 대한 전반적인 감을 잡기엔 일부분에 특화된 책이었죠. 이건 얕게 이것저것 알려줍니다. 볼 계획에 있던 책은 아니었는데 얇기도 하고 빠르게 보고 넘길 책 구하다 봤습니다. 사실 그림으로 배우는 뭐시기 책들은 오히려 그림을 너무 남발하는지라 이해가 더 어려운 경향이 있던데 이건 애초에 얕은 내용인지라 이해하는데 무리는 없었네요. 그리고 재미있었습니다. 독립된 장치들이 네트워크에 연결된 친구들과 지키는 프로토콜은 아주 흥미롭고 아 이게 이래서 가능하구나하는 통찰도 얻을 수 있었습니다. 흥미 유발용 입문용으로 좋은 듯.
https://stjepang.github.io/2020/01/31/build-your-own-executor.html Build your own executor Now that we’ve built the block_on() function, it’s time to take one step further and turn it into a real executor. We want our executor to run not just one future at a time but many futures concurrently! stjepang.github.io spawn 함수를 만들고 여기에 future를 넘기면 적절하게 감싸고 큐에 올려 실제로 실행되게 합니다.

개인적으론 요즘 잘 안 쓰지만 회사에선 쓰니까 C++ 책을 오랜만에 볼까 해서 봤습니다. 제가 C++을 배울 땐 여러 책을 통해서 각 표준안(C++11, C++14, ...)들을 따로 하나씩 배웠는데 이 책은 그것들을 전부 모아 정말 C++이라는 하나의 언어처럼 알려줍니다. 고전 문법인 템플릿을 소개하면서 자연스럽게 C++20의 컨셉을 버무린다거나 하는 식입니다. 오랜만에 복습한다는 느낌으로 보기에 아주 딱 맞는 책이었습니다.
https://stjepang.github.io/2020/01/25/build-your-own-block-on.html Build your own block_on() If you’ve ever wondered how block_on from the futures crate works, today we are going to write our own version of the function. stjepang.github.io

기상청 실시간 지진감시 : https://www.weather.go.kr/pews/ 사용자 맞춤형 지진정보서비스 - 기상청 날씨누리 www.weather.go.kr 기상청이 드디어 대중에게 이 시스템을 공개하였습니다. 힘써준 관계자분들에게 박수를 보냅니다. 이 시스템을 이용하여 지진봇에서 실시간으로 정보를 송출하도록 하였습니다. 아래는 이번 상주 지진 때 송출된 내용입니다. 아직은 조기 경보가 뜨질 않아서 이미 분석이 끝난 정보만 송출하고 있는데 만약 규모가 좀 되는 지진이 발생한다면 빠르게 지진봇이 알려줄 수 있으리라 기대합니다.
#include // 간단한 컨셉 정의. template concept Eq = requires(T a, T b) { { a == b } -> bool; { a != b } -> bool; }; // 다른 컨셉과 여러 제약을 포함하는 컨셉 정의. template concept EqSum = requires(T a, T b) { { a + b } -> T; } && requires(T a) { { a + a } -> T; } && Eq; struct Foo {}; // 간단한 컨셉 사용 예시. template // template requires EqSum // 실제론 이것과 동일. bool is_same(T a, T b) { std::cout
출처 : https://rust-lang.github.io/api-guidelines/future-proofing.html C++이나 C#에 보면 sealed라는 키워드가 있습니다. 이걸로 수식된 클래스는 상속의 끝을 뜻하며 자식 클래스를 가질 수 없죠. 보통 다른 개발자가 의도치 않게 자신의 클래스를 상속하고 확장하는 것을 방지하기 위한 용도로 쓰입니다. Rust에서도 이와 비슷한 목적으로 trait을 sealed 시킬 수 있습니다. 다만 키워드로 지원하는 것은 아니고 문법을 이용합니다. 다른 개발자가 trait을 사용할 수는 있어도 다른 타입에 impl하는 것은 막는 것이죠. pub trait Foo: private::Sealed { fn foo(&self); } impl Foo for usize {..

Rust 컴파일러는 기본적으로 모든 타입을 이동 가능한 것으로 취급합니다. 실제로 대부분의 타입은 이동되어도 문제가 없죠. 그러나 세상 사는 게 그렇게 순탄하지는 않습니다. 만약 i32 변수 a와 이를 가리키는 포인터 b가 있고 둘 다 객체 obj의 멤버라고 합시다. obj { a

2개월 반만에 다 읽었군요. 생각보다 너무 오래걸렸습니다 ㅠㅠ 게으른 나... 기본 문법을 다루는 앞 부분은 이미 아는 내용이라 빠르게 읽었습니다. 다만 맨 처음에 닷넷 생태계와 관련 용어들(CLR, IL, CIL, CTS, CLS, CLI, BCL 등)을 자세히 알려주는데 이 부분은 완전 유익했습니다. 본래 목적은 채-신 C# 문법을 체계적으로 보는 것이었고 이 목적도 충족시킨 것 같습니다. 음... 기억나는 채-신 문물은 Value Tuple, Span, 패턴 매칭, ref 반환 정도네요. 사실 그렇게 최근 것도 아니지만은... 아 그리고 문법 말고 BCL도 일부 알려줍니다. 아무튼 추천합니다!