일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- dart 언어
- HTML
- jupyter lab
- github
- Python
- C++
- c언어
- jupyter
- C언어 포인터
- git
- Unity
- C# delegate
- Data Structure
- 유니티
- Houdini
- c#
- 포인터
- vim
- 다트 언어
- 깃
- 플러터
- 도커
- c# 추상 클래스
- Flutter
- docker
- gitlab
- c# 윈폼
- 구조체
- Algorithm
- c# winform
- Today
- Total
목록전체 글 (507)
nomad-programmer
개발자라면 어떤 기초 지식을 습득해야 할까? 좋은 개발자가 되려면 어떤 사고방식을 갖춰야 할까? 개발자의 기본 소양 개발자 기본은 "영어"이다. 그 다음은 "수학"과 "물리"이다. 수학과 물리, 그 중에서도 "수학"을 잘 알아야 한다. 기본을 잘 만들고 나서야 프로그래밍 언어를 공부하고, 자료구조, 알고리즘, 운영체제, 하드웨어를 공부하면 된다. 알아야 하는 지식이 너무 많다. 그런데 개발자는 평생 공부하는 직업이다. 공부가 싫으면 다른 길을 고민하는 편이 시간 낭비를 줄이는 방법이다. '나는 웹 개발자니까 하드웨어는 몰라도 돼', '나는 운영체제는 몰라도 돼' 이런 자세는 안된다. 만든 프로그램을 쌩쌩 돌게 하려면 하드웨어를 알아야 한다. 하드웨어 이론뿐만 아니라 예를 들어 안드로이드 앱을 개발한다면 ..
여러 줄에 걸쳐 동일한 문자열을 한번에 넣고 싶을 때가 종종 있다. 만약 100줄에 동일한 문자열을 넣는다고 생각해보자. 물론 그럴때는 python이라던지 여타 스크립트 언어로 처리할 수 있다. 그런데 이러면 또 스크립트를 작성해야 하는 번거로움이 생긴다. vim을 이용한다면 아래와 같은 visual 명령으로 처리할 수 있다. 반복되는 문자열을 삽입하고자 하는 위치에 커서를 위치시킨다. "ctrl + v" 키를 눌러 visual block 모드를 실행한다. 방향키나 j를 이용하여 커서를 원하는 위치까지 이동한다. "shift + i (대문자 I)" 키를 누르고 원하는 문자열을 입력한다. esc 키를 누른다. 끝. 이렇게하면 원하는 구간까지 작성한 동일한 문자열을 집어 넣을 수 있다.
함수 포인터는 표기법이 난해하다는 문제를 가지고 있다. const double* f1(const double arr[], int n); const double* f2(const double [], int); const double* f3(const double*, int); // 함수 포인터 배열 const double* (*pa[3]) (const double*, int) = {f1, f2, f3}; pa는 리턴형이 const double*이고, 매개변수로 const double*와 int형을 받을 수 있는 함수 포인터 3개를 저장할 수 있는 함수 포인터 배열이다. pa를 가리키는 포인터를 만드려면 어떻게 해야 할까? 명확하게, 선언은 pa를 선언하는 것과 유사하지만, *가 더 필요하다. 새로운 포인터..
재귀 호출은 하나의 작업을 서로 비슷한 두 개의 작은 작업으로 반복적으로 분할해가면서 처리해야 하는 상황에서 특별히 유용하다. 예를 들면, 눈금자를 그리는 데 이것을 적용할 수 있다. 두 개의 끝을 먼저 표시한 후 그들의 중간 지점을 찾아 눈금을 표시한다. 동일한 절차를 눈금자의 왼쪽 절반에 대해 수행한다. 그리고 나서 눈금자의 오른쪽 절반에 대해서도 같은 절차를 수행한다. 눈금 간격을 더욱 세분하려면 현재의 눈금 구획에 대해 동일한 절채를 다시 수행한다. 이러한 재귀적인 접근을 "분할 정복(divide-and-conquer)" 전략이라고 한다. #include using namespace std; const int LEN = 66; const int DIVS = 6; void subdivide(char..
질의응답 https://throwbug.com/ throw bug Recent questions & answers throwbug.com 게임 코디 http://1st.gamecodi.com/ 게임코디 1st :: 구 게임코디 1st 입니다. 게임 프로그래머의 만담 1st.gamecodi.com https://gamecodi.com/ 게임코디 gamecodi.com 잘 정리된 블로그 https://lee-seokhyun.gitbook.io/game-programming/ Introduction - Game Programming The articles on these web sites are about my technical work experiences in the game industry. I have..
개발자의 평생공부 평생 공부하는 건 개발자만이 아니다. 다른 직업을 가진 사람들도 쉼 없이 공부하고, 컨퍼런스와 세미나를 참가하고, 스터디를 한다. 공부없이 할 수 있는 일이 없기 때문이다. 공부는 누구나 하는 것이므로 공부한다는 사실만으로 엄살을 떨 필요는 없다. 문제는 공부의 방향이다. 개발자의 경우 평균적으로 보았을 때, 3년 전에 학습한 지식이면 낡은 징후를 보이기 시작하고 5년이면 생명을 다한다. 더 오래가는 지식도 물론 있다. 프로그래밍의 본질에 가까운 지식은 수명이 오래가고 파편적인 지식일수록 수명이 짧다. 그래서 본질을 추구하며 에피파니(Epiphany)를 경험한 사람은 그렇지 않은 사람에 비해서 공부로 인한 스트레스를 덜 받는다. 중요한 것과 중요하지 않은 것을 구별하는 혜안이 있기 때문..
매우 유용한 사이트 https://www.tomlooman.com/unreal-engine-cpp-guide/ Unreal Engine C++ Complete Guide Get started with Unreal Engine C++ using the complete guide to programming. Unreal Engine has many unique features, let's demystify them. www.tomlooman.com
cin.get(char)를 이용한 입력 일반적으로 문자 단위로 입력을 읽어들이는 프로그램들은 빈칸 문자, 탭 문자, 개행 문자까지 포함하여 모든 문자를 읽어들여야 한다. cin이 속해 있는 istream 클래스는 이런 요구를 만족시키는 멤버 함수들을 가지고 있다. 특별히 cin.get(ch) 멤버 함수는 빈칸 문자까지도 입력받아 ch 변수에 저장한다. #pragma warning(disable: 4996) #include using namespace std; int main() { char ch; int count = 0; cin.get(ch); while (ch != '#') { cout
vector 템플릿 클래스 vector 템플릿 클래스는 동적 배열에 속하는 string 클래스와 유사하다. 프로그램에 실행되는 동안 vector 객체의 크기를 세팅할 수 있고, 새로운 데이터를 마지막에 추가하거나 중간에 데이터를 삽입할 수도 있다. 기본적으로 동적 배열을 생성하기 위해 new를 사용하는 것을 대체할 수 있다. 실제로 vector 클래스는 메모리를 관리하기 위해서 new와 delete를 사용하지만, 그 과정은 자동으로 진행된다. 몇 가지 기본적이고 실질적인 문제를 살펴보도록 하자. 첫째, vector 객체를 사용하기 위해서는 vector 헤더 파일을 포함해야 한다. 둘째, vector 식별자는 std 이름 공간의 일부분이기 때문에 using 명령, using 선언 또는 std::vector..
때로는 프로그램이 1바이트로 표현할 수 없는 문자 세트(예를 들면 일본어, 중국어, 한국어 문자 세트)를 처리해야 하는 경우도 있다. C++는 이것을 두 가지 방법으로 처리한다. 첫째, 확장 문자 세트가 시스템의 기본 문자 세트이면, 컴파일러 개발업체가 char형을 처음부터 2바이트(16비트) 또는 그 이상으로 만드는 것이다. 둘째, 기본 문자 세트와 확장 문자 세트를 동시에 지원하는 것이다. 즉, 보통의 8비트 char형으로 기본 문자 세트를 나타내고, wchar_t형(wide character type에서 w, char, t를 각각 따 왔다)으로 확장 문자 세트를 나타내는 것이다. wchar_t형은 시스템에서 사용되는 가장 큰 확장 문자 세트를 나타낼 수 있을 만큼의 충분한 비트 폭을 가진 정수형이다..
asyncio는 비동기 프로그래밍을 위한 모듈이며, CPU 작업과 I/O를 병렬로 처리하게 해준다. 동기(synchronous) 처리는 특정 작업이 끝나면 다음 작업을 처리하는 순차처리 방식이다. 비동기(asynchronous) 처리는 여러 작업을 처리하도록 예약한 뒤 작업이 끝나면 결과를 받는 방식이다. 네이티브 코루틴 만들기 먼저 asyncio를 사용하려면 다음과 같이 async def로 네이티브 코루틴을 만든다. 참고로 파이썬에서는 제네레이터 기반의 코루틴과 구분하기 위해 async def로 만든 코루틴은 네이티브 코루틴이라고 한다. async def 함수이름(): 코드 import asyncio async def hello(): # async def로 네이티브 코루틴을 만듦 print('hello..
open으로 파일을 열 때 with as를 사용하여 파일 객체의 close를 자동으로 호출해주었다. 이런 방식으로 with as를 사용하려면 클래스에 __enter__와 __exit__ 메서드를 구현해주면 된다. class 클래스이름: def __enter__(self): # 시작할 때 실행할 코드 def __exit__(self, exe_type, exc_val, exc_tb): # 종료할 때 실행할 코드 with에 클래스의 인스턴스를 지정하고 as 뒤에 결과를 저장할 변수를 지정한다. with 클래스() as 변수: # 코드 다음은 open('hello.tt', 'w') 처럼 동작하는 OpenHello 클래스이다. class OpenHello: def __enter__(self): # 파일 객체를 속..