프로그래밍

    C 언어와 C++ 의 차이

    안녕하세요 피터입니다. 많은 분들이 C 언어를 배우고 나서 C++ 를 배우기 시작 할 때 어려움을 겪곤 합니다. 제 주변에도 그런 분들이 있어서 어떤 점 때문에 어려운지 물어봤더니 어디서부터 어떻게 시작해야 될 지 모르겠다는 답변이 가장 많았습니다. 어쩌면 당연한 일인지도 모르겠습니다. 비교적 간단한 문법 체계를 갖고 있는 C 언어와 달리 C++ 은 굉장히 다양한 패러다임이 녹아있으며 방대한 스케일을 자랑하는 언어이기 때문입니다. (물론 그렇다고 해서 C 언어가 가볍고 만만한 프로그래밍 언어라는 말은 아닙니다. 오히려 그 반대로 처음엔 쉬워보이지만 알면 알수록 어려워지는 언어입니다. C 언어는 역사가 긴 만큼 괴수 분들이 많이 서식하고 계십니다 :D) 그래서 우선은 C 언어와 C++ 두 언어가 어떤 부분..

    [bash 쉘 스크립트] 변수 할당(assignment)과 치환(substitution)

    개요 안녕하세요 피터입니다. 오늘은 Bash 쉘 스크립트에서 사용되는 변수(variable)에 대해서 설명드리겠습니다. 변수는 모든 프로그래밍 언어와 스크립트 언어에서 핵심적인 기능을 합니다. 데이터를 조작하기 위한 연산이나 문자열을 파싱(parsing)하는데 있어서 없어서는 안될 꼭 필요한 존재입니다. 변수는 단지 데이터를 담고 있는 메모리상의 위치를 나타내는데 어떤 변수에 어떤 데이터가 담겨있는지 쉽게 알 수 있게 이름을 붙여놓은 것입니다. 변수 할당(assignment) 데이터를 담는 공간인 변수를 사용하려면 먼저 변수를 할당(assignment) 해야 합니다. 변수는 할당 연산자 = 를 사용해서 할당합니다. a=100 b="hello" 주의 해야 할 것은 할당 연산자 앞뒤로 공백이 없어야 한다는 ..

    [C#] 프로젝트에 log4net 적용하기

    개요 안녕하세요 피터입니다. 오늘은 C# 프로젝트에 log4net 라이브러리를 통해 로그 시스템(log system)을 적용하는 방법을 알려드리겠습니다. 프로젝트를 진행하다 보면 로그 시스템이 절실할 때가 있습니다. 특정 상황에서 에러가 발생하는데 어떤 절차에 의해 실행하면 에러가 발생하는지 추적이 어려울 때가 바로 그런 경우입니다. 또한 개발을 진행할 때에는 세부적이고 자세한 로그를 기록하는 것이 도움이 되지만 실제로 사용자가 프로그램을 쓸 때에는 중요한 내용만 기록하는 것이 더 도움이 됩니다. 이런 이유로 상황에 따라 어떤 수준의 로그를 기록할지 손쉽게 설정할 수 있는 로그 시스템이 필요합니다. C# 프로젝트에서는 log4net 라이브러리를 통해 이러한 기능을 쉽게 구현 할 수 있습니다. 로그시스템 ..

    [Vim] 대소문자 변경하기

    개요 안녕하세요 피터입니다. 오늘은 vim에서 대문자 또는 소문자로 일괄적으로 변경하는 방법에 대해서 알려드리겠습니다. 전체적으로 대문자 또는 소문자로 변경하는 것도 가능하지만 대문자인 것은 소문자로 소문자인 것은 대문자로 반전(inverse)하는 것도 가능합니다. vim 에서 대소문자를 변경하는 방법은 크게 두 가지가 있습니다. 첫 번째는 일반 모드에서 명령어를 입력해서 변경하는 방법이고, 두 번째는 비주얼 모드에서 영역을 지정하고 변경하는 방법입니다. 일반 모드 일반 모드에서 대소문자를 변경하는 명령어는 아래와 같습니다. Command Description Examples gU 에 해당하는 범위의 문자를 대문자로 변경 gUU : 현재 라인 전체 대문자로 변경 gUw : 현재 커서부터 단어의 끝까지 대..

    [Python] 아나콘다(Anaconda) 설치하기

    개요 안녕하세요 피터입니다. 오늘은 아나콘다(Anaconda)를 설치하는 방법을 알려드리겠습니다. 아나콘다를 이용하면 파이썬에서 다양한 가상환경을 손쉽게 구축할 수 있기 때문에 파이썬으로 개발 및 테스트를 진행하는데 있어서 효율을 극대화 할 수 있습니다. 아나콘다는 여러가지 수학 및 과학 패키지(Package)들을 기본적으로 포함하고 있는 파이썬 배포판입니다. 때문에 머신러닝(Machine learning)이나 데이터 분석(Data analysis)를 하고자 한다면 여러 가지 귀찮은 일들을 줄일 수 있게 해줍니다. 파이썬은 많은 개발자들이 공동으로 개발하는 오픈소스 프로젝트도 많이 진행되며 라이브러리들이 매우 빈번하게 업데이트가 됩니다. 각각의 라이브러리들은 저마다 다양한 의존성(Dependency)을 ..

    [bash 쉘 스크립트] 종료(exit)와 종료 상태 (exit status)

    개요 안녕하세요 피터입니다. 오늘은 Bash 쉘에서 프로그램을 종료(exit) 하는 방법과 종료 상태(exit status)를 얻는 방법에 대해 설명드리겠습니다. 종료 상태는 리턴값(return value, return status)이라고 부르기도 하는데 이전에 수행했던 명령어나 프로그램이 종료 될 때 넘겨주는 값을 의미하기도 해서 그렇습니다. 종료 상태 또는 반환값이 중요한 이유는 쉘 스크립트를 작성하는데 있어서 특정 명령어의 성공 여부에 따라 분기해야 하는 경우 이전 명령어가 정상적으로 수행되었는지 아는 것이 필수적이기 때문입니다. 쉘 스크립트 내에서 exit 명령어가 실행되면 스크립트가 종료되며 부모 프로세스에 종료 상태를 전달할 수 있는데 이 값은 프로그램 내에서 임의로 지정할 수도 있습니다. 이..

    [Vim] 문자열 검색 및 바꾸기

    안녕하세요 피터입니다. 오늘은 vim에서 특정 문자열을 검색하거나 원하는 문자열로 변경하는 방법을 소개해드리겠습니다. 개요 vim은 다른 텍스트 에디터들이 기본적으로 제공하는 "찾기 및 바꾸기"와 같이 현재 열려 있는 문서 내에서 특정 문자열을 검색하거나 원하는 문자열로 바꿀 수 있습니다. vim이 강력한 이유는 바로 찾기 및 바꾸기 기능에서 정규 표현식(Regular Expression)을 활용할 수 있기 때문입니다. 문자열 검색하기 vim에서 특정 문자열을 검색하기 위해서는 일반모드에서 슬래시( / ) 키를 이용하여 검색 대화창을 띄워야 합니다. 화면 하단에 / 문자가 표시되며 커서가 활성화 되면 원하는 검색어를 입력할 수 있습니다. 간단하게 score 라는 검색어를 입력해보겠습니다. 위와 같이 문서..

    [C언어 예제-1] 2진수(binary) 출력

    안녕하세요 피터입니다.오늘은 C언어로 2진수를 출력하는 예제를 소개해드리겠습니다. 개요일상 생활에서 우리가 다루는 숫자는 10진법을 사용합니다. 하지만 컴퓨터의 세계는 0과 1로 이루어져있죠. 경우에 따라서는 10진수로 되어 있는 숫자를 2진수로 변환애서 출력해볼 필요가 있습니다. (일반적인 경우에는 16진수로 출력하겠지만요!) 이번에 소개드릴 예제는 양수 또는 음수의 10진수를 입력받아서 2진수로 출력하는 예제입니다. 당연한 얘기겠지만 C언어의 비트 연산자를 사용합니다.연산자에 대한 내용은 아래 글을 참조해주세요. [C언어 강좌-7] 연산자 (Operator) 예제 소스#include int main() { int input = 0; int mask; while (true) { printf("Input..