본문 바로가기

분류 전체보기

(349)
음성에서 텍스트를 추출하는 프로그램 Voice2Text 서론 요즘은 유익한 정보를 동영상의 형태로 제공되는 경우가 무척 많다. 하지만 해당 발표회에 직접 참석하는 것은 고사하고 동영상을 시청하는 것도 시간에 여유가 없으면 보기가 힘들다. 그래서 동영상에서 정보를 간편하게 얻어낼 수 있도록 동영상이나 오디오 파일에서 텍스트를 추출하는 프로그램 Voice2Text를 개발했다.Voice2Text https://github.com/project-alttl/voice2text/releases/tag/v1.0.0 Release Voice2Text v1.0.0 · project-alttl/voice2textVoice2Text v1.0.0 Latest Merge branch 'main' of https://github.com/project-alttl/voice2textgi..
MAC(Message Authentication Code) MAC(Message Authentication Code)MAC는 메시지의 무결성과 송신자의 인증을 보장하기 위해 사용하는 정보다. MAC는 비밀 키를 사용해 생성되며, 수신자는 같은 비밀 키를 사용해 메시지가 변경되지 않았고, 송신자를 검증할 수 있다.MAC의 주요 기능무결성: 전송받은 메시지가 변조되지 않음을 검증인증: 메시지가 신뢰할 수 있는 송신자로부터 온 것임을 증명MAC의 생성, 전달, 검증MAC은 다음과 같은 과정으로 만들어지고 검증에 쓰인다.비밀 키 공유송신자, 수신자는 MAC 생성에 쓰이는 비밀 키를 공유한다.메시지 전송송신자는 메시지를 전송할 때 비밀 키를 이용해 생성한 MAC을 같이 전송한다.MAC 검증수신자가 받은 메시지에 비밀 키를 사용하여 MAC을 생성한다. 그렇게 만든 MAC과..
C++에서 헤더와 소스 (.h/.hpp vs .cpp) 헤더와 소스C++ 프로젝트에서는 다음과 같이 헤더와 소스가 분리된 모습을 볼 수 있다. // Vector.h#ifndef VECTOR_H#define VECTOR_Hclass Vector {private: double x, y;public: Vector(double x, double y); double length() const;};#endif // Vector.cpp#include "Vector.h"#include Vector::Vector(double x, double y) : x(x), y(y) {}double Vector::length() const { return std::sqrt(x * x + y * y);} C++에서는 헤더 파일과 소스 파일을 따로 분리하는 것이 일반적..
유니티 엔진에서 임베디드 db를 통한 데이터 관리 게임 개발을 하면 아이템의 보상 값이나 몬스터의 체력 수치 등, 데이터시트에서 수많은 데이터를 읽어야 한다. 그런데, 그 양이 수십만 줄이 되는 경우, 데이터를 몽땅 메모리에 올리면 부담이 갈 것이다. 대신 로컬 스토리지용으로 쓸 수 있는 임베디드 db를 사용하면 모든 데이터를 한 번에 메모리에 올리지 않고도 필요한 데이터를 그때그때 로드하는 방식으로 메모리 사용량을 절약할 수 있다. 이 포스트에서는 SQLite를 사용하여 데이터를 db 형식으로 관리하는 방법에 대해 소개하고자 한다.데이터를 임베디드 db로 관리하면 어떻게 좋은가요?데이터를 임베디드 db 형태로 저장하게 되면 어떤 데이터가 필요할 때마다 디스크에서 읽도록 하여 데이터가 메모리에 상주하지 않아 그만큼 메모리 사용량을 줄일 수 있다. 메모리..
C++ 연산자 오버로딩과 프렌드 기본적인 연산자 오버로딩C++은 +, == 와 같은 연산자를 오버로딩할 수 있다. #include "iostream"class Point {public: Point(int _x, int _y) { this->x = _x; this->y = _y; } Point() { Point(0, 0); } Point operator + (const Point &o) { Point ret; ret.x = o.x + (*this).x; ret.y = o.y + (*this).y; return ret; } bool operator == (const Point &o) { return (*this).x == o.x and (*this).y == o.y; }private..