본문 바로가기

분류 전체보기

(17)
TBCPP 정리 ( 마크다운 문서로 모두 변환 예정) SECTION 1. 시작해봅시다 폴더구조 & 실행 하나의 솔루션 안에 여러 개의 프로젝트를 생성할 수 있고, 각 프로젝트의 Source Files 폴더 오른쪽 클릭 후 Add > New Item 을 해서 새로운 소스 파일을 만들어 작성한다. 프로젝트 생성시 precompiled 를 체크하면 멀티 플랫폼을 지원 못하게 되므로 주의하자. 여러 개의 프로젝트가 있을 때, 실행될 프로젝트를 고르려면 오른쪽 클릭을 해서 set as startup project 를 클릭해준다. VS 단축키, 사용팁 Ctrl + 마우스 휠 을 통해 작업창 글씨 크기를 크게나 작게 할 수 있다. Ctrl + F5 로 Start without debugging 한다. 빌드할 거냐고 물어보니까 따로 빌드부터 할 필요X VS 에서 주석 처..
Functional Programming 기초 with Javascript ES6 FUCNTIONAL PROGRAMMING BASICS IN ES6 참고영상:"Functional Programming Basics in ES6" 자바스크립트의 가장 큰 특징 중 하나는 First class functions 이다. 쉽게 말하면, 모든 함수는 다른 일반적인 객체처럼 first class citizen 이고, 따라서 함수도 변수에 저장되거나, 인자로 전달되거나, return 될 수 있다. 이 유연한 특징 덕분에 OOP 뿐 아니라 Functional Programming 방식으로 자바스크립트를 사용할 수 있다. (어떻게 생각하면 반OOP 세력이라고 볼 수 있다. 클래스 사용보다 explicit 하게 함수들을 공개하는 스타일을 더 좋아한다.) 참고글:"An Introduction to First..
Javascript ES6 노트 CHAPTER1. Syntax Changes & Additions Let vs Var Block Scope 의 개념없이 모든 게 전역변수로 만들어졌던 Var 과 달리, Let 은 Block Scope 가 적용된다. 즉, 변수가 정의된 스코프를 벗어난 곳에서 Let 변수를 호출하려하면 에러가 발생한다. Hoisting : 모든 변수 선언이 파일 맨 앞쪽에서 선언된 것처럼 끌어올리는 자바스크립트 특유의 작동방식. var age = 13 와 같은 변수 선언이 해당 변수의 호출보다 아래에 있어도 age === undefined 상태로 존재한다. const 한 번 정의된 변수가 가리키는 메모리 주소가 바뀌는 일이 없도록 막는다. 값 이 아닌 메모리 주소 라고 굳이 말한 이유는, const 를 쓴다고 해서 Arra..
2019년을 떠나보내며. 나는 개발자가 될 거야! 2019년은 "나는 개발자가 될거야!" 라는 확답을 듣기 위해 스스로에게 끝없이 질문하며 삽질하던 해로 요약할 수 있겠다. 간단한 결론이지만, 나름 마음 고생을 했다. 배움의 즐거움과 무한경쟁의 사회 사이에는 무시무시한 거리감이 있다는 것을 나는 너무 늦게 깨달았고, 덕분에 나는 전공인 경영학 경험도, 비전공인 프로그래밍 경험도 애매한 취준생이 되어 길을 잃었다. 2년간 나름대로 열심히, 또 즐겁게 데이터 분석과 웹에 대한 지식과 경험을 쌓았지만, 막상 취직할 때가 되니 내가 즐겁게 공부한다는 이유로 월급을 주는 회사 같은 건 없었다. 그렇다고 작은 스타트업에 들어가서 바닥부터 경험을 쌓자니 1. 이전에 스타트업에서 웹 개발자로 일해 본 경험상 좀 더 규모있는 회사에서 사회 경험을 쌓고 싶었고, 2. 무..
따배씨(따라 배우는 C언어_홍정모) Chapter14 CHAPTER 14 구조체 "저는 걷는 게 느린 사람입니다. 그러나 절대로 되돌아가지는 않습니다." _에이브러햄 링컨 14.1 구조체가 필요한 이유 자료형이 서로 다르지만 함께 사용하면 편리한 데이터 오브젝트끼리 모으는 것이 목적. 마치 새로운 변수형인 것처럼 사용하는 게 가능하다. (structure variables) dot(.) 연산자를 이용해 structure variable 의 멤버에 접근할 수 있다. struct patient { char name[MAX_NAME]; float height; float weight; int age; }; struct Patient p1, p2, p3; 14.2 구조체의 기본적인 사용법 구조체를 정의할 때 그 이름은 식별자라고 하기 보다 꼬리표(tag) 라고 한..
따배씨(따라 배우는 C언어_홍정모) Chapter12 CHAPTER 12 Storage Classes, Linkage and Memory Management "I can do this all day!" _Captain America "모든 것이 완벽하다면, 배울 수도 없고 성장할 수도 없다." _비욘세 지젤 놀스 12.3 변수의 영역과 연결 상태, 객체의 지속시간 전역변수는 file scope variable, 즉 파일 영역 변수라고도 하는데, 전역변수라고 주로 부르는 이유는 기본적으로 main() 함수 밖에 있는 변수나 함수는 다른 파일에서도 쓸 수 있기 때문이다. 즉, 내가 어떤 파일의 file scope(main() 밖)에 정의한 변수나 함수는 다른 파일에서 앞에 extern 이란 키워드를 붙여 다른 파일에서 가져다 쓸 것임을 표시할 수 있다. 이 때..
따배씨(따라 배우는 C언어_홍정모) Chapter11 CHAPTER 11 "언덕을 넘어가는 순간, 속력을 얻기 시작할 것이다." _찰스 슐츠 11.1 문자열을 정의하는 방법들 문자열도 배열이다. puts("문자열입니다.") 라는 puts 문자열 출력함수는 \0 까지 자동으로 출력해주며, 마지막에 \n 도 알아서 추가해주는 편리한 출력함수다. putchar('a') 라는 한 글자 출력함수도 있다. 배열은 읽기/쓰기가 모두 가능한 메모리를 사용해 원소의 수정이 자유롭지만, 문자열은 읽기 전용 메모리를 사용하기 때문에 const 의 여부와 관계없이 원소를 수정할 수 없다. 미리 정의해놓은 넉넉한 배열의 길이보다 짧은 문자열을 초기화하면, warning 이 뜨기도 한다. 크게 신경쓰지 말자. char greetings[50] = "Hello" "How are" "..
따배씨(따라 배우는 C언어_홍정모) Chapter10 CHAPTER 10 "행복으로 가는 한 쪽 문이 닫히면 다른 쪽 문이 열린다. 그러나 우리는 때때로 닫힌 문만 쳐다보느라 열린 쪽은 오랫동안 못보기도 한다." _Helen Keller 10.1 배열과 메모리 배열의 시작 인덱스가 0인 이유는, 인덱스라는 게 이 배열을 위한 메모리의 시작점과의 거리를 뜻하기 때문이다. 시작점과 시작점 사이의 거리는 0이겠지. 10.3 포인터의 산술 연산 (Pointer Arithmetic) 포인터에 어떤 상수 숫자(literal)를 더한다는 건, 그 숫자 * 포인터의 자료형 크기 를 더하는 것과 같다. 배열과 포인터를 같이 쓸 때 많이 쓰이는 특성이다. 양/음수 단항연산자와 포인터끼리의 덧셈은 허용되지 않는다. 그런데 포인터끼리의 뺄셈은 허용된다! 포인터끼리 뺄셈을 하면,..