반응형

전체 648

c++ 캐스팅 연산자 const_cast

앞서 static_cast에 이어서 나머지 캐스팅 연산자에 대한 내용입니다. conast_cast와 dynamic_cast는 사용 빈도수가 높지 않습니다. 그래도 중요한 포인트는 기억해 두어야 합니다. const_cast이름으로 유추해 보면 상수를 상수가 아닌 수로 또는 그 반대로 바꾸는 경우에 사용할 듯 싶네요. 그런데 이름 그대로 이해하면 안됩니다. 앞서 살펴본 static_cast의 경우 상수변수의 상수성을 없애는 용도로 사용했었습니다. 그렇다면 const_cast라는 것을 굳이 둘 필요가 없겠죠. 바로 const_cast은 포인터나 참조로만 캐스팅이 가능합니다. 이 때에는 상수성을 주거나 또는 상수성을 없앴 수만 있습니다. 예를 들어 보면... num이라는 정수형 상수와 이에 대한 상수 지시 포인..

프로그래밍/cpp 2017.04.11

엑셀 csv 파일 이해하기

CSV 파일은 json처럼 데이터 저장을 위해 구조화된 형식을 가진 파일이다. 이름 그대로 ,(콤마)로 데이터와 데이터를 구분하기 때문에 json이나 xml에 비해서 구조는 더 단순하다. 엑셀에서도 CSV로 저장된 파일을 간단히 읽어올 수 있다. 구조가 간단하기 때문에 소프트웨어간에 데이터 교환을 할 때 유용하게 사용된다. 우선 엑셀에서 CSV파일을 가져오거나 엑셀의 데이터를 CSV파일로 내보내는 방법을 알아보겠다. 위 파일은 1부터 99까지의 범위 내에서 난수를 1백만번 생성하여 빈도수를 기록한 CSV 파일이다. 이 파일을 텍스트 에디터로 열어보면 다음과 같은 형식으로 되어 있다. (숫자, 빈도수) 확장자가 CSV라면 엑셀에서 바로 파일을 열 수 있다. 그런데 만약 형식은 비슷한데 ,(콤마)가 아닌 다..

엑셀 2017.04.10

동적 계획법 functools.lru_cache 장식자

동적 계획법(dynamic programming)이란 말은 수학에서 유래한 용어이다. 의미를 살펴보면 프로그래밍 언어에서 말하는 동적(dynamic), 정적(static)이란 말과는 구별을 두어야 할 듯 싶다. 동적 계획법은 일종의 최적화 기법으로 어떤 문제를 부분적으로 나눌 수 있을 때 중복되는 문제해결 과정을 재사용하여 계산을 최적화 하는 기법이다. 이를 메모이제이션(memoization)이라고 한다. 예를 들어 어떤 문제집합을 풀 때 func(1,2)라는 호출이 여러번 있다면 func(1,2)라는 호출에 대한 결과를 캐시에 저장해 놓고 다음 호출 부터는 캐시에 있는 결과값을 바로 얻는 방식이다. 단 이 경우에 func(1, 2)라는 값은 언제나 동일함을 보장해야 한다. 가장 쉬운 예로는 피보나치 수..

엑셀 행렬 다루기

엑셀의 기본적인 격자 구조는 행렬을 계산하는데 유용한 도구가 된다. 그리고 엑셀에는 행렬을 위한 기본 함수들이 마련되어 있기 때문에 계산, 검증용으로 행렬을 쉽게 다룰 수 있다. 우선 엑셀에서 가능한 행렬 연산은 덧셈, 뺄셈, 곱셈, 전치행렬, 행렬식, 역행렬 등이 있다. 뭐 이 정도만 해도 기본적인 행렬연산은 다 하는 것이다. 우선 가장 간단한 덧셈과 뺄셈의 연산을 살펴보도록 하겠다. 행렬의 덧셈 뺄셈다음 그림에서 D5:E6에 두 행렬의 합을 넣어보려고 한다. 이 연산에는 특별한 함수는필요 없고 단순히 두 행렬을 합하면 된다. 행렬의 덧셈은 엑셀에서 각 행렬의 상대적인 셀 값의 합으로 생각해도 무방하다. 즉 B2+E2, C2+F2, B3+E3, C3+F3 값들을 계산하면 된다. 엑셀에서는 이 값들을 배..

엑셀 2017.04.07

extern, static 지정자

사실 이 두 지정자는 그렇게 복잡한 녀석들은 아니지만 메모리의 모습과 컴파일 과정과 맞물린 성질을 가지고 있기 때문에 확실히 개념을 잡지 않으면 그냥 저냥 이해하고 넘어가게 된다. extern우선 extern이란 지정자는 간단한 예제 프로그램에서는 거의 등장하지 않는다. 왜냐면 extern으로 선언된 변수가 있다면 이 변수는 전역 변수로 어디엔가 선언되어 있다는 의미를 가지고 있는데 일반적인 예제 프로그램들의 전역변수는 코드의 앞 부분에 미리 선언되므로 굳이 extern 지정자를 사용할 필요가 없기 때문이다. 코드는 순서대로 메모리에 올라가게 되고 이 순서만 맞춰서 전역 변수가 메모리에 우선 올라가 있다면 어디서든 접근이 가능하기 때문이다. 반대로 이 순서라는 것이 발목을 잡을 수가 있다. 예를 들어 전..

