본문 바로가기

PL

(103)
[Python] wheel / 프로젝트 패키징 & 배포 pip install을 하면 setup.py에서 오류가 난다고 할때가 있다. error: invalid command 'bdist_wheel' 에러 wheel을 설치 후 재시도 pip install wheel setup.py는 install을 하면서 환경 설정을 해주는 코드이다. setuptools를 위한 빌드 스크립트이다. 이렇게 빌드된 패키지를 wheel이라는 빌드 패키지로 .whl의 확장자를 갖는 파일로 빌드해준다. [Python] 프로젝트 패키징 & 배포 패키징이란? 패키징이란 모듈별로 생성한 실행 파일들을 하나로 합쳐서 배포 및 설치가 가능한 파일을 만드는 것이다. 파일을 패키징하는 이유는 다른 환경에 소프트웨어를 배포하기 위함이기 jammdev.tistory.com 패키징이란? 패키징이란 모듈..
[C++] extern, static static은 해당 파일 안에서만 사용 extern은 파일 외부에서도 사용 가능 C++ 04.03 - 전역 변수와 링크 (Global variable and linkage) 04.03 - 전역 변수와 링크 (Global variable and linkage) 함수 내부에서 정의된 변수를 지역 변수(local variable)라고 한다. 지역 변수는 블록 스코프(정의된 블록 내에서만 접근 가능)가 있고 자동 주기(정의 boycoding.tistory.com static과 extern 키워드를 이용한 내부/외부 링크 (Internal and external linkage via the static and extern keywords) 변수는 스코프(scope)와 주기(duration) 외에도 링크(linka..
[C++] 암시적 형 변환 (Implicit type conversion) C++ 05.01 - 암시적 형 변환 (Implicit type conversion) 05.01 - 암시적 형 변환 (Implicit type conversion) 이전에 변수의 값이 일련의 비트로 저장되는 것과 변수의 자료형은 컴파일러에 비트를 의미 있는 값으로 해석하는 방법을 알려준다는 것을 배웠다. 다 boycoding.tistory.com 기본적인 형 변환에는 두 가지 유형이 있다. 암시적 형 변환(implict type conversion): 즉 컴파일러가 자동으로 하나의 기본 자료형을 다른 자료형으로 변환한다. 자동 형 변환(automatic type conversion)이라고 불린다. 명시적 형 변환(explict type conversion): 형 변환을 하기 위해 형 변환 연산자(type..
[C++] thread, async 차이점 C++ thread와 async의 차이점 C++에서 병렬처리를 하기위해 여러가지 클래스를 제공합니다. C++에선 std::thread, std::task, std::future, std::async를 제공합니다. 그 중 많이 쓰이는 std::thread와 std::async에 대해 설명해볼까 합니다. 1. C++ hwan-shell.tistory.com 이 둘의 차이점은 내부에 있습니다. std::thread 클래스는 말 그대로 Thread만 생성해주는 역할을 합니다. 물론 Thread가 종료를 기다리는 .join() 함수같은 기본적인 함수들을 제공하지만 이런것들을 제외하곤 날 것이라고 봐도 무방합니다. 말 그대로 Thread만 생성하니깐요. 반면std::async는 std::task클래스 기반으로 만들..
[C++] 전처리문 [C++] 전처리문 안녕하세요. 명월입니다. 이 글은 C++에서 전처리문에 대한 글입니다. 전처리문이란 C++이 컴파일해서 실행되기 전에 처리되는 소스 메크로라고 생각하면 됩니다. 간단한 예를 들면 debug 상태에서 nowonbun.tistory.com 전처리문의 종류는 총 12가지 정도 있습니다. 전처리기설명 조건부 포함 전처리문(Conditional inclusions) #if 전처리 분기문 if에 해당됩니다. define에 정의 값을 비교합니다. #elif 전처리 분기문 else if에 해당됩니다. define에 정의 값을 비교한다. elif 전처리문 단독으로 사용할 수 없습니다. #else 전처리 분기문 else에 해당됩니다. else 전처리문 단독으로 사용할 수 없습니다. #endif 전처리 ..
[Python] python3, pip3 'SyntaxError: Non-ASCII character ...' 에러 -> Python 3.x 버전에서는 기본적으로 utf-8 인코딩을 사용하고 있어 이와 같은 문제가 없습니다. Python 3.x를 사용하고 있는데 이 에러를 만났다면, 첫 줄에 나와있는 파이썬 관련 셔뱅이 python 2.x 버전을 가리키고 있는게 아닌지 확인해 보시기 바랍니다. python 2.x 버전은 기본적으로 ASCII 인코딩을 사용하고 있어 별도의 선언이 없다면 이와 같은 문제가 발생합니다. [파이썬] 'SyntaxError: Non-ASCII character ...' 에러 해결 파이썬 프로그래밍을 하다가 다음 에러 메시지를 만나게 되었습니다. SyntaxError: Non-ASCII character '\xec' in..
[Python] ppdetection + nvidia-docker 설치 과정 오류 0. cuda10.2, cudnn7.6.5 설치 필요 pp-tracking ubuntu 18.04使用GPU推理出现Segmentation fault_tracking安装失败,服务未安装_wangxinRS的博客-CSDN博 听说pp-tracking做跟踪比较好,试用,发现使用gpu做推理会发生报错,遂记录报错排除方法。 1. 报错 按照《PP-Tracking之手把手玩转多目标跟踪》教程,输入如下命令进行推理 python deploy/pptracking/pytho blog.csdn.net 1. nvidia-docker 설치 2. nvidia-docker Dockerfile만들기 - gpg key값 없음 - python 없음 - python 설치 2. python3, python 3. pip3, pip 4. wget - pip in..
[C++] lambda 표현식 1. C++ 람다 표현식 2. C++ lambda 사용법과 구조 2-1) 람다 기본 모양과 사용법 2-2) 람다 캡처 사용법 3. C++ 람다의 필요성과 사용 예제 [C++] 람다 표현식, lambda에 대해서 안녕하세요. BlockDMask입니다. 오늘은 C++11, 14에서 추가된 lambda 표현식에 대해 알아보겠습니다. 1. 람다 표현식 2. 람다 표현식 사용 방법과 구조 3. 람다의 필요성, 사용 예제 1. C++ 람다 표현식 lambda blockdmask.tistory.com 1. C++ 람다 표현식 lambda는 람다 표현식, 람다 함수, 익명 함수 등의 이름으로 불립니다. 일단 람다 함수가 어떻게 생겨먹었는지 먼저 보겠습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1..
[Python] sys.path PYTHONPATH: 파이썬 파일 탐색 경로 sys.path, PYTHONPATH: 파이썬 파일 탐색 경로 import 문을 통해 다른 파이썬 파일을 불러올 때, 파이썬은 내부적으로 파일을 찾기 위해 sys.path와 PYTHONPATH에 있는 경로를 탐색합니다. 이 두 변수를 적절히 수정해 임의의 디렉터리에 있는 파이썬 www.bangseongbeom.com import 문을 통해 다른 파이썬 파일을 불러올 때, 파이썬은 내부적으로 파일을 찾기 위해 sys.path와 PYTHONPATH에 있는 경로를 탐색합니다. 이 두 변수를 적절히 수정해 임의의 디렉터리에 있는 파이썬 파일을 손쉽게 불러올 수 있습니다. sys.path에 append()로 경로 추가 sys.path는 디렉터리의 경로들이 기록된 문자열..
[Python] 상위 경로에 있는 파일을 import 상위 경로 파일 상위 폴더를 참조할 때는 from에 상위 경로를 입력해서 import할 수 없고, 절대경로 path에 상위 경로에 대한 path를 추가해줘야 합니다. 그러면 추가된 상위폴더 경로에서 상대적으로 파일들을 참조할 수 있습니다. 실행파일 경로의 상위 경로를 구하는 코드는 os.path.dirname(os.path.abspath(os.path.dirname(__file__))) 입니다. 이 경로를 sys.path.append로 절대경로에 추가할 수 있습니다. # main.py import sys sys.path.append(os.path.dirname(os.path.abspath(os.path.dirname(__file__)))) from . import library $ tree . ├── m..
[Python] 파일 경로와 슬래시(/) 파이썬 코드에서 파일 경로를 표시할 때 "C:/doit/새파일.txt" 처럼 슬래시(/)를 사용할 수 있다. 만약 역슬래시(\)를 사용한다면 "C:\\doit\\새파일.txt" 처럼 역슬래시를 2개 사용하거나 r"C:\doit\새파일.txt"와 같이 문자열 앞에 r 문자(Raw String)를 덧붙여 사용해야 한다. 왜냐하면 "C:\note\test.txt"처럼 파일 경로에 \n과 같은 이스케이프 문자가 있을 경우 줄바꿈 문자로 해석되어 의도했던 파일 경로와 달라지기 때문이다. 04-3 파일 읽고 쓰기 우리는 이 책에서 이제까지 값을 입력받을 때는 사용자가 직접 입력하는 방식을 사용했고 출력할 때는 모니터 화면에 결괏값을 출력하는 방식으로 프로그래밍해 왔다. 하지만 ... wikidocs.net
[C&C++] undefined reference to~ /cpp 파일에서 c 파일 불러오기 [C, C++] error: undefined reference to 빌드 시 가장 흔하게 발생하는 에러 중 하나로 다음 두가지 이유 중 하나로 발생한다. 1. 가장 흔히 발생하... blog.naver.com cpp 파일에서 c 파일에 구현되어 있는 함수를 call 할때 발생한다. c 파일에 구현되어 있는 함수의 정의가 적혀 있는 header 파일을 #ifndef _FILENAME_H_ #define _FILENAME_H_ #ifdef __cplusplus extern "C" { #endif .... #ifdef __cplusplus } #endif #endif /* _FILENAME_H_ */ extern "C"{ } 로 감싸야 함
[C&C++] 조건부 컴파일 사용하기 C 언어 코딩 도장: 76.1 조건부 컴파일 사용하기 조건부 컴파일은 #ifdef와 #endif 지시자를 사용하여 정의합니다. #ifdef에 매크로를 지정하면 해당 매크로가 정의되어 있을 때만 코드를 컴파일합니다. #ifdef 매크로 코드 #endif 다음 내용을 소스 코 dojang.io #ifdef, #endif가 전처리기 과정을 거치면 코드는 다음과 같이 바뀝니다.▼ 그림 76‑1 #ifdef 조건부 컴파일
[Python] json파일 다루기 (읽기, 쓰기, 수정) # json 파일 읽기 해당 파일을 읽기 위해서는 json 모듈을 임포트 한후, load함수를 통해 데이터를 가져올 수 있다. import json with open('C:\\test.json', 'r') as f: json_data = json.load(f) print(json.dumps(json_data) ) 출력 : {"K5": {"price": "5000", "year": "2015"}, "Avante": {"price": "3000", "year": "2014"}} 아래와 같이 들여쓰기를 통해 깔끔하게 출력하는 옵션도 있다. print(json.dumps(json_data, indent="\t") ) 출력 { "K5": { "price": "5000", "year": "2015" }, "Avan..
[Python] os.path.join 실제로는 join()은 디렉토리의 구분 문자가 들어있으면, 그것을 root로 보는 성질이 있다. 대처법으로는 먼저 리스트를 이용해 문자열을 바꿔 쓰는 방법이 있다. [python] os.path.join사용법 os.path.join이란 경로(패스)명 조작에 관한 처리를 모아둔 모듈로써 구현되어 있는 함수의 하나이다. 인수에 전달된 2개의 문자열을 결합하여, 1개의 경로로 할 수 있다. os.path.jon()을 사용하기 위 engineer-mole.tistory.com
[Python] os.system os.system은 실행결과를 반환값으로 제공하는게 아니라 활용이 안될거 같구요 os.popen을 사용해보세요 result = os.popen("net share").read().strip().split('\n') 나머지는 원하시는 대로 더해서 쓰시면 될거같습니다 파이썬 os.system 결과를 리스트로 저장할 수 있을까요 아래아래 글 답변으로 한 고개 넘었습니다. 감사 합니다. import os os.system(net shar m.ppomppu.co.kr
[JAVA] Java Comparable, Java Comparator 따라서 우리가 임의로 만든 클래스에서도 Comparable 인터페이스를 구현하기 위해서는 compareTo()를 재정의해줘야 한다. 닉네임순으로 정렬하고 싶다면 아래와 같이 nickname 으로 compareTo를 재정의한다. package compare; public class MapleStoryUser implements Comparable { private String nickName; // 닉네임 private String guildName; // 길드명 private int level; //레벨 private int money; // 보유 메소 //생성자 public MapleStoryUser(String nickName, String guildName, int level, int money) ..
[JAVA] 우선순위 큐(Priority Queue), 오름차순(기본), 내림차순 사용하기 우선순위 큐도 Java에서 내부적으로 구현되어 있어 사용이 용이하다. 큐와 동일하게 add(), peek(), poll() 등의 메소드를 사용할 수 있다. add() 대신 offer() 메소드를 사용해도 동일한 결과를 얻는다. 우선순위 변경하기 우선순위를 정하는 기준은 Java의 정렬 기준과 동일하다. Java는 기본적으로 낮은 숫자부터 큰 숫자까지 오름차순으로 정렬하게 되는데, 만약 다른 오름차순으로 정렬하고 싶다면 Comparator 클래스나 Comparable 인터페이스를 이용해야 한다. Ex) 객체의 어떤 값에 따라 우선순위를 정해 정렬해야 할때, 오름차순이 아닌 내림차순 정렬을 할때 등등 Integer는 Collections.reverseOrder()를 사용해 내림차순 정렬을 할 수 있..
[Python] PIP Command 설치된 Package 확인하기 pip list pip show PackageName list 옵션의 경우 설치된 모든 Package name 과 Version 을 출력 해 줍니다. show 옵션의 경우 지정한 Package 에 한하여 상세한 내용을 출력해 줍니다. Package 가 설치되어 있는지 확인하기 pip search PackageName search 옵션의 경우 설치된 Package 가 있는지 찾아주며 각 모듈별 상세한 내용을 보여 줍니다. Package install 하기 pip install PackageName Package upgrade 하기 pip install --upgrade PackageName or pip install -U PackageName Package uninstall ..
[C] 실행 파일 옵션 사용하기 C 언어의 main 함수는 다음과 같이 실행 파일 옵션을 매개변수로 받을 수 있습니다. int main(int argc, char *argv[]); 먼저 option이라는 프로젝트를 만들고 main.c 파일을 추가한 뒤 다음 내용을 입력하세요. Win + R을 누른 뒤 cmd.exe를 입력하여 명령 프롬프트를 실행합니다. 그리고 프로젝트 디렉터리의 Debug 디렉터리로 이동한 뒤 다음과 같이 실행합니다(c:\project\option\Debug). option.exe에 Hello, C, Language이라는 옵션을 지정했습니다. 이 상태로 실행을 해보면 실행 파일 이름과 옵션이 그대로 출력됩니다. main 함수에서 첫 번째 매개변수 argc는 옵션의 개수이며 argv는 옵션 문자열의 배열입니다. 옵션은 ..
[JAVA] exe파일 실행, Java에서 cmd 사용하기 MS949를 해야 글자가 안 깨진다. /C는 다음과 같은 옵션이다. (/C옵션) /C 문자열이 지정한 명령어를 수행한 후에 종료합니다. 저 위의 명령어가 String 배열로 입력이 들어가는 것이다. 내부적으로 실행하는 방법은 Runtime Class를 이용하여 별도로 Thread를 이용하여 실행하는 방법이다. 원래 Java의 경우 Java 실행시 Runtime Class 실행하여 1개의 Thread를 생성한다, 내부적으로 Runtime Class를 하나 더 생성하여 도스명령어를 이용한 데이터를 가져온다. 이상이다. 만약 DB 백업 을 원하신다면 아래와 같이 데이터를 넣으면 쉽게 적용할 수있다. cmd[0] = "cmd.exe"; cmd[1] = "/C"; cmd[2] = "mysqldump -u root..
[C&C++] 구조체 비트 필드 사용하기 이제 구조체를 7비트, 3비트, 1비트로 나눠서 비트 필드를 정의해보겠습니다.▼ 그림 56‑1 구조체 비트 필드 다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요. C 언어 코딩 도장: 56.1 구조체 비트 필드를 만들고 사용하기 56 구조체 비트 필드 사용하기 지금까지 구조체의 멤버는 각 자료형 크기만큼 공간을 차지했습니다. 하지만 구조체 비트 필드를 사용하면 구조체 멤버를 비트 단위로 저장할 수 있습니다. 특히 C dojang.io
[C++] static_cast, reinterpret_cast 형 변환 연산자: static_cast와 reinterpret_cast의 차이 이번에는 간단하게 static_cast와 reinterpret_cast의 차이점에 대하여 알아봅니다. 실제로 이 두가지는 비... blog.naver.com 컴퓨터는 비트 단위로 정보를 저장합니다.1 당연히 정수 5와 실수 5.0은 엄청난 차이가 있습니다. 단순히 변환을 명령했더니 이러한 복잡한 처리를 내부에서 전부 해줍니다. 이것이 static_cast입니다. static_cast는 형 변환을 요청받으면 내부에서 지정된 형 변환 함수를 호출합니다. int와 float사이에도 그러한 함수가 있는 것입니다. 다음 예제를 봅시다. 당연히 형 변환은 일어나지 않습니다. 그도 그럴것이 형 변환 함수도 없으며 어떻게 변환해야되는지 컴파..
[C++] const_cast const_cast(expression) const_cast(대상) const_cast는 포인터(pointer) 또는 참조형(reference)의 상수성(const)를 잠깐 제거해주는데 사용합니다. const_cast는 volatile 키워드를 잠깐 제거해 주는 데에도 사용이 가능합니다. 다른 캐스트 연산자가 하는 형 변환은 불가능 하며 오직 상수성(const)를 제거하는 것만 사용가능 합니다. 또한 다른 캐스트 연산자는 const_cast가 하는 상수성(const) 제거를 하지 못합니다. 함수 포인터에는 사용 불가능합니다. (해봤음;;) > 예제(1) - 포인터(pointer) 상수성(const) 제거 #include using namespace std; int main(void){ char str[]..
[C++] type cast 4가지 종류 static_cast const_cast reinterpret_cast dynamic_cast [C++] const_cast (타입 캐스트 연산자) 안녕하세요. BlockDMask 입니다. 오늘은 C++ 의 네가지 타입 캐스트 연산자 중에 (static_cast, const_cast, reinterpret_cast, dynamic_cast) const_cast 에 대해 알아보겠습니다. > const_cast 에 관한 기본 특.. blockdmask.tistory.com
[C++] 함수를 객체로 (C++ std::function, std::mem_fn, std::bind) 씹어먹는 C ++ - modoocode.com Callable 의 정의 std::function std::mem_fn std::bind 1. Callable Callable 이란, 이름 그대로 나타내듯이 호출(Call) 할 수 있는 모든 것을 의미합니다. 대표적인 예시로 함수를 들 수 있겠지요. 하지만 C++ 에서는 () 를 붙여서 호출할 수 있는 모든 것을 Callable 이라고 정의합니다. 예를 들어서 f 역시 일반적인 함수의 꼴을 하고 있지는 않지만, () 를 통해서 호출할 수 있기에 Callable 이라 할 수 있습니다. 2. std::function C++ 에서는 이러한 Callable 들을 객체의 형태로 보관할 수 있는 std::function 이라는 클래스를 제공합니다. C 에서의 함수 포인..
[C++] 무한대(infinity) [C++] infinite infinite 이미지좀 가져올라고 검색했더니 가수 인피니트가 뜬다....짜증난다..우선 C++에는 무한대 타입이 존재한다. 의 std::numeric::limits::infinity() 이다.하지만 이 메소드는 실수타입에서만 제 velog.io
[C++] 우선순위 큐(Priority Queue), pair<int, int> 내림차순 오름 차순 [C++] STL Priority_Queue Library 기본 명령어 정리 안녕하세요, 여행벌입니다. 오늘은 우선순위큐(Priority Queue)에 대해서 알아보도록 하겠습니다. 1. Priority_Queue(우선순위큐) 란? Priority_Queue는 Queue의 한 종류로 이름 그대로 우선순위에 따라 정렬된 travelbeeee.tistory.com [C++, STL] 우선순위 큐(priority queue) 비교연산자 구현 서론 2020/04/27 - [자료구조와 알고리즘] - [C++, STL] 알고리즘 문제풀이를 위한 우선순위 큐(priority queue) 우선순위 큐는 비교연산자를 통해 자료의 우선순위를 정할 수 있다. 그리고 STL에는 자료를 hydroponicg..
[C++] 2차원 배열 초기화 2차원배열의 모든 원소의 값을 1로 하고 싶은 경우 1)각 원소 직접 지정 int arr[5][5]={{1,1,1,1,1},{1,1,1,1,1},{1,1,1,1,1},{1,1,1,1,1},{1,1,1,1,1}}; 이렇게 int arr[5][5]={{1}}; 하나만 지정하면 나머지는 모두 0이 들어갑니다. 다시 해보니 안되네요... int area[M][N]={{1,0,0,0,0},}; 로 한줄은 해줘야 나머지가 모두 0이 들어갔습니다. 2)std::fill_n 이용 int arr[5][5]; fill_n(arr[0],25,1) fill_n(arr,25,1)은 에러가 납니다. arr, arr[0]의 메모리주소를 확인해보면 값은 같은데... 3)std:fill이용 int arr[5][5]; fill(arr[..
[Python] 삼항연산자 [Python] 삼항 연산자(Ternary Operator) 대부분의 언어에서는 아래 형태의 삼항 연산자를 지원합니다. condition(조건)이 참이면 true_value 값을 ... blog.naver.com