전체 글
-
[후기] 나는 불안할 때 논어를 읽는다책 2022. 6. 20. 23:35
인생은 선택의 연속이라고 생각한다. 항상 눈앞에 힘든 일이 생기고 이를 해결하더라고 또 다시 힘든 일이 생긴다. 어차피 매번 선택하고 고생해야 될 거 후회없이 선택하고 즐겁게 일할 수는 없는가, 뭔가는 해야겠고, 무언가 나를 이끌어줄 기둥이 필요하다고 느낀적이 있는가, 책 "나는 불안할 때 논어를 읽는다"는 이러한 문제들을 해결할 실마리를 제공해줄 수 있는 것 같다. 이 책의 저자인 "판덩"은 공자와 그의 제자들의 대화를 기록한 논어를 현대식으로 풀어서 표현했다. 나는 사실 책을 읽기 전에 논어에 대해서 들어본 적도 없었고 어려운 말만 있을 것 같아서 걱정을 했었다. 하지만 책에서는 현대인의 일상을 비롯하여 논어의 뜻을 설명하거나 뜻풀이를 해줘서 쉽게 이해할 수 있었다. 이 책을 읽으면서 어떤 곤란한 상..
-
[간단 후기] 열혈 TCP/IP 소켓 프로그래밍책 2022. 6. 8. 01:22
윤성우 작가님의 열혈 시리즈 책 중 TCP/IP 소켓 프로그래밍이라는 책을 읽었다. 그동한 소켓프로그래밍을 인터넷을 통하거나 직접 헤딩하면서 알아갔었는데, 이번 책을 계기로 애매하게 이해했던 부분들을 확실하게 이해할 수 있어서 좋았다. 타 프로그래밍 책에 비해서 그림 및 설명이 친절해서 이해하기가 수월했던 것 같다. 특히 소켓 옵션(Chapter 09)이나 특정 소켓 함수의 에러코드의 경우는 중요한 만큼 놓치지 쉬운 부분들이 많은데, 이런 부분들에 대해서도 책에 꼼꼼하게 잘 설명되어 있었다. 보통 코드를 설명할 때, 리눅스나 윈도우 둘중 하나를 메인으로 잡아서 해당 OS 문맥과 관련있는 내용들만 서술되는 경우가 많은데 열혈 TCP/IP 소켓 프로그래밍 책에서는 리눅스/윈도우 둘 다 설명이 적혀 있었다는 ..
-
[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..