전체 글 494

유니티 구글 스프레드 시트 연동 툴

https://github.com/kwon1232/HDProject/tree/main/HDproject/Assets/00_Scripts/EditorTool/WindowsEditor/DT HDProject/HDproject/Assets/00_Scripts/EditorTool/WindowsEditor/DT at main · kwon1232/HDProjectContribute to kwon1232/HDProject development by creating an account on GitHub.github.com 추가된 기능 구글 스프레드 시트 가져오는 부분에 add sheet 를 누르면 시트 주소, 시트 이름, 생성될 클래스 이름 이렇게 넣을 수 있게 수정 관련 영상진행할 것UI setting 인벤토리 퀘..

템플릿 매개변수

이전에 포스팅한 Grid에 저장될 타입 하나에 대해서만 템플릿 매개변수를 지정했다.클래스 템플릿에 지정할 때 매개변수 리스트는 다음과 같이 꺽쇠괄호 안에 나열한다.template 여기서 매개변수 리스트를 지정하는 방식은함수나 메서드의 매개변수 리스트를 지정하는 방식과 비슷하다.함수나 메서드처럼 클래스 템플릿의 매개변수도 원하는 만큼 지정할 수 있다.이때 매개변수 자리에 타입 대신 디폴트 값을 지정해도 된다.

템플릿 코드를 여러 파일로 나누기

템플릿 코드를 여러 파일로 나누기컴파일러는 소스 파일을 컴파일하는 과정에서 클래스 템플릿과 메서드를 사용하는 부분이 나올때마다,이에 대한 정의 코드를 반드시 참조해야 한다.C++에서는 이를 위해 다음과 같은 메커니즘을 제공한다.1. 클래스 템플릿 정의에 메서드 정의 함께 적기메서드 정의 코드를 템플릿을 정의하는 모듈 인터페이스 파일에 직접 작성할 수 있다.이렇게 했을 때,템플릿을 사용하는 다른 소스 파일에서 이 모듈을 임포트하게 되면,컴파일러는 이에 관련된 모든 코드를 참조하게 된다.앞서 포스팅한 Grid클래스 예제가 바로 이렇게 처리된다.2. 메서드 정의를 다른 파일에 적기또 다른 방법은 클래스 템플릿의 메서드 정의 코드를 다른 모듈 인터페이스 파티션 파일에 적는 것이다.그러면 이 클래스 템플릿 정의를..

동시성 프로그래밍 : 비동기 프로그래밍

해당 게시글은 Concurrency in C# Cookbook을 기반,Microsoft c# 문서를 기반으로 작성되었습니다. 동시성 프로그래밍을 설명하면서, 동기와 비동기의 차이를 아는 것은 중요하다.따라서 비동기 프로그래밍에 대해서 소개하겠다. 비동기 프로그래밍 비동기 프로그래밍에는 크게 두 가지 이점이 있다. 첫 번째로 최종 사용자용 GUI 프로그램은 비동기 프로그래밍을 통해 응답성을 확보할 수 있다.비동기 프로그램이라면 작업 중에도 사용자 입력에 반응할 수 있다. 두 번째로 서버 프로그램은 비동기 프로그래밍을 통해 규모를 변경할 수 있다.서버 애플리케이션은 스레드 풀만 사용해도 어느 정도 규모를 변경할 수 있지만,비동기 서버 애플리케이션은 대개 훨씬 큰 단위로 규모를 변경할 수 있다. 비동기 프..

템플릿에 사용할 타입의 요건

템플릿에 사용할 타입의 요건타입에 독립적인 코드를 작성하려면 여기에 적용할 타입에 대해 어느정도 고려해야 한다.예를 들어 Grid 템플릿을 작성할 때 T에 지정한 타입 원소는 언제든지 소멸될 수 있고,복제 / 이동 대입할 수 있다고 간주한다.어떤 클래스 템플릿을 인스턴스화할 때 그 템플릿에 있는 연산을 모두 지원하지 않으면 컴파일 에러가 발생하며,출력되는 에러 메시지도 이해하기 힘들게 표현된다.하지만 인스턴스화할 타입이 클래스 템플릿의 모든 메서드에서 사용되는 연산을 완전히 지원하지 않더라도 앞서 포스팅한 선택적 인스턴스화를 이용하여 특정 메서드만 사용하게 만드는 식으로 처리할 수 있다.C++20부터 콘셉트(concepts)라는 기능이 추가되었는데, 이를 이용하면 템플릿 매개변수에 대한 요구사항을 컴파일..

