이클립스를 처음 설치하면 Defualt로 적용되어있는 Light라는 테마(Theme)가 적용되어 있습니다. 그렇다고 해서 꼭 이 테마만 사용을 해야 하는 것은 아니고 사용자의 기호에 따라 다른 테마도 적용이 가능합니다. 그중에서도 많은 선택을 받고 있는 테마가 다크(Dark) 테마가 아닐까 생각합니다. 경험상 80%정도의 개발자는 기본(Light) 테마를 20% 정도는 다크(Dark) 테마를 사용하셨던 것 같네요. 이 테마를 사용하셨던 개발자분들은 대부분 오래 모니터를 보고 있으면 흰색 화면보다는 검은색 화면이 눈에 피로를 덜 준다라는 생각을 가지고 다크 테마를 사용하셨던 것 같아요. 또한 다크 테마를 포함해 기본적으로 제공되는 테마 이외에도 Marketplace를 통해 여러가지 테마를 적용할 수 있는데..
Visual Studio를 처음 설치하면 Default로 적용되어있는 광원이라는 배경 테마(Theme)가 적용되어 있습니다. 그렇다고 해서 꼭 이 테마를 사용해야하는것은 아니고 사용하시는분의 성향에 따라 테마를 바꿔서 적용하실 수 있습니다. Visual Studio도 사용하시는분을 보면 광원 혹은 어둡게(Dark) 테마를 주로 사용하시는 것 같습니다. 오늘은 Visual Studio 테마 변경방법에 대해 알아보도록 하겠습니다. 비주얼 스튜디오(Visual Studio) 테마(Theme) 변경방법 1. 비주얼 스튜디오 상단의 메뉴의 도구 -> 옵션으로 들어갑니다. 2. 환경 -> 일반에서 색 테마를 바꿔주시면 됩니다. 광원은 기본테마 어둡게는 흔히 말하는 다크테마이며 파랑테마를 선택하시면 2010년도쯤 주..
PC마다 조금씩 차이는 있을 수 있으나 아마 대부분 비주얼 스튜디오(Visual Studio)를 설치하면 기본으로 설정되어 있는 폰트는 돋움체 폰트일 것입니다. 하지만 코딩을 하다보면 필연적으로 여러 가지 특수 기호를 자주 사용하게 되는데 특히 (i l), (. ,), (; :)이 구분이 잘 되는 폰트를 사용하시는 것이 정신적으로 이롭습니다. 여기서 많은 개발자들이 추천하는 폰트는 Consolas입니다. Consolas폰트는 윈도우에서 기본적으로 제공하여 따로 다운을 받을 필요도 없고 간단한 설정만으로도 바꾸실 수 있습니다. 비주얼 스튜디오(Visual Studio) 폰트 글꼴, 크기 변경하기 1. 비주얼 스튜디오 상단의 도구 -> 옵션으로 들어갑니다. 2. 글꼴 및 색에서 원하는 글꼴과 크기, 글꼴 색..
코딩을 하는 과정에서 필연적으로 여러 가지 오류가 생기기 마련입니다. 이러한 오류들을 해결하는 과정을 디버깅이라고 합니다. Visual Studio를 포함한 모든 IDE들은 이러한 디버깅 기능을 지원하고 있으며 만약 코드에 오류가 발생한다면 이러한 디버깅 도구 또는 디버거를 사용하여 훨씬 편하게 코드가 잘못된 이유들을 빠르게 파악할 수 있습니다. 그중에서도 특히 Visual Studio의 경우 매우 강력한 디버깅 기능을 제공하고 있어 많은 개발자들이 선호하는 IDE입니다. 오늘은 강력한 Visual Studio의 디버깅 기능에 대해 포스팅해보려 합니다 중단점(Break Point) 설정하기 디버깅을 하기 위해서는 가장 먼저 해야할 일이 중단점을 설정하는 일입니다. 가장 쉽게 중단점을 설정하는 방법은 대상..
프로그래밍을 하다 보면 필연적으로 각종 오류에 부딪치게 되고 그 오류를 해결하는 과정에서 디버깅은 필수입니다. 디버깅을 얼마나 잘하느냐에 따라 프로그램의 생산성과 개발자의 능력이 좌우되기도 합니다. 그렇기에 모든 IDE에는 디버깅을 할 수 있는 기능들이 아주 잘 되어있습니다. 자바 개발이나 웹 개발을 할 때 많이 쓰이는 이클립스에도 디버깅 기능이 있습니다. 오늘은 이클립스의 디버깅 기능에 대해 포스팅 해보려 합니다. Break Point 지정 디버깅을 진행하기 위해서는 가장 먼저 우선 자신이 조사하고 싶은 시점에 브레이크 포인트를 지정해주어야 합니다. 이클립스 좌측의 라인에서 오류가 의심가는 부분에 더블클릭 or 우클릭 -> Toggle Breakpoint를 누르면 좌측 그림과 같이 조그마한 점이 찍힙니..
열거형이란? 열거형은 사용하면 변수가 갖는 값에 의미를 부여할 수 있고 프로그램 가독성이 향상됩니다. 열거형은 명명된 정수형 상수의 집합으로 구성됩니다. 열거형을 선언하면 컴파일러는 열거형 멤버들을 정수형 상수로 인식합니다. enum 형식의 변수를 인덱싱 식에서 사용할 수 있으며 모든 산술 및 관계형 연산자의 피연산자로 사용할 수 있습니다. 열거형 상수 또는 열거형 형식의 값은 C 언어에서 정수 식을 허용하는 모든 곳에서 사용할 수 있습니다. 열거형(enum) 사용법 열거형 만들기 //문법 enum 열거형 이름{상수 이름}; //ex enum week{SUN, MON, TUE, WED, THU, FRI, SAT}; 열거형을 만드는 방법은 구조체와 비슷한데 구성은 열거형은 열거형 키워드(enum), 열거형..
구조체에서 포인터가 사용되는 경우는 아래와 같이 크게 3가지로 구분됩니다. 1. 멤버 변수로 포인터 사용하기 2. 구조체 변수로 포인터 사용하기 3. 구조체 간의 상호 참조 멤버 변수로 포인터 사용하기 #include struct Score { int *kor; //국어성적 int *mat; //수학성적 int *eng; //영어성적 }; int main() { int score1 = 100; int score2 = 90; int score3 = 80; struct Score s; s.kor = &score1; s.mat = &score2; s.eng = &score3; printf("국어점수 : %d\n", *s.kor); printf("수학점수 : %d\n", *s.mat); printf("영어점수 ..
구조체란? 구조체란 하나 이상의 변수를 묶어 그룹화하는 사용자 정의 자료형입니다. 사용자가 C언어의 기본 타입을 가지고 새롭게 정의할 수 있는 사용자 정의 타입이며 기본 타입만으로는 나타낼 수 없는 복잡한 데이터를 표현할 수 있습니다. 구조체는 똑같은 변수를 여러번 사용해야 하는 경우에 효과적으로 사용할 수 있습니다. 예를 들어, C언어를 이용해서 콘솔로 간단한 성적 시스템을 만든다고 가정해봅시다. 이 주소록에는 학생의 국어, 수학, 영어 점수를 저장해야 합니다. 만약 구조체를 사용하지 않는다면 여러명의 학생의 성적을 구해야 할 경우 일일이 변수를 계속해서 선언해주어야 할 것입니다. 하지만 구조체를 사용하면 여러개의 변수를 하나로 묶어서 관리할 수 있게 됩니다. 그룹화할 때 같은 자료형을 가진 변수들을 ..
함수의 주소 변수를 선언하면 메모리 공간이 할당되고 그 공간의 위치가 주소로 존재하듯이 함수를 선언해도 변수와 마찬가지로 메모리에 공간이 할당되며 그 위치를 표현하는 주소가 생겨납니다. C언어 코드는 컴파일이 되면 기계어로 변경되고 프로그램이 실행되면 코드 세그먼트라는 메모리 영역에 위치하게 됩니다. 즉, 함수의 형태는 변경되겠지만 결국 메모리에 저장되기 때문에 주소를 가지게 된다는 의미입니다. #include void print_hello() { printf("Hello, world!\n"); } int main() { // 메모리 상에 저장된 함수의 주소값 printf("함수의 주소값 : %p\n", print_hello); return 0; } 위의 코드의 실행 값과 같이 함수도 주소 값을 가진다는..
함수(Function)란? 함수는 특정 작업을 수행하는 코드의 집합이라고 정의할 수 있습니다. 반복적으로 수행되는 코드들을 함수로 만들어 사용하면 코드의 재활용성이 높아집니다. 기능들을 분류하여 다양한 각각의 함수로 만들어 사용할 수도 있고 함수 내부에서 또 다른 함수를 호출 할 수도 있는 등의 다양한 이유로 인해 함수를 사용하면 복잡한 기능도 비교적 쉽게 구현할 수 있으며, 구조화 프로그램에 있어 매우 중요한 개념입니다. 함수(Function)의 종류 함수의 종류에는 사용자 정의 함수와 라이브러리 함수가 있습니다. 먼저 사용자 정의 함수는 사용자가 구현하고 싶은 기능을 구현하는 것이며 라이브러리 함수는 우리가 흔히 써오던 printf(), scanf() 같은 함수인데 헤더파일안에 정의되어 있어 원하는 ..
포인터란(Pointer)? 포인터는 주소를 저장하는 변수입니다. 기존의 변수는 데이터를 저장하는데 반하여 포인터는 메모리 공간의 주소를 저장합니다. 포인터 변수가 주소를 저장하려면 변수의 주소를 알아야 하는데 변수 이름 앞에 & 연산자를 붙이면 해당 변수의 시작 주소를 반환합니다. 더 나아가서 포인터 변수가 저장하는 변수의 주소에 저장된 값을 참조하려면 * 연산자를 사용합니다. 포인터(Pointer) 변수의 선언 및 사용 포인터 변수도 변수이므로 사용하려면 먼저 선언을 해야합니다. 다음은 포인터 변수의 선언 형식을 나타내고 있습니다. 포인터 변수의 선언은 자료형 다음에 *연산자를 붙이고 포인터 변수의 이름을 쓰게 됩니다. #include int main() { int* p = NULL; int i = 1..
연산자 우선순위란? 연산자 우선순위란 수학 및 컴퓨터 프로그래밍에서 연산의 우선순위는 모호하게 해석가능한 수식에서 어느 연산을 먼저 계산할 것인가를 결정하는 규칙입니다. 예를 들어 수학의 사칙연산을 보면 2+3*2 라는 식이 있을때 *가 +보다 우선순위가 높기때문에 먼저 3*2 = 6이 되고 그다음에 2를 더해 최종 결과값이 8이됩니다. 이처럼 프로그래밍 언어에도 연산자에 대한 우선순위가 존재합니다. 이러한 우선순위를 모르고 개발을 하다보면 전혀 엉뚱한 결과가 도출되기도 하죠. 연산자 우선순위를 모르고 코딩을 하다보면 연산자 우선순위로 인하여 내가 원하는 동작이 하지 않고 엉뚱하게 동작하는 경우가 있습니다. 특히 포인터를 사용할때 많이 발생하는데요, char arr[6] = { "hello" }; cha..
실행화면 (계층형 댓글) 테이블 생성 CREATE TABLE `tb_reply` ( `idx` INT NOT NULL AUTO_INCREMENT, `board_idx` INT, `reply_idx` INT, `contents` TEXT NULL, PRIMARY KEY (`idx`)); 댓글 테이블 tb_reply를 추가해줍니다. idx(댓글 번호), board_idx(글 번호), reply_idx(상위 댓글번호), contents(댓글 내용)입니다. 가장 위에 있는 Root 댓글은 reply_idx가 0이고 하위 댓글들은 reply_idx로 상위댓글의 idx를 참조하도록 설계하였습니다. 소스코드 function 추가 (view.jsp) function drawReply(replys) { $("#cnt")..