ProgrammingLang 122

[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

[C++개발자되기]24. std::function

>>[C++ 관련 모든 글 보기] 개요 std::function의 기능을 알아 본다. 지원 시기 C++11 Header #include 정의 C++에서 callable 할 수 있는 것을 객체로 만드는 class * callable 이란? c++에서 호출 가능한 것들을 말한다. 1. 함수 2. lambda 3. operator() 정의 #include std::function func 사용법 #include void print(int a, int b); std::function fp = print; 사용 시기 1. 함수를 인자로 전달 하고 싶을떄 2. vector에 function을 넣고 싶을때 3. Thread를 pool로 만들어서 관리 하고 싶을때

ProgrammingLang/c++ 2021.12.05

[C++개발자되기]23. 문자열 다루기

문자열 대문자로 변경 #include #include std::string str = "Hello World"; std::transform(str.begin(), str.end(),str.begin(), ::toupper); 문자열 parsing #include std::string s = "ITEM=this is value"; std::string value = s.substr(s.find("=") + 1); argv to vector string #include #include int main(int argc, const char** argv) { std::vector arguments(argv + 1, argv + argc); } 문자열 비교 #include int main(int argc, con..

ProgrammingLang/c++ 2021.10.07

[매크로] macro 사용시 유용한 것

# 의 의미 매크로에서 # 연산자는 문자열로 치환 시켜주는 연산자 입니다. 아래 코드에서 TEST\n은 define에서 "TEST\n" 으로 치환이 됩니다. 1) 기본 #include #define PRINT(s) printf(#s) int main() { PRINT(TEST\n); } >TEST 2) 응용 가변 인자를 사용하여 macro를 다양하게 만들기 define 선언 부분에서 가변인자는 ... 으로 표시 되며 정의 부분에서는 ##__VAR_ARGS__ 와 mapping이 됩니다. 가변 인자 참고 사이트 - https://jhnyang.tistory.com/298 #include #define PRINT(s, ...) printf(#s, ##__VA_ARGS__) int main() { PRINT(..

ProgrammingLang/c++ 2021.07.03

[Go Lang] 4. 실전 - http server + swagger 만들기

목표 web framework를 사용하여 간단한 web api server를 만들어 보겠습니다. 배포는 추후 포스트에서 다루겠습니다. 개발 환경 - ubnutu 18.04 - go version go1.16.3 linux/amd64 (업그레이드 방법: golang.org/doc/install) webframework 프레임 워크는 간단한 RESTAPI 용도로 사용 할 것 이기 때문에 gin을 사용합니다. 사용 이유 : www.slant.co/versus/4796/4797/~beego_vs_gin-gonic Slant - Beego vs Gin-gonic detailed comparison as of 2021 When comparing Beego vs Gin-gonic, the Slant community..

ProgrammingLang/Go 2021.04.14

[Go Lang] 3. Package 관리

Package란? 다른 사람이 만든 함수들의 모임이라고 정의 할 수 있다. 프로그래밍을 하면은 수많은 Package를 설치 하게 됩니다. Package는 어디에 설치 되는가? 인터텟의 튜토리얼을 보면 이거 설치 하시고 저거 설치 하세요 라는 경우가 많다. 설치까지는 좋다 그런데 어디에 설치 되어있는지 몰라서 Package 관리가 안된다. 1. 우선 pkg를 설치해 보자 필자는 web api를 만들 것이니 gin-swagger를 설치해서 api 테스트 해보록 하겠습니다. 설치 방법은 github.com/swaggo/gin-swagger여기서 참조 했습니다. 1.1 swag cli 다운로드 #go get github.com/swaggo/swag/cmd/swag@latest 자 위와 같이 설치하면 도대체 어디..

ProgrammingLang/Go 2021.04.08