목록한빛미디어 (35)
Scientia Conditorium
[기본 미션] - 포인터의 핵심 내용을 정리하고 공유하기 포인터(Pointer) : 주소를 저장하기 위한 변수형 → 변수인데 속에 담긴 내용은 메모리 주소 즉, 메모리 주소를 저장하는 변수 포인터는 어떤 변수에 저장된 값에 직접적으로 접근하는 것이 아니라 주소를 이용해서 간적접으로 접근하는 방식이다. 포인터의 핵심이라고 하면 메모리 주소와 변수이다. 포인터의 용도 설명 1. 큰 데이터를 매개변수로 사용할 때 const 배열에 오소가 10만개 있다고 하면, 매개변수 복사하느라 메모리와 시간 낭비. 포인터로 첫 번째 요소의 주소만 전달하면 모든게 해결 2. 반환 값이 둘 이상일 때 min, max 코드 참조 포인터로 함수 안에서 원본을 직접 변경하는 반환이랑 마찬가지 3. 동적 메모리 할당 함수의 범위에 상..
비전 시스템을 위한 딥러닝(Deep Learning for Vision Systems) 신경망을 활용한 엔드투엔드 컴퓨터 비전 애플리케이션 구축하기 딥러닝은 컴퓨터 비전 분야에서 엄청난 활약을 하고 있으며 대단한 성능, 결과를 내놓고 있다. 지금껏 여러 딥러닝 책을 봐왔지만 너무 쉽거나 너무 어렵거나 둘 중 하나였다. 보통은 가장 인기 많은 GAN을 집중적으로 다루는 책이 많았다. 그러나 이 책은 비전 시스템을 공부하고자 하는 학생들을 위한 교과서라고 볼 수 있다. 이 책은 컴퓨터 비전을 위한 딥러닝을 직관적으로 가르치는 책이다. 그러나 적어도 머신러닝의 기본적인 개념과 파이썬을 할 줄 아는 사람을 대상으로 한다. 초반부에는 머신러닝의 기초를 가볍게 다루고, 이후 본격적으로 수학 개념을 설명하면서 고급 ..
[기본 미션] - 직접 정리한 키워드 공유하기 [배열(array)] 동일한 자료형을 여럿 담을 수 있는 자료 구조 배열 안에 있는 각 데이터를 요소(element)라고 부름 몇 개의 데이터를 담을지 결정한 뒤에는 그 수를 바꿀 수 없음(단, 내용 변경은 가능) [배열의 색인] 대부분의 프로그래밍 언어에서 배열의 색인은 0부터 시작 -> 첫 번째 = 0, 두 번째 = 1 그 이유는 메모리 때문. 첫 번째 요소(시작)로부터 오프셋(offset) 얼마만큼 떨어져 있는지를 판단 C#과 달리 new를 반드시 사용할 필요가 없음 배열에 접근하는 법은 C#과 동일 모든 기본 자료형 변수(char, int, float)를 new 없이 사용할 수 있었던 이유는 바로 스택 메모리에 할당됐기 때문 기본 자료형을 함수 매개변..
[기본 미션] - 함수의 유형을 정리하여 공유하기 반환형 함수명(매개변수1, 매개변수2, ...) { // 함수 실행 코드 // 반환형에 따른 반환값 } 기본적인 함수의 형태는 위와 같다. 반드시 적어줘야 하는 것은 반환형과 함수명이다. C언어에서 함수는 기본적으로 모두 전역(global) 함수이다. 따라서 어디에서든 접근/호출이 가능하다. 물론 이걸 제한할 수 있는 키워드가 있긴 하다. C언어에서 사람들이 실수하는 부분 중 하나는 함수 오버로딩이 없다는 것이다. 보통 C/C++을 같이 사용하기 때문에 신경을 쓰지 않는다. void print(int score) { printf("Score : %d\n", score); } void print(float gpa) /* 컴파일 오류 */ { printf("..
[기본 미션] - 혼공 용어 노트에 용어 추가 등 노트 활용하고 공유하기 이번 주 미션은 혼공 노트를 활용하는 것이지만, 내 경우에는 반대로 사용하고 있다. 기존에 사용하고 있었던 용어 정리 노트에다가 혼공 노트에 적힌 것을 옮겨적었다. 처음에는 이동 시간에 틈틈이 보려고 했으나 양이 늘어나면서 블로그 등에 올리는게 더 효율적인 것 같다. [선택 미션] - p.123 크리스마스 소개팅 예문 if 문 손코딩 인증샷 또는 실행 화면 캡쳐하기 크리스마스 때 까지 솔로면.... 너무하네 혼공...어휴 그 문구를 손코딩으로 하기 싫어서 그냥 실행화면을 올려버렸다. 프로그래밍의 가장 기본은 조건문과 반복문이다. 사실상 이 2개면 모든걸 다 할 수 있다고 봐도 될 정도라고 생각한다. 이번주차 미션은 가볍게 쉬어가는 ..
[기본 미션] - 챕터 3,4 확인 문제 풀고, 풀이 과정 설명하기 3-1-1. long은 실수형이 아니라 정수형임을 생각해야한다. 문제에서 실수형은 float과 double 뿐이다. 3-1-2. 프로그램이 진행됨에 따라 변수 a의 값이 계속 바뀌고 있다는 점을 생각해야한다. total 총점 변수를 선언할 때, 바로 a + b + c 의 값을 더한 후 선언해도 되지만, 문제 주석에서 선언과 저장을 별도로 분리시켜놨기 때문에 역시 코딩에서도 분리시켜두었다. 3-2-1. ch는 char형 변수이므로 %c 변환 문자를 사용해야 한다. sh는 short형 변수이므로 %hd 변환 문자를 사용해야 한다. double형 변수에 입력할 때는 %lf 변환 문자를 사용해야 한다. 3-2-2. char 배열에 문자열을 입력..
최근 일을 하면서 기초의 중요성을 다시 깨닫고 처음부터 다시 공부하기로 결정하였다. 이런 와중에 혼공단 7기 모집 글을 보고 C언어 부문을 바로 신청하였다. 사실 대부분의 내용은 아는 상태이지만 기초를 복습하는 것에 의의를 두고 있다. [기본 미션] - 비주얼 스튜디오 설치 화면 인증샷 교재에서는 VS2019 버전으로 진행되었지만, 나는 가장 최신 버전인 VS2022 버전으로 진행하였다. 기초적인 내용만 다루고 있기 때문에 버전에 영향은 없기 때문이다. 여기에 OpenGL + GLFW 기본 셋팅을 코딩하여 제대로 동작하는지 확인해보았다. 역시나 OpenGL도 제대로 컴파일 되며 삼각형 화면이 나오는 것을 확인할 수 있었다. 교재 19페이지를 보면 VS 프로젝트 전처리기 정의 칸에 '_CRT_SECURE_..
최근들어 한빛미디어에 자주 느끼는 점은 책 제목을 굉장히 잘 짓는 느낌이다. 이 책이 단순히 '수학적 최적화'라고 했으면 실망할 뻔했지만, 앞에 '제대로 배우는'을 달았기에 이 책이 수준이 높다는 느낌을 주고 있다. 결론은 프로그래밍보다는 수학책에 가까우니 수학적 지식이 어느정도 있는 상태에서 읽기를 권장한다. 단 한줄의 프로그래밍은 들어가있지 않다. 프로그래밍 공부를 하다보면 알고리즘 문제를 푸는 경우가 많은데, 대표적으로 외판원 문제, 탐색 알고리즘 등등 수학적 지식을 이용해야 할 때가 있다. 가령 반복문 한번 쓰고 해결하는 방법이라던가, 그런 것을 기대하고 이 책을 접했다. 그러나 내용 자체는 비슷하지만 설명 방법은 전혀 달랐다. 위의 이미지처럼 어느정도 수학 지식이 있는 사람들만 읽을 수 있을 정..
사실 디자인패턴은 공부할 필요가 없는 영역이긴 하다. 알아두면 좋다 이정도?!. 이유는 간단하다. 프로그래밍을 하다보면 문제해결에 꼭 필요한 구조를 짜야할 때가 있는데, 완성시켜보면 어느 패턴 중 하나라는 걸 알게된다. 즉, 나도 모르게 자연스럽게 디자인패턴 중 일부를 사용하고 있다는 것이다. 이 때쯤 되면, '아, 이게 그런 패턴이라고 하는구나' 라고 깨닫는다. 가벼운 예시로, '음식점에서도 선입선출(先入先出)이 있듯이 먼저 들어온 데이터가 먼저 처리되게끔 코딩해야겠군. 엥? 이걸 큐(queue)라고 부른다고?! 당연한거에 굳이 이름을...' 이런 느낌이랄까... 그렇다면 이 책은 필요없는 책인가?! 그렇지 않다. 책에서 말하는 24가지 패턴 중 일부만이라도 알고 있다면 코딩할 때의 시간 단축이 많이 ..
리눅스 환경에서 작업해야 하는 개발자들, 특히 여지껏 윈도우에서만 개발하다고 리눅스가 익숙하지 않은 사람들(나...)에게 적극 추천하는 책이다. 실제로 나는 이 책을 업무에 매우 잘 활용하고 있다. 명령어가 익숙해질 때까지 계속해서 옆에두고 사용할 계획이다. 윈도우에서는 개발할 때에는 GUI 기반으로 마우스가 익숙해졌기 때문에, 터미널에서 명령어를 친다는 것 자체가 불편하다. 가장 먼저 익히는 명령어가 'sudo apt-get update', 'sudo apt-get full-upgrade' 등등, 대부분의 실행을 터미널을 통해 이루어진다. 사실 어떤 사람들은 내가 원하는 기능들만 명령어를 통해 설치할 수 있기 때문에 편리하다고 하지만, 내가 왜 이런 자잘자잘한 설치까지 관여해야 하는지 이해되지는 않는다..