ProgrammingLang 119

[C++개발자되기]29. promise 와 future 그리고 async

>>[C++ 관련 모든 글 보기] 개요 thread로 부터 수행 결과 값을 받는 방법을 알아 보겠습니다. 기본 원리 future와 thread간 promise를 매개변수로 사용하여 비동기 처리에대한 값을 얻어 옵니다. 1. future 미래에 어떤 값을 받고 자 할 따 사용. 2. promise future에 값을 넘겨주기 위해서 사용 Code #include #include #include void worker(std::promise *p) { p->set_value("some data"); } int main() { std::promise p; std::future data = p.get_future(); std::thread t(worker, &p); // 없어도 아래 get에서 대기 합니다. da..

ProgrammingLang/c++ 2022.08.11

[C++]Template

1. 사용이유 - Code Reuse 2. STL은 generic 하게 되어있다. 3. alias template - using을 사용한다. 4. variable template 5. lambda template(C++20) 6. Template fundermetal - class type = class, struct , union - template가 될수 이쓴 곳 7. Translation Unint - Code 생성 시점 : 컴파일 단계에서생성된다. Object Code 생성전. 8. Declarations and definitions 10. forward Declarations 11. One-Definitino Rule (ODR) 12. inline은 사용하는 모든 곳에서 정의가 있어야 하낟. 1..

ProgrammingLang/c++ 2022.06.21

[npm] 에러 해결 모음

1.ERROR: npm is known not to run on Node.js v10.19.0 https://nodejs.org/en/ Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 가서 최신 nodejs 받은 다음에 기존 설치된 nodejs를 최신으로 교체하면 끝!! 1. 상세 - ubunu20.04의 경우 /usr/bin/nodejs 에 nodejs 파일이 존재 - node-v16.15.0-linux-x64/bin 에 존재하는 node 파일을 /usr/bin/nodejs 로 복사한다.

[javascript] module 시스템

목표 - javascript의 모듈 시스템에 대해서 알아 봅니다. 모듈이란? - 하나의 큰 기능을 문해 해결을 쉽게하기 위하여 여러 작은 기능으로 분리하는데 이 작은 기능을 모듈이라고 합니다. - 아래 예제는 SSH 통신이란 큰 기능을 "연결" "요청" "결과확인" 이라는 모듈을 합쳐서 만든 것입니다. module 사용이유 1. 유지보수 용이 - 기능드이 모듈화가 잘되어있을 경우, 의존성을 줄일 수 있고 기능을 개선이나 수정이 용이 합니다. 2. namespace화 - module로 code들을 분리하면 개별 namespace를 갖습니다. module system란? 1. 정의 - module로 분리된 javacript파일들을 불러오는 방식을 정의 한 것이 module system 입니다. module ..

[C++] The Best Parts of C++

C++ 표준 - 표준은 ISO 결정 - 현재 C++20까지 나옴 컴파일러에서 지원하는 표준이 따로 있다. Q. 컴파일러와 표준의 관계 ? = GCC 버전 마다 지원하는 표쥰이 다르다. Const (C++98) - const는 컴파일 단계서 보증한다. - 값 초기화를 강제 한다. destructor의 통해서 객체의 라이프 타임을 관리 할 수 있다. - 해제는 destructor 에서 한다. Q. std::string s{"ㅁㄴㅇㄻㄴㅇㄹ"} =compiler가 list initialzation 으로 바꿔서 constructor에 매칭한다. Template의 필요성. (C++ 98) - Type만 바꾸면서 사용하기 위해서 사용한다. - 컴파일 타임에 코드가 생성된다. - 코드 재사용성에 좋다. enum안에서 ..

ProgrammingLang/c++ 2022.03.08

[Go Lang] package xx is not in GOROOT (/snap/go/9028/src/xx) 해결 방법

개요 package xx is not in GOROOT 에러를 해결 합니다. 발생이유 사용자가 만든 패키지를 go complier가 $GOROOT에서 찾고있어서 발생함. 아마 대부분 다음 단계를 거쳐서 디레토리 구조를 이렇게 만들고 개인이 만든 패키지를 추가하려고했을 것입니다. 1. go 사용자 package 생성 및 main.go 생성 ├── go.mod ├── lib │ └── common.go └── main.go lib/common.go (사용자 패키지) package common import "fmt" func PrintModuleName() { fmt.Println("Common") } main.go package main import ( "lib" ) func main() { common.P..

ProgrammingLang/Go 2022.03.03

[C++] 언어의 철학

https://github.com/CppCon/CppCon2020/blob/main/Presentations/back_to_basics_the_abstract_machine/back_to_basics_the_abstract_machine__bob_steagall__cppcon_2020.pdf 1. abbstract machine - 프로그램이 실행 되는 환경에 대한 정의한 머신 - 프로그램의 복잡성은 낮추기 위해서 필요함. 2. C++목적 - 개발자가 모든 것을 control 하수 있어야 한다. - 현재 hardware환경 에대하서 지원해야 한다. 3. 컴파일러마다 결과가 다른이유 - 표준만 준수하고 나머지는 컴파일마다 다 다르기 때문이다.

ProgrammingLang/c++ 2022.01.25

[C++개발자되기]28. 파일 다루기 2부(확장자 검사)

개요 파일 관리에 필요한 sample code를 제공한다. 확장자 검사 1. rfind로 확장자 존재 유무를 찾는다. 2. substr로 찾은 확장자를 추출 후 뒤에서부터 일치하는 확인 한다. #include int main() { std::string file_name = "test.json"; std::string extension = ".json"; if (file_name.rfind(extension) != std::string::npos) { if (extension == file_name.substr(file_name.length() - extension.length())) { std::cout

ProgrammingLang/c++ 2022.01.19

[C++개발자되기]26. L-value, R-value, &, && 와 std::move의 관계

>>[C++ 관련 모든 글 보기] 개요 L-value, R-value, &, && 관계와 R-value와 std::move에는 어떤 관계가 있는지 알아본다. 개념 설명 1. L-value와 R-Value 란? - 자료형 선언 시 "=" 기준으로 왼쪽에 있는 것과 오른쪽에 있는 것을 가리킬 때 사용하는 명칭이다. - 아래 그림에서 파란색 영역에 있는 것은 L-Value라고 칭하고 빨간색 영역에 있는 것을 R-Value라고 칭한다. 2. & 와 && 란? - &은 reference라고 불리며, L-Value에 대한 새로운 별칭을 만들어 줄 때 사용된다. - &&은 R-Value reference라고 불리며, R-Value에 대한 새로운 별칭을 만들어 줄 때 사용된다. R-Value와 std::move의 관계..

ProgrammingLang/c++ 2021.12.05