Programming
-
[Unity] UniRx - WWW 통신을 Reactive하게 관리하자 (ObservableWWW)Programming/Unity 2022. 5. 10. 23:12
설명의 앞서 UniRx 라이브러리의 ObservableWWW 는 obsolete 된 WWW 클래스를 사용하고 있습니다. 따라서 Unity에서 사용을 권장하는 UnityWebRequest를 사용하면 좋은데 이를 위해 UniRx 제작자가 만든 UniTask 라이브러리를 추천합니다. 이밖에도 강력한 비동기 기능들을 지원한다고 합니다. Cysharp/UniTask: Provides an efficient allocation free async/await integration for Unity. (github.com) GitHub - Cysharp/UniTask: Provides an efficient allocation free async/await integration for Unity. Provides an..
-
[SOLID] 리스크프 치환 원칙 (Liskov Subsitution Principle)Programming/CS 2021. 12. 19. 20:13
리스코프 치환 원칙 (Liskov Substituion Principle) 만약 S가 T의 서브 타입이면, T는 S의 타입으로 대체될 수 있다는 원칙이다 예를들어 고양이(Cat)가 있으며, 그 고양이의 서브타입인 검은 고양이(Black Cat)와 하얀 고양이(White Cat)가 있다고 하자. 그럼 고양이(Cat)는 검은 고양이가 될 수도 있으며 하얀 고양이가 될 수 있다는 원리이다. 검은 고양이랑 하얀 고양이가 가지고 있는 공통된 속성들은 모두 고양이에게서 파생되었기 때문에 이들의 프로토타입인 고양이(Cat)는 이의 파생된 모든 요소에 대해서 대체가 가능하게 된다. 코드로 예를 들어보면, 그냥 고양이를 정의한 클래스가 있고 그 클래스에는 고양이가 말을 하는 기능인 speak 함수가 들어가 있다. 그리고..
-
[UNITY] 유니티에서 Image Download 하기Programming/Unity 2021. 12. 16. 19:00
WebClient 클래스의 DownloadFile 기반 함수를 통해 다운이 받아진다. 첫번 째 인자 : 다운받을 링크 주소 두번 째 인자 : 다운받은 파일을 위치시킬 파일 경로 using System; using System.Net; void DownLoadFile(Uri uri, string path, Action onCompleted = null) { WebClient client = new WebClient(); client.DownloadFileAsync(uri, path); client.DownloadFileCompleted += (s, e) => onCompleted?.Invoke(e); }
-
[SOLID] 개방 폐쇠 원칙 (Open Closed Principle)Programming/CS 2021. 12. 16. 07:25
OPEN CLOSED PRINCIPLE 개방 폐쇠 원칙 (OCP) 확장에는 열려있으나 수정에는 닫혀있어야 하는 행동 원칙 개방 폐쇠 원칙이 준수되지 않은 클래스 예시 여러 씬들을 관리하는 namespace NO_OCP { class NormalScene { public: explicit NormalScene(std::string sceneName) : sceneName(std::move(sceneName)) { } std::string GetName() const { return sceneName; } private: std::string sceneName; }; class DungeonScene { public: explicit DungeonScene(std::string sceneName) : sce..
-
[SOLID] 단일 책임 원칙 (Single Responsibility Principle)Programming/CS 2021. 12. 14. 23:17
SOLID DESIGN PRINCIPLES 의 첫번째 원칙 : SINGLE RESPONSIBILITY (단일 책임 원칙) 컴퓨터의 프로그램에서의 Module, Class, Function은 하나의 역할만 수행해야 되는 원칙이다. 예시) Function int add(const int& num1, const int& num2) // 하나의 역할만 수행함 { return num1 + num2; } void printNum(const int& num) { std::cout
-
[백준 : 2750번] 수 정렬하기Programming/백준 2021. 7. 29. 18:50
문제 N개의 수가 주어졌을 때, 이 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.를 오름차순으로 정렬하는 프로그램을 작성하시오. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. #include #include inline void Swap(int& a, int& b) { int t = a; a = b; b = t; } int main(void) { std::cin.tie(NULL); std::cout.tie(NULL); std::cin.sync_with_stdio(false); int N; std::cin >> N; std::v..
-
[백준 2798번] : 블랙잭Programming/백준 2021. 7. 20. 07:47
문제 N장의 카드에 써져 있는 숫자가 주어졌을 때, M을 넘지 않으면서 M에 최대한 가까운 카드 3장의 합을 구해 출력하시오. 입력 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장을 찾을 수 있는 경우만 입력으로 주어진다. 출력 첫째 줄에 M을 넘지 않으면서 M에 최대한 가까운 카드 3장의 합을 출력한다. 브루트 포스 문제인 만큼 세 카드를 더할 수 있는 모든 경우의 수를 구하고 그중 M하고 제일 가까워지는 값을 구하면 된다. 시간 복잡도는 O(N^3) 이다. #include #include int main(void) { s..
-
[C#] Enum 변수를 추가 정의하여 사용하는 방법Programming/C# 2021. 7. 6. 23:26
/// /// 상속구조를 통해 정의하는 방법 /// public record InteractType { public static readonly InteractType Interact = new InteractType("Interact"); public override string ToString() { return this.Value; } public InteractType(string value) => this.Value = value; public string Value { get; private set; } } public sealed record InteractTypeDerived : InteractType { public static readonly InteractType Breakable =..