본문 바로가기

프로그래밍

(54)
230806 C++ 라이브러리 1. 동적 라이브러리는 '공유 라이브러리'라고도 불리며, 정적 라이브러리의 문제를 해결하기 위해 만들어졌다. 프로그램이 동적 라이브러리와 링크되면, 라이브러리 모듈이 실행 파일로 복사되는 대신 동적 라이브러리가 필요하다는 정보만 기록하여 둔다. 이후 실행 파일이 실제로 실행되어 메모리로 올라가면 동적 라이브러리를 참조하여 필요한 정보를 메모리에 올리게 된다. 이후 다른 프로그램이 실행되며 같은 라이브러리 함수를 참고하고자 하면, 이미 메모리에 존재하는 동적 라이브러리를 참고하여 바로 링크 작업을 하게 된다. 2. 특정 CPU나 운영체제를 위해 최적화된 동적 라이브러리를 사용할 수 있다. 3. dynamic linking은 별다른 옵션을 주지 않으면 운영체제에서 해주며(기본 옵션이 dynamic linki..
[C++] Const 상수 (포인터 상수, constexpr, const_cast) const키워드는 대상을 상수화하여 초기화 이후로 값 수정을 하지 못하게 만드는 키워드입니다. 상수에 대해서는 경쟁 상태가 발생하지 않으며, 프로그램 내의 객체가 값이 바뀔 수 없다는 것을 알면 프로그램을 해석하기가 매우 쉬워집니다. c언어를 주로 사용했던 사람은 매크로를 사용하여 매직넘버를 대체하는 습관이 있는 경우가 있는데, c++에서는 이러한 케이스를 상수로 처리하는 것을 선호합니다. - 매크로는 영향 범위가 너무 넓다 - 매크로보다 상수가 디버깅하기 쉽다 - 상수가 변경에 더 유리하다. (예: const 변수였던 것이 기획 의도 변경 등으로 런타임에 값이 변경되게 바뀌는 경우) 포인터 상수 // 포인터가 가리키는 대상의 값을 변경하지 못하게 막음 const int* val; // 포인터가 가리키는..
NestJS 입문 - 권한, 로그, 설정 이 강의는 인프런의 '따라하며 배우는 NestJS' 강의를 보고 학습한 글입니다. [무료] 따라하며 배우는 NestJS - 인프런 | 강의 이 강의를 통해 NestJS에 대해서 배울 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com queryBuilder - 쿼리를 이용한 TypeORM 사용 - 복잡한 처리를 할 때 가끔 사용할 일이 있습니다 // boards.service.ts async getAllBoards(user: User): Promise { const query = this.boardRepository.createQueryBuilder('board'); query.where('board.userId = :userId', {userId: user.id}); const bo..
NestJS 입문 - 인증기능 이 강의는 인프런의 '따라하며 배우는 NestJS' 강의를 보고 학습한 글입니다. [무료] 따라하며 배우는 NestJS - 인프런 | 강의 이 강의를 통해 NestJS에 대해서 배울 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com 비밀번호 암호화하기 bcryptjs 이용 1. 원본 비밀번호를 저장 (최악) 2. 비밀번호를 암호화 키와 함께 암호 (양방향) 3. SHA256등 Hash로 암호화해서 저장 (단방향) jwt 로그인을 할 때 고유 유저를 위한 토큰을 생성해야 함 jwt는 그 토큰을 생성할 때 사용하는 모듈 - Json Web Token - 당사자간에 정보를 json개체로 안전하게 전송하기 위한 컴팩트하고 독립적인 방식을 정의하는 개방형 표준 구조 Header: 메타 데이터..
NestJS 입문 - pipe, TypeORM 이 강의는 인프런의 '따라하며 배우는 NestJS' 강의를 보고 학습한 글입니다. [무료] 따라하며 배우는 NestJS - 인프런 | 강의 이 강의를 통해 NestJS에 대해서 배울 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com Pipe - Injectable 데코레이터가 달린 클래스 - 클라이언트의 request에 대한 data transformation, data validation 수행 - Nest는 메소드가 호출되기 직전에 파이프를 삽입하고, 파이프는 메소드로 향하는 인수를 수신하고 이에 대해 동작 파이프의 종류 - Handler-level Pipes, 핸들러에 적용 - Parameter-level Pipes, 파라메터에 적용 - Global-level Pipes, mai..
NestJS 입문 - 기본 요소, CRUD 이 강의는 인프런의 '따라하며 배우는 NestJS' 강의를 보고 학습한 글입니다. [무료] 따라하며 배우는 NestJS - 인프런 | 강의 이 강의를 통해 NestJS에 대해서 배울 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com 모듈 - root모듈인 AppModule에서 시작 - Module 데코레이터를 가 - 기본적으로 싱글 Controller - 클라이언트의 요청을 처리하고 servcie에 요청후 결과를 사용자에게 반환 - CRUD 인터페이스 핸들러 구 - Controller 데코레이터를 가짐 Providers - Nest의 기본 개념으로, 대부분의 기본 Nest 클래스는 서비스, 리포지토리, 팩토리, 헬퍼 등의 프로바이더로 취급될 수 있음 - 종속성으로 주입 가능 (객체의..
간신 개발 목표 (유니티 RPG 프로젝트) 지난 글에 이어 현재 작업하고 있는 내용과 상반기 목표를 정리하기 위해 이 글을 작성함 2월 - 필드 몬스터 시스템 + 조작개선 캐릭터 조작 변경 Riko 애니메이션 변경 몬스터 AI 수정(Nav Mesh기반 이동 추가) 몬스터 스텟 시스템 제작 전투 시스템 제작(플레이어와 몬스터가 서로 공격을 주고받는 부분) HUD UI 제작 HUD UI를 제작함으로써, 위에서 적용된 모든 피쳐를 합한 결과를 확인할 수 있을것 3월 - 캐릭터 시스템 완성 기본 캐릭터 시스템 (스킬, 스태미너, 체력) 캐릭터 3종 완성 ( Riko 제외 궁극기는 제외될 가능성 있음 ) Ai의 경우 화살 처리를 어떻게 할껀지 고민 필요 캐릭터 관리 시스템 캐릭터 UI 제작 캐릭터 스텟 제어 시스템 제작 GitHub - eugene-doo..
간신 개발 일지 - 23.02.11(유니티 RPG 프로젝트) 계속 개발중이긴 했는데 티스토리의 존재를 잊어서 포스팅을 안하고 있었음. 개발기록을 티스토리 같은 곳에 남기는것보다 그냥 깃허브 이슈탭에 남기는게 훨씬 편하다.. 현재까지 작업된 내용은 이런것들이 있다. 지금까지는 프로젝트 기반작업과 사용할 라이브러리에 익숙해지는 시간을 갖고 있었고, 현재 2월 작업에서는 몬스터와 관련된 콘텐츠들을 작업하고 있다. 현재 조작법 너무 불편하고.. 아무리 생각해도 캐릭터 애니메이션 에셋 뽑기를 잘못한거같아서 지금 캐릭터 애니메이션과 조작법을 뜯어고치는 작업을 하고 있다. 작업을 하면서 느낀점은.. 1. 오브젝트들을 개발자가 자유롭게 제어하기 위해서는 유니티 물리는 사용하지 않는게 좋다. 그게 사실적인 움직임일지는 모르겠지만, 개발자가 예상치 못한 케이스가 자꾸 일어나고 무엇..