묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결웹 개발의 혁신: C, C++, Rust로 시작하는 WebAssembly 마스터 클래스
혹시 강의 연장 가능할까요? ㅠㅠ
제가 결혼을 하고 돌아와서결혼준비로 이제 정신을 차리고 공부를 시작하려고합니다.소정의 금액이 필요하다면 지불하고서라도 강의 연장을 원합니다 ㅠㅠ
-
미해결웹 개발의 혁신: C, C++, Rust로 시작하는 WebAssembly 마스터 클래스
테스트 배포시 에러가 발생합니다.
http://127.0.0.1:3305/ex03_hello_world_designer.html 주소로 이동했습니다. ex03_hello_world_designer.js:9 Uncaught (in promise) DataCloneError: Failed to execute 'postMessage' on 'Worker': SharedArrayBuffer transfer requires self.crossOriginIsolated. at ex03_hello_world_designer.js:9:16758 at new Promise (<anonymous>) at loadWasmModuleToWorker (ex03_hello_world_designer.js:9:15451) at Array.map (<anonymous>) at Object.loadWasmModuleToAllWorkers (ex03_hello_world_designer.js:9:16962) at ex03_hello_world_designer.js:9:14758 at ex03_hello_world_designer.js:9:17642 at Array.forEach (<anonymous>) at callRuntimeCallbacks (ex03_hello_world_designer.js:9:17631) at preRun (ex03_hello_world_designer.js:9:7603) (익명) @ ex03_hello_world_designer.js:9 loadWasmModuleToWorker @ ex03_hello_world_designer.js:9 loadWasmModuleToAllWorkers @ ex03_hello_world_designer.js:9 (익명) @ ex03_hello_world_designer.js:9 (익명) @ ex03_hello_world_designer.js:9 callRuntimeCallbacks @ ex03_hello_world_designer.js:9 preRun @ ex03_hello_world_designer.js:9 run @ ex03_hello_world_designer.js:9 runCaller @ ex03_hello_world_designer.js:9 removeRunDependency @ ex03_hello_world_designer.js:9 receiveInstance @ ex03_hello_world_designer.js:9 receiveInstantiationResult @ ex03_hello_world_designer.js:9 Promise.then (익명) @ ex03_hello_world_designer.js:9 Promise.then instantiateAsync @ ex03_hello_world_designer.js:9 createWasm @ ex03_hello_world_designer.js:9 (익명) @ ex03_hello_world_designer.js:9 qtLoad @ qtloader.js:231 await in qtLoad init @ ex03_hello_world_designer.html:53 onload @ ex03_hello_world_designer.html:24 http://127.0.0.1:3305/ex03_hello_world_designer.html 주소로 이동했습니다. ex03_hello_world_designer.js:9 Uncaught (in promise) DataCloneError: Failed to execute 'postMessage' on 'Worker': SharedArrayBuffer transfer requires self.crossOriginIsolated. at ex03_hello_world_designer.js:9:16758 at new Promise (<anonymous>) at loadWasmModuleToWorker (ex03_hello_world_designer.js:9:15451) at Array.map (<anonymous>) at Object.loadWasmModuleToAllWorkers (ex03_hello_world_designer.js:9:16962) at ex03_hello_world_designer.js:9:14758 at ex03_hello_world_designer.js:9:17642 at Array.forEach (<anonymous>) at callRuntimeCallbacks (ex03_hello_world_designer.js:9:17631) at preRun (ex03_hello_world_designer.js:9:7603) (익명) @ ex03_hello_world_designer.js:9 loadWasmModuleToWorker @ ex03_hello_world_designer.js:9 loadWasmModuleToAllWorkers @ ex03_hello_world_designer.js:9 (익명) @ ex03_hello_world_designer.js:9 (익명) @ ex03_hello_world_designer.js:9 callRuntimeCallbacks @ ex03_hello_world_designer.js:9 preRun @ ex03_hello_world_designer.js:9 run @ ex03_hello_world_designer.js:9 runCaller @ ex03_hello_world_designer.js:9 removeRunDependency @ ex03_hello_world_designer.js:9 receiveInstance @ ex03_hello_world_designer.js:9 receiveInstantiationResult @ ex03_hello_world_designer.js:9 Promise.then (익명) @ ex03_hello_world_designer.js:9 Promise.then instantiateAsync @ ex03_hello_world_designer.js:9 createWasm @ ex03_hello_world_designer.js:9 (익명) @ ex03_hello_world_designer.js:9 qtLoad @ qtloader.js:231 await in qtLoad init @ ex03_hello_world_designer.html:53 onload @ ex03_hello_world_designer.html:24 릴리스 선택후 빌드한 html를 브라우저에 띄워서 테스트 해보니 로딩이 끝나지 않습니다.실제 브라우저에 배포하려면 설정이 더 필요한걸 까요?
-
미해결우아한 고성능 프로그래밍 언어 Rust 입문 및 활용
소유권 이전과 관련된 질문입니다
Rust의 소유권 이전이 C++의 move와 비슷한 것 같은 느낌이 드는데 맞을까요?
-
미해결우아한 고성능 프로그래밍 언어 Rust 입문 및 활용
&r1 을 써야하는지 r1을 써야하는지?
fn main() { let mut s = String::from("헬로"); let r1 = &s; let r2 = &s; println!("r1 = {}, r2= {}", r1, r2);}여기서 println! 부분에 r1을 사용하건 &r1을 사용하건 둘다 "헬로" 로 같은 값이 나옵니다.엄밀하게 말하면 r1은 문자열s의 주소값일 것 같아서 질문 드립니다. 그리고 주소값을 바탕으로 실제 값을 가져오는 건 일반적으로 &연산자가 아닌 *연산자를 사용하지 않는지요?
-
해결됨우아한 고성능 프로그래밍 언어 Rust 입문 및 활용
임대값 수명에 대한 질문
안녕하세요! 영상을 보고 아래 함수에서 반환값의 수명은 매개변수로 주어진 s1 과 s2 중 수명이 더 긴 것으로 채택된다고 이해했는데요! 러스트 공식문서에서는 더 작은것이 채택된다고 적혀있어서 어떤게 정답인지 궁금합니다. fn longest<'a>(s1: &'a str, s2: &'a str) -> &'a str { if s1.len() > s2.len() { s1 } else { s2 } }
-
해결됨우아한 고성능 프로그래밍 언어 Rust 입문 및 활용
변수 가리기 shadowing 을 듣고 궁금한점이 생겼습니다.
shadowning 에서 변수가 가려진다는 것은 기존 변수가 계속 메모리에 남아있다는 이야기인것 같습니다. (스코프를 벗어나면 이전 변수값을 사용할 수 있으니까요) 같은 이름으로 변수를 계속 선언해서 사용하면 사용할 수 없는 변수가 메모리에 계속 자리잡게 될텐데 가비지컬렉터가 없는 rust 에서 이런 변수들은 어떻게 참조 해제를 할 수 있나요?
-
해결됨우아한 고성능 프로그래밍 언어 Rust 입문 및 활용
튜플 구조체에서 println! 사용시 에러가 발생합니다.
struct Color(i32, i32, i32); struct Point(i32, i32, i32); fn main() { let c = Color(255, 0, 0); // RGB 값 (빨간색) let p = Point(0, 0, 0); // 3D 공간의 원점 println!("Color is {:?}", c); println!("Point is {:?}", p); }Color doesn't implement Debugthe trait Debug is not implemented for Coloradd #[derive(Debug)] to Color or manually impl Debug for Color위와 같은 에러가 발생하는데요 #[dervie(Debug)] 구문을 struct 상단에 기입했을 때 해결이 됩니다.하지만 어떤 원리로 해결이 된건지는 모르겠습니다. 가르침 부탁드립니다.
-
해결됨웹 개발의 혁신: C, C++, Rust로 시작하는 WebAssembly 마스터 클래스
UTF8ToString 인코딩 질문있습니다.
#include <iostream> #include <string> #include <emscripten.h> #include <emscripten/bind.h> using namespace std; EM_JS(void, call_js, (const string subject, const string msg), { console.log("Subject: js " + subject, UTF8ToString(msg)); console.log("Pointer: js " + msg, UTF8ToString(subject)); jsFunction(UTF8ToString(subject), UTF8ToString(msg)); }); bool my_calls() { const string subject = "제목"; const string msg = "메세지"; cout << "Subject: cpp " << subject << "\nPointer: cpp " << msg << endl; call_js(subject, msg); return true; } EMSCRIPTEN_BINDINGS(my_module) { emscripten::function("callJs", &my_calls); }UTF8ToString으로 변환할때 포인터와 length로 변환하야하나요?string 타입을 직접 utf8로 변환해도 되는것 같은데 해당방식으로 문제가 생길 수 있는지 궁금합니다.
-
해결됨우아한 고성능 프로그래밍 언어 Rust 입문 및 활용
메모리 관리규칙에서 질문드립니다.
fn main() { let s: String = String::from("헬로"); let (s, len) = string_length(s); println!("문자열 {}의 길이는 {}", s, len);}fn string_length(s: String) -> (String, usize) { (s, s.len())}string_length 함수에서 선생님께서 쓰신 코드와 순서를 바꿔 입력하였을때 오류가 발생합니다. 선생님: (s.len(), s)저 :(s, s.len()) 물론 메인함수의 (s, len) 순서도 수정하였으며, string_length 함수의 반환타입도 순서도 수정하였습니다.
-
해결됨우아한 고성능 프로그래밍 언어 Rust 입문 및 활용
튜플과 구조체 차이 설명에 관한 질문
안녕하세요. 좋은 강의 감사합니다.12번째 구조체 기초 강의에서 튜플과 구조체의 차이에 대해서 말씀해주셨는데, 여기서 두 가지의 질문이 있습니다.첫 번째로는 강의에서 튜플과 구조체의 차이에 대한 예시로, "구조체는 이름을 따로 붙여줌으로서 Color가 들어갈 자리에 Point가 들어가거나 Point가 들어갈 자리에 Color가 들어가게 되는 문제를 일으키지 않는다" 라고 하셨습니다.이때, 앞선 6번째 강의에서 튜플을 정의했던 내용을 활용하여let point: (i32, i32, i32) = (2, 2, 2);let color: (i32, i32, i32) = (255, 255, 255);하는 식으로 정의를 한다면 말씀하신 문제에 대해서는 방지가 가능하다고 생각하는데, 제가 어느 부분에서 잘못 이해하고 있는 것인지 궁금합니다.두 번째로는 일반 Struct를 정의하실 때는 struct User { name: String, email: String, active: bool, }으로 뒤에 세미콜론을 따로 사용하지 않으셨는데,튜플 구조체에서는 struct Color(i32, i32, i32);처럼 뒤에 세미콜론을 사용하신 부분에서,명령문과 표현식에 있어 세미콜론 유무에 대한 차이가 있다는 것은 어느 정도 알겠지만, 이 부분에선 어떤 이유로 차이가 있는 것인지 궁금합니다.감사합니다!
-
미해결우아한 고성능 프로그래밍 언어 Rust 입문 및 활용
튜플과 배열 강의 4:50에서 벡터 나중에 설명해주신다고 하셨는데
벡터에 대한 설명이 강의에 없습니다...ㅠㅠ 가능하시다면 추가 부탁드립니다.
-
해결됨우아한 고성능 프로그래밍 언어 Rust 입문 및 활용
구조체는 언제나 Heap에 저장되나요??
사각형 너비와 높이로 면적 구하는 예제에서struct Rectangcle { width : u32, height : u32, } fn main() { let rect = Rectangcle{ width:20, height:30, }; println!("가로가 {}, 세로가 {}인 사각형의 면적은 {}이다.", rect.width, rect.height, area(rect)); print!("{:?}", rect.width); } fn area(rect : Rectangcle)->u32 { rect.width*rect.height }위와 같이 만들었더니 소유권 이전이 일어나더라고요.크기가 정해진 자료형으로만 이루어진 튜플이 Stack에 저장되는 것 처럼 Rectangle 구조체는 크기가 정해진 자료형이라 Stack에 저장될거라고 생각했는데 소유권 이전이 일어나는 걸 보면 Heap에 저장되는 건가 싶어서 질문 드립니다. Stack에 저장되는 자료형은 Copy 되고,Heap에 저장되는 자료형은 소유권 이전이 되는 방식이라고 생각해서 든 의문인데 제가 잘못 알고 있는 부분이 있을까요??좋은 강의 잘 듣고 있습니다.
-
해결됨우아한 고성능 프로그래밍 언어 Rust 입문 및 활용
Lifecycle 강의에서 두 문자열 슬라이스를 비교해 긴 문자열 슬라이스를 리턴하는 것 관련 질문
강의 내용에서는 어떤 값이 길지 컴파일러가 예측하지 못하기 때문에 라이프사이클을 명시해야한다고 했는데 이 부분이 이해가 되지 않습니다로컬변수를 리턴하려고 하는 게 문제가 되는게 아닌가요?
-
해결됨우아한 고성능 프로그래밍 언어 Rust 입문 및 활용
혹시 어떤 폰트일까요?
궁금해요!
-
미해결웹 개발의 혁신: C, C++, Rust로 시작하는 WebAssembly 마스터 클래스
build system 선택창
안녕하세요. 미루다가 이제야 듣고 있습니다. 저는 빌드시스템 선택창(cmake, qmake) 이 나오지 않습니다. 혹시 버전이 다른건가요? 제가 수강기간이 무제한인줄 알았습니다. qt에 큰 관심이 없어서 qt부분만 미루다가, 수강기간이 며칠 안남았습니다. 혹시 수강기간을 조금 연장해주실수는 없을까요? 혹은 추가비용을 조금 내서라도 가능한지 궁금합니다.
-
미해결웹 개발의 혁신: C, C++, Rust로 시작하는 WebAssembly 마스터 클래스
리눅스 개발환경 구성 시 Ubuntu 22.04LTS 필요 여부
안녕하세요, 친절하신 강의 잘 듣고 있습니다.'섹션 2. Linux 에서 WebAssembly 개발 환경 구축'을 듣고 있는 중인데, Ubuntu 20.04LTS를 설치하신걸로 보았습니다. 잠깐 뒷 강의를 찾아보니, 이후 강의에서 Qt6를 사용하시는 것 같은데, Ubuntu 22.04LTS를 사용해야 하지 않을까요? 근거는 다음 링크와 같습니다.Supported Platforms | Qt 6.6저는 말씀하신대로 Qt 6.5를 사용할 예정이긴 한데, 지원 플랫폼이 별 차이가 없을 것 같아서요.아니면, 20.04 LTS를 사용하시는 특별한 이유가 있는지 궁금합니다. 답변 부탁 드립니다. 강의 감사드립니다.
-
해결됨우아한 고성능 프로그래밍 언어 Rust 입문 및 활용
build 오류
cargo add ... 이후 build는 정상적으로 되는데, cargo lambda build --release --arm64 에서 많은 라인의 error와 함께 컴파일하지 못하네요... 구글링해봐도 잘 모르겠어요 error 마지막 몇라인을 첨부합니다...... error[E0425]: cannot find function drop in this scope --> /.cargo/registry/src/index.crates.io-6f17d22bba15001f/once_cell-1.19.0/src/race.rs:401:21 |401 | drop(unsafe { Box::from_raw(ptr) }); | ^^^^ not found in this scopeerror[E0425]: cannot find function, tuple struct or tuple variant Ok in this scope --> /.cargo/registry/src/index.crates.io-6f17d22bba15001f/once_cell-1.19.0/src/race.rs:405:13 |405 | Ok(unsafe { &*ptr }) | ^^ not found in this scopeSome errors have detailed explanations: E0405, E0408, E0412, E0425, E0432, E0463, E0531.error: could not compile once_cell (lib) due to 241 previous errors
-
해결됨우아한 고성능 프로그래밍 언어 Rust 입문 및 활용
웹 어플리케이션 개발에도 잘 사용되나요?
러스트의 매력을 느껴서 학습 중에 있긴 한데 해당 언어가 웹 어플리케이션 만들 때에도 잘 활용될 수 있는지가 궁금합니다.국내에선 해당언어로 웹어플리케이션을 만들었다는 얘기를 거의 듣지는 못해서 좀 궁금하네요.가능하다면 해외에서는 어느정도로 활용되는지도 궁금해요!
-
해결됨우아한 고성능 프로그래밍 언어 Rust 입문 및 활용
임대값의 수명 강의가 재생이 안되고 있습니다~
임대값의 수명 강의 보는 차례인데,재생이 안되어서 확인 부탁드립니다~!
-
해결됨우아한 고성능 프로그래밍 언어 Rust 입문 및 활용
임대값의 수명에 대한 강의는 언제쯤 볼 수 있을까요?
섹션7에 제네릭, 트레이트 강의는 있는데 임대값의 수명 강의는 아직 없는 것 같습니다. 언제쯤 볼 수 있을지 궁금합니다.