일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Python
- Flutter
- c# 윈폼
- 플러터
- jupyter lab
- 구조체
- vim
- git
- jupyter
- Houdini
- HTML
- Data Structure
- 도커
- Unity
- 다트 언어
- c# winform
- c# 추상 클래스
- github
- 깃
- C# delegate
- C++
- C언어 포인터
- gitlab
- Algorithm
- c#
- dart 언어
- 유니티
- c언어
- docker
- 포인터
- Today
- Total
목록전체 글 (507)
nomad-programmer
정규표현식은 일정한 규칙을 가진 문자열을 표현하는 방법이다. 복잡한 문자열 속에서 특정한 규칙으로 된 문자열을 검색한 뒤 추출하거나 바꿀 때 사용한다. 또는 문자열이 정해진 규칙에 맞는지 판단할 때도 사용한다. 문자열 판단하기 정규표현식은 re 모듈을 가져와서 사용하며 match 함수에 정규표현식 패턴과 판단할 문자열을 넣는다. re.match('패턴', '문자열') import re re.match('hello', 'hello, world') # 문자열이 있으므로 정규표현식 매치 객체 반환 re.match('python', 'hello, world') # 문자열이 없으므로 아무것도 반환되지 않음 문자열이 맨 앞에 오는지 맨 뒤에 오는지 판단하기 정규표현식은 특정 문자열이 맨 앞에 오는지 맨 뒤에 오는지..
파이썬은 데코레이터라는 기능을 제공한다. 데코레이터는 장식하다, 꾸미다라는 뜻의 decorate에 er(or)을 붙인 말인데 장식하는 도구 정도로 설명할 수 있다. 클래스에서 메서드를 만들 때 @staticmethod, @classmethod, @abstractmethod 등을 붙였는데, 이렇게 @로 시작하는 것들이 데코레이터이다. 즉, 함수(메서드)를 장식한다고 해서 이런 이름이 붙었다. class Calc: @staticmethod # 데코레이터 def add(a, b): print(a + b) 데코레이터를 만드는 방법 데코레이터는 함수를 장식한다고 했는데 도대체 어디에 사용하는 것일까? 데코레이터는 함수를 수정하지 않은 상태에서 추가 기능을 구현할 때 사용한다. 예를 들어 함수의 시작과 끝을 출력하..
코루틴의 이점은 무엇인가? 보통 두 루틴이 동시에 실행되는 멀티태스킹은 하나의 변수에 값을 동시에 쓰면(write) 동기화 문제가 발생한다. 따라서 크리티컬 섹션, 세마포어, 뮤텍스 등 동기화를 위한 락(lock)이 필요하다. 하지만 코루틴은 시분할 방식 멀티태스킹이라 동기화를 위한 락이 필요하지 않다. 함수를 호출한 뒤 함수가 끝나면 현재 코드로 다시 돌아왔다. 예를 들어 다음의 코드를 보자. def add(a, b): c = a + b print(c) print('add func') def calc(): add(1, 2) print('calc func') 이 소스 코드에서 calc함수와 add 함수의 관계를 살펴보자. calc가 메인 루틴(main routine)이면 add는 calc의 서브 루틴(s..
제네레이터는 제네레이터 객체에서 __next__ 메서드를 호출할 때마다 함수 안의 yield 까지 코드를 실행하며 yield에서 값을 발생시킨다(generate). 그래서 이름이 제네레이터이다. for와 제네레이터 for 반복문은 반복할 때마다 __next__ 를 호출하므로 yield에서 발생시킨 값을 가져온다. 그리고 StopIteration 예외가 발생하면 반복을 끝낸다. 참고로 제네레이터 객체에서 __iter__를 호출하면 self를 반환하므로 같은 객체가 나온다. (제네레이터 함수 호출 > 제네레이터 객체 > __iter__는 self 반환 > 제네레이터 객체) 그런데 generate라는 키워드를 사용하면 되지 왜 yield라고 이름을 지었을까? yield는 생산하다라는 뜻과 양보하다라는 뜻도 가..
__iter__, __next__ 메서드를 구현하여 직접 이터레이터를 만들어보자. 간단하게 range(횟수)처럼 동작하는 이터레이터다. class Counter: def __init__(self, stop: int) -> None: self.__current = 0 self.__stop = stop def __iter__(self): return self def __next__(self) -> int: if self.__current < self.__stop: r = self.__current self.__current += 1 return r else: raise StopIteration if __name__ == '__main__': for i in Counter(3): print(i, end=' '..
컴퓨테이셔널 씽킹은 4가지로 되어 있다. 분해: 복잡한 문제를 작은 문제로 나눈다. 패턴 인식: 문제 안에서 유사성을 발견한다. 추상화: 문제의 핵심에만 집중하고 부차적인 것은 제외한다. 알고리즘: 이렇게 정의한 문제를 해결하는 절차이다. (일반화와 모델링은 여기에 포함) 복잡한 문제를 해결하는 것은 어렵지만, 작은 문제를 해결하는 것은 비교적 쉽다. 작은 문제를 해결하다 보면 복잡한 문제를 해결하게 된다. 컴퓨터 공학에서 배우는 알고리즘은 대부분 정형화된 문제에 대해 검증된 해법을 제시하는 과목이다. 현실에서 컴퓨터로 해결하려는 문제는 정형화된 문제가 아니라 비정형화된 문제가 더 많다. 그래서 비정형화된 문제를 컴퓨터로 해결하는 과정. 즉, 문제를 이해하고 분해, 패턴 인식, 추상화, 알고리즘 작성까지..
// 예를 들어 int타입의 최대 값을 구하고 싶다면 헤더 파일을 포함시킨 후 // numeric_limits::max() 처럼 호출하면 된다. #include #include #include using namespace std; template void ShowRange(const char* typeName) { cout
STL은 이름 그대로 템플릿을 사용해서 만들어진 라이브러리다. STL은 일반적으로 많이 사용하는 클래스와 함수들이 만들어져 있는데, 예를 들어 링크드 리스트 클래스, 동적 배열 클래스, 정렬 함수, 검색 함수 등과 같이 범용적인 클래스와 함수들이 있다. 또한 이런 클래스와 함수들은 템플릿으로 만들어져 있기 때문에 확장이 용이하다. STL은 사용함으로써 얻을 수 있는 장점들이 있다. 첫번째, STL은 표준이다. 이는 지구 반대편에 있는 개발자도 나와 똑같은 클래스와 함수를 사용한다는 것을 의미한다. 때문에 상대방이 작성해놓은 코드를 쉽게 알아볼 수 있다. 두번째, STL은 전문가들이 만들어 놓은 것이기 때문에 직접 만든 것보다 효율적이고 안전하다. 물론 엄청난 실력자라 STL에 있는 것보다 훌륭하게 만들 ..
C++의 코딩 표준에 대해 알아보자. https://docs.popekim.com/ko/coding-standards/cpp C++ 코딩 표준 | 포프의 문서창고 제대로 대우받는 개발자 | 부족한 컴공지식 배우기 | MIT급 컴공인강 최저임금으로 고통받는 일회성 프로그래머는 그만! POCU 아카데미가 올해 연봉협상을 책임지겠습니다! docs.popekim.com
템플릿은 C++에서 없어서는 안될 아주 중요한 기능인데 템플릿을 사용하면 컴파일러가 개발자를 대신해서 클래스나 함수를 만들어내게 할 수 있다. 그리고 C++에는 이러한 템플릿을 사용해서 만들어진 다양한 클래스와 함수들을 STL이라는 이름으로 제공하고 있다. 왜 템플릿을 사용해야 할까? 템플릿은 C++에서 가장 눈에 띄는 기능이라고 할 수 있다. C++의 다른 기능들은 Java와 C# 같은 객체지향 언어에서도 대부분 지원하는 것들이지만 템플릿 만큼은 C++이 아니면 찾아볼 수 없는 독특한 기능이기 때문이다. 템플릿은 함수를 자동으로 생성하는 것에 더해서 클래스까지 자동으로 생성해줄 수 있다. 그리고 이 두 가지를 구분하기 위해서 템플릿 클래스, 템플릿 함수 등으로 나누어 부르게 된다. 템플릿 클래스 #in..
C++ 개발자가 선호하는 11가지 라이브러리를 소개한다. 1. 액티브 템플릿 라이브러리 (Active Template Library, ATL) 액티브 템플릿 라이브러리(Active Template Library, ATL)는 COM(구성 요소 개체 모델) 개체를 만들 수 있는 템플릿 기반 C++ 클래스의 세트이다. https://learn.microsoft.com/ko-kr/cpp/atl/active-template-library-atl-concepts?view=msvc-170 ATL(액티브 템플릿 라이브러리) 개념 자세한 정보: ATL(활성 템플릿 라이브러리) 개념 learn.microsoft.com 2. 아시오 C++ 라이브러리 (Asio) asio는 네트워크 프로그래밍을 위한 C++ 라이브러리다. 오..
게임의 프로토 타입을 만들 때 좋은 게임 엔진을 소개한다. https://www.construct.net/en/make-games/games-editor Games Editor ★★★★★ Use our advanced and powerful games editor to build the game you've always imagined. Our editor is packed with features to allow you to create your own games. www.construct.net