Rust
-
Rust: 카카오 Karlo API wrapper컴퓨터/Rust 2023. 3. 24. 17:00
Karlo 소개 카카오브레인 ‘카카오디벨로퍼스’에서 카카오브레인의 한층 더 발전된 AI 이미지 모델 ‘Karlo(이하 칼로)’를 API가 있다. Generative AI Karlo는 사용자가 입력한 문장을 기반으로 사실적인 이미지와 다양한 작품을 생성할 수 있는 AI 모델이다. 1억 8천만 장 규모의 이미지와 이미지를 설명하는 텍스트와의 관계를 학습했다고 한다. 총 3가지 기능이 있다. 사용자가 입력한 단어나 문장을 기반으로 관련된 이미지와 다양한 작품을 생성 (Image gen) 사용자가 업로드한 이미지를 기반으로 관련된 이미지와 다양한 작품을 생성 (Variation gen) 이미지에 그리기 도구로 편집할 부분을 마스킹하고, 입력 단어나 문장(공백 가능)을 기반으로 지운 부분을 채워 새로운 작품을 생..
-
Rust: AsMut, AsRef, Deref, DerefMut 정리컴퓨터/Rust 2022. 12. 31. 21:22
Intro Rust의 AsRef, AsMut, Deref 및 DerefMut trait은 값을 변환하고 참조로 사용하는 방법을 제공한다. AsRef 및 AsMut trait을 사용하면 한 type의 값에 대한 참조를 다른 유형의 값에 대한 불변 또는 변경 가능한 참조로 변환할 수 있고, Deref와 DerefMut trait을 사용하면 값을 각각 참조 또는 변경 가능한 참조인 것처럼 사용할 수 있다. AsRef AsRef을 사용하면 참조를 immutable 참조로 변환할 수 있다. AsRef example1 이 예제는 i32 value이라는 단일 필드를 가진 MyStruct라는 구조를 정의하고, MyStruct에 대한 AsRef trait을 구현하여 MyStruct.value에 대한 참조를 i32 값에 ..
-
Rust: Send, Sync 정리컴퓨터/Rust 2022. 12. 29. 17:42
SS Rust의 Send 및 Sync trait은 데이터에 대한 안전한 동시 액세스를 보장하는 데 사용되는 관련 유형이다. 그러나 type이 concurrent 설정에서 사용되도록 설계되지 않은 경우에도 여전히 race 조건이나 기타 동시 액세스 문제가 발생할 수 있기 때문에 Send 및 Sync를 구현한다고 해서 해당 유형이 thread-safe 하다는 보장은 없다는 점에 유의해야 한다. 그러나 이러한 trait을 구현하는 것은 concurrent 설정에서 type을 사용하기 위해 필요한 조건이며, 그러한 맥락에서 type을 안전하게 사용할 수 있다는 보장을 제공한다. 이전에 쓴 RefCell, Arc, Rc, Mutex를 보면 다음 표와 같다. Trait Arc RefCell Rc Mutex Send..
-
Rust: Ref, Arc, Rc, Mutex 문법 정리컴퓨터/Rust 2022. 12. 29. 11:26
RARM @Rust 튜토리얼 웹사이트 Rust 튜토리얼 Hello World! 튜토리얼 소개 🎉 Rust 튜토리얼 기본편 영상을 위한 웹사이트입니다. 키보드 ⬅️/➡️ 버튼으로 페이지를 이동할 수 있습니다. hi-rust.github.io 이 글은 가끔 가다 보이고 concurrent 하게 뭔 짓을 하려 할 때 사용해야 하는 문법에 대한 글이다. Rust의 핵심 기능 중 하나는 메모리 안전성을 보장하는 것입니다. Rust는 이를 소유권(ownership)과 빌림(borrowing)이라는 개념을 통해 처리합니다. 소유권은 변수가 메모리의 어떤 부분을 소유하고 있음을 나타냅니다. 이는 메모리 누수나 불필요한 복사를 방지하는 데 중요합니다. 빌림은 소유권이 있는 변수를 다른 변수가 일시적으로 참조하는 것을 나..
-
Rust: Generic Associated Types (GAT)컴퓨터/Rust 2022. 12. 19. 00:09
Rust 언어에선 Associated Type (연관 유형, 이하 AT) 은 trait에 정의된 유형 (type)의 placeholder (자리 표시)이며 trait가 구현될 때 조금 더 구체적인 type으로 대체될 수 있다. AT는 일반 형식의 매개 변수를 사용하여 구조 또는 함수 정의의 형식에 대해 추상화할 수 있는 방법과 유사한 trait 정의 형식에 대해 추상화할 수 있다. 또 AT는 하나 이상의 type 멤버가 있는 trait를 정의하려는 경우에 유용하지만 이러한 멤버들의 특정 type은 trait가 구현될 때까지 알 수 없다. (런타임) trait에 AT가 있는 간단한 예제이다: trait Iterator { type Item; fn next(&mut self) -> Option; } 위 예제..
-
Rust: Go와 비슷하게 멀티쓰레딩 짜기컴퓨터/Rust 2022. 8. 29. 14:37
my_map := make(map[string]string) var wg sync.WaitGroup wg.Add(len(my_map )) for key := range my_map { go func(key string) { defer wg.Done() stdout, _ := exec.Command(key, "some command").Output() lock.Lock() defer lock.Unlock() my_map[key] = "updating map value while iterating" // eg stdout }(key) } 어느 날 위와 같이 Go언어로 작성한 것을 Rust로 옮기려다가 배운 것이다. 위 Go언어으로 짠 걸 보면 우선 Map을 만들고 key마다 돌면서 thread를 spawn ..
-
Rust: HashMap 값 for 문에서 update하기컴퓨터/Rust 2022. 8. 10. 19:41
할 것 여기서는 처음 HashMap 만들 때 Key는 지정해놨지만 Value는 나중에 업데이트하는 식으로 되어있다. Rust에서 HashMap을 key,value로 for 문을 돌면서 value를 업데이트 하는 방법이다. 코드 for (key, value) in my_hash_map.iter_mut() { let new_value = generate_random_value(); *value = new_value; } // Key sorted 출력 방법 for (ssid, password) in my_hashmap.iter().sorted() { println!("Wifi: {}, Password: {}", ssid, password); } iter_mut()로 HashMap을 iterate하면 key는 ..
-
Windows: 저장된 WIFI 와이파이 비밀번호 보기컴퓨터/Rust 2022. 8. 10. 19:35
WiFI 정보 Extract Windows Wi-Fi Passwords Extract Windows Wi-Fi Passwords with Rust. github.com 소개 윈도우 PC에 저장된 모든 WIFI 비밀번호를 보는 방법이다. 코드 netsh wlan show profiles 위 명령어를 입력하면 저장된 모든 WIFI가 나온다. netsh wlan show profile mywifi key=clear 여기서 위 명령어 mywifi 부분에 원하는 wifi 이름을 입력하면 Key Content 부분에 비밀번호가 나온다. 아래 regex로 캡처할 수 있다. # 와이파이 프로파일 regex pattern = r"All User Profile\s+:\s(?P.*)$" # 비밀번호 regex pattern..