no image
S/W 개발 관련 사이트 모음
이 게시글은 S/W 관련 사이트를 하나씩 추가할 공간이다. 메이커스 메이커스는 Qt, Linux, WIndows, Embedded, C/C++, 파이썬 등에 대한 예제가 게시되는 사이트다. 어느 한 분야에 종속되지 않고 다양한 분야의 자료들이 올라온다. 또한, S/W 개발 분야의 최신 정보도 올라오니 심심하면 찾아가서 보자.
2023.07.20
C언어 !! 이중 부정 연산자
이중 부정 연산자란 C언어에서 라이브러리를 활용하다 보면 두 개의 논리 부정 연산자(!)를 쓴 경우를 볼 수 있다. 이중 부정 연산자는 피연산자를 부정한 후 다시 부정하는 셈이다. 언뜻 보면 의미가 없어 보이지만, 이중 부정 연산자는 피연산자를 boolean값으로 변환하는 효과가 있다. 예를 들어, !!(expression)은 expression을 boolean 값으로 변환하여 반환하는 것이다. 이중 부정 연산자 사용 이유 이중 부정 연산자를 사용하는 이유는, 표현식의 결과를 강제로 boolean값으로 변환하기 위해서다. boolean값으로 변환된 표현식은 0 또는 1과 같은 정수로 나타내지 않아도 된다는 이점이 있다. 이 외에도, 코드의 가독성이 높아지거나, 불필요한 형변환이나 오류 발생 가능성을 줄이..
2023.07.20
.NET Wrapper란?
.NET Wrapper는 .NET Framework로 작성된 코드를 다른 프로그래밍 언어나 플랫폼에서 사용할 수 있도록 해주는 래퍼(Wrapper)다. 일반적으로 C# 또는 VB.NET으로 작성된 .NET 어셈블리는 C++이나 Java 같은 다른 언어나 플랫폼에서 직접 사용할 수 없다. 이런 경우 .NET Wrapper를 사용하여 .NET 어셈블리의 기능을 래핑(wrapping)하고 다른 언어나 플랫폼에서 사용할 수 있는 API(Application Programming Interface)를 제공한다. 예를 들어, C++ 개발자가 .NET Framework로 작성된 C# 어셈블리의 기능을 사용하려면 .NET Wrapper를 사용하여 C# 어셈블리를 C++에서 호출할 수 있는 API로 래핑해야 한다. 이렇..
2023.07.11
.d파일이란?
요약 C/C++ 프로그래밍에서 .d 파일은 의존성 파일(dependency file)을 의미한다. 의존성 파일은 소스 코드 파일과 해당 파일이 참조하는 다른 파일 또는 헤더 파일 간의 의존 관계를 기록한 파일이다. 컴파일러는 의존성 파일을 사용하여 소스 코드 파일이 변경될 때마다 해당 파일을 다시 컴파일해야 하는지 여부를 결정한다. 이를 통해 개발자는 프로그램의 일부만 수정했을 때 전체 프로그램을 다시 컴파일하지 않고도 수정 사항을 반영할 수 있다. Makefile과의 관계 주로 Makefile에서 사용되는 의존성 파일은 효율적인 빌드 프로세스를 수행하기 위해 필요하다. Makefile은 소스 코드 파일 간의 의존 관계와 컴파일 및 링크 방법을 정의하는 텍스트 파일이다. 의존성 파일을 사용하여 변경된 파..
2023.07.11
Python 기본 이중 배열과 pandas 데이터 프레임 변환
Python에서는 pandas 데이터 프레임을 자주 활용하는데, 경우에 따라 기본 형식의 이중 배열과 데이터 프레임간의 데이터 형변환이 종종 필요하다. 방법은 아래와 같이 각각 심플하게 한 줄이면 해결된다. 이중 배열 -> 데이터 프레임 import pandas as pd arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] df = pd.DataFrame(arr) 데이터 프레임 -> 이중 배열 import pandas as pd df = pd.DataFrame({ 'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9] }) arr = df.values
2023.04.29
C언어 가변길이 배열 파라미터로 입력받기
요약 C언어에서 가변길이의 배열을 파라미터로 입력받을 수 있다. 일반적인 형태는 아니지만, C언어에서 자유도를 좀 더 높여주는 역할을 한다. 일반적인 코드와 가장 큰 첫 번째 차이는 파라미터에 , ... 처럼 새로운 형태의 파라미터를 추가흐는 것이다. 두 번째는 아래 함수들을 활용하는 것이다. va_list() va_start() va_arg() 아래 예시 코드를 보면 좀 더 이해를 통해 상세히 이해해보도록 하자. 예시 코드 void copyArr(uint8_t * data, uint8_t num, ...) { uint8_t *p; p = data; va_list ap; va_start(ap, num); for (int i = 0; i < num; i++) { *p = va_arg(ap, uint8_t)..
2023.04.16
.h 파일과 .c 파일
.h 파일과 .c 파일의 관계 컴파일러의 역할에 따라 .h파일만 잘 구성되면 .c파일을 잘 찾아간다.. 예) 컴파일러 혹은 그 밑단의 무언가가 .h파일을 찾으면, 이와 관련되 .c파일(또는 정의된 내용)을 알아서 찾는다. .h 파일과 .c파일의 용도 구분 용도 .h 함수, 변수, 매크로 등의 선언 .c 순수 소스 코드 파일 함수 및 변수의 구현을 포함 컴파일러가 컴파일하여 실행파일을 생성하는데 사용 공통 컴파일러는 일반적으로 헤더파일을 처리하여 컴파일 시간에 함수 및 변수를 선언 헤더는 일반적으로 컴파일 안되고 .C파일만이 컴파일됨
2023.04.16
AES(Advanced Encryption Standard, 고급 암호화 표준) 요약
개요 AES는 ISO/IEC 18033-3 표준에 포함되어 있다. 암호화 키로 128 bit, 192 bit, 256 bit를 가질 수 있는데 이를 AES-128, AES-192, AES-256 라고 한다. 128bit / 16Byte / 10 라운드 192bit / 24Byte / 12 라운드 256bit / 32Byte / 14 라운드 AES는 대입치환(Substitution-Permutation Network)을 사용한다. 말 그대로 대입(Substitution)과 치환(Permutation)을 이용하는 방식으로, bit 전체를 암호화한다. 패딩 암복화 알고리즘 경우 input 데이터의 길이는 block size의 배수가 되어야 한다. 하지만, 데이터의 길이가 block size의 배수가 아닌 경우..
2023.04.16
.gitignore 적용 내용 정리
적용 타이밍 소스트리를 활용하면, .gitignore은 git에 올라가지 않고 로컬에만 있어도 적용이 된다.
2023.04.16