프로그래밍/cpp 2017.04.06

윈도우10 시작프로그램 관리 추가하기

이 내용은 윈도우7와 윈도우10 모두 동일하게 적용된다. (단 인터페이스는 좀 틀리다.) 우선 msconfig라는 명령을 (윈도우 펑션키 + r 을 누르면 나타나는 창에) 내려준다. 그러면 시스템 구성 창이 나타난다. 여기에서 시작 프로그램 탭을 누른 후 작업관리자를 누른다. 또는 (ctrl+alt+del)을 누른 후 작업관리자를 선택하면 작업관리자 창이 나온다. 여기에서 시작프로그램 탭을 누른다. 위 두가지 방법으로 현재 시작프로그램에 등록되어 있는 프로그램을 알 수 있다.(다음 그림 참고) 시작 프로그램 위 그림은 작업 관리자에서 시작프로그램을 선택한 그림이다. 여기에 보이는 프로그램은 윈도우가 시작될 때 자동으로 실행되는 프로그램들이다. 만약 자동으로 실행되게 하고싶지 않다면 해당 프로그램을 마우스..

VScode 파이선 정적 코드 분석 툴 pylint 설정

파이썬 정적 코드 분석 툴로는 flake8과 pylint가 있다. 그런데 보통 pylint를 많이 쓰는 모양이다. 나 또한 flake8은 그냥 듣기만 했을 뿐 pylint만 사용해 왔다. 코드를 분석하는 방법으로는 정적 분석과 동적 분석이 있는데 정적 분석은 코드를 실행하지 않은 상태에서 분석하는 것을 말한다. pylint는 정적 분석이다. 보통 우리가 하는 디버깅이나 유닛테스트는 동적 분석이다.(코드를 실행한 상태에서 분석) 그러면 pylint를 사용하려면 어떻게 하면 될까? 각 개발 툴 마다 사용방법이 다양할 것이다. 하지만 기본 분석툴의 선택은 대략 비슷하다. 파이썬 뿐만아니라 다른 언어들 역시 비슷한 맥락으로 흘러간다. 여기서는 pylint를 VSCode에서 사용하는 방법을 간단히 소개한다. 우선..

개발도구/VSCODE 2017.04.05

PYINSTALLER로 파이썬 실행파일 만들기

파이썬으로 만든 파일은 py라는 확장자를 가진 스크립트 파일이다. 이 파일을 실행시킬 때는 반드시 시스템에 해당 버전에 맞는 파이썬이 설치되어 있어야 한다. 따라서 배포를 목적으로 파이썬으로 프로그램을 만들기 위해서는 py2exe와 같은 유틸리티가 필요하다. py2exe는 파이썬2 문법으로 만든 파이썬 파일을 실행파일(exe)로 만들어준다. 파이썬3 문법으로 만들었다면 py2exe를 사용할 수 없다. 대신 pyinstaller를 사용하면 된다.(윈도우즈 환경에만 해당) 기본적인 사항py확장자를 가진 스크립트 파일의 용량을 살펴보면 1MB를 넘는 파일은 드물다. 하지만 exe파일로 바꿔놓고 나면 아주 작은 녀석의 경우도 10MB정도 될 것이다. 이것은 파이썬 파일을 실행파일(exe)로 만들 때 파이썬이 설..

엑셀 오름차순 내림차순 정렬 이해하기

나는 엑셀을 자주 사용하지는 않는데 가끔 엑셀의 편리한 기능이 매우 유용하기 때문에 항상 블로그에 정리를 해 놓는다. 그 중 엑셀 정렬기능은 표를 정리해서 볼 때 때 매우 유용하다. 정렬에는 내림차순 정렬과 오름차순 정렬이 있는데 텍스트의 경우는 가나다순, abc순의 사전 순서대로 정렬된다. 숫자의 경우는 사전순서가 아닌 크기 순서로 정렬이 된다. 간혹 숫자의 경우 사전순서로 정렬되는 경우가 있는데 이 경우는 숫자가 텍스트 형식으로 인식되기 때문이다. 주로 (,)콤마로 자리수를 구분지을 때 이런 현상이 생긴다. 이를 고치려면 해당 셀들을 선택한 후 데이터 도구에 있는 텍스트 나누기를 실행한 후에 마침을 눌러주면 숫자로 인식되게 된다. 정렬 방법 1필터를 사용하는 방법이다. 단축키 (ctrl + shift..

엑셀 2017.04.03

파이썬 달력 모듈 calendar 사용법

파이썬에서 기본적으로 제공되는 달력 모듈인 calendar에 대한 정리! calendar 모듈은 표준 모듈로 달력과 관련된 유용한 함수, 클래스들을 포함하고 있다. 달력 출력하기이번달(오늘이 포함된) 달력을 그려보려면 어떻게 할까? 함수를 이용하는 방법을 먼저 알아보자. month(year, month) 함수로 해당 년(year), 월(month)에 해당하는 달력이 문자열로 출력된다. print로 이 문자열을 출력하면 달력 형식에 맞게 출력된다. 애초에 다음과 같이 prmonth함수를 사용해도 된다. 그런데 달력을 제대로 사용하려면 calendar 모듈이 제공하는 클래스를 사용해야 한다. 위와 같은 작업을 클래스로 해보겠다. 달력을 현지화(요일이름을 사용자 언어에 맞게) 시키고 싶다면 다음과 같이 하면 ..

반응형