ProgrammingLang 123

[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

[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