본문 바로가기
반응형

💻 programming67

Putty 테마, 폰트 변경하기 요새 워낙 좋은 ssh 터미널 프로그램들이 많아져서 putty를 쓸 일이 없었는데 어쩔 수 없이 프리웨어인 putty를 쓸 일이 종종 생긴다 (라이선스 문제라던가) 오랜만에 putty를 설치해서 실행하면 마치 윈도우 cmd를 열어버린 것 같은 칙칙함에 일할 맛이 급격히 사라지곤 하는데 폰트랑 색상을 조금 바꿔서 칙칙함을 한 번 덜어보자 1. 폰트 변경하기 Window - Appearance에서 폰트와 행간을 변경할 수 있다 폰트: Consolas, 12-point 행간: 3 cf. IBM Plex Mono 폰트 사용하기 프로그래밍 코드로 많이 사용하는 IBM Plex Mono 폰트를 다운받아서 사용했다 IBM Plex Mono, 10 point https://fonts.google.com/specimen.. 2021. 8. 5.
리눅스 terminator 세팅하기 리눅스에서 기본적으로 gnome terminal을 제공하고 있지만 다소 불편한 점이 있다 (창 분할, 화면 간 이동 지원 X). 그래서 오늘은 터미네이터라는 프로그램을 설치해보고 테마 변경까지 해보았다. 설치하기 $ sudo apt-get install terminator 테마 변경하기 $ vim ~/.config/terminator/config # Enter below configuration [global_config] tab_position = bottom handle_size = 0 focus = system [keybindings] [profiles] [[default]] scrollbar_position = hidden use_system_font = False background_darkne.. 2021. 8. 5.
Python client - Unity Server I. Data format I-1. Python using struct 파이썬의 struct 모듈을 이용하면 정수, 문자열 등을 바이트 객체로 변환하거나 추출할 수 있다 pack, unpack, calcsize을 제공 struct - Interpret bytes as packed binary data - Python 3.9.6 documentation I-1. basic_packet_format.py BasicPacketFormat = '=' BasicPacketFormat += 'i' # Type Of Service (int; 4bytes) BasicPacketFormat += 'i' # Display ID (int; 4bytes) BasicPacketForm.. 2021. 8. 4.
[c++] logger 클래스 만들기 #include #include #include #include #include #include using namespace std; enum class LOGLEVEL : int { FATAL, ERRORS, WARN, INFO, DEBUG }; static LOGLEVEL kLogLevel = LOGLEVEL::DEBUG; class LogPrefix { public: LogPrefix(LOGLEVEL loglevel_ = LOGLEVEL::DEBUG) { if(loglevel_ == LOGLEVEL::FATAL) { message = "[FATAL] "; } else if (loglevel_ == LOGLEVEL::ERRORS) { message = "[ERROR] "; } else if (logl.. 2021. 8. 4.
[c++] timer 클래스 만들기 chrono 라이브러리를 이용해서 타이머 클래스를 만들어봅시다. #include #include #include #include typedef std::chrono::steady_clock sclock; //@brief Timer measure time diff between start() and stop() class Timer { public: virtual ~Timer() { } inline void start() { start_time = sclock::now(); } inline void stop() { end_time = sclock::now(); } inline double elapsed_milli() const { return std::chrono::duration_cast(end_time.. 2021. 8. 4.
[c++] thread vs task (thread 와 async) thread와 task는 사용 목적과 추상화 정도가 다르다 thread는 원시적인 병렬처리 방법이고, thread를 사용해 task는 데이터를 동기화하는 방법이다 ⭐ 다시 말하면 데이터를 동기화 할 때는 굳이 개발자가 직접 thread를 생성하고, mutex를 이용하기 보다는 ⭐ c++에서 제공하는 task를 이용하는 것이 좋다 ⭐ 심지어 task를 이용할 때 thread를 생성할 수도 있고, 필요하면 생성하지 않고 동기화 할 수도 있다. thread는 말그대로 병렬처리를 위한 흐름을 생성하고 제어하기 위한 기본적인 함수를 제공한다 (join, detach 등) async와 같은 task는 promise-future 사이에 통신 흐름을 만든다 future에서 get 함수를 호출하여 promise와 동기화.. 2021. 8. 4.
[c++] thread 요즘은 고성능 프로그램을 만들 때 멀티코어를 얼마나 잘 활용하느냐를 중요하게 여깁니다. C++ 11부터는 thread 라이브러리를 지원하여 플랫폼과 독립적으로 thread를 구현할 수 있습니다. thread 특징 thread는 프로세스의 실행 단위에 해당한다 한 프로세스 내에서 동작되는 thread는 메모리를 공유할 수 있다 thread는 독립적인 자원을 수행하므로 각자의 스택과 레지스터 값을 가진다 thread마다 스택을 독립적으로 할당하는 이유 독립적인 실행 흐름을 제공하기 위해 최소 조건으로 스택을 독립적으로 할당해야 합니다. 왜냐하면 스택은 함수 호출 시 전달되는 인자, 되돌아갈 주소, 함수 내 변수등을 저장하기 위한 메모리 공간으로 사용되기 때문입니다. thread의 장점 thread는 프로세스.. 2021. 8. 4.
[c++] lvalue reference and rvalue reference lvalues references and rvalues references in C++ with Examples - GeeksforGeeks l-value and r-value l=value는 객체를 가리키는 메모리 위치를 나타내고, r-value는 메모리 위치에 할당된 값을 나타냅니다. 여기서 참조 (reference)는 이미 존재하는 변수에 다른 이름을 할당하는 것외에 다른 기능은 없습니다. int a = 10; int& lref = a; // 좌측 값 참조 int&& rref = 10; // 우측 값 참조 아래 코드는 좌측 값 참조와 참조된 변수의 주소를 비교하는 코드입니다. 마치 포인터처럼 같은 메모리 주소를 갖는 것을 알 수 있습니다. #include using namespace std; // .. 2021. 8. 4.
유니티에서 소켓 통신하고 이벤트 등록하기 (C# 예제 코드) 이 페이지는 구글링해서 이것 저것 합친 것을 정리한 것이다 내용이 일부 틀릴 수 있으므로 자세한 내용은 추가적으로 구글링하거나 전문 서적을 통해 찾아봐야 한다 특히 유니티는 거의 모르는 상태에서 작성한 것이라 분명 틀린 부분이 있을 것 같다 I. 단순한 소켓 프로그래밍 유니티 엔진을 단독으로 사용할 때에는 Photon과 같은 네트워크 패키지를 이용할 수 있다 그러나 게임을 조작하기 위해 다른 플랫폼 (C++ 또는 Python 프로그램)과 연동해야 하는 경우, 유니티 패키지를 그대로 사용할 수 없으므로 직접 소켓 프로그래밍을 작성해야 한다 이번에는 소켓 프로그래밍 (= 네트워크 프로그래밍)을 통해 유니티 게임을 조작하는 방법에 대해 알아본다 여기에 사용한 소스코드는 일부 설명을 위해 발췌한 것이고, 실제 .. 2021. 7. 30.
반응형