묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨웹 개발의 혁신: 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에 제네릭, 트레이트 강의는 있는데 임대값의 수명 강의는 아직 없는 것 같습니다. 언제쯤 볼 수 있을지 궁금합니다.
-
해결됨우아한 고성능 프로그래밍 언어 Rust 입문 및 활용
문자열 리터럴이 너무 어려워요ㅠㅠ
문자열 리터럴이 뭘 뜻하는지 잘 모르겠어요.리터럴이 말 그대로 데이터 값 그 자체라고 생각했는데요 (ex 2, 4, "hello") 그런데 강의 중 "문자열 리터럴이 특정 영역에 있는 문자열 데이터를 참조하고 있는 값"이라고 설명하셔서 혼란스러워요.그럼 문자열 리터럴은 결국 문자열을 가리키고 있는 포인터인가요?let hello: &str = "hello" 그리고 "문자열 리터럴이 특정 영역에 있는 문자열 데이터를 참조하고 있는 값" -> 여기서 특정 영역은 data 영역을 말하는 것일까요?리터럴이라는 용어 자체가 그냥 데이터 값이라고 알고 있었는데, 리터럴이 참조 값이었고 타입은 문자열 슬라이스 타입이어서 헷갈려요ㅠㅠ 도와주세요
-
해결됨우아한 고성능 프로그래밍 언어 Rust 입문 및 활용
Integer는 자동으로 copy되서(copy type)(integer 는 stack에 할당되서)
예문을Integer먼저 넣고 두번째 변수는 String 이게 더 좋지 않을까요? 출처 https://www.reddit.com/r/rust/comments/up1yhg/rust_ownership_for_integer_vs_string_literals/What’s going on under the covers is that when a variable who’s type has a constant length (like an integer) gets passed to a function, rust allocates space on the call stack for that variable and copies it’s value into the function’s call stack. Thus the instance of X that your function gets is different (is at a different memory address) than the copy of X that was passed to it. For strings, the compiler doesn’t know how much space to allocate (because the function could be called with your constant length string or any other string).
-
해결됨우아한 고성능 프로그래밍 언어 Rust 입문 및 활용
명령어를 입력 한 후 source "$HOME/.cargo/env" 이 명령어를 입력해야 합니다.
명령어를 입력 한 후 source "$HOME/.cargo/env" 이 명령어를 입력해야 합니다. 해당 설명이 누락되어 있는 것 같아서요.! 참고로 저는 m1 입니다!
-
미해결웹 개발의 혁신: C, C++, Rust로 시작하는 WebAssembly 마스터 클래스
강의 노트(PPT) 파일은 제공이 안되는 건가요?
안녕하세요.강의에서 사용되는 강의 노트(PPT) 파일은 제공이 안되는 건가요?다운로드 받는 곳을 찾지 못해 문의 드립니다.감사합니다.수고하세요.
-
미해결웹 개발의 혁신: C, C++, Rust로 시작하는 WebAssembly 마스터 클래스
clock 예제 빌드 오류
안녕하세요 두가지 에러문제로 질문드립니다1번째는 clock 예제를 시작하고 빌드를 하니까 qmake 스텝에서 오류가 나온다고 합니다그 전 강의에서 cmake 가 오류가 적다 말씀하셔서 그 부분을 의심하고 qmake를 cmake로 변경하기위해 구글링 해봤지만 설정을 어떻게 바꾸는지 못찾겠습니다..... 2번째는 include를 하는 곳에서 참조가 안된다하는데 추가로 다른 파일을 다운받아야하나요....? 강의에서 보여주신 qt maintenace에서 다운로드 해야하는것은 체크해서 다운받았는데 참조가 안된다고 하네요....
-
미해결웹 개발의 혁신: C, C++, Rust로 시작하는 WebAssembly 마스터 클래스
Wasm windows 개발환경 구축 중 오류
windows 상에서 개발환경 구축중에 질문있습니다 명령 프롬프트를 사용해 emscripten을 설치 중emsdk.bat install latest는 성공하였지만emsdk.bat activate latest 는 실패하고 오류 메시지로 아래와 같이 나옵니다UnicodeEncodeError: 'cp949' codec can't encode character '\xa0' in position 950: illegal multibyte sequence 확인해본결과 파이썬 인코딩때문에 그런거같아서chcp 65001로 변경하여 유니코드로 변경해서 명령프롬프트를 다시한번 시도하였으나 여전히 같은 에러가 뜹니다....다른 방법이 있을까요...? https://emscripten.org/docs/getting_started/downloads.html이 사이트를 통해서 Gitbash를 source ./emsdk_env.sh 할 경우도 같은 오류가 발견됩니다 emsdk.bat activate latest 입력 후 나오는 전체 메시지 공유드립니다Resolving SDK alias 'latest' to '3.1.41'Resolving SDK version '3.1.41' to 'sdk-releases-eb71265ef0ab905620015adbfedacf88c5dbf021-64bit'Setting the following tools as active:node-15.14.0-64bitpython-3.9.2-nuget-64bitjava-8.152-64bitreleases-eb71265ef0ab905620015adbfedacf88c5dbf021-64bitAdding directories to PATH:PATH += G:\StartUp\web\emsdk-mainPATH += G:\StartUp\web\emsdk-main\node\15.14.0_64bit\binPATH += G:\StartUp\web\emsdk-main\upstream\emscriptenSetting environment variables:PATH = G:\StartUp\web\emsdk-main;G:\StartUp\web\emsdk-main\node\15.14.0_64bit\bin;G:\StartUp\web\emsdk-main\upstream\emscripten;C:\Program Files\Common Files\Oracle\Java\javapath;C:\Program Files\Microsoft\jdk-11.0.16.101-hotspot\bin;C:\Python38\Scripts\;C:\Python38\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\ProgramData\chocolatey\bin;C:\ProgramData\chocolatey\lib\cunit\lib;C:\ProgramData\chocolatey\lib\tinyxml2\lib;C:\ProgramData\chocolatey\lib\log4cxx\lib;C:\ProgramData\chocolatey\lib\bullet\lib;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\dotnet\;D:\Putty\;C:\Program Files\Git\cmd;C:\Users\yubi2\AppData\Local\Programs\Python\Python311\Scripts\;C:\Users\yubi2\AppData\Local\Programs\Python\Python311\;C:\Users\yubi2\AppData\Local\Microsoft\WindowsApps;C:\Program Files\OpenSSL-Win64\bin\openssl.cfg;C:\MinGW\bin;C:\Program Files\CMake\bin;C:\Users\yubi2\.dotnet\tools;G:\창업\rasberry\SysGCC\bin;D:\QT\Tools\mingw1120_64\bin;D:\QT\6.4.3\wasm_32\bin;D:\QT\6.5.0\wasm_multithread\bin;D:\QT\6.5.0\wasm_singlethread\bin;D:\Python\PyCharm Community Edition 2023.1.2\bin;D:\Python\PyCharm 2023.1.2\binEMSDK = G:/StartUp/web/emsdk-mainEMSDK_NODE = G:\StartUp\web\emsdk-main\node\15.14.0_64bit\bin\node.exeEMSDK_PYTHON = G:\StartUp\web\emsdk-main\python\3.9.2-nuget_64bit\python.exeJAVA_HOME = G:\StartUp\web\emsdk-main\java\8.152_64bitClearing existing environment variable: EMSDK_PYTraceback (most recent call last):File "G:\StartUp\web\emsdk-main\emsdk.py", line 3072, in <module>sys.exit(main(sys.argv[1:]))File "G:\StartUp\web\emsdk-main\emsdk.py", line 3011, in mainactive_tools = set_active_tools(tools_to_activate, permanently_activate=arg_permanent, system=arg_system)File "G:\StartUp\web\emsdk-main\emsdk.py", line 2384, in set_active_toolswrite_set_env_script(env_string)File "G:\StartUp\web\emsdk-main\emsdk.py", line 2359, in write_set_env_scriptopen(EMSDK_SET_ENV, 'w').write(env_string)UnicodeEncodeError: 'cp949' codec can't encode character '\xa0' in position 950: illegal multibyte sequence