면접 예상 문제 코테 문제 - 문자열의 중복이 없는가

중복이 없는가 문자열이 주어졌을 때, 이 문자열에 같은 문자가 중복되어 등장하는지 확인하는 알고리즘을 작성하라자료구조를 추가로 사용하지 않고 풀 수 있는 알고리즘 또한 고민하라. 해답 : 먼저 면접관에게 문자열이 ASCII 문자열이지 유니코드 문자열인지 물어 봐야 한다.이를 통해 컴퓨터 과학을 깊이 있게 이해하고 있다는 사실을 알릴 수 있으며,세부사항을 신경 쓰고 있다는 인상을 남기자. 여기서는 간단하게 ASCII 문자열이라고 가정해보자.이 가정이 없다면 저장 공간의 크기를 늘려야 할 수도 있다. 이 문제를 푸는 한 가지 방법은 문자 집합에서 i번째 문자가 배열 내에 존재하는지 표시하는 불린(boolean) 배열을 사용하는 것이다.같은 원소에 두 번 접근하면, 바로 false를 반환한다. 또한 문자..

템플릿 선택적 인스턴스화, 명시적 인스턴스화

컴파일러는 다음과 같은 암묵적인 클래스 탬플릿 인스턴스화 (implicit class template instantiation) 코드를 보면 그 클래스 템플릿에 있는 가상 메서드에 대한 코드를 생성한다. 하지만 virtual로 선언하지 않은 메서드는 코드에서 실제로 호출하는 것만 컴파일 한다.예를 들어 Grid 클래스 템플릿을 이용하는 코드를 다음과 같이 main() 함수에만 사용한다고 하자.Grid myIntGrid;myIntGrid.at(0, 0) = 10;그러면 컴파일러는 int 버전의 Grid에서 제로 인수 생성자(zero argument constractor = 영인수 생성자), 소멸자, 비 const at() 메서드만 컴파일하고, 복제 생성자나 대입 연산자 등에 대한 코드는 생성하지 않는다.이..

동시성의 개요

동시성은 멋진 소프트웨어의 핵심적인 특징이다.동시성은 이미 수십 년 전 부터 사용할 수 있었지만 제대로 구현하기 어려웠다.동시성 소프트웨어는 코드 작성도, 디버깅도, 유지 보수도 어려워서 결국 많은 개발자가 동시성을 피하는 쉬운 길을 택했다.요즘은 닷넷 프로그램에서 사용할 수 있는 라이브러리와 언어 기능 덕분에 동시성의 구현이 훨씬 수월해졌다.마이크르소프트는 동시성의 진입 장벽을 크게 낮추는 데 앞장서 왔다.예전에는 동시성 프로그래밍이 전문가의 영역이었지만,요즘은 모든 개발자가 동시성을 받아들여야 하며, 또 받아들일 수 있다. 동시성이란,한 번에 두 가지 이상의 작업을 수행하는 것이다. 이 정의를 통해 동시성의 유용함이 잘 들어났으면 좋겠다.애플리케이션은 데이터 베이스에 쓰는 동안 사용자의 입력에 응답..

백준 골드 4 최단경로 1753

https://www.acmicpc.net/problem/1753 문제 분석 후 예제 입력 이해 문제 분석 시작점과 다른 노드와 관련된 최단 거리를 구하는 문제로,다익스트라 알고리즘의 가장 기본적인 형태를 구현할 수 있는지를 묻고 있다.다익스트라 알고리즘을 코드로 구현할 수 있는가? 를 묻는 문제이다. 손 코딩 해보기 인접 리스트에 노드를 저장하고 거리 배열을 초기화한다.거리 배열은 출발 노드는 0, 나머지는 무한으로 초기화하면 된다.INF => 무한이라는 의미이니까. 최초 시작점을 큐에 삽입하고, 다음 과정에 따라 다익스트라 알고리즘을 수행한다. 다익스트라 알고리즘 수행 과정 ① 거리 배열에서 아직 방문하지 않는 노드 중 현재 값이 가장 작은 노드를 선택한다.② 해당 노드와 연결된 노드들의 최..