본문 바로가기

전체 글74

얕은 복사와 깊은 복사 얕은 복사(Shallow copy) vs 깊은 복사 (Deep copy) 바로 아래 단계의 값만 복사 내부의 모든 값들을 하나하나 찾아서 전부 복사 참조형 데이터가 저장된 프로퍼티를 복사할 때, 그 주솟값만 복사 - 얕은 복사 해당 프로퍼티에 대한 원본과 사본이 모두 동일한 참조형 데이터의 주소를 가리키게 된다. 사본을 바꾸면 원본도 바뀌고, 원본을 바꾸면 사본도 바뀐다. 변수 복사 비교 에서 다뤘던 내용이다. 불변객체 (immutable object) 참조형 데이터의 '가변'은 데이터 자체가 아닌 내부 프로퍼티를 변경할 때만 성립한다. 데이터 자체를 변경하고자 하면(새로운 데이터를 할당하고자 하면) 기본형 데이터와 마찬가지로 기존 데이터는 변하지 않는다. 이럴 때 사용하는 것이, 내부 프로퍼티를 변경할.. 2020. 7. 29.
변수 복사 비교(기본형, 참조형) 일반적으로 '기본형도 결국 주솟값을 참조한다'는 사실을 알려주지 않는다. 이런 내부 원리를 잘 이해하는 것은 향후 중급 개발자로 성장하는 과정에서 더 큰 혼란을 느끼지 않기 위한 중요한 초석이 될 것이라고 믿는다. var a = 10; var b = a; var obj1 = { c: 10, d: 'ddd' }; var obj2 = obj1; 변수 영역 주소 1001 1002 1003 1004 데이터 이름:a 값 : @5001 이름:b 값: @5001 이름:obj1 값 : @5002 이름:obj2 값 : @5002 데이터 영역 주소 5001 5002 5003 5004 데이터 값: 10 값: @7103 ~ ? 'ddd' 객체 @5002의 변수 영역 주소 7103 7104 ---- 데이터 이름:c 값: @50.. 2020. 7. 29.
불변값 & 가변값 불변 값 변수(variable)와 상수(constant)를 구분하는 성질은 '변경 가능성'이다. 바꿀 수 있으면 변수, 바꿀 수 없으면 상수이다. 불변 값과 상수를 같은 개념으로 오해하기 쉬운데, 이 둘을 명확히 구분할 필요가 있다. 변수와 상수를 구분 짓는 변경 가능성의 대상은 '변수 영역' 메모리이다. 데이터 할당이 이뤄진 변수 공간에 다른 데이터를 재할당할 수 있는지 여부가 관건이다. 불변성 여부를 구분할 때의 변경 가능성의 대상은 '데이터 영역' 메모리이다. 기본형인 데이터인 숫자, 문자열, boolean, null, undefined, Symbol은 모두 불변 값이다. var a = 'abc'; a = a + 'def'; var b = 5; var c = 5; b = 7; 변수 a에 문자열 'a.. 2020. 7. 27.
메모리와 데이터 컴퓨터는 모든 데이터를 0 또는 1로 바꿔 기억한다. 0 또는 1만 표현할 수 있는 하나의 메모리 조각을 비트(bit)라고 하고, 메모리는 많은 비트들로 구성되어 있다. 각 비트는 고유한 식별자(unique identifier)를 통해 위치를 확인한다. 자주 사용하지 않을 데이터를 표현하기 위해 빈 공간을 남겨놓기보다는 표현 가능한 개수에 어느 정도 제약이 따르더라도 크게 문제가 되지 않을 적정한 공간을 묶는 편이 낫다. 이런 고민의 결과로 바이트(Byte)라는 단위가 생기게 되었다. 1바이트는 8개의 비트로 구성돼 있다. 1비트마다 0 또는 1의 두 가지 값을 표현할 수 있으므로 1바이트는 총 256(2^8) 개의 값을 표현할 수 있다. 2바이트는 비트 16개이므로 65536(2^16) 개의 값을 표현.. 2020. 7. 27.
ES6 에서의 추가된 Javscript 데이터 타입 및 기본 데이터 타입 데이터 타입 . 기본형, 참조형으로 나누어져 있다. ES6으로 들어오면서 추가된 데이터형은 파란색 글씨인 Symbol , Map, WeakMap, Set, WeakSet 이다. 참조형과 기본형은 어떻게 구분하는 것일까? 기본형은 할당이나 연산시 복제가 되고, 참조형은 참조된다고 알려져 있다. 엄밀히 말하면 둘다 복제하지만, 기본형은 값이 담긴 주솟값은 바로 복제하는 반면 참조형은 값이 담긴 주솟값들로 이루어진 묶음을 가리키는 주소값을 복제한다는 점이 다른점이다. 기본형은 불변성(immutablility)를 띈다. 기본형인 숫자 10을 담은 변수 a에 다시 숫자 15를 담으면 a의 값은 15로 바뀌는데, '변하지 않는다' 라는게 어떤 뜻일까? 불변성을 이해하려면, 메모리, 데이터에 대한 지식이 필요하고, .. 2020. 7. 27.
Core JavaScript 코어 자바스크립트라는 책이다. 자바스크립트를 이전에도 한번 공부한적이 있었는데, 백엔드 부분을 공부하기전 먼저 자바스크립트의 원리 이해를 한번 더 공부하고 싶어서 샀다. 2020. 7. 27.
LikeLion Second Session - wordcount, bootstarp - 3 2장에서 우리는 , 127.0.0.1:8000/about 이런식으로 우리의 about.html 을 확인할 수 있었다. 이제, 우리가 만든 navbar 의 about 메뉴를 누르면, about.html 로 이동하도록 만들자. "{%url 'about'%}" 의 의미는 , 우리가 urls.py 만든 path의 이름을 about, home 이라고 지정해줬었다. 그 path로 이동 하라는 의미이다. 저걸 누르면 왜 about.html 로 넘어가는지 모르겠다면, html을 공부하고 오자. 서버를 켜서, 메뉴바를 눌러보며 이동하는지 확인하자. 그리고 우리는 입력한 단어를 세주는 페이지를 하나 더 만들것이다. count.html로 파일을 만들고 views.py 에서 함수를 만들고 urls.py로 연결해주자. urls.. 2020. 7. 21.
LikeLion Second Session - wordcount, bootstrap - 2 Bootstrap 세계에서 가장 인기있는 프론트 라이브러리, CSS와 자바스크립트 파일들로 이루어져있다. 웹 규격을 위한 프레임워크. 웹개발을 더 편하고, 빠르게 진행할 수 있도록 도와준다. 안정적이고, 반응형 웹 지원, 편리한 장점 부트스트랩은 설치를 하는 개념이 아닌, css와 자바스크립트를 통해 – 소스를 끌어와 사용하는 것 CDN 기반으로 부트스트랩을 어떻게 사용할 수 있는지만 알면 충분하다. HTML 헤드 태그 안에 부트스트랩 CSS만 추가해주면 된다. 이후에 추가적으로 부트스트랩 자바스크립트를 전체 바디 태그가 닫히기 전, 스크립트 태그 내에 감싸 넣어준다. 부트스트랩 4의 경우 jquery와 popper.js를 필요로 하므로 이 부분도 잊지않고 세팅해준다. https://getbootstra.. 2020. 7. 21.
LikeLion Second Session - wordcount, boostrap - 1 Django WordCount , bootstrap 사용법 1. 바탕화면에 새로운 폴더 생성 ex) wordcount 라는 폴더 이름 2. Code 에서 word 폴더 열기. 3. 가상환경 생성 python -m venv myvenv 4. 가상환경 실행 source myvenv(가상환경이름)/Scripts/activate ! 꿀팁 myvenv/S 입력후 Tab / a 입력 후 Tab ㅇ Tab --> 자동 완성 기능 5. DJango 설치 . pip install django 새로운 프로젝트를 할때 마다 --> 가상환경 생성 --> 그 가상환경안에 django 설치 가상환경이 왜쓰는지 궁금하다면 개인공부 -> DJango 참고하자 WARNING 이유 pip 의 버전이 업그레이드를 안한 것. 하고 진행하자.. 2020. 7. 21.