Today I Learned
-
함수형 프로그래밍 입문Today I Learned 2021. 3. 22. 20:41
순수함수를 만들고, 순수함수를 조합하는 프로그래밍 패턴이 곧 함수형 프로그래밍. 함수형 프로그래밍이 지향하는 성공적인 프로그래밍은 부수 효과를 미워하고 조합성을 강조하는 것! 순수함수 - 동일한 인자를 주면 항상 동일한 결과를 리턴한다 (개발자가 평가시점을 다룰 수 있으므로 조합성을 높일 수 있다) - 부수효과가 없다 (부수효과: 함수가 리턴값으로 결과를 만드는 것 외에 외부의 상태에 영향을 미치는 것) => 오류를 줄이고 안정성을 높일 수 있다 => 모듈화 수준이 높다. 즉, 생산성을 높일 수 있다 let c = 10; function nonPureFunction(a, b) { c = a; return a + b; } 함수 nonPureFunction는 동일한 인자를 줬을 때 항상 동일한 결과를 리턴하..
-
프로세스(Process)와 쓰레드(Thread)Today I Learned 2021. 3. 10. 20:56
프로그램 컴퓨터에서 실행될 때 특정 작업을 수행하는 일련의 명령어들의 모음 어떤 작업을 위해 실행할 수 있는 파일 프로세스 컴퓨터에서 연속적으로 실행되고 있는 프로그램(음악 재생 프로그램, 문서 작성 프로그램 등) 프로그램을 구동하여 프로그램의 상태가 메모리 상에서 실행되는 작업 단위를 지칭 운영체제로부터 시스템의 자원을 할당받는 작업의 단위 운영체제 위에서 독립적으로 실행되고 있는 프로그램 Code, Data, Stack, Heap 으로 구성된다 프로세스의 구성 Code: 프로그램을 실행하기 위해 작성된 코드 Stack: 프로세스 안에서 함수들의 실행 순서에 대한 정보를 저장 Heap: 동적으로 할당된 변수들을 저장 Data: 전역 변수, 스태틱 변수들을 저장 쓰레드 프로세스에서 실행되는 여러 흐름의 ..
-
WEB APIsToday I Learned 2021. 2. 18. 21:11
API (Application Programming Interface) API는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다.(위키백과) 휴대폰의 내부 구조나 작동 원리를 전혀 모르더라도 전원 버튼을 누르면 전원이 켜지고, 앱 아이콘을 누르면 앱이 실행된다는 것을 안다. 자판기의 작동원리를 몰라도 동전을 누르고 버튼을 누르면 원하는 음료를 뽑아 먹을 수 있다. 마찬가지로 윈도우에서 사용할 수 있는 앱을 만들고 싶다면 Windows에서 제공하는 API를 통해 만들 수 있고, 안드로이드나 맥 OS에서 제공하는 API를 이용하면 모바일 앱을 만들..
-
ReduxToday I Learned 2020. 10. 28. 17:39
생활코딩의 Redux 강의를 보며 공부한 내용을 정리한 글입니다. Redux : 자바스크립트로 만든 애플리케이션을 위한 예측 가능한 상태의 저장소 Redux(리덕스)의 핵심은 store다. store는 정보가 저장되는 곳으로, 애플리케이션에서 글 목록의 정보, 현재 선택한 글에 대한 정보와 같은 것들이 저장된다. store 안에는 state라고 하는 실제 정보가 저장된다. 사용자는 직접적으로 state를 제어할 수 없고, 반드시 state를 제어할 수 있는 함수를 이용해야 한다. 그래서 store에는 state와 관련된 일을 하기 위한 dispatch, subscribe, getState라고 하는 세 가지 중요한 함수가 있다. 먼저, store를 생성할 때는 Redux에서 제공하는 createStore라..
-
브라우저의 렌더링 과정Today I Learned 2020. 10. 21. 10:11
1. DOM, CSSOM 생성 - 서버로부터 HTML, CSS를 다운로드 받는다 - HTML 태그를 파싱해 DOM tree를 구성한다 - CSS 파일을 CSSOM으로 변환한다 2. Render tree 생성 - DOM과 CSSOM을 가지고 실제 화면에 표현되는 노드들로만 구성된 Render tree를 만든다 - 스크립트 태그, 메타 태그와 같은 것들은 화면에 표현되는 것이 아니므로 생략된다 - display:none과 같이 CSS를 통해 숨겨진 노드들은 렌더링 트리에 들어가지 않는다 3. Layout Render Tree를 생성하는 것이 화면에 표시할 노드와 해당 노드의 스타일을 계산하는 과정이었다면, 다음으로는 각 노드들이 화면에서 어느 위치에, 어떤 크기로 출력될지 계산하는 레이아웃 과정을 거치게 된..
-
리액트에서 여러 input 태그 다루기Today I Learned 2020. 10. 14. 12:47
김민준 님의 '리액트를 다루는 기술'을 참고하여 작성한 글입니다. 배열 비구조화 할당 const user = ['sola', 'jin']; // user 배열 안에 있는 값을 userOne과 userTwo에 담는 일반적인 방법 const userOne = user[0]; const userTwo = user[1]; // 배열 비구조화 할당을 사용한 방법 const [userOne, userTwo] = user; 리액트의 useState에서의 비구조화 할당 const [word, setWord] = useState(''); useState 함수의 인자에는 상태의 초기값이 들어간다. 타입은 어느 것이든 상관없다. 함수를 호출하면 배열이 반환된다. 배열의 첫 번째 원소는 현재 상태, 두 번째 원소는 상태를 바..
-
html문서에서 script태그의 위치와 속성Today I Learned 2020. 10. 6. 15:58
1. html 문서 중 head 안에 script 태그를 그냥 포함하게 되면 일어나는 일 : 사용자가 html 파일을 다운 받으면 브라우저는 html 파일을 한 줄 한 줄 분석한다. (html을 파싱 한다고 함) 그렇게 한 줄씩 파싱하다가 js파일이 연결된 script태그를 만나면 파싱을 잠시 멈추고 필요한 js파일을 서버에서 다운 받고, 실행한 다음에 다시 파싱을 이어간다. -> 인터넷이 느리거나 js파일의 용량이 크면 사용자가 html파일을 보기까지 시간이 오래 걸린다. 2. body태그 안, 끝 부분에 script 태그를 넣으면 일어나는 일 : 브라우저가 html을 파싱 해서 화면에 보여질 페이지가 준비된 뒤에 script 태그를 만나기 때문에, js 파일을 다운받기 전에 사용자가 html페이지를 ..
-
객체 지향 프로그래밍?Today I Learned 2020. 10. 4. 23:28
1. 객체 : 속성과 행동으로 이루어진 모든 것 - 자동차 : 브랜드, 색깔, 가격 등의 속성, 시동이 걸리는 것, 전/후진하는 것 등의 행동을 가진 객체라 할 수 있음 - SNS 유저 객체 : 이메일 주소, 비밀번호, 친구 목록 등의 속성, 좋아요 누르기, 친구 추가하기 등의 행동을 가진 객체라 할 수 있음 2. 객체 지향 프로그래밍 : 프로그램을 여러 개의 독립된 객체들과 그 객체들 간의 상호작용으로 파악하는 프로그래밍 접근법 - 프로그램을 객체들과 객체들 간의 소통으로 바라보는 것 3. 객체 지향 프로그래밍의 4가지 특징 캡슐화(encapsulation) : 변수와 함수를 하나의 함수로 묶는 것을 말한다. 사용자에게는 사용법만 알려주고 내부가 어떻게 되있는지는 숨길 수 있다. 이런 컨셉을 정보의 은..